package com.hearthsim.card.basic.spell;
import com.hearthsim.card.minion.Minion;
import com.hearthsim.card.spellcard.SpellDamage;
import com.hearthsim.event.effect.EffectCharacter;
import com.hearthsim.event.effect.EffectOnResolveAoe;
import com.hearthsim.event.filter.FilterCharacter;
import com.hearthsim.exception.HSException;
import com.hearthsim.model.PlayerModel;
import com.hearthsim.model.PlayerSide;
import com.hearthsim.util.tree.HearthTreeNode;
public class HolyNova extends SpellDamage implements EffectOnResolveAoe {
/**
* Constructor
*
* @param hasBeenUsed Whether the card has already been used or not
*/
@Deprecated
public HolyNova(boolean hasBeenUsed) {
this();
this.hasBeenUsed = hasBeenUsed;
}
/**
* Constructor
* Defaults to hasBeenUsed = false
*/
public HolyNova() {
super();
}
@Override
public EffectCharacter getAoeEffect() {
return this.getSpellDamageEffect();
}
@Override
public FilterCharacter getAoeFilter() {
return FilterCharacter.ALL_ENEMIES;
}
/**
* Use the card on the given target
* Deal 2 damage to all enemy characters and heal all friendly characters by 2
*
* @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);
if (toRet != null) {
PlayerModel currentPlayer = toRet.data_.modelForSide(PlayerSide.CURRENT_PLAYER);
toRet = currentPlayer.getHero().takeHealAndNotify((byte) 2, PlayerSide.CURRENT_PLAYER, toRet);
for (Minion minion : currentPlayer.getMinions()) {
toRet = minion.takeHealAndNotify((byte) 2, PlayerSide.CURRENT_PLAYER, toRet);
}
}
return toRet;
}
}