mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
RepeatPlayers - Swap out other remembered while resolving
This commit is contained in:
committed by
Michael Kamensky
parent
6b0a88cd95
commit
999e4f81ee
@@ -3,6 +3,7 @@ package forge.game.ability.effects;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import forge.GameCommand;
|
import forge.GameCommand;
|
||||||
@@ -154,20 +155,27 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
game.getUntap().addUntil(p, new GameCommand() {
|
game.getUntap().addUntil(p, new GameCommand() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
List<Object> tempRemembered = Lists.newArrayList(Iterables.filter(source.getRemembered(), Player.class));
|
||||||
|
source.removeRemembered(tempRemembered);
|
||||||
source.addRemembered(p);
|
source.addRemembered(p);
|
||||||
AbilityUtils.resolve(repeat);
|
AbilityUtils.resolve(repeat);
|
||||||
source.removeRemembered(p);
|
source.removeRemembered(p);
|
||||||
|
source.addRemembered(tempRemembered);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
// to avoid risk of collision with other abilities swap out other Remembered Player while resolving
|
||||||
|
List<Object> tempRemembered = Lists.newArrayList(Iterables.filter(source.getRemembered(), Player.class));
|
||||||
|
source.removeRemembered(tempRemembered);
|
||||||
source.addRemembered(p);
|
source.addRemembered(p);
|
||||||
AbilityUtils.resolve(repeat);
|
AbilityUtils.resolve(repeat);
|
||||||
source.removeRemembered(p);
|
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);
|
game.getAction().dealDamage(false, sa.getDamageMap(), sa.getPreventMap(), sa.getCounterTable(), sa);
|
||||||
}
|
}
|
||||||
if (sa.hasParam("ChangeZoneTable")) {
|
if (sa.hasParam("ChangeZoneTable")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user