From a4eb96383866c652616eb6893679cf2a95060317 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Sat, 18 May 2024 19:23:50 +0200 Subject: [PATCH] handle delayed triggers not using the stack --- .../java/mage/abilities/DelayedTriggeredAbility.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Mage/src/main/java/mage/abilities/DelayedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/DelayedTriggeredAbility.java index fd389a0e8db..c57293926d7 100644 --- a/Mage/src/main/java/mage/abilities/DelayedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/DelayedTriggeredAbility.java @@ -65,11 +65,16 @@ public abstract class DelayedTriggeredAbility extends TriggeredAbilityImpl { } public boolean isInactive(Game game) { - // discard as soon as possible for leaved player + // discard on stack // 800.4d. If an object that would be owned by a player who has left the game would be created in any zone, it isn't created. // If a triggered ability that would be controlled by a player who has left the game would be put onto the stack, it isn't put on the stack. Player player = game.getPlayer(getControllerId()); - boolean canDelete = player == null || !player.isInGame(); - return canDelete; + if (player != null && player.isInGame()) { + return false; + } + // If using the stack, discard as soon as possible for leaved player + // If not using the stack (for instance return of "exile target player until {this} leaves the battlefield"), + // we wait till the player would have played a next turn to make sure they are debounced after the player leaves. + return usesStack || player.hasReachedNextTurnAfterLeaving(); } }