From 290be8707371913be8b4d1517c1b50caf861dfb5 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 21 Apr 2018 11:16:19 +0200 Subject: [PATCH] * Jaya Ballard - Fixed that the created emblem's ability did cause game breaking errors. --- .../game/command/emblems/JayaBallardEmblem.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Mage/src/main/java/mage/game/command/emblems/JayaBallardEmblem.java b/Mage/src/main/java/mage/game/command/emblems/JayaBallardEmblem.java index 091d86271db..f7b4621238f 100644 --- a/Mage/src/main/java/mage/game/command/emblems/JayaBallardEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/JayaBallardEmblem.java @@ -20,6 +20,7 @@ import mage.game.Game; import mage.game.command.Emblem; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; +import mage.game.events.ZoneChangeEvent; import mage.players.Player; import mage.watchers.common.CastFromGraveyardWatcher; @@ -113,13 +114,14 @@ class JayaBallardReplacementEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - - Card card = game.getCard(event.getSourceId()); - if (card.isInstant() || card.isSorcery()) { - // TODO: Find a way to check, that the spell from graveyard was really cast by the ability of the emblem. - // currently every spell cast from graveyard will be exiled. - CastFromGraveyardWatcher watcher = (CastFromGraveyardWatcher) game.getState().getWatchers().get(CastFromGraveyardWatcher.class.getSimpleName()); - return watcher != null && watcher.spellWasCastFromGraveyard(event.getTargetId(), game.getState().getZoneChangeCounter(event.getTargetId())); + if (Zone.GRAVEYARD == ((ZoneChangeEvent) event).getToZone()) { + Card card = game.getCard(event.getSourceId()); + if (card != null && (card.isInstant() || card.isSorcery())) { + // TODO: Find a way to check, that the spell from graveyard was really cast by the ability of the emblem. + // currently every spell cast from graveyard will be exiled. + CastFromGraveyardWatcher watcher = (CastFromGraveyardWatcher) game.getState().getWatchers().get(CastFromGraveyardWatcher.class.getSimpleName()); + return watcher != null && watcher.spellWasCastFromGraveyard(event.getTargetId(), game.getState().getZoneChangeCounter(event.getTargetId())); + } } return false; }