From eaaea4a2b3243e79f6021a8e571e00b8166b741b Mon Sep 17 00:00:00 2001 From: Tim Mocny Date: Mon, 21 Mar 2022 17:36:33 +0000 Subject: [PATCH] YNEO: Molten Impact and support --- .../game/ability/effects/DelayedTriggerEffect.java | 12 ++++++++---- forge-gui/res/cardsfolder/upcoming/molten_impact.txt | 8 ++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/molten_impact.txt diff --git a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java index 9adec6a686e..78dcf49fa1c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java @@ -56,20 +56,24 @@ public class DelayedTriggerEffect extends SpellAbilityEffect { if (sa.hasParam("RememberObjects")) { for (final String rem : sa.getParam("RememberObjects").split(",")) { - for (final Object o : AbilityUtils.getDefinedEntities(sa.getHostCard(), rem, sa)) { + for (final Object o : AbilityUtils.getDefinedEntities(host, rem, sa)) { delTrig.addRemembered(o); } } } if (sa.hasParam("RememberNumber")) { - for (final Object o : sa.getHostCard().getRemembered()) { + for (final Object o : host.getRemembered()) { if (o instanceof Integer) { delTrig.addRemembered(o); } } } + if (sa.hasParam("RememberSVarAmount")) { + delTrig.addRemembered(AbilityUtils.calculateAmount(host, host.getSVar(sa.getParam("RememberSVarAmount")), sa)); + } + if (sa.hasAdditionalAbility("Execute")) { SpellAbility overridingSA = sa.getAdditionalAbility("Execute").copy(lki, sa.getActivatingPlayer(), false); // need to reset the parent, additionalAbility does set it to this @@ -78,7 +82,7 @@ public class DelayedTriggerEffect extends SpellAbilityEffect { } // Set Transform timestamp when the delayed trigger is created if (ApiType.SetState == overridingSA.getApi()) { - overridingSA.setSVar("StoredTransform", String.valueOf(sa.getHostCard().getTransformedTimestamp())); + overridingSA.setSVar("StoredTransform", String.valueOf(host.getTransformedTimestamp())); } if (sa.hasParam("CopyTriggeringObjects")) { @@ -89,7 +93,7 @@ public class DelayedTriggerEffect extends SpellAbilityEffect { } final TriggerHandler trigHandler = game.getTriggerHandler(); if (mapParams.containsKey("DelayedTriggerDefinedPlayer")) { // on sb's next turn - Player p = Iterables.getFirst(AbilityUtils.getDefinedPlayers(sa.getHostCard(), mapParams.get("DelayedTriggerDefinedPlayer"), sa), null); + Player p = Iterables.getFirst(AbilityUtils.getDefinedPlayers(host, mapParams.get("DelayedTriggerDefinedPlayer"), sa), null); trigHandler.registerPlayerDefinedDelayedTrigger(p, delTrig); } else if (mapParams.containsKey("ThisTurn")) { trigHandler.registerThisTurnDelayedTrigger(delTrig); diff --git a/forge-gui/res/cardsfolder/upcoming/molten_impact.txt b/forge-gui/res/cardsfolder/upcoming/molten_impact.txt new file mode 100644 index 00000000000..7de19f43756 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/molten_impact.txt @@ -0,0 +1,8 @@ +Name:Molten Impact +ManaCost:1 R +Types:Sorcery +A:SP$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ 4 | ExcessSVar$ Excess | SubAbility$ DBDelayedTrigger | SpellDescription$ CARDNAME deals 4 damage to target creature or planeswalker. +SVar:DBDelayedTrigger:DB$ DelayedTrigger | ConditionCheckSVar$ Excess | ConditionSVarCompare$ GE1 | RememberSVarAmount$ Excess | Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerDescription$ If excess damage was dealt this way, when you cast your next instant or sorcery spell, CARDNAME deals damage equal to the excess to target creature or planeswalker. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X +SVar:X:Count$TriggerRememberAmount +Oracle:Molten Impact deals 4 damage to target creature or planeswalker. If excess damage was dealt this way, when you cast your next instant or sorcery spell, Molten Impact deals damage equal to the excess to target creature or planeswalker.