public void checkPermanentOnlyTriggers(ZoneChangeEvent event, Game game) {
// we only want to trigger abilities that are not on the underlying card ie. have been added by another effect
// or we want to trigger abilities that only trigger on leaving the battlefield
// card abilities will get triggered later when the card hits the new zone
Card card = game.getCard(objectId).copy();
for (TriggeredAbility ability: abilities.getTriggeredAbilities(event.getFromZone())) {
if (!card.getAbilities().containsKey(ability.getId())) {
if (ability.checkTrigger(event, game)) {
ability.trigger(game, controllerId);
}
} else if (ability instanceof ZoneChangeTriggeredAbility && event.getFromZone() == Zone.BATTLEFIELD) {
ZoneChangeTriggeredAbility zcAbility = (ZoneChangeTriggeredAbility)ability;
if (zcAbility.getToZone() == null) {
if (ability.checkTrigger(event, game)) {
ability.trigger(game, controllerId);
}
}
}
}
for (TriggeredAbility ability: abilities.getTriggeredAbilities(event.getToZone())) {
if (!card.getAbilities().containsKey(ability.getId())) {
if (ability.checkTrigger(event, game)) {
ability.trigger(game, controllerId);
}
}
}