Clean delayedTriggers from player who lost

This commit is contained in:
tool4EvEr
2021-04-14 22:57:08 +02:00
parent 7107f05adb
commit e2036a5203
2 changed files with 13 additions and 5 deletions

View File

@@ -822,6 +822,8 @@ public class Game {
// Remove leftover items from
this.getStack().removeInstancesControlledBy(p);
getTriggerHandler().onPlayerLost(p);
ingamePlayers.remove(p);
lostPlayers.add(p);

View File

@@ -422,11 +422,6 @@ public class TriggerHandler {
}
}
if (delayedTriggers.contains(regtrig) && game.getCardState(regtrig.getHostCard(), null) == null) {
delayedTriggers.remove(regtrig);
return false; // CR 603.2f owner lost game
}
if (!regtrig.requirementsCheck(game)) {
return false; // Conditions aren't right.
}
@@ -634,4 +629,15 @@ public class TriggerHandler {
}
return trigger;
}
public void onPlayerLost(Player p) {
List<Trigger> lost = new ArrayList<>();
for (Trigger t : delayedTriggers) {
// CR 603.2f owner of trigger source lost game || 800.4d trigger controller lost game
if (game.getCardState(t.getHostCard(), null) == null || t.getHostCard().getOwner().equals(p)) {
lost.add(t);
}
}
delayedTriggers.removeAll(lost);
}
}