From b26b6fd6d1c99ae76d488a617e61fc8deb6b0d86 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 23 Nov 2020 18:22:53 -0500 Subject: [PATCH 1/4] card script --- .../res/cardsfolder/upcoming/averna_the_chaos_bloom.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 forge-gui/res/cardsfolder/upcoming/averna_the_chaos_bloom.txt diff --git a/forge-gui/res/cardsfolder/upcoming/averna_the_chaos_bloom.txt b/forge-gui/res/cardsfolder/upcoming/averna_the_chaos_bloom.txt new file mode 100755 index 00000000000..764472efff8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/averna_the_chaos_bloom.txt @@ -0,0 +1,6 @@ +Name:Averna, the Chaos Bloom +ManaCost:G U R +Types:Legendary Creature Elemental Shaman +PT:4/2 +S:Mode$ Continuous | Affected$ You | AddKeyword$ As you cascade, you may put a land card from among the exiled cards onto the battlefield tapped. | Description$ As you cascade, you may put a land card from among the exiled cards onto the battlefield tapped. (Do this after the last card is exiled but before deciding whether to cast a nonland card.) +Oracle:As you cascade, you may put a land card from among the exiled cards onto the battlefield tapped. (Do this after the last card is exiled but before deciding whether to cast a nonland card.) From a8919e2712fccb687a89ea92e24d91d4fe2a91de Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 23 Nov 2020 18:23:49 -0500 Subject: [PATCH 2/4] Add "ImprintFound" to DigUntilEffect --- .../main/java/forge/game/ability/effects/DigUntilEffect.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java index 405e61faf3f..3ab37fa427d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java @@ -97,6 +97,7 @@ public class DigUntilEffect extends SpellAbilityEffect { } final boolean remember = sa.hasParam("RememberFound"); + final boolean imprint = sa.hasParam("ImprintFound"); final ZoneType foundDest = ZoneType.smartValueOf(sa.getParam("FoundDestination")); final int foundLibPos = AbilityUtils.calculateAmount(host, sa.getParam("FoundLibraryPosition"), sa); @@ -135,6 +136,9 @@ public class DigUntilEffect extends SpellAbilityEffect { if (remember) { host.addRemembered(c); } + if (imprint) { + host.addImprintedCard(c); + } if (found.size() == untilAmount) { break; } From c80c000b979d3fef8bdcb13863296e41a0d51e6d Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 23 Nov 2020 18:41:53 -0500 Subject: [PATCH 3/4] modify Cascade --- .../java/forge/game/card/CardFactoryUtil.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index fcebf2c75eb..ac802460ff0 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -2354,25 +2354,29 @@ public class CardFactoryUtil { inst.addTrigger(bushidoTrigger1); inst.addTrigger(bushidoTrigger2); } else if (keyword.equals("Cascade")) { - final StringBuilder trigScript = new StringBuilder( - "Mode$ SpellCast | ValidCard$ Card.Self | Secondary$ True | " + - "TriggerDescription$ Cascade - CARDNAME"); - - final String abString = "DB$ DigUntil | Defined$ You | Amount$ 1 | Valid$ " - + "Card.nonLand+cmcLTCascadeX | FoundDestination$ Exile | RevealedDestination$" - + " Exile | ImprintRevealed$ True | RememberFound$ True"; + final StringBuilder trigScript = new StringBuilder("Mode$ SpellCast | ValidCard$ Card.Self" + + " | Secondary$ True | TriggerDescription$ Cascade - CARDNAME"); + final String abString = "DB$ DigUntil | Defined$ You | Amount$ 1 | Valid$ Card.nonLand+cmcLTCascadeX" + + " | FoundDestination$ Exile | RevealedDestination$ Exile | ImprintFound$ True" + + " | RememberRevealed$ True"; SpellAbility dig = AbilityFactory.getAbility(abString, card); dig.setSVar("CascadeX", "Count$CardManaCost"); - final String dbCascadeCast = "DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True"; - AbilitySub cascadeCast = (AbilitySub)AbilityFactory.getAbility(dbCascadeCast, card); + final String dbLandPut = "DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1" + + " | Hidden$ True | Origin$ Exile | Destination$ Battlefield | ChangeType$ Land.IsRemembered" + + " | ChangeNum$ 1 | Tapped$ True | ForgetChanged$ True" + + " | SelectPrompt$ You may select a land to put on the battlefield tapped"; + AbilitySub landPut = (AbilitySub)AbilityFactory.getAbility(dbLandPut, card); + landPut.setSVar("X", "Count$Averna"); + dig.setSubAbility(landPut); - dig.setSubAbility(cascadeCast); + final String dbCascadeCast = "DB$ Play | Defined$ Imprinted | WithoutManaCost$ True | Optional$ True"; + AbilitySub cascadeCast = (AbilitySub)AbilityFactory.getAbility(dbCascadeCast, card); + landPut.setSubAbility(cascadeCast); final String dbMoveToLib = "DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted" + " | Origin$ Exile | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1"; - AbilitySub moveToLib = (AbilitySub)AbilityFactory.getAbility(dbMoveToLib, card); cascadeCast.setSubAbility(moveToLib); From d274974db10c216adbbabd33f14adbc7f0decbd5 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 23 Nov 2020 18:42:38 -0500 Subject: [PATCH 4/4] add Averna Count --- .../src/main/java/forge/game/card/CardFactoryUtil.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index ac802460ff0..de67cd42e1d 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -1175,6 +1175,11 @@ public class CardFactoryUtil { if (sq[0].contains("Threshold")) { return doXMath(Integer.parseInt(sq[cc.hasThreshold() ? 1 : 2]), m, c); } + if (sq[0].contains("Averna")) { + if (cc.hasKeyword("As you cascade, you may put a land card from among the exiled cards onto the" + + " battlefield tapped.")) { return 1; } + else return 0; + } if (sq[0].startsWith("Kicked")) { return doXMath(Integer.parseInt(sq[c.getKickerMagnitude() > 0 ? 1 : 2]), m, c); }