package com.hearthsim.card.classic.minion.common;
import com.hearthsim.card.CharacterIndex;
import com.hearthsim.card.minion.Minion;
import com.hearthsim.exception.HSException;
import com.hearthsim.model.PlayerModel;
import com.hearthsim.model.PlayerSide;
import com.hearthsim.util.tree.HearthTreeNode;
public class DruidOfTheClaw extends Minion {
private byte baseHealth;
public DruidOfTheClaw() {
super();
// need to force this in case the card loader pulls the wrong Druid of the Claw
this.setHealth((byte) 4);
this.setMaxHealth((byte) 4);
this.baseHealth = (byte) 4;
this.setTaunt(false);
this.setCharge(false);
}
@Override
public byte getBaseHealth() {
return this.baseHealth;
}
@Override
public HearthTreeNode use_core(PlayerSide side, Minion targetMinion, HearthTreeNode boardState) throws HSException {
HearthTreeNode toRet = super.use_core(side, targetMinion, boardState);
if (toRet != null) {
PlayerModel currentPlayer = boardState.data_.modelForSide(PlayerSide.CURRENT_PLAYER);
CharacterIndex thisMinionIndex = currentPlayer.getIndexForCharacter(this);
HearthTreeNode tauntState = toRet.addChild(new HearthTreeNode(toRet.data_.deepCopy()));
DruidOfTheClaw newMinion = (DruidOfTheClaw)tauntState.data_.modelForSide(PlayerSide.CURRENT_PLAYER).getCharacter(thisMinionIndex);
newMinion.setTaunt(true);
newMinion.setMaxHealth((byte) 6);
newMinion.setHealth((byte) 6);
newMinion.baseHealth = ((byte) 6);
HearthTreeNode chargeState = toRet.addChild(new HearthTreeNode(toRet.data_.deepCopy()));
newMinion = (DruidOfTheClaw)chargeState.data_.modelForSide(PlayerSide.CURRENT_PLAYER).getCharacter(thisMinionIndex);
newMinion.setCharge(true);
}
return toRet;
}
@Override
public DruidOfTheClaw deepCopy() {
DruidOfTheClaw copy = (DruidOfTheClaw)super.deepCopy();
copy.baseHealth = this.baseHealth;
return copy;
}
}