package com.hearthsim.card.basic.spell; import com.hearthsim.card.minion.Minion; import com.hearthsim.card.minion.Minion.MinionTribe; 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.model.PlayerSide; public class SacrificialPact extends SpellTargetableCard { private final static FilterCharacter filter = new FilterCharacterTargetedSpell() { @Override protected boolean includeEnemyHero() { return true; } @Override protected boolean includeEnemyMinions() { return true; } @Override protected boolean includeOwnMinions() { return true; } @Override protected MinionTribe tribeFilter() { return MinionTribe.DEMON; } }; /** * Constructor * * Defaults to hasBeenUsed = false */ public SacrificialPact() { super(); } @Override public FilterCharacter getTargetableFilter() { return SacrificialPact.filter; } /** * * Use the card on the given target * * @return The boardState is manipulated and returned */ @Override public EffectCharacter getTargetableEffect() { if (this.effect == null) { this.effect = (targetSide, targetCharacterIndex, boardState) -> { Minion targetCharacter = boardState.data_.getCharacter(targetSide, targetCharacterIndex); boardState = boardState.data_.modelForSide(PlayerSide.CURRENT_PLAYER).getHero().takeHealAndNotify((byte) 5, PlayerSide.CURRENT_PLAYER, boardState); targetCharacter.setHealth((byte) -99); return boardState; }; } return this.effect; } }