From f03e386399d3797e8a90a0122941e8719881ce8a Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Tue, 25 Feb 2020 15:03:20 +0000 Subject: [PATCH] Resolve "Wrong player controls ETB trigger of Clone" --- .../forge/game/trigger/TriggerHandler.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 25f63deccba..33a8e48663e 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -274,7 +274,7 @@ public class TriggerHandler { } private void runStateTrigger(final Map runParams) { - for (final Trigger t: activeTriggers) { + for (final Trigger t: Lists.newArrayList(activeTriggers)) { if (canRunTrigger(t, TriggerType.Always, runParams)) { runSingleTrigger(t, runParams); } @@ -545,12 +545,17 @@ public class TriggerHandler { // need to set as Overriding Abiltiy so it can be copied better regtrig.setOverridingAbility(sa); } + sa.setActivatingPlayer(host.getController()); + + if (regtrig.isIntrinsic()) { + sa.setIntrinsic(true); + sa.changeText(); + } } else { // need to copy the SA because of TriggeringObjects - sa = sa.copy(); + sa = sa.copy(host, host.getController(), false); } - sa.setHostCard(host); sa.setLastStateBattlefield(game.getLastStateBattlefield()); sa.setLastStateGraveyard(game.getLastStateGraveyard()); @@ -562,9 +567,7 @@ public class TriggerHandler { sa.setTriggeringObjects(regtrig.getStoredTriggeredObjects()); } - if (sa.getActivatingPlayer() == null) { // overriding delayed trigger should have set activator - sa.setActivatingPlayer(host.getController()); - } else if (sa.getDeltrigActivatingPlayer() != null) { + if (sa.getDeltrigActivatingPlayer() != null) { // make sure that the original delayed trigger activator is restored // (may have been overwritten by the AI simulation routines, e.g. Rainbow Vale) sa.setActivatingPlayer(sa.getDeltrigActivatingPlayer()); @@ -579,11 +582,6 @@ public class TriggerHandler { host.addRemembered(sa.getActivatingPlayer()); } - if (regtrig.isIntrinsic() && regtrig.getOverridingAbility() == null) { - sa.setIntrinsic(true); - sa.changeText(); - } - sa.setStackDescription(sa.toString()); if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { if (!CharmEffect.makeChoices(sa)) {