package com.hearthsim.card.basic.spell; import com.hearthsim.card.spellcard.SpellTargetableCard; import com.hearthsim.event.effect.EffectCharacter; import com.hearthsim.event.filter.FilterCharacter; import com.hearthsim.event.filter.FilterCharacterTargetedSpell; import com.hearthsim.util.tree.CardDrawNode; public class ShieldBlock extends SpellTargetableCard { /** * Constructor * * Defaults to hasBeenUsed = false */ public ShieldBlock() { super(); } @Override public FilterCharacter getTargetableFilter() { return FilterCharacterTargetedSpell.SELF; } /** * * Use the card on the given target * * Gives all friendly characters +2 attack for this turn * @return The boardState is manipulated and returned */ @Override public EffectCharacter getTargetableEffect() { if (this.effect == null) { this.effect = (targetSide, targetCharacterIndex, boardState) -> { boardState.data_.getCurrentPlayer().getHero().setArmor((byte)(boardState.data_.getCurrentPlayer().getHero().getArmor() + 5)); if (boardState instanceof CardDrawNode) { ((CardDrawNode) boardState).addNumCardsToDraw(1); } else { boardState = new CardDrawNode(boardState, 1); //draw two cards } return boardState; }; } return this.effect; } }