From 8be93d3be5f0dd12d74a021c9e0c276d4c61c307 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Wed, 12 Apr 2023 10:39:33 +0200 Subject: [PATCH 01/17] Effect cleanup can prevent any LTB trigger --- forge-game/src/main/java/forge/game/GameAction.java | 2 ++ forge-game/src/main/java/forge/game/trigger/TriggerHandler.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index de559263e22..f89eaca73d2 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1439,6 +1439,8 @@ public class GameAction { } setHoldCheckingStaticAbilities(false); + // important to collect first otherwise if a static fires it will mess up registered ones from LKI + game.getTriggerHandler().collectTriggerForWaiting(); if (game.getTriggerHandler().runWaitingTriggers()) { checkAgain = true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 8a54c840cf0..8098aeab9e3 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -180,7 +180,7 @@ public class TriggerHandler { return FileSection.parseToMap(trigParse, FileSection.DOLLAR_SIGN_KV_SEPARATOR); } - private void collectTriggerForWaiting() { + public void collectTriggerForWaiting() { for (final TriggerWaiting wt : waitingTriggers) { if (wt.getTriggers() != null) continue; From 7ab19408bd6bde41e94e1d8e1fcdb92fc536ac33 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Sat, 15 Apr 2023 08:31:00 +0200 Subject: [PATCH 02/17] Fix trigger when rolling 0 times --- .../main/java/forge/game/ability/effects/RollDiceEffect.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java index 9dc8daa1b08..428c1f1e620 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java @@ -68,6 +68,9 @@ public class RollDiceEffect extends SpellAbilityEffect { return rollDiceForPlayer(sa, player, amount, sides, 0, 0, null); } private static int rollDiceForPlayer(SpellAbility sa, Player player, int amount, int sides, int ignore, int modifier, List rollsResult) { + if (amount == 0) { + return 0; + } int advantage = getRollAdvange(player); amount += advantage; int total = 0; From ed94cc2bddc9e71ed9afbe193691cf589b985206 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 15 Apr 2023 12:50:09 +0200 Subject: [PATCH 03/17] update --- .../skyclave_aerialist_skyclave_invader.txt | 23 +++++++++++++++++++ .../upcoming/storm_the_seedcore.txt | 8 +++++++ .../cardsfolder/upcoming/stormclaw_rager.txt | 9 ++++++++ .../upcoming/swordsworn_cavalier.txt | 7 ++++++ ...arkir_duneshaper_burnished_dunestomper.txt | 17 ++++++++++++++ .../upcoming/temporal_cleansing.txt | 6 +++++ .../upcoming/tenured_oilcaster.txt | 12 ++++++++++ .../upcoming/timberland_ancient.txt | 9 ++++++++ .../upcoming/trailblazing_historian.txt | 7 ++++++ .../upcoming/unseal_the_necropolis.txt | 8 +++++++ .../cardsfolder/upcoming/urn_of_godfire.txt | 7 ++++++ .../cardsfolder/upcoming/vengeant_earth.txt | 7 ++++++ .../cardsfolder/upcoming/wary_thespian.txt | 10 ++++++++ .../cardsfolder/upcoming/wrenns_resolve.txt | 8 +++++++ .../cardsfolder/upcoming/zephyr_singer.txt | 12 ++++++++++ 15 files changed, 150 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/skyclave_aerialist_skyclave_invader.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/storm_the_seedcore.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/stormclaw_rager.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/tarkir_duneshaper_burnished_dunestomper.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/temporal_cleansing.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/tenured_oilcaster.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/timberland_ancient.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/trailblazing_historian.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/urn_of_godfire.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/wary_thespian.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/wrenns_resolve.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skyclave_aerialist_skyclave_invader.txt b/forge-gui/res/cardsfolder/upcoming/skyclave_aerialist_skyclave_invader.txt new file mode 100644 index 00000000000..160e47d7ccc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/skyclave_aerialist_skyclave_invader.txt @@ -0,0 +1,23 @@ +Name:Skyclave Aerialist +ManaCost:1 U +Types:Creature Merfolk Scout +PT:2/1 +K:Flying +A:AB$ SetState | Cost$ 4 GP | Defined$ Self | Mode$ Transform | SorcerySpeed$ True | AILogic$ Always | SpellDescription$ {4}{G/P}: Transform CARDNAME. Activate only as a sorcery. ({G/P} can be paid with either {G} or 2 life.) +AlternateMode:DoubleFaced +Oracle:{4}{G/P}: Transform Skyclave Aerialist. Activate only as a sorcery. ({G/P} can be paid with either {G} or 2 life.) + +ALTERNATE + +Name:Skyclave Invader +ManaCost:no cost +Colors:green,blue +Types:Creature Phyrexian Merfolk Scout +PT:2/4 +K:Flying +T:Mode$ Transformed | ValidCard$ Card.Self | Execute$ TrigPeek | TriggerDescription$ When this creature transforms into CARDNAME, look at the top card of your library. If it's a land card, you may put it onto the battlefield. If you don't put the card onto the battlefield, put it into your hand. +SVar:TrigPeek:DB$ PeekAndReveal | PeekAmount$ 1 | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Optional$ True | ForgetChanged$ True | Origin$ Library | Destination$ Battlefield | Defined$ Remembered | ConditionDefined$ Remembered | ConditionPresent$ Land | ConditionCompare$ GE1 | SubAbility$ DBHand +SVar:DBHand:DB$ ChangeZone | Origin$ Library | Destination$ Hand | Defined$ Remembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Flying\nWhen this creature transforms into Skyclave Invader, look at the top card of your library. If it's a land card, you may put it onto the battlefield. If you don't put the card onto the battlefield, put it into your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/storm_the_seedcore.txt b/forge-gui/res/cardsfolder/upcoming/storm_the_seedcore.txt new file mode 100644 index 00000000000..7429ffa2004 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/storm_the_seedcore.txt @@ -0,0 +1,8 @@ +Name:Storm the Seedcore +ManaCost:2 G G +Types:Sorcery +A:SP$ PutCounter | ValidTgts$ Creature.YouCtrl | TargetMin$ 0 | TargetMax$ 4 | CounterType$ P1P1 | CounterNum$ 4 | DividedAsYouChoose$ 4 | SubAbility$ DBPumpAll | SpellDescription$ Distribute four +1/+1 counters among up to four target creatures you control. +SVar:DBPumpAll:DB$ PumpAll | KW$ Vigilance & Trample | ValidCards$ Creature.YouCtrl | SpellDescription$ Creatures you control gain vigilance and trample until end of turn. +SVar:PlayMain1:TRUE +DeckHas:Ability$Counters +Oracle:Distribute four +1/+1 counters among up to four target creatures you control. Creatures you control gain vigilance and trample until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/stormclaw_rager.txt b/forge-gui/res/cardsfolder/upcoming/stormclaw_rager.txt new file mode 100644 index 00000000000..f7f3497071a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/stormclaw_rager.txt @@ -0,0 +1,9 @@ +Name:Stormclaw Rager +ManaCost:1 B R +Types:Creature Ogre Warrior +PT:2/2 +A:AB$ PutCounter | Cost$ 1 Sac<1/Creature.Other;Artifact.Other/another creature or artifact> | SubAbility$ DBDraw | SorcerySpeed$ True | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME and draw a card. Activate only as a sorcery +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 +DeckHas:Ability$Counters|Sacrifice +DeckHints:Type$Artifact +Oracle:{1}, Sacrifice another creature or artifact: Put a +1/+1 counter on Stormclaw Rager and draw a card. Activate only as a sorcery. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt new file mode 100644 index 00000000000..9006f56fb47 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt @@ -0,0 +1,7 @@ +Name:Swordsworn Cavalier +ManaCost:1 W +Types:Creature Human Knight +PT:3/1 +S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Knight.Other+ThisTurnEntered | AddKeyword$ First Strike | Description$ CARDNAME has first strike as long as another Knight entered the battlefield under your control this turn. +DeckHints:Type$Knight +Oracle:Swordsworn Cavalier has first strike as long as another Knight entered the battlefield under your control this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/tarkir_duneshaper_burnished_dunestomper.txt b/forge-gui/res/cardsfolder/upcoming/tarkir_duneshaper_burnished_dunestomper.txt new file mode 100644 index 00000000000..fa23fe5a8d0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tarkir_duneshaper_burnished_dunestomper.txt @@ -0,0 +1,17 @@ +Name:Tarkir Duneshaper +ManaCost:W +Types:Creature Dog Warrior +PT:1/2 +A:AB$ SetState | Cost$ 4 GP | Defined$ Self | Mode$ Transform | SorcerySpeed$ True | AILogic$ Always | SpellDescription$ Transform CARDNAME. Activate only as a sorcery. ({G/P} can be paid with either {G} or 2 life.) +AlternateMode:DoubleFaced +Oracle:{4}{G/P}: Transform Tarkir Duneshaper. Activate only as a sorcery. ({G/P} can be paid with either {G} or 2 life.) + +ALTERNATE + +Name:Burnished Dunestomper +ManaCost:no cost +Colors:green,white +Types:Creature Phyrexian Dog Warrior +PT:4/3 +K:Trample +Oracle:Trample \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/temporal_cleansing.txt b/forge-gui/res/cardsfolder/upcoming/temporal_cleansing.txt new file mode 100644 index 00000000000..7c7c049446c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/temporal_cleansing.txt @@ -0,0 +1,6 @@ +Name:Temporal Cleansing +ManaCost:3 U +Types:Sorcery +K:Convoke +A:SP$ ChangeZone | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | AlternativeDecider$ TargetedOwner | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 1 | DestinationAlternative$ Library | LibraryPositionAlternative$ -1 | AlternativeDestinationMessage$ Would you like to put the card second from the top of your library (and not on the bottom)? | SpellDescription$ The owner of target nonland permanent puts it into their library second from the top or on the bottom. +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nThe owner of target nonland permanent puts it into their library second from the top or on the bottom. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/tenured_oilcaster.txt b/forge-gui/res/cardsfolder/upcoming/tenured_oilcaster.txt new file mode 100644 index 00000000000..3c4b568b044 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tenured_oilcaster.txt @@ -0,0 +1,12 @@ +Name:Tenured Oilcaster +ManaCost:3 B +Types:Creature Phyrexian Wizard +PT:2/4 +K:Menace +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 3 | CheckSVar$ X | SVarCompare$ GE8 | Description$ CARDNAME gets +3/+0 as long as an opponent has eight or more cards in their graveyard. +SVar:X:PlayerCountOpponents$HighestCardsInGraveyard +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigMill | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks or blocks, each player mills a card. +T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigMill | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME attacks or blocks, each player mills a card. +SVar:TrigMill:DB$ Mill | Defined$ Player | NumCards$ 1 +DeckHas:Ability$Mill +Oracle:Menace (This creature can't be blocked except by two or more creatures.)\nTenured Oilcaster gets +3/+0 as long as an opponent has eight or more cards in their graveyard.\nWhenever Tenured Oilcaster attacks or blocks, each player mills a card. diff --git a/forge-gui/res/cardsfolder/upcoming/timberland_ancient.txt b/forge-gui/res/cardsfolder/upcoming/timberland_ancient.txt new file mode 100644 index 00000000000..88689ded647 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/timberland_ancient.txt @@ -0,0 +1,9 @@ +Name:Timberland Ancient +ManaCost:4 G G +Types:Creature Treefolk +PT:6/5 +K:Reach +K:Trample +K:TypeCycling:Forest:2 +DeckHas:Ability$Discard +Oracle:Reach, trample\nForestcycling {2} ({2}, Discard this card: Search your library for a Forest card, reveal it, put it into your hand, then shuffle.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/trailblazing_historian.txt b/forge-gui/res/cardsfolder/upcoming/trailblazing_historian.txt new file mode 100644 index 00000000000..b07dba1fc54 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/trailblazing_historian.txt @@ -0,0 +1,7 @@ +Name:Trailblazing Historian +ManaCost:1 R +Types:Creature Human Shaman +PT:1/3 +K:Haste +A:AB$ Pump | Cost$ T | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | KW$ Haste | SpellDescription$ Another target creature gains haste until end of turn. +Oracle:Haste\n{T}: Another target creature gains haste until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt b/forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt new file mode 100644 index 00000000000..1ad0ae6b09f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt @@ -0,0 +1,8 @@ +Name:Unseal the Necropolis +ManaCost:2 B +Types:Instant +A:SP$ Mill | NumCards$ 3 | Defined$ Player | SubAbility$ DBChangeZone | SpellDescription$ Each player mills three cards. Then you return up to two creature cards from your graveyard to your hand. (To mill three cards, a player puts the top three cards of their library into their graveyard.) +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 2 | ChangeType$ Creature.YouOwn | SelectPrompt$ Select up to two creature cards from your graveyard to return to your hand | Hidden$ True | SubAbility$ DBExile | StackDescription$ {p:You} returns up to two creature cards from their graveyard to their hand. +SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | StackDescription$ Exile CARDNAME. +DeckHas:Ability$Graveyard|Mill +Oracle:Each player mills three cards. Then you return up to two creature cards from your graveyard to your hand. (To mill three cards, a player puts the top three cards of their library into their graveyard.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/urn_of_godfire.txt b/forge-gui/res/cardsfolder/upcoming/urn_of_godfire.txt new file mode 100644 index 00000000000..15f066ad2e4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/urn_of_godfire.txt @@ -0,0 +1,7 @@ +Name:Urn of Godfire +ManaCost:1 +Types:Artifact +A:AB$ Mana | Cost$ 2 | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color. +A:AB$ Destroy | Cost$ 6 T Sac<1/CARDNAME> | ValidTgts$ Creature,Enchantment | TgtPrompt$ Select target creature or enchantment | SpellDescription$ Destroy target creature or enchantment. +DeckHas:Ability$Sacrifice +Oracle:{2}: Add one mana of any color.\n{6}, {T}, Sacrifice Urn of Godfire: Destroy target creature or enchantment. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt b/forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt new file mode 100644 index 00000000000..0f4648b516d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt @@ -0,0 +1,7 @@ +Name:Vengeant Earth +ManaCost:1 G +Types:Instant +A:SP$ Animate | ValidTgts$ Land.YouCtrl,Creature.YouCtrl | TgtPrompt$ Select target creature or land you control | Power$ 4 | Toughness$ 4 | Types$ Creature,Elemental | Keywords$ Haste | SubAbility$ MustBeBlocked | SpellDescription$ Target creature or land you control becomes a 4/4 Elemental creature with haste in addition to its other types until end of turn. It must be blocked this turn if able. +SVar:MustBeBlocked:DB$ Pump | Defined$ Targeted | KW$ HIDDEN CARDNAME must be blocked if able. +DeckHas:Type$Elemental +Oracle:Target creature or land you control becomes a 4/4 Elemental creature with haste in addition to its other types until end of turn. It must be blocked this turn if able. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/wary_thespian.txt b/forge-gui/res/cardsfolder/upcoming/wary_thespian.txt new file mode 100644 index 00000000000..5f15dee666a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wary_thespian.txt @@ -0,0 +1,10 @@ +Name:Wary Thespian +ManaCost:1 G +Types:Creature Cat Druid +PT:3/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerDescription$ When CARDNAME enters the battlefield or dies, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSurveil | Secondary$ True | TriggerDescription$ When CARDNAME enters the battlefield or dies, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) +SVar:TrigSurveil:DB$ Surveil | Amount$ 1 +SVar:SacMe:1 +DeckHas:Ability$Graveyard +Oracle:When Wary Thespian enters the battlefield or dies, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/wrenns_resolve.txt b/forge-gui/res/cardsfolder/upcoming/wrenns_resolve.txt new file mode 100644 index 00000000000..e3ebec020ad --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wrenns_resolve.txt @@ -0,0 +1,8 @@ +Name:Wrenn's Resolve +ManaCost:1 R +Types:Sorcery +A:SP$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top two cards of your library. Until the end of your next turn, you may play those cards. +SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | Duration$ UntilTheEndOfYourNextTurn +SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play the exiled cards. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Exile the top two cards of your library. Until the end of your next turn, you may play those cards. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt b/forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt new file mode 100644 index 00000000000..1a647522d2a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt @@ -0,0 +1,12 @@ +Name:Zephyr Singer +ManaCost:2 U U +Types:Creature Siren Pirate +PT:3/4 +K:Convoke +K:Flying +K:Vigilance +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounterAll | TriggerDescription$ When CARDNAME enters the battlefield, put a flying counter on each creature that convoked it. +SVar:TrigPutCounterAll:DB$ PutCounter | Defined$ Convoked | CounterType$ Flying | CounterNum$ 1 | AILogic$ Always +DeckNeeds:Keyword$Convoke +DeckHas:Ability$Counters +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nFlying, vigilance\nWhen Zephyr Singer enters the battlefield, put a flying counter on each creature that convoked it. \ No newline at end of file From 98a18b3ce7f82a10511d79b4ba42e8e945c86c96 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 15 Apr 2023 13:28:26 +0200 Subject: [PATCH 04/17] update --- forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt | 2 +- forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt index 9006f56fb47..0bea9b24e2c 100644 --- a/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt +++ b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt @@ -2,6 +2,6 @@ Name:Swordsworn Cavalier ManaCost:1 W Types:Creature Human Knight PT:3/1 -S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Knight.Other+ThisTurnEntered | AddKeyword$ First Strike | Description$ CARDNAME has first strike as long as another Knight entered the battlefield under your control this turn. +S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Knight.StrictlyOther+ThisTurnEntered | AddKeyword$ First Strike | Description$ CARDNAME has first strike as long as another Knight entered the battlefield under your control this turn. DeckHints:Type$Knight Oracle:Swordsworn Cavalier has first strike as long as another Knight entered the battlefield under your control this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt b/forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt index 1ad0ae6b09f..95cbbaabd9c 100644 --- a/forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt +++ b/forge-gui/res/cardsfolder/upcoming/unseal_the_necropolis.txt @@ -2,7 +2,6 @@ Name:Unseal the Necropolis ManaCost:2 B Types:Instant A:SP$ Mill | NumCards$ 3 | Defined$ Player | SubAbility$ DBChangeZone | SpellDescription$ Each player mills three cards. Then you return up to two creature cards from your graveyard to your hand. (To mill three cards, a player puts the top three cards of their library into their graveyard.) -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 2 | ChangeType$ Creature.YouOwn | SelectPrompt$ Select up to two creature cards from your graveyard to return to your hand | Hidden$ True | SubAbility$ DBExile | StackDescription$ {p:You} returns up to two creature cards from their graveyard to their hand. -SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | StackDescription$ Exile CARDNAME. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 2 | ChangeType$ Creature.YouOwn | SelectPrompt$ Select up to two creature cards from your graveyard to return to your hand | Hidden$ True | StackDescription$ {p:You} returns up to two creature cards from their graveyard to their hand. DeckHas:Ability$Graveyard|Mill Oracle:Each player mills three cards. Then you return up to two creature cards from your graveyard to your hand. (To mill three cards, a player puts the top three cards of their library into their graveyard.) \ No newline at end of file From 93c79f62ad86e1255c3fa90b51d1c11b239f3fb7 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 15 Apr 2023 22:41:11 +0200 Subject: [PATCH 05/17] Update zephyr_singer.txt --- forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt b/forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt index 1a647522d2a..e55f410f1d6 100644 --- a/forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt +++ b/forge-gui/res/cardsfolder/upcoming/zephyr_singer.txt @@ -7,6 +7,5 @@ K:Flying K:Vigilance T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounterAll | TriggerDescription$ When CARDNAME enters the battlefield, put a flying counter on each creature that convoked it. SVar:TrigPutCounterAll:DB$ PutCounter | Defined$ Convoked | CounterType$ Flying | CounterNum$ 1 | AILogic$ Always -DeckNeeds:Keyword$Convoke DeckHas:Ability$Counters -Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nFlying, vigilance\nWhen Zephyr Singer enters the battlefield, put a flying counter on each creature that convoked it. \ No newline at end of file +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nFlying, vigilance\nWhen Zephyr Singer enters the battlefield, put a flying counter on each creature that convoked it. From 02fe7fbb33abbea424cccb1239ef0c383d0b0fda Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 15 Apr 2023 22:42:10 +0200 Subject: [PATCH 06/17] Update vengeant_earth.txt --- forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt b/forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt index 0f4648b516d..66ce283fe44 100644 --- a/forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt +++ b/forge-gui/res/cardsfolder/upcoming/vengeant_earth.txt @@ -1,7 +1,6 @@ Name:Vengeant Earth ManaCost:1 G Types:Instant -A:SP$ Animate | ValidTgts$ Land.YouCtrl,Creature.YouCtrl | TgtPrompt$ Select target creature or land you control | Power$ 4 | Toughness$ 4 | Types$ Creature,Elemental | Keywords$ Haste | SubAbility$ MustBeBlocked | SpellDescription$ Target creature or land you control becomes a 4/4 Elemental creature with haste in addition to its other types until end of turn. It must be blocked this turn if able. -SVar:MustBeBlocked:DB$ Pump | Defined$ Targeted | KW$ HIDDEN CARDNAME must be blocked if able. +A:SP$ Animate | ValidTgts$ Land.YouCtrl,Creature.YouCtrl | TgtPrompt$ Select target creature or land you control | Power$ 4 | Toughness$ 4 | Types$ Creature,Elemental | Keywords$ Haste | HiddenKeywords$ CARDNAME must be blocked if able. | SpellDescription$ Target creature or land you control becomes a 4/4 Elemental creature with haste in addition to its other types until end of turn. It must be blocked this turn if able. DeckHas:Type$Elemental -Oracle:Target creature or land you control becomes a 4/4 Elemental creature with haste in addition to its other types until end of turn. It must be blocked this turn if able. \ No newline at end of file +Oracle:Target creature or land you control becomes a 4/4 Elemental creature with haste in addition to its other types until end of turn. It must be blocked this turn if able. From 18d010c0002d1ea9065935a97c066259d9afcc69 Mon Sep 17 00:00:00 2001 From: Alwayssnarky <126915043+EldritchBimbo@users.noreply.github.com> Date: Tue, 18 Apr 2023 17:23:26 -0400 Subject: [PATCH 07/17] Playable Leonin Update Adds: .Playable Leonin race at parity with other options. (2 animation sets, 20 portraits.) Changes: .Adds new portraits to avatar .png. .Edits avatar.atlas and heroes.json to accommodate new options. --- .../Shandalar/sprites/heroes/avatar.atlas | 62 ++- .../Shandalar/sprites/heroes/avatar.png | Bin 48157 -> 54963 bytes .../Shandalar/sprites/heroes/leonin_f.atlas | 485 ++++++++++++++++++ .../Shandalar/sprites/heroes/leonin_f.png | Bin 0 -> 11004 bytes .../Shandalar/sprites/heroes/leonin_m.atlas | 485 ++++++++++++++++++ .../Shandalar/sprites/heroes/leonin_m.png | Bin 0 -> 12120 bytes .../res/adventure/Shandalar/world/heroes.json | 9 +- 7 files changed, 1039 insertions(+), 2 deletions(-) create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.atlas create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.png create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas index 98a0d34f9e0..31dbe1d4fa9 100644 --- a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas +++ b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas @@ -602,4 +602,64 @@ Werewolf_f size: 16, 16 Werewolf_f size: 16, 16 - xy: 144, 304 \ No newline at end of file + xy: 144, 304 +Leonin_m + xy: 0, 320 + size: 16, 16 +Leonin_m + xy: 16, 320 + size: 16, 16 +Leonin_m + xy: 32, 320 + size: 16, 16 +Leonin_m + xy: 48, 320 + size: 16, 16 +Leonin_m + xy: 64, 320 + size: 16, 16 +Leonin_m + xy: 80, 320 + size: 16, 16 +Leonin_m + xy: 96, 320 + size: 16, 16 +Leonin_m + xy: 112, 320 + size: 16, 16 +Leonin_m + xy: 128, 320 + size: 16, 16 +Leonin_m + xy: 144, 320 + size: 16, 16 +Leonin_f + xy: 0, 336 + size: 16, 16 +Leonin_f + xy: 16, 336 + size: 16, 16 +Leonin_f + xy: 32, 336 + size: 16, 16 +Leonin_f + xy: 48, 336 + size: 16, 16 +Leonin_f + xy: 64, 336 + size: 16, 16 +Leonin_f + xy: 80, 336 + size: 16, 16 +Leonin_f + xy: 96, 336 + size: 16, 16 +Leonin_f + xy: 112, 336 + size: 16, 16 +Leonin_f + xy: 128, 336 + size: 16, 16 +Leonin_f + size: 16, 16 + xy: 144, 336 \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png index 0af59e078d241d1d47f244cac9702a22d7b67cb8..224d0baa5b5081cc1bb47b19530fa34a95c34467 100644 GIT binary patch delta 54760 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%0Af9c8V#(1=RJZd)ysGEgxJGm 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

<-ew0(l5{=Ez_u~8>o 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 delta 47985 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 Tc{}eHx8A;Kq*tzM7xq5@p%T}Z literal 0 HcmV?d00001 diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas new file mode 100644 index 00000000000..9b20c089895 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas @@ -0,0 +1,485 @@ +leonin_m.png +size: 64,96 +format: RGBA8888 +filter: Nearest,Nearest +repeat: none +IdleRight + xy: 0, 0 + size: 16, 16 +IdleRight + xy: 16, 0 + size: 16, 16 +IdleRight + xy: 32, 0 + size: 16, 16 +IdleRight + xy: 48, 0 + size: 16, 16 +IdleRightDown + xy: 64, 0 + size: 16, 16 +IdleRightDown + xy: 80, 0 + size: 16, 16 +IdleRightDown + xy: 96, 0 + size: 16, 16 +IdleRightDown + xy: 112, 0 + size: 16, 16 +IdleDown + xy: 128, 0 + size: 16, 16 +IdleDown + xy: 144, 0 + size: 16, 16 +IdleDown + xy: 160, 0 + size: 16, 16 +IdleDown + xy: 176, 0 + size: 16, 16 +IdleLeftDown + xy: 192, 0 + size: 16, 16 +IdleLeftDown + xy: 208, 0 + size: 16, 16 +IdleLeftDown + xy: 224, 0 + size: 16, 16 +IdleLeftDown + xy: 240, 0 + size: 16, 16 +IdleLeft + xy: 256, 0 + size: 16, 16 +IdleLeft + xy: 272, 0 + size: 16, 16 +IdleLeft + xy: 288, 0 + size: 16, 16 +IdleLeft + xy: 304, 0 + size: 16, 16 +IdleLeftUp + xy: 320, 0 + size: 16, 16 +IdleLeftUp + xy: 336, 0 + size: 16, 16 +IdleLeftUp + xy: 352, 0 + size: 16, 16 +IdleLeftUp + xy: 368, 0 + size: 16, 16 +IdleUp + xy: 384, 0 + size: 16, 16 +IdleUp + xy: 400, 0 + size: 16, 16 +IdleUp + xy: 416, 0 + size: 16, 16 +IdleUp + xy: 432, 0 + size: 16, 16 +IdleRightUp + xy: 448, 0 + size: 16, 16 +IdleRightUp + xy: 464, 0 + size: 16, 16 +IdleRightUp + xy: 480, 0 + size: 16, 16 +IdleRightUp + xy: 496, 0 + size: 16, 16 +WalkRight + xy: 0, 16 + size: 16, 16 +WalkRight + xy: 16, 16 + size: 16, 16 +WalkRight + xy: 32, 16 + size: 16, 16 +WalkRight + xy: 48, 16 + size: 16, 16 +WalkRightDown + xy: 64, 16 + size: 16, 16 +WalkRightDown + xy: 80, 16 + size: 16, 16 +WalkRightDown + xy: 96, 16 + size: 16, 16 +WalkRightDown + xy: 112, 16 + size: 16, 16 +WalkDown + xy: 128, 16 + size: 16, 16 +WalkDown + xy: 144, 16 + size: 16, 16 +WalkDown + xy: 160, 16 + size: 16, 16 +WalkDown + xy: 176, 16 + size: 16, 16 +WalkLeftDown + xy: 192, 16 + size: 16, 16 +WalkLeftDown + xy: 208, 16 + size: 16, 16 +WalkLeftDown + xy: 224, 16 + size: 16, 16 +WalkLeftDown + xy: 240, 16 + size: 16, 16 +WalkLeft + xy: 256, 16 + size: 16, 16 +WalkLeft + xy: 272, 16 + size: 16, 16 +WalkLeft + xy: 288, 16 + size: 16, 16 +WalkLeft + xy: 304, 16 + size: 16, 16 +WalkLeftUp + xy: 320, 16 + size: 16, 16 +WalkLeftUp + xy: 336, 16 + size: 16, 16 +WalkLeftUp + xy: 352, 16 + size: 16, 16 +WalkLeftUp + xy: 368, 16 + size: 16, 16 +WalkUp + xy: 384, 16 + size: 16, 16 +WalkUp + xy: 400, 16 + size: 16, 16 +WalkUp + xy: 416, 16 + size: 16, 16 +WalkUp + xy: 432, 16 + size: 16, 16 +WalkRightUp + xy: 448, 16 + size: 16, 16 +WalkRightUp + xy: 464, 16 + size: 16, 16 +WalkRightUp + xy: 480, 16 + size: 16, 16 +WalkRightUp + xy: 496, 16 + size: 16, 16 +AttackRight + xy: 0, 32 + size: 16, 16 +AttackRight + xy: 16, 32 + size: 16, 16 +AttackRight + xy: 32, 32 + size: 16, 16 +AttackRight + xy: 48, 32 + size: 16, 16 +AttackRightDown + xy: 64, 32 + size: 16, 16 +AttackRightDown + xy: 80, 32 + size: 16, 16 +AttackRightDown + xy: 96, 32 + size: 16, 16 +AttackRightDown + xy: 112, 32 + size: 16, 16 +AttackDown + xy: 128, 32 + size: 16, 16 +AttackDown + xy: 144, 32 + size: 16, 16 +AttackDown + xy: 160, 32 + size: 16, 16 +AttackDown + xy: 176, 32 + size: 16, 16 +AttackLeftDown + xy: 192, 32 + size: 16, 16 +AttackLeftDown + xy: 208, 32 + size: 16, 16 +AttackLeftDown + xy: 224, 32 + size: 16, 16 +AttackLeftDown + xy: 240, 32 + size: 16, 16 +AttackLeft + xy: 256, 32 + size: 16, 16 +AttackLeft + xy: 272, 32 + size: 16, 16 +AttackLeft + xy: 288, 32 + size: 16, 16 +AttackLeft + xy: 304, 32 + size: 16, 16 +AttackLeftUp + xy: 320, 32 + size: 16, 16 +AttackLeftUp + xy: 336, 32 + size: 16, 16 +AttackLeftUp + xy: 352, 32 + size: 16, 16 +AttackLeftUp + xy: 368, 32 + size: 16, 16 +AttackUp + xy: 384, 32 + size: 16, 16 +AttackUp + xy: 400, 32 + size: 16, 16 +AttackUp + xy: 416, 32 + size: 16, 16 +AttackUp + xy: 432, 32 + size: 16, 16 +AttackRightUp + xy: 448, 32 + size: 16, 16 +AttackRightUp + xy: 464, 32 + size: 16, 16 +AttackRightUp + xy: 480, 32 + size: 16, 16 +AttackRightUp + xy: 496, 32 + size: 16, 16 +HitRight + xy: 0, 48 + size: 16, 16 +HitRight + xy: 16, 48 + size: 16, 16 +HitRight + xy: 32, 48 + size: 16, 16 +HitRight + xy: 48, 48 + size: 16, 16 +HitRightDown + xy: 64, 48 + size: 16, 16 +HitRightDown + xy: 80, 48 + size: 16, 16 +HitRightDown + xy: 96, 48 + size: 16, 16 +HitRightDown + xy: 112, 48 + size: 16, 16 +HitDown + xy: 128, 48 + size: 16, 16 +HitDown + xy: 144, 48 + size: 16, 16 +HitDown + xy: 160, 48 + size: 16, 16 +HitDown + xy: 176, 48 + size: 16, 16 +HitLeftDown + xy: 192, 48 + size: 16, 16 +HitLeftDown + xy: 208, 48 + size: 16, 16 +HitLeftDown + xy: 224, 48 + size: 16, 16 +HitLeftDown + xy: 240, 48 + size: 16, 16 +HitLeft + xy: 256, 48 + size: 16, 16 +HitLeft + xy: 272, 48 + size: 16, 16 +HitLeft + xy: 288, 48 + size: 16, 16 +HitLeft + xy: 304, 48 + size: 16, 16 +HitLeftUp + xy: 320, 48 + size: 16, 16 +HitLeftUp + xy: 336, 48 + size: 16, 16 +HitLeftUp + xy: 352, 48 + size: 16, 16 +HitLeftUp + xy: 368, 48 + size: 16, 16 +HitUp + xy: 384, 48 + size: 16, 16 +HitUp + xy: 400, 48 + size: 16, 16 +HitUp + xy: 416, 48 + size: 16, 16 +HitUp + xy: 432, 48 + size: 16, 16 +HitRightUp + xy: 448, 48 + size: 16, 16 +HitRightUp + xy: 464, 48 + size: 16, 16 +HitRightUp + xy: 480, 48 + size: 16, 16 +HitRightUp + xy: 496, 48 + size: 16, 16 +DeathRight + xy: 0, 64 + size: 16, 16 +DeathRight + xy: 16, 64 + size: 16, 16 +DeathRight + xy: 32, 64 + size: 16, 16 +DeathRight + xy: 48, 64 + size: 16, 16 +DeathRightDown + xy: 64, 64 + size: 16, 16 +DeathRightDown + xy: 80, 64 + size: 16, 16 +DeathRightDown + xy: 96, 64 + size: 16, 16 +DeathRightDown + xy: 112, 64 + size: 16, 16 +DeathDown + xy: 128, 64 + size: 16, 16 +DeathDown + xy: 144, 64 + size: 16, 16 +DeathDown + xy: 160, 64 + size: 16, 16 +DeathDown + xy: 176, 64 + size: 16, 16 +DeathLeftDown + xy: 192, 64 + size: 16, 16 +DeathLeftDown + xy: 208, 64 + size: 16, 16 +DeathLeftDown + xy: 224, 64 + size: 16, 16 +DeathLeftDown + xy: 240, 64 + size: 16, 16 +DeathLeft + xy: 256, 64 + size: 16, 16 +DeathLeft + xy: 272, 64 + size: 16, 16 +DeathLeft + xy: 288, 64 + size: 16, 16 +DeathLeft + xy: 304, 64 + size: 16, 16 +DeathLeftUp + xy: 320, 64 + size: 16, 16 +DeathLeftUp + xy: 336, 64 + size: 16, 16 +DeathLeftUp + xy: 352, 64 + size: 16, 16 +DeathLeftUp + xy: 368, 64 + size: 16, 16 +DeathUp + xy: 384, 64 + size: 16, 16 +DeathUp + xy: 400, 64 + size: 16, 16 +DeathUp + xy: 416, 64 + size: 16, 16 +DeathUp + xy: 432, 64 + size: 16, 16 +DeathRightUp + xy: 448, 64 + size: 16, 16 +DeathRightUp + xy: 464, 64 + size: 16, 16 +DeathRightUp + xy: 480, 64 + size: 16, 16 +DeathRightUp + xy: 496, 64 + size: 16, 16 \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f40a85e8befd54a38c5a070b4336f0418a8db3 GIT binary patch literal 12120 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 Bl@kB} literal 0 HcmV?d00001 diff --git a/forge-gui/res/adventure/Shandalar/world/heroes.json b/forge-gui/res/adventure/Shandalar/world/heroes.json index 28747eba3e3..36d01af3b11 100644 --- a/forge-gui/res/adventure/Shandalar/world/heroes.json +++ b/forge-gui/res/adventure/Shandalar/world/heroes.json @@ -70,7 +70,14 @@ "male":"sprites/heroes/werewolf_m.atlas", "femaleAvatar":"Werewolf_f", "maleAvatar":"Werewolf_m" - } + }, + { + "name":"Leonin", + "female":"sprites/heroes/leonin_f.atlas", + "male":"sprites/heroes/leonin_m.atlas", + "femaleAvatar":"Leonin_f", + "maleAvatar":"Leonin_m" + } ] From e479085ff5b1a437237b52a2ac5a8cd7df95eca0 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Wed, 19 Apr 2023 18:43:12 +0200 Subject: [PATCH 08/17] Update swordsworn_cavalier.txt --- forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt index 0bea9b24e2c..67560a519c7 100644 --- a/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt +++ b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt @@ -2,6 +2,6 @@ Name:Swordsworn Cavalier ManaCost:1 W Types:Creature Human Knight PT:3/1 -S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Knight.StrictlyOther+ThisTurnEntered | AddKeyword$ First Strike | Description$ CARDNAME has first strike as long as another Knight entered the battlefield under your control this turn. +S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Knight.StrictlyOther+ThisTurnEntered+YouCtrl | AddKeyword$ First Strike | Description$ CARDNAME has first strike as long as another Knight entered the battlefield under your control this turn. DeckHints:Type$Knight -Oracle:Swordsworn Cavalier has first strike as long as another Knight entered the battlefield under your control this turn. \ No newline at end of file +Oracle:Swordsworn Cavalier has first strike as long as another Knight entered the battlefield under your control this turn. From f05c365480ae73d85c4baec186afa93268a9d037 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Wed, 19 Apr 2023 18:54:02 +0200 Subject: [PATCH 09/17] Update swordsworn_cavalier.txt --- forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt index 67560a519c7..48cf1e51e32 100644 --- a/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt +++ b/forge-gui/res/cardsfolder/upcoming/swordsworn_cavalier.txt @@ -2,6 +2,6 @@ Name:Swordsworn Cavalier ManaCost:1 W Types:Creature Human Knight PT:3/1 -S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Knight.StrictlyOther+ThisTurnEntered+YouCtrl | AddKeyword$ First Strike | Description$ CARDNAME has first strike as long as another Knight entered the battlefield under your control this turn. +S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Knight.StrictlyOther+ThisTurnEntered+EnteredUnder You | AddKeyword$ First Strike | Description$ CARDNAME has first strike as long as another Knight entered the battlefield under your control this turn. DeckHints:Type$Knight Oracle:Swordsworn Cavalier has first strike as long as another Knight entered the battlefield under your control this turn. From 72a073056095b8c31d73679f42eb0be938331be8 Mon Sep 17 00:00:00 2001 From: TRT <> Date: Fri, 21 Apr 2023 11:11:30 +0200 Subject: [PATCH 10/17] Prettify Any TgtPrompt --- .../forge/game/ability/AbilityFactory.java | 22 ++++++++++++------- .../main/java/forge/game/card/CardUtil.java | 2 +- .../cardsfolder/b/bonecrusher_giant_stomp.txt | 2 +- forge-gui/res/cardsfolder/c/candles_glow.txt | 2 +- .../res/cardsfolder/d/dragon_tempest.txt | 2 +- forge-gui/res/cardsfolder/f/flesh_blood.txt | 2 +- forge-gui/res/cardsfolder/f/foundry_helix.txt | 2 +- .../i/ill_tempered_loner_howlpack_avenger.txt | 4 ++-- .../res/cardsfolder/i/improvised_weaponry.txt | 2 +- .../res/cardsfolder/k/karplusan_hound.txt | 2 +- .../res/cardsfolder/k/karplusan_minotaur.txt | 2 +- .../cardsfolder/k/klement_novice_acolyte.txt | 2 +- .../res/cardsfolder/l/lightning_bolt.txt | 2 +- .../cardsfolder/l/lozhan_dragons_legacy.txt | 2 +- .../res/cardsfolder/o/ordeal_of_purphoros.txt | 2 +- .../res/cardsfolder/p/prophetic_titan.txt | 2 +- .../cardsfolder/r/rumbling_aftershocks.txt | 2 +- .../cardsfolder/s/scars_of_the_veteran.txt | 2 +- .../res/cardsfolder/s/scourge_of_valkas.txt | 2 +- .../res/cardsfolder/s/searing_meditation.txt | 2 +- .../cardsfolder/s/shieldmates_blessing.txt | 2 +- forge-gui/res/cardsfolder/s/souls_fire.txt | 2 +- forge-gui/res/cardsfolder/s/spare_dagger.txt | 2 +- forge-gui/res/cardsfolder/s/spitemare.txt | 2 +- .../s/syrix_carrier_of_the_flame.txt | 2 +- .../res/cardsfolder/t/tiger_tribe_hunter.txt | 2 +- .../upcoming/chandra_hopes_beacon.txt | 2 +- .../upcoming/voldaren_thrilseeker.txt | 4 ++-- .../res/cardsfolder/w/wrathful_red_dragon.txt | 2 +- 29 files changed, 44 insertions(+), 38 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java index 1ba523a1cd9..c1e436731b9 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java @@ -332,15 +332,21 @@ public final class AbilityFactory { // TgtPrompt should only be needed for more complicated ValidTgts String tgtWhat = mapParams.get("ValidTgts"); - final String[] commonStuff = new String[] { - //list of common one word non-core type ValidTgts that should be lowercase in the target prompt - "Player", "Opponent", "Card", "Spell", "Permanent" - }; - if (Arrays.asList(commonStuff).contains(tgtWhat) || CardType.CoreType.isValidEnum(tgtWhat)) { - tgtWhat = tgtWhat.toLowerCase(); + final String prompt; + if (mapParams.containsKey("TgtPrompt")) { + prompt = mapParams.get("TgtPrompt"); + } else if (tgtWhat.equals("Any")) { + prompt = "Select any target"; + } else { + final String[] commonStuff = new String[] { + //list of common one word non-core type ValidTgts that should be lowercase in the target prompt + "Player", "Opponent", "Card", "Spell", "Permanent" + }; + if (Arrays.asList(commonStuff).contains(tgtWhat) || CardType.CoreType.isValidEnum(tgtWhat)) { + tgtWhat = tgtWhat.toLowerCase(); + } + prompt = "Select target " + tgtWhat; } - final String prompt = mapParams.containsKey("TgtPrompt") ? mapParams.get("TgtPrompt") : - "Select target " + tgtWhat; TargetRestrictions abTgt = new TargetRestrictions(prompt, mapParams.get("ValidTgts").split(","), min, max); diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index 3190661404d..972c6f67a25 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -203,7 +203,7 @@ public final class CardUtil { newCopy.getCurrentState().copyFrom(in.getState(in.getFaceupCardStateName()), true); if (in.isFaceDown()) { newCopy.turnFaceDownNoUpdate(); - newCopy.setType(new CardType(in.getType())); + newCopy.setType(new CardType(in.getCurrentState().getType())); // prevent StackDescription from revealing face newCopy.updateStateForView(); } diff --git a/forge-gui/res/cardsfolder/b/bonecrusher_giant_stomp.txt b/forge-gui/res/cardsfolder/b/bonecrusher_giant_stomp.txt index a788fad0283..398bdeec443 100644 --- a/forge-gui/res/cardsfolder/b/bonecrusher_giant_stomp.txt +++ b/forge-gui/res/cardsfolder/b/bonecrusher_giant_stomp.txt @@ -14,5 +14,5 @@ ManaCost:1 R Types:Instant Adventure A:SP$ Effect | Cost$ 1 R | Name$ Stomp Effect | StaticAbilities$ STCantPrevent | AILogic$ Burn | SubAbility$ DBDamage | SpellDescription$ Damage can't be prevented this turn. CARDNAME deals 2 damage to any target. SVar:STCantPrevent:Mode$ CantPreventDamage | EffectZone$ Command | Description$ Damage can't be prevented. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker,Creature | TgtPrompt$ Select any target | NumDmg$ 2 | NoPrevention$ True +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 2 | NoPrevention$ True Oracle:Damage can't be prevented this turn. Stomp deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/candles_glow.txt b/forge-gui/res/cardsfolder/c/candles_glow.txt index 5e7cce11711..216f70617af 100644 --- a/forge-gui/res/cardsfolder/c/candles_glow.txt +++ b/forge-gui/res/cardsfolder/c/candles_glow.txt @@ -2,7 +2,7 @@ Name:Candles' Glow ManaCost:1 W Types:Instant Arcane K:Splice:Arcane:1 W -A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Any | Amount$ 3 | PreventionSubAbility$ GlowOfLife | ShieldEffectTarget$ You | TgtPrompt$ Select any target | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. You gain life equal to the damage prevented this way. +A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Any | Amount$ 3 | PreventionSubAbility$ GlowOfLife | ShieldEffectTarget$ You | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. You gain life equal to the damage prevented this way. SVar:GlowOfLife:DB$ GainLife | Defined$ ShieldEffectTarget | LifeAmount$ PreventedDamage | SpellDescription$ You gain life equal to the damage prevented this way. DeckHints:Type$Arcane Oracle:Prevent the next 3 damage that would be dealt to any target this turn. You gain life equal to the damage prevented this way.\nSplice onto Arcane {1}{W} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) diff --git a/forge-gui/res/cardsfolder/d/dragon_tempest.txt b/forge-gui/res/cardsfolder/d/dragon_tempest.txt index 93c687f4d5a..a8befc05cde 100644 --- a/forge-gui/res/cardsfolder/d/dragon_tempest.txt +++ b/forge-gui/res/cardsfolder/d/dragon_tempest.txt @@ -4,7 +4,7 @@ Types:Enchantment T:Mode$ ChangesZone | ValidCard$ Creature.YouCtrl+withFlying | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature with flying enters the battlefield under your control, it gains haste until end of turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | KW$ Haste T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ NumDragons | TgtPrompt$ Select any target | DamageSource$ TriggeredCard +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ NumDragons | DamageSource$ TriggeredCard SVar:NumDragons:Count$Valid Dragon.YouCtrl SVar:BuffedBy:Creature.withFlying DeckHints:Type$Dragon & Keyword$Flying diff --git a/forge-gui/res/cardsfolder/f/flesh_blood.txt b/forge-gui/res/cardsfolder/f/flesh_blood.txt index 6a865b4ad58..61bf66a162d 100644 --- a/forge-gui/res/cardsfolder/f/flesh_blood.txt +++ b/forge-gui/res/cardsfolder/f/flesh_blood.txt @@ -15,6 +15,6 @@ Name:Blood ManaCost:R G Types:Sorcery A:SP$ Pump | Cost$ R G | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ BloodDamage | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to any target. -SVar:BloodDamage:DB$ DealDamage | ValidTgts$ Any | AILogic$ PowerDmg | TgtPrompt$ Select any target | NumDmg$ Y | DamageSource$ ParentTarget +SVar:BloodDamage:DB$ DealDamage | ValidTgts$ Any | AILogic$ PowerDmg | NumDmg$ Y | DamageSource$ ParentTarget SVar:Y:ParentTargeted$CardPower Oracle:Target creature you control deals damage equal to its power to any target.\nFuse (You may cast one or both halves of this card from your hand.) diff --git a/forge-gui/res/cardsfolder/f/foundry_helix.txt b/forge-gui/res/cardsfolder/f/foundry_helix.txt index 0485e356028..a2393966082 100644 --- a/forge-gui/res/cardsfolder/f/foundry_helix.txt +++ b/forge-gui/res/cardsfolder/f/foundry_helix.txt @@ -1,7 +1,7 @@ Name:Foundry Helix ManaCost:1 R W Types:Instant -A:SP$ DealDamage | Cost$ 1 R W Sac<1/Permanent> | ValidTgts$ Creature,Planeswalker,Player | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to any target. If the sacrificed permanent was an artifact, you gain 4 life. +A:SP$ DealDamage | Cost$ 1 R W Sac<1/Permanent> | ValidTgts$ Any | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to any target. If the sacrificed permanent was an artifact, you gain 4 life. SVar:DBGainLife:DB$ GainLife | ConditionDefined$ Sacrificed | ConditionPresent$ Artifact | LifeAmount$ 4 DeckHints:Type$Artifact DeckHas:Ability$LifeGain diff --git a/forge-gui/res/cardsfolder/i/ill_tempered_loner_howlpack_avenger.txt b/forge-gui/res/cardsfolder/i/ill_tempered_loner_howlpack_avenger.txt index ef08bb3cbfb..70acd45bb45 100644 --- a/forge-gui/res/cardsfolder/i/ill_tempered_loner_howlpack_avenger.txt +++ b/forge-gui/res/cardsfolder/i/ill_tempered_loner_howlpack_avenger.txt @@ -3,7 +3,7 @@ ManaCost:2 R R Types:Creature Human Werewolf PT:3/3 T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to any target. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | TgtPrompt$ Select any target +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any SVar:X:TriggerCount$DamageAmount SVar:HasCombatEffect:TRUE A:AB$ Pump | Cost$ 1 R | Defined$ Self | NumAtt$ +2 | SpellDescription$ CARDNAME gets +2/+0 until end of turn. @@ -19,7 +19,7 @@ Colors:red Types:Creature Werewolf PT:4/4 T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Permanent.YouCtrl | TriggerZones$ Battlefield | TriggerDescription$ Whenever a permanent you control is dealt damage, CARDNAME deals that much damage to any target. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | TgtPrompt$ Select any target +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any SVar:X:TriggerCount$DamageAmount S:Mode$ Continuous | Affected$ Permanent.YouCtrl | AddSVar$ CE SVar:CE:SVar:HasCombatEffect:TRUE diff --git a/forge-gui/res/cardsfolder/i/improvised_weaponry.txt b/forge-gui/res/cardsfolder/i/improvised_weaponry.txt index 017ca0cd4be..04b848fc1d1 100644 --- a/forge-gui/res/cardsfolder/i/improvised_weaponry.txt +++ b/forge-gui/res/cardsfolder/i/improvised_weaponry.txt @@ -1,7 +1,7 @@ Name:Improvised Weaponry ManaCost:2 R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Any | TgtPrompt$ Select any targeto | NumDmg$ 2 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 2 damage to any target. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Any | NumDmg$ 2 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SpellDescription$ Create a Treasure token. DeckHas:Ability$Token Oracle:Improvised Weaponry deals 2 damage to any target. Create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") diff --git a/forge-gui/res/cardsfolder/k/karplusan_hound.txt b/forge-gui/res/cardsfolder/k/karplusan_hound.txt index afa688696bb..d83fc88b2ab 100644 --- a/forge-gui/res/cardsfolder/k/karplusan_hound.txt +++ b/forge-gui/res/cardsfolder/k/karplusan_hound.txt @@ -3,6 +3,6 @@ ManaCost:3 R Types:Creature Dog PT:3/3 T:Mode$ Attacks | ValidCard$ Card.Self | IsPresent$ Planeswalker.Chandra+YouCtrl | Execute$ DBDealDamage | TriggerDescription$ Whenever CARDNAME attacks, if you control a Chandra planeswalker, this creature deals 2 damage to any target. -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 2 | TgtPrompt$ Select any target +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 2 SVar:BuffedBy:Chandra Oracle:Whenever Karplusan Hound attacks, if you control a Chandra planeswalker, this creature deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt b/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt index f912b026d12..7d0bf573ef6 100644 --- a/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt +++ b/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt @@ -4,7 +4,7 @@ Types:Creature Minotaur Warrior PT:3/3 K:Cumulative upkeep:FlipCoin<1>:Flip a coin. T:Mode$ FlippedCoin | ValidPlayer$ You | ValidResult$ Win | TriggerZones$ Battlefield | Execute$ TrigYouDmg | TriggerDescription$ Whenever you win a coin flip, CARDNAME deals 1 damage to any target. -SVar:TrigYouDmg:DB$ DealDamage | NumDmg$ 1 | ValidTgts$ Any | TgtPrompt$ Select any target +SVar:TrigYouDmg:DB$ DealDamage | NumDmg$ 1 | ValidTgts$ Any T:Mode$ FlippedCoin | ValidPlayer$ You | ValidResult$ Lose | TriggerZones$ Battlefield | Execute$ TrigOppDmg | TriggerDescription$ Whenever you lose a coin flip, CARDNAME deals 1 damage to any target of an opponent's choice. SVar:TrigOppDmg:DB$ DealDamage | NumDmg$ 1 | ValidTgts$ Any | TargetingPlayer$ Opponent AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/k/klement_novice_acolyte.txt b/forge-gui/res/cardsfolder/k/klement_novice_acolyte.txt index 7b05fad90a8..87c06d100c2 100644 --- a/forge-gui/res/cardsfolder/k/klement_novice_acolyte.txt +++ b/forge-gui/res/cardsfolder/k/klement_novice_acolyte.txt @@ -61,7 +61,7 @@ Types:Legendary Creature Tiefling Cleric PT:2/3 K:Double Strike T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to any target. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | TgtPrompt$ Select any target +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any SVar:X:TriggerCount$DamageAmount Oracle:Double strike\nWhenever Klement, Tempest Acolyte is dealt damage, it deals that much damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lightning_bolt.txt b/forge-gui/res/cardsfolder/l/lightning_bolt.txt index 32087371a32..dbc619a2f91 100644 --- a/forge-gui/res/cardsfolder/l/lightning_bolt.txt +++ b/forge-gui/res/cardsfolder/l/lightning_bolt.txt @@ -1,5 +1,5 @@ Name:Lightning Bolt ManaCost:R Types:Instant -A:SP$ DealDamage | ValidTgts$ Creature,Battle,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. +A:SP$ DealDamage | ValidTgts$ Any | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. Oracle:Lightning Bolt deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lozhan_dragons_legacy.txt b/forge-gui/res/cardsfolder/l/lozhan_dragons_legacy.txt index 5d9fce4e9d8..5eb6cb0b557 100644 --- a/forge-gui/res/cardsfolder/l/lozhan_dragons_legacy.txt +++ b/forge-gui/res/cardsfolder/l/lozhan_dragons_legacy.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Dragon Shaman PT:4/2 K:Flying T:Mode$ SpellCast | ValidCard$ Card.Adventure,Dragon | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast an Adventure spell or Dragon spell, CARDNAME deals damage equal to that spell's mana value to any target that isn't a commander. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.IsNotCommander,Player,Planeswalker.IsNotCommander | TgtPrompt$ Select any target that isn't a commander | NumDmg$ X +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.IsNotCommander,Player,Planeswalker.IsNotCommander,Battle.IsNotCommander | TgtPrompt$ Select any target that isn't a commander | NumDmg$ X SVar:X:TriggeredStackInstance$CardManaCostLKI SVar:BuffedBy:Creature.AdventureCard,Dragon DeckHints:Type$Adventure|Dragon diff --git a/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt b/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt index 0ca0daa045a..8cdad24f613 100644 --- a/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt +++ b/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt @@ -7,7 +7,7 @@ T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigPutCounter | Trigger SVar:TrigPutCounter:DB$ PutCounter | Defined$ TriggeredAttackerLKICopy | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBSac SVar:DBSac:DB$ Destroy | Defined$ Self | Sacrifice$ True | ConditionDefined$ TriggeredAttacker | ConditionPresent$ Card.counters_GE3_P1P1 T:Mode$ Sacrificed | ValidPlayer$ You | ValidCard$ Card.Self | Execute$ TrigDmg | TriggerZones$ Battlefield | TriggerDescription$ When you sacrifice CARDNAME, it deals 3 damage to any target. -SVar:TrigDmg:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Any | TgtPrompt$ Select any target +SVar:TrigDmg:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Any S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddSVar$ AE SVar:AE:SVar:HasAttackEffect:TRUE SVar:SacMe:4 diff --git a/forge-gui/res/cardsfolder/p/prophetic_titan.txt b/forge-gui/res/cardsfolder/p/prophetic_titan.txt index 32107fa2aa0..243296d264c 100644 --- a/forge-gui/res/cardsfolder/p/prophetic_titan.txt +++ b/forge-gui/res/cardsfolder/p/prophetic_titan.txt @@ -4,7 +4,7 @@ Types:Creature Giant Wizard PT:4/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCharm | TriggerDescription$ Delirium — When CARDNAME enters the battlefield, ABILITY SVar:TrigCharm:DB$ Charm | CharmNum$ X | Choices$ DBDealDamage,DBDig | AdditionalDescription$ If there are four or more card types in your graveyard, choose both. -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker,Player | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:DBDig:DB$ Dig | DigNum$ 4 | RestRandomOrder$ True | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order. SVar:X:Count$Compare Y GE4.2.1 SVar:Y:Count$CardControllerTypes.Graveyard diff --git a/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt b/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt index 2e050462f52..f6f3ba90dd4 100644 --- a/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt +++ b/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt @@ -2,7 +2,7 @@ Name:Rumbling Aftershocks ManaCost:4 R Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card.YouCtrl+kicked | TriggerZones$ Battlefield | Execute$ DamageSomeone | OptionalDecider$ You | TriggerDescription$ Whenever you cast a kicked spell, you may have CARDNAME deal damage to any target equal to the number of times that spell was kicked. -SVar:DamageSomeone:DB$ DealDamage | ValidTgts$ Any | NumDmg$ X | TgtPrompt$ Select any target +SVar:DamageSomeone:DB$ DealDamage | ValidTgts$ Any | NumDmg$ X SVar:X:TriggeredSpellAbility$TimesKicked AI:RemoveDeck:Random Oracle:Whenever you cast a kicked spell, you may have Rumbling Aftershocks deal damage to any target equal to the number of times that spell was kicked. diff --git a/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt b/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt index 562ee97a5e5..0eed5f86c3d 100644 --- a/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt +++ b/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt @@ -2,7 +2,7 @@ Name:Scars of the Veteran ManaCost:4 W Types:Instant SVar:AltCost:Cost$ ExileFromHand<1/Card.White+Other> | Description$ You may exile a white card from your hand rather than pay this spell's mana cost. -A:SP$ PreventDamage | Cost$ 4 W | ValidTgts$ Any | Amount$ 7 | PreventionSubAbility$ ScarEffect | ShieldEffectTarget$ Targeted | TgtPrompt$ Select any target | SpellDescription$ Prevent the next 7 damage that would be dealt to any target this turn. If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. +A:SP$ PreventDamage | Cost$ 4 W | ValidTgts$ Any | Amount$ 7 | PreventionSubAbility$ ScarEffect | ShieldEffectTarget$ Targeted | SpellDescription$ Prevent the next 7 damage that would be dealt to any target this turn. If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. SVar:ScarEffect:DB$ Effect | RememberObjects$ ShieldEffectTarget | Triggers$ DelTrig | SpellDescription$ If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. SVar:DelTrig:Mode$ Phase | Phase$ End of Turn | Execute$ DelayedScars | OneOff$ True | IsPresent$ Creature.IsRemembered | TriggerDescription$ If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. SVar:DelayedScars:DB$ PutCounter | Defined$ Remembered | CounterType$ P0P1 | CounterNum$ PreventedDamage diff --git a/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt b/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt index f8d4b91ee83..9b2e4bad8b1 100644 --- a/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt +++ b/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:4/4 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Dragon.Other+YouCtrl | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME or another Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ NumDragons | TgtPrompt$ Select any target | DamageSource$ TriggeredCard +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ NumDragons | DamageSource$ TriggeredCard SVar:NumDragons:Count$Valid Dragon.YouCtrl A:AB$ Pump | Cost$ R | Defined$ Self | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. SVar:PlayMain1:TRUE diff --git a/forge-gui/res/cardsfolder/s/searing_meditation.txt b/forge-gui/res/cardsfolder/s/searing_meditation.txt index c5efa0c281f..0f626b2ea3a 100644 --- a/forge-gui/res/cardsfolder/s/searing_meditation.txt +++ b/forge-gui/res/cardsfolder/s/searing_meditation.txt @@ -2,6 +2,6 @@ Name:Searing Meditation ManaCost:1 R W Types:Enchantment T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDamage | TriggerDescription$ Whenever you gain life, you may pay {2}. If you do, CARDNAME deals 2 damage to any target. -SVar:TrigDamage:AB$DealDamage | Cost$ 2 | NumDmg$ 2 | ValidTgts$ Any | TgtPrompt$ Select any target +SVar:TrigDamage:AB$DealDamage | Cost$ 2 | NumDmg$ 2 | ValidTgts$ Any AI:RemoveDeck:Random Oracle:Whenever you gain life, you may pay {2}. If you do, Searing Meditation deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt b/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt index 5b8e064753d..78e16a3a573 100644 --- a/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt +++ b/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt @@ -1,5 +1,5 @@ Name:Shieldmate's Blessing ManaCost:W Types:Instant -A:SP$ PreventDamage | Cost$ W | ValidTgts$ Any | Amount$ 3 | TgtPrompt$ Select any target | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. +A:SP$ PreventDamage | Cost$ W | ValidTgts$ Any | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. Oracle:Prevent the next 3 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/s/souls_fire.txt b/forge-gui/res/cardsfolder/s/souls_fire.txt index 165ffba2bcc..a67422e1d16 100644 --- a/forge-gui/res/cardsfolder/s/souls_fire.txt +++ b/forge-gui/res/cardsfolder/s/souls_fire.txt @@ -2,6 +2,6 @@ Name:Soul's Fire ManaCost:2 R Types:Instant A:SP$ Pump | Cost$ 2 R | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to any target. -SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Any | AILogic$ PowerDmg | TgtPrompt$ Select any target | NumDmg$ X | DamageSource$ ParentTarget +SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Any | AILogic$ PowerDmg | NumDmg$ X | DamageSource$ ParentTarget SVar:X:ParentTargeted$CardPower Oracle:Target creature you control deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/s/spare_dagger.txt b/forge-gui/res/cardsfolder/s/spare_dagger.txt index 19e2111b30e..4d3b5bc16c5 100644 --- a/forge-gui/res/cardsfolder/s/spare_dagger.txt +++ b/forge-gui/res/cardsfolder/s/spare_dagger.txt @@ -5,5 +5,5 @@ K:Equip:1 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddTrigger$ AttackTrigger | Description$ Equipped creature gets +1/+0 and has "Whenever this creature attacks, you may sacrifice Spare Dagger. When you do, this creature deals 1 damage to any target." SVar:AttackTrigger:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever this creature attacks, you may sacrifice CARDNAME. When you do, this creature deals 1 damage to any target. SVar:TrigDealDamage:AB$ ImmediateTrigger | Cost$ Sac<1/OriginalHost/Spare Dagger> | Execute$ TrigDamage | TriggerDescription$ When you do, this creature deals 1 damage to any target. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Player,Creature,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 1 Oracle:Equipped creature gets +1/+0 and has "Whenever this creature attacks, you may sacrifice Spare Dagger. When you do, this creature deals 1 damage to any target."\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/s/spitemare.txt b/forge-gui/res/cardsfolder/s/spitemare.txt index 5cd0d6d6957..de60ae8a613 100644 --- a/forge-gui/res/cardsfolder/s/spitemare.txt +++ b/forge-gui/res/cardsfolder/s/spitemare.txt @@ -3,7 +3,7 @@ ManaCost:2 RW RW Types:Creature Elemental PT:3/3 T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to any target. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | TgtPrompt$ Select any target +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any SVar:X:TriggerCount$DamageAmount SVar:HasCombatEffect:TRUE Oracle:Whenever Spitemare is dealt damage, it deals that much damage to any target. diff --git a/forge-gui/res/cardsfolder/s/syrix_carrier_of_the_flame.txt b/forge-gui/res/cardsfolder/s/syrix_carrier_of_the_flame.txt index d64774ca08b..5d93bc0988a 100644 --- a/forge-gui/res/cardsfolder/s/syrix_carrier_of_the_flame.txt +++ b/forge-gui/res/cardsfolder/s/syrix_carrier_of_the_flame.txt @@ -6,7 +6,7 @@ K:Flying K:Haste T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigPhoenix | CheckSVar$ X | TriggerDescription$ At the beginning of each end step, if a creature card left your graveyard this turn, target Phoenix you control deals damage equal to its power to any target. SVar:TrigPhoenix:DB$ Pump | ValidTgts$ Phoenix.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target Phoenix you control | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Any | AILogic$ PowerDmg | TgtPrompt$ Select any target | NumDmg$ Y | DamageSource$ ParentTarget +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Any | AILogic$ PowerDmg | NumDmg$ Y | DamageSource$ ParentTarget SVar:Y:ParentTargeted$CardPower T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Phoenix.Other+YouCtrl | TriggerZones$ Graveyard | Execute$ TrigPlay | OptionalDecider$ You | TriggerDescription$ Whenever another Phoenix you control dies, you may cast CARDNAME from your graveyard. SVar:TrigPlay:DB$ Play | Optional$ True diff --git a/forge-gui/res/cardsfolder/t/tiger_tribe_hunter.txt b/forge-gui/res/cardsfolder/t/tiger_tribe_hunter.txt index 64175ebc548..3c41872f15a 100644 --- a/forge-gui/res/cardsfolder/t/tiger_tribe_hunter.txt +++ b/forge-gui/res/cardsfolder/t/tiger_tribe_hunter.txt @@ -5,7 +5,7 @@ PT:4/4 K:Trample T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigImmediate | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, you may sacrifice another creature. When you do, CARDNAME deals damage equal to the sacrificed creature's power to target creature. SVar:TrigImmediate:AB$ ImmediateTrigger | Cost$ Sac<1/Creature.Other/another creature> | RememberObjects$ Sacrificed | Execute$ TrigDamage | TriggerDescription$ If you do, CARDNAME deals damage equal to the sacrificed creature's power to target creature. -SVar:TrigDamage:DB$ DealDamage | ConditionDefined$ DelayTriggerRememberedLKI | ValidTgts$ Creature | TgtPrompt$ Select any target | NumDmg$ X +SVar:TrigDamage:DB$ DealDamage | ConditionDefined$ DelayTriggerRememberedLKI | ValidTgts$ Creature | NumDmg$ X SVar:X:TriggerRemembered$CardPower SVar:PackTactics:Count$SumPower_Creature.attacking DeckHas:Ability$Sacrifice diff --git a/forge-gui/res/cardsfolder/upcoming/chandra_hopes_beacon.txt b/forge-gui/res/cardsfolder/upcoming/chandra_hopes_beacon.txt index 7a6c5a4509d..d4788093a8b 100644 --- a/forge-gui/res/cardsfolder/upcoming/chandra_hopes_beacon.txt +++ b/forge-gui/res/cardsfolder/upcoming/chandra_hopes_beacon.txt @@ -8,7 +8,7 @@ A:AB$ Mana | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | Produced$ Combo A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DestinationZone$ Exile | DigNum$ 5 | ChangeNum$ All | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top five cards of your library. Until the end of your next turn, you may cast an instant or sorcery spell from among those exiled cards. SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | Duration$ UntilTheEndOfYourNextTurn | SubAbility$ DBCleanup SVar:STPlay:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Exile,Stack | Affected$ Instant.IsRemembered,Sorcery.IsRemembered | MayPlay$ True | MayPlayLimit$ 1 | Description$ Until the end of your next turn, you may cast an instant or sorcery spell from among the exiled cards. -A:AB$ DealDamage | Cost$ SubCounter | Planeswalker$ True | Ultimate$ True | ValidTgts$ Creature,Planeswalker,Player | TgtPrompt$ Select any target | TargetMin$ 0 | TargetMax$ 2 | NumDmg$ X | SpellDescription$ CARDNAME deals X damage to each of up to two targets. +A:AB$ DealDamage | Cost$ SubCounter | Planeswalker$ True | Ultimate$ True | ValidTgts$ Any | TargetMin$ 0 | TargetMax$ 2 | NumDmg$ X | SpellDescription$ CARDNAME deals X damage to each of up to two targets. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid DeckNeeds:Type$Instant|Sorcery diff --git a/forge-gui/res/cardsfolder/upcoming/voldaren_thrilseeker.txt b/forge-gui/res/cardsfolder/upcoming/voldaren_thrilseeker.txt index 534cd599a15..f175aa281fc 100644 --- a/forge-gui/res/cardsfolder/upcoming/voldaren_thrilseeker.txt +++ b/forge-gui/res/cardsfolder/upcoming/voldaren_thrilseeker.txt @@ -4,8 +4,8 @@ Types:Creature Vampire Warrior PT:1/1 K:Backup:2:BackupAbility SVar:BackupAbility:DB$ Animate | Abilities$ ABDealDamage -SVar:ABDealDamage:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME/this creature> | ValidTgts$ Player,Creature,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SpellDescription$ It deals damage equal to its power to any target. -A:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME/this creature> | ValidTgts$ Player,Creature,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SpellDescription$ It deals damage equal to its power to any target. +SVar:ABDealDamage:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME/this creature> | ValidTgts$ Any | NumDmg$ X | SpellDescription$ It deals damage equal to its power to any target. +A:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME/this creature> | ValidTgts$ Any | NumDmg$ X | SpellDescription$ It deals damage equal to its power to any target. SVar:X:Sacrificed$CardPower DeckHas:Ability$Counters|Sacrifice Oracle:Backup 2 (When this creature enters the battlefield, put two +1/+1 counters on target creature. If that's another creature, it gains the following ability until end of turn.)\n{1}, Sacrifice this creature: It deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt b/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt index 902c438576d..0bd0eb9110f 100644 --- a/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt +++ b/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:5/5 K:Flying T:Mode$ DamageDone | Execute$ TrigDamage | ValidTarget$ Dragon.YouCtrl | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Dragon you control is dealt damage, it deals that much damage to any target that isn't a Dragon. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Creature.nonDragon,Player,Planeswalker.nonDragon | TgtPrompt$ Select any target that isn't a Dragon +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Creature.nonDragon,Player,Planeswalker.nonDragon,Battle.nonDragon | TgtPrompt$ Select any target that isn't a Dragon SVar:X:TriggerCount$DamageAmount DeckHints:Type$Dragon Oracle:Flying\nWhenever a Dragon you control is dealt damage, it deals that much damage to any target that isn't a Dragon. From 4726a95593eae886e31405110feb273a347eeb37 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 21 Apr 2023 20:35:12 +0800 Subject: [PATCH 11/17] Update wrathful_red_dragon.txt --- forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt b/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt index 0bd0eb9110f..82fe0637fc8 100644 --- a/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt +++ b/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:5/5 K:Flying T:Mode$ DamageDone | Execute$ TrigDamage | ValidTarget$ Dragon.YouCtrl | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Dragon you control is dealt damage, it deals that much damage to any target that isn't a Dragon. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Creature.nonDragon,Player,Planeswalker.nonDragon,Battle.nonDragon | TgtPrompt$ Select any target that isn't a Dragon +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any.nonDragon | TgtPrompt$ Select any target that isn't a Dragon SVar:X:TriggerCount$DamageAmount DeckHints:Type$Dragon Oracle:Flying\nWhenever a Dragon you control is dealt damage, it deals that much damage to any target that isn't a Dragon. From 71248e841313917eef58a1da28bebf97ecb580c2 Mon Sep 17 00:00:00 2001 From: Alwayssnarky <126915043+EldritchBimbo@users.noreply.github.com> Date: Fri, 21 Apr 2023 11:14:38 -0400 Subject: [PATCH 12/17] Invasion Update Additions: .The invasion of Shandalar has begun! All minor Phyrexian enemies can now spawn in their corresponding biome. .Added custom decks for each of the Phyrexian dungeon minibosses. Changes: .Edited Gitaxiantileset to correct some tiling visual errors. .Edited Enemies.json to give minibosses their corresponding decks. .Phyrexian duelist is now monocolour (white) in parity with the other world enemy Phyrexians. .Tweaked PhyrexianDuelist to more fit current enemy artstyle. .Edited Gitaxian dungeon to fit new tile arrangement. .Added second treasure chest to WUG Phyrexian dungeons, for parity with later ones. .All Phyrexian dungeon booster loot pools now pull from the NPH, ONE, and MOM cards of that colour, instead of just ONE. --- .../Shandalar/decks/copperhostbrutalizer.dck | 43 ++++++++++++++++ .../Shandalar/decks/drossgrimnarch.dck | 47 ++++++++++++++++++ .../Shandalar/decks/furnacetormentor.dck | 45 +++++++++++++++++ .../Shandalar/decks/gitaxianscientist.dck | 43 ++++++++++++++++ .../Shandalar/decks/phyrexianangel.dck | 45 +++++++++++++++++ .../Shandalar/decks/phyrexianduelist.json | 2 +- .../Shandalar/maps/map/phyrexian_b1.tmx | 15 +++--- .../Shandalar/maps/map/phyrexian_black1.tmx | 6 +-- .../Shandalar/maps/map/phyrexian_g1.tmx | 9 ++-- .../Shandalar/maps/map/phyrexian_r1.tmx | 7 ++- .../Shandalar/maps/map/phyrexian_w1.tmx | 9 ++-- .../maps/tileset/GitaxianTilesheet.png | Bin 5176 -> 5536 bytes .../Shandalar/sprites/phyrexianduelist.png | Bin 2146 -> 2075 bytes .../res/adventure/Shandalar/world/black.json | 1 + .../res/adventure/Shandalar/world/blue.json | 1 + .../adventure/Shandalar/world/enemies.json | 10 ++-- .../res/adventure/Shandalar/world/green.json | 1 + .../res/adventure/Shandalar/world/red.json | 1 + .../res/adventure/Shandalar/world/white.json | 1 + 19 files changed, 258 insertions(+), 28 deletions(-) create mode 100644 forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck diff --git a/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck b/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck new file mode 100644 index 00000000000..5a4ac2f544b --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck @@ -0,0 +1,43 @@ +[metadata] +Name=copperhostbrutalizer +[Avatar] + +[Main] +2 Blighted Burgeoning|MOM|1 +1 Bloated Contaminator|ONE|1 +1 Bloated Contaminator|ONE|2 +1 Bloated Processor|MOM|1 +1 Bloated Processor|MOM|2 +2 Converter Beast|MOM|1 +2 Drown in Ichor|ONE|1 +4 Elvish Vatkeeper|MOM|1 +2 Expand the Sphere|ONE|1 +1 Forest|ONE|1 +5 Forest|ONE|2 +6 Forest|ONE|3 +2 Gift of Compleation|MOM|1 +2 Glistening Dawn|MOM|2 +1 Grafted Butcher|MOM|1 +1 Grafted Butcher|MOM|2 +2 Gulping Scraptrap|ONE|1 +2 Ichor Drinker|MOM|1 +4 Jungle Hollow|MOM|1 +3 Swamp|ONE|1 +1 Swamp|ONE|2 +3 Swamp|ONE|3 +1 Swamp|ONE|4 +2 Tangled Skyline|MOM|1 +2 Traumatic Revelation|MOM|1 +2 Vat Emergence|ONE|1 +2 Vat of Rebirth|ONE|1 +2 Venomous Brutalizer|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck b/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck new file mode 100644 index 00000000000..41b2062b94f --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck @@ -0,0 +1,47 @@ +[metadata] +Name=drossgrimnarch +[Avatar] + +[Main] +2 Annihilating Glare|ONE|1 +2 Bilious Skulldweller|ONE|1 +2 Blightwing Whelp|YONE|1 +2 Chittering Skitterling|ONE|1 +2 Darkslick Shores|ONE|1 +4 Dismal Backwater|MOM|1 +2 Distorted Curiosity|ONE|1 +2 Drown in Ichor|ONE|1 +1 Experimental Augury|ONE|1 +1 Experimental Augury|ONE|2 +1 Grafted Butcher|MOM|1 +1 Grafted Butcher|MOM|2 +2 Grim Affliction|NPH|1 +2 Gulping Scraptrap|ONE|1 +2 Infectious Inquiry|ONE|1 +2 Island|MOM|1 +3 Island|MOM|2 +1 Island|MOM|3 +1 Mercurial Spelldancer|ONE|1 +1 Mercurial Spelldancer|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Necrogen Communion|ONE|1 +2 Pestilent Syphoner|ONE|1 +2 Quicksilver Servitor|YONE|1 +2 Sheoldred's Headcleaver|ONE|1 +5 Swamp|MOM|1 +1 Swamp|MOM|2 +4 Swamp|MOM|3 +1 Thrummingbird|ONE|1 +1 Thrummingbird|ONE|2 +2 Viral Drake|NPH|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck b/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck new file mode 100644 index 00000000000..e003da28e43 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck @@ -0,0 +1,45 @@ +[metadata] +Name=furnacetormentor +[Avatar] + +[Main] +1 All Will Be One|ONE|1 +1 All Will Be One|ONE|2 +2 Armored Scrapgorger|ONE|1 +2 Axiom Engraver|ONE|1 +2 Blighted Burgeoning|MOM|1 +2 Churning Reservoir|ONE|1 +2 Cinderslash Ravager|ONE|1 +2 Converter Beast|MOM|1 +2 Copperline Gorge|ONE|1 +2 Copperline Gorge|ONE|2 +2 Evolving Adaptive|ONE|1 +2 Expand the Sphere|ONE|1 +2 Exuberant Fuseling|ONE|1 +1 Forest|ONE|1 +1 Forest|ONE|2 +1 Forest|ONE|3 +4 Forest|ONE|4 +4 Magmatic Sprinter|ONE|1 +3 Mountain|ONE|1 +3 Mountain|ONE|2 +2 Mountain|ONE|3 +5 Mountain|ONE|4 +2 Nahiri's Warcrafting|MOM|1 +2 Thrill of Possibility|ONE|1 +1 Urabrask's Anointer|ONE|1 +1 Urabrask's Anointer|ONE|2 +2 Urabrask's Forge|ONE|1 +2 Urabrask's Forge|ONE|2 +1 Vindictive Flamestoker|ONE|1 +1 Vindictive Flamestoker|ONE|2 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck b/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck new file mode 100644 index 00000000000..781ccb8ce02 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck @@ -0,0 +1,43 @@ +[metadata] +Name=gitaxianscientist +[Avatar] + +[Main] +2 Blighted Agent|NPH|1 +2 Bloated Contaminator|ONE|2 +2 Contagious Vorrac|ONE|1 +4 Distorted Curiosity|ONE|1 +1 Experimental Augury|ONE|1 +1 Experimental Augury|ONE|2 +2 Forest|ONE|1 +2 Forest|ONE|2 +3 Forest|ONE|3 +1 Forest|ONE|4 +2 Glistener Seer|ONE|1 +2 Ichorspit Basilisk|ONE|1 +2 Infectious Bite|ONE|1 +6 Island|ONE|1 +3 Island|ONE|2 +2 Island|ONE|3 +3 Island|ONE|4 +1 Mindsplice Apparatus|ONE|1 +1 Mindsplice Apparatus|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Serum Snare|ONE|1 +2 Tainted Observer|ONE|1 +2 The Seedcore|ONE|2 +2 Thrummingbird|ONE|1 +2 Thrummingbird|ONE|2 +4 Viral Drake|NPH|1 +2 Vivisurgeon's Insight|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck b/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck new file mode 100644 index 00000000000..fefbfe3fb6f --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck @@ -0,0 +1,45 @@ +[metadata] +Name=phyrexianangel +[Avatar] + +[Main] +2 Apostle of Invasion|ONE|1 +2 Bloated Contaminator|ONE|1 +2 Blossoming Sands|MOM|1 +2 Charge of the Mites|ONE|1 +4 Crawling Chorus|ONE|1 +2 Duelist of Deep Faith|ONE|1 +2 Flensing Raptor|ONE|1 +3 Forest|ONE|3 +3 Forest|ONE|4 +2 Infectious Bite|ONE|1 +2 Infested Fleshcutter|ONE|1 +2 Mite Overseer|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Norn's Wellspring|ONE|1 +1 Ossification|ONE|1 +1 Ossification|ONE|2 +2 Phyrexia's Core|NPH|1 +2 Plague Nurse|ONE|1 +3 Plains|ONE|1 +2 Plains|ONE|2 +1 Plains|ONE|3 +4 Plains|ONE|4 +2 Razorverge Thicket|ONE|2 +1 Sinew Dancer|ONE|1 +1 Sinew Dancer|ONE|2 +2 Slaughter Singer|ONE|1 +2 Slaughter Singer|ONE|2 +2 The Seedcore|ONE|1 +2 Venerated Rotpriest|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json b/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json index eca588ea0ae..222826c04f0 100644 --- a/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json +++ b/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json @@ -3,7 +3,7 @@ "template": { "count":60, - "colors":["White", "Black"], + "colors":["White"], "tribe":"Phyrexian", "tribeCards":1.0, "tribeSynergyCards":0.5, diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx index b7f548e6be7..71cb5a5d5a8 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx @@ -1,5 +1,5 @@ - + @@ -13,7 +13,7 @@ - eJy1lVEOhCAMRP01epYeYw9mun94H4+3IbFhtrYKFkgaIAiPMgNuyzRtFfGZ/aiZ/zYSldjpvz+KeayFx2eN7Tw+istnbkzXPfTm4nqoZ+Za+vbiW1zR2vJa/j7iM2vfieriS4Xf6nmPy6BvUnrfRYQrdwf99MTnDtyavEZwUT+dLz/kHeXqs9Uh49pXLX7GIncW3ym9D2xH7nEuUgvX83RSeUaYwpX3wdJO96Nc69y9f9EInsX1zrd1zR/ubyqt + eJy1lVEOhCAMRP3duGfhGB7MdP/Y++zxDIkTx24rCJVkAgTD67SA6zxNa0XLq021fXqU06FvOs85tkjm733wZO95XNbBjubK7k3SfwzR+WYfrGywisr3EWyLi1pb8YxywfPO1ZU+6cy/E4fHFapvVvW+0ggXd4fPU40vAdwWX09wuX7ar1R8j3J1brWwPnKuuOHO8jul4+CxFXerSkMPrnems+Gzlwku3gerdnoObq9XK+/evyjCZwvXy+/dPTf2kSWe @@ -26,7 +26,7 @@ - eJzbwcPAsIMI3K6HGxOjXwYNE6OnD2g2PjCBCLtH7SUOT9eD4GlQN8zQQ4jRKn6R01Ub1N4OEtMZLcIZHaC7iV72TtDD5NPDXmzuGGr2TkfCIIDMxxau9PAvuj3z0NxJy3IDnU+v8goEZujhLkdoaS++8pIW9uLzJ6X2wsoeZAATI6deAABIX/aO + eJzbwcPAsIMAbtNjYGjHgzv0CJshg4YJqQfhPqC5+MCEUXupYu80oLnToXgd1A0bkMRm0Mhe5HQ1D2rvAhLTGS3CGR3cxOIOetg7QQ+TTw97sbljKNl7CCntToe6AZm/DEu40sO/6PZcRHPnDDrZi60coaW9G/RwlyO0tBdfeUkLe88RUV6SY+8dpLIHGcDEbpNRPgMAC9v4YQ== @@ -79,25 +79,25 @@ ] - + [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "blue" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "blue" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -107,6 +107,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx index 94a51babcd4..1b6b1ec61ec 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx @@ -58,21 +58,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "black" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "black" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx index 86ca6abef7d..887d5326a30 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx @@ -1,5 +1,5 @@ - + @@ -49,21 +49,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "green" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "green" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -101,6 +101,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx index e6f1ad70970..17bb536325f 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx @@ -46,7 +46,6 @@ - @@ -99,21 +98,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "red" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "red" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx index 6a124f83a5c..f98f3b40ed4 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx @@ -1,5 +1,5 @@ - + @@ -64,21 +64,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "white" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "white" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -88,6 +88,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png b/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png index c761bcdc52c085b359e17215e560beb80b26e8ce..dd29c9526e9bfa59adc7ec84b66bb43dc87ce48c 100644 GIT binary patch literal 5536 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 WW62b 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 diff --git a/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png b/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png index a2d8e985c16c5a5a3f61c5746b4c975222fc4837..e29d02e0e1b45c5cc15c64aa3b46e4a04f9e3a17 100644 GIT binary patch delta 2049 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 diff --git a/forge-gui/res/adventure/Shandalar/world/black.json b/forge-gui/res/adventure/Shandalar/world/black.json index 17b9fe383e3..6d907a7044e 100644 --- a/forge-gui/res/adventure/Shandalar/world/black.json +++ b/forge-gui/res/adventure/Shandalar/world/black.json @@ -47,6 +47,7 @@ "Dark Knight", "Death Knight", "Demon", + "Dross Gladiator", "Eye", "Fungus", "Frog", diff --git a/forge-gui/res/adventure/Shandalar/world/blue.json b/forge-gui/res/adventure/Shandalar/world/blue.json index c5aa793b397..1af44d47e32 100644 --- a/forge-gui/res/adventure/Shandalar/world/blue.json +++ b/forge-gui/res/adventure/Shandalar/world/blue.json @@ -43,6 +43,7 @@ "Frog", "Frost Titan", "Geist", + "Gitaxian Underling", "Horror", "Illusionist", "Jellyfish", diff --git a/forge-gui/res/adventure/Shandalar/world/enemies.json b/forge-gui/res/adventure/Shandalar/world/enemies.json index 83ff0e1bc3e..8d45a5c0fc9 100644 --- a/forge-gui/res/adventure/Shandalar/world/enemies.json +++ b/forge-gui/res/adventure/Shandalar/world/enemies.json @@ -3366,7 +3366,7 @@ "name": "Copper Host Brutalizer", "sprite": "sprites/copperhostbrutalizer.atlas", "deck": [ - "deckscopperhostbrutalizer.json" + "decks/copperhostbrutalizer.dck" ], "ai": "", "spawnRate": 1, @@ -4680,7 +4680,7 @@ "name": "Dross Grimnarch", "sprite": "sprites/drossgrimnarch.atlas", "deck": [ - "decks/drossgrimnarch.json" + "decks/drossgrimnarch.dck" ], "spawnRate": 1, "difficulty": 0.1, @@ -6197,7 +6197,7 @@ "name": "Furnace Tormentor", "sprite": "sprites/furnacetormentor.atlas", "deck": [ - "decks/furnacetormentor.json" + "decks/furnacetormentor.dck" ], "ai": "", "spawnRate": 1, @@ -6814,7 +6814,7 @@ "name": "Gitaxian Scientist", "sprite": "sprites/gitaxianscientist.atlas", "deck": [ - "decks/gitaxianscientist.json" + "decks/gitaxianscientist.dck" ], "ai": "", "spawnRate": 1, @@ -11471,7 +11471,7 @@ "name": "Orthodoxy Angel", "sprite": "sprites/phyrexianangel.atlas", "deck": [ - "decks/phyrexianangel.json" + "decks/phyrexianangel.dck" ], "spawnRate": 1, "difficulty": 0.1, diff --git a/forge-gui/res/adventure/Shandalar/world/green.json b/forge-gui/res/adventure/Shandalar/world/green.json index 049692f29b5..1dd2f7f1acb 100644 --- a/forge-gui/res/adventure/Shandalar/world/green.json +++ b/forge-gui/res/adventure/Shandalar/world/green.json @@ -42,6 +42,7 @@ "Challenger 20", "Challenger 21", "Challenger 22", + "Copper Host Infector", "Dino", "Eldraine Faerie", "Elf", diff --git a/forge-gui/res/adventure/Shandalar/world/red.json b/forge-gui/res/adventure/Shandalar/world/red.json index d872bef2dcf..02eb218b8c8 100644 --- a/forge-gui/res/adventure/Shandalar/world/red.json +++ b/forge-gui/res/adventure/Shandalar/world/red.json @@ -47,6 +47,7 @@ "Efreet", "Fire Elemental", "Flame Elemental", + "Furnace Goblin", "Goblin", "Goblin Chief", "Goblin Warrior", diff --git a/forge-gui/res/adventure/Shandalar/world/white.json b/forge-gui/res/adventure/Shandalar/world/white.json index 1872c4db27b..932a59fcaf4 100644 --- a/forge-gui/res/adventure/Shandalar/world/white.json +++ b/forge-gui/res/adventure/Shandalar/world/white.json @@ -54,6 +54,7 @@ "Knight", "Kor Warrior", "Monk", + "Orthodoxy Duelist", "Owl", "Raven", "Scorpion", From 4e042d7ed0ab12e89cfbefa8b36eff61574ab4e0 Mon Sep 17 00:00:00 2001 From: Alwayssnarky <126915043+EldritchBimbo@users.noreply.github.com> Date: Fri, 21 Apr 2023 12:39:19 -0400 Subject: [PATCH 13/17] Adds Phyrexians to Town Arenas --- .../adventure/Shandalar/maps/map/main_story/forest_capital.tmx | 1 + .../adventure/Shandalar/maps/map/main_story/island_capital.tmx | 1 + .../Shandalar/maps/map/main_story/mountain_capital.tmx | 1 + .../adventure/Shandalar/maps/map/main_story/plains_capital.tmx | 1 + .../adventure/Shandalar/maps/map/main_story/swamp_capital.tmx | 1 + forge-gui/res/adventure/Shandalar/world/enemies.json | 2 +- 6 files changed, 6 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx index ecbbff4557c..7b8b0ec26f8 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx @@ -151,6 +151,7 @@ "Challenger 20", "Challenger 21", "Challenger 22", + "Copper Host Infector", "Dino", "Eldraine Faerie", "Elf", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx index 938ac91d906..2d41597ecab 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx @@ -137,6 +137,7 @@ "Challenger 22", "Djinn", "Elemental", + "Gitaxian Underling", "Merfolk", "Merfolk Avatar", "Merfolk Fighter", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx index 7484d64f9f2..b8b51a39da2 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx @@ -136,6 +136,7 @@ "Efreet", "Fire Elemental", "Flame Elemental", + "Furnace Goblin", "Goblin", "Goblin Chief", "Goblin Warrior", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx index 32c421d6046..34ffc2a88ef 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx @@ -145,6 +145,7 @@ "Human guard", "Knight", "Monk", + "Orthodoxy Duelist", "White Dwarf", "White Wiz1", "White Wiz2", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx index cf3faf42af4..f3594ff88b4 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx @@ -67,6 +67,7 @@ "Dark Knight", "Death Knight", "Demon", + "Dross Gladiator", "Ghoul", "Ghost", "Harpy", diff --git a/forge-gui/res/adventure/Shandalar/world/enemies.json b/forge-gui/res/adventure/Shandalar/world/enemies.json index 8d45a5c0fc9..3f650a73a88 100644 --- a/forge-gui/res/adventure/Shandalar/world/enemies.json +++ b/forge-gui/res/adventure/Shandalar/world/enemies.json @@ -3366,7 +3366,7 @@ "name": "Copper Host Brutalizer", "sprite": "sprites/copperhostbrutalizer.atlas", "deck": [ - "decks/copperhostbrutalizer.dck" + "decks/copperhostbrutalizer.dck" ], "ai": "", "spawnRate": 1, From b930e2be973778fc440b55b0f4cbc8332d297e9b Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 21 Apr 2023 17:01:30 -0400 Subject: [PATCH 14/17] MOC: Chaos Ensues!! --- .../src/main/java/forge/ai/SpellApiToAi.java | 2 + .../java/forge/game/ability/AbilityUtils.java | 12 +++ .../main/java/forge/game/ability/ApiType.java | 2 + .../game/ability/effects/BlankLineEffect.java | 16 ++++ .../ability/effects/ChaosEnsuesEffect.java | 74 +++++++++++++++++++ .../ability/effects/PlaneswalkEffect.java | 10 ++- .../game/ability/effects/RunChaosEffect.java | 5 +- .../game/ability/effects/VoteEffect.java | 7 +- .../java/forge/game/card/CardFactory.java | 10 ++- .../main/java/forge/game/player/Player.java | 13 +++- .../game/trigger/TriggerChaosEnsues.java | 63 ++++++++++++++++ .../java/forge/game/trigger/TriggerType.java | 1 + .../cardsfolder/a/academy_at_tolaria_west.txt | 9 ++- forge-gui/res/cardsfolder/a/agyrem.txt | 4 +- forge-gui/res/cardsfolder/a/akoum.txt | 4 +- forge-gui/res/cardsfolder/a/aretopolis.txt | 8 +- forge-gui/res/cardsfolder/a/astral_arena.txt | 6 +- forge-gui/res/cardsfolder/b/bant.txt | 4 +- .../res/cardsfolder/b/bloodhill_bastion.txt | 4 +- .../res/cardsfolder/b/breaking_entering.txt | 5 +- .../res/cardsfolder/c/celestine_reef.txt | 8 +- .../res/cardsfolder/c/cliffside_market.txt | 4 +- .../res/cardsfolder/e/edge_of_malacol.txt | 4 +- forge-gui/res/cardsfolder/e/eloren_wilds.txt | 6 +- .../cardsfolder/e/extract_from_darkness.txt | 7 +- .../res/cardsfolder/f/feeding_grounds.txt | 4 +- .../res/cardsfolder/f/fields_of_summer.txt | 4 +- forge-gui/res/cardsfolder/f/furnace_layer.txt | 4 +- forge-gui/res/cardsfolder/g/gavony.txt | 4 +- forge-gui/res/cardsfolder/g/glen_elendra.txt | 4 +- .../res/cardsfolder/g/glimmervoid_basin.txt | 4 +- forge-gui/res/cardsfolder/g/goldmeadow.txt | 4 +- forge-gui/res/cardsfolder/g/grand_ossuary.txt | 4 +- forge-gui/res/cardsfolder/g/grixis.txt | 4 +- .../cardsfolder/g/grove_of_the_dreampods.txt | 4 +- .../res/cardsfolder/g/guardian_of_faith.txt | 2 +- .../h/hedron_fields_of_agadeem.txt | 6 +- .../res/cardsfolder/h/horizon_boughs.txt | 4 +- forge-gui/res/cardsfolder/i/immersturm.txt | 4 +- .../res/cardsfolder/i/incremental_growth.txt | 2 +- .../res/cardsfolder/i/interplanar_tunnel.txt | 7 +- .../res/cardsfolder/i/isle_of_vesuva.txt | 4 +- .../res/cardsfolder/i/izzet_steam_maze.txt | 4 +- forge-gui/res/cardsfolder/j/jund.txt | 4 +- forge-gui/res/cardsfolder/k/kessig.txt | 4 +- .../res/cardsfolder/k/kharasha_foothills.txt | 4 +- .../res/cardsfolder/k/kilnspire_district.txt | 4 +- forge-gui/res/cardsfolder/k/krosa.txt | 4 +- .../cardsfolder/l/lair_of_the_ashen_idol.txt | 4 +- forge-gui/res/cardsfolder/l/lethe_lake.txt | 8 +- forge-gui/res/cardsfolder/l/llanowar.txt | 4 +- forge-gui/res/cardsfolder/m/minamo.txt | 4 +- .../res/cardsfolder/m/mirrored_depths.txt | 4 +- forge-gui/res/cardsfolder/m/mount_keralia.txt | 4 +- forge-gui/res/cardsfolder/m/murasa.txt | 4 +- forge-gui/res/cardsfolder/n/naar_isle.txt | 6 +- forge-gui/res/cardsfolder/n/naya.txt | 4 +- forge-gui/res/cardsfolder/n/nephalia.txt | 4 +- .../res/cardsfolder/n/norns_dominion.txt | 4 +- .../res/cardsfolder/o/onakke_catacomb.txt | 4 +- forge-gui/res/cardsfolder/o/orochi_colony.txt | 4 +- forge-gui/res/cardsfolder/o/orzhova.txt | 4 +- forge-gui/res/cardsfolder/o/otaria.txt | 4 +- forge-gui/res/cardsfolder/p/panopticon.txt | 6 +- .../res/cardsfolder/p/pools_of_becoming.txt | 6 +- forge-gui/res/cardsfolder/p/prahv.txt | 4 +- .../res/cardsfolder/q/quicksilver_sea.txt | 4 +- forge-gui/res/cardsfolder/r/ravens_run.txt | 11 ++- .../res/cardsfolder/s/sanctum_of_serra.txt | 4 +- forge-gui/res/cardsfolder/s/sea_of_sand.txt | 6 +- .../cardsfolder/s/selesnya_loft_gardens.txt | 4 +- forge-gui/res/cardsfolder/s/shiv.txt | 6 +- forge-gui/res/cardsfolder/s/skybreen.txt | 4 +- forge-gui/res/cardsfolder/s/sokenzan.txt | 4 +- .../res/cardsfolder/s/soul_of_windgrace.txt | 8 +- .../res/cardsfolder/s/stairs_to_infinity.txt | 4 +- forge-gui/res/cardsfolder/s/stensia.txt | 6 +- .../res/cardsfolder/s/stronghold_furnace.txt | 4 +- forge-gui/res/cardsfolder/t/takenuma.txt | 4 +- forge-gui/res/cardsfolder/t/talon_gates.txt | 4 +- forge-gui/res/cardsfolder/t/tazeem.txt | 4 +- forge-gui/res/cardsfolder/t/tember_city.txt | 4 +- .../res/cardsfolder/t/the_aether_flues.txt | 4 +- .../res/cardsfolder/t/the_dark_barony.txt | 6 +- forge-gui/res/cardsfolder/t/the_eon_fog.txt | 4 +- .../res/cardsfolder/t/the_fourth_sphere.txt | 6 +- .../res/cardsfolder/t/the_great_forest.txt | 4 +- .../res/cardsfolder/t/the_hippodrome.txt | 4 +- forge-gui/res/cardsfolder/t/the_maelstrom.txt | 6 +- .../res/cardsfolder/t/the_zephyr_maze.txt | 6 +- .../cardsfolder/t/trail_of_the_mage_rings.txt | 4 +- forge-gui/res/cardsfolder/t/truga_jungle.txt | 4 +- forge-gui/res/cardsfolder/t/turri_island.txt | 4 +- .../res/cardsfolder/u/undercity_reaches.txt | 6 +- forge-gui/res/cardsfolder/upcoming/esper.txt | 4 +- .../upcoming/firemane_commando.txt | 11 +++ .../cardsfolder/upcoming/norns_seedcore.txt | 9 +++ forge-gui/res/cardsfolder/upcoming/nyx.txt | 2 +- .../upcoming/path_of_the_animist.txt | 9 +++ .../upcoming/path_of_the_enigma.txt | 9 +++ .../upcoming/path_of_the_ghosthunter.txt | 11 +++ .../upcoming/path_of_the_pyromancer.txt | 13 ++++ .../upcoming/path_of_the_schemer.txt | 12 +++ .../the_fertile_lands_of_saulvinia.txt | 9 +++ .../cardsfolder/upcoming/the_great_aerie.txt | 2 +- .../res/cardsfolder/upcoming/towashi.txt | 4 +- forge-gui/res/cardsfolder/upcoming/unyaro.txt | 14 ++++ forge-gui/res/cardsfolder/v/velis_vel.txt | 6 +- .../res/cardsfolder/w/windriddle_palaces.txt | 4 +- 109 files changed, 504 insertions(+), 217 deletions(-) create mode 100644 forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java create mode 100644 forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java create mode 100644 forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java create mode 100644 forge-gui/res/cardsfolder/upcoming/firemane_commando.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/unyaro.txt diff --git a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java index 19657159607..b0ec07b06e0 100644 --- a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java @@ -32,6 +32,7 @@ public enum SpellApiToAi { .put(ApiType.BecomeMonarch, AlwaysPlayAi.class) .put(ApiType.BecomesBlocked, BecomesBlockedAi.class) .put(ApiType.BidLife, BidLifeAi.class) + .put(ApiType.BlankLine, AlwaysPlayAi.class) .put(ApiType.Bond, BondAi.class) .put(ApiType.Branch, AlwaysPlayAi.class) .put(ApiType.Camouflage, ChooseCardAi.class) @@ -40,6 +41,7 @@ public enum SpellApiToAi { .put(ApiType.ChangeX, AlwaysPlayAi.class) .put(ApiType.ChangeZone, ChangeZoneAi.class) .put(ApiType.ChangeZoneAll, ChangeZoneAllAi.class) + .put(ApiType.ChaosEnsues, AlwaysPlayAi.class) .put(ApiType.Charm, CharmAi.class) .put(ApiType.ChooseCard, ChooseCardAi.class) .put(ApiType.ChooseColor, ChooseColorAi.class) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index a4b39e47d1f..bcc36751067 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -3580,6 +3580,18 @@ public class AbilityUtils { } return doXMath(amount, m, source, ctb); } + if (value.startsWith("PlaneswalkedToThisTurn")) { + int found = 0; + String name = value.split(" ")[1]; + List pwTo = player.getPlaneswalkedToThisTurn(); + for (Card c : pwTo) { + if (c.getName().equals(name)) { + found++; + break; + } + } + return doXMath(found, m, source, ctb); + } return doXMath(0, m, source, ctb); } diff --git a/forge-game/src/main/java/forge/game/ability/ApiType.java b/forge-game/src/main/java/forge/game/ability/ApiType.java index 06760ca1109..3d6a15de6f2 100644 --- a/forge-game/src/main/java/forge/game/ability/ApiType.java +++ b/forge-game/src/main/java/forge/game/ability/ApiType.java @@ -27,6 +27,7 @@ public enum ApiType { BecomeMonarch (BecomeMonarchEffect.class), BecomesBlocked (BecomesBlockedEffect.class), BidLife (BidLifeEffect.class), + BlankLine (BlankLineEffect.class), Block (BlockEffect.class), Bond (BondEffect.class), Branch (BranchEffect.class), @@ -37,6 +38,7 @@ public enum ApiType { ChangeX (ChangeXEffect.class), ChangeZone (ChangeZoneEffect.class), ChangeZoneAll (ChangeZoneAllEffect.class), + ChaosEnsues (ChaosEnsuesEffect.class), Charm (CharmEffect.class), ChooseCard (ChooseCardEffect.class), ChooseColor (ChooseColorEffect.class), diff --git a/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java new file mode 100644 index 00000000000..7eb821c2412 --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java @@ -0,0 +1,16 @@ +package forge.game.ability.effects; + +import forge.game.ability.SpellAbilityEffect; +import forge.game.spellability.SpellAbility; + +public class BlankLineEffect extends SpellAbilityEffect { + @Override + protected String getStackDescription(SpellAbility sa) { + return "\r\n"; + } + + @Override + public void resolve(SpellAbility sa) { + // this "effect" just allows spacing to look better for certain card displays + } +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java new file mode 100644 index 00000000000..cd9e3cc397a --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java @@ -0,0 +1,74 @@ +package forge.game.ability.effects; + +import com.google.common.collect.Lists; +import forge.game.Game; +import forge.game.ability.AbilityKey; +import forge.game.ability.AbilityUtils; +import forge.game.ability.SpellAbilityEffect; +import forge.game.card.Card; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; +import forge.game.trigger.Trigger; +import forge.game.trigger.TriggerType; +import forge.game.zone.ZoneType; + +import java.util.*; + +public class ChaosEnsuesEffect extends SpellAbilityEffect { + /** 311.7. Each plane card has a triggered ability that triggers “Whenever chaos ensues.” These are called + chaos abilities. Each one is indicated by a chaos symbol to the left of the ability, though the symbol + itself has no special rules meaning. This ability triggers if the chaos symbol is rolled on the planar + die (see rule 901.9b), if a resolving spell or ability says that chaos ensues, or if a resolving spell or + ability states that chaos ensues for a particular object. In the last case, the chaos ability can trigger + even if that plane card is still in the planar deck but revealed. A chaos ability is controlled by the + current planar controller. **/ + + @Override + public void resolve(SpellAbility sa) { + final Card host = sa.getHostCard(); + final Player activator = sa.getActivatingPlayer(); + final Game game = activator.getGame(); + + if (game.getActivePlanes() == null) { // not a planechase game, nothing happens + return; + } + + Map runParams = AbilityKey.mapFromPlayer(activator); + Map> tweakedTrigs = new HashMap<>(); + + List affected = Lists.newArrayList(); + if (sa.hasParam("Defined")) { + for (final Card c : AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa)) { + for (Trigger t : c.getTriggers()) { + if (t.getMode() == TriggerType.ChaosEnsues) { // also allow current zone for any Defined + //String zones = t.getParam("TriggerZones"); + //t.putParam("TriggerZones", zones + "," + c.getZone().getZoneType().toString()); + EnumSet zones = (EnumSet) t.getActiveZone(); + tweakedTrigs.put(t.getId(), zones); + zones.add(c.getZone().getZoneType()); + t.setActiveZone(zones); + affected.add(c); + game.getTriggerHandler().registerOneTrigger(t); + } + } + } + runParams.put(AbilityKey.Affected, affected); + if (affected.isEmpty()) { // if no Defined has chaos ability, don't trigger non Defined + return; + } + } + + game.getTriggerHandler().runTrigger(TriggerType.ChaosEnsues, runParams,false); + + for (Map.Entry> e : tweakedTrigs.entrySet()) { + for (Card c : affected) { + for (Trigger t : c.getTriggers()) { + if (t.getId() == e.getKey()) { + EnumSet zones = e.getValue(); + t.setActiveZone(zones); + } + } + } + } + } +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java index caac7f2b2c3..84d8827c0b4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java @@ -13,8 +13,14 @@ public class PlaneswalkEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { Game game = sa.getActivatingPlayer().getGame(); - for (Player p : game.getPlayers()) { - p.leaveCurrentPlane(); + if (game.getActivePlanes() == null) { // not a planechase game, nothing happens + return; + } + + if (!sa.hasParam("DontPlaneswalkAway")) { + for (Player p : game.getPlayers()) { + p.leaveCurrentPlane(); + } } if (sa.hasParam("Defined")) { CardCollectionView destinations = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java index de2784f0418..a9de663737f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java @@ -20,13 +20,11 @@ public class RunChaosEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - Map map = AbilityKey.mapFromPlayer(sa.getActivatingPlayer()); - map.put(AbilityKey.Result, PlanarDice.Chaos); List validSA = Lists.newArrayList(); for (final Card c : getTargetCards(sa)) { for (Trigger t : c.getTriggers()) { - if (TriggerType.PlanarDice.equals(t.getMode()) && t.performTest(map)) { + if (t.getMode() == TriggerType.ChaosEnsues) { SpellAbility triggerSA = t.ensureAbility().copy(sa.getActivatingPlayer()); Player decider = sa.getActivatingPlayer(); @@ -44,5 +42,4 @@ public class RunChaosEffect extends SpellAbilityEffect { } sa.getActivatingPlayer().getController().orderAndPlaySimultaneousSa(validSA); } - } diff --git a/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java b/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java index 2305418b22a..71256adcc8a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import forge.util.Lang; import org.apache.commons.lang3.StringUtils; import com.google.common.collect.ArrayListMultimap; @@ -35,13 +36,13 @@ public class VoteEffect extends SpellAbilityEffect { @Override protected String getStackDescription(final SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - sb.append(StringUtils.join(getDefinedPlayersOrTargeted(sa), ", ")); - sb.append(" vote "); + sb.append(Lang.joinHomogenous(getDefinedPlayersOrTargeted(sa))).append(" vote "); if (sa.hasParam("VoteType")) { - sb.append(StringUtils.join(sa.getParam("VoteType").split(","), " or ")); + sb.append("for ").append(StringUtils.join(sa.getParam("VoteType").split(","), " or ")); } else if (sa.hasParam("VoteMessage")) { sb.append(sa.getParam("VoteMessage")); } + sb.append("."); return sb.toString(); } diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index 4e1cc6a80ee..e4c43590940 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -350,9 +350,17 @@ public class CardFactory { planesWalkTrigger.setOverridingAbility(AbilityFactory.getAbility(rolledWalk, card)); card.addTrigger(planesWalkTrigger); + String chaosTrig = "Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Static$ True"; + + String rolledChaos = "DB$ ChaosEnsues"; + + Trigger chaosTrigger = TriggerHandler.parseTrigger(chaosTrig, card, true); + chaosTrigger.setOverridingAbility(AbilityFactory.getAbility(rolledChaos, card)); + card.addTrigger(chaosTrigger); + String specialA = "ST$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | Activator$ Player | SpecialAction$ True" + " | ActivationZone$ Command | SpellDescription$ Roll the planar dice. X is equal to the number of " + - "times you have previously taken this action this turn."; + "times you have previously taken this action this turn. | CostDesc$ {X}: "; SpellAbility planarRoll = AbilityFactory.getAbility(specialA, card); planarRoll.setSVar("X", "Count$PlanarDiceSpecialActionThisTurn"); diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index b02ad738922..77dc2a7a033 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -209,6 +209,7 @@ public class Player extends GameEntity implements Comparable { private Map maingameCardsMap = Maps.newHashMap(); private CardCollection currentPlanes = new CardCollection(); + private CardCollection planeswalkedToThisTurn = new CardCollection(); private PlayerStatistics stats = new PlayerStatistics(); private PlayerController controller; @@ -1918,6 +1919,10 @@ public class Player extends GameEntity implements Comparable { completedDungeons.clear(); } + public final List getPlaneswalkedToThisTurn() { + return planeswalkedToThisTurn; + } + public final void altWinBySpellEffect(final String sourceName) { if (cantWin()) { System.out.println("Tried to win, but currently can't."); @@ -2458,6 +2463,7 @@ public class Player extends GameEntity implements Comparable { setNumManaConversion(0); damageReceivedThisTurn.clear(); + planeswalkedToThisTurn.clear(); // set last turn nr if (game.getPhaseHandler().isPlayerTurn(this)) { @@ -2617,7 +2623,7 @@ public class Player extends GameEntity implements Comparable { * Then runs triggers. */ public void planeswalkTo(SpellAbility sa, final CardCollectionView destinations) { - System.out.println(getName() + ": planeswalk to " + destinations.toString()); + System.out.println(getName() + " planeswalks to " + destinations.toString()); currentPlanes.addAll(destinations); game.getView().updatePlanarPlayer(getView()); @@ -2625,8 +2631,9 @@ public class Player extends GameEntity implements Comparable { moveParams.put(AbilityKey.LastStateBattlefield, sa.getLastStateBattlefield()); moveParams.put(AbilityKey.LastStateGraveyard, sa.getLastStateGraveyard()); - for (Card c : currentPlanes) { + for (Card c : destinations) { game.getAction().moveTo(ZoneType.Command, c, sa, moveParams); + planeswalkedToThisTurn.add(c); //getZone(ZoneType.PlanarDeck).remove(c); //getZone(ZoneType.Command).add(c); } @@ -2634,7 +2641,7 @@ public class Player extends GameEntity implements Comparable { game.setActivePlanes(currentPlanes); //Run PlaneswalkedTo triggers here. final Map runParams = AbilityKey.newMap(); - runParams.put(AbilityKey.Cards, currentPlanes); + runParams.put(AbilityKey.Cards, destinations); game.getTriggerHandler().runTrigger(TriggerType.PlaneswalkedTo, runParams, false); view.updateCurrentPlaneName(currentPlanes.toString().replaceAll(" \\(.*","").replace("[","")); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java b/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java new file mode 100644 index 00000000000..787acf1650f --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java @@ -0,0 +1,63 @@ +package forge.game.trigger; + +import forge.game.GameObject; +import forge.game.ability.AbilityKey; +import forge.game.card.Card; +import forge.game.spellability.SpellAbility; + +import java.util.Map; + +public class TriggerChaosEnsues extends Trigger { + + /** + *

+ * Constructor for Trigger_ChaosEnsues + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.game.card.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerChaosEnsues(final Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /* (non-Javadoc) + * @see forge.card.trigger.Trigger#performTest(java.util.Map) + */ + @Override + public boolean performTest(Map runParams) { + if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Player))) { + return false; + } + if (runParams.containsKey(AbilityKey.Affected)) { + final Object o = runParams.get(AbilityKey.Affected); + if (o instanceof GameObject) { + final GameObject c = (GameObject) o; + if (!c.equals(this.getHostCard())) { + return false; + } + } else if (o instanceof Iterable) { + for (Object o2 : (Iterable) o) { + if (!o2.equals(this.getHostCard())) { + return false; + } + } + } + } + return true; + } + + @Override + public void setTriggeringObjects(SpellAbility sa, Map runParams) { + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Player); + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + return ""; + } +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index c0ef1b69bff..990af336a5b 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -39,6 +39,7 @@ public enum TriggerType { ChangesController(TriggerChangesController.class), ChangesZone(TriggerChangesZone.class), ChangesZoneAll(TriggerChangesZoneAll.class), + ChaosEnsues(TriggerChaosEnsues.class), Clashed(TriggerClashed.class), ClassLevelGained(TriggerClassLevelGained.class), ConjureAll(TriggerConjureAll.class), diff --git a/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt b/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt index 72be95b3659..18c29be0598 100644 --- a/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt +++ b/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt @@ -1,9 +1,10 @@ Name:Academy at Tolaria West ManaCost:no cost Types:Plane Dominaria -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouOwn | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards. SVar:AcademicDraw:DB$ Draw | Defined$ You | NumCards$ 7 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, discard your hand. -SVar:RolledChaos:DB$ Discard | Mode$ Hand | Defined$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDiscard | TriggerDescription$ Whenever chaos ensues, discard your hand. +SVar:TrigDiscard:DB$ Discard | Mode$ Hand | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | CardsInHandLE$ 2 -Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever you roll {CHAOS}, discard your hand. +Deckhas:Ability$Discard +Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever chaos ensues, discard your hand. diff --git a/forge-gui/res/cardsfolder/a/agyrem.txt b/forge-gui/res/cardsfolder/a/agyrem.txt index 0a6067f2cd5..2b9275191e8 100644 --- a/forge-gui/res/cardsfolder/a/agyrem.txt +++ b/forge-gui/res/cardsfolder/a/agyrem.txt @@ -10,9 +10,9 @@ T:Mode$ ChangesZone | ValidCard$ Creature.nonWhite | Origin$ Battlefield | Desti SVar:TrigDelay2:DB$ Effect | Name$ Agyrem Effect For non-White Creatures | Triggers$ TrigEOT2 | RememberObjects$ TriggeredCard | Duration$ Permanent SVar:TrigEOT2:Mode$ Phase | Phase$ End of Turn | Execute$ AgyremReturn2 | TriggerDescription$ Return creature to its owner's hand at the beginning of the next end step. SVar:AgyremReturn2:DB$ ChangeZone | Defined$ Remembered | Origin$ Graveyard | Destination$ Hand | SubAbility$ AgyremCleanup -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures can't attack you until a player planeswalks. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures can't attack you until a player planeswalks. SVar:RolledChaos:DB$ Effect | Name$ Agyrem Effect - Can't Attack | StaticAbilities$ STCantAttack | Triggers$ TrigPlaneswalk | Duration$ Permanent SVar:STCantAttack:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature | Target$ You | Description$ Creatures can't attack you until a player planeswalks. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ AgyremCleanup | Static$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a white creature dies, return it to the battlefield under its owner's control at the beginning of the next end step.\nWhenever a nonwhite creature dies, return it to its owner's hand at the beginning of the next end step.\nWhenever you roll {CHAOS}, creatures can't attack you until a player planeswalks. +Oracle:Whenever a white creature dies, return it to the battlefield under its owner's control at the beginning of the next end step.\nWhenever a nonwhite creature dies, return it to its owner's hand at the beginning of the next end step.\nWhenever chaos ensues, creatures can't attack you until a player planeswalks. diff --git a/forge-gui/res/cardsfolder/a/akoum.txt b/forge-gui/res/cardsfolder/a/akoum.txt index 7ec5af49c89..0068edb6057 100644 --- a/forge-gui/res/cardsfolder/a/akoum.txt +++ b/forge-gui/res/cardsfolder/a/akoum.txt @@ -2,7 +2,7 @@ Name:Akoum ManaCost:no cost Types:Plane Zendikar S:Mode$ CastWithFlash | ValidCard$ Enchantment | ValidSA$ Spell | EffectZone$ Command | Caster$ Player | Description$ Players may cast enchantment spells as though they had flash. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, destroy target creature that isn't enchanted. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, destroy target creature that isn't enchanted. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature.unenchanted | TgtPrompt$ Select target creature that isn't enchanted SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True | RollInMain1$ True -Oracle:Players may cast enchantment spells as though they had flash.\nWhenever you roll {CHAOS}, destroy target creature that isn't enchanted. +Oracle:Players may cast enchantment spells as though they had flash.\nWhenever chaos ensues, destroy target creature that isn't enchanted. diff --git a/forge-gui/res/cardsfolder/a/aretopolis.txt b/forge-gui/res/cardsfolder/a/aretopolis.txt index 1f15bf5f42e..a6a4a50bb4d 100644 --- a/forge-gui/res/cardsfolder/a/aretopolis.txt +++ b/forge-gui/res/cardsfolder/a/aretopolis.txt @@ -8,8 +8,8 @@ SVar:ScrollsOfLife:DB$ GainLife | Defined$ You | LifeAmount$ NumScrolls SVar:NumScrolls:Count$CardCounters.SCROLL T:Mode$ Always | TriggerZones$ Command | CheckSVar$ NumScrolls | SVarCompare$ GE10 | Execute$ RolledWalk | TriggerDescription$ When CARDNAME has ten or more scroll counters on it, planeswalk. SVar:RolledWalk:DB$ Planeswalk -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it. -SVar:RolledChaos:DB$ PutCounter | Defined$ Self | CounterType$ SCROLL | CounterNum$ 1 | SubAbility$ ScrollsOfKnowledge -SVar:ScrollsOfKnowledge:DB$ Draw | Defined$ You | NumCards$ NumScrolls +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigPutCounter | TriggerDescription$ Whenever chaos ensues, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it. +SVar:TrigPutCounter:DB$ PutCounter | CounterType$ SCROLL | SubAbility$ ScrollsOfKnowledge +SVar:ScrollsOfKnowledge:DB$ Draw | NumCards$ NumScrolls SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever you roll {CHAOS}, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it. +Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever chaos ensues, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it. diff --git a/forge-gui/res/cardsfolder/a/astral_arena.txt b/forge-gui/res/cardsfolder/a/astral_arena.txt index 0bf2f017133..4fd4a2a5cd6 100644 --- a/forge-gui/res/cardsfolder/a/astral_arena.txt +++ b/forge-gui/res/cardsfolder/a/astral_arena.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kolbahan S:Mode$ AttackRestrict | EffectZone$ Command | MaxAttackers$ 1 | Description$ No more than one creature can attack each combat. S:Mode$ Continuous | EffectZone$ Command | GlobalRule$ No more than one creature can block each combat. | Description$ No more than one creature can block each combat. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 2 damage to each creature. -SVar:RolledChaos:DB$ DamageAll | NumDmg$ 2 | ValidCards$ Creature | ValidDescription$ each creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 2 damage to each creature. +SVar:RolledChaos:DB$ DamageAll | NumDmg$ 2 | ValidCards$ Creature SVar:AIRollPlanarDieParams:Mode$ Random | MinTurn$ 5 -Oracle:No more than one creature can attack each combat.\nNo more than one creature can block each combat.\nWhenever you roll {CHAOS}, Astral Arena deals 2 damage to each creature. +Oracle:No more than one creature can attack each combat.\nNo more than one creature can block each combat.\nWhenever chaos ensues, Astral Arena deals 2 damage to each creature. diff --git a/forge-gui/res/cardsfolder/b/bant.txt b/forge-gui/res/cardsfolder/b/bant.txt index 124c7ff5036..7a6e65a1329 100644 --- a/forge-gui/res/cardsfolder/b/bant.txt +++ b/forge-gui/res/cardsfolder/b/bant.txt @@ -2,9 +2,9 @@ Name:Bant ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Exalted | Description$ All creatures have exalted. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.Green,Creature.White,Creature.Blue | CounterType$ DIVINITY | CounterNum$ 1 | SubAbility$ DivineCharacter SVar:DivineCharacter:DB$ Animate | Defined$ Targeted | staticAbilities$ IndestructibleAspect | Duration$ Permanent SVar:IndestructibleAspect:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_DIVINITY | AddKeyword$ Indestructible SVar:AIRollPlanarDieParams:Mode$ Always | HasColorCreatureInPlay$ GWU -Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever you roll {CHAOS}, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. +Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever chaos ensues, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. diff --git a/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt b/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt index 640d5e437c9..23b23f1c97e 100644 --- a/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt +++ b/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Equilor T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | ValidCard$ Creature | Execute$ TrigPump | TriggerDescription$ Whenever a creature enters the battlefield, it gains double strike and haste until end of turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | KW$ Double Strike & Haste -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exile target nontoken creature you control, then return it to the battlefield under your control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.nonToken+YouCtrl | TgtPrompt$ Select target non-Token creature you control | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ RestorationReturn SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | GainControl$ True SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | RollInMain1$ True -Oracle:Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.\nWhenever you roll {CHAOS}, exile target nontoken creature you control, then return it to the battlefield under your control. +Oracle:Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.\nWhenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/b/breaking_entering.txt b/forge-gui/res/cardsfolder/b/breaking_entering.txt index 40578757c58..246d88cac07 100644 --- a/forge-gui/res/cardsfolder/b/breaking_entering.txt +++ b/forge-gui/res/cardsfolder/b/breaking_entering.txt @@ -11,8 +11,7 @@ ALTERNATE Name:Entering ManaCost:4 B R Types:Sorcery -A:SP$ ChooseCard | Cost$ 4 B R | Choices$ Creature | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChangeZone | SpellDescription$ Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn. -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ChosenCard | GainControl$ True | RememberChanged$ True | SubAbility$ DBPump -SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | SubAbility$ DBCleanup +A:SP$ ChangeZone | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Hidden$ True | RememberChanged$ True | SubAbility$ DBPump | SpellDescription$ Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn. +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn.\nFuse (You may cast one or both halves of this card from your hand.) diff --git a/forge-gui/res/cardsfolder/c/celestine_reef.txt b/forge-gui/res/cardsfolder/c/celestine_reef.txt index fe5ed254da0..34a5685b47e 100644 --- a/forge-gui/res/cardsfolder/c/celestine_reef.txt +++ b/forge-gui/res/cardsfolder/c/celestine_reef.txt @@ -2,11 +2,11 @@ Name:Celestine Reef ManaCost:no cost Types:Plane Luvion S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying+withoutIslandwalk | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures without flying or islandwalk can't attack. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, until a player planeswalks, you can't lose the game and your opponents can't win the game. -SVar:RolledChaos:DB$ Effect | Name$ Celestine Reef Effect | StaticAbilities$ STCantlose,STCantWin | Triggers$ TrigPlaneswalk | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, until a player planeswalks, you can't lose the game and your opponents can't win the game. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ STCantlose,STCantWin | Triggers$ TrigPlaneswalk | Duration$ Permanent SVar:STCantlose:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You can't lose the game. | Description$ Until a player planeswalks, you can't lose the game and your opponents can't win the game. -SVar:STCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ Player.Opponent | AddKeyword$ You can't win the game. +SVar:STCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ Opponent | AddKeyword$ You can't win the game. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ DBCleanup | Static$ True SVar:DBCleanup:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Creatures without flying or islandwalk can't attack.\nWhenever you roll {CHAOS}, until a player planeswalks, you can't lose the game and your opponents can't win the game. +Oracle:Creatures without flying or islandwalk can't attack.\nWhenever chaos ensues, until a player planeswalks, you can't lose the game and your opponents can't win the game. diff --git a/forge-gui/res/cardsfolder/c/cliffside_market.txt b/forge-gui/res/cardsfolder/c/cliffside_market.txt index 3a9bb257acd..04e5c42a145 100644 --- a/forge-gui/res/cardsfolder/c/cliffside_market.txt +++ b/forge-gui/res/cardsfolder/c/cliffside_market.txt @@ -4,8 +4,8 @@ Types:Plane Mercadia T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigLife | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may exchange life totals with target player. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigLife | TriggerZones$ Command | Secondary$ True | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may exchange life totals with target player. SVar:TrigLife:DB$ ExchangeLife | Optional$ True | ValidTgts$ Player | TgtPrompt$ Select target player to exchange life totals with -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exchange control of two target permanents that share a card type. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exchange control of two target permanents that share a card type. SVar:RolledChaos:DB$ ExchangeControl | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Permanent | TgtPrompt$ Select target permanents that share a permanent type | TargetsWithSameCardType$ True AI:RemoveDeck:All AI:RemoveDeck:Random -Oracle:When you planeswalk to Cliffside Market or at the beginning of your upkeep, you may exchange life totals with target player.\nWhenever you roll {CHAOS}, exchange control of two target permanents that share a card type. +Oracle:When you planeswalk to Cliffside Market or at the beginning of your upkeep, you may exchange life totals with target player.\nWhenever chaos ensues, exchange control of two target permanents that share a card type. diff --git a/forge-gui/res/cardsfolder/e/edge_of_malacol.txt b/forge-gui/res/cardsfolder/e/edge_of_malacol.txt index 74b0cccf0ff..b35267a3cf5 100644 --- a/forge-gui/res/cardsfolder/e/edge_of_malacol.txt +++ b/forge-gui/res/cardsfolder/e/edge_of_malacol.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Belenon R:Event$ Untap | ActiveZones$ Command | ValidCard$ Creature.YouCtrl | ReplaceWith$ RepPutCounter | UntapStep$ True | Description$ If a creature you control would untap during your untap step, put two +1/+1 counters on it instead. SVar:RepPutCounter:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | CounterNum$ 2 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap each creature you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap each creature you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:If a creature you control would untap during your untap step, put two +1/+1 counters on it instead.\nWhenever you roll {CHAOS}, untap each creature you control. +Oracle:If a creature you control would untap during your untap step, put two +1/+1 counters on it instead.\nWhenever chaos ensues, untap each creature you control. diff --git a/forge-gui/res/cardsfolder/e/eloren_wilds.txt b/forge-gui/res/cardsfolder/e/eloren_wilds.txt index ac7eb180887..f17a3ab34eb 100644 --- a/forge-gui/res/cardsfolder/e/eloren_wilds.txt +++ b/forge-gui/res/cardsfolder/e/eloren_wilds.txt @@ -3,10 +3,10 @@ ManaCost:no cost Types:Plane Shandalar T:Mode$ TapsForMana | ValidCard$ Permanent | Execute$ TrigMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced. SVar:TrigMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ TriggeredActivator -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player can't cast spells until a player planeswalks. -SVar:RolledChaos:DB$ Effect | ValidTgts$ Player | IsCurse$ True | Name$ Eloren Wilds Effect | StaticAbilities$ STCantCast | Triggers$ TrigPlaneswalk | RememberObjects$ Targeted | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player can't cast spells until a player planeswalks. +SVar:RolledChaos:DB$ Effect | ValidTgts$ Player | IsCurse$ True | StaticAbilities$ STCantCast | Triggers$ TrigPlaneswalk | RememberObjects$ Targeted | Duration$ Permanent SVar:STCantCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Target player can't cast spells until a player planeswalks. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ ExileSelf | Static$ True SVar:ExileSelf:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced.\nWhenever you roll {CHAOS}, target player can't cast spells until a player planeswalks. +Oracle:Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced.\nWhenever chaos ensues, target player can't cast spells until a player planeswalks. diff --git a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt index 25e96fb7a2d..e7ae2c7ae97 100644 --- a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt +++ b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt @@ -1,9 +1,8 @@ Name:Extract from Darkness ManaCost:3 U B Types:Sorcery -A:SP$ Mill | Cost$ 3 U B | NumCards$ 2 | Defined$ Player | SubAbility$ DBChoose | SpellDescription$ Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. -SVar:DBChoose:DB$ ChooseCard | Defined$ You | Choices$ Creature | ChoiceZone$ Graveyard | Mandatory$ True | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ChosenCard | GainControl$ True +A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChoose | SpellDescription$ Each player mills two cards. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | Mandatory$ True | GainControl$ True | SelectPrompt$ Select a creature card to return to the battlefield | Hidden$ True | StackDescription$ SpellDescription | SpellDescription$ Then you put a creature card from a graveyard onto the battlefield under your control. AI:RemoveDeck:Random -DeckHas:Ability$Graveyard +DeckHas:Ability$Mill|Graveyard Oracle:Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/f/feeding_grounds.txt b/forge-gui/res/cardsfolder/f/feeding_grounds.txt index a4d558d56c7..80ad0ed8aed 100644 --- a/forge-gui/res/cardsfolder/f/feeding_grounds.txt +++ b/forge-gui/res/cardsfolder/f/feeding_grounds.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Muraganda S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Green | Type$ Spell | Amount$ 1 | Description$ Green spells cost {1} less to cast. S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Red | Type$ Spell | Amount$ 1 | Description$ Red spells cost {1} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever you roll {CHAOS}, put X +1/+1 counters on target creature, where X is that creature's mana value. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever chaos ensues, put X +1/+1 counters on target creature, where X is that creature's mana value. SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ Y SVar:Y:Targeted$CardManaCost SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever you roll {CHAOS}, put X +1/+1 counters on target creature, where X is that creature's mana value. +Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever chaos ensues, put X +1/+1 counters on target creature, where X is that creature's mana value. diff --git a/forge-gui/res/cardsfolder/f/fields_of_summer.txt b/forge-gui/res/cardsfolder/f/fields_of_summer.txt index 69aa7773071..37c7b90f7db 100644 --- a/forge-gui/res/cardsfolder/f/fields_of_summer.txt +++ b/forge-gui/res/cardsfolder/f/fields_of_summer.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Moag T:Mode$ SpellCast | OptionalDecider$ TriggeredPlayer | TriggerZones$ Command | Execute$ LifeSummer | TriggerDescription$ Whenever a player casts a spell, that player may gain 2 life. SVar:LifeSummer:DB$ GainLife | Defined$ TriggeredPlayer | LifeAmount$ 2 -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may gain 10 life. +T:Mode$ ChaosEnsues | TriggerZones$ Command | OptionalDecider$ You | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may gain 10 life. SVar:RolledChaos:DB$ GainLife | LifeAmount$ 10 | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever you roll {CHAOS}, you may gain 10 life. +Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever chaos ensues, you may gain 10 life. diff --git a/forge-gui/res/cardsfolder/f/furnace_layer.txt b/forge-gui/res/cardsfolder/f/furnace_layer.txt index c07007cf2c1..93fccc2e662 100644 --- a/forge-gui/res/cardsfolder/f/furnace_layer.txt +++ b/forge-gui/res/cardsfolder/f/furnace_layer.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ FurnaceDiscard | Tri SVar:FurnaceDiscard:DB$ Discard | ValidTgts$ Player | TargetsAtRandom$ True | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | Defined$ Targeted | LifeAmount$ 3 | ConditionDefined$ Remembered | ConditionPresent$ Land | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may destroy target nonland permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may destroy target nonland permanent. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent to destroy SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:When you planeswalk to Furnace Layer or at the beginning of your upkeep, select target player at random. That player discards a card. If that player discards a land card this way, they lose 3 life.\nWhenever you roll {CHAOS}, you may destroy target nonland permanent. +Oracle:When you planeswalk to Furnace Layer or at the beginning of your upkeep, select target player at random. That player discards a card. If that player discards a land card this way, they lose 3 life.\nWhenever chaos ensues, you may destroy target nonland permanent. diff --git a/forge-gui/res/cardsfolder/g/gavony.txt b/forge-gui/res/cardsfolder/g/gavony.txt index 9386453d0fa..8746a233101 100644 --- a/forge-gui/res/cardsfolder/g/gavony.txt +++ b/forge-gui/res/cardsfolder/g/gavony.txt @@ -2,7 +2,7 @@ Name:Gavony ManaCost:no cost Types:Plane Innistrad S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Vigilance | Description$ All creatures have vigilance. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control gain indestructible until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain indestructible until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Indestructible SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:All creatures have vigilance.\nWhenever you roll {CHAOS}, creatures you control gain indestructible until end of turn. +Oracle:All creatures have vigilance.\nWhenever chaos ensues, creatures you control gain indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/g/glen_elendra.txt b/forge-gui/res/cardsfolder/g/glen_elendra.txt index f4c0254ef80..4ed1763304f 100644 --- a/forge-gui/res/cardsfolder/g/glen_elendra.txt +++ b/forge-gui/res/cardsfolder/g/glen_elendra.txt @@ -4,7 +4,7 @@ Types:Plane Lorwyn T:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ You | TriggerZones$ Command | OptionalDecider$ You | Execute$ TrigExchange | TriggerDescription$ At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls. SVar:TrigExchange:DB$ Pump | ValidTgts$ Creature.YouCtrl+dealtCombatDamageThisCombat | TgtPrompt$ Select target creature you control that dealt combat damage to a player | SubAbility$ DBExchange SVar:DBExchange:DB$ ExchangeControl | Defined$ ParentTarget | ValidTgts$ Creature.ControlledBy Player.wasDealtCombatDamageThisCombatBy ParentTarget | TgtPrompt$ Select target creature that player controls. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, gain control of target creature you own. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, gain control of target creature you own. SVar:RolledChaos:DB$ GainControl | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature you own to gain control of AI:RemoveDeck:All -Oracle:At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls.\nWhenever you roll {CHAOS}, gain control of target creature you own. +Oracle:At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls.\nWhenever chaos ensues, gain control of target creature you own. diff --git a/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt b/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt index d500b16b03b..54163fcbb34 100644 --- a/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt +++ b/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Mirrodin T:Mode$ SpellCast | ValidSA$ Instant.singleTarget,Sorcery.singleTarget | Execute$ TrigCopy | TriggerZones$ Command | TriggerDescription$ Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them. SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | Controller$ TriggeredActivator | CopyForEachCanTarget$ Spell,Permanent,Card,Player -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. SVar:RolledChaos:DB$ RepeatEach | RepeatPlayers$ NonTargetedController | RepeatSubAbility$ DBCopy | ValidTgts$ Creature | TgtPrompt$ Select target creature | ChangeZoneTable$ True SVar:DBCopy:DB$ CopyPermanent | Defined$ ParentTarget | Controller$ Remembered AI:RemoveDeck:All -Oracle:Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them.\nWhenever you roll {CHAOS}, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. +Oracle:Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them.\nWhenever chaos ensues, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. diff --git a/forge-gui/res/cardsfolder/g/goldmeadow.txt b/forge-gui/res/cardsfolder/g/goldmeadow.txt index ad1bfa832f9..b1dca3f9091 100644 --- a/forge-gui/res/cardsfolder/g/goldmeadow.txt +++ b/forge-gui/res/cardsfolder/g/goldmeadow.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Lorwyn T:Mode$ ChangesZone | ValidCard$ Land | Destination$ Battlefield | Execute$ TripleGoat | TriggerZones$ Command | TriggerDescription$ Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens. SVar:TripleGoat:DB$ Token | TokenScript$ w_0_1_goat | TokenOwner$ TriggeredCardController | TokenAmount$ 3 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 0/1 white Goat creature token. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 0/1 white Goat creature token. SVar:RolledChaos:DB$ Token | TokenScript$ w_0_1_goat | TokenOwner$ You | TokenAmount$ 1 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens.\nWhenever you roll {CHAOS}, create a 0/1 white Goat creature token. +Oracle:Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens.\nWhenever chaos ensues, create a 0/1 white Goat creature token. diff --git a/forge-gui/res/cardsfolder/g/grand_ossuary.txt b/forge-gui/res/cardsfolder/g/grand_ossuary.txt index 9ea1d1844d8..28154d3bab0 100644 --- a/forge-gui/res/cardsfolder/g/grand_ossuary.txt +++ b/forge-gui/res/cardsfolder/g/grand_ossuary.txt @@ -5,7 +5,7 @@ T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ SVar:OssuaryCounters:DB$ PutCounter | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredCardController | TargetingPlayer$ TriggeredCardController | TgtPrompt$ Select target creature you control to distribute counters to | CounterType$ P1P1 | CounterNum$ OssuaryX | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ OssuaryX SVar:OssuaryX:TriggeredCard$CardPower SVar:MaxTgts:TriggeredCardController$Valid Creature.YouCtrl -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. SVar:RolledChaos:DB$ ChangeZoneAll | ChangeType$ Creature | Imprint$ True | Origin$ Battlefield | Destination$ Exile | SubAbility$ OssuaryRepeat SVar:OssuaryRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ OssuaryTokens | SubAbility$ WalkAway | ChangeZoneTable$ True SVar:OssuaryTokens:DB$ Token | TokenAmount$ OsX | TokenScript$ g_1_1_saproling | TokenOwner$ Player.IsRemembered @@ -13,4 +13,4 @@ SVar:WalkAway:DB$ Planeswalk | SubAbility$ ClearImprinted SVar:ClearImprinted:DB$ Cleanup | ClearImprinted$ True SVar:OsX:ImprintedLKI$FilterControlledByRemembered_CardPower SVar:AIRollPlanarDieParams:Mode$ Random | MinTurn$ 5 -Oracle:Whenever a creature dies, its controller distributes a number of +1/+1 counters equal to its power among any number of target creatures they control.\nWhenever you roll {CHAOS}, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. +Oracle:Whenever a creature dies, its controller distributes a number of +1/+1 counters equal to its power among any number of target creatures they control.\nWhenever chaos ensues, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. diff --git a/forge-gui/res/cardsfolder/g/grixis.txt b/forge-gui/res/cardsfolder/g/grixis.txt index b41573bb3fa..8c213eafeb7 100644 --- a/forge-gui/res/cardsfolder/g/grixis.txt +++ b/forge-gui/res/cardsfolder/g/grixis.txt @@ -2,7 +2,7 @@ Name:Grixis ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Graveyard | Affected$ Creature.YouOwn+Blue,Creature.YouOwn+Red,Creature.YouOwn+Black | AddKeyword$ Unearth:CardManaCost | Description$ Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.) -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put target creature card from a graveyard onto the battlefield under your control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put target creature card from a graveyard onto the battlefield under your control. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | TgtPrompt$ Choose target creature card in a graveyard | ValidTgts$ Creature SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)\nWhenever you roll {CHAOS}, put target creature card from a graveyard onto the battlefield under your control. +Oracle:Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)\nWhenever chaos ensues, put target creature card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt b/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt index 2b194426e3c..987afd9de8c 100644 --- a/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt +++ b/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt @@ -4,7 +4,7 @@ Types:Plane Fabacin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ DreampodsDig | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ DreampodsDig | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. SVar:DreampodsDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target creature card from your graveyard to the battlefield. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to the battlefield. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 -Oracle:When you planeswalk to Grove of the Dreampods or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order.\nWhenever you roll {CHAOS}, return target creature card from your graveyard to the battlefield. +Oracle:When you planeswalk to Grove of the Dreampods or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order.\nWhenever chaos ensues, return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/g/guardian_of_faith.txt b/forge-gui/res/cardsfolder/g/guardian_of_faith.txt index 243dc3fa146..38fa19187c5 100644 --- a/forge-gui/res/cardsfolder/g/guardian_of_faith.txt +++ b/forge-gui/res/cardsfolder/g/guardian_of_faith.txt @@ -5,6 +5,6 @@ PT:3/2 K:Flash K:Vigilance T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPhaseOut | TriggerDescription$ When CARDNAME enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.) -SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select other creature | TargetMin$ 0 | TargetMax$ MaxTgts | SelectPrompt$ Choose any number of creatures you control | Duration$ UntilHostLeavesPlay +SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select any number of other target creatures you control | TargetMin$ 0 | TargetMax$ MaxTgts SVar:MaxTgts:Count$Valid Creature.Other+YouCtrl Oracle:Flash\nVigilance\nWhen Guardian of Faith enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.) diff --git a/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt b/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt index 581b7282b6c..30fd2e83ce7 100644 --- a/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt +++ b/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt @@ -2,7 +2,7 @@ Name:Hedron Fields of Agadeem ManaCost:no cost Types:Plane Zendikar S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.powerGE7 | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ Creatures with power 7 or greater can't attack or block. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) -SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ c_7_7_eldrazi_annihilator | TokenOwner$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) +SVar:RolledChaos:DB$ Token | TokenScript$ c_7_7_eldrazi_annihilator SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Creatures with power 7 or greater can't attack or block.\nWhenever you roll {CHAOS}, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) +Oracle:Creatures with power 7 or greater can't attack or block.\nWhenever chaos ensues, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) diff --git a/forge-gui/res/cardsfolder/h/horizon_boughs.txt b/forge-gui/res/cardsfolder/h/horizon_boughs.txt index cabe1ece4ff..06fad108964 100644 --- a/forge-gui/res/cardsfolder/h/horizon_boughs.txt +++ b/forge-gui/res/cardsfolder/h/horizon_boughs.txt @@ -2,7 +2,7 @@ Name:Horizon Boughs ManaCost:no cost Types:Plane Pyrulea S:Mode$ Continuous | EffectZone$ Command | Affected$ Permanent | AddHiddenKeyword$ CARDNAME untaps during each other player's untap step. | Description$ All permanents untap during each player's untap step. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever you roll {CHAOS}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever chaos ensues, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. SVar:DBFetch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 3 | ShuffleNonMandatory$ True SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All permanents untap during each player's untap step.\nWhenever you roll {CHAOS}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. +Oracle:All permanents untap during each player's untap step.\nWhenever chaos ensues, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. diff --git a/forge-gui/res/cardsfolder/i/immersturm.txt b/forge-gui/res/cardsfolder/i/immersturm.txt index ab5044d5467..52038fe830c 100644 --- a/forge-gui/res/cardsfolder/i/immersturm.txt +++ b/forge-gui/res/cardsfolder/i/immersturm.txt @@ -4,9 +4,9 @@ Types:Plane Valla T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Command | Execute$ TrigDamage | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice. SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ Y | DamageSource$ TriggeredCard | TargetingPlayer$ TriggeredCardController SVar:Y:TriggeredCard$CardPower -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile target creature, then return it to the battlefield under its owner's control. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ RestorationReturn SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice.\nWhenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. +Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice.\nWhenever chaos ensues, exile target creature, then return it to the battlefield under its owner's control. diff --git a/forge-gui/res/cardsfolder/i/incremental_growth.txt b/forge-gui/res/cardsfolder/i/incremental_growth.txt index e9090bc7128..f6644860a8f 100644 --- a/forge-gui/res/cardsfolder/i/incremental_growth.txt +++ b/forge-gui/res/cardsfolder/i/incremental_growth.txt @@ -1,7 +1,7 @@ Name:Incremental Growth ManaCost:3 G G Types:Sorcery -A:SP$ PutCounter | Cost$ 3 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPutTwo | SpellDescription$ Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. +A:SP$ PutCounter | ValidTgts$ Creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPutTwo | SpellDescription$ Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. SVar:DBPutTwo:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select another target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ DBPutThree SVar:DBPutThree:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select a third target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 3 DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt b/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt index b51e88b5131..5bde7091ffc 100644 --- a/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt +++ b/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt @@ -2,6 +2,9 @@ Name:Interplanar Tunnel ManaCost:no cost Types:Phenomenon T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When you encounter CARDNAME, reveal cards from the top of your planar deck until you reveal five plane cards. Put a plane card from among them on top of your planar deck, then put the rest of the revealed cards on the bottom in a random order. (Then planeswalk away from this phenomenon.) -SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | SourceZone$ PlanarDeck | DestinationZone$ PlanarDeck | DestinationZone2$ PlanarDeck | LibraryPosition$ 0 | ChangeValid$ Plane | RestRandomOrder$ True | SubAbility$ Replaneswalk -SVar:Replaneswalk:DB$ Planeswalk | Cost$ 0 +SVar:TrigDig:DB$ DigUntil | Amount$ 5 | Valid$ Plane | DigZone$ PlanarDeck | ImprintFound$ True | RememberRevealed$ True | FoundDestination$ PlanarDeck | RevealedDestination$ PlanarDeck | SubAbility$ DBPutOnTop +SVar:PutOnTop:DB$ ChangeZone | ChangeType$ Card.IsImprinted | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ 0 | ForgetChanged$ True | SubAbility$ DBRestOnBottom +SVar:RestOnBottom:DB$ ChangeZone | Defined$ Remembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ Replaneswalk +SVar:Replaneswalk:DB$ Planeswalk | Cost$ 0 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True Oracle:When you encounter Interplanar Tunnel, reveal cards from the top of your planar deck until you reveal five plane cards. Put a plane card from among them on top of your planar deck, then put the rest of the revealed cards on the bottom in a random order. (Then planeswalk away from this phenomenon.) diff --git a/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt b/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt index 73343704809..2406a4040b3 100644 --- a/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt +++ b/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Dominaria T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken | TriggerZones$ Command | Execute$ TrigVesuvaCopy | TriggerDescription$ Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature. SVar:TrigVesuvaCopy:DB$ CopyPermanent | Defined$ TriggeredCardLKICopy | Controller$ TriggeredCardController -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, destroy target creature and all other creatures with the same name as that creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, destroy target creature and all other creatures with the same name as that creature. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature | SubAbility$ DestroyOtherAll SVar:DestroyOtherAll:DB$ DestroyAll | ValidCards$ Targeted.sameName+Other SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True -Oracle:Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.\nWhenever you roll {CHAOS}, destroy target creature and all other creatures with the same name as that creature. +Oracle:Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.\nWhenever chaos ensues, destroy target creature and all other creatures with the same name as that creature. diff --git a/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt b/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt index 85e00e4bbef..fb5553eca90 100644 --- a/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt +++ b/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ Player | Execute$ TrigCopy | TriggerZones$ Command | TriggerDescription$ Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy. SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | Controller$ TriggeredActivator | MayChooseTarget$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, instant and sorcery spells you cast this turn cost {3} less to cast. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, instant and sorcery spells you cast this turn cost {3} less to cast. SVar:RolledChaos:DB$ Effect | StaticAbilities$ ReduceSPcost SVar:ReduceSPcost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ 3 | Description$ Instant and sorcery spells you cast this turn cost 3 less to cast. SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True -Oracle:Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy.\nWhenever you roll {CHAOS}, instant and sorcery spells you cast this turn cost {3} less to cast. +Oracle:Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy.\nWhenever chaos ensues, instant and sorcery spells you cast this turn cost {3} less to cast. diff --git a/forge-gui/res/cardsfolder/j/jund.txt b/forge-gui/res/cardsfolder/j/jund.txt index b7f201d24a8..cf49426e987 100644 --- a/forge-gui/res/cardsfolder/j/jund.txt +++ b/forge-gui/res/cardsfolder/j/jund.txt @@ -3,6 +3,6 @@ ManaCost:no cost Types:Plane Alara T:Mode$ SpellCast | ValidCard$ Creature.Black,Creature.Red,Creature.Green | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ DevourPump | TriggerDescription$ Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.) SVar:DevourPump:DB$ Animate | Defined$ TriggeredCard | Keywords$ Devour:5 | Duration$ Permanent -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create two 1/1 red Goblin creature tokens. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create two 1/1 red Goblin creature tokens. SVar:RolledChaos:DB$ Token | TokenAmount$ 2 | TokenScript$ r_1_1_goblin | TokenOwner$ You -Oracle:Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.)\nWhenever you roll {CHAOS}, create two 1/1 red Goblin creature tokens. +Oracle:Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.)\nWhenever chaos ensues, create two 1/1 red Goblin creature tokens. diff --git a/forge-gui/res/cardsfolder/k/kessig.txt b/forge-gui/res/cardsfolder/k/kessig.txt index 84df9c6738a..e25bc15a0d7 100644 --- a/forge-gui/res/cardsfolder/k/kessig.txt +++ b/forge-gui/res/cardsfolder/k/kessig.txt @@ -2,8 +2,8 @@ Name:Kessig ManaCost:no cost Types:Plane Innistrad R:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidSource$ Creature.nonWerewolf | Description$ Prevent all combat damage that would be dealt by non-Werewolf creatures. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Types$ Werewolf | SubAbility$ DBPump SVar:DBPump:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Trample | NumAtt$ 2 | NumDef$ 2 SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True | HasCreatureInPlay$ True -Oracle:Prevent all combat damage that would be dealt by non-Werewolf creatures.\nWhenever you roll {CHAOS}, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. +Oracle:Prevent all combat damage that would be dealt by non-Werewolf creatures.\nWhenever chaos ensues, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. diff --git a/forge-gui/res/cardsfolder/k/kharasha_foothills.txt b/forge-gui/res/cardsfolder/k/kharasha_foothills.txt index 7e0d3d1f088..a33d458eb97 100644 --- a/forge-gui/res/cardsfolder/k/kharasha_foothills.txt +++ b/forge-gui/res/cardsfolder/k/kharasha_foothills.txt @@ -7,10 +7,10 @@ SVar:DBCopy:DB$ CopyPermanent | Defined$ TriggeredAttacker | NumCopies$ 1 | Toke # The DelayedTrigger is for all player, not just for each attacking, so can't use AtEOT there SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End Of Turn | Execute$ TrigExile | RememberObjects$ ImprintedLKI | TriggerDescription$ At the beginning of the next end step, exile those tokens. | SubAbility$ DBCleanup SVar:TrigExile:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Battlefield | Destination$ Exile -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may sacrifice any number of creatures. If you do, CARDNAME deals that much damage to target creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may sacrifice any number of creatures. If you do, CARDNAME deals that much damage to target creature. SVar:RolledChaos:DB$ Sacrifice | Defined$ You | Amount$ SacX | SacValid$ Creature | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDmg SVar:SacX:Count$Valid Creature.YouCtrl SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature | NumDmg$ DmgX | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:DmgX:Remembered$Amount -Oracle:Whenever a creature you control attacks a player, for each other opponent, you may create a token that's a copy of that creature, tapped and attacking that opponent. Exile those tokens at the beginning of the next end step.\nWhenever you roll {CHAOS}, you may sacrifice any number of creatures. If you do, Kharasha Foothills deals that much damage to target creature. +Oracle:Whenever a creature you control attacks a player, for each other opponent, you may create a token that's a copy of that creature, tapped and attacking that opponent. Exile those tokens at the beginning of the next end step.\nWhenever chaos ensues, you may sacrifice any number of creatures. If you do, Kharasha Foothills deals that much damage to target creature. diff --git a/forge-gui/res/cardsfolder/k/kilnspire_district.txt b/forge-gui/res/cardsfolder/k/kilnspire_district.txt index c7fdbd02d14..5064f909446 100644 --- a/forge-gui/res/cardsfolder/k/kilnspire_district.txt +++ b/forge-gui/res/cardsfolder/k/kilnspire_district.txt @@ -5,9 +5,9 @@ T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ PutCounter | TriggerDes T:Mode$ Phase | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} for each charge counter on it. SVar:PutCounter:DB$ PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ R | Amount$ Y -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may pay {X}. If you do, CARDNAME deals X damage to any target. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may pay {X}. If you do, CARDNAME deals X damage to any target. SVar:RolledChaos:AB$ DealDamage | Cost$ X | ValidTgts$ Any | NumDmg$ X SVar:X:Count$xPaid SVar:Y:Count$CardCounters.CHARGE SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever you roll {CHAOS}, you may pay {X}. If you do, Kilnspire District deals X damage to any target. +Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever chaos ensues, you may pay {X}. If you do, Kilnspire District deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/k/krosa.txt b/forge-gui/res/cardsfolder/k/krosa.txt index 4db4f3f0550..dc8909f0c61 100644 --- a/forge-gui/res/cardsfolder/k/krosa.txt +++ b/forge-gui/res/cardsfolder/k/krosa.txt @@ -2,7 +2,7 @@ Name:Krosa ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 2 | AddToughness$ 2 | Description$ All creatures get +2/+2. -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may add {W}{U}{B}{R}{G}. +T:Mode$ ChaosEnsues | TriggerZones$ Command | OptionalDecider$ You | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may add {W}{U}{B}{R}{G}. SVar:RolledChaos:DB$ Mana | Produced$ W U B R G SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True -Oracle:All creatures get +2/+2.\nWhenever you roll {CHAOS}, you may add {W}{U}{B}{R}{G}. +Oracle:All creatures get +2/+2.\nWhenever chaos ensues, you may add {W}{U}{B}{R}{G}. diff --git a/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt b/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt index ca9dfeded64..0f58bfad40e 100644 --- a/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt +++ b/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt @@ -6,7 +6,7 @@ SVar:SacToIdol:DB$ Sacrifice | Defined$ You | SacValid$ Creature | SubAbility$ I SVar:IdolWalk:DB$ Planeswalk | ConditionCheckSVar$ IdolX | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:IdolX:Remembered$Amount -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, any number of target players each create a 2/2 black Zombie creature token. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, any number of target players each create a 2/2 black Zombie creature token. SVar:RolledChaos:DB$ Token | ValidTgts$ Player | TgtPrompt$ Select target player to receive zombie token | TargetMin$ 0 | TargetMax$ MaxTgt | TokenScript$ b_2_2_zombie | TokenOwner$ Targeted | TokenAmount$ 1 SVar:MaxTgt:PlayerCountPlayers$Amount -Oracle:At the beginning of your upkeep, sacrifice a creature. If you can't, planeswalk.\nWhenever you roll {CHAOS}, any number of target players each create a 2/2 black Zombie creature token. +Oracle:At the beginning of your upkeep, sacrifice a creature. If you can't, planeswalk.\nWhenever chaos ensues, any number of target players each create a 2/2 black Zombie creature token. diff --git a/forge-gui/res/cardsfolder/l/lethe_lake.txt b/forge-gui/res/cardsfolder/l/lethe_lake.txt index 8534c58b2ca..f25edc23efc 100644 --- a/forge-gui/res/cardsfolder/l/lethe_lake.txt +++ b/forge-gui/res/cardsfolder/l/lethe_lake.txt @@ -2,8 +2,8 @@ Name:Lethe Lake ManaCost:no cost Types:Plane Arkhos T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ LetheMill | TriggerDescription$ At the beginning of your upkeep, mill ten cards. -SVar:LetheMill:DB$ Mill | Defined$ You | NumCards$ 10 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player puts the top 10 cards of their library into their graveyard. -SVar:RolledChaos:DB$ Mill | ValidTgts$ Player | TgtPrompt$ Choose target player to mill. | NumCards$ 10 +SVar:LetheMill:DB$ Mill | NumCards$ 10 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player mills ten cards. +SVar:RolledChaos:DB$ Mill | ValidTgts$ Player | NumCards$ 10 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:At the beginning of your upkeep, mill ten cards.\nWhenever you roll {CHAOS}, target player mills ten cards. +Oracle:At the beginning of your upkeep, mill ten cards.\nWhenever chaos ensues, target player mills ten cards. diff --git a/forge-gui/res/cardsfolder/l/llanowar.txt b/forge-gui/res/cardsfolder/l/llanowar.txt index efa854740ca..ff01ae39099 100644 --- a/forge-gui/res/cardsfolder/l/llanowar.txt +++ b/forge-gui/res/cardsfolder/l/llanowar.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddAbility$ LlanowarAb | Description$ All creatures have "{T}: Add {G}{G}.". SVar:LlanowarAb:AB$ Mana | Cost$ T | Amount$ 2 | Produced$ G | SpellDescription$ Add {G}{G}. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all creatures you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all creatures you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:All creatures have "{T}: Add {G}{G}."\nWhenever you roll {CHAOS}, untap all creatures you control. +Oracle:All creatures have "{T}: Add {G}{G}."\nWhenever chaos ensues, untap all creatures you control. diff --git a/forge-gui/res/cardsfolder/m/minamo.txt b/forge-gui/res/cardsfolder/m/minamo.txt index 31d2340a08c..db4af559772 100644 --- a/forge-gui/res/cardsfolder/m/minamo.txt +++ b/forge-gui/res/cardsfolder/m/minamo.txt @@ -3,10 +3,10 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever a player casts a spell, that player may draw a card. SVar:TrigDraw:DB$ Draw | Defined$ TriggeredActivator | OptionalDecider$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player may return a blue card from their graveyard to their hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player may return a blue card from their graveyard to their hand. SVar:RolledChaos:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBChangeZoneAll SVar:DBChoose:DB$ ChooseCard | Choices$ Card.RememberedPlayerCtrl+Blue | ChoiceZone$ Graveyard | Defined$ Player.IsRemembered | Amount$ 1 | RememberChosen$ True SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasColorInGraveyard$ U -Oracle:Whenever a player casts a spell, that player may draw a card.\nWhenever you roll {CHAOS}, each player may return a blue card from their graveyard to their hand. +Oracle:Whenever a player casts a spell, that player may draw a card.\nWhenever chaos ensues, each player may return a blue card from their graveyard to their hand. diff --git a/forge-gui/res/cardsfolder/m/mirrored_depths.txt b/forge-gui/res/cardsfolder/m/mirrored_depths.txt index 0f57e8fd101..7869b0c9a67 100644 --- a/forge-gui/res/cardsfolder/m/mirrored_depths.txt +++ b/forge-gui/res/cardsfolder/m/mirrored_depths.txt @@ -4,9 +4,9 @@ Types:Plane Karsus T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ TrigFlip | TriggerDescription$ Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell. SVar:TrigFlip:DB$ FlipACoin | Caller$ TriggeredActivator | LoseSubAbility$ DBCounter SVar:DBCounter:DB$ Counter | Defined$ TriggeredSpellAbility -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. SVar:RolledChaos:DB$ PeekAndReveal | ValidTgts$ Player | NoPeek$ True | RememberRevealed$ True | SubAbility$ DBPlay SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell.\nWhenever you roll {CHAOS}, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. +Oracle:Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell.\nWhenever chaos ensues, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/mount_keralia.txt b/forge-gui/res/cardsfolder/m/mount_keralia.txt index 063c3d31244..2a53f50c562 100644 --- a/forge-gui/res/cardsfolder/m/mount_keralia.txt +++ b/forge-gui/res/cardsfolder/m/mount_keralia.txt @@ -5,9 +5,9 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | SVar:BuildPressure:DB$ PutCounter | Defined$ Self | CounterType$ PRESSURE | CounterNum$ 1 T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ Eruption | TriggerDescription$ When you planeswalk away from CARDNAME, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker. SVar:Eruption:DB$ DamageAll | ValidCards$ Creature,Planeswalker | ValidDescription$ each creature and each planeswalker. | NumDmg$ KeraliaX -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, prevent all damage that planes named CARDNAME would deal this game to permanents you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, prevent all damage that planes named CARDNAME would deal this game to permanents you control. SVar:RolledChaos:DB$ Effect | Name$ Mount Keralia Effect | ReplacementEffects$ RPrevent | EffectOwner$ You | Duration$ Permanent | SpellDescription$ Prevent all damage that planes named CARDNAME would deal this game to permanents you control. SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Permanent.YouCtrl | ValidSource$ Plane.namedMount Keralia | Description$ Prevent all damage that planes named Mount Keralia would deal this game to permanents you control. SVar:KeraliaX:TriggeredCard$CardCounters.PRESSURE SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True -Oracle:At the beginning of your end step, put a pressure counter on Mount Keralia.\nWhen you planeswalk away from Mount Keralia, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker.\nWhenever you roll {CHAOS}, prevent all damage that planes named Mount Keralia would deal this game to permanents you control. +Oracle:At the beginning of your end step, put a pressure counter on Mount Keralia.\nWhen you planeswalk away from Mount Keralia, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker.\nWhenever chaos ensues, prevent all damage that planes named Mount Keralia would deal this game to permanents you control. diff --git a/forge-gui/res/cardsfolder/m/murasa.txt b/forge-gui/res/cardsfolder/m/murasa.txt index 61ba3b28145..a3d80a86cf5 100644 --- a/forge-gui/res/cardsfolder/m/murasa.txt +++ b/forge-gui/res/cardsfolder/m/murasa.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Zendikar T:Mode$ ChangesZone | ValidCard$ Creature.nonToken | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | Execute$ TrigRamp | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle. SVar:TrigRamp:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 | DefinedPlayer$ TriggeredCardController | ShuffleNonMandatory$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target land becomes a 4/4 creature that's still a land. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target land becomes a 4/4 creature that's still a land. SVar:RolledChaos:DB$ Animate | ValidTgts$ Land | Power$ 4 | Toughness$ 4 | Types$ Creature | Duration$ Permanent SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever you roll {CHAOS}, target land becomes a 4/4 creature that's still a land. +Oracle:Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever chaos ensues, target land becomes a 4/4 creature that's still a land. diff --git a/forge-gui/res/cardsfolder/n/naar_isle.txt b/forge-gui/res/cardsfolder/n/naar_isle.txt index 2313f683e53..2d599c28770 100644 --- a/forge-gui/res/cardsfolder/n/naar_isle.txt +++ b/forge-gui/res/cardsfolder/n/naar_isle.txt @@ -5,7 +5,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execu SVar:TrigPutCounter:DB$ PutCounter | CounterType$ FLAME | CounterNum$ 1 | SubAbility$ DBDmg SVar:DBDmg:DB$ DealDamage | Defined$ You | NumDmg$ Y SVar:Y:Count$CardCounters.FLAME -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 3 damage to target player or planeswalker. -SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player,Planeswalker | NumDmg$ 3 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 3 damage to target player or planeswalker. +SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever you roll {CHAOS}, Naar Isle deals 3 damage to target player or planeswalker. +Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever chaos ensues, Naar Isle deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/n/naya.txt b/forge-gui/res/cardsfolder/n/naya.txt index 293dda39a18..c70183c4b96 100644 --- a/forge-gui/res/cardsfolder/n/naya.txt +++ b/forge-gui/res/cardsfolder/n/naya.txt @@ -2,8 +2,8 @@ Name:Naya ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | Affected$ You | EffectZone$ Command | AdjustLandPlays$ Unlimited | Description$ You may play any number of lands on each of your turns. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature.Red+YouCtrl,Creature.Green+YouCtrl,Creature.White+YouCtrl | TgtPrompt$ Select target red, green, or white creature you control | NumAtt$ Y | NumDef$ Y SVar:Y:Count$Valid Land.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasColorCreatureInPlay$ RGW -Oracle:You may play any number of lands on each of your turns.\nWhenever you roll {CHAOS}, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. +Oracle:You may play any number of lands on each of your turns.\nWhenever chaos ensues, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. diff --git a/forge-gui/res/cardsfolder/n/nephalia.txt b/forge-gui/res/cardsfolder/n/nephalia.txt index aa3e3afd3f9..43652d4d40c 100644 --- a/forge-gui/res/cardsfolder/n/nephalia.txt +++ b/forge-gui/res/cardsfolder/n/nephalia.txt @@ -5,7 +5,7 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | SVar:TrigMill:DB$ Mill | NumCards$ 7 | SubAbility$ DBRandom SVar:DBRandom:DB$ ChooseCard | Choices$ Card.YouOwn | ChoiceZone$ Graveyard | AtRandom$ True | Amount$ 1 | SubAbility$ DBReturn SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ ChosenCard -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target card from your graveyard to your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target card in your graveyard | ValidTgts$ Card.YouOwn SVar:AIRollPlanarDieParams:Mode$ Always | CardsInGraveyardGE$ 1 -Oracle:At the beginning of your end step, mill seven cards. Then return a card at random from your graveyard to your hand.\nWhenever you roll {CHAOS}, return target card from your graveyard to your hand. +Oracle:At the beginning of your end step, mill seven cards. Then return a card at random from your graveyard to your hand.\nWhenever chaos ensues, return target card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/n/norns_dominion.txt b/forge-gui/res/cardsfolder/n/norns_dominion.txt index 1406178483d..67b519b2ed9 100644 --- a/forge-gui/res/cardsfolder/n/norns_dominion.txt +++ b/forge-gui/res/cardsfolder/n/norns_dominion.txt @@ -4,7 +4,7 @@ Types:Plane New Phyrexia T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.nonLand+counters_LT1_FATE | SubAbility$ DBRemove SVar:DBRemove:DB$ RemoveCounterAll | ValidCards$ Permanent | CounterType$ FATE | AllCounters$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may put a fate counter on target permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may put a fate counter on target permanent. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Permanent | CounterType$ FATE | CounterNum$ 1 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Norn's Dominion, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents.\nWhenever you roll {CHAOS}, you may put a fate counter on target permanent. +Oracle:When you planeswalk away from Norn's Dominion, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents.\nWhenever chaos ensues, you may put a fate counter on target permanent. diff --git a/forge-gui/res/cardsfolder/o/onakke_catacomb.txt b/forge-gui/res/cardsfolder/o/onakke_catacomb.txt index 802980f65c7..17c3220f26a 100644 --- a/forge-gui/res/cardsfolder/o/onakke_catacomb.txt +++ b/forge-gui/res/cardsfolder/o/onakke_catacomb.txt @@ -2,7 +2,7 @@ Name:Onakke Catacomb ManaCost:no cost Types:Plane Shandalar S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | SetColor$ Black | AddKeyword$ Deathtouch | Description$ All creatures are black and have deathtouch. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control get +1/+0 and gain first strike until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control get +1/+0 and gain first strike until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | KW$ First Strike SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True -Oracle:All creatures are black and have deathtouch.\nWhenever you roll {CHAOS}, creatures you control get +1/+0 and gain first strike until end of turn. +Oracle:All creatures are black and have deathtouch.\nWhenever chaos ensues, creatures you control get +1/+0 and gain first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/o/orochi_colony.txt b/forge-gui/res/cardsfolder/o/orochi_colony.txt index 522d4c3cf28..65da5a78198 100644 --- a/forge-gui/res/cardsfolder/o/orochi_colony.txt +++ b/forge-gui/res/cardsfolder/o/orochi_colony.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigRamp | TriggerZones$ Command | TriggerDescription$ Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle. SVar:TrigRamp:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature can't be blocked this turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature can't be blocked this turn. SVar:RolledChaos:DB$ Effect | ValidTgts$ Creature | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | AILogic$ Pump SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ This creature can't be blocked this turn. SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True -Oracle:Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever you roll {CHAOS}, target creature can't be blocked this turn. +Oracle:Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever chaos ensues, target creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/o/orzhova.txt b/forge-gui/res/cardsfolder/o/orzhova.txt index e7e9747bf32..f81475cc2b3 100644 --- a/forge-gui/res/cardsfolder/o/orzhova.txt +++ b/forge-gui/res/cardsfolder/o/orzhova.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ OrzhovaDeal | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all creature cards from their graveyard to the battlefield. SVar:OrzhovaDeal:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, for each opponent, exile up to one target creature card from that player's graveyard. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, for each opponent, exile up to one target creature card from that player's graveyard. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature each opponent controls. | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True SVar:OneEach:PlayerCountOpponents$Amount SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Orzhova, each player returns all creature cards from their graveyard to the battlefield.\nWhenever you roll {CHAOS}, for each opponent, exile up to one target creature card from that player's graveyard. +Oracle:When you planeswalk away from Orzhova, each player returns all creature cards from their graveyard to the battlefield.\nWhenever chaos ensues, for each opponent, exile up to one target creature card from that player's graveyard. diff --git a/forge-gui/res/cardsfolder/o/otaria.txt b/forge-gui/res/cardsfolder/o/otaria.txt index 01d4c4e14e3..2c4a0228ef7 100644 --- a/forge-gui/res/cardsfolder/o/otaria.txt +++ b/forge-gui/res/cardsfolder/o/otaria.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Instant,Sorcery | EffectZone$ Command | AffectedZone$ Graveyard | AddKeyword$ Flashback | Description$ Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.) S:Mode$ Continuous | Affected$ Instant.wasCastFromGraveyard,Sorcery.wasCastFromGraveyard | EffectZone$ Command | AffectedZone$ Stack | AddKeyword$ Flashback | Secondary$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, take an extra turn after this one. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, take an extra turn after this one. SVar:RolledChaos:DB$ AddTurn | NumTurns$ 1 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.)\nWhenever you roll {CHAOS}, take an extra turn after this one. +Oracle:Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.)\nWhenever chaos ensues, take an extra turn after this one. diff --git a/forge-gui/res/cardsfolder/p/panopticon.txt b/forge-gui/res/cardsfolder/p/panopticon.txt index 48e309abf59..b4806384752 100644 --- a/forge-gui/res/cardsfolder/p/panopticon.txt +++ b/forge-gui/res/cardsfolder/p/panopticon.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Mirrodin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ PanopticonDraw | TriggerDescription$ When you planeswalk to CARDNAME, draw a card. T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | Execute$ PanopticonDraw | TriggerZones$ Command | TriggerDescription$ At the beginning of your draw step, draw an additional card. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever you roll {CHAOS}, draw a card. -SVar:PanopticonDraw:DB$ Draw | Defined$ You | NumCards$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever chaos ensues, draw a card. +SVar:PanopticonDraw:DB$ Draw SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever you roll {CHAOS}, draw a card. +Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever chaos ensues, draw a card. diff --git a/forge-gui/res/cardsfolder/p/pools_of_becoming.txt b/forge-gui/res/cardsfolder/p/pools_of_becoming.txt index a0beff6259b..37c36b075b7 100644 --- a/forge-gui/res/cardsfolder/p/pools_of_becoming.txt +++ b/forge-gui/res/cardsfolder/p/pools_of_becoming.txt @@ -6,9 +6,9 @@ SVar:TrigChangeZone:DB$ ChangeZoneAll | ChangeType$ Card.YouOwn | Origin$ Hand | SVar:DBDraw:DB$ Draw | NumCards$ Y | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Y:Remembered$Amount -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. SVar:RolledChaos:DB$ PeekAndReveal | PeekAmount$ 3 | NoPeek$ True | SourceZone$ PlanarDeck | RememberRevealed$ True | SubAbility$ DBRunChaos SVar:DBRunChaos:DB$ RunChaos | Defined$ Remembered | SubAbility$ DBChangeZone -SVar:DBChangeZone:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | SubAbility$ DBCleanup +SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards.\nWhenever you roll {CHAOS}, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. +Oracle:At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards.\nWhenever chaos ensues, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/p/prahv.txt b/forge-gui/res/cardsfolder/p/prahv.txt index 91c184cc6a1..15eccb3e179 100644 --- a/forge-gui/res/cardsfolder/p/prahv.txt +++ b/forge-gui/res/cardsfolder/p/prahv.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica S:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature.ControlledBy You.castSpellThisTurn | Description$ If you cast a spell this turn, you can't attack with creatures. S:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ You.attackedWithCreaturesThisTurn | Description$ If you attacked with creatures this turn, you can't cast spells. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you gain life equal to the number of cards in your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you gain life equal to the number of cards in your hand. SVar:RolledChaos:DB$ GainLife | LifeAmount$ PrahvX | Defined$ You SVar:PrahvX:Count$InYourHand SVar:AIRollPlanarDieParams:Mode$ Always | CardsInHandGE$ 2 -Oracle:If you cast a spell this turn, you can't attack with creatures.\nIf you attacked with creatures this turn, you can't cast spells.\nWhenever you roll {CHAOS}, you gain life equal to the number of cards in your hand. +Oracle:If you cast a spell this turn, you can't attack with creatures.\nIf you attacked with creatures this turn, you can't cast spells.\nWhenever chaos ensues, you gain life equal to the number of cards in your hand. diff --git a/forge-gui/res/cardsfolder/q/quicksilver_sea.txt b/forge-gui/res/cardsfolder/q/quicksilver_sea.txt index 1280af31b79..80d7b86c734 100644 --- a/forge-gui/res/cardsfolder/q/quicksilver_sea.txt +++ b/forge-gui/res/cardsfolder/q/quicksilver_sea.txt @@ -4,9 +4,9 @@ Types:Plane Mirrodin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ QuicksilverScry | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ QuicksilverScry | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) SVar:QuicksilverScry:DB$ Scry | ScryNum$ 4 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top card of your library. You may play it without paying its mana cost. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top card of your library. You may play it without paying its mana cost. SVar:RolledChaos:DB$ PeekAndReveal | RememberRevealed$ True | SubAbility$ DBPlay SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Quicksilver Sea or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\nWhenever you roll {CHAOS}, reveal the top card of your library. You may play it without paying its mana cost. +Oracle:When you planeswalk to Quicksilver Sea or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\nWhenever chaos ensues, reveal the top card of your library. You may play it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/r/ravens_run.txt b/forge-gui/res/cardsfolder/r/ravens_run.txt index 2ca1031aa9e..1d1b83ed5c0 100644 --- a/forge-gui/res/cardsfolder/r/ravens_run.txt +++ b/forge-gui/res/cardsfolder/r/ravens_run.txt @@ -2,10 +2,9 @@ Name:Raven's Run ManaCost:no cost Types:Plane Shadowmoor S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Wither | Description$ All Creatures have Wither (They deal damage to creatures in the form of -1/-1 counters.) -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos1 | TriggerDescription$ Whenever you roll {CHAOS}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. -SVar:RolledChaos1:DB$ PutCounter | ValidTgts$ Creature | CounterType$ M1M1 | CounterNum$ 1 | RememberTargets$ True | SubAbility$ RolledChaos2 -SVar:RolledChaos2:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 2 | RememberTargets$ True | SubAbility$ RolledChaos3 -SVar:RolledChaos3:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 3 | SubAbility$ RolledChaosCleanup -SVar:RolledChaosCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ ChaosEnsues | OptionalDecider$ You | TriggerZones$ Command | Execute$ TrigPutCounter | TriggerDescription$ Whenever chaos ensues, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. +SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TargetUnique$ True | CounterType$ M1M1 | SubAbility$ DBPutTwo +SVar:DBPutTwo:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select another target creature | TargetUnique$ True | CounterType$ M1M1 | CounterNum$ 2 | SubAbility$ DBPutThree +SVar:DBPutThree:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select a third target creature | TargetUnique$ True | CounterType$ M1M1 | CounterNum$ 3 SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True -Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever you roll {CHAOS}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. +Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever chaos ensues, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. diff --git a/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt b/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt index 249478cd395..30069aa0287 100644 --- a/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt +++ b/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Serra's Realm T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy all nonland permanents. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.nonLand | ValidDesc$ all nonland permanents -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may have your life total become 20. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may have your life total become 20. SVar:RolledChaos:DB$ SetLife | Defined$ You | LifeAmount$ 20 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Sanctum of Serra, destroy all nonland permanents.\nWhenever you roll {CHAOS}, you may have your life total become 20. +Oracle:When you planeswalk away from Sanctum of Serra, destroy all nonland permanents.\nWhenever chaos ensues, you may have your life total become 20. diff --git a/forge-gui/res/cardsfolder/s/sea_of_sand.txt b/forge-gui/res/cardsfolder/s/sea_of_sand.txt index d7c51e148c5..c23e91a82f5 100644 --- a/forge-gui/res/cardsfolder/s/sea_of_sand.txt +++ b/forge-gui/res/cardsfolder/s/sea_of_sand.txt @@ -9,7 +9,7 @@ T:Mode$ Drawn | ValidCard$ Card.Land | TriggerZones$ Command | Execute$ TrigGain SVar:TrigGain:DB$ GainLife | Defined$ TriggeredCardController | LifeAmount$ 3 T:Mode$ Drawn | ValidCard$ Card.nonLand | TriggerZones$ Command | Execute$ TrigLose | TriggerDescription$ Whenever a player draws a nonland card, that player loses 3 life. SVar:TrigLose:DB$ LoseLife | Defined$ TriggeredCardController | LifeAmount$ 3 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put target permanent on top of its owner's library. -SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put target permanent on top of its owner's library. +SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Permanent | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Players reveal each card they draw.\nWhenever a player draws a land card, that player gains 3 life.\nWhenever a player draws a nonland card, that player loses 3 life.\nWhenever you roll {CHAOS}, put target permanent on top of its owner's library. +Oracle:Players reveal each card they draw.\nWhenever a player draws a land card, that player gains 3 life.\nWhenever a player draws a nonland card, that player loses 3 life.\nWhenever chaos ensues, put target permanent on top of its owner's library. diff --git a/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt b/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt index f6e03eaf53b..6556b62c590 100644 --- a/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt +++ b/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt @@ -6,9 +6,9 @@ SVar:DoubleToken:DB$ ReplaceToken | Type$ Amount R:Event$ AddCounter | ActiveZones$ Command | ValidCard$ Permanent.inZoneBattlefield | EffectOnly$ True | ReplaceWith$ DoubleCounters | Description$ If an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead. SVar:DoubleCounters:DB$ ReplaceCounter | Amount$ Z SVar:Z:ReplaceCount$CounterNum/Twice -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. SVar:RolledChaos:DB$ Effect | AILogic$ Always | Triggers$ TrigTapForMana SVar:TrigTapForMana:Mode$ TapsForMana | TriggerZones$ Command | ValidCard$ Land | Activator$ You | Execute$ TrigMana | Static$ True | TriggerDescription$ Whenever you tap a land for mana, add one mana of any type that land produced. SVar:TrigMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 1 | RollInMain1$ True -Oracle:If an effect would create one or more tokens, it creates twice that many of those tokens instead.\nIf an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead.\nWhenever you roll {CHAOS}, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. +Oracle:If an effect would create one or more tokens, it creates twice that many of those tokens instead.\nIf an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead.\nWhenever chaos ensues, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. diff --git a/forge-gui/res/cardsfolder/s/shiv.txt b/forge-gui/res/cardsfolder/s/shiv.txt index 139dfe0b408..639bb4d8ded 100644 --- a/forge-gui/res/cardsfolder/s/shiv.txt +++ b/forge-gui/res/cardsfolder/s/shiv.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddAbility$ Pump | Description$ All creatures have "{R}: This creature gets +1/+0 until end of turn." SVar:Pump:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 5/5 red Dragon creature token with flying. -SVar:RolledChaos:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ r_5_5_dragon_flying +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 5/5 red Dragon creature token with flying. +SVar:RolledChaos:DB$ Token | TokenScript$ r_5_5_dragon_flying SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All creatures have "{R}: This creature gets +1/+0 until end of turn."\nWhenever you roll {CHAOS}, create a 5/5 red Dragon creature token with flying. +Oracle:All creatures have "{R}: This creature gets +1/+0 until end of turn."\nWhenever chaos ensues, create a 5/5 red Dragon creature token with flying. diff --git a/forge-gui/res/cardsfolder/s/skybreen.txt b/forge-gui/res/cardsfolder/s/skybreen.txt index c1c754d8363..5e003b6053d 100644 --- a/forge-gui/res/cardsfolder/s/skybreen.txt +++ b/forge-gui/res/cardsfolder/s/skybreen.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Kaldheim S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayLookAt$ Player | Description$ Players play with the top card of their libraries revealed. S:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card.sharesCardTypeWith EachTopLibrary | Description$ Spells that share a card type with the top card of a library can't be cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player loses life equal to the number of cards in their hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player loses life equal to the number of cards in their hand. SVar:RolledChaos:DB$ LoseLife | ValidTgts$ Player | LifeAmount$ Y SVar:Y:TargetedPlayer$CardsInHand SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Players play with the top card of their libraries revealed.\nSpells that share a card type with the top card of a library can't be cast.\nWhenever you roll {CHAOS}, target player loses life equal to the number of cards in their hand. +Oracle:Players play with the top card of their libraries revealed.\nSpells that share a card type with the top card of a library can't be cast.\nWhenever chaos ensues, target player loses life equal to the number of cards in their hand. diff --git a/forge-gui/res/cardsfolder/s/sokenzan.txt b/forge-gui/res/cardsfolder/s/sokenzan.txt index dbb77825cd1..4645a6e1e33 100644 --- a/forge-gui/res/cardsfolder/s/sokenzan.txt +++ b/forge-gui/res/cardsfolder/s/sokenzan.txt @@ -2,8 +2,8 @@ Name:Sokenzan ManaCost:no cost Types:Plane Kamigawa S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Haste | Description$ All creatures get +1/+1 and have haste. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.attackedThisTurn | SubAbility$ DBAddCombat SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | FollowedBy$ Main2 | ConditionPhases$ Main1,Main2 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All creatures get +1/+1 and have haste.\nWhenever you roll {CHAOS}, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +Oracle:All creatures get +1/+1 and have haste.\nWhenever chaos ensues, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. diff --git a/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt b/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt index 6070fd82c4b..797d684e68d 100644 --- a/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt +++ b/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt @@ -4,11 +4,11 @@ Types:Legendary Creature Cat Avatar PT:5/4 T:Mode$ ChangesZone | Origin$ Any | OptionalDecider$ You | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control. T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigChangeZone | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control. -SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Tapped$ True | TgtPrompt$ Select target land card in a graveyard | ValidTgts$ Land -A:AB$ GainLife | Cost$ G Discard<1/Land> | LifeAmount$ 3 | SpellDescription$ You gain 3 Life +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Tapped$ True | Hidden$ True | ChangeType$ Land +A:AB$ GainLife | Cost$ G Discard<1/Land> | LifeAmount$ 3 | SpellDescription$ You gain 3 life. A:AB$ Draw | Cost$ 1 R Discard<1/Land> | SpellDescription$ Draw a card. -A:AB$ Pump | Cost$ 2 B Discard<1/Land> | KW$ Indestructible | SubAbility$ DBTap | SpellDescription$ CARDNAME gains indestructible until end of turn. Tap it. -SVar:DBTap:DB$ Tap | Defined$ Self +A:AB$ Pump | Cost$ 2 B Discard<1/Land> | KW$ Indestructible | SubAbility$ DBTap | StackDescription$ SpellDescription | SpellDescription$ CARDNAME gains indestructible until end of turn. +SVar:DBTap:DB$ Tap | Defined$ Self | StackDescription$ SpellDescription | SpellDescription$ Tap it. DeckHas:Ability$LifeGain|Discard & Keyword$Indestructible SVar:HasAttackEffect:TRUE Oracle:Whenever Soul of Windgrace enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control.\n{G}, Discard a land card: You gain 3 life.\n{1}{R}, Discard a land card: Draw a card.\n{2}{B}, Discard a land card: Soul of Windgrace gains indestructible until end of turn. Tap it. diff --git a/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt b/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt index bf5aa5aa460..c234324faa8 100644 --- a/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt +++ b/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt @@ -4,7 +4,7 @@ Types:Plane Xerex S:Mode$ Continuous | EffectZone$ Command | Affected$ Player | SetMaxHandSize$ Unlimited | Description$ Players have no maximum hand size. T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ RolledDie | TriggerDescription$ Whenever you roll the planar die, draw a card. SVar:RolledDie:DB$ Draw | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. SVar:RolledChaos:DB$ Dig | DigNum$ 1 | ChangeNum$ 1 | Reveal$ True | SourceZone$ PlanarDeck | DestinationZone$ PlanarDeck | DestinationZone2$ PlanarDeck | LibraryPosition$ -1 | LibraryPosition2$ 0 | ChangeValid$ Plane | Optional$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Players have no maximum hand size.\nWhenever you roll the planar die, draw a card.\nWhenever you roll {CHAOS}, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. +Oracle:Players have no maximum hand size.\nWhenever you roll the planar die, draw a card.\nWhenever chaos ensues, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. diff --git a/forge-gui/res/cardsfolder/s/stensia.txt b/forge-gui/res/cardsfolder/s/stensia.txt index 3c0774abf0e..8c14034cb20 100644 --- a/forge-gui/res/cardsfolder/s/stensia.txt +++ b/forge-gui/res/cardsfolder/s/stensia.txt @@ -5,7 +5,7 @@ T:Mode$ DamageDone | ValidSource$ Creature.IsNotRemembered | ValidTarget$ Player SVar:TrigPutCounter:DB$ PutCounter | Defined$ TriggeredSourceLKICopy | CounterType$ P1P1 | CounterNum$ 1 | RememberCards$ True T:Mode$ Phase | Phase$ End of Turn | Execute$ DBCleanup | TriggerZones$ Command | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Abilities$ LVAbs | SpellDescription$ Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to target player or planeswalker." -SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. -Oracle:Whenever a creature deals damage to one or more players for the first time each turn, put a +1/+1 counter on it.\nWhenever you roll {CHAOS}, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. +SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ This creature deals 1 damage to target player or planeswalker. +Oracle:Whenever a creature deals damage to one or more players for the first time each turn, put a +1/+1 counter on it.\nWhenever chaos ensues, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. diff --git a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt index 220fa5cdc1f..9c13db02ee3 100644 --- a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt +++ b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt @@ -4,7 +4,7 @@ Types:Plane Rath R:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card,Emblem | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwice | Description$ If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ Y SVar:Y:ReplaceCount$DamageAmount/Twice -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 1 damage to any target. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 1 damage to any target. SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 1 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nWhenever you roll {CHAOS}, Stronghold Furnace deals 1 damage to any target. +Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nWhenever chaos ensues, Stronghold Furnace deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/takenuma.txt b/forge-gui/res/cardsfolder/t/takenuma.txt index 86517289095..3cd6e733a50 100644 --- a/forge-gui/res/cardsfolder/t/takenuma.txt +++ b/forge-gui/res/cardsfolder/t/takenuma.txt @@ -3,6 +3,6 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature | Execute$ TakenumaDraw | TriggerZones$ Command | TriggerDescription$ Whenever a creature leaves the battlefield, its controller draws a card. SVar:TakenumaDraw:DB$ Draw | Defined$ TriggeredCardController | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target creature you control to its owner's hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature you control to its owner's hand. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature to return to your hand | Origin$ Battlefield | Destination$ Hand -Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever you roll {CHAOS}, return target creature you control to its owner's hand. +Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever chaos ensues, return target creature you control to its owner's hand. diff --git a/forge-gui/res/cardsfolder/t/talon_gates.txt b/forge-gui/res/cardsfolder/t/talon_gates.txt index bac81a60258..b3bae55d382 100644 --- a/forge-gui/res/cardsfolder/t/talon_gates.txt +++ b/forge-gui/res/cardsfolder/t/talon_gates.txt @@ -7,7 +7,7 @@ SVar:TimeInGates:DB$ PutCounter | Defined$ Remembered | CounterType$ TIME | Coun SVar:GiveSuspend:DB$ PumpAll | ValidCards$ Card.IsRemembered+withoutSuspend | KW$ Suspend | PumpZone$ Exile | Duration$ Permanent | SubAbility$ DBCleanup | StackDescription$ If it doesn't have suspend, it gains suspend. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:GateX:Remembered$CardManaCost -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, remove two time counters from each suspended card you own. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, remove two time counters from each suspended card you own. SVar:RolledChaos:DB$ RemoveCounterAll | ValidCards$ Card.suspended+YouOwn | CounterType$ TIME | CounterNum$ 2 | ValidZone$ Exile SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True | MaxRollsPerTurn$ 9 -Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, they remove a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever you roll {CHAOS}, remove two time counters from each suspended card you own. +Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, they remove a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever chaos ensues, remove two time counters from each suspended card you own. diff --git a/forge-gui/res/cardsfolder/t/tazeem.txt b/forge-gui/res/cardsfolder/t/tazeem.txt index 0d6a2301ebb..2dea5e91ae6 100644 --- a/forge-gui/res/cardsfolder/t/tazeem.txt +++ b/forge-gui/res/cardsfolder/t/tazeem.txt @@ -2,8 +2,8 @@ Name:Tazeem ManaCost:no cost Types:Plane Zendikar S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures can't block. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, draw a card for each land you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card for each land you control. SVar:RolledChaos:DB$ Draw | NumCards$ Y | Defined$ You SVar:Y:Count$Valid Land.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Creatures can't block.\nWhenever you roll {CHAOS}, draw a card for each land you control. +Oracle:Creatures can't block.\nWhenever chaos ensues, draw a card for each land you control. diff --git a/forge-gui/res/cardsfolder/t/tember_city.txt b/forge-gui/res/cardsfolder/t/tember_city.txt index 9e426cd5994..5de37dcd8a0 100644 --- a/forge-gui/res/cardsfolder/t/tember_city.txt +++ b/forge-gui/res/cardsfolder/t/tember_city.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kinshala T:Mode$ TapsForMana | ValidCard$ Land | Execute$ TrigDmg | TriggerZones$ Command | TriggerDescription$ Whenever a player taps a land for mana, CARDNAME deals 1 damage to that player. SVar:TrigDmg:DB$ DealDamage | Defined$ TriggeredCardController | NumDmg$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each other player sacrifices a nonland permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each other player sacrifices a nonland permanent. SVar:RolledChaos:DB$ Sacrifice | Defined$ Player.Other | SacValid$ Permanent.nonLand SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a player taps a land for mana, Tember City deals 1 damage to that player.\nWhenever you roll {CHAOS}, each other player sacrifices a nonland permanent. +Oracle:Whenever a player taps a land for mana, Tember City deals 1 damage to that player.\nWhenever chaos ensues, each other player sacrifices a nonland permanent. diff --git a/forge-gui/res/cardsfolder/t/the_aether_flues.txt b/forge-gui/res/cardsfolder/t/the_aether_flues.txt index 780e44f762d..a2068b0cd54 100644 --- a/forge-gui/res/cardsfolder/t/the_aether_flues.txt +++ b/forge-gui/res/cardsfolder/t/the_aether_flues.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ FluesSacrifice | Tri SVar:FluesSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Creature | Amount$ 1 | RememberSacrificed$ True | SubAbility$ FluesDig SVar:FluesDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | Shuffle$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may put a creature card from your hand onto the battlefield. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a creature card from your hand onto the battlefield. SVar:RolledChaos:DB$ ChangeZone | ChangeType$ Creature | ChangeNum$ 1 | Origin$ Hand | Destination$ Battlefield SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to The Aether Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever you roll {CHAOS}, you may put a creature card from your hand onto the battlefield. +Oracle:When you planeswalk to The Aether Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever chaos ensues, you may put a creature card from your hand onto the battlefield. diff --git a/forge-gui/res/cardsfolder/t/the_dark_barony.txt b/forge-gui/res/cardsfolder/t/the_dark_barony.txt index b0ba0c73e7c..ccda8048462 100644 --- a/forge-gui/res/cardsfolder/t/the_dark_barony.txt +++ b/forge-gui/res/cardsfolder/t/the_dark_barony.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Ulgrotha T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+nonBlack | TriggerZones$ Command | Execute$ TrigLoseLife | TriggerDescription$ Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardOwner | LifeAmount$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each opponent discards a card. -SVar:RolledChaos:DB$ Discard | Mode$ TgtChoose | Defined$ Player.Opponent | NumCards$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each opponent discards a card. +SVar:RolledChaos:DB$ Discard | Mode$ TgtChoose | Defined$ Opponent SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life.\nWhenever you roll {CHAOS}, each opponent discards a card. +Oracle:Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life.\nWhenever chaos ensues, each opponent discards a card. diff --git a/forge-gui/res/cardsfolder/t/the_eon_fog.txt b/forge-gui/res/cardsfolder/t/the_eon_fog.txt index 19937db26d5..99321af1928 100644 --- a/forge-gui/res/cardsfolder/t/the_eon_fog.txt +++ b/forge-gui/res/cardsfolder/t/the_eon_fog.txt @@ -2,7 +2,7 @@ Name:The Eon Fog ManaCost:no cost Types:Plane Equilor R:Event$ BeginPhase | ActiveZones$ Command | Phase$ Untap | Skip$ True | Description$ Players skip their untap steps. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all permanents you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all permanents you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Permanent.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Players skip their untap steps.\nWhenever you roll {CHAOS}, untap all permanents you control. +Oracle:Players skip their untap steps.\nWhenever chaos ensues, untap all permanents you control. diff --git a/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt b/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt index 58da2d2aa1b..00027653958 100644 --- a/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt +++ b/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Phyrexia T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ FourthSac | TriggerDescription$ At the beginning of your upkeep, sacrifice a nonblack creature. SVar:FourthSac:DB$ Sacrifice | Defined$ You | SacValid$ Creature.nonBlack -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a 2/2 black zombie token onto the battlefield. -SVar:RolledChaos:DB$ Token | TokenScript$ b_2_2_zombie | TokenOwner$ You | TokenAmount$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put a 2/2 black zombie token onto the battlefield. +SVar:RolledChaos:DB$ Token | TokenScript$ b_2_2_zombie SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever you roll {CHAOS}, create a 2/2 black Zombie creature token. +Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever chaos ensues, create a 2/2 black Zombie creature token. diff --git a/forge-gui/res/cardsfolder/t/the_great_forest.txt b/forge-gui/res/cardsfolder/t/the_great_forest.txt index d0c0e26cfb4..9c523fe03a9 100644 --- a/forge-gui/res/cardsfolder/t/the_great_forest.txt +++ b/forge-gui/res/cardsfolder/t/the_great_forest.txt @@ -2,7 +2,7 @@ Name:The Great Forest ManaCost:no cost Types:Plane Lorwyn S:Mode$ CombatDamageToughness | ValidCard$ Creature | Description$ Each creature assigns combat damage equal to its toughness rather than its power. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control get +0/+2 and gain trample until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control get +0/+2 and gain trample until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.ActivePlayerCtrl | NumDef$ 2 | KW$ Trample SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | RollInMain1$ True -Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever you roll {CHAOS}, creatures you control get +0/+2 and gain trample until end of turn. +Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever chaos ensues, creatures you control get +0/+2 and gain trample until end of turn. diff --git a/forge-gui/res/cardsfolder/t/the_hippodrome.txt b/forge-gui/res/cardsfolder/t/the_hippodrome.txt index 0170900bf88..aaa8a231726 100644 --- a/forge-gui/res/cardsfolder/t/the_hippodrome.txt +++ b/forge-gui/res/cardsfolder/t/the_hippodrome.txt @@ -2,8 +2,8 @@ Name:The Hippodrome ManaCost:no cost Types:Plane Segovia S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ -5 | Description$ All Creatures get -5/-0. -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may destroy target creature if it's power is 0 or less. +T:Mode$ ChaosEnsues | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may destroy target creature if it's power is 0 or less. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature | ConditionCheckSVar$ TgtPow | ConditionSVarCompare$ EQ1 | AITgts$ Creature.OppCtrl+powerLE0 SVar:TgtPow:Targeted$Valid Creature.powerLE0 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:All creatures get -5/-0.\nWhenever you roll {CHAOS}, you may destroy target creature if its power is 0 or less. +Oracle:All creatures get -5/-0.\nWhenever chaos ensues, you may destroy target creature if its power is 0 or less. diff --git a/forge-gui/res/cardsfolder/t/the_maelstrom.txt b/forge-gui/res/cardsfolder/t/the_maelstrom.txt index f66a9a57fcb..dbdff8d28fb 100644 --- a/forge-gui/res/cardsfolder/t/the_maelstrom.txt +++ b/forge-gui/res/cardsfolder/t/the_maelstrom.txt @@ -4,7 +4,7 @@ Types:Plane Alara T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDig | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDig | TriggerZones$ Command | Secondary$ True | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library. SVar:TrigDig:DB$ Dig | DigNum$ 1 | Reveal$ True | Optional$ True | ChangeNum$ 1 | ChangeValid$ Permanent | DestinationZone$ Battlefield | DestinationZone2$ Library | LibraryPosition2$ -1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target permanent card from your graveyard to the battlefield. -SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target permanent card in your graveyard | ValidTgts$ Permanent.YouCtrl +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target permanent card from your graveyard to the battlefield. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target permanent card in your graveyard | ValidTgts$ Permanent.YouOwn SVar:AIRollPlanarDieParams:Mode$ Always | CardsInGraveyardGE$ 1 -Oracle:When you planeswalk to The Maelstrom or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library.\nWhenever you roll {CHAOS}, return target permanent card from your graveyard to the battlefield. +Oracle:When you planeswalk to The Maelstrom or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library.\nWhenever chaos ensues, return target permanent card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt b/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt index 5b9da69d664..a085fd5c480 100644 --- a/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt +++ b/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kyneth S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withFlying | AddPower$ 2 | Description$ Creatures with flying get +2/+0. S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying | AddPower$ -2 | Description$ Creatures without flying get -2/-0. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature gains flying until end of turn. -SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature gains flying until end of turn. +SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature | KW$ Flying SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Creatures with flying get +2/+0.\nCreatures without flying get -2/-0.\nWhenever you roll {CHAOS}, target creature gains flying until end of turn. +Oracle:Creatures with flying get +2/+0.\nCreatures without flying get -2/-0.\nWhenever chaos ensues, target creature gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt b/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt index a1b9f01b541..a7706c648ef 100644 --- a/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt +++ b/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt @@ -2,7 +2,7 @@ Name:Trail of the Mage-Rings ManaCost:no cost Types:Plane Vryn S:Mode$ Continuous | AddKeyword$ Rebound | Affected$ Instant,Sorcery | AffectedZone$ Stack | EffectZone$ Command | Description$ Instant and sorcery spells have rebound. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. SVar:RolledChaos:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Instant,Sorcery | ChangeNum$ 1 | ShuffleNonMandatory$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if they cast it from their hand. At the beginning of that player's next upkeep, they may cast that card from exile without paying its mana cost.)\nWhenever you roll {CHAOS}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. +Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if they cast it from their hand. At the beginning of that player's next upkeep, they may cast that card from exile without paying its mana cost.)\nWhenever chaos ensues, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. diff --git a/forge-gui/res/cardsfolder/t/truga_jungle.txt b/forge-gui/res/cardsfolder/t/truga_jungle.txt index 9d05151baa5..98f262c8da0 100644 --- a/forge-gui/res/cardsfolder/t/truga_jungle.txt +++ b/forge-gui/res/cardsfolder/t/truga_jungle.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Ergamon S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Land | AddAbility$ AnyMana | Description$ All lands have "{T}: Add one mana of any color." SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 20 -Oracle:All lands have "{T}: Add one mana of any color."\nWhenever you roll {CHAOS}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. +Oracle:All lands have "{T}: Add one mana of any color."\nWhenever chaos ensues, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/t/turri_island.txt b/forge-gui/res/cardsfolder/t/turri_island.txt index d658a1504b5..90a72ef0b87 100644 --- a/forge-gui/res/cardsfolder/t/turri_island.txt +++ b/forge-gui/res/cardsfolder/t/turri_island.txt @@ -2,7 +2,7 @@ Name:Turri Island ManaCost:no cost Types:Plane Ir S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Creature | Type$ Spell | Amount$ 2 | Description$ Creature spells cost {2} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature | DestinationZone2$ Graveyard SVar:AIRollPlanarDieParams:Mode$ Random -Oracle:Creature spells cost {2} less to cast.\nWhenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. +Oracle:Creature spells cost {2} less to cast.\nWhenever chaos ensues, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. diff --git a/forge-gui/res/cardsfolder/u/undercity_reaches.txt b/forge-gui/res/cardsfolder/u/undercity_reaches.txt index 3a113cc53e6..7e6619fb45e 100644 --- a/forge-gui/res/cardsfolder/u/undercity_reaches.txt +++ b/forge-gui/res/cardsfolder/u/undercity_reaches.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Player | OptionalDecider$ TriggeredSourceController | CombatDamage$ True | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever a creature deals combat damage to a player, its controller may draw a card. SVar:TrigDraw:DB$ Draw | Defined$ TriggeredSourceController | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you have no maximum hand size for the rest of the game. -SVar:RolledChaos:DB$ Effect | Name$ Undercity Reaches Effect | StaticAbilities$ STHandSize | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you have no maximum hand size for the rest of the game. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ STHandSize | Duration$ Permanent SVar:STHandSize:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size. SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever you roll {CHAOS}, you have no maximum hand size for the rest of the game. +Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever chaos ensues, you have no maximum hand size for the rest of the game. diff --git a/forge-gui/res/cardsfolder/upcoming/esper.txt b/forge-gui/res/cardsfolder/upcoming/esper.txt index 67e70691b47..f330c3eb04f 100644 --- a/forge-gui/res/cardsfolder/upcoming/esper.txt +++ b/forge-gui/res/cardsfolder/upcoming/esper.txt @@ -2,8 +2,8 @@ Name:Esper ManaCost:no cost Types:Plane Alara S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Artifact | Type$ Spell | Amount$ 1 | Description$ Artifact spells cost {1} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control that are white, blue, and/or black become artifacts in addition to other types until end of turn. Then each artifact creature you control gains vigilance, menace, and lifelink until end of turn. -SVar:RolledChaos:DB$ AnimateAll | Cost$ 2 G | ValidCards$ Creature.YouCtrl+Black,Creature.YouCtrl+Blue,Creature.YouCtrl+White | Types$ Artifact | SubAbility$ DBPumpAll +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control that are white, blue, and/or black become artifacts in addition to other types until end of turn. Then each artifact creature you control gains vigilance, menace, and lifelink until end of turn. +SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl+Black,Creature.YouCtrl+Blue,Creature.YouCtrl+White | Types$ Artifact | SubAbility$ DBPumpAll SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.Artifact+YouCtrl | KW$ Vigilance & Menace & Lifelink DeckHas:Ability$LifeGain DeckHints:Type$Artifact diff --git a/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt b/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt new file mode 100644 index 00000000000..7776b65f240 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt @@ -0,0 +1,11 @@ +Name:Firemane Commando +ManaCost:3 W +Types:Creature Angel Soldier +PT:4/3 +K:Flying +T:Mode$ AttackersDeclared | Execute$ TrigDraw | IsPresent$ Creature.attacking+YouCtrl | PresentCompare$ GE2 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ You | TriggerDescription$ Whenever you attack with two or more creatures, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ AttackersDeclared | Execute$ TrigTheyDraw | IsPresent$ Creature.attacking | PresentCompare$ GE2 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ Player.Other | TriggerDescription$ Whenever another player attacks with two or more creatures, they draw a card if none of those creatures attacked you. +SVar:TrigTheyDraw:DB$ Draw | Defined$ TriggeredAttackingPlayer | ConditionPresent$ Creature.attackingYou | ConditionCompare$ EQ0 +SVar:PlayMain1:TRUE +Oracle:Flying\nWhenever you attack with two or more creatures, draw a card.\nWhenever another player attacks with two or more creatures, they draw a card if none of those creatures attacked you. diff --git a/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt b/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt new file mode 100644 index 00000000000..f673f9d45b7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt @@ -0,0 +1,9 @@ +Name:Norn's Seedcore +ManaCost:no cost +Types:Plane New Phyrexia +T:Mode$ PlaneswalkedTo | ValidCard$ Plane.Self | Execute$ TrigChaos | TriggerDescription$ When you planeswalk to CARDNAME, chaos ensues. +SVar:TrigChaos:DB$ ChaosEnsues +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDigUntil | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Planeswalk to it, except don't planeswalk away from any plane. Put the rest of the revealed cards on the bottom of your planar deck in any order. +SVar:TrigDigUntil:DB$ DigUntil | Valid$ Plane | DigZone$ PlanarDeck | RememberFound$ True | FoundDestination$ PlanarDeck | RevealedDestination$ PlanarDeck | RevealedLibraryPosition$ -1 | SubAbility$ DBPlaneswalk +SVar:DBPlaneswalk:DB$ Planeswalk | Defined$ Remembered | DontPlaneswalkAway$ True +Oracle:When you planeswalk to Norn's Seedcore, chaos ensues.\nWhenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Planeswalk to it, except don't planeswalk away from any plane. Put the rest of the revealed cards on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/nyx.txt b/forge-gui/res/cardsfolder/upcoming/nyx.txt index bf9ee5912d0..024360a410a 100644 --- a/forge-gui/res/cardsfolder/upcoming/nyx.txt +++ b/forge-gui/res/cardsfolder/upcoming/nyx.txt @@ -4,7 +4,7 @@ Types:Plane Theros S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.nonToken | AddType$ Enchantment | Description$ Nontoken creatures are enchantments in addition to their other types. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.YouCtrl | TriggerZones$ Command | Execute$ TrigGainLife | TriggerDescription$ Constellation — Whenever an enchantment enters the battlefield under your control, you gain 1 life. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a color. Add an amount of mana of that color equal to your devotion to that color. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a color. Add an amount of mana of that color equal to your devotion to that color. SVar:RolledChaos:DB$ ChooseColor | SubAbility$ DBMana | AILogic$ MostProminentComputerControls | AINoRecursiveCheck$ True SVar:DBMana:DB$ Mana | Produced$ Chosen | Amount$ X SVar:X:Count$Devotion.Chosen diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt new file mode 100644 index 00000000000..1891c75f0fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt @@ -0,0 +1,9 @@ +Name:Path of the Animist +ManaCost:3 G +Types:Sorcery +A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 2 | Tapped$ True | SubAbility$ DBSpace | ChangeTypeDesc$ basic land | SpellDescription$ Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt new file mode 100644 index 00000000000..9915fccc077 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt @@ -0,0 +1,9 @@ +Name:Path of the Enigma +ManaCost:4 U +Types:Sorcery +A:SP$ Draw | ValidTgts$ Player | NumCards$ 4 | SubAbility$ DBSpace | SpellDescription$ Target player draws four cards. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Target player draws four cards.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt new file mode 100644 index 00000000000..cc2e0e2ed7e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt @@ -0,0 +1,11 @@ +Name:Path of the Ghosthunter +ManaCost:X 1 W +Types:Sorcery +A:SP$ Token | TokenAmount$ X | TokenScript$ w_1_1_spirit_flying | SubAbility DBSpace | SpellDescription$ Create X 1/1 white Spirit creature tokens with flying. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Token & Type$Spirit +SVar:X:Count$xPaid +Oracle:Create X 1/1 white Spirit creature tokens with flying.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt new file mode 100644 index 00000000000..886fc138480 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt @@ -0,0 +1,13 @@ +Name:Path of the Pyromancer +ManaCost:4 R +Types:Sorcery +A:SP$ Discard | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBMana +SVar:DBMana:DB$ Mana | Produced$ R | Amount$ X | StackDescription$ SpellDescription | SpellDescription$ Add {R} for each card discarded this way, +SVar:DBDraw:DB$ Draw | NumCards$ X/Plus.1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ then draw that many cards plus one. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBSpace +SVar:X:Remembered$Amount +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Discard all the cards in your hand. Add {R} for each card discarded this way, then draw that many cards plus one.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt new file mode 100644 index 00000000000..4964fa3dafd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt @@ -0,0 +1,12 @@ +Name:Path of the Schemer +ManaCost:4 B +Types:Sorcery +A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChangeZone | SpellDescription$ Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | Mandatory$ True | GainControl$ True | AnimateSubAbility$ Animate | SubAbility$ DBSpace | SelectPrompt$ Select a creature card to return to the battlefield | Hidden$ True | StackDescription$ SpellDescription | SpellDescription$ Then you put a creature card from a graveyard onto the battlefield under your control. +SVar:Animate:DB$ Animate | Defined$ Remembered | Types$ Phyrexian | Duration$ Permanent +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Mill|Graveyard +Oracle:Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. It's an artifact in addition to its other types.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt b/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt new file mode 100644 index 00000000000..20998c80be8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt @@ -0,0 +1,9 @@ +Name:The Fertile Lands of Saulvinia +Types:Plane Antausia +T:Mode$ TapsForMana | ValidCard$ Land | Execute$ AddMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a land for mana, that player adds one mana of any type that land produced. +SVar:AddMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ TriggeredActivator +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDigUntil | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Chaos ensues on that plane. Then put all cards revealed this way on the bottom of your planar deck in any order. +SVar:TrigDigUntil:DB$ DigUntil | Valid$ Plane | DigZone$ PlanarDeck | RememberFound$ True | FoundDestination$ PlanarDeck | FoundLibraryPosition$ -1 | RevealedDestination$ PlanarDeck | RevealedLibraryPosition$ -1 | SubAbility$ DBChaosEnsues +SVar:DBChaosEnsues:DB$ ChaosEnsues | Defined$ Remembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Whenever a player taps a land for mana, that player adds one mana of any type that land produced.\nWhenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Chaos ensues on that plane. Then put all cards revealed this way on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt b/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt index fe758b5b931..8c94dd58d45 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt @@ -4,7 +4,7 @@ Types:Plane Tarkir T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigBolster | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, bolster 3. (Choose a creature with the least toughness among creatures you control and put three +1/+1 counters on it.) T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigBolster | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, bolster 3. (Choose a creature with the least toughness among creatures you control and put three +1/+1 counters on it.) SVar:TrigBolster:DB$ PutCounter | Bolster$ True | CounterNum$ 3 | CounterType$ P1P1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose up to one target creature you control and up to one target creature an opponent controls. Each of those creatures deals damage equal to its toughness to the other. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose up to one target creature you control and up to one target creature an opponent controls. Each of those creatures deals damage equal to its toughness to the other. SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose up to one target creature you control | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBEachDamage SVar:DBEachDamage:DB$ EachDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose up to one target creature an opponent controls | TargetMin$ 0 | TargetMax$ 1 | ToEachOther$ Targeted | NumDmg$ Count$CardToughness DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/upcoming/towashi.txt b/forge-gui/res/cardsfolder/upcoming/towashi.txt index 6cd9e46ab6d..05611d11fdc 100644 --- a/forge-gui/res/cardsfolder/upcoming/towashi.txt +++ b/forge-gui/res/cardsfolder/upcoming/towashi.txt @@ -4,8 +4,8 @@ Types:Plane Kamigawa S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. SVar:TrigDraw:DB$ Draw -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 DeckHas:Ability$Counters DeckHints:Type$Aura|Equipment & Ability$Counters -Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/unyaro.txt b/forge-gui/res/cardsfolder/upcoming/unyaro.txt new file mode 100644 index 00000000000..b16df986653 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unyaro.txt @@ -0,0 +1,14 @@ +Name:Unyaro +Types:Plane Zhalfir +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | ValidPlayer$ You | CheckSVar$ X | TriggerZones$ Command | Execute$ TrigUntapAll | TriggerDescription$ At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.) +SVar:TrigUntapAll:DB$ UntapAll | ValidCards$ Creature | SubAbility$ DBPhaseOut +SVar:DBPhaseOut:DB$ Phases | AllValid$ Creature | WontPhaseInNormal$ True | RememberAffected$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Triggers$ PlaneswalkTrig | OneOff$ True | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnPhasedIn$ True | SubAbility$ DBCleanup +SVar:PlaneswalkTrig:Mode$ PlaneswalkedTo | Execute$ TrigPhaseIn | TriggerZones$ Command | Static$ True | TriggerDescription$ They phase out until a player planeswalks. +SVar:TrigPhaseIn:DB$ Phases | Defined$ Remembered | PhaseInOrOut$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$PlaneswalkedToThisTurn Unyaro +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ wu_2_2_knight_vigilance +DeckHas:Ability$Token & Colors$White|Blue & Type$Knight +Oracle:At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.)\nWhenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. diff --git a/forge-gui/res/cardsfolder/v/velis_vel.txt b/forge-gui/res/cardsfolder/v/velis_vel.txt index 0f6b549f3e8..a198c3ee575 100644 --- a/forge-gui/res/cardsfolder/v/velis_vel.txt +++ b/forge-gui/res/cardsfolder/v/velis_vel.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Lorwyn S:Mode$ Continuous | Affected$ Creature | AddPower$ AffectedX | AddToughness$ AffectedX | EffectZone$ Command | Description$ Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.) SVar:AffectedX:Count$Valid Creature.sharesCreatureTypeWith+Other -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature gains all creature types until end of turn. -SVar:RolledChaos:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | AddAllCreatureTypes$ True +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature gains all creature types until end of turn. +SVar:RolledChaos:DB$ Animate | ValidTgts$ Creature | AddAllCreatureTypes$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever you roll {CHAOS}, target creature gains all creature types until end of turn. +Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever chaos ensues, target creature gains all creature types until end of turn. diff --git a/forge-gui/res/cardsfolder/w/windriddle_palaces.txt b/forge-gui/res/cardsfolder/w/windriddle_palaces.txt index 9a49b637d25..36f22b98302 100644 --- a/forge-gui/res/cardsfolder/w/windriddle_palaces.txt +++ b/forge-gui/res/cardsfolder/w/windriddle_palaces.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Belenon S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayLookAt$ Player | Description$ Players play with the top card of their libraries revealed. S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayPlay$ You | Description$ You may play lands and cast spells from the top of any player's library. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player mills a card. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player mills a card. SVar:RolledChaos:DB$ Mill | NumCards$ 1 | Defined$ Player SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 30 -Oracle:Players play with the top card of their libraries revealed.\nYou may play lands and cast spells from the top of any player's library.\nWhenever you roll {CHAOS}, each player mills a card. +Oracle:Players play with the top card of their libraries revealed.\nYou may play lands and cast spells from the top of any player's library.\nWhenever chaos ensues, each player mills a card. From d15ac2096cdeb2bebd715857adb75b0797f144f1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 21 Apr 2023 17:23:58 -0400 Subject: [PATCH 15/17] fixes --- .../java/forge/game/ability/effects/RunChaosEffect.java | 8 ++------ forge-gui/res/cardsfolder/upcoming/unyaro.txt | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java index a9de663737f..7bd737e9623 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java @@ -1,12 +1,6 @@ package forge.game.ability.effects; -import java.util.List; -import java.util.Map; - import com.google.common.collect.Lists; - -import forge.game.PlanarDice; -import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; @@ -16,6 +10,8 @@ import forge.game.trigger.Trigger; import forge.game.trigger.TriggerType; import forge.game.trigger.WrappedAbility; +import java.util.List; + public class RunChaosEffect extends SpellAbilityEffect { @Override diff --git a/forge-gui/res/cardsfolder/upcoming/unyaro.txt b/forge-gui/res/cardsfolder/upcoming/unyaro.txt index b16df986653..a6cfec36d2a 100644 --- a/forge-gui/res/cardsfolder/upcoming/unyaro.txt +++ b/forge-gui/res/cardsfolder/upcoming/unyaro.txt @@ -1,13 +1,13 @@ Name:Unyaro Types:Plane Zhalfir -T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | ValidPlayer$ You | CheckSVar$ X | TriggerZones$ Command | Execute$ TrigUntapAll | TriggerDescription$ At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.) +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | ValidPlayer$ You | CheckSVar$ X | Execute$ TrigUntapAll | TriggerDescription$ At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.) SVar:TrigUntapAll:DB$ UntapAll | ValidCards$ Creature | SubAbility$ DBPhaseOut SVar:DBPhaseOut:DB$ Phases | AllValid$ Creature | WontPhaseInNormal$ True | RememberAffected$ True | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | Triggers$ PlaneswalkTrig | OneOff$ True | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnPhasedIn$ True | SubAbility$ DBCleanup SVar:PlaneswalkTrig:Mode$ PlaneswalkedTo | Execute$ TrigPhaseIn | TriggerZones$ Command | Static$ True | TriggerDescription$ They phase out until a player planeswalks. SVar:TrigPhaseIn:DB$ Phases | Defined$ Remembered | PhaseInOrOut$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Count$PlaneswalkedToThisTurn Unyaro +SVar:X:PlayerCountPropertyYou$PlaneswalkedToThisTurn Unyaro T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ wu_2_2_knight_vigilance DeckHas:Ability$Token & Colors$White|Blue & Type$Knight From 2a53ea4dcdcf7705a0b4dc541d23e532c84ebd5d Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 22 Apr 2023 07:57:49 +0800 Subject: [PATCH 16/17] Update themberchaud.txt --- forge-gui/res/cardsfolder/upcoming/themberchaud.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt index f4b6ad5d7b6..3816e360c2c 100644 --- a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt +++ b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt @@ -3,10 +3,10 @@ ManaCost:4 R R R Types:Legendary Creature Dragon PT:5/5 K:Trample -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control. -SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | ValidDescription$ each creature without flying and each player +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control. +SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.Other+withoutFlying | ValidPlayers$ Player | ValidDescription$ each other creature without flying and each player S:Mode$ OptionalAttackCost | ValidCard$ Card.Self | Trigger$ TrigPump | Cost$ Exert<1/CARDNAME> | Description$ You may exert CARDNAME as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ Flying | SpellDescription$ When you do, he gains flying until end of turn. SVar:X:Count$TypeYouCtrl.Mountain DeckHints:Type$Dragon & Keyword$Flying -Oracle:When Themberchaud enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) \ No newline at end of file +Oracle:When Themberchaud enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) From 47e124fa2bf69ebbf5820a7a708e61caa1d037f7 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Sat, 22 Apr 2023 11:04:43 +0200 Subject: [PATCH 17/17] Update aetherblade_agent_gitaxian_minsdstinger.txt --- .../upcoming/aetherblade_agent_gitaxian_minsdstinger.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt index 84f5adc521d..3425d06605d 100644 --- a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt +++ b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt @@ -2,10 +2,11 @@ Name:Aetherblade Agent ManaCost:1 B Types:Creature Human Rogue PT:1/1 +K:Deathtouch A:AB$ SetState | Cost$ 4 UP | Mode$ Transform | SorcerySpeed$ True | SpellDescription$ Transform CARDNAME. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) AlternateMode:DoubleFaced DeckHints:Color$Blue -Oracle:{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) +Oracle:Deathtouch\n{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) ALTERNATE