From 2f26cbe676bdb6fdda0976ffa96123655c37598e Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Mon, 24 May 2021 12:24:15 +0200 Subject: [PATCH 1/5] Fix NPE --- .../java/forge/game/trigger/TriggerSacrificed.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java b/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java index 91837a96974..9ad3b9d8a61 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java @@ -80,11 +80,15 @@ public class TriggerSacrificed extends Trigger { // When cast with Emerge, the cost instance is there IndividualCostPaymentInstance currentPayment = (IndividualCostPaymentInstance) runParams.get(AbilityKey.IndividualCostPaymentInstance); - SpellAbility sa = currentPayment.getPayment().getAbility(); - if (sa != null && sa.getHostCard() != null) { - if (sa.isSpell() && sa.getHostCard().hasStartOfUnHiddenKeyword(keyword)) { - withKeyword = true; + SpellAbility sa; + if (currentPayment != null) { + sa = currentPayment.getPayment().getAbility(); + + if (sa != null && sa.getHostCard() != null) { + if (sa.isSpell() && sa.getHostCard().hasStartOfUnHiddenKeyword(keyword)) { + withKeyword = true; + } } } From f374466d0a84283fb3a4e3f2485fbc397d321394 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Mon, 24 May 2021 14:31:15 +0200 Subject: [PATCH 2/5] Update check for detecting prevented damage --- forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index 32c004785fd..148952c0840 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -2449,7 +2449,7 @@ public class ComputerUtilCombat { for (final ReplacementEffect re : list) { Map params = re.getMapParams(); if (params.containsKey("Prevent") || - (re.getOverridingAbility() != null && re.getOverridingAbility().getApi() != ApiType.ReplaceDamage)) { + (re.getOverridingAbility() != null && re.getOverridingAbility().getApi() != ApiType.ReplaceDamage && re.getOverridingAbility().getApi() != ApiType.ReplaceEffect)) { return true; } } From b285205376596ed6a1d407c16cda7ee134576d8f Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 24 May 2021 23:39:22 +0000 Subject: [PATCH 3/5] fix typo --- forge-gui/res/cardsfolder/c/closing_statement.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/c/closing_statement.txt b/forge-gui/res/cardsfolder/c/closing_statement.txt index 6e266464f78..e69cb3c424c 100644 --- a/forge-gui/res/cardsfolder/c/closing_statement.txt +++ b/forge-gui/res/cardsfolder/c/closing_statement.txt @@ -3,6 +3,6 @@ ManaCost:3 W B Types:Instant S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | Phases$ End of Turn | PlayerTurn$ You | EffectZone$ All | Description$ This spell costs {2} less to cast during your end step. A:SP$ Destroy | Cost$ 3 W B | ValidTgts$ Creature.YouDontCtrl,Planeswalker.YouDontCtrl | TgtPrompt$ Select target creature or planeswalker you don't control | SubAbility$ DBPutCounter | SpellDescription$ Destroy target creature or planeswalker you don't control. Put a +1/+1 counter on up to one target creature you control. -SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature you don't control | TargetMin$ 0 | TargetMax$ 1 | CounterType$ P1P1 | CounterNum$ 1 +SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature you control | TargetMin$ 0 | TargetMax$ 1 | CounterType$ P1P1 | CounterNum$ 1 DeckHas:Ability$Counters Oracle:This spell costs {2} less to cast during your end step.\nDestroy target creature or planeswalker you don't control. Put a +1/+1 counter on up to one target creature you control. From 43e1c200463a326ab13a0b111415b6a9499d70a1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 24 May 2021 22:02:31 -0400 Subject: [PATCH 4/5] rise_and_shine.txt --- forge-gui/res/cardsfolder/upcoming/rise_and_shine.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/rise_and_shine.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rise_and_shine.txt b/forge-gui/res/cardsfolder/upcoming/rise_and_shine.txt new file mode 100644 index 00000000000..6f5fdd84be2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rise_and_shine.txt @@ -0,0 +1,10 @@ +Name:Rise and Shine +ManaCost:1 U +Types:Sorcery +A:SP$ Animate | ValidTgts$ Artifact.nonCreature+YouCtrl | TgtPrompt$ Select target noncreature artifact you control | Types$ Artifact,Creature | Duration$ Permanent | Power$ 0 | Toughness$ 0 | RememberAnimated$ True | SubAbility$ DBPutCounter | StackDescription$ {c:Targeted} becomes a 0/0 artifact creature. | SpellDescription$ Target noncreature artifact you control becomes a 0/0 artifact creature. Put four +1/+1 counters on each artifact that became a creature this way. +A:SP$ AnimateAll | Cost$ 4 U U | ValidCards$ Artifact.nonCreature+YouCtrl | Types$ Artifact,Creature | Duration$ Permanent | Power$ 0 | Toughness$ 0 | PrecostDesc$ Overload | CostDesc$ {4}{U}{U} | NonBasicSpell$ True | RememberAnimated$ True | SubAbility$ DBPutCounter | StackDescription$ Each noncreature artifact {p:You} controls becomes a 0/0 artifact creature. | SpellDescription$ (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") +SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ P1P1 | CounterNum$ 4 | SubAbility$ DBCleanup | StackDescription$ {p:You} puts four +1/+1 counters on each artifact that became a creature this way. | SpellDescription$ Put four +1/+1 counters on each artifact that became a creature this way. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Counters +DeckNeeds:Type$Artifact +Oracle:Target noncreature artifact you control becomes a 0/0 artifact creature. Put four +1/+1 counters on each artifact that became a creature this way.\nOverload {4}{U}{U} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") From de1296f750a987ecb2a258e5caa3a3d272c5b223 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 24 May 2021 22:03:13 -0400 Subject: [PATCH 5/5] add support for "RememberAnimated" to AnimateEffectBase --- .../java/forge/game/ability/effects/AnimateEffectBase.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java index 1b8459a01e2..17e96421e05 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java @@ -110,6 +110,10 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { removeEnchantmentTypes = true; } + if (sa.hasParam("RememberAnimated")) { + source.addRemembered(c); + } + if ((power != null) || (toughness != null)) { c.addNewPT(power, toughness, timestamp); }