From 341f73ff7e4e468d5ad54382d241388c12878ef6 Mon Sep 17 00:00:00 2001 From: Grath <1895280+Grath@users.noreply.github.com> Date: Sun, 8 Jun 2025 00:54:31 -0400 Subject: [PATCH 1/2] Fix Zenos yae Galvus and Shinryu, Transcendent Rival triggers. --- Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java | 5 +++-- Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java b/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java index 3fdbaeda184..535b30ec6a5 100644 --- a/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java +++ b/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java @@ -120,13 +120,14 @@ class ShinryuTranscendentRivalTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.LOSES; + return event.getType() == GameEvent.EventType.LOST; } @Override public boolean checkTrigger(GameEvent event, Game game) { + this.initSourceObjectZoneChangeCounter(game, false); return Optional - .ofNullable(this.getId() + "_" + this.getSourceObjectZoneChangeCounter() + "_opponent") + .of(this.getSourceId() + "_" + this.getSourceObjectZoneChangeCounter() + "_opponent") .map(game.getState()::getValue) .map(event.getPlayerId()::equals) .orElse(false); diff --git a/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java b/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java index 5db0ae321ec..9b9fc135a75 100644 --- a/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java +++ b/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java @@ -88,8 +88,9 @@ enum ZenosYaeGalvusPredicate implements ObjectSourcePlayerPredicate { @Override public boolean apply(ObjectSourcePlayer input, Game game) { + input.getSource().initSourceObjectZoneChangeCounter(game, false); return flag == Optional - .ofNullable(CardUtil.getObjectZoneString( + .of(CardUtil.getObjectZoneString( "chosenCreature", input.getSource().getSourceId(), game, input.getSource().getSourceObjectZoneChangeCounter(), false )) From a43846385a134fd1e3676640899ed9367524c0a9 Mon Sep 17 00:00:00 2001 From: Grath <1895280+Grath@users.noreply.github.com> Date: Sun, 8 Jun 2025 11:20:47 -0400 Subject: [PATCH 2/2] Use code from getCurrentSourceObjectZoneChangeCounter to lookup ZCC of actual permanent rather than ability's ZCC which is, unexpectedly, statically set to 0 by design. --- Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java | 4 ++-- Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java b/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java index 535b30ec6a5..8775979f768 100644 --- a/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java +++ b/Mage.Sets/src/mage/cards/s/ShinryuTranscendentRival.java @@ -125,9 +125,9 @@ class ShinryuTranscendentRivalTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - this.initSourceObjectZoneChangeCounter(game, false); + int zcc = game.getState().getZoneChangeCounter(this.getSourceId()); return Optional - .of(this.getSourceId() + "_" + this.getSourceObjectZoneChangeCounter() + "_opponent") + .of(this.getSourceId() + "_" + zcc + "_opponent") .map(game.getState()::getValue) .map(event.getPlayerId()::equals) .orElse(false); diff --git a/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java b/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java index 9b9fc135a75..d808e24232d 100644 --- a/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java +++ b/Mage.Sets/src/mage/cards/z/ZenosYaeGalvus.java @@ -88,11 +88,11 @@ enum ZenosYaeGalvusPredicate implements ObjectSourcePlayerPredicate { @Override public boolean apply(ObjectSourcePlayer input, Game game) { - input.getSource().initSourceObjectZoneChangeCounter(game, false); + int zcc = game.getState().getZoneChangeCounter(input.getSource().getSourceId()); return flag == Optional .of(CardUtil.getObjectZoneString( "chosenCreature", input.getSource().getSourceId(), game, - input.getSource().getSourceObjectZoneChangeCounter(), false + zcc, false )) .map(game.getState()::getValue) .filter(MageObjectReference.class::isInstance)