fix Cycling for Zero with xPaid, also do Zaxara with xPaid

This commit is contained in:
Hans Mackowiak
2020-04-25 19:56:37 +00:00
committed by Michael Kamensky
parent 0bb42a2794
commit b5deb0b252
5 changed files with 12 additions and 11 deletions

View File

@@ -27,7 +27,6 @@ public enum AbilityKey {
Blockers("Blockers"),
CastSA("CastSA"),
CastSACMC("CastSACMC"),
CastSAX("CastSAX"),
Card("Card"),
Cards("Cards"),
CardLKI("CardLKI"),

View File

@@ -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 Egos 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 objects 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.<numHB>.<numNotHB>

View File

@@ -278,8 +278,7 @@ public class TriggerSpellAbilityCast extends Trigger {
AbilityKey.Activator,
AbilityKey.CurrentStormCount,
AbilityKey.CurrentCastSpells,
AbilityKey.CastSACMC,
AbilityKey.CastSAX
AbilityKey.CastSACMC
);
}

View File

@@ -293,7 +293,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
runParams.put(AbilityKey.Activator, sp.getActivatingPlayer());
runParams.put(AbilityKey.CastSA, si.getSpellAbility(true));
runParams.put(AbilityKey.CastSACMC, si.getSpellAbility(true).getHostCard().getCMC());
runParams.put(AbilityKey.CastSAX, si.getSpellAbility(true).getHostCard().getXManaCostPaid());
runParams.put(AbilityKey.CurrentStormCount, thisTurnCast.size());
runParams.put(AbilityKey.CurrentCastSpells, new CardCollection(thisTurnCast));
game.getTriggerHandler().runTrigger(TriggerType.SpellAbilityCast, runParams, true);

View File

@@ -8,7 +8,7 @@ T:Mode$ SpellCast | ValidCard$ Card.hasXCost | ValidActivatingPlayer$ You | Trig
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ g_0_0_hydra | TokenOwner$ You | RememberTokens$ True | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ P1P1 | CounterNum$ X | References$ X | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:TriggerCount$CastSAX
SVar:X:Count$xPaid
DeckHas:Ability$Token
AI:RemoveDeck:Random
Oracle:Deathtouch\n{T}: Add two mana of any one color.\nWhenever you cast a spell with {X} in its mana cost, create a 0/0 green Hydra creature token, then put X +1/+1 counters on it.