package com.hearthsim.card.basic.spell; import com.hearthsim.card.minion.Minion; import com.hearthsim.card.spellcard.SpellDamageTargetableCard; import com.hearthsim.event.filter.FilterCharacter; import com.hearthsim.event.filter.FilterCharacterTargetedSpell; import com.hearthsim.exception.HSException; import com.hearthsim.model.PlayerModel; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.HearthTreeNode; public class Swipe extends SpellDamageTargetableCard { private static final byte DAMAGE_AMOUNT = 4; /** * Constructor * * @param hasBeenUsed Whether the card has already been used or not */ @Deprecated public Swipe(boolean hasBeenUsed) { this(); this.hasBeenUsed = hasBeenUsed; } /** * Constructor * Defaults to hasBeenUsed = false */ public Swipe() { super(); this.damage_ = Swipe.DAMAGE_AMOUNT; } @Override public FilterCharacter getTargetableFilter() { return FilterCharacterTargetedSpell.ALL_ENEMIES; } /** * Use the card on the given target * Deals 4 damage to an enemy and 1 damage to all other enemies * * @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 protected HearthTreeNode use_core(PlayerSide side, Minion targetMinion, HearthTreeNode boardState) throws HSException { HearthTreeNode toRet = super.use_core(side, targetMinion, boardState); PlayerModel waitingPlayer = toRet.data_.modelForSide(PlayerSide.WAITING_PLAYER); if (!targetMinion.isHero()) { toRet = waitingPlayer.getHero().takeDamageAndNotify((byte) 1, PlayerSide.CURRENT_PLAYER, side, boardState, true, false); } for (Minion minion : waitingPlayer.getMinions()) { if (minion != targetMinion) { toRet = minion.takeDamageAndNotify((byte) 1, PlayerSide.CURRENT_PLAYER, side, toRet, true, false); } } return toRet; } }