From 5a87664a55e4095b53df5e98e7d6322cd12f4e4c Mon Sep 17 00:00:00 2001 From: "jeff@delmarus.com" <> Date: Sat, 28 Aug 2021 15:40:46 -0500 Subject: [PATCH] - Fixed #8166 --- .../src/mage/cards/d/DivineIntervention.java | 43 ++++--------------- Mage/src/main/java/mage/cards/CardImpl.java | 8 ++++ 2 files changed, 17 insertions(+), 34 deletions(-) diff --git a/Mage.Sets/src/mage/cards/d/DivineIntervention.java b/Mage.Sets/src/mage/cards/d/DivineIntervention.java index 1759e3a7cbe..afc0629b4dc 100644 --- a/Mage.Sets/src/mage/cards/d/DivineIntervention.java +++ b/Mage.Sets/src/mage/cards/d/DivineIntervention.java @@ -1,7 +1,5 @@ - package mage.cards.d; -import java.util.Objects; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; @@ -20,9 +18,7 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; -import mage.game.stack.StackObject; import mage.players.Player; /** @@ -71,38 +67,15 @@ public final class DivineIntervention extends CardImpl { @Override public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.COUNTER_REMOVED; + return event.getType() == GameEvent.EventType.COUNTERS_REMOVED; } @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getData().equals(CounterType.INTERVENTION.getName()) && event.getTargetId().equals(this.getSourceId())) { - - boolean onlyYouOnStack = true; - boolean onlyOpponentOnStack = true; - UUID you = getControllerId(); - boolean firstOnStack = false; - - for (StackObject stackObject : game.getStack()) { - - if (stackObject.getControllerId() != null && !firstOnStack) { - if (!Objects.equals(you, stackObject.getControllerId())) { - onlyYouOnStack = false; - } else if (Objects.equals(you, stackObject.getControllerId())) { - onlyOpponentOnStack = false; - } - - firstOnStack = true; - } - } - - if (onlyYouOnStack && !onlyOpponentOnStack) { - return true; - } else if (!onlyYouOnStack && onlyOpponentOnStack) { - return false; - } - } - return false; + return (event.getData().equals(CounterType.INTERVENTION.getName()) + && event.getTargetId().equals(this.getSourceId()) + && event.getPlayerId() != null + && event.getPlayerId() == this.getControllerId()); // the controller of this removed the counter } @Override @@ -131,8 +104,10 @@ public final class DivineIntervention extends CardImpl { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); - if (controller != null && sourcePermanent != null) { - if (game.getState().getZone(sourcePermanent.getId()) == Zone.BATTLEFIELD && sourcePermanent.getCounters(game).getCount(CounterType.INTERVENTION) == 0) { + if (controller != null + && sourcePermanent != null) { + if (game.getState().getZone(sourcePermanent.getId()) == Zone.BATTLEFIELD + && sourcePermanent.getCounters(game).getCount(CounterType.INTERVENTION) == 0) { game.setDraw(controller.getId()); } return true; diff --git a/Mage/src/main/java/mage/cards/CardImpl.java b/Mage/src/main/java/mage/cards/CardImpl.java index b7c491f4dd4..c3741f4a45f 100644 --- a/Mage/src/main/java/mage/cards/CardImpl.java +++ b/Mage/src/main/java/mage/cards/CardImpl.java @@ -747,11 +747,19 @@ public abstract class CardImpl extends MageObjectImpl implements Card { break; } GameEvent event = GameEvent.getEvent(GameEvent.EventType.COUNTER_REMOVED, objectId, source, getControllerOrOwner()); + if (source != null + && source.getControllerId() != null) { + event.setPlayerId(source.getControllerId()); // player who controls the source ability that removed the counter + } event.setData(name); game.fireEvent(event); finalAmount++; } GameEvent event = GameEvent.getEvent(GameEvent.EventType.COUNTERS_REMOVED, objectId, source, getControllerOrOwner()); + if (source != null + && source.getControllerId() != null) { + event.setPlayerId(source.getControllerId()); // player who controls the source ability that removed the counter + } event.setData(name); event.setAmount(finalAmount); game.fireEvent(event);