From 34c805c4b84dcb893f377d146ce68432113db1df Mon Sep 17 00:00:00 2001 From: xenohedron Date: Sat, 22 Jul 2023 19:39:55 -0400 Subject: [PATCH] Fix #10655 (getPermanentEntering for COUNTERS_ADDED trigger/watcher) --- Mage.Sets/src/mage/cards/a/AxgardArtisan.java | 2 +- Mage.Sets/src/mage/cards/b/BotanicalBrawler.java | 9 +++++++-- Mage.Sets/src/mage/cards/c/CloakedCadet.java | 5 ++++- Mage.Sets/src/mage/cards/s/ShalaiAndHallar.java | 5 ++++- .../common/BoostCountersAddedFirstTimeWatcher.java | 11 ++++++++--- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AxgardArtisan.java b/Mage.Sets/src/mage/cards/a/AxgardArtisan.java index 4610a188bdc..56353d4acad 100644 --- a/Mage.Sets/src/mage/cards/a/AxgardArtisan.java +++ b/Mage.Sets/src/mage/cards/a/AxgardArtisan.java @@ -72,6 +72,6 @@ class AxgardArtisanTriggeredAbility extends TriggeredAbilityImpl { return permanent != null && this.getSourceId().equals(event.getTargetId()) && event.getData().equals(CounterType.P1P1.getName()) - && BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game); + && BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game, 0); } } diff --git a/Mage.Sets/src/mage/cards/b/BotanicalBrawler.java b/Mage.Sets/src/mage/cards/b/BotanicalBrawler.java index df4c50707c9..b49a71a5d01 100644 --- a/Mage.Sets/src/mage/cards/b/BotanicalBrawler.java +++ b/Mage.Sets/src/mage/cards/b/BotanicalBrawler.java @@ -76,12 +76,17 @@ class BotanicalBrawlerTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - Permanent permanent = game.getPermanent(event.getTargetId()); + Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId()); + int offset = 0; + if (permanent == null) { + permanent = game.getPermanentEntering(event.getTargetId()); + offset++; + } return permanent != null && !getSourceId().equals(event.getTargetId()) && isControlledBy(permanent.getControllerId()) && event.getData().equals(CounterType.P1P1.getName()) - && BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game); + && BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game, offset); } @Override diff --git a/Mage.Sets/src/mage/cards/c/CloakedCadet.java b/Mage.Sets/src/mage/cards/c/CloakedCadet.java index c37f05892df..3d33a14ece6 100644 --- a/Mage.Sets/src/mage/cards/c/CloakedCadet.java +++ b/Mage.Sets/src/mage/cards/c/CloakedCadet.java @@ -70,7 +70,10 @@ class CloakedCadetTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - Permanent permanent = game.getPermanent(event.getTargetId()); + Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId()); + if (permanent == null) { + permanent = game.getPermanentEntering(event.getTargetId()); + } return permanent != null && isControlledBy(permanent.getControllerId()) && permanent.hasSubtype(SubType.HUMAN, game) diff --git a/Mage.Sets/src/mage/cards/s/ShalaiAndHallar.java b/Mage.Sets/src/mage/cards/s/ShalaiAndHallar.java index 4eb34acb636..b353adf14e8 100644 --- a/Mage.Sets/src/mage/cards/s/ShalaiAndHallar.java +++ b/Mage.Sets/src/mage/cards/s/ShalaiAndHallar.java @@ -81,7 +81,10 @@ class ShalaiAndHallarTriggeredAbility extends TriggeredAbilityImpl { || event.getAmount() < 1) { return false; } - Permanent permanent = game.getPermanent(event.getTargetId()); + Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId()); + if (permanent == null) { + permanent = game.getPermanentEntering(event.getTargetId()); + } if (permanent == null || !permanent.isControlledBy(this.getControllerId()) || !permanent.isCreature(game)) { diff --git a/Mage/src/main/java/mage/watchers/common/BoostCountersAddedFirstTimeWatcher.java b/Mage/src/main/java/mage/watchers/common/BoostCountersAddedFirstTimeWatcher.java index efbb228a6c5..5d0a1fb4cd3 100644 --- a/Mage/src/main/java/mage/watchers/common/BoostCountersAddedFirstTimeWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BoostCountersAddedFirstTimeWatcher.java @@ -29,8 +29,13 @@ public class BoostCountersAddedFirstTimeWatcher extends Watcher { return; } Permanent permanent = game.getPermanent(event.getTargetId()); + int offset = 0; + if (permanent == null) { + permanent = game.getPermanentEntering(event.getTargetId()); + offset++; + } if (permanent != null && event.getData().equals(CounterType.P1P1.getName())) { - map.putIfAbsent(new MageObjectReference(permanent, game), event.getId()); + map.putIfAbsent(new MageObjectReference(permanent, game, offset), event.getId()); } } @@ -40,13 +45,13 @@ public class BoostCountersAddedFirstTimeWatcher extends Watcher { map.clear(); } - public static boolean checkEvent(GameEvent event, Permanent permanent, Game game) { + public static boolean checkEvent(GameEvent event, Permanent permanent, Game game, int offset) { return event .getId() .equals(game .getState() .getWatcher(BoostCountersAddedFirstTimeWatcher.class) .map - .getOrDefault(new MageObjectReference(permanent, game), null)); + .getOrDefault(new MageObjectReference(permanent, game, offset), null)); } }