package com.hearthsim.card.basic.spell; import com.hearthsim.card.Card; import com.hearthsim.card.minion.Hero; import com.hearthsim.card.minion.Minion; import com.hearthsim.card.spellcard.SpellTargetableCard; import com.hearthsim.event.effect.EffectCharacter; import com.hearthsim.event.effect.EffectHeroWeaponBuffDelta; import com.hearthsim.event.filter.FilterCharacter; import com.hearthsim.event.filter.FilterCharacterTargetedSpell; import com.hearthsim.model.BoardModel; import com.hearthsim.model.PlayerSide; public class DeadlyPoison extends SpellTargetableCard { private final static EffectCharacter effect = new EffectHeroWeaponBuffDelta<>(2); private final static FilterCharacter filter = new FilterCharacterTargetedSpell() { @Override protected boolean includeOwnHero() { return true; } @Override public boolean targetMatches(PlayerSide originSide, Card origin, PlayerSide targetSide, Minion targetCharacter, BoardModel board) { if (!super.targetMatches(originSide, origin, targetSide, targetCharacter, board)) { return false; } if (((Hero)targetCharacter).getWeapon() == null) { return false; } return true; } }; /** * Constructor * * @param hasBeenUsed Whether the card has already been used or not */ @Deprecated public DeadlyPoison(boolean hasBeenUsed) { this(); this.hasBeenUsed = hasBeenUsed; } /** * Constructor * * Defaults to hasBeenUsed = false */ public DeadlyPoison() { super(); } @Override public FilterCharacter getTargetableFilter() { return DeadlyPoison.filter; } /** * * Give your weapon +2 attack * * * * @param side * @param boardState The BoardState before this card has performed its action. It will be manipulated and returned. * * @return The boardState is manipulated and returned */ @Override public EffectCharacter getTargetableEffect() { return DeadlyPoison.effect; } }