package com.hearthsim.card.classic.spell.common; import com.hearthsim.card.classic.minion.common.Hound; 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.PlayerModel; import com.hearthsim.model.PlayerSide; public class UnleashTheHounds extends SpellTargetableCard { @Deprecated public UnleashTheHounds(boolean hasBeenUsed) { this(); this.hasBeenUsed = hasBeenUsed; } public UnleashTheHounds() { super(); } @Override public FilterCharacter getTargetableFilter() { return FilterCharacterTargetedSpell.SELF; } @Override public EffectCharacter getTargetableEffect() { if (this.effect == null) { this.effect = (targetSide, targetCharacterIndex, boardState) -> { PlayerModel currentPlayer = boardState.data_.modelForSide(PlayerSide.CURRENT_PLAYER); PlayerModel waitingPlayer = boardState.data_.modelForSide(PlayerSide.WAITING_PLAYER); int numHoundsToSummon = waitingPlayer.getNumMinions(); if (numHoundsToSummon + currentPlayer.getNumMinions() > 7) numHoundsToSummon = 7 - currentPlayer.getNumMinions(); for (int indx = 0; indx < numHoundsToSummon; ++indx) { boardState = new Hound().summonMinionAtEnd(PlayerSide.CURRENT_PLAYER, boardState, false); } return boardState; }; } return this.effect; } }