diff --git a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java index 2d142123536..7a3942829a9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java @@ -225,11 +225,8 @@ public class TokenEffect extends SpellAbilityEffect { // Cause of the Token Effect, in general it should be this // but if its a Replacement Effect, it might be something else or null SpellAbility cause = sa; - if (root.isReplacementAbility()) { - Object replacingObject = root.getReplacingObject(AbilityKey.Cause); - if (replacingObject != null) { - cause = (SpellAbility) replacingObject; - } + if (root.isReplacementAbility() && root.hasReplacingObject(AbilityKey.Cause)) { + cause = (SpellAbility) root.getReplacingObject(AbilityKey.Cause); } final boolean remember = sa.hasParam("RememberTokens"); diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 55760357af4..7fe09ae07ae 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -596,6 +596,9 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit public Map getReplacingObjects() { return replacingObjects; } + public boolean hasReplacingObject(final AbilityKey type) { + return replacingObjects.containsKey(type); + } public Object getReplacingObject(final AbilityKey type) { final Object res = replacingObjects.get(type); return res;