From d0ccb1d86b10f3774cd5d1565e81b39fba3ae3a6 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Tue, 4 Aug 2026 17:47:57 +0800 Subject: [PATCH 01/20] Implemented cards from the PUNK set --- ...moranomardicadaistinaculdacars_kitchen.txt | 19 +++++++++++++++++++ forge-gui/res/cardsfolder/b/bicycle_rack.txt | 9 +++++++++ .../res/cardsfolder/b/black_lotus_lounge.txt | 11 +++++++++++ .../res/cardsfolder/c/circus_of_the_sun.txt | 15 +++++++++++++++ forge-gui/res/cardsfolder/c/city_hall.txt | 14 ++++++++++++++ .../e/elvish_impersonation_contest.txt | 12 ++++++++++++ forge-gui/res/cardsfolder/e/event_horizon.txt | 12 ++++++++++++ .../res/cardsfolder/g/ghirapur_grand_prix.txt | 11 +++++++++++ forge-gui/res/cardsfolder/j/jaliras_show.txt | 12 ++++++++++++ forge-gui/res/cardsfolder/m/mojave_desert.txt | 15 +++++++++++++++ .../res/cardsfolder/n/no_way_out_plane.txt | 13 +++++++++++++ .../cardsfolder/o/omenpath_instability.txt | 8 ++++++++ forge-gui/res/cardsfolder/o/oteclan.txt | 9 +++++++++ .../res/cardsfolder/p/prestons_stage.txt | 12 ++++++++++++ .../res/cardsfolder/p/probability_flux.txt | 10 ++++++++++ .../cardsfolder/p/pursued_by_something.txt | 11 +++++++++++ .../res/cardsfolder/r/raiders_allegiance.txt | 17 +++++++++++++++++ forge-gui/res/cardsfolder/s/shy_town.txt | 11 +++++++++++ forge-gui/res/cardsfolder/s/sky_deck.txt | 10 ++++++++++ forge-gui/res/cardsfolder/t/tarnation.txt | 8 ++++++++ .../res/cardsfolder/t/thats_enough_slices.txt | 9 +++++++++ forge-gui/res/cardsfolder/t/the_bean.txt | 10 ++++++++++ .../res/cardsfolder/t/the_food_court.txt | 12 ++++++++++++ .../res/cardsfolder/w/welcome_to_valley.txt | 8 ++++++++ forge-gui/res/tokenscripts/c_a_hat_sac.txt | 5 +++++ forge-gui/res/tokenscripts/c_a_pizza_sac.txt | 5 +++++ .../tokenscripts/c_e_entropy_sac_chaos.txt | 5 +++++ .../c_e_omenpath_sac_planeswalk.txt | 5 +++++ .../tokenscripts/r_1_1_performer_flying.txt | 7 +++++++ .../r_1_1_performer_flying_haste.txt | 8 ++++++++ .../r_2_2_warrior_haste_coward.txt | 8 ++++++++ 31 files changed, 321 insertions(+) create mode 100644 forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt create mode 100644 forge-gui/res/cardsfolder/b/bicycle_rack.txt create mode 100644 forge-gui/res/cardsfolder/b/black_lotus_lounge.txt create mode 100644 forge-gui/res/cardsfolder/c/circus_of_the_sun.txt create mode 100644 forge-gui/res/cardsfolder/c/city_hall.txt create mode 100644 forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt create mode 100644 forge-gui/res/cardsfolder/e/event_horizon.txt create mode 100644 forge-gui/res/cardsfolder/g/ghirapur_grand_prix.txt create mode 100644 forge-gui/res/cardsfolder/j/jaliras_show.txt create mode 100644 forge-gui/res/cardsfolder/m/mojave_desert.txt create mode 100644 forge-gui/res/cardsfolder/n/no_way_out_plane.txt create mode 100644 forge-gui/res/cardsfolder/o/omenpath_instability.txt create mode 100644 forge-gui/res/cardsfolder/o/oteclan.txt create mode 100644 forge-gui/res/cardsfolder/p/prestons_stage.txt create mode 100644 forge-gui/res/cardsfolder/p/probability_flux.txt create mode 100644 forge-gui/res/cardsfolder/p/pursued_by_something.txt create mode 100644 forge-gui/res/cardsfolder/r/raiders_allegiance.txt create mode 100644 forge-gui/res/cardsfolder/s/shy_town.txt create mode 100644 forge-gui/res/cardsfolder/s/sky_deck.txt create mode 100644 forge-gui/res/cardsfolder/t/tarnation.txt create mode 100644 forge-gui/res/cardsfolder/t/thats_enough_slices.txt create mode 100644 forge-gui/res/cardsfolder/t/the_bean.txt create mode 100644 forge-gui/res/cardsfolder/t/the_food_court.txt create mode 100644 forge-gui/res/cardsfolder/w/welcome_to_valley.txt create mode 100644 forge-gui/res/tokenscripts/c_a_hat_sac.txt create mode 100644 forge-gui/res/tokenscripts/c_a_pizza_sac.txt create mode 100644 forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt create mode 100644 forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt create mode 100644 forge-gui/res/tokenscripts/r_1_1_performer_flying.txt create mode 100644 forge-gui/res/tokenscripts/r_1_1_performer_flying_haste.txt create mode 100644 forge-gui/res/tokenscripts/r_2_2_warrior_haste_coward.txt diff --git a/forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt b/forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt new file mode 100644 index 000000000000..42a5c7221052 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt @@ -0,0 +1,19 @@ +Name:Asmoranomardicadaistinaculdacar's Kitchen +ManaCost:no cost +Types:Plane Hell +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and whenever a creature enters under your control, create a Food token. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Command | Secondary$ True | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and whenever a creature enters under your control, create a Food token. +SVar:TrigToken:DB$ Token | TokenScript$ c_a_food_sac | TokenOwner$ You +T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigDrain | TriggerDescription$ Whenever you gain life, target opponent loses that much life. +SVar:TrigDrain:DB$ LoseLife | ValidTgts$ Opponent | LifeAmount$ X +SVar:X:TriggerCount$LifeAmount +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, you may sacrifice any number of artifacts or creatures. Draw that many cards and lose that much life. +SVar:RolledChaos:DB$ Sacrifice | Defined$ You | Amount$ SacX | SacValid$ Artifact,Creature | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDraw +SVar:SacX:Count$Valid Artifact.YouCtrl,Creature.YouCtrl +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ DrawX | SubAbility$ DBLoseLife2 +SVar:DrawX:Remembered$Amount +SVar:DBLoseLife2:DB$ LoseLife | Defined$ You | LifeAmount$ DrawX | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Token|Sacrifice|Draw|LifeGain & Type$Food +DeckHints:Type$Food +Oracle:Whenever you planeswalk here and whenever a creature enters under your control, create a Food token.\nWhenever you gain life, target opponent loses that much life.\nWhenever Chaos ensues, you may sacrifice any number of artifacts or creatures. Draw that many cards and lose that much life. diff --git a/forge-gui/res/cardsfolder/b/bicycle_rack.txt b/forge-gui/res/cardsfolder/b/bicycle_rack.txt new file mode 100644 index 000000000000..d2661f796b09 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bicycle_rack.txt @@ -0,0 +1,9 @@ +Name:Bicycle Rack +ManaCost:no cost +Types:Plane Amsterdam +S:Mode$ Continuous | Affected$ Card | AffectedZone$ Hand | AddKeyword$ Cycling:2 | Description$ Cards in each player's hand have cycling {2}. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigEffect | TriggerDescription$ Whenever Chaos ensues, until end of turn, creatures you control have "This creature gets +1/+1 for each card you've discarded this turn." +SVar:TrigEffect:DB$ Effect | StaticAbilities$ STBuff +SVar:STBuff:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ X | AddToughness$ X | Description$ Creatures you control get +1/+1 for each card you've discarded this turn. +SVar:X:PlayerCountPropertyYou$CardsDiscardedThisTurn +Oracle:Cards in each player's hand have cycling {2}.\nWhenever Chaos ensues, until end of turn, creatures you control have "This creature gets +1/+1 for each card you've discarded this turn." diff --git a/forge-gui/res/cardsfolder/b/black_lotus_lounge.txt b/forge-gui/res/cardsfolder/b/black_lotus_lounge.txt new file mode 100644 index 000000000000..f8657ceeb1e8 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/black_lotus_lounge.txt @@ -0,0 +1,11 @@ +Name:Black Lotus Lounge +ManaCost:no cost +Types:Plane MagicCon +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you planeswalk here and at the beginning of your upkeep, create a Black Lotus artifact token. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigToken | Secondary$ True | TriggerDescription$ When you planeswalk here and at the beginning of your upkeep, create a Black Lotus artifact token. +SVar:TrigToken:DB$ CopyPermanent | DefinedName$ Black Lotus +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigRepeat | TriggerDescription$ Whenever Chaos ensues, each player draws a card for each artifact token they control. +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Defined$ Remembered | NumCards$ X +SVar:X:Count$Valid Artifact.token+RememberedPlayerCtrl +Oracle:When you planeswalk here and at the beginning of your upkeep, create a Black Lotus artifact token.\nWhenever Chaos ensues, each player draws a card for each artifact token they control. diff --git a/forge-gui/res/cardsfolder/c/circus_of_the_sun.txt b/forge-gui/res/cardsfolder/c/circus_of_the_sun.txt new file mode 100644 index 000000000000..c74ad7dbfae2 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/circus_of_the_sun.txt @@ -0,0 +1,15 @@ +Name:Circus of the Sun +ManaCost:no cost +Types:Plane Las Vegas +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here or at the beginning of your upkeep, create two 1/1 red performer creature tokens with flying and haste. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Secondary$ True | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here or at the beginning of your upkeep, create two 1/1 red performer creature tokens with flying and haste. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ r_1_1_performer_flying_haste | TokenOwner$ You +T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.withFlying+YouCtrl | ValidTarget$ Player | TriggerZones$ Command | Execute$ TrigReturn | TriggerDescription$ Whenever one or more creatures you control with flying deal combat damage to a player, you may return it to your hand. If you do, draw cards equal to its power. +SVar:TrigReturn:DB$ ChangeZone | Defined$ TriggeredSources | Origin$ Battlefield | Destination$ Hand | Optional$ True | RememberChanged$ True | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | NumCards$ XPower | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanupDraw +SVar:XPower:Remembered$CardPower +SVar:DBCleanupDraw:DB$ Cleanup | ClearRemembered$ True +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCounter | TriggerDescription$ Whenever Chaos ensues, put a flying counter on up to one target creature. It becomes a Performer in addition to its other types. +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | CounterType$ Flying | CounterNum$ 1 | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Types$ Performer | Duration$ Permanent +Oracle:Whenever you planeswalk here or at the beginning of your upkeep, create two 1/1 red performer creature tokens with flying and haste.\nWhenever one or more creatures you control with flying deal combat damage to a player, you may return it to your hand. If you do, draw cards equal to its power.\nWhenever Chaos ensues, put a flying counter on up to one target creature. It becomes a Performer in addition to its other types. diff --git a/forge-gui/res/cardsfolder/c/city_hall.txt b/forge-gui/res/cardsfolder/c/city_hall.txt new file mode 100644 index 000000000000..054ae4815c61 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/city_hall.txt @@ -0,0 +1,14 @@ +Name:City Hall +ManaCost:no cost +Types:Plane Chicago +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigMonarch | TriggerDescription$ When you planeswalk here, you become the Monarch. +SVar:TrigMonarch:DB$ BecomeMonarch | Defined$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigChoice | TriggerDescription$ Whenever Chaos ensues, each player may create two tapped Treasure tokens. Each player who does can't attack you during their next turn. +SVar:TrigChoice:DB$ GenericChoice | Defined$ Player | TempRemember$ Chooser | Choices$ Create,DontCreate | ShowChoice$ ExceptSelf | SubAbility$ DBToken | StackDescription$ None +SVar:Create:DB$ Pump | Defined$ Remembered | NoteCards$ Self | NoteCardsFor$ MadeTreasure | SpellDescription$ Create two tapped Treasure tokens. +SVar:DontCreate:DB$ Pump | Defined$ Remembered | SpellDescription$ Don't create Treasure tokens. +SVar:DBToken:DB$ Token | TokenOwner$ Player.NotedForMadeTreasure | TokenAmount$ 2 | TokenTapped$ True | TokenScript$ c_a_treasure_sac | RememberObjects$ Player.NotedForMadeTreasure | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | EffectOwner$ Remembered | RememberObjects$ You | StaticAbilities$ STCantAttack | Duration$ UntilYourNextTurn | SubAbility$ DBCleanup +SVar:STCantAttack:Mode$ CantAttack | ValidCard$ Creature.YouCtrl | Target$ Player.IsRemembered | Description$ Creatures controlled by that player can't attack you. +SVar:DBCleanup:DB$ Pump | Defined$ Player | ClearNotedCardsFor$ MadeTreasure +Oracle:When you planeswalk here, you become the Monarch.\nWhenever Chaos ensues, each player may create two tapped Treasure tokens. Each player who does can't attack you during their next turn. diff --git a/forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt b/forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt new file mode 100644 index 000000000000..59e70f9c90b8 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt @@ -0,0 +1,12 @@ +Name:Elvish Impersonation Contest +ManaCost:no cost +Types:Plane Las Vegas +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and at the beginning of your upkeep, create an Elvish Impersonators token. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Secondary$ True | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and at the beginning of your upkeep, create an Elvish Impersonators token. +SVar:TrigToken:DB$ CopyPermanent | DefinedName$ Elvish Impersonators +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, target Elvish Impersonators becomes a 6/6. Its controller creates a Treasure token. +SVar:RolledChaos:DB$ Animate | ValidTgts$ Creature.namedElvish Impersonators | TgtPrompt$ Select target Elvish Impersonators | Power$ 6 | Toughness$ 6 | Duration$ Permanent | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenScript$ c_a_treasure_sac | TokenOwner$ TargetedController +DeckHas:Ability$Token & Type$Elf|Treasure +DeckHints:Type$Elf|Treasure +Oracle:Whenever you planeswalk here and at the beginning of your upkeep, create an Elvish Impersonators token. (It's a {3}{G} Elf creature with "As this creature enters, roll a six-sided die twice. Its base power becomes the first result and its base toughness becomes the second result.")\nThank you very much—Whenever Chaos ensues, target Elvish Impersonators becomes a 6/6. Its controller creates a Treasure token. diff --git a/forge-gui/res/cardsfolder/e/event_horizon.txt b/forge-gui/res/cardsfolder/e/event_horizon.txt new file mode 100644 index 000000000000..faae8b8b8814 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/event_horizon.txt @@ -0,0 +1,12 @@ +Name:Event Horizon +ManaCost:no cost +Types:Plane Blind Eternities +S:Mode$ Continuous | Affected$ Land.nonBasic | AddType$ Wastes | RemoveLandTypes$ True | Description$ Nonbasic lands are Wastes. +T:Mode$ TapsForMana | ValidCard$ Permanent | Activator$ You | Produced$ C | Execute$ TrigMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever you tap a permanent for {C}, add an additional {C}. +SVar:TrigMana:DB$ Mana | Produced$ C | Amount$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCharm | TriggerDescription$ Whenever chaos ensues, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DrawFour,DestroyPerm,Reanimate +SVar:DrawFour:DB$ Draw | NumCards$ 4 | SpellDescription$ Draw four cards. +SVar:DestroyPerm:DB$ Destroy | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | SpellDescription$ Destroy target permanent. +SVar:Reanimate:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Choose target creature card in your graveyard | SpellDescription$ You may return target creature card from your graveyard to the battlefield. +Oracle:Nonbasic lands are Wastes.\nWhenever you tap a permanent for {C}, add an additional {C}.\nWhenever chaos ensues, choose one —\n• Draw four cards.\n• Destroy target permanent.\n• You may return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/g/ghirapur_grand_prix.txt b/forge-gui/res/cardsfolder/g/ghirapur_grand_prix.txt new file mode 100644 index 000000000000..b02133c84873 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/ghirapur_grand_prix.txt @@ -0,0 +1,11 @@ +Name:Ghirapur Grand Prix +ManaCost:no cost +Types:Plane Avishkar +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigEngines | TriggerDescription$ When you planeswalk here, all players start their engines! (If you have no speed, it starts at 1. It increases once on each of your turns when an opponent loses life. Max speed is 4.) +SVar:TrigEngines:DB$ ChangeSpeed | Mode$ Increase | Defined$ Player +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigCounter | TriggerDescription$ At the beginning of your end step, put X +1/+1 counters on target creature you control, where X is your speed. +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ Count$YourSpeed +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigRepeat | TriggerDescription$ When you planeswalk away from CARDNAME, each player with the highest speed among players creates three Treasure tokens. +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenAmount$ 3 | TokenScript$ c_a_treasure_sac | TokenOwner$ Player.IsRemembered | ConditionCheckSVar$ PlayerCountDefinedRemembered$Speed | ConditionSVarCompare$ EQPlayerCount$HighestSpeed +Oracle:When you planeswalk here, all players start their engines! (If you have no speed, it starts at 1. It increases once on each of your turns when an opponent loses life. Max speed is 4.)\nAt the beginning of your end step, put X +1/+1 counters on target creature you control, where X is your speed.\nWhen you planeswalk away from Ghirapur Grand Prix, each player with the highest speed among players creates three Treasure tokens. diff --git a/forge-gui/res/cardsfolder/j/jaliras_show.txt b/forge-gui/res/cardsfolder/j/jaliras_show.txt new file mode 100644 index 000000000000..8d1ef35a5079 --- /dev/null +++ b/forge-gui/res/cardsfolder/j/jaliras_show.txt @@ -0,0 +1,12 @@ +Name:Jalira's Show +ManaCost:no cost +Types:Plane Las Vegas +T:Mode$ AttackersDeclared | AttackingPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ Whenever you attack, create a 1/1 red Performer creature token with flying. +SVar:TrigToken:DB$ Token | TokenScript$ r_1_1_performer_flying | TokenOwner$ You +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerZones$ Command | TriggerDescription$ Whenever you planeswalk here or chaos ensues, destroy up to one target creature. When you do, its controller reveals cards from the top of their library until they reveal a creature card. The player puts that card onto the battlefield, then puts the rest on the bottom of their library in a random order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDestroy | Secondary$ True | TriggerDescription$ Whenever you planeswalk here or chaos ensues, destroy up to one target creature. When you do, its controller reveals cards from the top of their library until they reveal a creature card. The player puts that card onto the battlefield, then puts the rest on the bottom of their library in a random order. +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature | TgtPrompt$ Select up to one target creature | TargetMin$ 0 | TargetMax$ 1 | RememberLKI$ True | SubAbility$ DBDigUntil +SVar:DBDigUntil:DB$ DigUntil | Defined$ RememberedController | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Token & Type$Performer +Oracle:Whenever you attack, create a 1/1 red Performer creature token with flying.\nWhenever you planeswalk here or chaos ensues, destroy up to one target creature. When you do, its controller reveals cards from the top of their library until they reveal a creature card. The player puts that card onto the battlefield, then puts the rest on the bottom of their library in a random order. diff --git a/forge-gui/res/cardsfolder/m/mojave_desert.txt b/forge-gui/res/cardsfolder/m/mojave_desert.txt new file mode 100644 index 000000000000..534341310e08 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/mojave_desert.txt @@ -0,0 +1,15 @@ +Name:Mojave Desert +ManaCost:no cost +Types:Plane Las Vegas +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigSearchAll | TriggerDescription$ Whenever you planeswalk to CARDNAME, each player searches their library for up to two basic land or Desert cards and puts them onto the battlefield tapped, then shuffles their library. If a Desert entered the battlefield under a player's control this way, they create a 1/1 black Snake creature token with deathtouch. +SVar:TrigSearchAll:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBSearchLand +SVar:DBSearchLand:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic,Land.Desert | ChangeTypeDesc$ basic land or Desert | ChangeNum$ 2 | DefinedPlayer$ Player.IsRemembered | Chooser$ Player.IsRemembered | Imprint$ True | SubAbility$ DBSnakeCheck +SVar:DBSnakeCheck:DB$ Token | TokenScript$ b_1_1_snake_deathtouch | TokenOwner$ Player.IsRemembered | ConditionDefined$ Imprinted | ConditionPresent$ Land.Desert | ConditionCompare$ GE1 | SubAbility$ DBShuffleOne +SVar:DBShuffleOne:DB$ Shuffle | Defined$ Player.IsRemembered | SubAbility$ DBCleanupOne +SVar:DBCleanupOne:DB$ Cleanup | ClearImprinted$ True +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigChaosRemember | TriggerDescription$ Whenever chaos ensues, create X 1/1 black Snake creature tokens with deathtouch, where X is 1 plus the number of nonbasic land types among lands you control. +SVar:TrigChaosRemember:DB$ Pump | RememberObjects$ Valid Land.YouCtrl+nonBasic | SubAbility$ DBChaosToken +SVar:DBChaosToken:DB$ Token | TokenAmount$ X | TokenScript$ b_1_1_snake_deathtouch | TokenOwner$ You | SubAbility$ DBCleanupChaos +SVar:X:Remembered$LandType/Plus.1 +SVar:DBCleanupChaos:DB$ Cleanup | ClearRemembered$ True +Oracle:Whenever you planeswalk to Mojave Desert, each player searches their library for up to two basic land or Desert cards and puts them onto the battlefield tapped, then shuffles their library. If a Desert entered the battlefield under a player's control this way, they create a 1/1 black Snake creature token with deathtouch.\nWhenever chaos ensues, create X 1/1 black Snake creature tokens with deathtouch, where X is 1 plus the number of nonbasic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/n/no_way_out_plane.txt b/forge-gui/res/cardsfolder/n/no_way_out_plane.txt new file mode 100644 index 000000000000..442df87acd31 --- /dev/null +++ b/forge-gui/res/cardsfolder/n/no_way_out_plane.txt @@ -0,0 +1,13 @@ +Name:No Way Out +ManaCost:no cost +Types:Plane Duskmourn +K:etbCounter:DREAD:3:no Condition:CARDNAME enters with three dread counters. +R:Event$ Planeswalk | IsPresent$ Card.Self+counters_GE1_DREAD | ReplaceWith$ Chaos | Description$ You can never leave — If a player would planeswalk while CARDNAME has dread counters, chaos ensues instead. +SVar:Chaos:DB$ ChaosEnsues +T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ TrigManifest | TriggerDescription$ Whenever you roll the planar die, manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.) +SVar:TrigManifest:DB$ ManifestDread +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigRepeat | TriggerDescription$ Whenever Chaos ensues, each player may turn a face-down permanent they control face up. Remove a dread counter from CARDNAME. +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBFlip | SubAbility$ DBRemoveCounter +SVar:DBFlip:DB$ SetState | Mode$ TurnFaceUp | ValidTgts$ Permanent.faceDown+RememberedPlayerCtrl | TargetMin$ 0 | TargetMax$ 1 +SVar:DBRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ DREAD | CounterNum$ 1 +Oracle:No Way Out enters with three dread counters.\nYou can never leave — If a player would planeswalk while this plane has dread counters, chaos ensues instead.\nWhenever you roll the planar die, manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.)\nWhenever Chaos ensures each player may turn a face-down permanent they control face-up. Remove a dread counter from this plane. diff --git a/forge-gui/res/cardsfolder/o/omenpath_instability.txt b/forge-gui/res/cardsfolder/o/omenpath_instability.txt new file mode 100644 index 000000000000..9118af8f1051 --- /dev/null +++ b/forge-gui/res/cardsfolder/o/omenpath_instability.txt @@ -0,0 +1,8 @@ +Name:Omenpath Instability +ManaCost:no cost +Types:Phenomenon +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you encounter CARDNAME, each player creates an Entropy enchantment token with "Sacrifice this enchantment: Chaos ensues. Activate only as a sorcery." and an Omenpath enchantment token with "Sacrifice this enchantment: Planeswalk. Activate only as a sorcery." (Then planeswalk away from this phenomenon.) +SVar:TrigToken:DB$ Token | TokenScript$ c_e_entropy_sac_chaos | TokenOwner$ Player | SubAbility$ TrigToken2 +SVar:TrigToken2:DB$ Token | TokenScript$ c_e_omenpath_sac_planeswalk | TokenOwner$ Player | SubAbility$ PWAway +SVar:PWAway:DB$ Planeswalk +Oracle:When you encounter Omenpath Instability, each player creates an Entropy enchantment token with "Sacrifice this enchantment: Chaos ensues. Activate only as a sorcery." and an Omenpath enchantment token with "Sacrifice this enchantment: Planeswalk. Activate only as a sorcery." (Then planeswalk away from this phenomenon.) diff --git a/forge-gui/res/cardsfolder/o/oteclan.txt b/forge-gui/res/cardsfolder/o/oteclan.txt new file mode 100644 index 000000000000..bfb98d65ad8c --- /dev/null +++ b/forge-gui/res/cardsfolder/o/oteclan.txt @@ -0,0 +1,9 @@ +Name:Oteclán +ManaCost:no cost +Types:Plane Ixalan +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigChaos | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, chaos ensues. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigChaos | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, chaos ensues. +SVar:TrigChaos:DB$ ChaosEnsues +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDiscover | TriggerDescription$ Whenever chaos ensues, discover 3. +SVar:TrigDiscover:DB$ Discover | Num$ 3 +Oracle:When you planeswalk to Oteclán and at the beginning of your upkeep, chaos ensues.\nWhenever chaos ensues, discover 3. (Exile cards from the top of your library until you exile a nonland card with that mana value or less. Cast it without paying its mana cost or put it into your hand. Put the rest on the bottom in a random order.) diff --git a/forge-gui/res/cardsfolder/p/prestons_stage.txt b/forge-gui/res/cardsfolder/p/prestons_stage.txt new file mode 100644 index 000000000000..7ef339b077fc --- /dev/null +++ b/forge-gui/res/cardsfolder/p/prestons_stage.txt @@ -0,0 +1,12 @@ +Name:Preston's Stage +ManaCost:no cost +Types:Plane Las Vegas +T:Mode$ SpellCast | ValidCard$ Instant,Card.hasKeywordFlash | ValidActivatingPlayer$ Player | Execute$ TrigTokenCast | TriggerZones$ Command | TriggerDescription$ Whenever a player performs a magic trick, they create a Hat token. (You perform a magic trick when you cast an instant or spell with flash, or turn a face-down creature face-up. Hat tokens are artifact tokens with "{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token.") +SVar:TrigTokenCast:DB$ Token | TokenScript$ c_a_hat_sac | TokenOwner$ TriggeredActivator +T:Mode$ TurnFaceUp | ValidCard$ Creature | TriggerZones$ Command | Execute$ TrigTokenFaceUp | Secondary$ True | TriggerDescription$ Whenever a player performs a magic trick, they create a Hat token. (You perform a magic trick when you cast an instant or spell with flash, or turn a face-down creature face-up. Hat tokens are artifact tokens with "{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token.") +SVar:TrigTokenFaceUp:DB$ Token | TokenScript$ c_a_hat_sac | TokenOwner$ TriggeredCardController +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, until your next turn, creature cards in your hand have flash. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ GrantFlash | Duration$ UntilYourNextTurn +SVar:GrantFlash:Mode$ Continuous | Affected$ Creature.YouOwn | AffectedZone$ Hand | AddKeyword$ Flash | Description$ Creature cards in your hand have flash. +SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 25 +Oracle:Whenever a player performs a magic trick, they create a Hat token. (You perform a magic trick when you cast an instant or spell with flash, or turn a face-down creature face-up. Hat tokens are artifact tokens with "{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token.")\nWhenever Chaos ensues, until your next turn, creature cards in your hand have flash. diff --git a/forge-gui/res/cardsfolder/p/probability_flux.txt b/forge-gui/res/cardsfolder/p/probability_flux.txt new file mode 100644 index 000000000000..ff90353eeaf9 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/probability_flux.txt @@ -0,0 +1,10 @@ +Name:Probability Flux +ManaCost:no cost +Types:Phenomenon +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ Until your next turn, if a player would roll one or more dice, instead they roll that many dice plus one and ignore one. (Then planeswalk away from this phenomenon.) +SVar:TrigEffect:DB$ Effect | ReplacementEffects$ RepRollDice | Duration$ UntilYourNextTurn | SubAbility$ PWAway +SVar:RepRollDice:Event$ RollDice | ValidPlayer$ Player | ReplaceWith$ PlusRoll | Description$ If a player would roll one or more dice, instead they roll that many dice plus one and ignore one. +SVar:PlusRoll:DB$ ReplaceEffect | VarName$ Number | VarValue$ ReplaceCount$Number/Plus.1 | SubAbility$ IgnoreOne +SVar:IgnoreOne:DB$ ReplaceEffect | VarName$ Ignore | VarValue$ ReplaceCount$Ignore/Plus.1 +SVar:PWAway:DB$ Planeswalk +Oracle:Until your next turn, if a player would roll one or more dice, instead they roll that many dice plus one and ignore one. diff --git a/forge-gui/res/cardsfolder/p/pursued_by_something.txt b/forge-gui/res/cardsfolder/p/pursued_by_something.txt new file mode 100644 index 000000000000..c04f1d67ac05 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/pursued_by_something.txt @@ -0,0 +1,11 @@ +Name:Pursued by Something +ManaCost:no cost +Types:Plane Duskmourn +T:Mode$ Phase | Phase$ Main | PhaseCount$ 2 | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Creature.tapped+YouCtrl | Execute$ TrigDread | TriggerDescription$ At the beginning of your second main phase, if you control a tapped creature, manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.) +SVar:TrigDread:DB$ ManifestDread +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigExile | TriggerDescription$ Whenever Chaos ensues, exile target creature. If it's an instant or sorcery, cast it without paying its mana cost. Otherwise put it onto the battlefield under its owner's control. +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBPlay +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | ConditionDefined$ Remembered | ConditionPresent$ Instant,Sorcery | SubAbility$ DBBattlefield +SVar:DBBattlefield:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | ConditionDefined$ Remembered | ConditionNotPresent$ Instant,Sorcery | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:At the beginning of your second main phase, if you control a tapped creature, manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.)\nWhenever Chaos ensues, exile target creature. If it's an instant or sorcery, cast it without paying its mana cost. Otherwise put it onto the battlefield under its owner's control. diff --git a/forge-gui/res/cardsfolder/r/raiders_allegiance.txt b/forge-gui/res/cardsfolder/r/raiders_allegiance.txt new file mode 100644 index 000000000000..350225ec57c3 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/raiders_allegiance.txt @@ -0,0 +1,17 @@ +Name:Raiders' Allegiance +ManaCost:no cost +Types:Plane Ixalan +T:Mode$ Phase | Phase$ Main | PhaseCount$ 2 | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigRaid | TriggerDescription$ Raid — At the beginning of your second main phase, for each player dealt combat damage this turn, you get a point counter and create a 2/2 black Pirate creature token with menace. +SVar:TrigRaid:DB$ PutCounter | Defined$ You | CounterType$ POINT | CounterNum$ X | SubAbility$ DBRaidToken +SVar:DBRaidToken:DB$ Token | TokenScript$ b_2_2_pirate_menace | TokenOwner$ You | TokenAmount$ X +SVar:X:PlayerCountPlayers$HasPropertywasDealtCombatDamageThisTurn +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | TriggerZones$ Command | Execute$ TrigPayout | TriggerDescription$ Whenever you planeswalk away from CARDNAME, each player with the most point counters or tied for the most point counters creates three Treasure tokens and draws three cards. Then remove all point counters from each player. +SVar:TrigPayout:DB$ Token | TokenScript$ c_a_treasure_sac | TokenOwner$ Player.ConditionGEMaxPoints Counters.POINT | TokenAmount$ 3 | SubAbility$ DBPayoutDraw +SVar:DBPayoutDraw:DB$ Draw | Defined$ Player.ConditionGEMaxPoints Counters.POINT | NumCards$ 3 | SubAbility$ DBRemoveAllPoints +SVar:DBRemoveAllPoints:DB$ RemoveCounter | Defined$ Player | CounterType$ POINT | CounterNum$ All +SVar:MaxPoints:PlayerCountPlayers$HighestCounters.POINT +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigProliferate | TriggerDescription$ Whenever Chaos ensues, proliferate for each Pirate you control. +SVar:TrigProliferate:DB$ Proliferate | Amount$ NumPirates +SVar:NumPirates:Count$Valid Pirate.YouCtrl +SVar:AIRollPlanarDieParams:Mode$ Always +Oracle:Raid — At the beginning of your second main phase, for each player dealt combat damage this turn, you get a point counter and create a 2/2 black Pirate creature token with menace.\nWhenever you planeswalk away from Raiders' Allegiance, each player with the most point counters or tied for the most point counters creates three Treasure tokens and draws three cards. Then remove all point counters from each player.\nWhenever Chaos ensues, proliferate for each Pirate you control. diff --git a/forge-gui/res/cardsfolder/s/shy_town.txt b/forge-gui/res/cardsfolder/s/shy_town.txt new file mode 100644 index 000000000000..c02f57685cd5 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/shy_town.txt @@ -0,0 +1,11 @@ +Name:Shy Town +ManaCost:no cost +Types:Plane Chicago +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ Whenever you planeswalk here and whenever chaos ensues, for each opponent, put a shy counter on up to one target creature they control. That creature becomes a Coward in addition to its other types. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigRepeat | TriggerDescription$ Whenever you planeswalk here and whenever chaos ensues, for each opponent, put a shy counter on up to one target creature they control. That creature becomes a Coward in addition to its other types. +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBCounter +SVar:DBCounter:DB$ PutCounter | ValidTgts$ Creature.RememberedPlayerCtrl | TargetMin$ 0 | TargetMax$ 1 | CounterType$ SHY | CounterNum$ 1 | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Types$ Coward | Duration$ Permanent +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ DBWarrior | TriggerDescription$ At the beginning of your upkeep, create a 2/2 red Warrior creature token with haste and "Cowards can't block Warriors." +SVar:DBWarrior:DB$ Token | TokenAmount$ 1 | TokenScript$ r_2_2_warrior_haste_coward | TokenOwner$ You +Oracle:Whenever you planeswalk here and whenever chaos ensues, for each opponent, put a shy counter on up to one target creature they control. That creature becomes a Coward in addition to its other types.\nAt the beginning of your upkeep, create a 2/2 red Warrior creature token with haste and "Cowards can't block Warriors." diff --git a/forge-gui/res/cardsfolder/s/sky_deck.txt b/forge-gui/res/cardsfolder/s/sky_deck.txt new file mode 100644 index 000000000000..c5d036b7d4a3 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sky_deck.txt @@ -0,0 +1,10 @@ +Name:Sky Deck +ManaCost:no cost +Types:Plane Chicago +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigCounter | TriggerDescription$ Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCounter | TriggerDescription$ Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent. +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Permanent.nonLand | TargetMin$ 0 | TargetMax$ 1 | CounterType$ GLASS | CounterNum$ 1 +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy all permanents with glass counters on them. +SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.counters_GE1_GLASS +Oracle:Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent.\nWhen you planeswalk away from here, destroy all permanents with glass counters on them. diff --git a/forge-gui/res/cardsfolder/t/tarnation.txt b/forge-gui/res/cardsfolder/t/tarnation.txt new file mode 100644 index 000000000000..c2c248ac212e --- /dev/null +++ b/forge-gui/res/cardsfolder/t/tarnation.txt @@ -0,0 +1,8 @@ +Name:Tarnation +ManaCost:no cost +Types:Plane Thunder Junction +T:Mode$ CommitCrime | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever a player commits a crime, they may draw a card. (Targeting opponents, anything they control, and/or cards in their graveyards is a crime.) +SVar:TrigDraw:DB$ Draw | Defined$ TriggeredPlayer | OptionalDecider$ TriggeredPlayer +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDamage | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 1 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 1 +Oracle:Whenever a player commits a crime, they may draw a card. (Targeting opponents, anything they control, and/or cards in their graveyards is a crime.)\nWhenever chaos ensues, Tarnation deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/thats_enough_slices.txt b/forge-gui/res/cardsfolder/t/thats_enough_slices.txt new file mode 100644 index 000000000000..e596741c016b --- /dev/null +++ b/forge-gui/res/cardsfolder/t/thats_enough_slices.txt @@ -0,0 +1,9 @@ +Name:That's Enough Slices +ManaCost:no cost +Types:Phenomenon +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ When you encounter this phenomenon, each player creates a Pizza token. If that player has the least life or is tied for the least life, they create two Pizza tokens instead. Then planeswalk away from this phenomenon. (A Pizza token is a Food artifact with "{2}, {T}, Sacrifice this token: You gain 6 life.") +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBToken | SubAbility$ PWAway +SVar:DBToken:DB$ Token | TokenScript$ c_a_pizza_sac | TokenOwner$ Player.IsRemembered | SubAbility$ DBBonusToken +SVar:DBBonusToken:DB$ Token | TokenScript$ c_a_pizza_sac | TokenOwner$ Player.IsRemembered | ConditionDefined$ Remembered | ConditionPresent$ Player.withLowestLife | ConditionCompare$ GE1 +SVar:PWAway:DB$ Planeswalk +Oracle:When you encounter this phenomenon, each player creates a Pizza token. If that player has the least life or is tied for the least life, they create two Pizza tokens instead. Then planeswalk away from this phenomenon. (A Pizza token is a Food artifact with "{2}, {T}, Sacrifice this token: You gain 6 life.") diff --git a/forge-gui/res/cardsfolder/t/the_bean.txt b/forge-gui/res/cardsfolder/t/the_bean.txt new file mode 100644 index 000000000000..6c10a38bc920 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/the_bean.txt @@ -0,0 +1,10 @@ +Name:The Bean +ManaCost:no cost +Types:Plane Chicago +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ When you planeswalk here, each player chooses a creature they control and creates a token that's a copy of it, except it's a Reflection in addition to its other types. +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBCopyEach +SVar:DBCopyEach:DB$ CopyPermanent | Choices$ Creature.ControlledBy Remembered | Chooser$ Remembered | Controller$ Remembered | AddTypes$ Reflection +S:Mode$ Continuous | Affected$ Creature.Reflection | AddKeyword$ Shadow | Description$ All Reflections have shadow. (They can block or be blocked only by creatures with shadow.) +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigChaos | TriggerDescription$ Whenever Chaos ensues, create a token that's a copy of a creature you control, except it's a Reflection in addition to its other types. +SVar:TrigChaos:DB$ CopyPermanent | Choices$ Creature.YouCtrl | AddTypes$ Reflection +Oracle:When you planeswalk here, each player chooses a creature they control and creates a token that's a copy of it, except it's a Reflection in addition to its other types.\nAll Reflections have shadow. (They can block or be blocked only by creatures with shadow.)\nWhenever chaos ensues, create a token that's a copy of a creature you control, except it's a Reflection in addition to its other types. diff --git a/forge-gui/res/cardsfolder/t/the_food_court.txt b/forge-gui/res/cardsfolder/t/the_food_court.txt new file mode 100644 index 000000000000..cd37c737aeb6 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/the_food_court.txt @@ -0,0 +1,12 @@ +Name:The Food Court +ManaCost:no cost +Types:Plane Eldraine +S:Mode$ Continuous | EffectZone$ Command | Affected$ Artifact | AddType$ Food | AddAbility$ FoodSac | Description$ Artifacts are Foods in addition to their other types (They have "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +SVar:FoodSac:AB$ GainLife | Cost$ 2 T Sac<1/CARDNAME/this artifact> | Defined$ You | LifeAmount$ 3 | SpellDescription$ You gain 3 life. +A:AB$ Mana | Cost$ Sac<3/Food> | Produced$ W U B R G | ActivationLimit$ 1 | PlayerTurn$ True | ActivationZone$ Command | SpellDescription$ Sacrifice three Foods: Add {W}{U}{B}{R}{G}. Activate only once each turn and only during your turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever Chaos ensues, you become the Monarch. If you are already the Monarch, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | SubAbility$ DBMonarch +SVar:DBMonarch:DB$ BecomeMonarch | Defined$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 +SVar:X:Count$Monarch.1.0 +DeckHas:Ability$Sacrifice & Type$Food +Oracle:Artifacts are Foods in addition to their other types (They have "{2}, {T}, Sacrifice this artifact: You gain 3 life.")\nSacrifice three Foods: Add {W}{U}{B}{R}{G}. Activate only once each turn and only during your turn.\nWhenever Chaos ensues, you become the Monarch. If you are already the Monarch, draw a card. diff --git a/forge-gui/res/cardsfolder/w/welcome_to_valley.txt b/forge-gui/res/cardsfolder/w/welcome_to_valley.txt new file mode 100644 index 000000000000..d4b4d64558da --- /dev/null +++ b/forge-gui/res/cardsfolder/w/welcome_to_valley.txt @@ -0,0 +1,8 @@ +Name:Welcome to Valley +ManaCost:no cost +Types:Plane Bloomburrow +T:Mode$ SpellCast | ValidCard$ Creature.Antelope,Creature.Ape,Creature.Armadillo,Creature.Aurochs,Creature.Badger,Creature.Bat,Creature.Bear,Creature.Beaver,Creature.Bird,Creature.Bison,Creature.Boar,Creature.Camel,Creature.Capybara,Creature.Caribou,Creature.Cat,Creature.Cow,Creature.Coyote,Creature.Crab,Creature.Crocodile,Creature.Dinosaur,Creature.Dog,Creature.Echidna,Creature.Elephant,Creature.Elk,Creature.Ferret,Creature.Fish,Creature.Fox,Creature.Frog,Creature.Giraffe,Creature.Goat,Creature.Hamster,Creature.Hedgehog,Creature.Hippo,Creature.Horse,Creature.Hyena,Creature.Insect,Creature.Jackal,Creature.Jellyfish,Creature.Kangaroo,Creature.Leech,Creature.Lemur,Creature.Llama,Creature.Lizard,Creature.Lobster,Creature.Mammoth,Creature.Mite,Creature.Mole,Creature.Mongoose,Creature.Monkey,Creature.Mouse,Creature.Nautilus,Creature.Octopus,Creature.Otter,Creature.Ox,Creature.Oyster,Creature.Pangolin,Creature.Platypus,Creature.Porcupine,Creature.Possum,Creature.Rabbit,Creature.Raccoon,Creature.Rat,Creature.Rhino,Creature.Sable,Creature.Salamander,Creature.Scorpion,Creature.Seal,Creature.Shark,Creature.Sheep,Creature.Skunk,Creature.Sloth,Creature.Slug,Creature.Snail,Creature.Snake,Creature.Spider,Creature.Sponge,Creature.Squid,Creature.Squirrel,Creature.Starfish,Creature.Trilobite,Creature.Turtle,Creature.Walrus,Creature.Weasel,Creature.Whale,Creature.Wolf,Creature.Wolverine,Creature.Wombat,Creature.Worm | ValidActivatingPlayer$ You | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever you cast an animal spell, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCopy | TriggerDescription$ Whenever Chaos ensues, create a token that's a copy of target creature you control, except it's a 1/1. +SVar:TrigCopy:DB$ CopyPermanent | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SetPower$ 1 | SetToughness$ 1 +Oracle:Whenever you cast an animal spell, draw a card. (Animals are any non-human creature types that are animals in real life.)\nWhenever Chaos ensues, create a token that's a copy of target creature you control, except it's a 1/1. diff --git a/forge-gui/res/tokenscripts/c_a_hat_sac.txt b/forge-gui/res/tokenscripts/c_a_hat_sac.txt new file mode 100644 index 000000000000..56bbe161f8bb --- /dev/null +++ b/forge-gui/res/tokenscripts/c_a_hat_sac.txt @@ -0,0 +1,5 @@ +Name:Hat Token +ManaCost:no cost +Types:Artifact +A:AB$ Token | Cost$ 1 T Sac<1/CARDNAME/this token> | TokenScript$ w_1_1_rabbit | SpellDescription$ Create a 1/1 white Rabbit creature token. +Oracle:{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token. diff --git a/forge-gui/res/tokenscripts/c_a_pizza_sac.txt b/forge-gui/res/tokenscripts/c_a_pizza_sac.txt new file mode 100644 index 000000000000..663f0364bdfb --- /dev/null +++ b/forge-gui/res/tokenscripts/c_a_pizza_sac.txt @@ -0,0 +1,5 @@ +Name:Pizza Token +ManaCost:no cost +Types:Artifact Food +A:AB$ GainLife | Cost$ 2 T Sac<1/CARDNAME/this token> | LifeAmount$ 6 | SpellDescription$ You gain 6 life. +Oracle:{2}, {T}, Sacrifice this token: You gain 6 life. diff --git a/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt b/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt new file mode 100644 index 000000000000..a5577a59381e --- /dev/null +++ b/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt @@ -0,0 +1,5 @@ +Name:Entropy +ManaCost:no cost +Types:Enchantment +A:AB$ ChaosEnsues | Cost$ Sac<1/CARDNAME/this enchantment> | SorcerySpeed$ True | SpellDescription$ Chaos ensues. Activate only as a sorcery. +Oracle:Sacrifice this enchantment: Chaos ensues. Activate only as a sorcery. diff --git a/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt b/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt new file mode 100644 index 000000000000..12089f2b48ec --- /dev/null +++ b/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt @@ -0,0 +1,5 @@ +Name:Omenpath +ManaCost:no cost +Types:Enchantment +A:AB$ Planeswalk | Cost$ Sac<1/CARDNAME/this enchantment> | SorcerySpeed$ True | SpellDescription$ Planeswalk. Activate only as a sorcery. +Oracle:Sacrifice this enchantment: Planeswalk. Activate only as a sorcery. diff --git a/forge-gui/res/tokenscripts/r_1_1_performer_flying.txt b/forge-gui/res/tokenscripts/r_1_1_performer_flying.txt new file mode 100644 index 000000000000..9562c7de958c --- /dev/null +++ b/forge-gui/res/tokenscripts/r_1_1_performer_flying.txt @@ -0,0 +1,7 @@ +Name:Performer Token +ManaCost:no cost +Colors:red +Types:Creature Performer +PT:1/1 +K:Flying +Oracle:Flying diff --git a/forge-gui/res/tokenscripts/r_1_1_performer_flying_haste.txt b/forge-gui/res/tokenscripts/r_1_1_performer_flying_haste.txt new file mode 100644 index 000000000000..404085c80084 --- /dev/null +++ b/forge-gui/res/tokenscripts/r_1_1_performer_flying_haste.txt @@ -0,0 +1,8 @@ +Name:Performer Token +ManaCost:no cost +Colors:red +Types:Creature Performer +PT:1/1 +K:Flying +K:Haste +Oracle:Flying, haste diff --git a/forge-gui/res/tokenscripts/r_2_2_warrior_haste_coward.txt b/forge-gui/res/tokenscripts/r_2_2_warrior_haste_coward.txt new file mode 100644 index 000000000000..0c5471526545 --- /dev/null +++ b/forge-gui/res/tokenscripts/r_2_2_warrior_haste_coward.txt @@ -0,0 +1,8 @@ +Name:Warrior Token +ManaCost:no cost +Colors:red +Types:Creature Warrior +PT:2/2 +K:Haste +S:Mode$ CantBlockBy | ValidBlocker$ Creature.Coward | ValidAttacker$ Creature.Warrior | Description$ Cowards can't block Warriors. +Oracle:Haste\nCowards can't block Warriors. From 7b1f702f0baf8866c94e230114e9cf62b7684130 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Tue, 4 Aug 2026 18:02:03 +0800 Subject: [PATCH 02/20] Added Planar Types to the PUNK Edition Text File --- .../res/editions/Black Lotus Unknown Planechase.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt index ba20174f6d2d..51e83cc9d48f 100644 --- a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt +++ b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt @@ -58,3 +58,14 @@ PLA043 C That's Enough Slices @ PLA044 C The Command Zone @ PLA045 C The Pro Tour @ PLA046 C Year-End Review @ + +[PlanarTypes] +Amsterdam +Blind Eternities +Bloomburrow +Chicago +Duskmourn +Hell +Las Vegas +MagicCon +Thunder Junction From 82217e7d8a462f1f78fe9f0c57747dab2ef158cc Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Wed, 5 Aug 2026 17:55:21 +0800 Subject: [PATCH 03/20] Update CounterEnumType.java Added/updated entries to the following counters: - Dread (Positive > Neutral) [Balances the negative effect of No Way Out] - Glass (Negative) - Shy (Neutral) [Neutral since the Coward effect of Shy Town isn't tied to the counter] - Point (Positive) --- .../src/main/java/forge/game/card/CounterEnumType.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/card/CounterEnumType.java b/forge-game/src/main/java/forge/game/card/CounterEnumType.java index 60bcb4555476..05c6d7b60a11 100644 --- a/forge-game/src/main/java/forge/game/card/CounterEnumType.java +++ b/forge-game/src/main/java/forge/game/card/CounterEnumType.java @@ -129,7 +129,7 @@ public enum CounterEnumType implements CounterType { DOOM("DOOM", 255, 104, 118, CounterAiCategory.Negative), - DREAD ("DREAD", 205, 170, 240, CounterAiCategory.Positive), + DREAD ("DREAD", 205, 170, 240, CounterAiCategory.Neutral), DREAM("DREAM", 190, 189, 255, CounterAiCategory.Positive), @@ -195,6 +195,8 @@ public enum CounterEnumType implements CounterType { GHOSTFORM("GHSTF", 223, 0, 254, CounterAiCategory.Neutral), + GLASS("GLASS", 219, 225, 227, CounterAiCategory.Negative), + GLYPH("GLYPH", 184, 202, 199, CounterAiCategory.Positive), GOLD("GOLD", 248, 191, 0, CounterAiCategory.Negative), @@ -407,6 +409,8 @@ public enum CounterEnumType implements CounterType { SHRED("SHRED", 255, 165, 152, CounterAiCategory.Positive), + SHY("SHY", 232, 178, 199, CounterAiCategory.Neutral), + SILVER("SILVER", 192, 192, 192, CounterAiCategory.Positive), SKEWER("SKEWER", 202, 192, 156, CounterAiCategory.Positive), @@ -491,6 +495,8 @@ public enum CounterEnumType implements CounterType { EXPERIENCE("EXP", CounterAiCategory.Positive), + POINT("POINT", CounterAiCategory.Positive), + POISON("POISN", CounterAiCategory.Negative), RAD("RAD", CounterAiCategory.Neutral), From 76f7101f2b261168a518064360ff773679817c2e Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Sat, 8 Aug 2026 19:11:32 +0800 Subject: [PATCH 04/20] Implemented The Sphere - Made additions/edits to AmassEffect.java and AmassAi.java to make it able to handle non-black army tokens (any valid combination of colors will work). [Implemented with assistance from Claude] --- .../src/main/java/forge/ai/ability/AmassAi.java | 4 +++- .../forge/game/ability/effects/AmassEffect.java | 9 +++++++-- forge-gui/res/cardsfolder/t/the_sphere.txt | 16 ++++++++++++++++ .../editions/Black Lotus Unknown Planechase.txt | 2 ++ forge-gui/res/tokenscripts/r_0_0_fan_army.txt | 6 ++++++ 5 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 forge-gui/res/cardsfolder/t/the_sphere.txt create mode 100644 forge-gui/res/tokenscripts/r_0_0_fan_army.txt diff --git a/forge-ai/src/main/java/forge/ai/ability/AmassAi.java b/forge-ai/src/main/java/forge/ai/ability/AmassAi.java index 2cc4cbbef736..6c191479b007 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AmassAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AmassAi.java @@ -7,6 +7,7 @@ import forge.ai.AiPlayDecision; import forge.ai.ComputerUtilCard; import forge.ai.SpellAbilityAi; +import forge.card.ColorSet; import forge.game.Game; import forge.game.ability.AbilityUtils; import forge.game.card.*; @@ -35,7 +36,8 @@ protected AiAbilityDecision checkApiLogic(Player ai, final SpellAbility sa) { return new AiAbilityDecision(0, AiPlayDecision.DoesntImpactGame); } final String type = sa.getParam("Type"); - final String tokenScript = "b_0_0_" + sa.getOriginalParam("Type").toLowerCase() + "_army"; + final String color = sa.getParamOrDefault("Color", "black"); + final String tokenScript = ColorSet.fromNames(color.split(",")).toString().toLowerCase() + "_0_0_" + sa.getOriginalParam("Type").toLowerCase() + "_army"; final int amount = AbilityUtils.calculateAmount(host, sa.getParamOrDefault("Num", "1"), sa); Card token = TokenInfo.getProtoType(tokenScript, sa, ai, false); diff --git a/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java index bfa795627b01..eb1b07c3cf13 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java @@ -8,6 +8,7 @@ import com.google.common.collect.Maps; import forge.card.CardType; +import forge.card.ColorSet; import forge.game.Game; import forge.game.GameEntityCounterTable; import forge.game.ability.AbilityUtils; @@ -34,13 +35,14 @@ protected String getStackDescription(SpellAbility sa) { final Card card = sa.getHostCard(); final int amount = AbilityUtils.calculateAmount(card, sa.getParamOrDefault("Num", "1"), sa); final String type = sa.getParam("Type"); + final String color = sa.getParamOrDefault("Color", "black"); sb.append(CardType.getPluralType(type)).append(" ").append(amount).append(" (Put "); sb.append(Lang.nounWithNumeral(amount, "+1/+1 counter")); // TODO fix reminder after CR - sb.append("on an Army you control. If you don't control one, create a 0/0 black " + type + " Army creature token first.)"); + sb.append("on an Army you control. If you don't control one, create a 0/0 " + color + " " + type + " Army creature token first.)"); return sb.toString(); } @@ -52,13 +54,16 @@ public void resolve(SpellAbility sa) { final Player amasser = getTargetPlayers(sa).get(0); final int amount = AbilityUtils.calculateAmount(source, sa.getParamOrDefault("Num", "1"), sa); final String type = sa.getParam("Type"); + final String color = sa.getParamOrDefault("Color", "black"); // create army token if needed if (!amasser.getCardsIn(ZoneType.Battlefield).anyMatch(CardPredicates.isType("Army"))) { CardZoneTable triggerList = new CardZoneTable(); MutableBoolean combatChanged = new MutableBoolean(false); - StringBuilder sb = new StringBuilder("b_0_0_"); + // Color defaults to black per CR 701.47a; Color$ lets a card override it (e.g. a red Army token) + StringBuilder sb = new StringBuilder(ColorSet.fromNames(color.split(",")).toString().toLowerCase()); + sb.append("_0_0_"); sb.append(sa.getOriginalParam("Type").toLowerCase()).append("_army"); final Card result = TokenInfo.getProtoType(sb.toString(), sa, amasser, false); diff --git a/forge-gui/res/cardsfolder/t/the_sphere.txt b/forge-gui/res/cardsfolder/t/the_sphere.txt new file mode 100644 index 000000000000..aad20616ff16 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/the_sphere.txt @@ -0,0 +1,16 @@ +Name:The Sphere +ManaCost:no cost +Types:Plane Las Vegas +T:Mode$ AttackerBlocked | ValidCard$ Creature.YouCtrl | TriggerZones$ Command | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control becomes blocked, round both its power and toughness up to the nearest 5. (A creature with 5 power would round up to 5.) +SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +PowerRoundUp | NumDef$ +ToughRoundUp +SVar:PowerMod5:TriggeredAttacker$CardPower/Mod.5 +SVar:PowerGap:SVar$PowerMod5/NMinus.5 +SVar:PowerRoundUp:SVar$PowerGap/Mod.5 +SVar:ToughMod5:TriggeredAttacker$CardToughness/Mod.5 +SVar:ToughGap:SVar$ToughMod5/NMinus.5 +SVar:ToughRoundUp:SVar$ToughGap/Mod.5 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBAmass | TriggerDescription$ Whenever Chaos ensues, Amass Fans 5. (Put five +1/+1 counters on an Army you control. It's also a Fan. If you don't control an army, create a 0/0 red Fan Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Fan | Color$ red | Num$ 5 +SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True +DeckHas:Ability$Counters|Token & Type$Fan|Army +Oracle:Whenever a creature you control becomes blocked, round both its power and toughness up to the nearest 5. (A creature with 5 power would round up to 5.)\nWhenever Chaos ensues, Amass Fans 5. (Put five +1/+1 counters on an Army you control. It's also a Fan. If you don't control an army, create a 0/0 red Fan Army creature token first.) diff --git a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt index 51e83cc9d48f..3cf07743f9dd 100644 --- a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt +++ b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt @@ -59,6 +59,8 @@ PLA044 C The Command Zone @ PLA045 C The Pro Tour @ PLA046 C Year-End Review @ +[CreatureTypes] +Fan:Fans [PlanarTypes] Amsterdam Blind Eternities diff --git a/forge-gui/res/tokenscripts/r_0_0_fan_army.txt b/forge-gui/res/tokenscripts/r_0_0_fan_army.txt new file mode 100644 index 000000000000..0683321ffe45 --- /dev/null +++ b/forge-gui/res/tokenscripts/r_0_0_fan_army.txt @@ -0,0 +1,6 @@ +Name:Fan Army Token +ManaCost:no cost +Colors:red +Types:Creature Fan Army +PT:0/0 +Oracle: From da55b1d8d5e29e0690bbcadd7dcee6b83dbcb8cb Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Sat, 8 Aug 2026 19:34:40 +0800 Subject: [PATCH 05/20] Entropy and Omenpath added as subtypes to Enchantments --- forge-gui/res/editions/Black Lotus Unknown Planechase.txt | 3 +++ forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt | 2 +- forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt index 3cf07743f9dd..e177a79d4fa5 100644 --- a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt +++ b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt @@ -61,6 +61,9 @@ PLA046 C Year-End Review @ [CreatureTypes] Fan:Fans +[EnchantmentTypes] +Entropy +Omenpath [PlanarTypes] Amsterdam Blind Eternities diff --git a/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt b/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt index a5577a59381e..178f1359eb7a 100644 --- a/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt +++ b/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt @@ -1,5 +1,5 @@ Name:Entropy ManaCost:no cost -Types:Enchantment +Types:Enchantment Entropy A:AB$ ChaosEnsues | Cost$ Sac<1/CARDNAME/this enchantment> | SorcerySpeed$ True | SpellDescription$ Chaos ensues. Activate only as a sorcery. Oracle:Sacrifice this enchantment: Chaos ensues. Activate only as a sorcery. diff --git a/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt b/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt index 12089f2b48ec..c863fa25c3b7 100644 --- a/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt +++ b/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt @@ -1,5 +1,5 @@ Name:Omenpath ManaCost:no cost -Types:Enchantment +Types:Enchantment Omenpath A:AB$ Planeswalk | Cost$ Sac<1/CARDNAME/this enchantment> | SorcerySpeed$ True | SpellDescription$ Planeswalk. Activate only as a sorcery. Oracle:Sacrifice this enchantment: Planeswalk. Activate only as a sorcery. From 5106a25951a6e468d3d915d6abf4c322bb06aed9 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Sun, 9 Aug 2026 15:52:27 +0800 Subject: [PATCH 06/20] Delete welcome_to_valley.txt --- forge-gui/res/cardsfolder/w/welcome_to_valley.txt | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 forge-gui/res/cardsfolder/w/welcome_to_valley.txt diff --git a/forge-gui/res/cardsfolder/w/welcome_to_valley.txt b/forge-gui/res/cardsfolder/w/welcome_to_valley.txt deleted file mode 100644 index d4b4d64558da..000000000000 --- a/forge-gui/res/cardsfolder/w/welcome_to_valley.txt +++ /dev/null @@ -1,8 +0,0 @@ -Name:Welcome to Valley -ManaCost:no cost -Types:Plane Bloomburrow -T:Mode$ SpellCast | ValidCard$ Creature.Antelope,Creature.Ape,Creature.Armadillo,Creature.Aurochs,Creature.Badger,Creature.Bat,Creature.Bear,Creature.Beaver,Creature.Bird,Creature.Bison,Creature.Boar,Creature.Camel,Creature.Capybara,Creature.Caribou,Creature.Cat,Creature.Cow,Creature.Coyote,Creature.Crab,Creature.Crocodile,Creature.Dinosaur,Creature.Dog,Creature.Echidna,Creature.Elephant,Creature.Elk,Creature.Ferret,Creature.Fish,Creature.Fox,Creature.Frog,Creature.Giraffe,Creature.Goat,Creature.Hamster,Creature.Hedgehog,Creature.Hippo,Creature.Horse,Creature.Hyena,Creature.Insect,Creature.Jackal,Creature.Jellyfish,Creature.Kangaroo,Creature.Leech,Creature.Lemur,Creature.Llama,Creature.Lizard,Creature.Lobster,Creature.Mammoth,Creature.Mite,Creature.Mole,Creature.Mongoose,Creature.Monkey,Creature.Mouse,Creature.Nautilus,Creature.Octopus,Creature.Otter,Creature.Ox,Creature.Oyster,Creature.Pangolin,Creature.Platypus,Creature.Porcupine,Creature.Possum,Creature.Rabbit,Creature.Raccoon,Creature.Rat,Creature.Rhino,Creature.Sable,Creature.Salamander,Creature.Scorpion,Creature.Seal,Creature.Shark,Creature.Sheep,Creature.Skunk,Creature.Sloth,Creature.Slug,Creature.Snail,Creature.Snake,Creature.Spider,Creature.Sponge,Creature.Squid,Creature.Squirrel,Creature.Starfish,Creature.Trilobite,Creature.Turtle,Creature.Walrus,Creature.Weasel,Creature.Whale,Creature.Wolf,Creature.Wolverine,Creature.Wombat,Creature.Worm | ValidActivatingPlayer$ You | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever you cast an animal spell, draw a card. -SVar:TrigDraw:DB$ Draw -T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCopy | TriggerDescription$ Whenever Chaos ensues, create a token that's a copy of target creature you control, except it's a 1/1. -SVar:TrigCopy:DB$ CopyPermanent | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SetPower$ 1 | SetToughness$ 1 -Oracle:Whenever you cast an animal spell, draw a card. (Animals are any non-human creature types that are animals in real life.)\nWhenever Chaos ensues, create a token that's a copy of target creature you control, except it's a 1/1. From cd51d81a162f539f896c9474c4c63e76a90ea6b6 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Wed, 12 Aug 2026 06:14:35 +0800 Subject: [PATCH 07/20] Revert Some Implementations - Dread Counter in CounterEnumType - Neutral > Positive - Removed The Sphere implementation for now. --- .../src/main/java/forge/ai/ability/AmassAi.java | 4 +--- .../forge/game/ability/effects/AmassEffect.java | 9 ++------- .../java/forge/game/card/CounterEnumType.java | 2 +- forge-gui/res/cardsfolder/t/the_sphere.txt | 16 ---------------- forge-gui/res/tokenscripts/r_0_0_fan_army.txt | 6 ------ 5 files changed, 4 insertions(+), 33 deletions(-) delete mode 100644 forge-gui/res/cardsfolder/t/the_sphere.txt delete mode 100644 forge-gui/res/tokenscripts/r_0_0_fan_army.txt diff --git a/forge-ai/src/main/java/forge/ai/ability/AmassAi.java b/forge-ai/src/main/java/forge/ai/ability/AmassAi.java index 6c191479b007..2cc4cbbef736 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AmassAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AmassAi.java @@ -7,7 +7,6 @@ import forge.ai.AiPlayDecision; import forge.ai.ComputerUtilCard; import forge.ai.SpellAbilityAi; -import forge.card.ColorSet; import forge.game.Game; import forge.game.ability.AbilityUtils; import forge.game.card.*; @@ -36,8 +35,7 @@ protected AiAbilityDecision checkApiLogic(Player ai, final SpellAbility sa) { return new AiAbilityDecision(0, AiPlayDecision.DoesntImpactGame); } final String type = sa.getParam("Type"); - final String color = sa.getParamOrDefault("Color", "black"); - final String tokenScript = ColorSet.fromNames(color.split(",")).toString().toLowerCase() + "_0_0_" + sa.getOriginalParam("Type").toLowerCase() + "_army"; + final String tokenScript = "b_0_0_" + sa.getOriginalParam("Type").toLowerCase() + "_army"; final int amount = AbilityUtils.calculateAmount(host, sa.getParamOrDefault("Num", "1"), sa); Card token = TokenInfo.getProtoType(tokenScript, sa, ai, false); diff --git a/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java index eb1b07c3cf13..bfa795627b01 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java @@ -8,7 +8,6 @@ import com.google.common.collect.Maps; import forge.card.CardType; -import forge.card.ColorSet; import forge.game.Game; import forge.game.GameEntityCounterTable; import forge.game.ability.AbilityUtils; @@ -35,14 +34,13 @@ protected String getStackDescription(SpellAbility sa) { final Card card = sa.getHostCard(); final int amount = AbilityUtils.calculateAmount(card, sa.getParamOrDefault("Num", "1"), sa); final String type = sa.getParam("Type"); - final String color = sa.getParamOrDefault("Color", "black"); sb.append(CardType.getPluralType(type)).append(" ").append(amount).append(" (Put "); sb.append(Lang.nounWithNumeral(amount, "+1/+1 counter")); // TODO fix reminder after CR - sb.append("on an Army you control. If you don't control one, create a 0/0 " + color + " " + type + " Army creature token first.)"); + sb.append("on an Army you control. If you don't control one, create a 0/0 black " + type + " Army creature token first.)"); return sb.toString(); } @@ -54,16 +52,13 @@ public void resolve(SpellAbility sa) { final Player amasser = getTargetPlayers(sa).get(0); final int amount = AbilityUtils.calculateAmount(source, sa.getParamOrDefault("Num", "1"), sa); final String type = sa.getParam("Type"); - final String color = sa.getParamOrDefault("Color", "black"); // create army token if needed if (!amasser.getCardsIn(ZoneType.Battlefield).anyMatch(CardPredicates.isType("Army"))) { CardZoneTable triggerList = new CardZoneTable(); MutableBoolean combatChanged = new MutableBoolean(false); - // Color defaults to black per CR 701.47a; Color$ lets a card override it (e.g. a red Army token) - StringBuilder sb = new StringBuilder(ColorSet.fromNames(color.split(",")).toString().toLowerCase()); - sb.append("_0_0_"); + StringBuilder sb = new StringBuilder("b_0_0_"); sb.append(sa.getOriginalParam("Type").toLowerCase()).append("_army"); final Card result = TokenInfo.getProtoType(sb.toString(), sa, amasser, false); diff --git a/forge-game/src/main/java/forge/game/card/CounterEnumType.java b/forge-game/src/main/java/forge/game/card/CounterEnumType.java index f786b819d269..dc075c09d79a 100644 --- a/forge-game/src/main/java/forge/game/card/CounterEnumType.java +++ b/forge-game/src/main/java/forge/game/card/CounterEnumType.java @@ -129,7 +129,7 @@ public enum CounterEnumType implements CounterType { DOOM("DOOM", 255, 104, 118, CounterAiCategory.Negative), - DREAD ("DREAD", 205, 170, 240, CounterAiCategory.Neutral), + DREAD ("DREAD", 205, 170, 240, CounterAiCategory.Positive), DREAM("DREAM", 190, 189, 255, CounterAiCategory.Positive), diff --git a/forge-gui/res/cardsfolder/t/the_sphere.txt b/forge-gui/res/cardsfolder/t/the_sphere.txt deleted file mode 100644 index aad20616ff16..000000000000 --- a/forge-gui/res/cardsfolder/t/the_sphere.txt +++ /dev/null @@ -1,16 +0,0 @@ -Name:The Sphere -ManaCost:no cost -Types:Plane Las Vegas -T:Mode$ AttackerBlocked | ValidCard$ Creature.YouCtrl | TriggerZones$ Command | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control becomes blocked, round both its power and toughness up to the nearest 5. (A creature with 5 power would round up to 5.) -SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +PowerRoundUp | NumDef$ +ToughRoundUp -SVar:PowerMod5:TriggeredAttacker$CardPower/Mod.5 -SVar:PowerGap:SVar$PowerMod5/NMinus.5 -SVar:PowerRoundUp:SVar$PowerGap/Mod.5 -SVar:ToughMod5:TriggeredAttacker$CardToughness/Mod.5 -SVar:ToughGap:SVar$ToughMod5/NMinus.5 -SVar:ToughRoundUp:SVar$ToughGap/Mod.5 -T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBAmass | TriggerDescription$ Whenever Chaos ensues, Amass Fans 5. (Put five +1/+1 counters on an Army you control. It's also a Fan. If you don't control an army, create a 0/0 red Fan Army creature token first.) -SVar:DBAmass:DB$ Amass | Type$ Fan | Color$ red | Num$ 5 -SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True -DeckHas:Ability$Counters|Token & Type$Fan|Army -Oracle:Whenever a creature you control becomes blocked, round both its power and toughness up to the nearest 5. (A creature with 5 power would round up to 5.)\nWhenever Chaos ensues, Amass Fans 5. (Put five +1/+1 counters on an Army you control. It's also a Fan. If you don't control an army, create a 0/0 red Fan Army creature token first.) diff --git a/forge-gui/res/tokenscripts/r_0_0_fan_army.txt b/forge-gui/res/tokenscripts/r_0_0_fan_army.txt deleted file mode 100644 index 0683321ffe45..000000000000 --- a/forge-gui/res/tokenscripts/r_0_0_fan_army.txt +++ /dev/null @@ -1,6 +0,0 @@ -Name:Fan Army Token -ManaCost:no cost -Colors:red -Types:Creature Fan Army -PT:0/0 -Oracle: From ad835d342f6bbc37c682a0f6c85e373920404ddb Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Wed, 12 Aug 2026 22:38:35 +0800 Subject: [PATCH 08/20] Cleanup --- forge-gui/res/cardsfolder/m/mojave_desert.txt | 2 +- forge-gui/res/editions/Black Lotus Unknown Planechase.txt | 4 ++-- forge-gui/res/tokenscripts/c_a_hat_sac.txt | 2 +- forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt | 2 +- forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/forge-gui/res/cardsfolder/m/mojave_desert.txt b/forge-gui/res/cardsfolder/m/mojave_desert.txt index 534341310e08..6982713b105c 100644 --- a/forge-gui/res/cardsfolder/m/mojave_desert.txt +++ b/forge-gui/res/cardsfolder/m/mojave_desert.txt @@ -8,7 +8,7 @@ SVar:DBSnakeCheck:DB$ Token | TokenScript$ b_1_1_snake_deathtouch | TokenOwner$ SVar:DBShuffleOne:DB$ Shuffle | Defined$ Player.IsRemembered | SubAbility$ DBCleanupOne SVar:DBCleanupOne:DB$ Cleanup | ClearImprinted$ True T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigChaosRemember | TriggerDescription$ Whenever chaos ensues, create X 1/1 black Snake creature tokens with deathtouch, where X is 1 plus the number of nonbasic land types among lands you control. -SVar:TrigChaosRemember:DB$ Pump | RememberObjects$ Valid Land.YouCtrl+nonBasic | SubAbility$ DBChaosToken +SVar:TrigChaosRemember:DB$ Pump | RememberObjects$ Valid Land.YouCtrl | SubAbility$ DBChaosToken SVar:DBChaosToken:DB$ Token | TokenAmount$ X | TokenScript$ b_1_1_snake_deathtouch | TokenOwner$ You | SubAbility$ DBCleanupChaos SVar:X:Remembered$LandType/Plus.1 SVar:DBCleanupChaos:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt index e177a79d4fa5..62ce48ff2bbc 100644 --- a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt +++ b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt @@ -59,11 +59,11 @@ PLA044 C The Command Zone @ PLA045 C The Pro Tour @ PLA046 C Year-End Review @ -[CreatureTypes] -Fan:Fans [EnchantmentTypes] Entropy Omenpath +[ArtifactTypes] +Hat [PlanarTypes] Amsterdam Blind Eternities diff --git a/forge-gui/res/tokenscripts/c_a_hat_sac.txt b/forge-gui/res/tokenscripts/c_a_hat_sac.txt index 56bbe161f8bb..6d8c22fab507 100644 --- a/forge-gui/res/tokenscripts/c_a_hat_sac.txt +++ b/forge-gui/res/tokenscripts/c_a_hat_sac.txt @@ -1,5 +1,5 @@ Name:Hat Token ManaCost:no cost -Types:Artifact +Types:Artifact Hat A:AB$ Token | Cost$ 1 T Sac<1/CARDNAME/this token> | TokenScript$ w_1_1_rabbit | SpellDescription$ Create a 1/1 white Rabbit creature token. Oracle:{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token. diff --git a/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt b/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt index 178f1359eb7a..40e65909446f 100644 --- a/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt +++ b/forge-gui/res/tokenscripts/c_e_entropy_sac_chaos.txt @@ -1,4 +1,4 @@ -Name:Entropy +Name:Entropy Token ManaCost:no cost Types:Enchantment Entropy A:AB$ ChaosEnsues | Cost$ Sac<1/CARDNAME/this enchantment> | SorcerySpeed$ True | SpellDescription$ Chaos ensues. Activate only as a sorcery. diff --git a/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt b/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt index c863fa25c3b7..cf4f5d93b261 100644 --- a/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt +++ b/forge-gui/res/tokenscripts/c_e_omenpath_sac_planeswalk.txt @@ -1,4 +1,4 @@ -Name:Omenpath +Name:Omenpath Token ManaCost:no cost Types:Enchantment Omenpath A:AB$ Planeswalk | Cost$ Sac<1/CARDNAME/this enchantment> | SorcerySpeed$ True | SpellDescription$ Planeswalk. Activate only as a sorcery. From cb1030b4c9ee2ce9513d298cd40168760129c015 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Wed, 12 Aug 2026 23:40:06 +0800 Subject: [PATCH 09/20] Update CounterEnumType.java --- forge-game/src/main/java/forge/game/card/CounterEnumType.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CounterEnumType.java b/forge-game/src/main/java/forge/game/card/CounterEnumType.java index dc075c09d79a..5d0373f5da48 100644 --- a/forge-game/src/main/java/forge/game/card/CounterEnumType.java +++ b/forge-game/src/main/java/forge/game/card/CounterEnumType.java @@ -497,8 +497,6 @@ public enum CounterEnumType implements CounterType { EXPERIENCE("EXP", CounterAiCategory.Positive), - POINT("POINT", CounterAiCategory.Positive), - POISON("POISN", CounterAiCategory.Negative), RAD("RAD", CounterAiCategory.Neutral), From e364eb605ad134e7331b06ef48a9c85fcfa5b0fd Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Wed, 12 Aug 2026 23:56:04 +0800 Subject: [PATCH 10/20] Update raiders_allegiance.txt --- forge-gui/res/cardsfolder/r/raiders_allegiance.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/r/raiders_allegiance.txt b/forge-gui/res/cardsfolder/r/raiders_allegiance.txt index 350225ec57c3..d148a437f454 100644 --- a/forge-gui/res/cardsfolder/r/raiders_allegiance.txt +++ b/forge-gui/res/cardsfolder/r/raiders_allegiance.txt @@ -5,7 +5,7 @@ T:Mode$ Phase | Phase$ Main | PhaseCount$ 2 | ValidPlayer$ You | TriggerZones$ C SVar:TrigRaid:DB$ PutCounter | Defined$ You | CounterType$ POINT | CounterNum$ X | SubAbility$ DBRaidToken SVar:DBRaidToken:DB$ Token | TokenScript$ b_2_2_pirate_menace | TokenOwner$ You | TokenAmount$ X SVar:X:PlayerCountPlayers$HasPropertywasDealtCombatDamageThisTurn -T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | TriggerZones$ Command | Execute$ TrigPayout | TriggerDescription$ Whenever you planeswalk away from CARDNAME, each player with the most point counters or tied for the most point counters creates three Treasure tokens and draws three cards. Then remove all point counters from each player. +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigPayout | TriggerDescription$ Whenever you planeswalk away from CARDNAME, each player with the most point counters or tied for the most point counters creates three Treasure tokens and draws three cards. Then remove all point counters from each player. SVar:TrigPayout:DB$ Token | TokenScript$ c_a_treasure_sac | TokenOwner$ Player.ConditionGEMaxPoints Counters.POINT | TokenAmount$ 3 | SubAbility$ DBPayoutDraw SVar:DBPayoutDraw:DB$ Draw | Defined$ Player.ConditionGEMaxPoints Counters.POINT | NumCards$ 3 | SubAbility$ DBRemoveAllPoints SVar:DBRemoveAllPoints:DB$ RemoveCounter | Defined$ Player | CounterType$ POINT | CounterNum$ All From e5b4f8382844a7ce47ea43413924a32963fb500b Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Thu, 13 Aug 2026 00:08:30 +0800 Subject: [PATCH 11/20] Some Small Fixes --- .../cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt | 2 +- forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt b/forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt index 42a5c7221052..866302318242 100644 --- a/forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt +++ b/forge-gui/res/cardsfolder/a/asmoranomardicadaistinaculdacars_kitchen.txt @@ -1,7 +1,7 @@ Name:Asmoranomardicadaistinaculdacar's Kitchen ManaCost:no cost Types:Plane Hell -T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and whenever a creature enters under your control, create a Food token. +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and whenever a creature enters under your control, create a Food token. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Command | Secondary$ True | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and whenever a creature enters under your control, create a Food token. SVar:TrigToken:DB$ Token | TokenScript$ c_a_food_sac | TokenOwner$ You T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigDrain | TriggerDescription$ Whenever you gain life, target opponent loses that much life. diff --git a/forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt b/forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt index 59e70f9c90b8..a1c777013ecb 100644 --- a/forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt +++ b/forge-gui/res/cardsfolder/e/elvish_impersonation_contest.txt @@ -1,7 +1,7 @@ Name:Elvish Impersonation Contest ManaCost:no cost Types:Plane Las Vegas -T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and at the beginning of your upkeep, create an Elvish Impersonators token. +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and at the beginning of your upkeep, create an Elvish Impersonators token. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Secondary$ True | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here and at the beginning of your upkeep, create an Elvish Impersonators token. SVar:TrigToken:DB$ CopyPermanent | DefinedName$ Elvish Impersonators T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, target Elvish Impersonators becomes a 6/6. Its controller creates a Treasure token. From 58d87677b13c57ee4a34fca03d0d6fd9ded649e5 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Thu, 13 Aug 2026 18:45:41 +0800 Subject: [PATCH 12/20] Update mojave_desert.txt --- forge-gui/res/cardsfolder/m/mojave_desert.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/m/mojave_desert.txt b/forge-gui/res/cardsfolder/m/mojave_desert.txt index 6982713b105c..9bcf40fa2b31 100644 --- a/forge-gui/res/cardsfolder/m/mojave_desert.txt +++ b/forge-gui/res/cardsfolder/m/mojave_desert.txt @@ -10,6 +10,9 @@ SVar:DBCleanupOne:DB$ Cleanup | ClearImprinted$ True T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigChaosRemember | TriggerDescription$ Whenever chaos ensues, create X 1/1 black Snake creature tokens with deathtouch, where X is 1 plus the number of nonbasic land types among lands you control. SVar:TrigChaosRemember:DB$ Pump | RememberObjects$ Valid Land.YouCtrl | SubAbility$ DBChaosToken SVar:DBChaosToken:DB$ Token | TokenAmount$ X | TokenScript$ b_1_1_snake_deathtouch | TokenOwner$ You | SubAbility$ DBCleanupChaos -SVar:X:Remembered$LandType/Plus.1 +SVar:X:SVar$XNonbasic/Plus.1 +SVar:XNonbasic:SVar$XAllTypes/Minus.XBasicTypes +SVar:XAllTypes:Remembered$LandType +SVar:XBasicTypes:Count$Domain SVar:DBCleanupChaos:DB$ Cleanup | ClearRemembered$ True Oracle:Whenever you planeswalk to Mojave Desert, each player searches their library for up to two basic land or Desert cards and puts them onto the battlefield tapped, then shuffles their library. If a Desert entered the battlefield under a player's control this way, they create a 1/1 black Snake creature token with deathtouch.\nWhenever chaos ensues, create X 1/1 black Snake creature tokens with deathtouch, where X is 1 plus the number of nonbasic land types among lands you control. From 6f6ba65f67ec2234c44b311f15b8d34c99d74d22 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Thu, 13 Aug 2026 19:09:55 +0800 Subject: [PATCH 13/20] Create the_windy_city.txt --- forge-gui/res/cardsfolder/t/the_windy_city.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 forge-gui/res/cardsfolder/t/the_windy_city.txt diff --git a/forge-gui/res/cardsfolder/t/the_windy_city.txt b/forge-gui/res/cardsfolder/t/the_windy_city.txt new file mode 100644 index 000000000000..951f354dea11 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/the_windy_city.txt @@ -0,0 +1,15 @@ +Name:The Windy City +ManaCost:no cost +Types:Plane Chicago +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigPut | TriggerDescription$ When you planeswalk here and at the beginning of your upkeep, put a flying counter on target nontoken creature you control without flying. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigPut | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk here and at the beginning of your upkeep, put a flying counter on target nontoken creature you control without flying. +SVar:TrigPut:DB$ PutCounter | ValidTgts$ Creature.!token+YouCtrl+withoutFlying | TgtPrompt$ Select target nontoken creature you control without flying | CounterType$ Flying | CounterNum$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigExile | TriggerDescription$ Whenever chaos ensues, exile target creature with flying. For as long as it remains exiled, its owner may cast it by paying {2} rather than paying its mana cost. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayAltManaCost$ 2 | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Description$ You may cast the card by paying {2} rather than paying its mana cost. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigRemove | TriggerDescription$ When you planeswalk away from CARDNAME, remove all flying counters from all creatures. +SVar:TrigRemove:DB$ RemoveCounterAll | ValidCards$ Creature | CounterType$ Flying | AllCounters$ True +SVar:AIRollPlanarDieParams:Mode$ Always +Oracle:When you planeswalk here and at the beginning of your upkeep, put a flying counter on target nontoken creature you control without flying.\nWhenever chaos ensues, exile target creature with flying. For as long as it remains exiled, its owner may cast it by paying {2} rather than paying its mana cost.\nWhen you planeswalk away from The Windy City, remove all flying counters from all creatures. From 398aa5078a8040030ebac010daa5e9772cdb1a5a Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Fri, 14 Aug 2026 14:08:08 +0800 Subject: [PATCH 14/20] Workaround to make No Way Out not collide --- .../cardsfolder/{n/no_way_out_plane.txt => p/p_no_way_out.txt} | 0 forge-gui/res/editions/Black Lotus Unknown Planechase.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename forge-gui/res/cardsfolder/{n/no_way_out_plane.txt => p/p_no_way_out.txt} (100%) diff --git a/forge-gui/res/cardsfolder/n/no_way_out_plane.txt b/forge-gui/res/cardsfolder/p/p_no_way_out.txt similarity index 100% rename from forge-gui/res/cardsfolder/n/no_way_out_plane.txt rename to forge-gui/res/cardsfolder/p/p_no_way_out.txt diff --git a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt index 62ce48ff2bbc..8a645d3da378 100644 --- a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt +++ b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt @@ -42,7 +42,7 @@ PLA027 C Elvish Impersonation Contest @ PLA028 C High and Dry Black Market @ PLA029 C Jalira's Show @ PLA030 C Mojave Desert @ -PLA031 C P-No Way Out @ +PLA031 C P-No Way Out @ ${"flavorName": "No Way Out"} PLA032 C Omenpath Instability @ PLA033 C Preston's Stage @ PLA034 C Pursued by Something @ From 1a2299b7ede0916e02b3f4ca7ebed271f270e748 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Fri, 14 Aug 2026 14:09:44 +0800 Subject: [PATCH 15/20] Update p_no_way_out.txt --- forge-gui/res/cardsfolder/p/p_no_way_out.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/p/p_no_way_out.txt b/forge-gui/res/cardsfolder/p/p_no_way_out.txt index 442df87acd31..9d3002c77efb 100644 --- a/forge-gui/res/cardsfolder/p/p_no_way_out.txt +++ b/forge-gui/res/cardsfolder/p/p_no_way_out.txt @@ -1,4 +1,4 @@ -Name:No Way Out +Name:P-No Way Out ManaCost:no cost Types:Plane Duskmourn K:etbCounter:DREAD:3:no Condition:CARDNAME enters with three dread counters. From 21159030caadc1271598587af4cb189bb78fa41d Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Fri, 14 Aug 2026 14:33:15 +0800 Subject: [PATCH 16/20] Update the_windy_city.txt --- forge-gui/res/cardsfolder/t/the_windy_city.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/t/the_windy_city.txt b/forge-gui/res/cardsfolder/t/the_windy_city.txt index 951f354dea11..52f21335207a 100644 --- a/forge-gui/res/cardsfolder/t/the_windy_city.txt +++ b/forge-gui/res/cardsfolder/t/the_windy_city.txt @@ -7,7 +7,7 @@ SVar:TrigPut:DB$ PutCounter | ValidTgts$ Creature.!token+YouCtrl+withoutFlying | T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigExile | TriggerDescription$ Whenever chaos ensues, exile target creature with flying. For as long as it remains exiled, its owner may cast it by paying {2} rather than paying its mana cost. SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | RememberChanged$ True | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnMoved$ Exile | SubAbility$ DBCleanup -SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayAltManaCost$ 2 | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Description$ You may cast the card by paying {2} rather than paying its mana cost. +SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayPlayer$ CardOwner | MayPlayAltManaCost$ 2 | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Description$ You may cast the card by paying {2} rather than paying its mana cost. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigRemove | TriggerDescription$ When you planeswalk away from CARDNAME, remove all flying counters from all creatures. SVar:TrigRemove:DB$ RemoveCounterAll | ValidCards$ Creature | CounterType$ Flying | AllCounters$ True From a28a3e9397c1bab97f6c0c9a5faa002597d601e7 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Sun, 16 Aug 2026 22:57:11 +0800 Subject: [PATCH 17/20] Major Clean Up --- forge-gui/res/cardsfolder/b/bicycle_rack.txt | 5 +++-- forge-gui/res/cardsfolder/c/circus_of_the_sun.txt | 10 ++++++---- forge-gui/res/cardsfolder/c/city_hall.txt | 14 ++++++-------- forge-gui/res/cardsfolder/e/event_horizon.txt | 7 ++++--- .../res/cardsfolder/{p => n}/p_no_way_out.txt | 12 +++++++----- forge-gui/res/cardsfolder/p/prestons_stage.txt | 2 +- forge-gui/res/cardsfolder/s/shy_town.txt | 7 ++++--- forge-gui/res/cardsfolder/s/sky_deck.txt | 2 +- forge-gui/res/cardsfolder/t/the_bean.txt | 2 +- 9 files changed, 33 insertions(+), 28 deletions(-) rename forge-gui/res/cardsfolder/{p => n}/p_no_way_out.txt (61%) diff --git a/forge-gui/res/cardsfolder/b/bicycle_rack.txt b/forge-gui/res/cardsfolder/b/bicycle_rack.txt index d2661f796b09..020cbb8c2ce0 100644 --- a/forge-gui/res/cardsfolder/b/bicycle_rack.txt +++ b/forge-gui/res/cardsfolder/b/bicycle_rack.txt @@ -1,9 +1,10 @@ Name:Bicycle Rack ManaCost:no cost Types:Plane Amsterdam -S:Mode$ Continuous | Affected$ Card | AffectedZone$ Hand | AddKeyword$ Cycling:2 | Description$ Cards in each player's hand have cycling {2}. +S:Mode$ Continuous | EffectZone$ Command | Affected$ Card | AffectedZone$ Hand | AddKeyword$ Cycling:2 | Description$ Cards in each player's hand have cycling {2}. T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigEffect | TriggerDescription$ Whenever Chaos ensues, until end of turn, creatures you control have "This creature gets +1/+1 for each card you've discarded this turn." SVar:TrigEffect:DB$ Effect | StaticAbilities$ STBuff -SVar:STBuff:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ X | AddToughness$ X | Description$ Creatures you control get +1/+1 for each card you've discarded this turn. +SVar:STBuff:Mode$ Continuous | Affected$ Creature.YouCtrl | AddStaticAbility$ STBuffGranted | Description$ Creatures you control have "This creature gets +1/+1 for each card you've discarded this turn." +SVar:STBuffGranted:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | AddToughness$ X | Description$ CARDNAME gets +1/+1 for each card you've discarded this turn. SVar:X:PlayerCountPropertyYou$CardsDiscardedThisTurn Oracle:Cards in each player's hand have cycling {2}.\nWhenever Chaos ensues, until end of turn, creatures you control have "This creature gets +1/+1 for each card you've discarded this turn." diff --git a/forge-gui/res/cardsfolder/c/circus_of_the_sun.txt b/forge-gui/res/cardsfolder/c/circus_of_the_sun.txt index c74ad7dbfae2..24c9f8b43f19 100644 --- a/forge-gui/res/cardsfolder/c/circus_of_the_sun.txt +++ b/forge-gui/res/cardsfolder/c/circus_of_the_sun.txt @@ -4,10 +4,12 @@ Types:Plane Las Vegas T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here or at the beginning of your upkeep, create two 1/1 red performer creature tokens with flying and haste. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Secondary$ True | Execute$ TrigToken | TriggerDescription$ Whenever you planeswalk here or at the beginning of your upkeep, create two 1/1 red performer creature tokens with flying and haste. SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ r_1_1_performer_flying_haste | TokenOwner$ You -T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.withFlying+YouCtrl | ValidTarget$ Player | TriggerZones$ Command | Execute$ TrigReturn | TriggerDescription$ Whenever one or more creatures you control with flying deal combat damage to a player, you may return it to your hand. If you do, draw cards equal to its power. -SVar:TrigReturn:DB$ ChangeZone | Defined$ TriggeredSources | Origin$ Battlefield | Destination$ Hand | Optional$ True | RememberChanged$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ XPower | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanupDraw -SVar:XPower:Remembered$CardPower +T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.withFlying+YouCtrl | ValidTarget$ Player | TriggerZones$ Command | Execute$ TrigChoose | TriggerDescription$ Whenever one or more creatures you control with flying deal combat damage to a player, you may return it to your hand. If you do, draw cards equal to its power. +SVar:TrigChoose:DB$ ChooseCard | DefinedCards$ TriggeredSources | Amount$ NumSources | MinAmount$ 0 | RememberChosen$ True | ChoiceTitle$ Choose creatures to return to your hand | SubAbility$ TrigReturn +SVar:NumSources:TriggerObjectsSources$Amount +SVar:TrigReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Destination$ Hand | RememberLKI$ True | ForgetOtherRemembered$ True | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | NumCards$ XPower | ConditionDefined$ RememberedLKI | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanupDraw +SVar:XPower:RememberedLKI$CardPower SVar:DBCleanupDraw:DB$ Cleanup | ClearRemembered$ True T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCounter | TriggerDescription$ Whenever Chaos ensues, put a flying counter on up to one target creature. It becomes a Performer in addition to its other types. SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | CounterType$ Flying | CounterNum$ 1 | SubAbility$ DBAnimate diff --git a/forge-gui/res/cardsfolder/c/city_hall.txt b/forge-gui/res/cardsfolder/c/city_hall.txt index 054ae4815c61..4a614b4d72d3 100644 --- a/forge-gui/res/cardsfolder/c/city_hall.txt +++ b/forge-gui/res/cardsfolder/c/city_hall.txt @@ -3,12 +3,10 @@ ManaCost:no cost Types:Plane Chicago T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigMonarch | TriggerDescription$ When you planeswalk here, you become the Monarch. SVar:TrigMonarch:DB$ BecomeMonarch | Defined$ You -T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigChoice | TriggerDescription$ Whenever Chaos ensues, each player may create two tapped Treasure tokens. Each player who does can't attack you during their next turn. -SVar:TrigChoice:DB$ GenericChoice | Defined$ Player | TempRemember$ Chooser | Choices$ Create,DontCreate | ShowChoice$ ExceptSelf | SubAbility$ DBToken | StackDescription$ None -SVar:Create:DB$ Pump | Defined$ Remembered | NoteCards$ Self | NoteCardsFor$ MadeTreasure | SpellDescription$ Create two tapped Treasure tokens. -SVar:DontCreate:DB$ Pump | Defined$ Remembered | SpellDescription$ Don't create Treasure tokens. -SVar:DBToken:DB$ Token | TokenOwner$ Player.NotedForMadeTreasure | TokenAmount$ 2 | TokenTapped$ True | TokenScript$ c_a_treasure_sac | RememberObjects$ Player.NotedForMadeTreasure | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | EffectOwner$ Remembered | RememberObjects$ You | StaticAbilities$ STCantAttack | Duration$ UntilYourNextTurn | SubAbility$ DBCleanup -SVar:STCantAttack:Mode$ CantAttack | ValidCard$ Creature.YouCtrl | Target$ Player.IsRemembered | Description$ Creatures controlled by that player can't attack you. -SVar:DBCleanup:DB$ Pump | Defined$ Player | ClearNotedCardsFor$ MadeTreasure +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigRepeatEach | TriggerDescription$ Whenever Chaos ensues, each player may create two tapped Treasure tokens. Each player who does can't attack you during their next turn. +SVar:TrigRepeatEach:DB$ RepeatEach | RepeatSubAbility$ DBToken | RepeatPlayers$ Player | ChangeZoneTable$ True | RepeatOptionalForEachPlayer$ True | RepeatOptionalMessage$ Do you want to create two tapped Treasure tokens? | SubAbility$ DBEffect +SVar:DBToken:DB$ Token | TokenScript$ c_a_treasure_sac | TokenAmount$ 2 | TokenTapped$ True | TokenOwner$ Player.IsRemembered | RememberTokens$ True +SVar:DBEffect:DB$ Effect | EffectOwner$ RememberedOwner | RememberObjects$ You | StaticAbilities$ STCantAttack | Duration$ UntilTheEndOfYourNextTurn | SubAbility$ DBCleanup +SVar:STCantAttack:Mode$ CantAttack | ValidCard$ Creature.YouCtrl | Target$ Player.IsRemembered | Description$ You can't attack the remembered player during your next turn. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:When you planeswalk here, you become the Monarch.\nWhenever Chaos ensues, each player may create two tapped Treasure tokens. Each player who does can't attack you during their next turn. diff --git a/forge-gui/res/cardsfolder/e/event_horizon.txt b/forge-gui/res/cardsfolder/e/event_horizon.txt index faae8b8b8814..1eb410da656d 100644 --- a/forge-gui/res/cardsfolder/e/event_horizon.txt +++ b/forge-gui/res/cardsfolder/e/event_horizon.txt @@ -1,12 +1,13 @@ Name:Event Horizon ManaCost:no cost Types:Plane Blind Eternities -S:Mode$ Continuous | Affected$ Land.nonBasic | AddType$ Wastes | RemoveLandTypes$ True | Description$ Nonbasic lands are Wastes. +S:Mode$ Continuous | EffectZone$ Command | Affected$ Land.nonBasic | RemoveLandTypes$ True | SetName$ Wastes | AddAbility$ WastesMana | Description$ Nonbasic lands are Wastes. +SVar:WastesMana:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. T:Mode$ TapsForMana | ValidCard$ Permanent | Activator$ You | Produced$ C | Execute$ TrigMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever you tap a permanent for {C}, add an additional {C}. -SVar:TrigMana:DB$ Mana | Produced$ C | Amount$ 1 +SVar:TrigMana:DB$ Mana | Produced$ C | Amount$ 1 | Defined$ You T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCharm | TriggerDescription$ Whenever chaos ensues, ABILITY SVar:TrigCharm:DB$ Charm | Choices$ DrawFour,DestroyPerm,Reanimate SVar:DrawFour:DB$ Draw | NumCards$ 4 | SpellDescription$ Draw four cards. SVar:DestroyPerm:DB$ Destroy | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | SpellDescription$ Destroy target permanent. -SVar:Reanimate:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Choose target creature card in your graveyard | SpellDescription$ You may return target creature card from your graveyard to the battlefield. +SVar:Reanimate:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn | Optional$ True | TgtPrompt$ Choose target creature card in your graveyard | SpellDescription$ You may return target creature card from your graveyard to the battlefield. Oracle:Nonbasic lands are Wastes.\nWhenever you tap a permanent for {C}, add an additional {C}.\nWhenever chaos ensues, choose one —\n• Draw four cards.\n• Destroy target permanent.\n• You may return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/p/p_no_way_out.txt b/forge-gui/res/cardsfolder/n/p_no_way_out.txt similarity index 61% rename from forge-gui/res/cardsfolder/p/p_no_way_out.txt rename to forge-gui/res/cardsfolder/n/p_no_way_out.txt index 9d3002c77efb..9f6dd4391140 100644 --- a/forge-gui/res/cardsfolder/p/p_no_way_out.txt +++ b/forge-gui/res/cardsfolder/n/p_no_way_out.txt @@ -1,13 +1,15 @@ Name:P-No Way Out ManaCost:no cost Types:Plane Duskmourn -K:etbCounter:DREAD:3:no Condition:CARDNAME enters with three dread counters. -R:Event$ Planeswalk | IsPresent$ Card.Self+counters_GE1_DREAD | ReplaceWith$ Chaos | Description$ You can never leave — If a player would planeswalk while CARDNAME has dread counters, chaos ensues instead. +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDread | TriggerDescription$ CARDNAME enters with three dread counters. +SVar:TrigDread:DB$ PutCounter | Defined$ Self | CounterType$ DREAD | CounterNum$ 3 +R:Event$ Planeswalk | IsPresent$ Card.Self+counters_GE1_DREAD | PresentZone$ Command | ReplaceWith$ Chaos | Description$ You can never leave — If a player would planeswalk while CARDNAME has dread counters, chaos ensues instead. SVar:Chaos:DB$ ChaosEnsues T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ TrigManifest | TriggerDescription$ Whenever you roll the planar die, manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.) SVar:TrigManifest:DB$ ManifestDread T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigRepeat | TriggerDescription$ Whenever Chaos ensues, each player may turn a face-down permanent they control face up. Remove a dread counter from CARDNAME. -SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBFlip | SubAbility$ DBRemoveCounter -SVar:DBFlip:DB$ SetState | Mode$ TurnFaceUp | ValidTgts$ Permanent.faceDown+RememberedPlayerCtrl | TargetMin$ 0 | TargetMax$ 1 +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBRemoveCounter +SVar:DBChoose:DB$ ChooseCard | Defined$ Remembered | Choices$ Permanent.faceDown+RememberedPlayerCtrl | Amount$ 1 | ChoiceTitle$ Choose a face-down permanent you control to turn face up | SubAbility$ DBFlip +SVar:DBFlip:DB$ SetState | Mode$ TurnFaceUp | Defined$ ChosenCard SVar:DBRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ DREAD | CounterNum$ 1 -Oracle:No Way Out enters with three dread counters.\nYou can never leave — If a player would planeswalk while this plane has dread counters, chaos ensues instead.\nWhenever you roll the planar die, manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.)\nWhenever Chaos ensures each player may turn a face-down permanent they control face-up. Remove a dread counter from this plane. +Oracle:No Way Out enters with three dread counters.\nYou can never leave — If a player would planeswalk while this plane has dread counters, chaos ensues instead.\nWhenever you roll the planar die, manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.)\nWhenever Chaos ensues, each player may turn a face-down permanent they control face up. Remove a dread counter from this plane. diff --git a/forge-gui/res/cardsfolder/p/prestons_stage.txt b/forge-gui/res/cardsfolder/p/prestons_stage.txt index 7ef339b077fc..4c576a87af7e 100644 --- a/forge-gui/res/cardsfolder/p/prestons_stage.txt +++ b/forge-gui/res/cardsfolder/p/prestons_stage.txt @@ -7,6 +7,6 @@ T:Mode$ TurnFaceUp | ValidCard$ Creature | TriggerZones$ Command | Execute$ Trig SVar:TrigTokenFaceUp:DB$ Token | TokenScript$ c_a_hat_sac | TokenOwner$ TriggeredCardController T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, until your next turn, creature cards in your hand have flash. SVar:RolledChaos:DB$ Effect | StaticAbilities$ GrantFlash | Duration$ UntilYourNextTurn -SVar:GrantFlash:Mode$ Continuous | Affected$ Creature.YouOwn | AffectedZone$ Hand | AddKeyword$ Flash | Description$ Creature cards in your hand have flash. +SVar:GrantFlash:Mode$ Continuous | Affected$ Creature.YouOwn | AffectedZone$ Hand,Stack | AddKeyword$ Flash | Description$ Creature cards in your hand have flash. SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 25 Oracle:Whenever a player performs a magic trick, they create a Hat token. (You perform a magic trick when you cast an instant or spell with flash, or turn a face-down creature face-up. Hat tokens are artifact tokens with "{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token.")\nWhenever Chaos ensues, until your next turn, creature cards in your hand have flash. diff --git a/forge-gui/res/cardsfolder/s/shy_town.txt b/forge-gui/res/cardsfolder/s/shy_town.txt index c02f57685cd5..bfa7277be19b 100644 --- a/forge-gui/res/cardsfolder/s/shy_town.txt +++ b/forge-gui/res/cardsfolder/s/shy_town.txt @@ -3,9 +3,10 @@ ManaCost:no cost Types:Plane Chicago T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ Whenever you planeswalk here and whenever chaos ensues, for each opponent, put a shy counter on up to one target creature they control. That creature becomes a Coward in addition to its other types. T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigRepeat | TriggerDescription$ Whenever you planeswalk here and whenever chaos ensues, for each opponent, put a shy counter on up to one target creature they control. That creature becomes a Coward in addition to its other types. -SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBCounter -SVar:DBCounter:DB$ PutCounter | ValidTgts$ Creature.RememberedPlayerCtrl | TargetMin$ 0 | TargetMax$ 1 | CounterType$ SHY | CounterNum$ 1 | SubAbility$ DBAnimate -SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Types$ Coward | Duration$ Permanent +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChoose +SVar:DBChoose:DB$ ChooseCard | Defined$ You | Choices$ Creature.RememberedPlayerCtrl | Amount$ 1 | ChoiceTitle$ Choose up to one creature that opponent controls to put a shy counter on | SubAbility$ DBCounter +SVar:DBCounter:DB$ PutCounter | Defined$ ChosenCard | CounterType$ SHY | CounterNum$ 1 | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Defined$ ChosenCard | Types$ Coward | Duration$ Permanent T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ DBWarrior | TriggerDescription$ At the beginning of your upkeep, create a 2/2 red Warrior creature token with haste and "Cowards can't block Warriors." SVar:DBWarrior:DB$ Token | TokenAmount$ 1 | TokenScript$ r_2_2_warrior_haste_coward | TokenOwner$ You Oracle:Whenever you planeswalk here and whenever chaos ensues, for each opponent, put a shy counter on up to one target creature they control. That creature becomes a Coward in addition to its other types.\nAt the beginning of your upkeep, create a 2/2 red Warrior creature token with haste and "Cowards can't block Warriors." diff --git a/forge-gui/res/cardsfolder/s/sky_deck.txt b/forge-gui/res/cardsfolder/s/sky_deck.txt index c5d036b7d4a3..c91699b79634 100644 --- a/forge-gui/res/cardsfolder/s/sky_deck.txt +++ b/forge-gui/res/cardsfolder/s/sky_deck.txt @@ -4,7 +4,7 @@ Types:Plane Chicago T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigCounter | TriggerDescription$ Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent. T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigCounter | TriggerDescription$ Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent. -SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Permanent.nonLand | TargetMin$ 0 | TargetMax$ 1 | CounterType$ GLASS | CounterNum$ 1 +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Permanent.nonLand | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target nonland permanent | CounterType$ GLASS | CounterNum$ 1 T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy all permanents with glass counters on them. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.counters_GE1_GLASS Oracle:Whenever you planeswalk here, at the beginning of your upkeep, or whenever chaos ensues, put a glass counter on up to one target nonland permanent.\nWhen you planeswalk away from here, destroy all permanents with glass counters on them. diff --git a/forge-gui/res/cardsfolder/t/the_bean.txt b/forge-gui/res/cardsfolder/t/the_bean.txt index 6c10a38bc920..95dd5452f932 100644 --- a/forge-gui/res/cardsfolder/t/the_bean.txt +++ b/forge-gui/res/cardsfolder/t/the_bean.txt @@ -4,7 +4,7 @@ Types:Plane Chicago T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ When you planeswalk here, each player chooses a creature they control and creates a token that's a copy of it, except it's a Reflection in addition to its other types. SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBCopyEach SVar:DBCopyEach:DB$ CopyPermanent | Choices$ Creature.ControlledBy Remembered | Chooser$ Remembered | Controller$ Remembered | AddTypes$ Reflection -S:Mode$ Continuous | Affected$ Creature.Reflection | AddKeyword$ Shadow | Description$ All Reflections have shadow. (They can block or be blocked only by creatures with shadow.) +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.Reflection | AddKeyword$ Shadow | Description$ All Reflections have shadow. (They can block or be blocked only by creatures with shadow.) T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigChaos | TriggerDescription$ Whenever Chaos ensues, create a token that's a copy of a creature you control, except it's a Reflection in addition to its other types. SVar:TrigChaos:DB$ CopyPermanent | Choices$ Creature.YouCtrl | AddTypes$ Reflection Oracle:When you planeswalk here, each player chooses a creature they control and creates a token that's a copy of it, except it's a Reflection in addition to its other types.\nAll Reflections have shadow. (They can block or be blocked only by creatures with shadow.)\nWhenever chaos ensues, create a token that's a copy of a creature you control, except it's a Reflection in addition to its other types. From 257524638502c4f3e4dc21579db68b5ec4423c2f Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Sun, 16 Aug 2026 22:57:49 +0800 Subject: [PATCH 18/20] Delete probability_flux.txt --- forge-gui/res/cardsfolder/p/probability_flux.txt | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 forge-gui/res/cardsfolder/p/probability_flux.txt diff --git a/forge-gui/res/cardsfolder/p/probability_flux.txt b/forge-gui/res/cardsfolder/p/probability_flux.txt deleted file mode 100644 index ff90353eeaf9..000000000000 --- a/forge-gui/res/cardsfolder/p/probability_flux.txt +++ /dev/null @@ -1,10 +0,0 @@ -Name:Probability Flux -ManaCost:no cost -Types:Phenomenon -T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ Until your next turn, if a player would roll one or more dice, instead they roll that many dice plus one and ignore one. (Then planeswalk away from this phenomenon.) -SVar:TrigEffect:DB$ Effect | ReplacementEffects$ RepRollDice | Duration$ UntilYourNextTurn | SubAbility$ PWAway -SVar:RepRollDice:Event$ RollDice | ValidPlayer$ Player | ReplaceWith$ PlusRoll | Description$ If a player would roll one or more dice, instead they roll that many dice plus one and ignore one. -SVar:PlusRoll:DB$ ReplaceEffect | VarName$ Number | VarValue$ ReplaceCount$Number/Plus.1 | SubAbility$ IgnoreOne -SVar:IgnoreOne:DB$ ReplaceEffect | VarName$ Ignore | VarValue$ ReplaceCount$Ignore/Plus.1 -SVar:PWAway:DB$ Planeswalk -Oracle:Until your next turn, if a player would roll one or more dice, instead they roll that many dice plus one and ignore one. From b7f4ec43682b91e0caa1b2e660f86c7550f9a347 Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Sun, 16 Aug 2026 23:06:30 +0800 Subject: [PATCH 19/20] Update Black Lotus Unknown Planechase.txt --- forge-gui/res/editions/Black Lotus Unknown Planechase.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt index 8a645d3da378..62ce48ff2bbc 100644 --- a/forge-gui/res/editions/Black Lotus Unknown Planechase.txt +++ b/forge-gui/res/editions/Black Lotus Unknown Planechase.txt @@ -42,7 +42,7 @@ PLA027 C Elvish Impersonation Contest @ PLA028 C High and Dry Black Market @ PLA029 C Jalira's Show @ PLA030 C Mojave Desert @ -PLA031 C P-No Way Out @ ${"flavorName": "No Way Out"} +PLA031 C P-No Way Out @ PLA032 C Omenpath Instability @ PLA033 C Preston's Stage @ PLA034 C Pursued by Something @ From b3753c4b3e327ec88babf3d3cf81f4e471081c8c Mon Sep 17 00:00:00 2001 From: BigCrunch22 <22bigcrunch@gmail.com> Date: Tue, 18 Aug 2026 13:20:52 +0800 Subject: [PATCH 20/20] Update prestons_stage.txt - Give a comment to explain why the stack is also affected by the chaos effect - Restrict the applications of Flash on the stack to cards casted from the hand only. This prevents cards like Gravecrawler or Misthollow Griffin from accidentally triggering the "perform a magic trick" trigger. --- forge-gui/res/cardsfolder/p/prestons_stage.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/p/prestons_stage.txt b/forge-gui/res/cardsfolder/p/prestons_stage.txt index 4c576a87af7e..e5593d831f3d 100644 --- a/forge-gui/res/cardsfolder/p/prestons_stage.txt +++ b/forge-gui/res/cardsfolder/p/prestons_stage.txt @@ -6,7 +6,9 @@ SVar:TrigTokenCast:DB$ Token | TokenScript$ c_a_hat_sac | TokenOwner$ TriggeredA T:Mode$ TurnFaceUp | ValidCard$ Creature | TriggerZones$ Command | Execute$ TrigTokenFaceUp | Secondary$ True | TriggerDescription$ Whenever a player performs a magic trick, they create a Hat token. (You perform a magic trick when you cast an instant or spell with flash, or turn a face-down creature face-up. Hat tokens are artifact tokens with "{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token.") SVar:TrigTokenFaceUp:DB$ Token | TokenScript$ c_a_hat_sac | TokenOwner$ TriggeredCardController T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, until your next turn, creature cards in your hand have flash. -SVar:RolledChaos:DB$ Effect | StaticAbilities$ GrantFlash | Duration$ UntilYourNextTurn -SVar:GrantFlash:Mode$ Continuous | Affected$ Creature.YouOwn | AffectedZone$ Hand,Stack | AddKeyword$ Flash | Description$ Creature cards in your hand have flash. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ GrantFlashHand,GrantFlashStack | Duration$ UntilYourNextTurn +# Flash needs to persist onto the stack too, since the SpellCast trigger checks hasKeywordFlash on the spell itself, and a card loses the hand-only grant the moment it leaves hand. GrantFlashStack keeps that grant alive on the stack, but ONLY for creatures that were actually cast from hand (wasCastFromYourHand) - this stops it from also catching creatures cast from elsewhere (e.g. Gravecrawler from graveyard, Misthollow Griffin from exile) that happen to be on the stack at the same time. +SVar:GrantFlashHand:Mode$ Continuous | Affected$ Creature.YouOwn | AffectedZone$ Hand | AddKeyword$ Flash | Description$ Creature cards in your hand have flash. +SVar:GrantFlashStack:Mode$ Continuous | Affected$ Creature.YouOwn+wasCastFromYourHand | AffectedZone$ Stack | AddKeyword$ Flash SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 25 Oracle:Whenever a player performs a magic trick, they create a Hat token. (You perform a magic trick when you cast an instant or spell with flash, or turn a face-down creature face-up. Hat tokens are artifact tokens with "{1}, {T}, Sacrifice this artifact: Create a 1/1 white Rabbit creature token.")\nWhenever Chaos ensues, until your next turn, creature cards in your hand have flash.