From 999e4f81ee990e8cce694438fca6a96c5a3603ec Mon Sep 17 00:00:00 2001 From: Bug Hunter Date: Sun, 6 Jun 2021 03:27:02 +0000 Subject: [PATCH] RepeatPlayers - Swap out other remembered while resolving --- .../forge/game/ability/effects/RepeatEachEffect.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java index 671139d0049..f15c6f5991c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java @@ -3,6 +3,7 @@ package forge.game.ability.effects; import java.util.Collections; import java.util.List; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.GameCommand; @@ -154,20 +155,27 @@ public class RepeatEachEffect extends SpellAbilityEffect { game.getUntap().addUntil(p, new GameCommand() { @Override public void run() { + List tempRemembered = Lists.newArrayList(Iterables.filter(source.getRemembered(), Player.class)); + source.removeRemembered(tempRemembered); source.addRemembered(p); AbilityUtils.resolve(repeat); source.removeRemembered(p); + source.addRemembered(tempRemembered); } }); } else { + // to avoid risk of collision with other abilities swap out other Remembered Player while resolving + List tempRemembered = Lists.newArrayList(Iterables.filter(source.getRemembered(), Player.class)); + source.removeRemembered(tempRemembered); source.addRemembered(p); AbilityUtils.resolve(repeat); source.removeRemembered(p); + source.addRemembered(tempRemembered); } } } - if(sa.hasParam("DamageMap")) { + if (sa.hasParam("DamageMap")) { game.getAction().dealDamage(false, sa.getDamageMap(), sa.getPreventMap(), sa.getCounterTable(), sa); } if (sa.hasParam("ChangeZoneTable")) {