diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 1af706a21a6..b748e8814d8 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1591,6 +1591,10 @@ public class AbilityUtils { if (root.isTrigger()) { Trigger t = root.getTrigger(); + if (t == null) { + return 0; + } + // 107.3k If an object’s enters-the-battlefield triggered ability or replacement effect refers to X, // and the spell that became that object as it resolved had a value of X chosen for any of its costs, // the value of X for that ability is the same as the value of X for that spell, although the value of X for that permanent is 0. diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index 15f8869ec02..55532468591 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -473,13 +473,13 @@ public class WrappedAbility extends Ability { TriggerHandler th = game.getTriggerHandler(); + // set Trigger + sa.setTrigger(regtrig); + if (decider != null && !decider.getController().confirmTrigger(this, triggerParams, this.isMandatory())) { return; } - // set Trigger - sa.setTrigger(regtrig); - if (!triggerParams.containsKey("NoTimestampCheck")) { timestampCheck(); }