package com.hearthsim.card.minion.heroes;
import com.hearthsim.card.minion.Hero;
import com.hearthsim.card.minion.Minion;
import com.hearthsim.model.BoardModel;
import com.hearthsim.model.PlayerSide;
import com.hearthsim.util.tree.CardDrawNode;
import com.hearthsim.util.tree.HearthTreeNode;
public class Warlock extends Hero {
@Override
public boolean canBeUsedOn(PlayerSide playerSide, Minion minion, BoardModel boardModel) {
return playerSide == PlayerSide.CURRENT_PLAYER && minion instanceof Hero;
}
/**
* Use the hero ability on a given target
*
* Warlock: draw a card and take 2 damage
*
*
*
* @param targetPlayerSide
* @param targetMinion The target minion
* @param boardState
*
* @return
*/
@Override
public HearthTreeNode useHeroAbility_core(
PlayerSide targetPlayerSide,
Minion targetMinion,
HearthTreeNode boardState) {
if (targetPlayerSide == PlayerSide.WAITING_PLAYER || !targetMinion.isHero())
return null;
HearthTreeNode toRet = targetMinion.takeDamageAndNotify((byte) 2, PlayerSide.CURRENT_PLAYER, PlayerSide.CURRENT_PLAYER, boardState, false, false);
if (toRet != null) {
this.hasBeenUsed = true;
toRet.data_.getCurrentPlayer().subtractMana(HERO_ABILITY_COST);
if (toRet instanceof CardDrawNode) {
((CardDrawNode)toRet).addNumCardsToDraw(1);
} else {
toRet = new CardDrawNode(toRet, 1);
}
}
return toRet;
}
}