package com.hearthsim.card.classic.spell.rare;
import com.hearthsim.card.Card;
import com.hearthsim.card.CharacterIndex;
import com.hearthsim.card.classic.weapon.common.HeavyAxe;
import com.hearthsim.card.minion.Hero;
import com.hearthsim.card.spellcard.SpellTargetableCard;
import com.hearthsim.card.weapon.WeaponCard;
import com.hearthsim.event.effect.EffectCharacter;
import com.hearthsim.event.effect.EffectHero;
import com.hearthsim.event.effect.EffectHeroWeapon;
import com.hearthsim.event.effect.EffectHeroWeaponBuffDelta;
import com.hearthsim.event.filter.FilterCharacter;
import com.hearthsim.model.PlayerSide;
import com.hearthsim.util.tree.HearthTreeNode;
public class Upgrade extends SpellTargetableCard {
private final static EffectHero<Card> buff = new EffectHeroWeaponBuffDelta<>(1, 1);
private final static EffectCharacter effect = new EffectCharacter() {
@Override
public HearthTreeNode applyEffect(PlayerSide targetSide, CharacterIndex targetCharacterIndex, HearthTreeNode boardState) {
Hero hero = boardState.data_.modelForSide(targetSide).getHero();
WeaponCard weapon = hero.getWeapon();
if (weapon != null) {
boardState = Upgrade.buff.applyEffect(targetSide, boardState);
} else {
EffectHero<Card> newWeapon = new EffectHeroWeapon<>(new HeavyAxe());
boardState = newWeapon.applyEffect(targetSide, boardState);
}
return boardState;
}
};
public Upgrade() {
super();
}
@Override
public FilterCharacter getTargetableFilter() {
return FilterCharacter.SELF;
}
@Override
public EffectCharacter getTargetableEffect() {
return Upgrade.effect;
}
}