package net.demilich.metastone.game.spells.trigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.demilich.metastone.game.entities.Entity;
import net.demilich.metastone.game.entities.heroes.Hero;
import net.demilich.metastone.game.entities.minions.Minion;
import net.demilich.metastone.game.events.GameEvent;
import net.demilich.metastone.game.events.PreDamageEvent;
import net.demilich.metastone.game.spells.desc.trigger.EventTriggerDesc;
public class FatalDamageTrigger extends PreDamageTrigger {
private static Logger logger = LoggerFactory.getLogger(FatalDamageTrigger.class);
public FatalDamageTrigger(EventTriggerDesc desc) {
super(desc);
}
@Override
protected boolean fire(GameEvent event, Entity host) {
if (!super.fire(event, host)) {
return false;
} else {
PreDamageEvent preDamageEvent = (PreDamageEvent) event;
Entity victim = preDamageEvent.getVictim();
switch (victim.getEntityType()) {
case HERO:
Hero hero = (Hero) victim;
return hero.getEffectiveHp() <= event.getGameContext().getDamageStack().peek();
case MINION:
Minion minion = (Minion) victim;
return minion.getHp() <= event.getGameContext().getDamageStack().peek();
default:
logger.warn("Invalid entity type in FatalDamageTrigger: {}", victim);
break;
}
}
return false;
}
}