package com.hearthsim.card.classic.spell.common;
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 Demonfire extends SpellTargetableCard {
/**
* Constructor
*
* @param hasBeenUsed Whether the card has already been used or not
*/
@Deprecated
public Demonfire(boolean hasBeenUsed) {
this();
this.hasBeenUsed = hasBeenUsed;
}
/**
* Constructor
*
* Defaults to hasBeenUsed = false
*/
public Demonfire() {
super();
}
@Override
public FilterCharacter getTargetableFilter() {
return FilterCharacterTargetedSpell.ALL_MINIONS;
}
/**
*
* Use the card on the given target
*
* Deals 2 damage to a minion. If it's a friendly Demon, give it +2/+2 instead.
* @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);
if (isCurrentPlayer(targetSide) && targetCharacter.getTribe() == MinionTribe.DEMON) {
targetCharacter.addAttack(2);
targetCharacter.addHealth(2);
} else {
boardState = targetCharacter.takeDamageAndNotify((byte) 2, PlayerSide.CURRENT_PLAYER, targetSide, boardState, true, false);
}
return boardState;
};
}
return this.effect;
}
}