From b5deb0b2526c0d553925f49dbaed205cf62abef5 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Sat, 25 Apr 2020 19:56:37 +0000 Subject: [PATCH] fix Cycling for Zero with xPaid, also do Zaxara with xPaid --- .../main/java/forge/game/ability/AbilityKey.java | 1 - .../java/forge/game/ability/AbilityUtils.java | 16 ++++++++++------ .../game/trigger/TriggerSpellAbilityCast.java | 3 +-- .../main/java/forge/game/zone/MagicStack.java | 1 - .../upcoming/C2020/zaxara_the_exemplary.txt | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityKey.java b/forge-game/src/main/java/forge/game/ability/AbilityKey.java index 1f86bfec27b..4821b088c8a 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityKey.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityKey.java @@ -27,7 +27,6 @@ public enum AbilityKey { Blockers("Blockers"), CastSA("CastSA"), CastSACMC("CastSACMC"), - CastSAX("CastSAX"), Card("Card"), Cards("Cards"), CardLKI("CardLKI"), 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 b748e8814d8..a9b482bef49 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1586,13 +1586,13 @@ public class AbilityUtils { // If the chosen creature has X in its mana cost, that X is considered to be 0. // The value of X in Altered Ego’s last ability will be whatever value was chosen for X while casting Altered Ego. if (sa.getOriginalHost() != null || !sa.getHostCard().equals(c)) { - return 0; + return CardFactoryUtil.doXMath(0, expr, c); } if (root.isTrigger()) { Trigger t = root.getTrigger(); if (t == null) { - return 0; + return CardFactoryUtil.doXMath(0, expr, c); } // 107.3k If an object’s enters-the-battlefield triggered ability or replacement effect refers to X, @@ -1603,11 +1603,15 @@ public class AbilityUtils { return CardFactoryUtil.doXMath(c.getXManaCostPaid(), expr, c); } else if (TriggerType.SpellCast.equals(t.getMode())) { // Cast Trigger like Hydroid Krasis - return CardFactoryUtil.doXMath(c.getXManaCostPaid(), expr, c); + SpellAbility castSA = (SpellAbility) root.getTriggeringObject(AbilityKey.SpellAbility); + if (castSA == null || castSA.getXManaCostPaid() == null) { + return CardFactoryUtil.doXMath(0, expr, c); + } + return CardFactoryUtil.doXMath(castSA.getXManaCostPaid(), expr, c); } else if (TriggerType.Cycled.equals(t.getMode())) { SpellAbility cycleSA = (SpellAbility) sa.getTriggeringObject(AbilityKey.Cause); - if (cycleSA == null) { - return 0; + if (cycleSA == null || cycleSA.getXManaCostPaid() == null) { + return CardFactoryUtil.doXMath(0, expr, c); } return CardFactoryUtil.doXMath(cycleSA.getXManaCostPaid(), expr, c); } @@ -1619,7 +1623,7 @@ public class AbilityUtils { } } - return 0; + return CardFactoryUtil.doXMath(0, expr, c); } // Count$Kicked.. diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java index 7e1630618c3..bf5e16496c9 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java @@ -278,8 +278,7 @@ public class TriggerSpellAbilityCast extends Trigger { AbilityKey.Activator, AbilityKey.CurrentStormCount, AbilityKey.CurrentCastSpells, - AbilityKey.CastSACMC, - AbilityKey.CastSAX + AbilityKey.CastSACMC ); } diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index cce6b249fd2..5755bad881d 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -293,7 +293,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable