diff --git a/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java b/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java index dbea77aff18..170498ae371 100644 --- a/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java +++ b/Mage.Sets/src/mage/cards/h/HaktosTheUnscarred.java @@ -106,7 +106,7 @@ enum HaktosTheUnscarredPredicate implements ObjectSourcePlayerPredicate { @Override public boolean apply(ObjectSourcePlayer input, Game game) { - Object obj = game.getState().getValue(input.getSourceId() + "" + input.getSource().getSourceObjectZoneChangeCounter() + "_haktos_number"); + Object obj = game.getState().getValue(input.getSourceId() + "" + input.getObject().getZoneChangeCounter(game) + "_haktos_number"); if (!(obj instanceof Integer)) { return false; } diff --git a/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java b/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java index c6d438b3499..19ccefbf0f6 100644 --- a/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java +++ b/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java @@ -75,7 +75,7 @@ enum TalionTheKindlyLordPredicate implements ObjectSourcePlayerPredicate input, Game game) { Object obj = game.getState().getValue( "chosenNumber_" + input.getSource().getSourceId() - + '_' + input.getSource().getSourceObjectZoneChangeCounter() + + '_' + input.getObject().getZoneChangeCounter(game) ); if (obj == null) { return false; diff --git a/Mage/src/main/java/mage/abilities/Ability.java b/Mage/src/main/java/mage/abilities/Ability.java index 31dee95d241..a834cf8be68 100644 --- a/Mage/src/main/java/mage/abilities/Ability.java +++ b/Mage/src/main/java/mage/abilities/Ability.java @@ -516,6 +516,10 @@ public interface Ability extends Controllable, Serializable { */ void initSourceObjectZoneChangeCounter(Game game, boolean force); + // TODO: it's activating time of ability, not current object's zcc, see #13737, + // in most use cases you must use game.getState().getZoneChangeCounter or input.getObject().getZoneChangeCounter(game) + // only ability related logic can use it (example: delayed triggers) + @Deprecated int getSourceObjectZoneChangeCounter(); /** diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java index cca9260b1e7..6df56973dd5 100644 --- a/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/mageobject/AnotherPredicate.java @@ -16,8 +16,7 @@ public enum AnotherPredicate implements ObjectSourcePlayerPredicate if (!input.getObject().getId().equals(input.getSourceId())) { return true; } - int zcc = input.getSource().getSourceObjectZoneChangeCounter(); - return zcc != 0 && zcc != input.getObject().getZoneChangeCounter(game); + return false; } @Override diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/SaddledSourceThisTurnPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/SaddledSourceThisTurnPredicate.java index ed6593a8d91..f150d8244ea 100644 --- a/Mage/src/main/java/mage/filter/predicate/permanent/SaddledSourceThisTurnPredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/permanent/SaddledSourceThisTurnPredicate.java @@ -17,9 +17,9 @@ public enum SaddledSourceThisTurnPredicate implements ObjectSourcePlayerPredicat @Override public boolean apply(ObjectSourcePlayer input, Game game) { - return SaddledMountWatcher.checkIfSaddledThisTurn( - input.getObject(), new MageObjectReference(input.getSourceId(), input.getSource().getSourceObjectZoneChangeCounter(), game), game - ); + // for delayed triggers must use starting zcc (when delayed trigger created) + MageObjectReference startingMor = new MageObjectReference(input.getSourceId(), input.getSource().getSourceObjectZoneChangeCounter(), game); + return SaddledMountWatcher.checkIfSaddledThisTurn(input.getObject(), startingMor, game); } @Override