From 129f6ddc7570d0d1d182bd2de394dd7fcc6fa72f Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 8 Dec 2018 09:12:26 +0300 Subject: [PATCH 1/6] - Set the original host on subabilities and additional abilities, fixes a crash with Myr Welder + Ornate Kanzashi. --- .../main/java/forge/game/spellability/SpellAbility.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 3e866b91fb1..b06759ea044 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -400,6 +400,14 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } public void setOriginalHost(final Card c) { grantorCard = c; + for (List addSaList : this.getAdditionalAbilityLists().values()) { + for (SpellAbility addSa : addSaList) { + addSa.setOriginalHost(c); + } + } + if (this.getSubAbility() != null) { + this.getSubAbility().setOriginalHost(c); + } } From 3f4c3d2945e9daced5f89b148f828595887022e6 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 8 Dec 2018 10:36:18 +0300 Subject: [PATCH 2/6] - Fix Myr Welder + Ornate Kanzashi, make Myr Welder use the Imprint mechanism. --- .../forge/game/spellability/SpellAbility.java | 15 +++++++++------ forge-gui/res/cardsfolder/m/myr_welder.txt | 6 +++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index b06759ea044..a1cf5a993fa 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -400,13 +400,16 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } public void setOriginalHost(final Card c) { grantorCard = c; - for (List addSaList : this.getAdditionalAbilityLists().values()) { - for (SpellAbility addSa : addSaList) { - addSa.setOriginalHost(c); - } + if (subAbility != null) { + subAbility.setOriginalHost(c); } - if (this.getSubAbility() != null) { - this.getSubAbility().setOriginalHost(c); + for (AbilitySub sa : additionalAbilities.values()) { + sa.setOriginalHost(c); + } + for (List list : additionalAbilityLists.values()) { + for (AbilitySub sa : list) { + sa.setOriginalHost(c); + } } } diff --git a/forge-gui/res/cardsfolder/m/myr_welder.txt b/forge-gui/res/cardsfolder/m/myr_welder.txt index a63ac712047..9a238f12976 100644 --- a/forge-gui/res/cardsfolder/m/myr_welder.txt +++ b/forge-gui/res/cardsfolder/m/myr_welder.txt @@ -2,11 +2,11 @@ Name:Myr Welder ManaCost:3 Types:Artifact Creature Myr PT:1/4 -S:Mode$ Continuous | Affected$ Card.Self | EffectZone$ Battlefield | GainsAbilitiesOf$ Card.IsRemembered+ExiledWithSource | GainsAbilitiesOfZones$ Exile | Description$ CARDNAME has all activated abilities of all cards exiled with it. -A:AB$ ChangeZone | Cost$ T | ValidTgts$ Artifact | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Select target artifact | RememberChanged$ True | PrecostDesc$ Imprint — | SpellDescription$ Exile target artifact card from a graveyard. +S:Mode$ Continuous | Affected$ Card.Self | EffectZone$ Battlefield | GainsAbilitiesOf$ Card.IsImprinted+ExiledWithSource | GainsAbilitiesOfZones$ Exile | Description$ CARDNAME has all activated abilities of all cards exiled with it. +A:AB$ ChangeZone | Cost$ T | ValidTgts$ Artifact | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Select target artifact | Imprint$ True | PrecostDesc$ Imprint — | SpellDescription$ Exile target artifact card from a graveyard. T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/myr_welder.jpg Oracle:Imprint — {T}: Exile target artifact card from a graveyard.\nMyr Welder has all activated abilities of all cards exiled with it. From 4cf5159d2c19042eaefcd963107b7f0a9f348ed7 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 8 Dec 2018 10:41:46 +0300 Subject: [PATCH 3/6] - Fix Liliana, Untouched by Death Mill ability for the AI. --- forge-ai/src/main/java/forge/ai/ability/MillAi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/MillAi.java b/forge-ai/src/main/java/forge/ai/ability/MillAi.java index 5250f543a82..d06a8c2b261 100644 --- a/forge-ai/src/main/java/forge/ai/ability/MillAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/MillAi.java @@ -56,7 +56,7 @@ public class MillAi extends SpellAbilityAi { return (ph.is(PhaseType.MAIN1) || ph.is(PhaseType.MAIN2)) && ph.isPlayerTurn(ai); // Chandra, Torch of Defiance and similar } if ("You".equals(sa.getParam("Defined")) && !(!SpellAbilityAi.isSorcerySpeed(sa) && ph.is(PhaseType.END_OF_TURN) - && ph.getNextTurn().equals(ai))) { + && ph.getNextTurn().equals(ai)) && !sa.hasParam("Planeswalker")) { return false; // only self-mill at opponent EOT } if (sa.getHostCard().isCreature() && sa.getPayCosts().hasTapCost()) { From 087b8844128eb808984b7c27ab3df48f260c30f6 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 8 Dec 2018 09:12:26 +0300 Subject: [PATCH 4/6] - Set the original host on subabilities and additional abilities, fixes a crash with Myr Welder + Ornate Kanzashi. --- .../main/java/forge/game/spellability/SpellAbility.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 3e866b91fb1..b06759ea044 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -400,6 +400,14 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } public void setOriginalHost(final Card c) { grantorCard = c; + for (List addSaList : this.getAdditionalAbilityLists().values()) { + for (SpellAbility addSa : addSaList) { + addSa.setOriginalHost(c); + } + } + if (this.getSubAbility() != null) { + this.getSubAbility().setOriginalHost(c); + } } From e96f5819849f3ca6a6fbecb70bf206f69ff0df38 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 8 Dec 2018 10:36:18 +0300 Subject: [PATCH 5/6] - Fix Myr Welder + Ornate Kanzashi, make Myr Welder use the Imprint mechanism. --- .../forge/game/spellability/SpellAbility.java | 15 +++++++++------ forge-gui/res/cardsfolder/m/myr_welder.txt | 6 +++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index b06759ea044..a1cf5a993fa 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -400,13 +400,16 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } public void setOriginalHost(final Card c) { grantorCard = c; - for (List addSaList : this.getAdditionalAbilityLists().values()) { - for (SpellAbility addSa : addSaList) { - addSa.setOriginalHost(c); - } + if (subAbility != null) { + subAbility.setOriginalHost(c); } - if (this.getSubAbility() != null) { - this.getSubAbility().setOriginalHost(c); + for (AbilitySub sa : additionalAbilities.values()) { + sa.setOriginalHost(c); + } + for (List list : additionalAbilityLists.values()) { + for (AbilitySub sa : list) { + sa.setOriginalHost(c); + } } } diff --git a/forge-gui/res/cardsfolder/m/myr_welder.txt b/forge-gui/res/cardsfolder/m/myr_welder.txt index a63ac712047..9a238f12976 100644 --- a/forge-gui/res/cardsfolder/m/myr_welder.txt +++ b/forge-gui/res/cardsfolder/m/myr_welder.txt @@ -2,11 +2,11 @@ Name:Myr Welder ManaCost:3 Types:Artifact Creature Myr PT:1/4 -S:Mode$ Continuous | Affected$ Card.Self | EffectZone$ Battlefield | GainsAbilitiesOf$ Card.IsRemembered+ExiledWithSource | GainsAbilitiesOfZones$ Exile | Description$ CARDNAME has all activated abilities of all cards exiled with it. -A:AB$ ChangeZone | Cost$ T | ValidTgts$ Artifact | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Select target artifact | RememberChanged$ True | PrecostDesc$ Imprint — | SpellDescription$ Exile target artifact card from a graveyard. +S:Mode$ Continuous | Affected$ Card.Self | EffectZone$ Battlefield | GainsAbilitiesOf$ Card.IsImprinted+ExiledWithSource | GainsAbilitiesOfZones$ Exile | Description$ CARDNAME has all activated abilities of all cards exiled with it. +A:AB$ ChangeZone | Cost$ T | ValidTgts$ Artifact | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Select target artifact | Imprint$ True | PrecostDesc$ Imprint — | SpellDescription$ Exile target artifact card from a graveyard. T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/myr_welder.jpg Oracle:Imprint — {T}: Exile target artifact card from a graveyard.\nMyr Welder has all activated abilities of all cards exiled with it. From 357f84882c93a3af8461231438ec55ce9ea49177 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 8 Dec 2018 10:50:49 +0300 Subject: [PATCH 6/6] - Fix the trigger. --- forge-gui/res/cardsfolder/m/myr_welder.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/m/myr_welder.txt b/forge-gui/res/cardsfolder/m/myr_welder.txt index 9a238f12976..8c0baa346ed 100644 --- a/forge-gui/res/cardsfolder/m/myr_welder.txt +++ b/forge-gui/res/cardsfolder/m/myr_welder.txt @@ -4,7 +4,7 @@ Types:Artifact Creature Myr PT:1/4 S:Mode$ Continuous | Affected$ Card.Self | EffectZone$ Battlefield | GainsAbilitiesOf$ Card.IsImprinted+ExiledWithSource | GainsAbilitiesOfZones$ Exile | Description$ CARDNAME has all activated abilities of all cards exiled with it. A:AB$ ChangeZone | Cost$ T | ValidTgts$ Artifact | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Select target artifact | Imprint$ True | PrecostDesc$ Imprint — | SpellDescription$ Exile target artifact card from a graveyard. -T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsImprinted+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True