From 427d0c339774902f9c5814740f1fc31a61be3bff Mon Sep 17 00:00:00 2001 From: tool4ever Date: Thu, 18 Aug 2022 14:56:47 +0200 Subject: [PATCH 01/65] Card fixes (#1350) --- .../java/forge/game/ability/effects/ChangeZoneEffect.java | 4 ++-- forge-gui/res/cardsfolder/a/aetherling.txt | 4 ++-- forge-gui/res/cardsfolder/a/anurid_brushhopper.txt | 4 ++-- forge-gui/res/cardsfolder/f/fiery_encore.txt | 2 +- forge-gui/res/cardsfolder/f/fleeting_spirit.txt | 4 ++-- forge-gui/res/cardsfolder/g/ghost_council_of_orzhova.txt | 4 ++-- forge-gui/res/cardsfolder/h/hikari_twilight_guardian.txt | 4 ++-- forge-gui/res/cardsfolder/n/nezahal_primal_tide.txt | 4 ++-- forge-gui/res/cardsfolder/n/norin_the_wary.txt | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 89702bac9aa..2c873cb317d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -596,7 +596,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } if (sa.hasParam("GainControl")) { final String g = sa.getParam("GainControl"); - Player newController = g.equals("True") ? sa.getActivatingPlayer() : + Player newController = g.equals("True") ? player : AbilityUtils.getDefinedPlayers(sa.getHostCard(), g, sa).get(0); if (newController != null) { if (newController != gameCard.getController()) { @@ -764,7 +764,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { movedCard.setForetoldThisTurn(true); movedCard.setForetoldByEffect(true); // look at the exiled card - movedCard.addMayLookTemp(sa.getActivatingPlayer()); + movedCard.addMayLookTemp(player); } if (sa.hasParam("TrackDiscarded")) { diff --git a/forge-gui/res/cardsfolder/a/aetherling.txt b/forge-gui/res/cardsfolder/a/aetherling.txt index 9447efc8c81..1905f033198 100644 --- a/forge-gui/res/cardsfolder/a/aetherling.txt +++ b/forge-gui/res/cardsfolder/a/aetherling.txt @@ -3,8 +3,8 @@ ManaCost:4 U U Types:Creature Shapeshifter PT:4/5 A:AB$ ChangeZone | Cost$ U | Defined$ Self | Origin$ Battlefield | Destination$ Exile | SubAbility$ DelTrig | RememberChanged$ True | SpellDescription$ Exile CARDNAME. Return it to the battlefield under its owner's control at the beginning of the next end step. -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | TriggerDescription$ Return CARDNAME to the battlefield. -SVar:TrigReturn:DB$ ChangeZone | Defined$ Self | Origin$ Exile | Destination$ Battlefield +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | RememberObjects$ Remembered | TriggerDescription$ Return CARDNAME to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Exile | Destination$ Battlefield A:AB$ Pump | Cost$ U | Defined$ Self | KW$ HIDDEN Unblockable | SpellDescription$ CARDNAME can't be blocked this turn. A:AB$ Pump | Cost$ 1 | Defined$ Self | NumAtt$ +1 | NumDef$ -1 | SpellDescription$ CARDNAME gets +1/-1 until end of turn. A:AB$ Pump | Cost$ 1 | Defined$ Self | NumAtt$ -1 | NumDef$ +1 | SpellDescription$ CARDNAME gets -1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/a/anurid_brushhopper.txt b/forge-gui/res/cardsfolder/a/anurid_brushhopper.txt index fa43a2d7a5f..6d01a6a9909 100644 --- a/forge-gui/res/cardsfolder/a/anurid_brushhopper.txt +++ b/forge-gui/res/cardsfolder/a/anurid_brushhopper.txt @@ -3,7 +3,7 @@ ManaCost:1 G W Types:Creature Frog Beast PT:3/4 A:AB$ ChangeZone | Cost$ Discard<2/Card> | Defined$ Self | Origin$ Battlefield | Destination$ Exile | SubAbility$ DelTrig | RememberChanged$ True | SpellDescription$ Exile CARDNAME. Return it to the battlefield under its owner's control at the beginning of the next end step. -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | TriggerDescription$ Return CARDNAME to the battlefield. -SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ Self +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | RememberObjects$ Remembered | TriggerDescription$ Return CARDNAME to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI AI:RemoveDeck:All Oracle:Discard two cards: Exile Anurid Brushhopper. Return it to the battlefield under its owner's control at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/f/fiery_encore.txt b/forge-gui/res/cardsfolder/f/fiery_encore.txt index 7a45de67e5e..b5af7af9b14 100644 --- a/forge-gui/res/cardsfolder/f/fiery_encore.txt +++ b/forge-gui/res/cardsfolder/f/fiery_encore.txt @@ -5,7 +5,7 @@ A:SP$ Discard | Cost$ 4 R | Mode$ TgtChoose | SubAbility$ DBDraw | RememberDisca SVar:DBDraw:DB$ Draw | SubAbility$ DBImmediateTrigger SVar:DBImmediateTrigger:DB$ ImmediateTrigger | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | Execute$ TrigDealDamage | RememberObjects$ RememberedCard | SubAbility$ DBCleanup | TriggerDescription$ When you discard a nonland card this way, CARDNAME deals damage equal to that card's mana value to target creature or planeswalker. SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X -SVar:X:Remembered$CardManaCost +SVar:X:TriggerRemembered$CardManaCost SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True K:Storm Oracle:Discard a card, then draw a card. When you discard a nonland card this way, Fiery Encore deals damage equal to that card's mana value to target creature or planeswalker.\nStorm (When you cast this spell, copy it for each spell cast before it this turn.) diff --git a/forge-gui/res/cardsfolder/f/fleeting_spirit.txt b/forge-gui/res/cardsfolder/f/fleeting_spirit.txt index ada7d25c93a..6914881b4ae 100644 --- a/forge-gui/res/cardsfolder/f/fleeting_spirit.txt +++ b/forge-gui/res/cardsfolder/f/fleeting_spirit.txt @@ -4,8 +4,8 @@ Types:Creature Spirit PT:3/1 A:AB$ Pump | Cost$ W ExileFromGrave<3/Card> | Defined$ Self | KW$ First Strike | SpellDescription$ CARDNAME gains first strike until end of turn. A:AB$ ChangeZone | Cost$ Discard<1/Card> | Defined$ Self | Origin$ Battlefield | Destination$ Exile | SubAbility$ DelTrig | RememberChanged$ True | SpellDescription$ Exile CARDNAME. Return it to the battlefield under its owner's control at the beginning of the next end step. -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | TriggerDescription$ Return CARDNAME to the battlefield under its owner's control at the beginning of the next end step. -SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ Self +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | RememberObjects$ Remembered | TriggerDescription$ Return CARDNAME to the battlefield under its owner's control at the beginning of the next end step. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI AI:RemoveDeck:All DeckHas:Ability$Discard|Graveyard Oracle:{W}, Exile three cards from your graveyard: Fleeting Spirit gains first strike until end of turn.\nDiscard a card: Exile Fleeting Spirit. Return it to the battlefield under its owner's control at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/g/ghost_council_of_orzhova.txt b/forge-gui/res/cardsfolder/g/ghost_council_of_orzhova.txt index ca9b83e0d60..588978eb43b 100644 --- a/forge-gui/res/cardsfolder/g/ghost_council_of_orzhova.txt +++ b/forge-gui/res/cardsfolder/g/ghost_council_of_orzhova.txt @@ -6,6 +6,6 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigDrain:DB$ LoseLife | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | LifeAmount$ 1 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 A:AB$ ChangeZone | Cost$ 1 Sac<1/Creature> | Defined$ Self | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DelTrig | SpellDescription$ Exile CARDNAME. Return it to the battlefield under its owner's control at the beginning of the next end step. -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | TriggerDescription$ Return CARDNAME to the battlefield. -SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ Self +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | RememberObjects$ Remembered | TriggerDescription$ Return CARDNAME to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI Oracle:When Ghost Council of Orzhova enters the battlefield, target opponent loses 1 life and you gain 1 life.\n{1}, Sacrifice a creature: Exile Ghost Council of Orzhova. Return it to the battlefield under its owner's control at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/h/hikari_twilight_guardian.txt b/forge-gui/res/cardsfolder/h/hikari_twilight_guardian.txt index a8ceca2fe7e..e6652b6dfcf 100644 --- a/forge-gui/res/cardsfolder/h/hikari_twilight_guardian.txt +++ b/forge-gui/res/cardsfolder/h/hikari_twilight_guardian.txt @@ -5,8 +5,8 @@ PT:4/4 K:Flying T:Mode$ SpellCast | ValidCard$ Spirit,Arcane | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Whenever you cast a Spirit or Arcane spell, you may exile CARDNAME. If you do, return it to the battlefield under its owner's control at the beginning of the next end step. SVar:TrigExile:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | AILogic$ IfNotBuffed | RememberChanged$ True | SubAbility$ DelTrig -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | TriggerDescription$ Return CARDNAME to the battlefield. -SVar:TrigReturn:DB$ ChangeZone | Defined$ Self | Origin$ Exile | Destination$ Battlefield +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | RememberObjects$ Remembered | TriggerDescription$ Return CARDNAME to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Exile | Destination$ Battlefield AI:RemoveDeck:Random DeckHints:Type$Spirit|Arcane Oracle:Flying\nWhenever you cast a Spirit or Arcane spell, you may exile Hikari, Twilight Guardian. If you do, return it to the battlefield under its owner's control at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/n/nezahal_primal_tide.txt b/forge-gui/res/cardsfolder/n/nezahal_primal_tide.txt index 65412695e6c..e8b63d16215 100644 --- a/forge-gui/res/cardsfolder/n/nezahal_primal_tide.txt +++ b/forge-gui/res/cardsfolder/n/nezahal_primal_tide.txt @@ -7,6 +7,6 @@ S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ Unlimited | Description$ Yo T:Mode$ SpellCast | TriggerZones$ Battlefield | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ Opponent | Execute$ TrigDraw | TriggerDescription$ Whenever an opponent casts a noncreature spell, draw a card. SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 A:AB$ ChangeZone | Cost$ Discard<3/Card> | Defined$ Self | Origin$ Battlefield | Destination$ Exile | SubAbility$ DelTrig | RememberChanged$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME. Return it to the battlefield tapped under its owner's control at the beginning of the next end step. -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | StackDescription$ None | ConditionDefined$ Remembered | ConditionPresent$ Card | TriggerDescription$ Return CARDNAME to the battlefield tapped under its owner's control. -SVar:TrigReturn:DB$ ChangeZone | Defined$ CorrectedSelf | Origin$ Exile | Destination$ Battlefield | Tapped$ True +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | StackDescription$ None | ConditionDefined$ Remembered | ConditionPresent$ Card | RememberObjects$ Remembered | TriggerDescription$ Return CARDNAME to the battlefield tapped under its owner's control. +SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Exile | Destination$ Battlefield | Tapped$ True Oracle:This spell can't be countered.\nYou have no maximum hand size.\nWhenever an opponent casts a noncreature spell, draw a card.\nDiscard three cards: Exile Nezahal, Primal Tide. Return it to the battlefield tapped under its owner's control at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/n/norin_the_wary.txt b/forge-gui/res/cardsfolder/n/norin_the_wary.txt index c96ef7b02c0..899b8bb49c6 100644 --- a/forge-gui/res/cardsfolder/n/norin_the_wary.txt +++ b/forge-gui/res/cardsfolder/n/norin_the_wary.txt @@ -5,8 +5,8 @@ PT:2/1 T:Mode$ SpellCast | ValidCard$ Card | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ When a player casts a spell or a creature attacks, exile CARDNAME. Return it to the battlefield under its owner's control at the beginning of the next end step. T:Mode$ Attacks | ValidCard$ Creature | Execute$ TrigExile | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ When a player casts a spell or a creature attacks, exile CARDNAME. Return it to the battlefield under its owner's control at the beginning of the next end step. SVar:TrigExile:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DelTrig -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | TriggerDescription$ Return CARDNAME to the battlefield under its owner's control at the beginning of the next end step. -SVar:TrigReturn:DB$ ChangeZone | Defined$ Self | Origin$ Exile,Command | Destination$ Battlefield +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | ConditionDefined$ Remembered | ConditionPresent$ Card | RememberObjects$ Remembered | TriggerDescription$ Return CARDNAME to the battlefield under its owner's control at the beginning of the next end step. +SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Exile,Command | Destination$ Battlefield SVar:MustAttack:True AI:RemoveDeck:Random Oracle:When a player casts a spell or a creature attacks, exile Norin the Wary. Return it to the battlefield under its owner's control at the beginning of the next end step. From 780bf9f5d5f9cf33c2f164c9ecb382de2bf16a1d Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Thu, 18 Aug 2022 18:55:16 +0100 Subject: [PATCH 02/65] WIP: DMU, editions updates & new editions --- .../res/editions/30th Anniversary Promos.txt | 3 ++ .../res/editions/Dominaria Remastered.txt | 16 +++++++++ forge-gui/res/editions/Dominaria United.txt | 33 +++++++++++++++++++ forge-gui/res/editions/Warhammer 40,000.txt | 4 +++ 4 files changed, 56 insertions(+) create mode 100644 forge-gui/res/editions/Dominaria Remastered.txt diff --git a/forge-gui/res/editions/30th Anniversary Promos.txt b/forge-gui/res/editions/30th Anniversary Promos.txt index a4a7f084061..e777646b022 100644 --- a/forge-gui/res/editions/30th Anniversary Promos.txt +++ b/forge-gui/res/editions/30th Anniversary Promos.txt @@ -11,3 +11,6 @@ ScryfallCode=P30A F1★ R Richard Garfield, Ph.D. @Dave Dorman 2 R Ball Lightning @Trevor Claxton 3 R Fyndhorn Elves @Igor Kieryluk +4 R Wall of Roots @Matt Stewart +5 R Wood Elves @Rebecca Guay +6 R Windfall @Pete Venters diff --git a/forge-gui/res/editions/Dominaria Remastered.txt b/forge-gui/res/editions/Dominaria Remastered.txt new file mode 100644 index 00000000000..0e7825a4449 --- /dev/null +++ b/forge-gui/res/editions/Dominaria Remastered.txt @@ -0,0 +1,16 @@ +[metadata] +Code=DMR +Date=2022-09-09 +Name=Dominaria Remastered +Code2=DMR +MciCode=dmr +Type=Reprint +ScryfallCode=DMR + +[cards] +50 M Force of Will @Donato Giancola +149 R Arboria @Uriah Voth +284 M Force of Will @Donato Giancola +335 R Arboria @Uriah Voth +418 M Force of Will @Richard Kane Ferguson +438 R Arboria @Dave Kendall diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index e2f1c8008c3..ab2922b32c9 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -8,22 +8,55 @@ Type=Expansion ScryfallCode=DMU [cards] +3 R Archangel of Wrath @Miguel Mercado +19 R Guardian of New Benalia @Ernanda Souza +54 C Impede Momentum @Igor Kieryluk +59 R The Phasing of Zhalfir @LA Draws +84 R Braids, Arisen Nightmare @Heonhwa Choe 93 R Evolved Sleeper @Jason A. Engle +97 M Liliana of the Veil @Martina Fackova +103 R The Raven Man @Chris Rahn 133 M Jaya, Fiery Negotiator @Marta Nael 143 M Shivan Devastator @Brent Hollowell +146 R Squee, Dubious Monarch @Zoltan Boros 147 R Temporal Firestorm @Nestor Ossandon Leal 170 R Llanowar Loamspeaker @Zara Alfonso +174 U Nishoba Brawler @ +184 U Territorial Maro @Simon Dominic +189 M The World Spell @Adam Paquette +192 M Ajani, Sleeper Agent @Matt Stewart +243 R Adarkar Wastes @Piotr Dura +256 R Sulfurous Springs @Bruce Brenneise 277 L Plains @Magali Villeneuve 278 L Island @Magali Villeneuve 279 L Swamp @Magali Villeneuve 280 L Mountain @Magali Villeneuve 281 L Forest @Magali Villeneuve +288 R Braids, Arisen Nightmare @Dibujante Nocturno +289 R The Raven Man @David Curtis +290 M Sheoldred, the Apocalypse @Chris Rahn +291 R Squee, Dubious Monarch @ +330 R The Raven Man @David Curtis +331 M Sheoldred, the Apocalypse @Joe Esposito +332 R Squee, Dubious Monarch @ +369 M Sheoldred, the Apocalypse @Chris Rahn +370 M Ajani, Sleeper Agent @Victor Adame Minguez +371 M Ajani, Sleeper Agent @Victor Adame Minguez +373 M Liliana of the Veil @Brom +375 M Ajani, Sleeper Agent @Adam Rex +376 M Ajani, Sleeper Agent @Thomas M. Baxa +377 R Adarkar Wastes @Rob Alexander 374 M Jaya, Fiery Negotiator @Scott M. Fischer +381 R Sulfurous Springs @Mark Tedin +384 R Archangel of Wrath @Miguel Mercado +386 R Guardian of New Benalia @Ernanda Souza 402 R Evolved Sleeper @Jason A. Engle 410 M Shivan Devastator @Brent Hollowell 411 R Temporal Firestorm @Nestor Ossandon Leal 416 R Llanowar Loamspeaker @Zara Alfonso 428 R Llanowar Loamspeaker @Volkan Baǵa +429 P Herd Migration @Antonio José Manzanedo +434 U Nishoba Brawler @ [tokens] r_1_1_monk_prowess diff --git a/forge-gui/res/editions/Warhammer 40,000.txt b/forge-gui/res/editions/Warhammer 40,000.txt index a2d668fa8ac..5d235c05c61 100644 --- a/forge-gui/res/editions/Warhammer 40,000.txt +++ b/forge-gui/res/editions/Warhammer 40,000.txt @@ -11,3 +11,7 @@ ScryfallCode=40K 108 C Blood for the Blood God! @Artur Nakhodkin 171 M Abaddon the Despoiler @Johan Grenier 181 R Fabricate @Johan Grenier +249 U Sol Ring @ +250 U Sol Ring @Kekai Kotaki +251 U Sol Ring @ +252 U Sol Ring @ From 48589fd06b89d808a1d99734f59d18d11c03f724 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Thu, 18 Aug 2022 19:27:34 +0100 Subject: [PATCH 03/65] more cards --- .../editions/Dominaria United Commander.txt | 10 +++++++ forge-gui/res/editions/Dominaria United.txt | 28 ++++++++++++++++--- forge-gui/res/editions/Warhammer 40,000.txt | 6 ++-- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/forge-gui/res/editions/Dominaria United Commander.txt b/forge-gui/res/editions/Dominaria United Commander.txt index 25a684733e9..4ee5f1e20c8 100644 --- a/forge-gui/res/editions/Dominaria United Commander.txt +++ b/forge-gui/res/editions/Dominaria United Commander.txt @@ -6,9 +6,19 @@ Type=Commander ScryfallCode=DMC [cards] +1 M Dihada, Binder of Wills @Nestor Ossandon Leal +2 M Jared Carthalion @Manuel Castañón +32 R Hazezon, Shaper of Sand @Bryan Sola 33 U Jasmine Boreal of the Seven @Bastien L. Deharme +34 M Jedit Ojanen, Mercenary @Ilse Gort 38 U Ramirez DePietro, Pillager @Anna Steinbauer +39 R Ramses, Assassin Lord @Manuel Castañón 46 U Tor Wauki the Younger @Karl Kopinski +54 R Hazezon, Shaper of Sand @Bryan Sola 55 U Jasmine Boreal of the Seven @Bastien L. Deharme +56 M Jedit Ojanen, Mercenary @Ilse Gort 60 U Ramirez DePietro, Pillager @Anna Steinbauer +61 R Ramses, Assassin Lord @Manuel Castañón +64 R Stangg, Echo Warrior @Randy Vargas +65 M Sivitri, Dragon Master @Livia Prima 68 U Tor Wauki the Younger @Karl Kopinski diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index ab2922b32c9..69b34d46d64 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -9,24 +9,39 @@ ScryfallCode=DMU [cards] 3 R Archangel of Wrath @Miguel Mercado +8 C Benalish Sleeper @Josu Hernaiz +10 C Charismatic Vanguard @David Palumbo 19 R Guardian of New Benalia @Ernanda Souza +33 U Shalai's Acolyte @Zara Alfonso +46 R Defiler of Dreams @Ryan Pancoast 54 C Impede Momentum @Igor Kieryluk 59 R The Phasing of Zhalfir @LA Draws 84 R Braids, Arisen Nightmare @Heonhwa Choe 93 R Evolved Sleeper @Jason A. Engle 97 M Liliana of the Veil @Martina Fackova 103 R The Raven Man @Chris Rahn +107 M Sheoldred, the Apocalypse @Chris Rahn 133 M Jaya, Fiery Negotiator @Marta Nael +141 R Radha's Firebrand @Angelo Bortolini 143 M Shivan Devastator @Brent Hollowell 146 R Squee, Dubious Monarch @Zoltan Boros 147 R Temporal Firestorm @Nestor Ossandon Leal 170 R Llanowar Loamspeaker @Zara Alfonso -174 U Nishoba Brawler @ +174 U Nishoba Brawler @Valera Lutfullina 184 U Territorial Maro @Simon Dominic 189 M The World Spell @Adam Paquette 192 M Ajani, Sleeper Agent @Matt Stewart +202 R Jhoira, Ageless Innovator @Justyna Gil +212 U Raff, Weatherlight Stalwart @Eelis Kyttanen +219 M Sol'Kanar the Tainted @Filip Burburan +220 M Soul of Windgrace @Liiga Smilshkalne +228 M Zur, Eternal Schemer @Jesper Ejsing 243 R Adarkar Wastes @Piotr Dura +244 R Caves of Koilos @Julian Kok Joon Wen +250 R Karplusan Forest @Sam Burley +255 R Shivan Reef @Andrew Mar 256 R Sulfurous Springs @Bruce Brenneise +261 R Yavimaya Coast @Jesper Ejsing 277 L Plains @Magali Villeneuve 278 L Island @Magali Villeneuve 279 L Swamp @Magali Villeneuve @@ -36,6 +51,7 @@ ScryfallCode=DMU 289 R The Raven Man @David Curtis 290 M Sheoldred, the Apocalypse @Chris Rahn 291 R Squee, Dubious Monarch @ +311 U Raff, Weatherlight Stalwart @Ivan Shavrin 330 R The Raven Man @David Curtis 331 M Sheoldred, the Apocalypse @Joe Esposito 332 R Squee, Dubious Monarch @ @@ -43,11 +59,15 @@ ScryfallCode=DMU 370 M Ajani, Sleeper Agent @Victor Adame Minguez 371 M Ajani, Sleeper Agent @Victor Adame Minguez 373 M Liliana of the Veil @Brom +374 M Jaya, Fiery Negotiator @Scott M. Fischer 375 M Ajani, Sleeper Agent @Adam Rex 376 M Ajani, Sleeper Agent @Thomas M. Baxa 377 R Adarkar Wastes @Rob Alexander -374 M Jaya, Fiery Negotiator @Scott M. Fischer +378 R Caves of Koilos @Lars Grant-West +379 R Karplusan Forest @Randy Gallegos +380 R Shivan Reef @Donato Giancola 381 R Sulfurous Springs @Mark Tedin +382 R Yavimaya Coast @Mark Poole 384 R Archangel of Wrath @Miguel Mercado 386 R Guardian of New Benalia @Ernanda Souza 402 R Evolved Sleeper @Jason A. Engle @@ -55,8 +75,8 @@ ScryfallCode=DMU 411 R Temporal Firestorm @Nestor Ossandon Leal 416 R Llanowar Loamspeaker @Zara Alfonso 428 R Llanowar Loamspeaker @Volkan Baǵa -429 P Herd Migration @Antonio José Manzanedo -434 U Nishoba Brawler @ +429 R Herd Migration @Antonio José Manzanedo +434 U Nishoba Brawler @Valera Lutfullina [tokens] r_1_1_monk_prowess diff --git a/forge-gui/res/editions/Warhammer 40,000.txt b/forge-gui/res/editions/Warhammer 40,000.txt index 5d235c05c61..9031a4c4f8f 100644 --- a/forge-gui/res/editions/Warhammer 40,000.txt +++ b/forge-gui/res/editions/Warhammer 40,000.txt @@ -11,7 +11,7 @@ ScryfallCode=40K 108 C Blood for the Blood God! @Artur Nakhodkin 171 M Abaddon the Despoiler @Johan Grenier 181 R Fabricate @Johan Grenier -249 U Sol Ring @ +249 U Sol Ring @Teodora Dumitriu 250 U Sol Ring @Kekai Kotaki -251 U Sol Ring @ -252 U Sol Ring @ +251 U Sol Ring @Oleg Shekhovtsov +252 U Sol Ring @Lucas Terryn From 12975c512b197227084b3e7826b50d9795c49529 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Thu, 18 Aug 2022 19:28:33 +0100 Subject: [PATCH 04/65] date --- forge-gui/res/editions/Dominaria Remastered.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/editions/Dominaria Remastered.txt b/forge-gui/res/editions/Dominaria Remastered.txt index 0e7825a4449..195166d6392 100644 --- a/forge-gui/res/editions/Dominaria Remastered.txt +++ b/forge-gui/res/editions/Dominaria Remastered.txt @@ -1,6 +1,6 @@ [metadata] Code=DMR -Date=2022-09-09 +Date=2023-01-13 Name=Dominaria Remastered Code2=DMR MciCode=dmr From 34e7bba2c105cc048c32f1954ffecbf38b46153e Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Thu, 18 Aug 2022 19:46:06 +0100 Subject: [PATCH 05/65] more cards --- forge-gui/res/editions/Dominaria United Commander.txt | 5 +++++ forge-gui/res/editions/Dominaria United.txt | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/editions/Dominaria United Commander.txt b/forge-gui/res/editions/Dominaria United Commander.txt index 4ee5f1e20c8..db6c87ae4ba 100644 --- a/forge-gui/res/editions/Dominaria United Commander.txt +++ b/forge-gui/res/editions/Dominaria United Commander.txt @@ -13,6 +13,7 @@ ScryfallCode=DMC 34 M Jedit Ojanen, Mercenary @Ilse Gort 38 U Ramirez DePietro, Pillager @Anna Steinbauer 39 R Ramses, Assassin Lord @Manuel Castañón +41 R Rohgahh, Kher Keep Overlord @Chris Seaman 46 U Tor Wauki the Younger @Karl Kopinski 54 R Hazezon, Shaper of Sand @Bryan Sola 55 U Jasmine Boreal of the Seven @Bastien L. Deharme @@ -22,3 +23,7 @@ ScryfallCode=DMC 64 R Stangg, Echo Warrior @Randy Vargas 65 M Sivitri, Dragon Master @Livia Prima 68 U Tor Wauki the Younger @Karl Kopinski + +[tokens] +rgw_1_1_sand_warrior +stangg_twin diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index 69b34d46d64..9d03c14c426 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -50,8 +50,12 @@ ScryfallCode=DMU 288 R Braids, Arisen Nightmare @Dibujante Nocturno 289 R The Raven Man @David Curtis 290 M Sheoldred, the Apocalypse @Chris Rahn -291 R Squee, Dubious Monarch @ +291 R Squee, Dubious Monarch @Daniel Lieske +301 R Jhoira, Ageless Innovator @Lisa Heidhoff 311 U Raff, Weatherlight Stalwart @Ivan Shavrin +318 M Sol'Kanar the Tainted @Lisa Heidhoff +319 M Soul of Windgrace @Ivan Shavrin +327 M Zur, Eternal Schemer @Dan Mumford 330 R The Raven Man @David Curtis 331 M Sheoldred, the Apocalypse @Joe Esposito 332 R Squee, Dubious Monarch @ @@ -70,6 +74,7 @@ ScryfallCode=DMU 382 R Yavimaya Coast @Mark Poole 384 R Archangel of Wrath @Miguel Mercado 386 R Guardian of New Benalia @Ernanda Souza +396 M Sphinx of Clear Skies @Valera Lutfullina 402 R Evolved Sleeper @Jason A. Engle 410 M Shivan Devastator @Brent Hollowell 411 R Temporal Firestorm @Nestor Ossandon Leal From 6b937c358f27063255ac5f4905451eb914d850e6 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Thu, 18 Aug 2022 19:51:05 +0100 Subject: [PATCH 06/65] couple more cards --- forge-gui/res/editions/Dominaria United Commander.txt | 1 + forge-gui/res/editions/Dominaria United.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/forge-gui/res/editions/Dominaria United Commander.txt b/forge-gui/res/editions/Dominaria United Commander.txt index db6c87ae4ba..a27c1b77e7c 100644 --- a/forge-gui/res/editions/Dominaria United Commander.txt +++ b/forge-gui/res/editions/Dominaria United Commander.txt @@ -8,6 +8,7 @@ ScryfallCode=DMC [cards] 1 M Dihada, Binder of Wills @Nestor Ossandon Leal 2 M Jared Carthalion @Manuel Castañón +31 U General Marhault Elsdragon @ 32 R Hazezon, Shaper of Sand @Bryan Sola 33 U Jasmine Boreal of the Seven @Bastien L. Deharme 34 M Jedit Ojanen, Mercenary @Ilse Gort diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index 9d03c14c426..e53ce37bb09 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -32,6 +32,7 @@ ScryfallCode=DMU 189 M The World Spell @Adam Paquette 192 M Ajani, Sleeper Agent @Matt Stewart 202 R Jhoira, Ageless Innovator @Justyna Gil +209 R Nemata, Primeval Ward @Andrew Mar 212 U Raff, Weatherlight Stalwart @Eelis Kyttanen 219 M Sol'Kanar the Tainted @Filip Burburan 220 M Soul of Windgrace @Liiga Smilshkalne From 7dcae6e98cfbf61266c1d6bdb45ace1326d5f2fc Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Thu, 18 Aug 2022 20:05:35 +0100 Subject: [PATCH 07/65] tokens --- forge-gui/res/editions/Dominaria United.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index e53ce37bb09..8f42556570a 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -85,4 +85,5 @@ ScryfallCode=DMU 434 U Nishoba Brawler @Valera Lutfullina [tokens] +b_1_1_bird_flying_noblock r_1_1_monk_prowess From f9f1ef2268d632774cdca12a7d19e4bf78a3499b Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Thu, 18 Aug 2022 14:49:05 -0500 Subject: [PATCH 08/65] DMU: 6 new cards, 1 token DMU: Add scripts for six new DMU legends, plus one token script - Ajani, Sleeper Agent - Jhoira, Ageless Innovator - Sol'Kanar the Tainted - Squee, Dubious Monarch - The Raven Man - Zur, Eternal Schemer - 1/1 black Bird token, can't block --- .../upcoming/ajani_sleeper_agent.txt | 19 +++++++++++++++++++ .../upcoming/jhoira_ageless_innovator.txt | 9 +++++++++ .../upcoming/solkanar_the_tainted.txt | 16 ++++++++++++++++ .../upcoming/squee_dubious_monarch.txt | 10 ++++++++++ .../cardsfolder/upcoming/the_raven_man.txt | 11 +++++++++++ .../upcoming/zur_eternal_schemer.txt | 10 ++++++++++ .../b_1_1_bird_flying_noblock.txt | 8 ++++++++ 7 files changed, 83 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_raven_man.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt create mode 100644 forge-gui/res/tokenscripts/b_1_1_bird_flying_noblock.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt new file mode 100644 index 00000000000..bdd06f4aa94 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt @@ -0,0 +1,19 @@ +Name:Ajani, Sleeper Agent +ManaCost:1 G PGW W +Types:Legendary Planeswalker Ajani +Loyalty:4 +K:Compleated + +A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature,Planeswalker | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition2$ -1 | RememberChanged$ True | SubAbility$ DBDig | SpellDescription$ Reveal the top card of your library. If it's a creature or planeswalker card, put it into your hand. Otherwise, you may put it on the bottom of your library. +SVar:DBDig:DB$ Dig | DigNum$ 1 | DestinationZone$ Library | Optional$ True | LibraryPosition$ -1 | LibraryPosition2$ 0 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup +SVar:X:Remembered$Amount +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True + +A:AB$ PutCounter | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select up to three target creatures you control | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SubAbility$ DBPump | SpellDescription$ Distribute three +1/+1 counters among up to three target creatures. +SVar:DBPump:DB$ Pump | KW$ Vigilance | Defined$ Targeted | SpellDescription$ They gain vigilance until end of turn. +A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Ajani, Sleeper Agent | Image$ emblem_ajani_sleeper_agent | Triggers$ TrigSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters." +SVar:TrigSpellCast:Mode$ SpellCast | ValidCard$ Creature,Planeswalker | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters. +SVar:EffSpellCast:DB$ Poison | ValidTgts$ Opponent | TgtPrompt$ Select target opponent to get two poison counters | Num$ 2 +SVar:BuffedBy:Creature,Planeswalker +DeckHints:Type$Creature|Planeswalker +Oracle:Compleated ({PGW} can be paid with {G}, {W}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Reveal the top card of your library. If it's a creature or planeswalker card, put it into your hand. Otherwise, you may put it on the bottom of your library.\n[-3]: Distribute three +1/+1 counters among up to three target creatures. They gain vigilance until end of turn.\n[-6]: You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters." diff --git a/forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt b/forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt new file mode 100644 index 00000000000..f4d50cc2be4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt @@ -0,0 +1,9 @@ +Name:Jhoira, Ageless Innovator +ManaCost:U R +Types:Legendary Creature Human Artificer +PT:2/3 +A:AB$ PutCounter | Cost$ T | CounterType$ INGENUITY | CounterNum$ 2 | SubAbility$ DBChangeZone | StackDescription$ {p:You} puts two ingenuity counters on CARDNAME, then {p:You} may put an artifact card with mana value X or less from hand onto the battlefield, where X is the number of ingenuity counters on NICKNAME. | SpellDescription$ Put two ingenuity counters on CARDNAME, then you may put an artifact card with mana value X or less from your hand onto the battlefield, where X is the number of ingenuity counters on NICKNAME. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Artifact.cmcLEX+YouOwn | Optional$ You | StackDescription$ None +SVar:X:Count$CardCounters.INGENUITY +DeckNeeds:Type$Artifact +Oracle:{T}: Put two ingenuity counters on Jhoira, Ageless Innovator, then you may put an artifact card with mana value X or less from your hand onto the battlefield, where X is the number of ingenuity counters on Jhoira. diff --git a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt new file mode 100644 index 00000000000..7ad183cd28e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt @@ -0,0 +1,16 @@ +Name:Sol'Kanar the Tainted +ManaCost:2 U B R +Types:Legendary Creature Elemental Demon +PT:5/5 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your end step, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DrawPact,DrainPact,DamagePact,BetrayPact | ChoiceRestriction$ ThisGame | CharmNum$ 1 +SVar:DrawPact:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. +SVar:DrainPact:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2 | SubAbility$ DBGainLife | SpellDescription$ Each opponent loses 2 life and you gain 2 life. +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 +SVar:DamagePact:DB$ DealDamage | NumDmg$ 3 | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.Other,Planeswalker.Other | TgtPrompt$ Select up to one other target creature or planeswalker | SpellDescription$ CARDNAME deals 3 damage to up to one other target creature or planeswalker. +SVar:BetrayPact:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBChooseOpp | RememberChanged$ True | SpellDescription$ Exile CARDNAME, then return it to the battlefield under an opponent's control. +SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent to give control to: | SubAbility$ MoveToPlay +SVar:MoveToPlay:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ Remembered | GainControl$ ChosenPlayer | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AI:RemoveDeck:All +Oracle:At the beginning of your end step, choose one that hasn't been chosen —\n• Draw a card.\n• Each opponent loses 2 life and you gain 2 life.\n• Sol'Kanar the Tainted deals 3 damage to up to one other target creature or planeswalker.\n• Exile Sol'Kanar the Tainted, then return it to the battlefield under an opponent's control. diff --git a/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt b/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt new file mode 100644 index 00000000000..559605931ee --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt @@ -0,0 +1,10 @@ +Name:Squee, Dubious Monarch +ManaCost:2 R +Types:Legendary Creature Goblin Noble +PT:2/2 +K:Haste +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks, create a 1/1 red Golbin creature token that's tapped and attacking. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenTapped$ True | TokenAttacking$ True +SVar:AltCost:Cost$ 3 R ExileFromGrave<4/Card.Other/other cards> | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its other costs. +DeckHas:Ability$Token|Graveyard & Type$Goblin +Oracle:Haste\nWhenever Squee, Dubious Monarch attacks, create a 1/1 red Golbin creature token that's tapped and attacking.\nYou may cast Squee, Dubious Monarch from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its other costs. diff --git a/forge-gui/res/cardsfolder/upcoming/the_raven_man.txt b/forge-gui/res/cardsfolder/upcoming/the_raven_man.txt new file mode 100644 index 00000000000..1ab07d03729 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_raven_man.txt @@ -0,0 +1,11 @@ +Name:The Raven Man +ManaCost:1 B +Types:Legendary Creature Human Wizard +PT:2/1 +T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ X | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of each end step, if a player discarded a card this turn, create a 1/1 black Bird creature token with flying and "This creature can't block." +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_bird_flying_noblock +A:AB$ Discard | Cost$ 3 B T | Defined$ Player.Opponent | Mode$ TgtChoose | SorcerySpeed$ True | SpellDescription$ Each opponent discards a card. +SVar:X:PlayerCountPlayers$CardsDiscardedThisTurn +DeckHints:Ability$Discard +DeckHas:Ability$Token & Type$Bird +Oracle:At the beginning of each end step, if a player discarded a card this turn, create a 1/1 black Bird creature token with flying and "This creature can't block."\n{3}{B}, {T}: Each opponent discards a card. Activate only as a sorcery. diff --git a/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt new file mode 100644 index 00000000000..c7fd3ee153d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt @@ -0,0 +1,10 @@ +Name:Zur, Eternal Schemer +ManaCost:W U B +Types:Legendary Creature Human Wizard +PT:1/4 +K:Flying +S:Mode$ Continuous | Affected$ Creature.Enchantment+YouCtrl | AddKeyword$ Deathtouch & Lifelink & Hexproof | Description$ Enchantment creatures you control have deathtouch, lifelink, and hexproof. +A:AB$ Animate | Cost$ 1 W | ValidTgts$ Enchantment.nonAura+YouCtrl | TgtPrompt$ Select target non-Aura enchantment you control | Power$ X | Toughness$ X | Types$ Creature | Duration$ Permanent | SpellDescription$ Target non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. +SVar:X:Targeted$CardManaCost +DeckNeeds:Type$Enchantment +Oracle:Flying\nEnchantment creatures you control have deathtouch, lifelink, and hexproof.\nTarget non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. diff --git a/forge-gui/res/tokenscripts/b_1_1_bird_flying_noblock.txt b/forge-gui/res/tokenscripts/b_1_1_bird_flying_noblock.txt new file mode 100644 index 00000000000..d58af864fe8 --- /dev/null +++ b/forge-gui/res/tokenscripts/b_1_1_bird_flying_noblock.txt @@ -0,0 +1,8 @@ +Name:Bird Token +ManaCost:no cost +Types:Creature Bird +Colors:black +PT:1/1 +K:Flying +K:CARDNAME can't block. +Oracle:Flying\nThis creature can't block. From b794e045de963cc028af396d9e36bafd7fec3f56 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Thu, 18 Aug 2022 14:51:46 -0500 Subject: [PATCH 09/65] Update ajani_sleeper_agent.txt --- forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt index bdd06f4aa94..db5130c0921 100644 --- a/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt +++ b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt @@ -3,12 +3,10 @@ ManaCost:1 G PGW W Types:Legendary Planeswalker Ajani Loyalty:4 K:Compleated - A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature,Planeswalker | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition2$ -1 | RememberChanged$ True | SubAbility$ DBDig | SpellDescription$ Reveal the top card of your library. If it's a creature or planeswalker card, put it into your hand. Otherwise, you may put it on the bottom of your library. SVar:DBDig:DB$ Dig | DigNum$ 1 | DestinationZone$ Library | Optional$ True | LibraryPosition$ -1 | LibraryPosition2$ 0 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup SVar:X:Remembered$Amount SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True - A:AB$ PutCounter | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select up to three target creatures you control | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SubAbility$ DBPump | SpellDescription$ Distribute three +1/+1 counters among up to three target creatures. SVar:DBPump:DB$ Pump | KW$ Vigilance | Defined$ Targeted | SpellDescription$ They gain vigilance until end of turn. A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Ajani, Sleeper Agent | Image$ emblem_ajani_sleeper_agent | Triggers$ TrigSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters." From 008d5bdbaa397894348bcb6adafbf128e0cc7951 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 19 Aug 2022 05:48:01 +0800 Subject: [PATCH 10/65] Fix test --- .../java/forge/card/CardEditionCollectionCardMockTestCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui-desktop/src/test/java/forge/card/CardEditionCollectionCardMockTestCase.java b/forge-gui-desktop/src/test/java/forge/card/CardEditionCollectionCardMockTestCase.java index 8adf304e4d3..e44f21462d1 100644 --- a/forge-gui-desktop/src/test/java/forge/card/CardEditionCollectionCardMockTestCase.java +++ b/forge-gui-desktop/src/test/java/forge/card/CardEditionCollectionCardMockTestCase.java @@ -41,7 +41,7 @@ public class CardEditionCollectionCardMockTestCase extends CardMockTestCase { CardDb cardDb = FModel.getMagicDb().getCommonCards(); String[] cardNames = { "Shivan Dragon", "Animate Wall", "Balance", "Blessing", "Force of Will" }; - String[] expectedSets = { "M20", "MED", "SLD", "M14", "2XM" }; + String[] expectedSets = { "M20", "MED", "SLD", "M14", "DMR" }; List cards = new ArrayList<>(); for (int i = 0; i < 5; i++) { String cardName = cardNames[i]; From a21c49203c9092c7fb3e20c12ea7aa884fe965a3 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Thu, 18 Aug 2022 23:56:39 -0500 Subject: [PATCH 11/65] DMU: Braids, Arisen Nightmare + 4 cards DMU: Add scripts for 5 DMU cards - Astor, Bearer of Blades - Braids, Arisen Nightmare - Herd Migration - Nemata, Primal Guardian - Sheoldred, the Apocalypse --- .../upcoming/astor_bearer_of_blades.txt | 10 ++++++++++ .../upcoming/braids_arisen_nightmare.txt | 14 ++++++++++++++ .../res/cardsfolder/upcoming/herd_migration.txt | 11 +++++++++++ .../upcoming/nemata_primal_guardian.txt | 14 ++++++++++++++ .../upcoming/sheoldred_the_apocalypse.txt | 10 ++++++++++ 5 files changed, 59 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/herd_migration.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/nemata_primal_guardian.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt diff --git a/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt b/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt new file mode 100644 index 00000000000..8644c0deb6f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt @@ -0,0 +1,10 @@ +Name:Astor, Bearer of Blades +ManaCost:2 R W +Types:Legendary Creature Human Warrior +PT:4/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top seven cards of your library. You may reveal an Equipment or Vehicle card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 7 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Equipment,Vehicle | RestRandomOrder$ True | Reveal$ True +S:Mode$ Continuous | Affected$ Equipment.YouCtrl | AddKeyword$ Equip:0 | Description$ Equipment you control have equip {0}. +S:Mode$ Continuous | Affected$ Vehicle.YouCtrl | AddKeyword$ Crew:1 | Description$ Vehicles you control have crew 1. +DeckHints:Type$Equipment|Vehicle +Oracle:When Astor, Bearer of Blades enters the battlefield, look at the top seven cards of your library. You may reveal an Equipment or Vehicle card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nEquipment you control have equip {0}.\nVehicles you control have crew 1. diff --git a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt new file mode 100644 index 00000000000..91b62932c51 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt @@ -0,0 +1,14 @@ +Name:Braids, Arisen Nightmare +ManaCost:1 B B +Types:Legendary Creature Nightmare +PT:3/3 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of your end step, you may sacrifice an artifact, creature, enchantment, land, or planeswalker. If you do, each opponent may sacrifice a permanent that shares a card type with it. For each opponent who doesn't, that player loses 2 life and you draw a card. +SVar:TrigSac:DB$ Sacrifice | Optional$ True | SacValid$ Artifact,Creature,Enchantment,Land,Planeswalker | Amount$ 1 | RememberSacrificed$ True | SubAbility$ DBRepeatEach +SVar:DBRepeatEach:DB$ RepeatEach | RepeatSubAbility$ DBMaySac | RepeatPlayers$ Player.Opponent | SubAbility$ DBCleanup +SVar:DBMaySac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Permanent.sharesCardTypeWith Remembered | RememberSacrificed$ True | Optional$ True | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ Player.IsRemembered | LifeAmount$ 2 | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ You | NumCards$ 1 +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Valid Card.RememberedPlayerOwn +DeckHas:Ability$Sacrifice +Oracle:At the beginning of your end step, you may sacrifice an artifact, creature, enchantment, land, or planeswalker. If you do, each opponent may sacrifice a permanent that shares a card type with it. For each opponent who doesn't, that player loses 2 life and you draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/herd_migration.txt b/forge-gui/res/cardsfolder/upcoming/herd_migration.txt new file mode 100644 index 00000000000..3f008a27a0a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/herd_migration.txt @@ -0,0 +1,11 @@ +Name:Herd Migration +ManaCost:6 G +Types:Sorcery +A:SP$ Token | TokenAmount$ X | TokenScript$ g_3_3_beast | TokenOwner$ You | SpellDescription$ Domain — Create a 3/3 green Beast creature token for each basic land type among lands you control. +A:AB$ ChangeZone | Cost$ 1 G Discard<1/CARDNAME> | ActivationZone$ Hand | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | ChangeTypeDesc$ basic land card | SubAbility$ DBGainLife | SpellDescription$ Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 3 life. +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 +DeckHas:Ability$Discard|LifeGain +SVar:X:Count$Domain +AI:RemoveDeck:Random +DeckHas:Ability$Token +Oracle:Domain — Create a 3/3 green Beast creature token for each basic land type among lands you control.\n{1}{G}, Discard Herd Migration: Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 3 life. diff --git a/forge-gui/res/cardsfolder/upcoming/nemata_primal_guardian.txt b/forge-gui/res/cardsfolder/upcoming/nemata_primal_guardian.txt new file mode 100644 index 00000000000..0a0177e51dd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nemata_primal_guardian.txt @@ -0,0 +1,14 @@ +Name:Nemata, Primal Guardian +ManaCost:2 B G +Types:Legendary Creature Treefolk +PT:3/4 +K:Reach +R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidLKI$ Card.Creature+nonToken+OppOwn | ReplaceWith$ Exile | Description$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. +SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard | SubAbility$ DBImmediateTrigger +SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ TrigToken | TriggerDescription$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ g_1_1_saproling | TokenOwner$ You +A:AB$ Pump | Cost$ G Sac<1/Saproling/a Saproling> | NumAtt$ +2 | NumDef$ +2 | AILogic$ Aristocrat | SpellDescription$ CARDNAME gets +2/+2 until end of turn. +A:AB$ Draw | Cost$ 1 B Sac<2/Saproling/two Saprolings> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. +DeckHints:Type$Saproling +DeckHas:Ability$Token +Oracle:Reach\nIf a creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token.\n{G}, Sacrifice a Saproling: Nemata, Primal Guardian gets +2/+2 until end of turn.\n{1}{B}, Sacrifice two Saprolings: Draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt new file mode 100644 index 00000000000..798e083b6fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt @@ -0,0 +1,10 @@ +Name:Sheoldred, the Apocalypse +ManaCost:2 B B +Types:Legendary Creature Phyrexian Praetor +PT:4/5 +K:Deathtouch +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever you draw a card, you gain 2 life. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 +T:Mode$ Drawn | ValidCard$ Card.OppCtrl | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever an opponent draws a card, they lose 2 life. +SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardController | LifeAmount$ 2 +Oracle:Deathtouch\nWhenever you draw a card, you gain 2 life.\nWhenever an opponent draws a card, they lose 2 life. From cfd05b287ca1a51376cd986feccb812b4574e13d Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 00:00:30 -0500 Subject: [PATCH 12/65] Update herd_migration.txt --- forge-gui/res/cardsfolder/upcoming/herd_migration.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/herd_migration.txt b/forge-gui/res/cardsfolder/upcoming/herd_migration.txt index 3f008a27a0a..cdcc06d5738 100644 --- a/forge-gui/res/cardsfolder/upcoming/herd_migration.txt +++ b/forge-gui/res/cardsfolder/upcoming/herd_migration.txt @@ -4,8 +4,7 @@ Types:Sorcery A:SP$ Token | TokenAmount$ X | TokenScript$ g_3_3_beast | TokenOwner$ You | SpellDescription$ Domain — Create a 3/3 green Beast creature token for each basic land type among lands you control. A:AB$ ChangeZone | Cost$ 1 G Discard<1/CARDNAME> | ActivationZone$ Hand | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | ChangeTypeDesc$ basic land card | SubAbility$ DBGainLife | SpellDescription$ Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 3 life. SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 -DeckHas:Ability$Discard|LifeGain +DeckHas:Ability$Discard|LifeGain|Token SVar:X:Count$Domain AI:RemoveDeck:Random -DeckHas:Ability$Token Oracle:Domain — Create a 3/3 green Beast creature token for each basic land type among lands you control.\n{1}{G}, Discard Herd Migration: Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 3 life. From c419c1748dc2ec0a818158e600ccc09db48fa127 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 00:41:41 -0500 Subject: [PATCH 13/65] Update and rename nemata_primal_guardian.txt to nemata_primeval_warden.txt --- ...{nemata_primal_guardian.txt => nemata_primeval_warden.txt} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename forge-gui/res/cardsfolder/upcoming/{nemata_primal_guardian.txt => nemata_primeval_warden.txt} (93%) diff --git a/forge-gui/res/cardsfolder/upcoming/nemata_primal_guardian.txt b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt similarity index 93% rename from forge-gui/res/cardsfolder/upcoming/nemata_primal_guardian.txt rename to forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt index 0a0177e51dd..4a9c401e608 100644 --- a/forge-gui/res/cardsfolder/upcoming/nemata_primal_guardian.txt +++ b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt @@ -1,4 +1,4 @@ -Name:Nemata, Primal Guardian +Name:Nemata, Primeval Warden ManaCost:2 B G Types:Legendary Creature Treefolk PT:3/4 @@ -11,4 +11,4 @@ A:AB$ Pump | Cost$ G Sac<1/Saproling/a Saproling> | NumAtt$ +2 | NumDef$ +2 | AI A:AB$ Draw | Cost$ 1 B Sac<2/Saproling/two Saprolings> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. DeckHints:Type$Saproling DeckHas:Ability$Token -Oracle:Reach\nIf a creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token.\n{G}, Sacrifice a Saproling: Nemata, Primal Guardian gets +2/+2 until end of turn.\n{1}{B}, Sacrifice two Saprolings: Draw a card. +Oracle:Reach\nIf a creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token.\n{G}, Sacrifice a Saproling: Nemata, Primeval Warden gets +2/+2 until end of turn.\n{1}{B}, Sacrifice two Saprolings: Draw a card. From bb9ec4e9821436add7fd39e1da5b9e2f5451d81a Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Fri, 19 Aug 2022 09:02:08 +0100 Subject: [PATCH 14/65] Some edition updates --- forge-gui/res/editions/30th Anniversary Promos.txt | 1 + .../res/editions/Dominaria United Commander.txt | 3 ++- forge-gui/res/editions/Dominaria United.txt | 12 +++++++++--- forge-gui/res/editions/Warhammer 40,000.txt | 2 +- forge-gui/res/editions/Wizards Play Network 2022.txt | 1 + 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/forge-gui/res/editions/30th Anniversary Promos.txt b/forge-gui/res/editions/30th Anniversary Promos.txt index e777646b022..2589f40f2e3 100644 --- a/forge-gui/res/editions/30th Anniversary Promos.txt +++ b/forge-gui/res/editions/30th Anniversary Promos.txt @@ -14,3 +14,4 @@ F1★ R Richard Garfield, Ph.D. @Dave Dorman 4 R Wall of Roots @Matt Stewart 5 R Wood Elves @Rebecca Guay 6 R Windfall @Pete Venters +7 R Loyal Retainers @Solomon Au Yeung diff --git a/forge-gui/res/editions/Dominaria United Commander.txt b/forge-gui/res/editions/Dominaria United Commander.txt index a27c1b77e7c..a2ad18df0c6 100644 --- a/forge-gui/res/editions/Dominaria United Commander.txt +++ b/forge-gui/res/editions/Dominaria United Commander.txt @@ -8,7 +8,8 @@ ScryfallCode=DMC [cards] 1 M Dihada, Binder of Wills @Nestor Ossandon Leal 2 M Jared Carthalion @Manuel Castañón -31 U General Marhault Elsdragon @ +30 R The Ever-Changing 'Dane @Campbell White +31 U General Marhault Elsdragon @Heonhwa Choe 32 R Hazezon, Shaper of Sand @Bryan Sola 33 U Jasmine Boreal of the Seven @Bastien L. Deharme 34 M Jedit Ojanen, Mercenary @Ilse Gort diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index 8f42556570a..663e4577876 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -12,9 +12,11 @@ ScryfallCode=DMU 8 C Benalish Sleeper @Josu Hernaiz 10 C Charismatic Vanguard @David Palumbo 19 R Guardian of New Benalia @Ernanda Souza +29 U Resolute Reinforcements @Billy Christian 33 U Shalai's Acolyte @Zara Alfonso 46 R Defiler of Dreams @Ryan Pancoast 54 C Impede Momentum @Igor Kieryluk +57 U Micromancer @Ernanda Souza 59 R The Phasing of Zhalfir @LA Draws 84 R Braids, Arisen Nightmare @Heonhwa Choe 93 R Evolved Sleeper @Jason A. Engle @@ -22,7 +24,8 @@ ScryfallCode=DMU 103 R The Raven Man @Chris Rahn 107 M Sheoldred, the Apocalypse @Chris Rahn 133 M Jaya, Fiery Negotiator @Marta Nael -141 R Radha's Firebrand @Angelo Bortolini +137 C Lightning Strike @Marta Nael +141 R Radha's Firebrand @Ângelo Bortolini 143 M Shivan Devastator @Brent Hollowell 146 R Squee, Dubious Monarch @Zoltan Boros 147 R Temporal Firestorm @Nestor Ossandon Leal @@ -31,8 +34,9 @@ ScryfallCode=DMU 184 U Territorial Maro @Simon Dominic 189 M The World Spell @Adam Paquette 192 M Ajani, Sleeper Agent @Matt Stewart +194 R Astor, Bearer of Blades @Josh Hass 202 R Jhoira, Ageless Innovator @Justyna Gil -209 R Nemata, Primeval Ward @Andrew Mar +209 R Nemata, Primeval Warden @Andrew Mar 212 U Raff, Weatherlight Stalwart @Eelis Kyttanen 219 M Sol'Kanar the Tainted @Filip Burburan 220 M Soul of Windgrace @Liiga Smilshkalne @@ -50,9 +54,11 @@ ScryfallCode=DMU 281 L Forest @Magali Villeneuve 288 R Braids, Arisen Nightmare @Dibujante Nocturno 289 R The Raven Man @David Curtis -290 M Sheoldred, the Apocalypse @Chris Rahn +290 M Sheoldred, the Apocalypse @Joe Esposito 291 R Squee, Dubious Monarch @Daniel Lieske +293 R Astor, Bearer of Blades @Ivan Shavrin 301 R Jhoira, Ageless Innovator @Lisa Heidhoff +308 R Nemata, Primeval Warden @Bastien Grivet 311 U Raff, Weatherlight Stalwart @Ivan Shavrin 318 M Sol'Kanar the Tainted @Lisa Heidhoff 319 M Soul of Windgrace @Ivan Shavrin diff --git a/forge-gui/res/editions/Warhammer 40,000.txt b/forge-gui/res/editions/Warhammer 40,000.txt index 9031a4c4f8f..fc06c051532 100644 --- a/forge-gui/res/editions/Warhammer 40,000.txt +++ b/forge-gui/res/editions/Warhammer 40,000.txt @@ -8,7 +8,7 @@ ScryfallCode=40K [cards] 2 M Abaddon the Despoiler @Johan Grenier 27 R Vanguard Suppressor @Fajareka Setiawan -108 C Blood for the Blood God! @Artur Nakhodkin +108 R Blood for the Blood God! @Artur Nakhodkin 171 M Abaddon the Despoiler @Johan Grenier 181 R Fabricate @Johan Grenier 249 U Sol Ring @Teodora Dumitriu diff --git a/forge-gui/res/editions/Wizards Play Network 2022.txt b/forge-gui/res/editions/Wizards Play Network 2022.txt index 5d78287c002..b9567578d2b 100644 --- a/forge-gui/res/editions/Wizards Play Network 2022.txt +++ b/forge-gui/res/editions/Wizards Play Network 2022.txt @@ -10,3 +10,4 @@ ScryfallCode=PW22 2 R Fateful Absence @Eric Deschamps 3 M Atsushi, the Blazing Sky @Victor Adame Minguez 4 U Swiftfoot Boots @Svetlin Velinov +5 R Dismember @Alix Branwyn From 797ff625dbac05b64ba9f26029c96929fb106850 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 19 Aug 2022 21:28:23 +0800 Subject: [PATCH 15/65] Adventure Custom StarterDecks - add support loading custom starterdeck in adventure mode, custom->starterdecks on user folder before starting Forge --- .../adventure/player/AdventurePlayer.java | 19 ++- .../src/forge/adventure/scene/DuelScene.java | 2 +- .../forge/adventure/scene/NewGameScene.java | 128 +++++++++--------- .../stage/ConsoleCommandInterpreter.java | 6 +- .../src/forge/adventure/stage/WorldStage.java | 29 ++-- .../src/forge/adventure/util/CardUtil.java | 2 +- .../src/forge/adventure/world/WorldSave.java | 12 +- 7 files changed, 108 insertions(+), 90 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java index 1ed1ed24152..90d53c43d6a 100644 --- a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java +++ b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java @@ -60,6 +60,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent { // Fantasy/Chaos mode settings. private boolean fantasyMode = false; private boolean announceFantasy = false; + private boolean usingCustomDeck = false; + private boolean announceCustom = false; // Signals SignalList onLifeTotalChangeList = new SignalList(); @@ -83,6 +85,7 @@ public class AdventurePlayer implements Serializable, SaveFileContent { //Reset all properties HERE. fantasyMode = false; announceFantasy = false; + usingCustomDeck = false; blessing = null; gold = 0; maxLife = 20; @@ -104,9 +107,10 @@ public class AdventurePlayer implements Serializable, SaveFileContent { private final CardPool cards=new CardPool(); private final ItemPool newCards=new ItemPool<>(InventoryItem.class); - public void create(String n, Deck startingDeck, boolean male, int race, int avatar, boolean isFantasy, DifficultyData difficultyData) { + public void create(String n, Deck startingDeck, boolean male, int race, int avatar, boolean isFantasy, boolean isUsingCustomDeck, DifficultyData difficultyData) { clear(); announceFantasy = fantasyMode = isFantasy; //Set Chaos mode first. + announceCustom = usingCustomDeck = isUsingCustomDeck; deck = startingDeck; decks[0] = deck; @@ -289,6 +293,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent { fantasyMode = data.containsKey("fantasyMode") ? data.readBool("fantasyMode") : false; announceFantasy = data.containsKey("announceFantasy") ? data.readBool("announceFantasy") : false; + usingCustomDeck = data.containsKey("usingCustomDeck") ? data.readBool("usingCustomDeck") : false; + announceCustom = data.containsKey("announceCustom") ? data.readBool("announceCustom") : false; onLifeTotalChangeList.emit(); onGoldChangeList.emit(); @@ -315,6 +321,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent { data.store("fantasyMode",fantasyMode); data.store("announceFantasy",announceFantasy); + data.store("usingCustomDeck", usingCustomDeck); + data.store("announceCustom", announceCustom); data.store("worldPosX",worldPosX); data.store("worldPosY",worldPosY); @@ -493,6 +501,9 @@ public class AdventurePlayer implements Serializable, SaveFileContent { public boolean isFantasyMode(){ return fantasyMode; } + public boolean isUsingCustomDeck(){ + return usingCustomDeck; + } public boolean hasAnnounceFantasy(){ return announceFantasy; @@ -501,6 +512,12 @@ public class AdventurePlayer implements Serializable, SaveFileContent { public void clearAnnounceFantasy(){ announceFantasy = false; } + public boolean hasAnnounceCustom(){ + return announceCustom; + } + public void clearAnnounceCustom(){ + announceCustom = false; + } public boolean hasColorView() { for(String name:equippedItems.values()) { diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index 897dd259d6e..96abc7407d1 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -233,7 +233,7 @@ public class DuelScene extends ForgeScene { this.AIExtras = aiCards; deck = deckProxy.getDeck(); } else { - deck = currentEnemy.copyPlayerDeck ? this.playerDeck : currentEnemy.generateDeck(Current.player().isFantasyMode(), Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); + deck = currentEnemy.copyPlayerDeck ? this.playerDeck : currentEnemy.generateDeck(Current.player().isFantasyMode(), Current.player().isUsingCustomDeck()||Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); } RegisteredPlayer aiPlayer = RegisteredPlayer.forVariants(playerCount, appliedVariants, deck, null, false, null, null); diff --git a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java index 43210b3777f..e0d0f37b6eb 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java @@ -15,6 +15,7 @@ import forge.adventure.util.Selector; import forge.adventure.util.UIActor; import forge.adventure.world.WorldSave; import forge.card.ColorSet; +import forge.deck.DeckProxy; import forge.localinstance.properties.ForgePreferences; import forge.model.FModel; import forge.player.GamePlayerUtil; @@ -36,7 +37,8 @@ public class NewGameScene extends UIScene { private Selector gender; private Selector mode; private Selector difficulty; - private Array stringList, random; + private Array stringList, random, custom; + private Label colorLabel; public NewGameScene() { super(Forge.isLandscapeMode() ? "ui/new_game.json" : "ui/new_game_portrait.json"); @@ -54,7 +56,7 @@ public class NewGameScene extends UIScene { avatarIndex, colorIds[colorId.getCurrentIndex()], Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()], - mode.getCurrentIndex()==2, mode.getCurrentIndex()==1, 0);//maybe replace with enum + mode.getCurrentIndex() == 2, mode.getCurrentIndex() == 1, mode.getCurrentIndex() == 3, colorId.getCurrentIndex(), 0);//maybe replace with enum GamePlayerUtil.getGuiPlayer().setName(selectedName.getText()); Forge.switchScene(SceneType.GameScene.instance); }; @@ -70,64 +72,69 @@ public class NewGameScene extends UIScene { @Override public void resLoaded() { super.resLoaded(); - selectedName = ui.findActor("nameField"); - selectedName.setText(NameGenerator.getRandomName("Any", "Any", "")); - avatarImage = ui.findActor("avatarPreview"); - gender = ui.findActor("gender"); - mode = ui.findActor("mode"); - mode.setTextList(new String[]{"Standard", "Constructed","Chaos"}); - gender.setTextList(new String[]{"Male", "Female"}); - gender.addListener(event -> NewGameScene.this.updateAvatar()); - Random rand = new Random(); - colorId = ui.findActor("colorId"); - String[] colorSet=Config.instance().colorIds(); - String[] colorIdNames=Config.instance().colorIdNames(); - colorIds = new ColorSet[colorSet.length]; - for(int i = 0; i< colorIds.length; i++) - colorIds[i]= ColorSet.fromNames(colorSet[i].toCharArray()); - stringList = new Array<>(colorIds.length); - for (String idName : colorIdNames) - stringList.add(UIActor.localize(idName)); - colorId.setTextList(stringList); - random = new Array<>(); - random.add(Forge.getLocalizer().getMessage("lblRandomDeck")); - mode.addListener(new ChangeListener() { - @Override - public void changed(ChangeEvent changeEvent, Actor actor) { - if (mode.getCurrentIndex() == 2) - colorId.setTextList(random); - else - colorId.setTextList(stringList); - } - }); - race = ui.findActor("race"); - race.addListener(event -> NewGameScene.this.updateAvatar()); - race.setTextList(HeroListData.getRaces()); - difficulty = ui.findActor("difficulty"); - - Array diffList = new Array<>(colorIds.length); - int i = 0; - int startingDifficulty = 0; - for (DifficultyData diff : Config.instance().getConfigData().difficulties) { - if (diff.startingDifficulty) - startingDifficulty = i; - diffList.add(diff.name); - i++; + selectedName = ui.findActor("nameField"); + selectedName.setText(NameGenerator.getRandomName("Any", "Any", "")); + avatarImage = ui.findActor("avatarPreview"); + gender = ui.findActor("gender"); + mode = ui.findActor("mode"); + colorLabel = ui.findActor("colorIdL"); + String colorIdLabel = colorLabel.getText().toString(); + custom = new Array<>(); + for (DeckProxy deckProxy : DeckProxy.getAllCustomStarterDecks()) + custom.add(deckProxy.getName()); + mode.setTextList(custom.isEmpty() ? new String[]{"Standard", "Constructed", "Chaos"} : new String[]{"Standard", "Constructed", "Chaos", "Custom"}); + gender.setTextList(new String[]{"Male", "Female"}); + gender.addListener(event -> NewGameScene.this.updateAvatar()); + Random rand = new Random(); + colorId = ui.findActor("colorId"); + String[] colorSet = Config.instance().colorIds(); + String[] colorIdNames = Config.instance().colorIdNames(); + colorIds = new ColorSet[colorSet.length]; + for (int i = 0; i < colorIds.length; i++) + colorIds[i] = ColorSet.fromNames(colorSet[i].toCharArray()); + stringList = new Array<>(colorIds.length); + for (String idName : colorIdNames) + stringList.add(UIActor.localize(idName)); + colorId.setTextList(stringList); + random = new Array<>(); + random.add(Forge.getLocalizer().getMessage("lblRandomDeck")); + mode.addListener(new ChangeListener() { + @Override + public void changed(ChangeEvent changeEvent, Actor actor) { + colorLabel.setText(mode.getCurrentIndex() < 2 ? colorIdLabel : Forge.getLocalizer().getMessage("lblDeck")+":"); + if (mode.getCurrentIndex() == 3) + colorId.setTextList(custom); + if (mode.getCurrentIndex() == 2) + colorId.setTextList(random); + if (mode.getCurrentIndex() < 2) + colorId.setTextList(stringList); } - difficulty.setTextList(diffList); - difficulty.setCurrentIndex(startingDifficulty); - avatarIndex = rand.nextInt(); - updateAvatar(); - gender.setCurrentIndex(rand.nextInt()); - colorId.setCurrentIndex(rand.nextInt()); - race.setCurrentIndex(rand.nextInt()); - ui.onButtonPress("back", () -> NewGameScene.this.back()); - ui.onButtonPress("start", () -> NewGameScene.this.start()); - ui.onButtonPress("leftAvatar", () -> NewGameScene.this.leftAvatar()); - ui.onButtonPress("rightAvatar", () -> NewGameScene.this.rightAvatar()); - - + }); + race = ui.findActor("race"); + race.addListener(event -> NewGameScene.this.updateAvatar()); + race.setTextList(HeroListData.getRaces()); + difficulty = ui.findActor("difficulty"); + Array diffList = new Array<>(colorIds.length); + int i = 0; + int startingDifficulty = 0; + for (DifficultyData diff : Config.instance().getConfigData().difficulties) { + if (diff.startingDifficulty) + startingDifficulty = i; + diffList.add(diff.name); + i++; + } + difficulty.setTextList(diffList); + difficulty.setCurrentIndex(startingDifficulty); + avatarIndex = rand.nextInt(); + updateAvatar(); + gender.setCurrentIndex(rand.nextInt()); + colorId.setCurrentIndex(rand.nextInt()); + race.setCurrentIndex(rand.nextInt()); + ui.onButtonPress("back", () -> NewGameScene.this.back()); + ui.onButtonPress("start", () -> NewGameScene.this.start()); + ui.onButtonPress("leftAvatar", () -> NewGameScene.this.leftAvatar()); + ui.onButtonPress("rightAvatar", () -> NewGameScene.this.rightAvatar()); } private void rightAvatar() { @@ -156,8 +163,7 @@ public class NewGameScene extends UIScene { updateAvatar(); Gdx.input.setInputProcessor(stage); //Start taking input from the ui - if(Forge.createNewAdventureMap) - { + if (Forge.createNewAdventureMap) { FModel.getPreferences().setPref(ForgePreferences.FPref.UI_ENABLE_MUSIC, false); WorldSave.generateNewWorld(selectedName.getText(), gender.getCurrentIndex() == 0, @@ -165,7 +171,7 @@ public class NewGameScene extends UIScene { avatarIndex, colorIds[colorId.getCurrentIndex()], Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()], - mode.getCurrentIndex()==2, mode.getCurrentIndex()==1, 0);//maybe replace with enum + mode.getCurrentIndex() == 2, mode.getCurrentIndex() == 1, mode.getCurrentIndex() == 3, colorId.getCurrentIndex(), 0);//maybe replace with enum GamePlayerUtil.getGuiPlayer().setName(selectedName.getText()); Forge.switchScene(SceneType.GameScene.instance); } diff --git a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java index 35e9463de0e..8607bf7a837 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java +++ b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java @@ -186,7 +186,7 @@ public class ConsoleCommandInterpreter { }); registerCommand(new String[]{"dumpEnemyDeckColors"}, s -> { for(EnemyData E : new Array.ArrayIterator<>(WorldData.getAllEnemies())){ - Deck D = E.generateDeck(Current.player().isFantasyMode(), Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); + Deck D = E.generateDeck(Current.player().isFantasyMode(), Current.player().isUsingCustomDeck()||Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); DeckProxy DP = new DeckProxy(D, "Constructed", GameType.Constructed, null); ColorSet colorSet = DP.getColor(); System.out.printf("%s: Colors: %s (%s%s%s%s%s%s)\n", D.getName(), DP.getColor(), @@ -202,7 +202,7 @@ public class ConsoleCommandInterpreter { }); registerCommand(new String[]{"dumpEnemyDeckList"}, s -> { for(EnemyData E : new Array.ArrayIterator<>(WorldData.getAllEnemies())){ - Deck D = E.generateDeck(Current.player().isFantasyMode(), Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); + Deck D = E.generateDeck(Current.player().isFantasyMode(), Current.player().isUsingCustomDeck()||Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); DeckProxy DP = new DeckProxy(D, "Constructed", GameType.Constructed, null); ColorSet colorSet = DP.getColor(); System.out.printf("Deck: %s\n%s\n\n", D.getName(), DP.getDeck().getMain().toCardList("\n") @@ -212,7 +212,7 @@ public class ConsoleCommandInterpreter { }); registerCommand(new String[]{"dumpEnemyColorIdentity"}, s -> { for(EnemyData E : new Array.ArrayIterator<>(WorldData.getAllEnemies())){ - Deck D = E.generateDeck(Current.player().isFantasyMode(), Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); + Deck D = E.generateDeck(Current.player().isFantasyMode(), Current.player().isUsingCustomDeck()||Current.player().getDifficulty().name.equalsIgnoreCase("Hard")); DeckProxy DP = new DeckProxy(D, "Constructed", GameType.Constructed, null); ColorSet colorSet = DP.getColor(); System.out.printf("%s Colors: %s | Deck Colors: %s (%s)\n", E.name, E.colors, DP.getColorIdentity().toEnumSet().toString(), DP.getName() diff --git a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java index 68e85d2c90d..7682e4a3df6 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java @@ -152,25 +152,19 @@ public class WorldStage extends GameStage implements SaveFileContent { if (playerIsWinner) { player.setAnimation(CharacterSprite.AnimationTypes.Attack); currentMob.setAnimation(CharacterSprite.AnimationTypes.Death); - startPause(0.5f, new Runnable() { - @Override - public void run() { - ((RewardScene) SceneType.RewardScene.instance).loadRewards(currentMob.getRewards(), RewardScene.Type.Loot, null); - WorldStage.this.removeEnemy(currentMob); - currentMob = null; - Forge.switchScene(SceneType.RewardScene.instance); - } + startPause(0.5f, () -> { + ((RewardScene) SceneType.RewardScene.instance).loadRewards(currentMob.getRewards(), RewardScene.Type.Loot, null); + WorldStage.this.removeEnemy(currentMob); + currentMob = null; + Forge.switchScene(SceneType.RewardScene.instance); }); } else { player.setAnimation(CharacterSprite.AnimationTypes.Hit); currentMob.setAnimation(CharacterSprite.AnimationTypes.Attack); - startPause(0.5f, new Runnable() { - @Override - public void run() { - Current.player().defeated(); - WorldStage.this.removeEnemy(currentMob); - currentMob = null; - } + startPause(0.5f, () -> { + Current.player().defeated(); + WorldStage.this.removeEnemy(currentMob); + currentMob = null; }); } @@ -268,6 +262,11 @@ public class WorldStage extends GameStage implements SaveFileContent { WorldSave.getCurrentSave().getPlayer().getSelectedDeck().getName()+ "\nEnemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); WorldSave.getCurrentSave().getPlayer().clearAnnounceFantasy(); + } else if (WorldSave.getCurrentSave().getPlayer().hasAnnounceCustom()) { + MapStage.getInstance().showDeckAwardDialog("{GRADIENT}Custom Deck Mode!{ENDGRADIENT}\n"+ WorldSave.getCurrentSave().getPlayer().getName()+ "'s Deck: "+ + WorldSave.getCurrentSave().getPlayer().getSelectedDeck().getName()+ + "\nSome enemies will use Genetic AI Decks randomly.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); + WorldSave.getCurrentSave().getPlayer().clearAnnounceCustom(); } } diff --git a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java index 0baec9318e4..78a22de5828 100644 --- a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java +++ b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java @@ -535,7 +535,7 @@ public class CardUtil { if(path.endsWith(".dck")) return DeckSerializer.fromFile(new File(Config.instance().getFilePath(path))); - if(forAI && isFantasyMode) { + if(forAI && (isFantasyMode||useGeneticAI)) { Deck deck = DeckgenUtil.getRandomOrPreconOrThemeDeck(colors, forAI, isTheme, useGeneticAI); if (deck != null) return deck; diff --git a/forge-gui-mobile/src/forge/adventure/world/WorldSave.java b/forge-gui-mobile/src/forge/adventure/world/WorldSave.java index 41e16823b5a..914f040ea7e 100644 --- a/forge-gui-mobile/src/forge/adventure/world/WorldSave.java +++ b/forge-gui-mobile/src/forge/adventure/world/WorldSave.java @@ -9,6 +9,7 @@ import forge.adventure.util.SaveFileData; import forge.adventure.util.SignalList; import forge.card.ColorSet; import forge.deck.Deck; +import forge.deck.DeckProxy; import forge.deck.DeckgenUtil; import forge.localinstance.properties.ForgeConstants; import forge.player.GamePlayerUtil; @@ -122,20 +123,15 @@ public class WorldSave { return currentSave; } - public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, ColorSet startingColorIdentity, DifficultyData diff, boolean chaos, boolean constructed, long seed) { + public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, ColorSet startingColorIdentity, DifficultyData diff, boolean chaos, boolean constructed, boolean custom, int customDeckIndex, long seed) { currentSave.world.generateNew(seed); currentSave.pointOfInterestChanges.clear(); - Deck starterDeck = chaos ? DeckgenUtil.getRandomOrPreconOrThemeDeck("", false, false, false) : Config.instance().starterDeck(startingColorIdentity,diff,constructed); - - currentSave.player.create(name, starterDeck, male, race, avatarIndex, chaos, diff); + Deck starterDeck = chaos ? DeckgenUtil.getRandomOrPreconOrThemeDeck("", false, false, false) : custom ? DeckProxy.getAllCustomStarterDecks().get(customDeckIndex).getDeck() : Config.instance().starterDeck(startingColorIdentity,diff,constructed); + currentSave.player.create(name, starterDeck, male, race, avatarIndex, chaos, custom, diff); currentSave.player.setWorldPosY((int) (currentSave.world.getData().playerStartPosY * currentSave.world.getData().height * currentSave.world.getTileSize())); currentSave.player.setWorldPosX((int) (currentSave.world.getData().playerStartPosX * currentSave.world.getData().width * currentSave.world.getTileSize())); - //after getting deck override starting color identity to match - //if (identity != startingColorIdentity) - // currentSave.player.setColorIdentity(identity); currentSave.onLoadList.emit(); return currentSave; - //return currentSave = ret; } public boolean autoSave() { From 520876f0de1c76a1f031e7a6c0888275765b71db Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 19 Aug 2022 21:55:05 +0800 Subject: [PATCH 16/65] show messages for doppelganger if player is using custom decks in adventure --- forge-gui-mobile/src/forge/adventure/scene/DuelScene.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index 96abc7407d1..6bf938dcde0 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -73,8 +73,9 @@ public class DuelScene extends ForgeScene { public void GameEnd() { boolean winner = humanPlayer == hostedMatch.getGame().getMatch().getWinner(); String enemyName = (enemy.nameOverride.isEmpty() ? enemy.getData().name : enemy.nameOverride); + boolean showMessages = enemy.getData().copyPlayerDeck && Current.player().isUsingCustomDeck(); Current.player().clearBlessing(); - if (chaosBattle && !winner) { + if ((chaosBattle||showMessages) && !winner) { callbackExit = true; List insult = Lists.newArrayList("I'm sorry...", "... ....", "Learn from your defeat.", "I haven't begun to use my full power.", "No matter how much you try, you still won't beat me.", @@ -285,7 +286,8 @@ public class DuelScene extends ForgeScene { hostedMatch.setEndGameHook(() -> DuelScene.this.GameEnd()); hostedMatch.startMatch(rules, appliedVariants, players, guiMap); MatchController.instance.setGameView(hostedMatch.getGameView()); - if (chaosBattle) { + boolean showMessages = enemy.getData().copyPlayerDeck && Current.player().isUsingCustomDeck(); + if (chaosBattle||showMessages) { List list = Lists.newArrayList("It all depends on your skill!", "It's showtime!", "Let's party!", "You've proved yourself!", "Are you ready? Go!", "Prepare to strike, now!", "Let's go!", "What's next?", "Yeah, I've been waitin' for this!", "The stage of battle is set!", "And the battle begins!", "Let's get started!", @@ -324,7 +326,7 @@ public class DuelScene extends ForgeScene { this.player = playerSprite; this.enemy = enemySprite; this.playerDeck = (Deck) AdventurePlayer.current().getSelectedDeck().copyTo("PlayerDeckCopy"); - this.chaosBattle = this.enemy.getData().copyPlayerDeck && Current.player().isFantasyMode(); + this.chaosBattle = this.enemy.getData().copyPlayerDeck && (Current.player().isFantasyMode()); this.AIExtras.clear(); this.playerExtras.clear(); } From 700d2182cb3b9c0d176f80d69140d65ba03c58ee Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 19 Aug 2022 21:56:52 +0800 Subject: [PATCH 17/65] remove parenthesis --- forge-gui-mobile/src/forge/adventure/scene/DuelScene.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index 6bf938dcde0..69092074475 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -326,7 +326,7 @@ public class DuelScene extends ForgeScene { this.player = playerSprite; this.enemy = enemySprite; this.playerDeck = (Deck) AdventurePlayer.current().getSelectedDeck().copyTo("PlayerDeckCopy"); - this.chaosBattle = this.enemy.getData().copyPlayerDeck && (Current.player().isFantasyMode()); + this.chaosBattle = this.enemy.getData().copyPlayerDeck && Current.player().isFantasyMode(); this.AIExtras.clear(); this.playerExtras.clear(); } From 49474984690d436e394002dc5c1f06c68257aff5 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 11:46:32 -0500 Subject: [PATCH 18/65] Update squee_dubious_monarch.txt --- forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt b/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt index 559605931ee..ec21bf2a6f9 100644 --- a/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt +++ b/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt @@ -5,6 +5,6 @@ PT:2/2 K:Haste T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks, create a 1/1 red Golbin creature token that's tapped and attacking. SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenTapped$ True | TokenAttacking$ True -SVar:AltCost:Cost$ 3 R ExileFromGrave<4/Card.Other/other cards> | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its other costs. +SVar:AltCost:Cost$ 3 R ExileFromGrave<4/Card.Other/other cards> | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its mana cost. DeckHas:Ability$Token|Graveyard & Type$Goblin -Oracle:Haste\nWhenever Squee, Dubious Monarch attacks, create a 1/1 red Golbin creature token that's tapped and attacking.\nYou may cast Squee, Dubious Monarch from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its other costs. +Oracle:Haste\nWhenever Squee, Dubious Monarch attacks, create a 1/1 red Golbin creature token that's tapped and attacking.\nYou may cast Squee, Dubious Monarch from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its mana cost. From 6d8461f6c28878a9cf1d5ddf81deee592f5298ab Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 11:47:05 -0500 Subject: [PATCH 19/65] Update ajani_sleeper_agent.txt --- forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt index db5130c0921..e8897935d03 100644 --- a/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt +++ b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt @@ -4,10 +4,9 @@ Types:Legendary Planeswalker Ajani Loyalty:4 K:Compleated A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature,Planeswalker | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition2$ -1 | RememberChanged$ True | SubAbility$ DBDig | SpellDescription$ Reveal the top card of your library. If it's a creature or planeswalker card, put it into your hand. Otherwise, you may put it on the bottom of your library. -SVar:DBDig:DB$ Dig | DigNum$ 1 | DestinationZone$ Library | Optional$ True | LibraryPosition$ -1 | LibraryPosition2$ 0 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup -SVar:X:Remembered$Amount +SVar:DBDig:DB$ Dig | DigNum$ 1 | DestinationZone$ Library | Optional$ True | LibraryPosition$ -1 | LibraryPosition2$ 0 | ConditionDefined$ Remembered | ConditionNotPresent$ Card | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -A:AB$ PutCounter | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select up to three target creatures you control | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SubAbility$ DBPump | SpellDescription$ Distribute three +1/+1 counters among up to three target creatures. +A:AB$ PutCounter | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select up to three target creatures you control | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 0 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SubAbility$ DBPump | SpellDescription$ Distribute three +1/+1 counters among up to three target creatures. SVar:DBPump:DB$ Pump | KW$ Vigilance | Defined$ Targeted | SpellDescription$ They gain vigilance until end of turn. A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Ajani, Sleeper Agent | Image$ emblem_ajani_sleeper_agent | Triggers$ TrigSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters." SVar:TrigSpellCast:Mode$ SpellCast | ValidCard$ Creature,Planeswalker | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters. From 62fe018875ee7808491205fcdaa6f885f40b9ed3 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 11:47:26 -0500 Subject: [PATCH 20/65] Update braids_arisen_nightmare.txt --- .../res/cardsfolder/upcoming/braids_arisen_nightmare.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt index 91b62932c51..9c88aac9d23 100644 --- a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt +++ b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt @@ -8,7 +8,6 @@ SVar:DBRepeatEach:DB$ RepeatEach | RepeatSubAbility$ DBMaySac | RepeatPlayers$ P SVar:DBMaySac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Permanent.sharesCardTypeWith Remembered | RememberSacrificed$ True | Optional$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ Player.IsRemembered | LifeAmount$ 2 | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ You | NumCards$ 1 -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Remembered$Valid Card.RememberedPlayerOwn -DeckHas:Ability$Sacrifice +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True +SVar:X:Remembered$Valid Card.RememberedPlayerCtrl Oracle:At the beginning of your end step, you may sacrifice an artifact, creature, enchantment, land, or planeswalker. If you do, each opponent may sacrifice a permanent that shares a card type with it. For each opponent who doesn't, that player loses 2 life and you draw a card. From 83b2f61d55419616d5091bd750c5cc08e859cc2f Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 11:47:53 -0500 Subject: [PATCH 21/65] Update jhoira_ageless_innovator.txt --- forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt b/forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt index f4d50cc2be4..3bd191ddee1 100644 --- a/forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt +++ b/forge-gui/res/cardsfolder/upcoming/jhoira_ageless_innovator.txt @@ -3,7 +3,7 @@ ManaCost:U R Types:Legendary Creature Human Artificer PT:2/3 A:AB$ PutCounter | Cost$ T | CounterType$ INGENUITY | CounterNum$ 2 | SubAbility$ DBChangeZone | StackDescription$ {p:You} puts two ingenuity counters on CARDNAME, then {p:You} may put an artifact card with mana value X or less from hand onto the battlefield, where X is the number of ingenuity counters on NICKNAME. | SpellDescription$ Put two ingenuity counters on CARDNAME, then you may put an artifact card with mana value X or less from your hand onto the battlefield, where X is the number of ingenuity counters on NICKNAME. -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Artifact.cmcLEX+YouOwn | Optional$ You | StackDescription$ None +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Artifact.cmcLEX+YouOwn | StackDescription$ None SVar:X:Count$CardCounters.INGENUITY DeckNeeds:Type$Artifact Oracle:{T}: Put two ingenuity counters on Jhoira, Ageless Innovator, then you may put an artifact card with mana value X or less from your hand onto the battlefield, where X is the number of ingenuity counters on Jhoira. From f4575ce062d17c0e1a62a3cb7796de79e45b73a0 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 11:48:11 -0500 Subject: [PATCH 22/65] Update nemata_primeval_warden.txt --- .../res/cardsfolder/upcoming/nemata_primeval_warden.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt index 4a9c401e608..85dc4d31675 100644 --- a/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt +++ b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt @@ -3,12 +3,12 @@ ManaCost:2 B G Types:Legendary Creature Treefolk PT:3/4 K:Reach -R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidLKI$ Card.Creature+nonToken+OppOwn | ReplaceWith$ Exile | Description$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. -SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard | SubAbility$ DBImmediateTrigger +R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidLKI$ Card.Creature+nonToken+OppCtrl | CheckSelfLKIZone$ True | ReplaceWith$ Exile | Description$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. +SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard | ConditionDefined$ ReplacedCard | ConditionPresent$ Card | SubAbility$ DBImmediateTrigger SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ TrigToken | TriggerDescription$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ g_1_1_saproling | TokenOwner$ You A:AB$ Pump | Cost$ G Sac<1/Saproling/a Saproling> | NumAtt$ +2 | NumDef$ +2 | AILogic$ Aristocrat | SpellDescription$ CARDNAME gets +2/+2 until end of turn. -A:AB$ Draw | Cost$ 1 B Sac<2/Saproling/two Saprolings> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. +A:AB$ Draw | Cost$ 1 B Sac<2/Saproling/two Saprolings> | Defined$ You | NumCards$ 1 DeckHints:Type$Saproling DeckHas:Ability$Token Oracle:Reach\nIf a creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token.\n{G}, Sacrifice a Saproling: Nemata, Primeval Warden gets +2/+2 until end of turn.\n{1}{B}, Sacrifice two Saprolings: Draw a card. From 875148ad089fabb4e92ee3fc946e816dd8cca54e Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:05:30 -0500 Subject: [PATCH 23/65] Update ajani_sleeper_agent.txt --- forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt index e8897935d03..786e42410c4 100644 --- a/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt +++ b/forge-gui/res/cardsfolder/upcoming/ajani_sleeper_agent.txt @@ -10,7 +10,7 @@ A:AB$ PutCounter | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ SVar:DBPump:DB$ Pump | KW$ Vigilance | Defined$ Targeted | SpellDescription$ They gain vigilance until end of turn. A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Ajani, Sleeper Agent | Image$ emblem_ajani_sleeper_agent | Triggers$ TrigSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters." SVar:TrigSpellCast:Mode$ SpellCast | ValidCard$ Creature,Planeswalker | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters. -SVar:EffSpellCast:DB$ Poison | ValidTgts$ Opponent | TgtPrompt$ Select target opponent to get two poison counters | Num$ 2 +SVar:EffSpellCast:DB$ Poison | ValidTgts$ Opponent | Num$ 2 SVar:BuffedBy:Creature,Planeswalker DeckHints:Type$Creature|Planeswalker Oracle:Compleated ({PGW} can be paid with {G}, {W}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Reveal the top card of your library. If it's a creature or planeswalker card, put it into your hand. Otherwise, you may put it on the bottom of your library.\n[-3]: Distribute three +1/+1 counters among up to three target creatures. They gain vigilance until end of turn.\n[-6]: You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters." From 8306336ab09315cd0cbe60259db6fe66a1ed5ec2 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:19:01 -0500 Subject: [PATCH 24/65] Update braids_arisen_nightmare.txt --- forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt index 9c88aac9d23..a005c41fc69 100644 --- a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt +++ b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Nightmare PT:3/3 T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of your end step, you may sacrifice an artifact, creature, enchantment, land, or planeswalker. If you do, each opponent may sacrifice a permanent that shares a card type with it. For each opponent who doesn't, that player loses 2 life and you draw a card. SVar:TrigSac:DB$ Sacrifice | Optional$ True | SacValid$ Artifact,Creature,Enchantment,Land,Planeswalker | Amount$ 1 | RememberSacrificed$ True | SubAbility$ DBRepeatEach -SVar:DBRepeatEach:DB$ RepeatEach | RepeatSubAbility$ DBMaySac | RepeatPlayers$ Player.Opponent | SubAbility$ DBCleanup +SVar:DBRepeatEach:DB$ RepeatEach | ConditionDefined$ Remembered | ConditionPresent$ Card | RepeatSubAbility$ DBMaySac | RepeatPlayers$ Player.Opponent | SubAbility$ DBCleanup SVar:DBMaySac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Permanent.sharesCardTypeWith Remembered | RememberSacrificed$ True | Optional$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ Player.IsRemembered | LifeAmount$ 2 | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ You | NumCards$ 1 From c0e9cfc73379196910a8b069a112bb3a8ed82b57 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:30:51 -0500 Subject: [PATCH 25/65] Update braids_arisen_nightmare.txt --- forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt index a005c41fc69..fde1c037d6a 100644 --- a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt +++ b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt @@ -5,7 +5,7 @@ PT:3/3 T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of your end step, you may sacrifice an artifact, creature, enchantment, land, or planeswalker. If you do, each opponent may sacrifice a permanent that shares a card type with it. For each opponent who doesn't, that player loses 2 life and you draw a card. SVar:TrigSac:DB$ Sacrifice | Optional$ True | SacValid$ Artifact,Creature,Enchantment,Land,Planeswalker | Amount$ 1 | RememberSacrificed$ True | SubAbility$ DBRepeatEach SVar:DBRepeatEach:DB$ RepeatEach | ConditionDefined$ Remembered | ConditionPresent$ Card | RepeatSubAbility$ DBMaySac | RepeatPlayers$ Player.Opponent | SubAbility$ DBCleanup -SVar:DBMaySac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Permanent.sharesCardTypeWith Remembered | RememberSacrificed$ True | Optional$ True | SubAbility$ DBLoseLife +SVar:DBMaySac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Permanent.sharesCardTypeWith RememberedCard | RememberSacrificed$ True | Optional$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ Player.IsRemembered | LifeAmount$ 2 | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ You | NumCards$ 1 SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True From d018101763cdad968106cc195045fb8bcae18559 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:32:51 -0500 Subject: [PATCH 26/65] Update braids_arisen_nightmare.txt --- forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt index fde1c037d6a..b068beeb21e 100644 --- a/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt +++ b/forge-gui/res/cardsfolder/upcoming/braids_arisen_nightmare.txt @@ -8,6 +8,6 @@ SVar:DBRepeatEach:DB$ RepeatEach | ConditionDefined$ Remembered | ConditionPrese SVar:DBMaySac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Permanent.sharesCardTypeWith RememberedCard | RememberSacrificed$ True | Optional$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ Player.IsRemembered | LifeAmount$ 2 | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | Defined$ You | NumCards$ 1 -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Valid Card.RememberedPlayerCtrl Oracle:At the beginning of your end step, you may sacrifice an artifact, creature, enchantment, land, or planeswalker. If you do, each opponent may sacrifice a permanent that shares a card type with it. For each opponent who doesn't, that player loses 2 life and you draw a card. From d58704062b35242b409e2f72bb5a9973f33cd67c Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:33:35 -0500 Subject: [PATCH 27/65] Update herd_migration.txt --- forge-gui/res/cardsfolder/upcoming/herd_migration.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/herd_migration.txt b/forge-gui/res/cardsfolder/upcoming/herd_migration.txt index cdcc06d5738..df23cd8cc77 100644 --- a/forge-gui/res/cardsfolder/upcoming/herd_migration.txt +++ b/forge-gui/res/cardsfolder/upcoming/herd_migration.txt @@ -4,7 +4,7 @@ Types:Sorcery A:SP$ Token | TokenAmount$ X | TokenScript$ g_3_3_beast | TokenOwner$ You | SpellDescription$ Domain — Create a 3/3 green Beast creature token for each basic land type among lands you control. A:AB$ ChangeZone | Cost$ 1 G Discard<1/CARDNAME> | ActivationZone$ Hand | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | ChangeTypeDesc$ basic land card | SubAbility$ DBGainLife | SpellDescription$ Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 3 life. SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 -DeckHas:Ability$Discard|LifeGain|Token +DeckHas:Ability$Discard|LifeGain|Token & Type$Beast SVar:X:Count$Domain AI:RemoveDeck:Random Oracle:Domain — Create a 3/3 green Beast creature token for each basic land type among lands you control.\n{1}{G}, Discard Herd Migration: Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 3 life. From 4295fc3448fa21d0c1b92490e79772476c0a725c Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:34:27 -0500 Subject: [PATCH 28/65] Update the_raven_man.txt --- forge-gui/res/cardsfolder/upcoming/the_raven_man.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/the_raven_man.txt b/forge-gui/res/cardsfolder/upcoming/the_raven_man.txt index 1ab07d03729..f30fb4536f3 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_raven_man.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_raven_man.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Wizard PT:2/1 T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ X | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of each end step, if a player discarded a card this turn, create a 1/1 black Bird creature token with flying and "This creature can't block." SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_bird_flying_noblock -A:AB$ Discard | Cost$ 3 B T | Defined$ Player.Opponent | Mode$ TgtChoose | SorcerySpeed$ True | SpellDescription$ Each opponent discards a card. +A:AB$ Discard | Cost$ 3 B T | Defined$ Opponent | Mode$ TgtChoose | SorcerySpeed$ True | SpellDescription$ Each opponent discards a card. SVar:X:PlayerCountPlayers$CardsDiscardedThisTurn DeckHints:Ability$Discard DeckHas:Ability$Token & Type$Bird From 7148c0e4073bef3c8d13ddf9e742b792ec79796d Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 13:58:08 -0500 Subject: [PATCH 29/65] Update nemata_primeval_warden.txt --- forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt index 85dc4d31675..ee62de9123b 100644 --- a/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt +++ b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Treefolk PT:3/4 K:Reach R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidLKI$ Card.Creature+nonToken+OppCtrl | CheckSelfLKIZone$ True | ReplaceWith$ Exile | Description$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. -SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard | ConditionDefined$ ReplacedCard | ConditionPresent$ Card | SubAbility$ DBImmediateTrigger +SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard | SubAbility$ DBImmediateTrigger SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ TrigToken | TriggerDescription$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ g_1_1_saproling | TokenOwner$ You A:AB$ Pump | Cost$ G Sac<1/Saproling/a Saproling> | NumAtt$ +2 | NumDef$ +2 | AILogic$ Aristocrat | SpellDescription$ CARDNAME gets +2/+2 until end of turn. From efa81a38b2ec0e2f9f51d5c982757eba8cac6836 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:32:01 -0500 Subject: [PATCH 30/65] Update astor_bearer_of_blades.txt --- forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt b/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt index 8644c0deb6f..7a7f7ff4687 100644 --- a/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt +++ b/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Warrior PT:4/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top seven cards of your library. You may reveal an Equipment or Vehicle card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. SVar:TrigDig:DB$ Dig | DigNum$ 7 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Equipment,Vehicle | RestRandomOrder$ True | Reveal$ True -S:Mode$ Continuous | Affected$ Equipment.YouCtrl | AddKeyword$ Equip:0 | Description$ Equipment you control have equip {0}. +S:Mode$ Continuous | Affected$ Equipment.YouCtrl | AddKeyword$ Equip:1 | Description$ Equipment you control have equip {1}. S:Mode$ Continuous | Affected$ Vehicle.YouCtrl | AddKeyword$ Crew:1 | Description$ Vehicles you control have crew 1. DeckHints:Type$Equipment|Vehicle -Oracle:When Astor, Bearer of Blades enters the battlefield, look at the top seven cards of your library. You may reveal an Equipment or Vehicle card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nEquipment you control have equip {0}.\nVehicles you control have crew 1. +Oracle:When Astor, Bearer of Blades enters the battlefield, look at the top seven cards of your library. You may reveal an Equipment or Vehicle card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nEquipment you control have equip {1}.\nVehicles you control have crew 1. From 0ab91e8a15aa2e3ad070023a6b57fcfa9182d304 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:33:21 -0500 Subject: [PATCH 31/65] Update zur_eternal_schemer.txt --- forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt index c7fd3ee153d..bd5bc51e597 100644 --- a/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt +++ b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt @@ -7,4 +7,5 @@ S:Mode$ Continuous | Affected$ Creature.Enchantment+YouCtrl | AddKeyword$ Deatht A:AB$ Animate | Cost$ 1 W | ValidTgts$ Enchantment.nonAura+YouCtrl | TgtPrompt$ Select target non-Aura enchantment you control | Power$ X | Toughness$ X | Types$ Creature | Duration$ Permanent | SpellDescription$ Target non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. SVar:X:Targeted$CardManaCost DeckNeeds:Type$Enchantment +DeckHas:Ability$LifeGain Oracle:Flying\nEnchantment creatures you control have deathtouch, lifelink, and hexproof.\nTarget non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. From 63aace2ab4617fd28942455273781a0f7f9e17ad Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:35:45 -0500 Subject: [PATCH 32/65] Update squee_dubious_monarch.txt --- .../res/cardsfolder/upcoming/squee_dubious_monarch.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt b/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt index ec21bf2a6f9..69d6d5785c6 100644 --- a/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt +++ b/forge-gui/res/cardsfolder/upcoming/squee_dubious_monarch.txt @@ -3,8 +3,9 @@ ManaCost:2 R Types:Legendary Creature Goblin Noble PT:2/2 K:Haste -T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks, create a 1/1 red Golbin creature token that's tapped and attacking. -SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenTapped$ True | TokenAttacking$ True +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks, create a 1/1 red Goblin creature token that's tapped and attacking. +SVar:TrigToken:DB$ Token | TokenScript$ r_1_1_goblin | TokenTapped$ True | TokenAttacking$ True SVar:AltCost:Cost$ 3 R ExileFromGrave<4/Card.Other/other cards> | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its mana cost. DeckHas:Ability$Token|Graveyard & Type$Goblin -Oracle:Haste\nWhenever Squee, Dubious Monarch attacks, create a 1/1 red Golbin creature token that's tapped and attacking.\nYou may cast Squee, Dubious Monarch from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its mana cost. +SVar:HasAttackEffect:TRUE +Oracle:Haste\nWhenever Squee, Dubious Monarch attacks, create a 1/1 red Goblin creature token that's tapped and attacking.\nYou may cast Squee, Dubious Monarch from your graveyard by paying {3}{R} and exiling four other cards from your graveyard rather than paying its mana cost. From 99ab4cf189c66afc648042f72272985e58dbc418 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:36:51 -0500 Subject: [PATCH 33/65] Update solkanar_the_tainted.txt --- forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt index 7ad183cd28e..7efd7ff35f0 100644 --- a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt +++ b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt @@ -5,7 +5,7 @@ PT:5/5 T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your end step, ABILITY SVar:TrigCharm:DB$ Charm | Choices$ DrawPact,DrainPact,DamagePact,BetrayPact | ChoiceRestriction$ ThisGame | CharmNum$ 1 SVar:DrawPact:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. -SVar:DrainPact:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2 | SubAbility$ DBGainLife | SpellDescription$ Each opponent loses 2 life and you gain 2 life. +SVar:DrainPact:DB$ LoseLife | Defined$ Opponent | LifeAmount$ 2 | SubAbility$ DBGainLife | SpellDescription$ Each opponent loses 2 life and you gain 2 life. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 SVar:DamagePact:DB$ DealDamage | NumDmg$ 3 | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.Other,Planeswalker.Other | TgtPrompt$ Select up to one other target creature or planeswalker | SpellDescription$ CARDNAME deals 3 damage to up to one other target creature or planeswalker. SVar:BetrayPact:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBChooseOpp | RememberChanged$ True | SpellDescription$ Exile CARDNAME, then return it to the battlefield under an opponent's control. From fd81d0d7a86bdd104191132c7a2be6615ec841a2 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:45:10 -0500 Subject: [PATCH 34/65] Update zur_eternal_schemer.txt --- forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt index bd5bc51e597..c8a1a51a706 100644 --- a/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt +++ b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt @@ -4,8 +4,8 @@ Types:Legendary Creature Human Wizard PT:1/4 K:Flying S:Mode$ Continuous | Affected$ Creature.Enchantment+YouCtrl | AddKeyword$ Deathtouch & Lifelink & Hexproof | Description$ Enchantment creatures you control have deathtouch, lifelink, and hexproof. -A:AB$ Animate | Cost$ 1 W | ValidTgts$ Enchantment.nonAura+YouCtrl | TgtPrompt$ Select target non-Aura enchantment you control | Power$ X | Toughness$ X | Types$ Creature | Duration$ Permanent | SpellDescription$ Target non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. +A:AB$ Animate | Cost$ 1 W | ValidTgts$ Enchantment.nonAura+YouCtrl | TgtPrompt$ Select target non-Aura enchantment you control | Power$ X | Toughness$ X | Types$ Creature | Duration$ Permanent | StackDescription$ SpellDescription | SpellDescription$ Target non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. SVar:X:Targeted$CardManaCost DeckNeeds:Type$Enchantment DeckHas:Ability$LifeGain -Oracle:Flying\nEnchantment creatures you control have deathtouch, lifelink, and hexproof.\nTarget non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. +Oracle:Flying\nEnchantment creatures you control have deathtouch, lifelink, and hexproof.\n{1}{W}: Target non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. From 187acaf4a5419f2becf7a3373a1ce2c69fbab7ee Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:50:36 -0500 Subject: [PATCH 35/65] Update astor_bearer_of_blades.txt --- forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt b/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt index 7a7f7ff4687..b3d01d4df0b 100644 --- a/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt +++ b/forge-gui/res/cardsfolder/upcoming/astor_bearer_of_blades.txt @@ -6,5 +6,5 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigDig:DB$ Dig | DigNum$ 7 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Equipment,Vehicle | RestRandomOrder$ True | Reveal$ True S:Mode$ Continuous | Affected$ Equipment.YouCtrl | AddKeyword$ Equip:1 | Description$ Equipment you control have equip {1}. S:Mode$ Continuous | Affected$ Vehicle.YouCtrl | AddKeyword$ Crew:1 | Description$ Vehicles you control have crew 1. -DeckHints:Type$Equipment|Vehicle +DeckNeeds:Type$Equipment|Vehicle Oracle:When Astor, Bearer of Blades enters the battlefield, look at the top seven cards of your library. You may reveal an Equipment or Vehicle card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nEquipment you control have equip {1}.\nVehicles you control have crew 1. From 6cd5bee51cbc4b2f5e98ba469ae34d4eeb328456 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:55:23 -0500 Subject: [PATCH 36/65] Update nemata_primeval_warden.txt --- .../res/cardsfolder/upcoming/nemata_primeval_warden.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt index ee62de9123b..1567f42b337 100644 --- a/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt +++ b/forge-gui/res/cardsfolder/upcoming/nemata_primeval_warden.txt @@ -7,8 +7,8 @@ R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ G SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard | SubAbility$ DBImmediateTrigger SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ TrigToken | TriggerDescription$ If a nontoken creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ g_1_1_saproling | TokenOwner$ You -A:AB$ Pump | Cost$ G Sac<1/Saproling/a Saproling> | NumAtt$ +2 | NumDef$ +2 | AILogic$ Aristocrat | SpellDescription$ CARDNAME gets +2/+2 until end of turn. -A:AB$ Draw | Cost$ 1 B Sac<2/Saproling/two Saprolings> | Defined$ You | NumCards$ 1 +A:AB$ Pump | Cost$ G Sac<1/Saproling> | NumAtt$ +2 | NumDef$ +2 | AILogic$ Aristocrat | SpellDescription$ CARDNAME gets +2/+2 until end of turn. +A:AB$ Draw | Cost$ 1 B Sac<2/Saproling> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. DeckHints:Type$Saproling -DeckHas:Ability$Token +DeckHas:Ability$Token & Type$Saproling Oracle:Reach\nIf a creature an opponent controls would die, exile it instead. When you do, create a 1/1 green Saproling creature token.\n{G}, Sacrifice a Saproling: Nemata, Primeval Warden gets +2/+2 until end of turn.\n{1}{B}, Sacrifice two Saprolings: Draw a card. From 8c932d86d3f0cfe2dc290541037a15d3fb5e9bc4 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:56:54 -0500 Subject: [PATCH 37/65] Update sheoldred_the_apocalypse.txt --- forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt index 798e083b6fb..56c97204414 100644 --- a/forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt +++ b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_apocalypse.txt @@ -7,4 +7,5 @@ T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ T SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 T:Mode$ Drawn | ValidCard$ Card.OppCtrl | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever an opponent draws a card, they lose 2 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardController | LifeAmount$ 2 +DeckHas:Ability$LifeGain Oracle:Deathtouch\nWhenever you draw a card, you gain 2 life.\nWhenever an opponent draws a card, they lose 2 life. From 83918c2db7c078cac35f109e8f5d5cc4bb31caad Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:57:24 -0500 Subject: [PATCH 38/65] Update solkanar_the_tainted.txt --- forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt index 7efd7ff35f0..2da80f979f3 100644 --- a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt +++ b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt @@ -9,7 +9,7 @@ SVar:DrainPact:DB$ LoseLife | Defined$ Opponent | LifeAmount$ 2 | SubAbility$ DB SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 SVar:DamagePact:DB$ DealDamage | NumDmg$ 3 | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.Other,Planeswalker.Other | TgtPrompt$ Select up to one other target creature or planeswalker | SpellDescription$ CARDNAME deals 3 damage to up to one other target creature or planeswalker. SVar:BetrayPact:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBChooseOpp | RememberChanged$ True | SpellDescription$ Exile CARDNAME, then return it to the battlefield under an opponent's control. -SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent to give control to: | SubAbility$ MoveToPlay +SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ MoveToPlay SVar:MoveToPlay:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ Remembered | GainControl$ ChosenPlayer | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All From d9f066009c2a666396e578a7ed57fd10328a3495 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:58:01 -0500 Subject: [PATCH 39/65] Update solkanar_the_tainted.txt --- forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt index 2da80f979f3..14bf7a1634f 100644 --- a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt +++ b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt @@ -11,6 +11,6 @@ SVar:DamagePact:DB$ DealDamage | NumDmg$ 3 | TargetMin$ 0 | TargetMax$ 1 | Valid SVar:BetrayPact:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBChooseOpp | RememberChanged$ True | SpellDescription$ Exile CARDNAME, then return it to the battlefield under an opponent's control. SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ MoveToPlay SVar:MoveToPlay:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ Remembered | GainControl$ ChosenPlayer | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenPlayer$ True AI:RemoveDeck:All Oracle:At the beginning of your end step, choose one that hasn't been chosen —\n• Draw a card.\n• Each opponent loses 2 life and you gain 2 life.\n• Sol'Kanar the Tainted deals 3 damage to up to one other target creature or planeswalker.\n• Exile Sol'Kanar the Tainted, then return it to the battlefield under an opponent's control. From 8d244ce024d423321a51beabbdf7054236b74028 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:58:34 -0500 Subject: [PATCH 40/65] Update solkanar_the_tainted.txt --- forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt index 14bf7a1634f..d4f4a538fc7 100644 --- a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt +++ b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt @@ -12,5 +12,4 @@ SVar:BetrayPact:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubA SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ MoveToPlay SVar:MoveToPlay:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ Remembered | GainControl$ ChosenPlayer | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenPlayer$ True -AI:RemoveDeck:All Oracle:At the beginning of your end step, choose one that hasn't been chosen —\n• Draw a card.\n• Each opponent loses 2 life and you gain 2 life.\n• Sol'Kanar the Tainted deals 3 damage to up to one other target creature or planeswalker.\n• Exile Sol'Kanar the Tainted, then return it to the battlefield under an opponent's control. From ce49d02bc8f1de4a0ca51074a1e7341ef7a48f9d Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:59:49 -0500 Subject: [PATCH 41/65] Update zur_eternal_schemer.txt --- forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt index c8a1a51a706..5f047067baf 100644 --- a/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt +++ b/forge-gui/res/cardsfolder/upcoming/zur_eternal_schemer.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Wizard PT:1/4 K:Flying S:Mode$ Continuous | Affected$ Creature.Enchantment+YouCtrl | AddKeyword$ Deathtouch & Lifelink & Hexproof | Description$ Enchantment creatures you control have deathtouch, lifelink, and hexproof. -A:AB$ Animate | Cost$ 1 W | ValidTgts$ Enchantment.nonAura+YouCtrl | TgtPrompt$ Select target non-Aura enchantment you control | Power$ X | Toughness$ X | Types$ Creature | Duration$ Permanent | StackDescription$ SpellDescription | SpellDescription$ Target non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. +A:AB$ Animate | Cost$ 1 W | ValidTgts$ Enchantment.nonAura+YouCtrl | TgtPrompt$ Select target non-Aura enchantment you control | Power$ X | Toughness$ X | Types$ Creature | Duration$ Permanent | StackDescription$ {c:Targeted} becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. | SpellDescription$ Target non-Aura enchantment you control becomes a creature in addition to its other types and has base power and toughness each equal to its mana value. SVar:X:Targeted$CardManaCost DeckNeeds:Type$Enchantment DeckHas:Ability$LifeGain From 9d7aa0ca5ae2bf2e6e05b508be8ee1b2cf0033b6 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Fri, 19 Aug 2022 16:00:34 -0500 Subject: [PATCH 42/65] Update solkanar_the_tainted.txt --- forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt index d4f4a538fc7..82c79b10384 100644 --- a/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt +++ b/forge-gui/res/cardsfolder/upcoming/solkanar_the_tainted.txt @@ -12,4 +12,5 @@ SVar:BetrayPact:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubA SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ MoveToPlay SVar:MoveToPlay:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ Remembered | GainControl$ ChosenPlayer | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenPlayer$ True +DeckHas:Ability$LifeGain Oracle:At the beginning of your end step, choose one that hasn't been chosen —\n• Draw a card.\n• Each opponent loses 2 life and you gain 2 life.\n• Sol'Kanar the Tainted deals 3 damage to up to one other target creature or planeswalker.\n• Exile Sol'Kanar the Tainted, then return it to the battlefield under an opponent's control. From 48960411254b59fd95dc7806b7d42b5e72db9095 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 19 Aug 2022 17:03:41 -0400 Subject: [PATCH 43/65] codie_vociferous_codex.txt add Desc to static --- forge-gui/res/cardsfolder/c/codie_vociferous_codex.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/c/codie_vociferous_codex.txt b/forge-gui/res/cardsfolder/c/codie_vociferous_codex.txt index ee4aca18494..220fdd5ec63 100644 --- a/forge-gui/res/cardsfolder/c/codie_vociferous_codex.txt +++ b/forge-gui/res/cardsfolder/c/codie_vociferous_codex.txt @@ -7,7 +7,7 @@ A:AB$ Mana | Cost$ 4 T | Produced$ W U B R G | SubAbility$ DBTrigger | SpellDesc SVar:DBTrigger:DB$ DelayedTrigger | Mode$ SpellCast | ValidActivatingPlayer$ You | ThisTurn$ True | Execute$ DBDig | TriggerDescription$ When you cast your next spell this turn, exile cards from the top of your library until you exile an instant or sorcery card with lesser mana value. Until end of turn, you may cast that card without paying its mana cost. Put each other card exiled this way on the bottom of your library in a random order. SVar:DBDig:DB$ DigUntil | Defined$ You | Valid$ Instant.cmcLTX,Sorcery.cmcLTX | FoundDestination$ Exile | RevealedDestination$ Exile | RememberRevealed$ True | ImprintFound$ True | SkipReorder$ True | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ MayPlay | RememberObjects$ Imprinted | ForgetOnMoved$ Exile | SubAbility$ DBRestRandomOrder -SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | EffectZone$ Command | AffectedZone$ Exile +SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | EffectZone$ Command | AffectedZone$ Exile | Description$ Until end of turn, you may cast that card without paying its mana cost. SVar:DBRestRandomOrder:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Exile | Destination$ Library | LibraryPosition$ -1 | RandomOrder$ True SVar:X:TriggeredCard$CardManaCost AI:RemoveDeck:Random From 5a874310dc1b966fddf37740d19bb73536009fd1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 19 Aug 2022 17:03:54 -0400 Subject: [PATCH 44/65] garruk_wrath_of_the_wilds.txt streamline, add AI hints --- forge-gui/res/cardsfolder/g/garruk_wrath_of_the_wilds.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/g/garruk_wrath_of_the_wilds.txt b/forge-gui/res/cardsfolder/g/garruk_wrath_of_the_wilds.txt index eec1d3c1c43..9369943e736 100644 --- a/forge-gui/res/cardsfolder/g/garruk_wrath_of_the_wilds.txt +++ b/forge-gui/res/cardsfolder/g/garruk_wrath_of_the_wilds.txt @@ -3,10 +3,11 @@ ManaCost:2 G G Types:Legendary Planeswalker Garruk Loyalty:4 A:AB$ ChooseCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose up to one creature card in your hand | Amount$ 1 | SubAbility$ DBEffect | StackDescription$ SpellDescription | SpellDescription$ Choose a creature card in your hand. It perpetually gets +1/+1 and perpetually gains "This spell costs {1} less to cast." -SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility,PerpetualP1P1 | Duration$ Permanent | Name$ Garruk, Wrath of the Wilds's Perpetual Effect | SubAbility$ DBCleanup -SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.ChosenCard | AddStaticAbility$ ReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +1/+1 and perpetually gains "This spell costs {1} less to cast." -SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Secondary$ True +SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Name$ Garruk, Wrath of the Wilds's Perpetual Effect | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | AddStaticAbility$ ReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +1/+1 and perpetually gains "This spell costs {1} less to cast." SVar:ReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True A:AB$ Draft | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Spellbook$ Mosscoat Goriak,Sylvan Brushstrider,Murasa Rootgrazer,Dire Wolf Prowler,Ferocious Pup,Pestilent Wolf,Garruk's Uprising,Dawntreader Elk,Nessian Hornbeetle,Territorial Scythecat,Trufflesnout,Wary Okapi,Scurrid Colony,Barkhide Troll,Underdark Basilisk | Zone$ Battlefield | SpellDescription$ Draft a card from CARDNAME's spellbook and put it onto the battlefield. A:AB$ PumpAll | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidCards$ Creature.YouCtrl | NumAtt$ +3 | NumDef$ +3 | KW$ Trample | SpellDescription$ Until end of turn, creatures you control get +3/+3 and gain trample. +DeckHas:Type$Troll|Elk|Wolf|Beast|Insect|Squirrel|Boar|Basilisk|Antelope & Ability$Sacrifice|Counters|LifeGain Oracle:[+1]: Choose a creature card in your hand. It perpetually gets +1/+1 and perpetually gains "This spell costs {1} less to cast."\n[-1]: Draft a card from Garruk, Wrath of the Wild's spellbook and put it onto the battlefield.\n[-6]: Until end of turn, creatures you control get +3/+3 and gain trample. From 4ff2ec4ca9718902e43ba228c7a70ba9812c7838 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Fri, 19 Aug 2022 22:58:55 +0100 Subject: [PATCH 45/65] Post the Enchanter --- forge-gui/res/editions/Celebration Cards.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/editions/Celebration Cards.txt b/forge-gui/res/editions/Celebration Cards.txt index d367ef3169e..00d20b75c88 100644 --- a/forge-gui/res/editions/Celebration Cards.txt +++ b/forge-gui/res/editions/Celebration Cards.txt @@ -13,3 +13,4 @@ ScryfallCode=PCEL 5 R Fraternal Exaltation @Susan Garfield 6 M Robot Chicken @Robot Chicken 7 M Phoenix Heart @Drew Tucker +8 R Zur the Enchanter @Chase Stone From 90c006e2415ff09b215abe2ad051d8929f864eee Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Fri, 19 Aug 2022 23:39:07 +0100 Subject: [PATCH 46/65] Update The List (PLIST) for CLB --- forge-gui/res/editions/The List.txt | 73 +++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/forge-gui/res/editions/The List.txt b/forge-gui/res/editions/The List.txt index b4c2dc672ba..42ab8fa9990 100644 --- a/forge-gui/res/editions/The List.txt +++ b/forge-gui/res/editions/The List.txt @@ -747,3 +747,76 @@ F567 R Puresteel Angel @Lukas Litzsinger 739 R Treasury Thrull @Mark Zug 740 R Wasitora, Nekoru Queen @Cynthia Sheppard 741 M Zacama, Primal Calamity @Jaime Jones +742 R Alabaster Dragon @Ted Naifeh +743 U Archway Angel @Milivoj Ćeran +744 R Fountain Watch @Jeff Miracola +745 R Ghostway @Jim Murray +746 R Loxodon Gatekeeper @Carl Critchlow +747 U Nova Cleric @Alan Pollack +748 R Paladin en-Vec @Dave Kendall +749 R Pentarch Paladin @Jim Murray +750 R Puresteel Paladin @Jason Chan +751 R Ranger of Eos @Volkan Baǵa +752 U Treasure Hunter @Adam Rex +753 R Aura Thief @Ron Spears +754 U Broodbirth Viper @Mathias Kollros +755 R Cloud Dragon @John Avon +756 R Curse of Echoes @Slawomir Maniak +757 U Ominous Seas @Vincent Proce +758 C Opal Lake Gatekeepers @Seb McKinnon +759 R Plea for Power @John Severin Brassell +760 R Quicksilver Dragon @Ron Spencer +761 C Sea Gate Oracle @Daniel Ljunggren +762 R Search the City @Jack Wang +763 R Serendib Sorcerer @Dan Scott +764 R Sunder @Stephen Daniele +765 U Wizard Class @Marta Nael +766 U Wizard's Retort @Grzegorz Rutkowski +767 M Demon of Death's Gate @Vance Kovacs +768 R Endrek Sahr, Master Breeder @Mark Tedin +769 R Kederekt Parasite @Dan Scott +770 M Lolth, Spider Queen @Tyler Jacobson +771 U Pitiless Plunderer @David Palumbo +772 R Quest for the Nihil Stone @Mike Bierek +773 R Repay in Kind @Vance Kovacs +774 R Volrath's Dungeon @Stephen Daniele +775 C Dragon's Approach @Andrew Mar +776 U Dragon's Rage Channeler @Martina Fackova +777 M Goldspan Dragon @Andrew Mar +778 R Lathliss, Dragon Queen @Alex Konstad +779 U Magic Missile @PINDURSKI +780 U Thundering Sparkmage @Billy Christian +781 R Worldgorger Dragon @Wayne England +782 U Devoted Druid @Kimonas Theodossiou +783 U Druid's Call @Greg Hildebrandt +784 U Edgewall Innkeeper @Matt Stewart +785 R Gilt-Leaf Archdruid @Steve Prescott +786 M Old Gnawbone @Filip Burburan +787 U Scryb Ranger @Rebecca Guay +788 R Silvos, Rogue Elemental @Carl Critchlow +789 U Tireless Provisioner @Josu Hernaiz +790 U Clutch of the Undercity @Pete Venters +791 U Forging the Tyrite Sword @Kieran Yanner +792 U Invade the City @Sung Choi +793 U Krydle of Baldur's Gate @Jeff Dee +794 R Linvala, Shield of Sea Gate @Wayne Reynolds +795 M Minsc, Beloved Ranger @Howard Lyon +796 U Risen Reef @Johan Grenier +797 U Spoils of Adventure @Zezhou Chen +798 M Tiamat @Chris Rahn +799 C Yavimaya Barbarian @Don Hazeltine +800 C Shield of the Oversoul @Steven Belledin +801 U Bucknard's Everfull Purse @Joe Slucher +802 R Clockwork Dragon @Arnie Swekel +803 U Component Pouch @Chris Seaman +804 U Fifty Feet of Rope @Andrew Mar +805 U Kite Shield @Jim Pavelec +806 C Leather Armor @Martina Pilcerova +807 U Lucky Clover @John Stanko +808 C Mimic @Diesel +809 R Pariah's Shield @Doug Chaffee +810 R Sword of the Chosen @Adam Rex +811 U Barbarian Ring @John Avon +812 R Forsaken City @Dana Knutson +813 M Maze's End @Cliff Childs +814 U Underdark Rift @Chris Ostrowski From e976fd25c7833d38065342c36730ab3c5965fe31 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 19 Aug 2022 20:31:23 -0400 Subject: [PATCH 47/65] baird_argivian_recruiter.txt --- .../cardsfolder/upcoming/baird_argivian_recruiter.txt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/baird_argivian_recruiter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/baird_argivian_recruiter.txt b/forge-gui/res/cardsfolder/upcoming/baird_argivian_recruiter.txt new file mode 100644 index 00000000000..0b63d9f4dba --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/baird_argivian_recruiter.txt @@ -0,0 +1,9 @@ +Name:Baird, Argivian Recruiter +ManaCost:R W +Types:Legendary Creature Human Soldier +PT:2/2 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | IsPresent$ Creature.YouCtrl+powerGTbasePower | TriggerDescription$ At the beginning of your end step, if you control a creature with power greater than its base power, create a 1/1 white Soldier creature token. +SVar:TrigToken:DB$ Token | TokenScript$ w_1_1_soldier +DeckHas:Ability$Token +AI:RemoveDeck:Random +Oracle:At the beginning of your end step, if you control a creature with power greater than its base power, create a 1/1 white Soldier creature token. From c59c0b82b8603c0be7863e9d63131a2d55d512ad Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 19 Aug 2022 20:31:53 -0400 Subject: [PATCH 48/65] CardProperty.cardHasProperty "powerGTbasePower" --- forge-game/src/main/java/forge/game/card/CardProperty.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index a8de2c51e0f..9a703130bc8 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -1391,6 +1391,10 @@ public class CardProperty { if (card.getNetPower() <= card.getNetToughness()) { return false; } + } else if (property.equals("powerGTbasePower")) { + if (card.getNetPower() <= card.getCurrentPower()) { + return false; + } } else if (property.equals("powerLTtoughness")) { if (card.getNetPower() >= card.getNetToughness()) { return false; From 2599165433ae63592af01a17966ff1ac1c00dcb7 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 19 Aug 2022 21:22:28 -0400 Subject: [PATCH 49/65] growing_rites_of_itlimoc_itlimoc_cradle_of_the_sun.txt use IsPresent --- .../g/growing_rites_of_itlimoc_itlimoc_cradle_of_the_sun.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/g/growing_rites_of_itlimoc_itlimoc_cradle_of_the_sun.txt b/forge-gui/res/cardsfolder/g/growing_rites_of_itlimoc_itlimoc_cradle_of_the_sun.txt index fa6477931d0..82d0825e5bc 100644 --- a/forge-gui/res/cardsfolder/g/growing_rites_of_itlimoc_itlimoc_cradle_of_the_sun.txt +++ b/forge-gui/res/cardsfolder/g/growing_rites_of_itlimoc_itlimoc_cradle_of_the_sun.txt @@ -3,9 +3,8 @@ ManaCost:2 G Types:Legendary Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top four cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order. SVar:TrigDig:DB$ Dig | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBTransform | CheckSVar$ NumCres | SVarCompare$ GE4 | TriggerDescription$ At the beginning of your end step, if you control four or more creatures, transform CARDNAME. -SVar:DBTransform:DB$ SetState | Defined$ Self | Mode$ Transform -SVar:NumCres:Count$Valid Creature.YouCtrl+inZoneBattlefield +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBTransform | IsPresent$ Creature.YouCtrl | PresentCompare$ GE4 | TriggerDescription$ At the beginning of your end step, if you control four or more creatures, transform CARDNAME. +SVar:DBTransform:DB$ SetState | Mode$ Transform AlternateMode:DoubleFaced Oracle:When Growing Rites of Itlimoc enters the battlefield, look at the top four cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order.\nAt the beginning of your end step, if you control four or more creatures, transform Growing Rites of Itlimoc. From 37479b109d7dae14e58fe5571ca0180d179c4793 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 19 Aug 2022 22:56:51 -0400 Subject: [PATCH 50/65] kaito_shizuki.txt improve AI and Oracle --- forge-gui/res/cardsfolder/k/kaito_shizuki.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/k/kaito_shizuki.txt b/forge-gui/res/cardsfolder/k/kaito_shizuki.txt index e69bc1304a8..deaabce144d 100644 --- a/forge-gui/res/cardsfolder/k/kaito_shizuki.txt +++ b/forge-gui/res/cardsfolder/k/kaito_shizuki.txt @@ -11,5 +11,5 @@ A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | TokenScript$ u_ A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Stackable$ False | Name$ Emblem - Kaito Shizuki | Image$ emblem_kaito_shizuki | Triggers$ TrigDamage | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever a creature you control deals combat damage to a player, search your library for a blue or black creature card, put it onto the battlefield, then shuffle." SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ EmblemTrigChangeZone | TriggerZones$ Command | TriggerDescription$ Whenever a creature you control deals combat damage to a player, search your library for a blue or black creature card, put it onto the battlefield, then shuffle. SVar:EmblemTrigChangeZone:DB$ ChangeZone | ChangeType$ Creature.Blue,Creature.Black | ChangeNum$ 1 | Origin$ Library | Destination$ Battlefield | ShuffleNonMandatory$ True -DeckHas:Ability$Token -Oracle:At the beginning of your end step, if Kaito Shizuki entered the battlefield this turn, he phases out.\n+1: Draw a card. Then discard a card unless you attacked this turn.\n-2: Create a 1/1 blue Ninja creature token with "This creature can't be blocked."\n-7: You get an emblem with "Whenever a creature you control deals combat damage to a player, search your library for a blue or black creature card, put it onto the battlefield, then shuffle." +DeckHas:Ability$Discard|Token & Type$Ninja +Oracle:At the beginning of your end step, if Kaito Shizuki entered the battlefield this turn, he phases out.\n[+1]: Draw a card. Then discard a card unless you attacked this turn.\n[-2]: Create a 1/1 blue Ninja creature token with "This creature can't be blocked."\n[-7]: You get an emblem with "Whenever a creature you control deals combat damage to a player, search your library for a blue or black creature card, put it onto the battlefield, then shuffle." From 53e1e55c1475ab65c72208c15af90c14b466d412 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 20 Aug 2022 12:22:44 +0800 Subject: [PATCH 51/65] update textratypist --- forge-gui/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/pom.xml b/forge-gui/pom.xml index 8b6a752f2f7..7a2288737a9 100644 --- a/forge-gui/pom.xml +++ b/forge-gui/pom.xml @@ -43,7 +43,7 @@ com.github.tommyettinger textratypist - 2f773002a8 + 0.7.1 com.github.tommyettinger From c65ca778cff5c8c4cbc3197da72fa11d5a276bbd Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Sat, 20 Aug 2022 10:49:30 +0100 Subject: [PATCH 52/65] Fix PLG22 edition --- forge-gui/res/editions/Love Your LGS 2022.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/forge-gui/res/editions/Love Your LGS 2022.txt b/forge-gui/res/editions/Love Your LGS 2022.txt index 83cc433729b..e6a9df5d4be 100644 --- a/forge-gui/res/editions/Love Your LGS 2022.txt +++ b/forge-gui/res/editions/Love Your LGS 2022.txt @@ -7,7 +7,3 @@ ScryfallCode=PLG22 [cards] 1 R Sol Ring @Mike Bierek -P1 M Moraug, Fury of Akoum @Rudy Siswanto -P2 M Ox of Agonas @Lie Setiawan -P3 M Angrath, the Flame-Chained @Song Qijin -P4 R Tahngarth, First Mate @Song Qijin From cf59db94ff1eb9873405cada69a0e1769fbf5054 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Sat, 20 Aug 2022 11:42:22 +0100 Subject: [PATCH 53/65] DMU & DMC edition updates --- .../editions/Dominaria United Commander.txt | 39 ++++++++++++++ forge-gui/res/editions/Dominaria United.txt | 52 +++++++++++++++++++ 2 files changed, 91 insertions(+) diff --git a/forge-gui/res/editions/Dominaria United Commander.txt b/forge-gui/res/editions/Dominaria United Commander.txt index a2ad18df0c6..c2bcd6c6b0b 100644 --- a/forge-gui/res/editions/Dominaria United Commander.txt +++ b/forge-gui/res/editions/Dominaria United Commander.txt @@ -8,15 +8,40 @@ ScryfallCode=DMC [cards] 1 M Dihada, Binder of Wills @Nestor Ossandon Leal 2 M Jared Carthalion @Manuel Castañón +3 M Jenson Carthalion, Druid Exile @Livia Prima +4 M Shanid, Sleepers' Scourge @Ryan Pancoast +5 R Zeriam, Golden Wind @John Tedrick +6 R Moira, Urborg Haunt @Marta Nael +7 R Mana Cannons @Sidharth Chaturvedi +8 R The Reaver Cleaver @Yigit Koroglu +9 R Bladewing, Deathless Tyrant @Antonio José Manzanedo +10 R Cadric, Soul Kindler @Joseph Weston +11 R Fallaji Wayfarer @Victor Adame Minguez +12 R Iridian Maelstrom @Justyna Gil +13 R Primeval Spawn @Filip Burburan +14 R Two-Headed Hellkite @Fajareka Setiawan +15 R Unite the Coalition @Nestor Ossandon Leal +16 R Verrak, Warped Sengir @Alix Branwyn +17 R Gerrard's Hourglass Pendant @Sam Burley +18 R Obsidian Obelisk @Andrew Mar +19 R The Peregrine Dynamo @Zoltan Boros +20 R Tiller Engine @Alexander Mokhov +29 R Ayesha Tanaka, Armorer @Aurore Folny 30 R The Ever-Changing 'Dane @Campbell White 31 U General Marhault Elsdragon @Heonhwa Choe 32 R Hazezon, Shaper of Sand @Bryan Sola 33 U Jasmine Boreal of the Seven @Bastien L. Deharme 34 M Jedit Ojanen, Mercenary @Ilse Gort +37 R Orca, Siege Demon @Daarken 38 U Ramirez DePietro, Pillager @Anna Steinbauer 39 R Ramses, Assassin Lord @Manuel Castañón +40 R Rasputin, the Oneiromancer @Matt Stewart 41 R Rohgahh, Kher Keep Overlord @Chris Seaman +44 M Tetsuo, Imperial Champion @Lius Lasahido 46 U Tor Wauki the Younger @Karl Kopinski +47 M Torsten, Founder of Benalia @Volkan Baǵa +51 R Ayesha Tanaka, Armorer @Aurore Folny +52 R The Ever-Changing 'Dane @Campbell White 54 R Hazezon, Shaper of Sand @Bryan Sola 55 U Jasmine Boreal of the Seven @Bastien L. Deharme 56 M Jedit Ojanen, Mercenary @Ilse Gort @@ -24,7 +49,21 @@ ScryfallCode=DMC 61 R Ramses, Assassin Lord @Manuel Castañón 64 R Stangg, Echo Warrior @Randy Vargas 65 M Sivitri, Dragon Master @Livia Prima +66 M Tetsuo, Imperial Champion @Lius Lasahido 68 U Tor Wauki the Younger @Karl Kopinski +69 M Torsten, Founder of Benalia @Volkan Baǵa +104 U Path to Exile @Todd Lockwood +127 C Thrill of Possibility @Izzy +143 R Baleful Strix @Nils Hamm +149 R Faeburrow Elder @Raoul Vitale +159 M Maelstrom Nexus @Steven Belledin +163 M Nethroi, Apex of Death @Slawomir Maniak +164 M O-Kagachi, Vengeful Kami @Daarken +169 M Surrak Dragonclaw @Jaime Jones +197 U Bad River @Nils Hamm +202 R Cascading Cataracts @Paul Scott Canavan +206 R Crystal Quarry @Alan Pollack +220 R Murmuring Bosk @John Avon [tokens] rgw_1_1_sand_warrior diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index 663e4577876..b9e3be0e180 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -12,41 +12,89 @@ ScryfallCode=DMU 8 C Benalish Sleeper @Josu Hernaiz 10 C Charismatic Vanguard @David Palumbo 19 R Guardian of New Benalia @Ernanda Souza +21 U Join Forces @Aurore Folny +26 C Mesa Cavalier @David Palumbo 29 U Resolute Reinforcements @Billy Christian +31 C Samite Herbalist @Alessandra Pisano 33 U Shalai's Acolyte @Zara Alfonso +34 C Stall for Time @Ryan Alexander Lee +35 C Take Up the Shield @Manuel Castañón 46 R Defiler of Dreams @Ryan Pancoast +51 U Frostfist Strider @Francisco Miyara 54 C Impede Momentum @Igor Kieryluk 57 U Micromancer @Ernanda Souza 59 R The Phasing of Zhalfir @LA Draws +67 M Sphinx of Clear Skies @Valera Lutfullina +71 C Tolarian Geyser @Olivier Bernard +72 C Tolarian Terror @Vincent Christiaens +74 C Voda Sea Scavenger @Uriah Voth +77 C Volshe Tideturner @Tia Masic +79 U Balduvian Atrocity @Mike Jordana 84 R Braids, Arisen Nightmare @Heonhwa Choe +89 U Cut Down @Dominik Mayer 93 R Evolved Sleeper @Jason A. Engle 97 M Liliana of the Veil @Martina Fackova 103 R The Raven Man @Chris Rahn +104 U Sengir Connoisseur @Irina Nordsol 107 M Sheoldred, the Apocalypse @Chris Rahn +111 C Tattered Apparition @Jason A. Engle +112 C Toxic Abomination @Igor Kieryluk +114 C Urborg Repossession @Cristi Balanescu +115 C Writhing Necromass @Campbell White +117 R Chaotic Transformation @Joseph Meehan 133 M Jaya, Fiery Negotiator @Marta Nael +135 R Keldon Flamesage @Jason A. Engle 137 C Lightning Strike @Marta Nael +139 C Molten Monstrosity @Manuel Castañón 141 R Radha's Firebrand @Ângelo Bortolini 143 M Shivan Devastator @Brent Hollowell 146 R Squee, Dubious Monarch @Zoltan Boros 147 R Temporal Firestorm @Nestor Ossandon Leal +150 C Viashino Branchrider @Andrew Mar +152 C Yavimaya Steelcrusher @Gabor Szikszai +160 R Defiler of Vigor @Chase Stone 170 R Llanowar Loamspeaker @Zara Alfonso +172 C Magnigoth Sentry @Dave Kendall 174 U Nishoba Brawler @Valera Lutfullina +176 C Scout the Wilderness @A. M. Sartor +179 C Snarespinner @Michele Giorgi 184 U Territorial Maro @Simon Dominic +185 R Threats Undetected @Randy Vargas +187 C Vineshaper Prodigy @Inka Schulz 189 M The World Spell @Adam Paquette 192 M Ajani, Sleeper Agent @Matt Stewart 194 R Astor, Bearer of Blades @Josh Hass 202 R Jhoira, Ageless Innovator @Justyna Gil +208 U Najal, the Storm Runner @PINDURSKI 209 R Nemata, Primeval Warden @Andrew Mar 212 U Raff, Weatherlight Stalwart @Eelis Kyttanen +218 M Shanna, Purifying Blade @Magali Villeneuve 219 M Sol'Kanar the Tainted @Filip Burburan 220 M Soul of Windgrace @Liiga Smilshkalne +223 U Tori D'Avenant, Fury Rider @Anna Podedworna 228 M Zur, Eternal Schemer @Jesper Ejsing +230 R Golden Argosy @Daniel Ljunggren 243 R Adarkar Wastes @Piotr Dura 244 R Caves of Koilos @Julian Kok Joon Wen 250 R Karplusan Forest @Sam Burley 255 R Shivan Reef @Andrew Mar 256 R Sulfurous Springs @Bruce Brenneise 261 R Yavimaya Coast @Jesper Ejsing +262 L Plains @Lorenzo Lanfranconi +263 L Plains @Seb McKinnon +264 L Plains @Johannes Voss +265 L Island @Seb McKinnon +266 L Island @James Paick +267 L Island @Johannes Voss +268 L Swamp @Seb McKinnon +269 L Swamp @Mark Poole +270 L Swamp @Johannes Voss +271 L Mountain @Titus Lunter +272 L Mountain @Seb McKinnon +273 L Mountain @Johannes Voss +274 L Forest @Seb McKinnon +275 L Forest @Johannes Voss +276 L Forest @Darek Zabrocki 277 L Plains @Magali Villeneuve 278 L Island @Magali Villeneuve 279 L Swamp @Magali Villeneuve @@ -56,6 +104,7 @@ ScryfallCode=DMU 289 R The Raven Man @David Curtis 290 M Sheoldred, the Apocalypse @Joe Esposito 291 R Squee, Dubious Monarch @Daniel Lieske +292 U Aron, Benalia's Ruin @Jody Clark 293 R Astor, Bearer of Blades @Ivan Shavrin 301 R Jhoira, Ageless Innovator @Lisa Heidhoff 308 R Nemata, Primeval Warden @Bastien Grivet @@ -66,6 +115,7 @@ ScryfallCode=DMU 330 R The Raven Man @David Curtis 331 M Sheoldred, the Apocalypse @Joe Esposito 332 R Squee, Dubious Monarch @ +358 M Shanna, Purifying Blade @Jody Clark 369 M Sheoldred, the Apocalypse @Chris Rahn 370 M Ajani, Sleeper Agent @Victor Adame Minguez 371 M Ajani, Sleeper Agent @Victor Adame Minguez @@ -83,6 +133,8 @@ ScryfallCode=DMU 386 R Guardian of New Benalia @Ernanda Souza 396 M Sphinx of Clear Skies @Valera Lutfullina 402 R Evolved Sleeper @Jason A. Engle +405 R Chaotic Transformation @Joseph Meehan +407 R Keldon Flamesage @Jason A. Engle 410 M Shivan Devastator @Brent Hollowell 411 R Temporal Firestorm @Nestor Ossandon Leal 416 R Llanowar Loamspeaker @Zara Alfonso From 652d91dd7abe69114a764fb7b72b14d932512f76 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Sat, 20 Aug 2022 12:38:57 +0100 Subject: [PATCH 54/65] Update archived formats for DMU --- forge-gui/res/formats/Archived/Alchemy/2022-09-01.txt | 6 ++++++ .../res/formats/Archived/Arena Standard/2022-09-01.txt | 6 ++++++ forge-gui/res/formats/Archived/Explorer/2022-09-01.txt | 8 ++++++++ forge-gui/res/formats/Archived/Historic/2022-09-01.txt | 7 +++++++ forge-gui/res/formats/Archived/Legacy/2022-09-09.txt | 8 ++++++++ forge-gui/res/formats/Archived/Modern/2022-09-09.txt | 7 +++++++ forge-gui/res/formats/Archived/Pioneer/2022-09-09.txt | 7 +++++++ forge-gui/res/formats/Archived/Standard/2022-09-09.txt | 6 ++++++ forge-gui/res/formats/Archived/Vintage/2022-09-09.txt | 9 +++++++++ 9 files changed, 64 insertions(+) create mode 100644 forge-gui/res/formats/Archived/Alchemy/2022-09-01.txt create mode 100644 forge-gui/res/formats/Archived/Arena Standard/2022-09-01.txt create mode 100644 forge-gui/res/formats/Archived/Explorer/2022-09-01.txt create mode 100644 forge-gui/res/formats/Archived/Historic/2022-09-01.txt create mode 100644 forge-gui/res/formats/Archived/Legacy/2022-09-09.txt create mode 100644 forge-gui/res/formats/Archived/Modern/2022-09-09.txt create mode 100644 forge-gui/res/formats/Archived/Pioneer/2022-09-09.txt create mode 100644 forge-gui/res/formats/Archived/Standard/2022-09-09.txt create mode 100644 forge-gui/res/formats/Archived/Vintage/2022-09-09.txt diff --git a/forge-gui/res/formats/Archived/Alchemy/2022-09-01.txt b/forge-gui/res/formats/Archived/Alchemy/2022-09-01.txt new file mode 100644 index 00000000000..54c0c166a08 --- /dev/null +++ b/forge-gui/res/formats/Archived/Alchemy/2022-09-01.txt @@ -0,0 +1,6 @@ +[format] +Name:Alchemy (DMU) +Type:Archived +Subtype:Arena +Effective:2022-09-01 +Sets:ANA, ANB, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, DMU diff --git a/forge-gui/res/formats/Archived/Arena Standard/2022-09-01.txt b/forge-gui/res/formats/Archived/Arena Standard/2022-09-01.txt new file mode 100644 index 00000000000..951b6d7f06f --- /dev/null +++ b/forge-gui/res/formats/Archived/Arena Standard/2022-09-01.txt @@ -0,0 +1,6 @@ +[format] +Name:Arena Standard (DMU) +Type:Archived +Subtype:Arena +Effective:2022-09-01 +Sets:MID, VOW, NEO, SNC, DMU diff --git a/forge-gui/res/formats/Archived/Explorer/2022-09-01.txt b/forge-gui/res/formats/Archived/Explorer/2022-09-01.txt new file mode 100644 index 00000000000..28cfe2a0c48 --- /dev/null +++ b/forge-gui/res/formats/Archived/Explorer/2022-09-01.txt @@ -0,0 +1,8 @@ +[format] +Name:Explorer (DMU) +Type:Archived +Subtype:Arena +Effective:2022-09-01 +Sets:XLN, RIX, DOM, M19, GRN, G18, RNA, WAR, M20, ELD, THB, IKO, M21, ZNR, KHM, STX, AFR, MID, VOW, NEO, SNC, EA1, DMU +Banned:Expressive Iteration; Field of the Dead; Kethis, the Hidden Hand; Leyline of Abundance; Lurrus of the Dream-Den; Nexus of Fate; Oko, Thief of Crowns; Once Upon a Time; Teferi, Time Raveler; Tibalt's Trickery; Underworld Breach; Uro, Titan of Nature's Wrath; Veil of Summer; Wilderness Reclamation; Winota, Joiner of Forces +Additional:Abandoned Sarcophagus; Abzan Battle Priest; Abzan Falconer; Accursed Horde; Adaptive Snapjaw; Adorned Pouncer; Aerial Guide; Aerial Responder; Aeronaut Admiral; Aether Chaser; Aether Hub; Aether Inspector; Aether Meltdown; Aether Poisoner; Aether Swooper; Aether Theorist; Aether Tradewinds; Aetherborn Marauder; Aetherflux Reservoir; Aethersphere Harvester; Aetherstorm Roc; Aetherstream Leopard; Aethertorch Renegade; Aetherworks Marvel; Ahn-Crop Champion; Ahn-Crop Crasher; Ainok Bond-Kin; Airdrop Aeronauts; Ajani Unyielding; Alchemist's Greeting; Alley Evasion; Alley Strangler; Ammit Eternal; Ancestral Statue; Ancient Crab; Angel of Invention; Angel of Sanctions; Angel of the God-Pharaoh; Angelic Edict; Angelic Purge; Anger of the Gods; Animation Module; Anointed Procession; Anointer Priest; Appeal // Authority; Appetite for the Unnatural; Approach of the Second Sun; Arborback Stomper; Archfiend of Ifnir; Armorcraft Judge; As Foretold; Assassin's Strike; Assault Formation; Asylum Visitor; Atarka's Command; Attune with Aether; Audacious Infiltrator; Auger Spree; Authority of the Consuls; Aven Initiate; Aven Mindcensor; Aven of Enduring Hope; Aven Wind Guide; Aviary Mechanic; Awaken the Bear; Baleful Ammit; Ballista Charger; Baral, Chief of Compliance; Baral's Expertise; Barrage of Expendables; Barricade Breaker; Bastion Mastodon; Bathe in Dragonfire; Battering Krasis; Battlefield Scavenger; Belligerent Sliver; Beneath the Sands; Binding Mummy; Bitterbow Sharpshooters; Black Cat; Blessed Spirits; Blighted Bat; Blood Host; Bloodbond Vampire; Bloodhunter Bat; Bloodlust Inciter; Bloodrage Brawler; Blooming Marsh; Blossoming Defense; Blur of Blades; Blur Sliver; Bogbrew Witch; Bomat Bazaar Barge; Bomat Courier; Bonded Construct; Bone Picker; Bonescythe Sliver; Bontu the Glorified; Bontu's Last Reckoning; Bontu's Monument; Borderland Marauder; Borderland Minotaur; Boros Elite; Botanical Sanctum; Brain Maggot; Breaching Hippocamp; Bred for the Hunt; Bristling Hydra; Brushstrider; Brute Strength; Bubbling Cauldron; Built to Last; Built to Smash; Burning-Fist Minotaur; Burning-Tree Emissary; By Force; Canyon Slough; Carrier Thrall; Cartouche of Ambition; Cartouche of Knowledge; Cartouche of Solidarity; Cartouche of Strength; Cartouche of Zeal; Cascading Cataracts; Cast Out; Cataclysmic Gearhulk; Cathar's Companion; Cemetery Recruitment; Censor; Ceremonious Rejection; Champion of Rhonas; Champion of Wits; Chandra, Pyromaster; Chandra, Torch of Defiance; Chandra's Defeat; Chandra's Revolution; Charging Badger; Chief of the Foundry; Cinder Elemental; Claim // Fame; Cloudblazer; Cogworker's Puzzleknot; Collateral Damage; Collected Company; Combat Celebrant; Combustible Gearhulk; Commencement of Festivities; Commit // Memory; Compelling Argument; Compulsory Rest; Concealed Courtyard; Confiscation Coup; Consign // Oblivion; Consulate Skygate; Consulate Turret; Contraband Kingpin; Conviction; Coralhelm Guide; Corpse Hauler; Countervailing Winds; Countless Gears Renegade; Creeping Mold; Crested Sunmare; Crocanura; Crocodile of the Crossing; Crow of Dark Tidings; Cruel Reality; Crux of Fate; Crypt of the Eternals; Cryptbreaker; Cryptic Serpent; Cultivator's Caravan; Curator of Mysteries; Cut // Ribbons; Dance with Devils; Daredevil Dragster; Daring Demolition; Dark Intimations; Dark Salvation; Dauntless Aven; Dauntless Onslaught; Dawnfeather Eagle; Death Wind; Death's Approach; Declaration in Stone; Decoction Module; Deem Worthy; Defiant Greatmaw; Defiant Salvager; Demolition Stomper; Demon of Dark Schemes; Demonic Pact; Depala, Pilot Exemplar; Desert Cerodon; Desert of the Fervent; Desert of the Glorified; Desert of the Indomitable; Desert of the Mindful; Desert of the True; Desert's Hold; Destined // Lead; Devouring Light; Die Young; Diffusion Sliver; Dinrova Horror; Diregraf Colossus; Disallow; Disposal Mummy; Dispossess; Dissenter's Deliverance; Djeru's Renunciation; Djeru's Resolve; Doom Blade; Doomfall; Douse in Gloom; Dovin Baan; Dragon Fodder; Dragon Hatchling; Dragon Mantle; Dragonloft Idol; Dragonlord's Servant; Dragonmaster Outcast; Drainpipe Vermin; Drake Haven; Drana, Liberator of Malakir; Dread Wanderer; Driven // Despair; Dromoka's Command; Dukhara Peafowl; Dune Beetle; Dusk // Dawn; Dutiful Attendant; Dwynen's Elite; Dynavolt Tower; Eager Construct; Earthshaker Khenra; Eddytrail Hawk; Edifice of Authority; Electrostatic Pummeler; Elemental Uprising; Elusive Krasis; Elvish Visionary; Embraal Bruiser; Empyreal Voyager; Engineered Might; Enlarge; Enraged Giant; Era of Innovation; Essence Extraction; Essence Flux; Eternal of Harsh Truths; Eternal Thirst; Exemplar of Strength; Eyeblight Assassin; Fabrication Module; Failure // Comply; Fairgrounds Warden; Faith of the Devoted; Fan Bearer; Fanatic of Mogis; Farm // Market; Fatal Push; Fateful Showdown; Fen Hauler; Feral Prowler; Fervent Paincaster; Festering Mummy; Festering Newt; Fetid Pools; Fiery Temper; Filigree Familiar; Final Reward; Firebrand Archer; Fireforger's Puzzleknot; Flame Lash; Flameblade Adept; Flames of the Firebrand; Fleshbag Marauder; Floodwaters; Flurry of Horns; Forge Devil; Forsake the Worldly; Fortify; Fortuitous Find; Foundry Hornet; Foundry Inspector; Foundry Screecher; Foundry Street Denizen; Fourth Bridge Prowler; Fragmentize; Freejam Regent; Fretwork Colony; Frontline Rebel; Fumigate; Furious Reprisal; Furnace Whelp; Furyblade Vampire; Gate to the Afterlife; Gearseeker Serpent; Gearshift Ace; Ghoulcaller's Accomplice; Gideon of the Trials; Gideon's Intervention; Gifted Aetherborn; Gilded Cerodon; Glimmer of Genius; Glint; Glint-Nest Crane; Glint-Sleeve Artisan; Glint-Sleeve Siphoner; Glorious End; Glory-Bound Initiate; Glorybringer; Goblin Dark-Dwellers; Goblin Rally; Goblin Shortcutter; God-Pharaoh's Gift; Gonti, Lord of Luxury; Greenbelt Rampager; Grind // Dust; Grisly Salvage; Gust Walker; Hanweir Militia Captain; Hapatra, Vizier of Poisons; Hardened Scales; Harmless Offering; Harnessed Lightning; Harsh Mentor; Hashep Oasis; Haunted Dead; Hazardous Conditions; Haze of Pollen; Hazoret the Fervent; Hazoret's Monument; Heart of Kiran; Heaven // Earth; Hedron Archive; Heir of Falkenrath; Hekma Sentinels; Herald of Anguish; Herald of the Fair; Hidden Stockpile; Hieroglyphic Illumination; High Sentinels of Arashin; Highspire Artisan; Highspire Infusion; Hinterland Drake; Hive Stirrings; Hollow One; Homing Lightning; Honored Crop-Captain; Hooded Brawler; Hope of Ghirapur; Hope Tender; Hordeling Outburst; Hornet Queen; Horror of the Broken Lands; Hour of Devastation; Hour of Promise; Hour of Revelation; Hungry Flames; Ice Over; Ifnir Deadlands; Illusionist's Stratagem; Imminent Doom; Impeccable Timing; Implement of Combustion; Implement of Examination; Implement of Malice; In Oketra's Name; Incorrigible Youths; Incremental Growth; Indomitable Creativity; Indulgent Aristocrat; Initiate's Companion; Insatiable Gorgers; Insolent Neonate; Inspiring Call; Inspiring Statuary; Inspiring Vantage; Insult // Injury; Inventor's Apprentice; Inventors' Fair; Inventor's Goggles; Invigorated Rampage; Ipnu Rivulet; Irontread Crusher; Irrigated Farmland; Jace, Unraveler of Secrets; Just the Wind; Kalastria Nightwatch; Kambal, Consul of Allocation; Kari Zev, Skyship Raider; Kari Zev's Expertise; Kefnet the Mindful; Kefnet's Monument; Key to the City; Khenra Charioteer; Khenra Eternal; Khenra Scrapper; Kolaghan's Command; Kujar Seedsculptor; Labyrinth Guardian; Languish; Lathnu Sailback; Launch Party; Lawless Broker; Lay Claim; Leaf Gilder; Leave // Chance; Leave in the Dust; Leeching Sliver; Lethal Sting; Lifecraft Cavalry; Lifecrafter's Bestiary; Lifecrafter's Gift; Lightning Axe; Lightning Diadem; Lightning Shrieker; Lightwalker; Liliana, Death's Majesty; Liliana's Defeat; Liliana's Elite; Liliana's Mastery; Liliana's Reaver; Live Fast; Long Road Home; Longtusk Cub; Lord of the Accursed; Lost Legacy; Mad Prophet; Magma Jet; Magma Spray; Magmaroth; Majestic Myriarch; Make Obsolete; Malakir Cullblade; Malakir Familiar; Malfunction; Manaweft Sliver; Manglehorn; Manic Scribe; Marauding Boneslasher; Marionette Master; Markov Crusader; Master Trinketeer; Maulfist Revolutionary; Maulfist Squad; Maverick Thopterist; Maze's End; Merchant's Dockhand; Merciless Javelineer; Metallic Mimic; Metallic Rebuke; Metallurgic Summonings; Metalwork Colossus; Miasmic Mummy; Midnight Oil; Minister of Inquiries; Minotaur Skullcleaver; Minotaur Sureshot; Mirage Mirror; Mobile Garrison; Monstrous Onslaught; Mouth // Feed; Mugging; Murmuring Phantasm; Naga Oracle; Naga Vitalist; Narnam Cobra; Narnam Renegade; Nature's Way; Nebelgast Herald; Nef-Crop Entangler; Neheb, the Eternal; Neheb, the Worthy; Nest of Scarabs; Never // Return; New Perspectives; Nicol Bolas, God-Pharaoh; Night Market Aeronaut; Night Market Lookout; Nightmare; Nimble Innovator; Nimble Obstructionist; Nimble-Blade Khenra; Nimbus Swimmer; Nissa, Steward of Elements; Nissa, Vital Force; Noxious Gearhulk; Nyx-Fleece Ram; Oashra Cultivator; Oasis Ritualist; Oath of Ajani; Obelisk Spider; Ogre Battledriver; Ogre Slumlord; Ojutai's Command; Ojutai's Summons; Oketra the True; Oketra's Attendant; Oketra's Avenger; Oketra's Monument; Ominous Sphinx; Onward // Victory; Open Fire; Ornamental Courage; Ornery Kudu; Ornithopter; Outland Boar; Outnumber; Ovalchase Dragster; Overwhelming Splendor; Oviya Pashiri, Sage Lifecrafter; Pacification Array; Pack Rat; Padeem, Consul of Innovation; Panharmonicon; Paradox Engine; Paradoxical Outcome; Path of Bravery; Pathmaker Initiate; Patron of the Valiant; Peacewalker Colossus; Peel from Reality; Peema Aether-Seer; Peema Outrider; Perilous Vault; Pia Nalaar; Pitiless Vizier; Planar Bridge; Pouncing Cheetah; Prakhata Pillar-Bug; Precise Strike; Predatory Sliver; Prepare // Fight; Prescient Chimera; Pride Sovereign; Primeval Bounty; Propeller Pioneer; Prophetic Prism; Protection of the Hekma; Prowling Serpopard; Pull from Tomorrow; Puncturing Blow; Pursue Glory; Putrefy; Quarry Hauler; Quicksmith Genius; Quicksmith Rebel; Rageblood Shaman; Rags // Riches; Raise Dead; Ramunap Excavator; Ramunap Ruins; Rashmi, Eternities Crafter; Ratchet Bomb; Rattlechains; Ravenous Bloodseeker; Ravenous Intruder; Razaketh, the Foulblooded; Reason // Believe; Reckless Fireweaver; Reckless Racer; Reckless Scholar; Reduce // Rubble; Refurbish; Refuse // Cooperate; Regal Caracal; Renegade Map; Renegade Rallier; Renegade Tactics; Renegade Wheelsmith; Renewed Faith; Reservoir Walker; Resilient Khenra; Rest in Peace; Restoration Gearsmith; Restoration Specialist; Return to the Ranks; Reverse Engineer; Revoke Privileges; Revolutionary Rebuff; Rhonas the Indomitable; Rhonas's Monument; Rhonas's Stalwart; Riddle of Lightning; Ridgescale Tusker; Riparian Tiger; Rise of the Dark Realms; Rishkar, Peema Renegade; Rishkar's Expertise; River Hoopoe; Rogue Refiner; Ruin Rat; Ruinous Gremlin; Rumbling Baloth; Runeclaw Bear; Runed Servitor; Rush of Vitality; Ruthless Sniper; Sacred Cat; Sage of Shaila's Claim; Saheeli Rai; Salivating Gremlins; Samut, the Tested; Samut, Voice of Dissent; Sand Strangler; Sandsteppe Outcast; Sandwurm Convergence; Sarkhan's Rage; Scarab Feast; Scattered Groves; Scavenger Grounds; Scour the Laboratory; Scrap Trawler; Scrapheap Scrounger; Scrapper Champion; Seeker of Insight; Seer of the Last Tomorrow; Seismic Elemental; Select for Inspection; Self-Assembler; Selfless Cathar; Sengir Vampire; Sentinel Sliver; Servant of the Conduit; Servant of the Scale; Servo Exhibition; Servo Schematic; Shadow of the Grave; Shadowstorm Vizier; Shambleshark; Shambling Goblin; Shed Weakness; Shefet Dunes; Shefet Monitor; Sheltered Thicket; Shielded Aether Thief; Shimmerscale Drake; Shipwreck Moray; Shiv's Embrace; Shrewd Negotiation; Sidewinder Naga; Siege Dragon; Siege Modification; Sifter Wurm; Sigil of the Empty Throne; Sigiled Starfish; Sign in Blood; Silumgar's Command; Sin Prodder; Sixth Sense; Sky Skiff; Skyship Plunderer; Skyship Stalker; Skysovereign, Consul Flagship; Skywhaler's Shot; Slate Street Ruffian; Slither Blade; Sliver Hive; Sly Requisitioner; Solemnity; Solitary Camel; Somberwald Stag; Soul of the Harvest; Soulblade Djinn; Soul-Scar Mage; Soulstinger; Speedway Fanatic; Spellweaver Eternal; Sphinx's Revelation; Spire of Industry; Spire Patrol; Spirebluff Canal; Spireside Infiltrator; Splendid Agony; Sporemound; Spring // Mind; Sram, Senior Edificer; Sram's Expertise; Stab Wound; Start // Finish; Steelform Sliver; Steward of Solidarity; Stinging Shot; Stitchwing Skaab; Striking Sliver; Striped Riverwinder; Struggle // Survive; Sunscorched Desert; Sunscourge Champion; Sunset Pyramid; Supernatural Stamina; Supply Caravan; Supreme Will; Swan Song; Swarm of Bloodflies; Sweatworks Brawler; Sweep Away; Sweltering Suns; Synchronized Strike; Tah-Crop Elite; Tajuru Pathwarden; Tandem Tactics; Temmet, Vizier of Naktamun; Terrarion; Tezzeret the Schemer; Tezzeret's Ambition; Tezzeret's Touch; Thalia's Lieutenant; The Gitrog Monster; The Locust God; The Scarab God; The Scorpion God; Thopter Arrest; Thorned Moloch; Those Who Serve; Thoughtseize; Thraben Inspector; Thraben Standard Bearer; Thresher Lizard; Thriving Rhino; Thriving Turtle; Throne of the God-Pharaoh; Thunderbreak Regent; Tightening Coils; Toolcraft Exemplar; Torch Fiend; Torment of Hailfire; Torment of Scarabs; Torrential Gearhulk; Treasure Keeper; Trespasser's Curse; Trial of Ambition; Trial of Knowledge; Trial of Solidarity; Trial of Strength; Trial of Zeal; Trophy Mage; Typhoid Rats; Ulamog, the Ceaseless Hunger; Ulvenwald Hydra; Ulvenwald Mysteries; Unbridled Growth; Unburden; Unconventional Tactics; Underhanded Designs; Unesh, Criosphinx Sovereign; Universal Solvent; Unlicensed Disintegration; Unquenchable Thirst; Untethered Express; Vengeful Rebel; Verdurous Gearhulk; Veteran Motorist; Vile Manifestation; Virulent Plague; Visionary Augmenter; Vizier of Deferment; Vizier of Many Faces; Vizier of Remedies; Vizier of the Anointed; Vizier of the Menagerie; Vizier of Tumbling Sands; Voltaic Brawler; Voyage's End; Wailing Ghoul; Wall of Forgotten Pharaohs; Wander in Death; Warfire Javelineer; Wasp of the Bitter End; Waste Not; Wasteland Scorpion; Watchers of the Dead; Watchful Naga; Wayward Servant; Weaponcraft Enthusiast; Weaver of Lightning; Weldfast Engineer; Weldfast Monitor; Weldfast Wingsmith; Welding Sparks; Whelming Wave; Whir of Invention; Whirler Rogue; Whirler Virtuoso; Whirlermaker; Wight of Precinct Six; Wild Wanderer; Wildest Dreams; Winding Constrictor; Wind-Kin Raiders; Winds of Rebuke; Winged Shepherd; Wispweaver Angel; Witch's Familiar; Woodborn Behemoth; Woodweaver's Puzzleknot; Workshop Assistant; Yahenni, Undying Partisan; Yahenni's Expertise; Young Pyromancer; Zealot of the God-Pharaoh; Zendikar's Roil diff --git a/forge-gui/res/formats/Archived/Historic/2022-09-01.txt b/forge-gui/res/formats/Archived/Historic/2022-09-01.txt new file mode 100644 index 00000000000..fcab94f65be --- /dev/null +++ b/forge-gui/res/formats/Archived/Historic/2022-09-01.txt @@ -0,0 +1,7 @@ +[format] +Name:Historic (DMU) +Type:Archived +Subtype:Arena +Effective:2022-09-01 +Sets:XLN, RIX, DOM, M19, ANA, PANA, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AJMP, AKR, ANB, ZNR, KLR, KHM, HA4, STX, STA, HA5, AFR, J21, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, HA6, EA1, DMU +Banned:Agent of Treachery; Brainstorm; Channel; Counterspell; Dark Ritual; Demonic Tutor; Field of the Dead; Lightning Bolt; Memory Lapse; Natural Order; Nexus of Fate; Oko, Thief of Crowns; Once Upon a Time; Swords to Plowshares; Thassa's Oracle; Tibalt's Trickery; Time Warp; Uro, Titan of Nature's Wrath; Veil of Summer; Wilderness Reclamation diff --git a/forge-gui/res/formats/Archived/Legacy/2022-09-09.txt b/forge-gui/res/formats/Archived/Legacy/2022-09-09.txt new file mode 100644 index 00000000000..176bb1fa86d --- /dev/null +++ b/forge-gui/res/formats/Archived/Legacy/2022-09-09.txt @@ -0,0 +1,8 @@ +[format] +Name:Legacy (DMU) +Type:Archived +Subtype:Legacy +Effective:2022-09-09 +Sets:LEA, LEB, 2ED, ARN, ATQ, 3ED, LEG, DRC94, DRK, FEM, ARENA, WW, FS, SHC, 4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, POR, WTH, TMP, STH, EXO, PO2, USG, ATH, ULG, 6ED, UDS, S99, PTK, MMQ, BRB, NMS, S00, PCY, BTD, INV, PLS, 7ED, APC, ODY, DKM, TOR, JUD, ONS, LGN, SCG, 8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, MED, LRW, DD1, MOR, SHM, EVE, DRB, ME2, ALA, DD2, CFX, DDC, ARB, M10, TD0, V09, ME3, ZEN, DDD, H09, WWK, DDE, ROE, DPA, M11, V10, DDF, SOM, TD1, PD2, ME4, MBS, DDG, NPH, TD2, COM, M12, V11, DDH, ISD, PD3, DKA, DDI, AVR, M13, V12, DDJ, RTR, CM1, GTC, DDK, DGM, MMA, M14, V13, DDL, THS, C13, BNG, DDM, JOU, MD1, CNS, VMA, M15, V14, DDN, KTK, C14, DVD, EVG, GVL, JVC, FRF, UGF, DDO, DTK, TPR, MM2, ORI, V15, DDP, BFZ, EXP, C15, PZ1, OGW, DDQ, SOI, W16, EMA, EMN, V16, CN2, DDR, KLD, MPS_KLD, C16, PZ2, AER, MM3, DDS, AKH, MPS_AKH, W17, CMA, HOU, C17, XLN, DDT, IMA, V17, RIX, A25, DDU, DOM, CM2, BBD, SS1, GS1, M19, C18, GRN, MPS_GRN, GK1, G18, GNT, UMA, RNA, MPS_RNA, GK2, WAR, MPS_WAR, MH1, SS2, M20, C19, ELD, MB1, GN2, THB, IKO, C20, SS3, M21, JMP, 2XM, ZNR, ZNE, ZNC, CMR, CC1, KHM, KHC, TSR, STX, STA, C21, MH2, H1R, AFR, AFC, MID, MIC, VOW, VOC, DBL, CC2, NEO, NEC, SNC, NCC, CLB, 2X2, DMU, DMC +Banned:Advantageous Proclamation; Adriana's Valor; Amulet of Quoz; Ancestral Recall; Arcum's Astrolabe; Assemble the Rank and Vile; Backup Plan; Balance; Bazaar of Baghdad; Black Lotus; Brago's Favor; Bronze Tablet; Channel; Chaos Orb; Cleanse; Contract from Below; Crusade; Darkpact; Deathrite Shaman; Demonic Attorney; Demonic Consultation; Demonic Tutor; Dig Through Time; Double Stroke; Dreadhorde Arcanist; Earthcraft; Echoing Boon; Emissary's Ploy; Falling Star; Fastbond; Flash; Frantic Search; Gitaxian Probe; Goblin Recruiter; Gush; Hermit Druid; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Imperial Seal; Imprison; Incendiary Dissent; Invoke Prejudice; Iterative Analysis; Jeweled Bird; Jihad; Library of Alexandria; Lurrus of the Dream-Den; Mana Crypt; Mana Drain; Mana Vault; Memory Jar; Mental Misstep; Mind Twist; Mind's Desire; Mishra's Workshop; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Muzzio's Preparations; Mystical Tutor; Natural Unity; Necropotence; Oath of Druids; Oko, Thief of Crowns; Power Play; Pradesh Gypsies; Ragavan, Nimble Pilferer; Rebirth; Secret Summoning; Secrets of Paradise; Sensei's Divining Top; Sentinel Dispatch; Shahrazad; Skullclamp; Sol Ring; Sovereign's Realm; Stone-Throwing Devils; Strip Mine; Summoner's Bond; Survival of the Fittest; Tempest Efreet; Time Vault; Time Walk; Timetwister; Timmerian Fiends; Tinker; Tolarian Academy; Treasure Cruise; Underworld Breach; Unexpected Potential; Vampiric Tutor; Weight Advantage; Wheel of Fortune; Windfall; Worldknit; Wrenn and Six; Yawgmoth's Bargain; Yawgmoth's Will; Zirda, the Dawnwaker +Additional:Arvinox, the Mind Flail; Blanka, Ferocious Friend; Bjorna, Nightfall Alchemist; Cecily, Haunted Mage; Chief Jim Hopper; Chun-Li, Countless Kicks; Daryl, Hunter of Walkers; Dhalsim, Pliable Pacifist; Dustin, Gadget Genius; E. Honda, Sumo Champion; Eleven, the Mage; Elmar, Ulvenwald Informant; Glenn, the Voice of Calm; Guile, Sonic Soldier; Hargilde, Kindly Runechanter; Havengul Laboratory; Ken, Burning Brawler; Lucas, the Sharpshooter; Max, the Daredevil; Michonne, Ruthless Survivor; Mike, the Dungeon Master; Mind Flayer, the Shadow; Negan, the Cold-Blooded; Othelm, Sigardian Outcast; Rick, Steadfast Leader; Ryu, World Warrior; Sophina, Spearsage Deserter; Wernog, Rider's Chaplain; Will the Wise; Zangief, the Red Cyclone diff --git a/forge-gui/res/formats/Archived/Modern/2022-09-09.txt b/forge-gui/res/formats/Archived/Modern/2022-09-09.txt new file mode 100644 index 00000000000..646f1d9e789 --- /dev/null +++ b/forge-gui/res/formats/Archived/Modern/2022-09-09.txt @@ -0,0 +1,7 @@ +[format] +Name:Modern (DMU) +Type:Archived +Subtype:Modern +Effective:2022-09-09 +Sets:8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, LRW, MOR, SHM, EVE, ALA, CFX, ARB, M10, ZEN, WWK, ROE, DPA, M11, SOM, MBS, NPH, M12, ISD, DKA, AVR, M13, RTR, GTC, DGM, MMA, M14, THS, BNG, JOU, MD1, M15, KTK, FRF, DTK, MM2, ORI, BFZ, OGW, SOI, W16, EMN, KLD, AER, MM3, W17, AKH, HOU, XLN, RIX, DOM, M19, GRN, GK1, G18, RNA, GK2, WAR, MH1, M20, ELD, THB, IKO, M21, ZNR, KHM, TSR, STX, MH2, AFR, MID, VOW, DBL, NEO, SNC, DMU +Banned:Ancient Den; Arcum's Astrolabe; Birthing Pod; Blazing Shoal; Bridge from Below; Chrome Mox; Cloudpost; Dark Depths; Deathrite Shaman; Dig Through Time; Dread Return; Eye of Ugin; Faithless Looting; Field of the Dead; Gitaxian Probe; Glimpse of Nature; Golgari Grave-Troll; Great Furnace; Green Sun's Zenith; Hogaak, Arisen Necropolis; Hypergenesis; Krark-Clan Ironworks; Lurrus of the Dream-Den; Mental Misstep; Mox Opal; Mycosynth Lattice; Mystic Sanctuary; Oko, Thief of Crowns; Once Upon a Time; Ponder; Preordain; Punishing Fire; Rite of Flame; Seat of the Synod; Second Sunrise; Seething Song; Sensei's Divining Top; Simian Spirit Guide; Skullclamp; Splinter Twin; Summer Bloom; Tibalt's Trickery; Treasure Cruise; Tree of Tales; Umezawa's Jitte; Uro, Titan of Nature's Wrath; Vault of Whispers diff --git a/forge-gui/res/formats/Archived/Pioneer/2022-09-09.txt b/forge-gui/res/formats/Archived/Pioneer/2022-09-09.txt new file mode 100644 index 00000000000..a7bee2f8457 --- /dev/null +++ b/forge-gui/res/formats/Archived/Pioneer/2022-09-09.txt @@ -0,0 +1,7 @@ +[format] +Name:Pioneer (DMU) +Type:Archived +Subtype:Pioneer +Effective:2022-09-09 +Sets:RTR, GTC, DGM, M14, THS, BNG, JOU, M15, KTK, FRF, DTK, ORI, BFZ, OGW, SOI, W16, EMN, KLD, AER, W17, AKH, HOU, XLN, RIX, DOM, M19, GRN, G18, RNA, WAR, M20, ELD, THB, IKO, M21, ZNR, KHM, STX, AFR, MID, VOW, DBL, NEO, SNC, DMU +Banned:Balustrade Spy; Bloodstained Mire; Expressive Iteration; Felidar Guardian; Field of the Dead; Flooded Strand; Inverter of Truth; Kethis, the Hidden Hand; Leyline of Abundance; Lurrus of the Dream-Den; Nexus of Fate; Oko, Thief of Crowns; Once Upon a Time; Polluted Delta; Smuggler's Copter; Teferi, Time Raveler; Undercity Informer; Underworld Breach; Uro, Titan of Nature's Wrath; Veil of Summer; Walking Ballista; Wilderness Reclamation; Windswept Heath; Winota, Joiner of Forces; Wooded Foothills diff --git a/forge-gui/res/formats/Archived/Standard/2022-09-09.txt b/forge-gui/res/formats/Archived/Standard/2022-09-09.txt new file mode 100644 index 00000000000..6e17611ec3e --- /dev/null +++ b/forge-gui/res/formats/Archived/Standard/2022-09-09.txt @@ -0,0 +1,6 @@ +[format] +Name:Standard (DMU) +Type:Archived +Subtype:Standard +Effective:2022-09-09 +Sets:MID, VOW, NEO, SNC, DMU diff --git a/forge-gui/res/formats/Archived/Vintage/2022-09-09.txt b/forge-gui/res/formats/Archived/Vintage/2022-09-09.txt new file mode 100644 index 00000000000..a8d18be5979 --- /dev/null +++ b/forge-gui/res/formats/Archived/Vintage/2022-09-09.txt @@ -0,0 +1,9 @@ +[format] +Name:Vintage (DMU) +Type:Archived +Subtype:Vintage +Effective:2022-09-09 +Sets:LEA, LEB, 2ED, ARN, ATQ, 3ED, LEG, DRC94, DRK, FEM, ARENA, WW, FS, SHC, 4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, POR, WTH, TMP, STH, EXO, PO2, USG, ATH, ULG, 6ED, UDS, S99, PTK, MMQ, BRB, NMS, S00, PCY, BTD, INV, PLS, 7ED, APC, ODY, DKM, TOR, JUD, ONS, LGN, SCG, 8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, MED, LRW, DD1, MOR, SHM, EVE, DRB, ME2, ALA, DD2, CFX, DDC, ARB, M10, TD0, V09, ME3, ZEN, DDD, H09, WWK, DDE, ROE, DPA, M11, V10, DDF, SOM, TD1, PD2, ME4, MBS, DDG, NPH, TD2, COM, M12, V11, DDH, ISD, PD3, DKA, DDI, AVR, M13, V12, DDJ, RTR, CM1, GTC, DDK, DGM, MMA, M14, V13, DDL, THS, C13, BNG, DDM, JOU, MD1, CNS, VMA, M15, V14, DDN, KTK, C14, DVD, EVG, GVL, JVC, FRF, UGF, DDO, DTK, TPR, MM2, ORI, V15, DDP, BFZ, EXP, C15, PZ1, OGW, DDQ, SOI, W16, EMA, EMN, V16, CN2, DDR, KLD, MPS_KLD, C16, PZ2, AER, MM3, DDS, AKH, MPS_AKH, W17, CMA, HOU, C17, XLN, DDT, IMA, V17, RIX, A25, DDU, DOM, CM2, BBD, SS1, GS1, M19, C18, GRN, MPS_GRN, GK1, G18, GNT, UMA, RNA, MPS_RNA, GK2, WAR, MPS_WAR, MH1, SS2, M20, C19, ELD, MB1, GN2, THB, IKO, C20, SS3, M21, JMP, 2XM, ZNR, ZNE, ZNC, CMR, CC1, KHM, KHC, TSR, STX, STA, C21, MH2, H1R, AFR, AFC, MID, MIC, VOW, VOC, DBL, CC2, NEO, NEC, SNC, NCC, CLB, 2X2, DMU, DMC +Restricted:Ancestral Recall; Balance; Black Lotus; Brainstorm; Chalice of the Void; Channel; Demonic Consultation; Demonic Tutor; Dig Through Time; Flash; Gitaxian Probe; Golgari Grave-Troll; Gush; Imperial Seal; Karn, the Great Creator; Library of Alexandria; Lion's Eye Diamond; Lodestone Golem; Lotus Petal; Mana Crypt; Mana Vault; Memory Jar; Mental Misstep; Merchant Scroll; Mind's Desire; Monastery Mentor; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Mystic Forge; Mystical Tutor; Narset, Parter of Veils; Necropotence; Ponder; Sol Ring; Strip Mine; Thorn of Amethyst; Time Vault; Time Walk; Timetwister; Tinker; Tolarian Academy; Treasure Cruise; Trinisphere; Vampiric Tutor; Wheel of Fortune; Windfall; Yawgmoth's Will +Banned:Adriana's Valor; Advantageous Proclamation; Amulet of Quoz; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Bronze Tablet; Chaos Orb; Cleanse; Contract from Below; Crusade; Darkpact; Demonic Attorney; Double Stroke; Echoing Boon; Emissary's Ploy; Falling Star; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Imprison; Incendiary Dissent; Invoke Prejudice; Iterative Analysis; Jeweled Bird; Jihad; Muzzio's Preparations; Natural Unity; Power Play; Pradesh Gypsies; Rebirth; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Shahrazad; Sovereign's Realm; Stone-Throwing Devils; Summoner's Bond; Tempest Efreet; Timmerian Fiends; Unexpected Potential; Weight Advantage; Worldknit +Additional:Arvinox, the Mind Flail; Blanka, Ferocious Friend; Bjorna, Nightfall Alchemist; Cecily, Haunted Mage; Chief Jim Hopper; Chun-Li, Countless Kicks; Daryl, Hunter of Walkers; Dhalsim, Pliable Pacifist; Dustin, Gadget Genius; E. Honda, Sumo Champion; Eleven, the Mage; Elmar, Ulvenwald Informant; Glenn, the Voice of Calm; Guile, Sonic Soldier; Hargilde, Kindly Runechanter; Havengul Laboratory; Ken, Burning Brawler; Lucas, the Sharpshooter; Max, the Daredevil; Michonne, Ruthless Survivor; Mike, the Dungeon Master; Mind Flayer, the Shadow; Negan, the Cold-Blooded; Othelm, Sigardian Outcast; Rick, Steadfast Leader; Ryu, World Warrior; Sophina, Spearsage Deserter; Wernog, Rider's Chaplain; Will the Wise; Zangief, the Red Cyclone From 88b866d967ba1129487b104dcd3e6e7a0d2c0e37 Mon Sep 17 00:00:00 2001 From: Northmoc <103371817+Northmoc@users.noreply.github.com> Date: Sun, 21 Aug 2022 00:57:30 -0400 Subject: [PATCH 55/65] HBG: Follow the Tracks and support (#1328) * follow_the_tracks.txt * GameAction.changeZone add made cards to inbound tokens for rep effects * MakeCardEffect.resolve support "Spellbook" and "AtRandom" for Conjure stuff * tome_of_the_infinite.txt streamline * MakeCardEffect.resolve clean up unused params * MakeCardEffect Spellbook choice prompt --- .../src/main/java/forge/game/GameAction.java | 4 ++- .../game/ability/effects/MakeCardEffect.java | 28 +++++++++++++++---- .../cardsfolder/t/tome_of_the_infinite.txt | 6 ++-- .../upcoming/follow_the_tracks.txt | 6 ++++ forge-gui/res/languages/de-DE.properties | 2 ++ forge-gui/res/languages/en-US.properties | 2 ++ forge-gui/res/languages/es-ES.properties | 2 ++ forge-gui/res/languages/it-IT.properties | 2 ++ forge-gui/res/languages/ja-JP.properties | 2 ++ forge-gui/res/languages/pt-BR.properties | 2 ++ forge-gui/res/languages/zh-CN.properties | 2 ++ 11 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/follow_the_tracks.txt diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index a3f9d0598ec..76e000ca8e5 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -366,7 +366,9 @@ public class GameAction { } } - if (zoneFrom == null) { + // in addition to actual tokens, cards "made" by digital-only mechanics + // are also added to inbound tokens so their etb replacements will work + if (zoneFrom == null || zoneFrom.is(ZoneType.None)) { copied.getOwner().addInboundToken(copied); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java index c6ecc4d7610..d1c406e986a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java @@ -1,8 +1,12 @@ package forge.game.ability.effects; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.Map; import forge.StaticData; +import forge.card.ICardFace; import forge.game.Game; import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; @@ -14,6 +18,9 @@ import forge.game.player.Player; import forge.game.player.PlayerCollection; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; +import forge.util.Aggregates; +import forge.util.CardTranslation; +import forge.util.Localizer; public class MakeCardEffect extends SpellAbilityEffect { @Override @@ -40,6 +47,20 @@ public class MakeCardEffect extends SpellAbilityEffect { if (def.size() > 0) { name = def.getFirst().getName(); } + } else if (sa.hasParam("Spellbook")) { + List spellbook = Arrays.asList(sa.getParam("Spellbook").split(",")); + List faces = new ArrayList<>(); + for (String s : spellbook) { + // Cardnames that include "," must use ";" instead in Spellbook$ (i.e. Tovolar; Dire Overlord) + s = s.replace(";", ","); + faces.add(StaticData.instance().getCommonCards().getFaceByName(s)); + } + if (sa.hasParam("AtRandom")) { + name = Aggregates.random(faces).getName(); + } else { + name = player.getController().chooseCardName(sa, faces, + Localizer.getInstance().getMessage("lblChooseFromSpellbook", CardTranslation.getTranslatedName(source.getName()))); + } } final ZoneType zone = ZoneType.smartValueOf(sa.getParamOrDefault("Zone", "Library")); int amount = sa.hasParam("Amount") ? @@ -50,12 +71,7 @@ public class MakeCardEffect extends SpellAbilityEffect { if (!name.equals("")) { while (amount > 0) { Card card = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name), player); - if (sa.hasParam("IsToken")) { - card.setToken(true); - } - if (!sa.hasParam("NotToken")) { - card.setTokenCard(true); - } + card.setTokenCard(true); game.getAction().moveTo(ZoneType.None, card, sa, moveParams); cards.add(card); amount--; diff --git a/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt b/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt index 53b4d0c8107..568353fa02b 100644 --- a/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt +++ b/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt @@ -1,10 +1,8 @@ Name:Tome of the Infinite ManaCost:2 U Types:Legendary Artifact -A:AB$ NameCard | Cost$ U T | Defined$ You | AtRandom$ True | ChooseFromList$ Light of Hope,Swords to Plowshares,Force Spike,Ponder,Dark Ritual,Duress,Assault Strobe,Lightning Bolt,Fog,Giant Growth | SubAbility$ DBConjure | StackDescription$ SpellDescription | SpellDescription$ Conjure a random card from CARDNAME's spellbook into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." -SVar:DBConjure:DB$ MakeCard | Name$ ChosenName | Zone$ Hand | RememberMade$ True | SubAbility$ DBClearName -SVar:DBClearName:DB$ Cleanup | ClearNamedCard$ True | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Tome of the Infinite's Perpetual Effect | SubAbility$ DBCleanup +A:AB$ MakeCard | Cost$ U T | AtRandom$ True | Spellbook$ Light of Hope,Swords to Plowshares,Force Spike,Ponder,Dark Ritual,Duress,Assault Strobe,Lightning Bolt,Fog,Giant Growth | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect | SpellDescription$ Conjure a random card from CARDNAME's spellbook into your hand. +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Tome of the Infinite's Perpetual Effect | SubAbility$ DBCleanup | SpellDescription$ It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell." SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AffectedZone$ Stack | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/upcoming/follow_the_tracks.txt b/forge-gui/res/cardsfolder/upcoming/follow_the_tracks.txt new file mode 100644 index 00000000000..c4d5c61cc03 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/follow_the_tracks.txt @@ -0,0 +1,6 @@ +Name:Follow the Tracks +ManaCost:2 G +Types:Sorcery +A:SP$ MakeCard | Spellbook$ Gate of the Black Dragon,Gate to Manorborn,Gate to Seatower,Gate to the Citadel,Gate to Tumbledown | Zone$ Battlefield | SpellDescription$ Conjure a card of your choice from CARDNAME's spellbook onto the battlefield. +DeckHas:Type$Gate +Oracle:Conjure a card of your choice from Follow the Tracks's spellbook onto the battlefield. diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 2dbb51cbe40..82984900c1d 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -1980,6 +1980,8 @@ lblLandedOnTwoCards=Die Karte landete auf {0} und {1}. lblWouldYouLikeInvestigate=Möchtest du Nachforschungen anstellen? #LifeSetEffect.java lblLifeTotal=Lebenspunkte +#MakeCardEffect.java +lblChooseFromSpellbook=Choose a card from {0}''s spellbook #ManaEffect.java lblDoYouWantAddMana=Möchtest du Mana hinzufügen? lblSelectManaProduce=Wähle zu produzierendes Mana diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index e70d4995d29..20ecfe6fe61 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -1981,6 +1981,8 @@ lblLandedOnTwoCards=The card landed on {0} and {1}. lblWouldYouLikeInvestigate=Do you want to investigate? #LifeSetEffect.java lblLifeTotal=Life Total +#MakeCardEffect.java +lblChooseFromSpellbook=Choose a card from {0}''s spellbook #ManaEffect.java lblDoYouWantAddMana=Do you want to add mana? lblSelectManaProduce=Select Mana to Produce diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index c9b02bfd32b..cfe54f6ef24 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -1979,6 +1979,8 @@ lblLandedOnTwoCards=The card landed on {0} and {1}. lblWouldYouLikeInvestigate=¿Quieres investigar? #LifeSetEffect.java lblLifeTotal=Vida total +#MakeCardEffect.java +lblChooseFromSpellbook=Elige una carta del libro de hechizos a {0} #ManaEffect.java lblDoYouWantAddMana=¿Quieres agregar maná? lblSelectManaProduce=Selecciona el maná a producir diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index 2cb27b2247c..ec41fa235de 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -1978,6 +1978,8 @@ lblLandedOnTwoCards=The card landed on {0} and {1}. lblWouldYouLikeInvestigate=Do you want to investigate? #LifeSetEffect.java lblLifeTotal=Punti Vita +#MakeCardEffect.java +lblChooseFromSpellbook=Choose a card from {0}''s spellbook #ManaEffect.java lblDoYouWantAddMana=Vuoi aggiungere mana? lblSelectManaProduce=Scegli il mana da produrre diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 7e7fcd30880..66a13db3fa8 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -1978,6 +1978,8 @@ lblLandedOnTwoCards=The card landed on {0} and {1}. lblWouldYouLikeInvestigate=Do you want to investigate? #LifeSetEffect.java lblLifeTotal=総ライフ値 +#MakeCardEffect.java +lblChooseFromSpellbook=Choose a card from {0}''s spellbook #ManaEffect.java lblDoYouWantAddMana=マナを生成しますか? lblSelectManaProduce=生成するマナを選ぶ diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index 40410cfbf2f..6fe8946637b 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -2040,6 +2040,8 @@ lblLandedOnTwoCards=A carta land em {0} e {1}. lblWouldYouLikeInvestigate=Você quer investigar? #LifeSetEffect.java lblLifeTotal=Total de Vida +#MakeCardEffect.java +lblChooseFromSpellbook=Choose a card from {0}''s spellbook #ManaEffect.java lblDoYouWantAddMana=Deseja adicionar mana? lblSelectManaProduce=Escolha Mana a Gerar diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index fc81a5b2c3f..6f7c6f70e1f 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -1982,6 +1982,8 @@ lblLandedOnTwoCards=牌张落在了{0}和{1}上。 lblWouldYouLikeInvestigate=你想要探查吗? #LifeSetEffect.java lblLifeTotal=生命总数 +#MakeCardEffect.java +lblChooseFromSpellbook=Choose a card from {0}''s spellbook #ManaEffect.java lblDoYouWantAddMana=你想增加法术力吗? lblSelectManaProduce=选择要产出的法术力 From 93a33310a939cd34ebe8ea4fd701775b7e94c307 Mon Sep 17 00:00:00 2001 From: Paul Hammerton <18243520+paulsnoops@users.noreply.github.com> Date: Sun, 21 Aug 2022 05:58:32 +0100 Subject: [PATCH 56/65] Migrate card scripts from released sets (#1370) --- .../{upcoming => a}/aarakocra_sneak.txt | 0 .../abdel_adrian_gorions_ward.txt | 0 .../{upcoming => a}/aboleth_spawn.txt | 0 .../{upcoming => a}/acolyte_of_bahamut.txt | 0 .../{upcoming => a}/agent_of_raffine.txt | 0 .../agent_of_the_iron_throne.txt | 0 .../agent_of_the_shadow_thieves.txt | 0 .../{upcoming => a}/alaundo_the_seer.txt | 0 .../{upcoming => a}/alora_merry_thief.txt | 0 .../altar_of_bhaal_bone_offering.txt | 0 .../{upcoming => a}/amber_gristle_omaul.txt | 0 .../{upcoming => a}/ambitious_dragonborn.txt | 0 .../amethyst_dragon_explosive_crystal.txt | 0 .../{upcoming => a}/ancient_bronze_dragon.txt | 0 .../{upcoming => a}/ancient_copper_dragon.txt | 0 .../{upcoming => a}/ancient_gold_dragon.txt | 0 .../{upcoming => a}/ancient_silver_dragon.txt | 0 .../{upcoming => a}/archivist_of_oghma.txt | 0 .../{upcoming => a}/arming_gala.txt | 0 .../{upcoming => a}/armor_of_shadows.txt | 0 .../{upcoming => a}/arms_of_hadar.txt | 0 .../{upcoming => a}/artificer_class.txt | 0 .../{upcoming => a}/ascend_from_avernus.txt | 0 .../{upcoming => a}/astarions_thirst.txt | 0 .../{upcoming => a}/astral_confrontation.txt | 0 .../{upcoming => a}/astral_dragon.txt | 0 .../{upcoming => a}/atrocious_experiment.txt | 0 .../{upcoming => a}/avenging_hunter.txt | 0 .../baba_lysaga_night_witch.txt | 0 .../{upcoming => b}/back_alley_gardener.txt | 0 .../baeloth_barrityl_entertainer.txt | 0 .../baird_argivian_recruiter.txt | 0 .../{upcoming => b}/baldurs_gate.txt | 0 .../res/cardsfolder/{upcoming => b}/balor.txt | 0 .../{upcoming => b}/bane_lord_of_darkness.txt | 0 .../{upcoming => b}/banes_contingency.txt | 0 .../{upcoming => b}/banishment.txt | 0 .../cardsfolder/{upcoming => b}/bank_job.txt | 0 .../{upcoming => b}/barroom_brawl.txt | 0 .../{upcoming => b}/basilisk_gate.txt | 0 .../{upcoming => b}/battle_angels_of_tyr.txt | 0 .../{upcoming => b}/beckoning_will_o_wisp.txt | 0 .../{upcoming => b}/big_spender.txt | 0 .../{upcoming => b}/bind_to_secrecy.txt | 0 .../{upcoming => b}/black_dragon_gate.txt | 0 .../black_market_connections.txt | 0 .../blessed_hippogriff_tyrs_blesing.txt | 0 .../{upcoming => b}/blood_money.txt | 0 .../{upcoming => b}/bloodboil_sorceror.txt | 0 .../res/cardsfolder/{upcoming => b}/blur.txt | 16 +++++----- .../{upcoming => b}/bonecaller_cleric.txt | 0 .../{upcoming => b}/bothersome_quasit.txt | 0 .../{upcoming => b}/brainstealer_dragon.txt | 0 .../{upcoming => b}/breath_weapon.txt | 0 .../{upcoming => b}/brokers_safeguard.txt | 0 .../{upcoming => b}/bronze_walrus.txt | 0 .../{upcoming => b}/burakos_party_leader.txt | 0 .../{upcoming => c}/cabaretti_revels.txt | 0 .../cadira_caller_of_the_small.txt | 0 .../{upcoming => c}/calim_djinn_emperor.txt | 0 .../{upcoming => c}/call_to_the_void.txt | 0 .../cardsfolder/{upcoming => c}/campfire.txt | 0 .../candlekeep_inspiration.txt | 0 .../{upcoming => c}/candlekeep_sage.txt | 0 .../{upcoming => c}/carefree_swinemaster.txt | 0 .../carnelian_orb_of_dragonkind.txt | 0 .../caves_of_chaos_adventurer.txt | 0 .../{upcoming => c}/celestial_vault.txt | 0 .../{upcoming => c}/chain_devil.txt | 0 .../{upcoming => c}/chaos_balor.txt | 0 .../{upcoming => c}/chardalyn_dragon.txt | 0 .../{upcoming => c}/choice_of_fortunes.txt | 0 .../circle_of_the_land_druid.txt | 0 .../{upcoming => c}/clan_crafter.txt | 0 .../{upcoming => c}/cloak_of_the_bat.txt | 0 .../{upcoming => c}/cloakwood_hermit.txt | 0 .../{upcoming => c}/cloakwood_swarmkeeper.txt | 0 .../{upcoming => c}/clockwork_fox.txt | 0 .../cardsfolder/{upcoming => c}/cloudkill.txt | 0 .../colossal_badger_dig_deep.txt | 0 .../{upcoming => c}/cone_of_cold.txt | 0 .../{upcoming => c}/contraband_livestock.txt | 0 .../{upcoming => c}/coronation_of_chaos.txt | 0 .../{upcoming => c}/craving_of_yeenoghu.txt | 0 .../{upcoming => c}/criminal_past.txt | 0 .../crystal_dragon_rob_the_hoard.txt | 0 .../cultist_of_the_absolute.txt | 0 .../{upcoming => c}/cut_a_deal.txt | 0 .../{upcoming => d}/death_kiss.txt | 0 .../decanter_of_endless_water.txt | 0 .../deep_gnome_terramancer.txt | 0 .../delayed_blast_fireball.txt | 0 .../{upcoming => d}/descent_into_avernus.txt | 0 .../{upcoming => d}/dire_mimic.txt | 0 .../{upcoming => d}/displacer_kitten.txt | 0 .../{upcoming => d}/diviner_of_fates.txt | 0 .../{upcoming => d}/draconic_lore.txt | 0 .../{upcoming => d}/draconic_muralists.txt | 0 .../{upcoming => d}/dragon_cultist.txt | 0 .../{upcoming => d}/dragonborn_looter.txt | 0 .../{upcoming => d}/drillworks_mole.txt | 0 .../druid_of_the_emerald_grove.txt | 0 .../{upcoming => d}/druidic_ritual.txt | 0 .../{upcoming => d}/duke_ulder_ravenguard.txt | 0 .../{upcoming => d}/dungeon_delver.txt | 0 .../{upcoming => d}/dungeoneers_pack.txt | 0 .../durnan_of_the_yawning_portal.txt | 0 .../dynaheir_invoker_adept.txt | 0 .../{upcoming => e}/earth_tremor.txt | 0 .../{upcoming => e}/earthquake_dragon.txt | 0 .../{upcoming => e}/effluence_devourer.txt | 0 .../ellyn_harbreeze_busybody.txt | 0 .../cardsfolder/{upcoming => e}/elminster.txt | 0 .../{upcoming => e}/elturel_survivors.txt | 0 .../emerald_dragon_dissonant_wave.txt | 0 .../{upcoming => e}/endless_evil.txt | 0 .../{upcoming => e}/erinis_gloom_stalker.txt | 0 .../{upcoming => e}/ettercap_web_shot.txt | 0 .../{upcoming => e}/explore_the_underdark.txt | 0 .../{upcoming => f}/faceless_one.txt | 0 .../faldorn_dread_wolf_herald.txt | 0 .../fang_dragon_forktail_sweep.txt | 0 .../{upcoming => f}/far_traveler.txt | 0 .../{upcoming => f}/feywild_caretaker.txt | 0 .../{upcoming => f}/feywild_visitor.txt | 0 .../{upcoming => f}/firbolg_flutist.txt | 0 .../firkraag_cunning_instigator.txt | 0 .../{upcoming => f}/flaming_fist.txt | 0 .../{upcoming => f}/flaming_fist_officer.txt | 0 .../cardsfolder/{upcoming => f}/folk_hero.txt | 0 .../{upcoming => f}/font_of_magic.txt | 0 .../{upcoming => f}/fraying_line.txt | 0 .../{upcoming => f}/from_the_catacombs.txt | 0 .../gale_waterdeep_prodigy.txt | 0 .../{upcoming => g}/ganax_astral_hunter.txt | 0 .../gate_of_the_black_dragon.txt | 0 .../{upcoming => g}/gate_to_manorborn.txt | 0 .../{upcoming => g}/gate_to_seatower.txt | 0 .../{upcoming => g}/gate_to_the_citadel.txt | 0 .../{upcoming => g}/gate_to_tumbledown.txt | 0 .../{upcoming => g}/genasi_enforcers.txt | 0 .../{upcoming => g}/ghastly_death_tyrant.txt | 0 .../ghost_lantern_bind_spirit.txt | 0 .../{upcoming => g}/giant_ankheg.txt | 0 .../{upcoming => g}/giant_regrowth.txt | 0 .../{upcoming => g}/githzerai_monk.txt | 0 .../{upcoming => g}/gluntch_the_bestower.txt | 30 +++++++++---------- .../{upcoming => g}/gnoll_war_band.txt | 0 .../{upcoming => g}/goggles_of_night.txt | 0 .../{upcoming => g}/goliath_paladin.txt | 0 .../cardsfolder/{upcoming => g}/gond_gate.txt | 0 .../{upcoming => g}/grave_choice.txt | 0 .../{upcoming => g}/graven_archfiend.txt | 0 .../{upcoming => g}/gray_harbor_merfolk.txt | 0 .../gray_slaad_entropic_decay.txt | 0 .../{upcoming => g}/greatsword_of_tyr.txt | 0 .../{upcoming => g}/green_slime.txt | 0 .../{upcoming => g}/grell_philosopher.txt | 0 .../guardian_naga_banishing_coils.txt | 0 .../{upcoming => g}/guiding_bolt.txt | 0 .../{upcoming => g}/guild_artisan.txt | 0 .../{upcoming => g}/guildsworn_prowler.txt | 0 .../{upcoming => g}/gut_true_soul_zealot.txt | 0 .../hag_of_ceaseless_torment.txt | 0 .../{upcoming => h}/hag_of_dark_duress.txt | 0 .../{upcoming => h}/hag_of_deaths_legion.txt | 0 .../{upcoming => h}/hag_of_inner_weakness.txt | 0 .../{upcoming => h}/hag_of_mages_doom.txt | 0 .../hag_of_noxious_nightmares.txt | 0 .../hag_of_scoured_thoughts.txt | 0 .../hag_of_syphoned_breath.txt | 0 .../hag_of_twisted_visions.txt | 0 .../halsin_emerald_archdruid.txt | 0 .../{upcoming => h}/hammers_of_moradin.txt | 0 .../{upcoming => h}/hardy_outlander.txt | 0 .../{upcoming => h}/harper_recruiter.txt | 0 .../{upcoming => h}/haunted_one.txt | 16 +++++----- .../cardsfolder/{upcoming => h}/heap_gate.txt | 0 .../{upcoming => h}/henzie_toolbox_torre.txt | 0 .../{upcoming => h}/herald_of_vengeance.txt | 0 .../{upcoming => h}/hezrou_demonic_stench.txt | 0 .../{upcoming => h}/hook_horror.txt | 0 .../horn_of_valhalla_ysgards_call.txt | 0 .../{upcoming => i}/icewind_stalwart.txt | 0 .../illithid_harvester_plant_tadpoles.txt | 0 .../{upcoming => i}/imaryll_elfhame_elite.txt | 0 .../imoen_mystic_trickster.txt | 0 .../{upcoming => i}/incessant_provocation.txt | 0 .../{upcoming => i}/indulge_excess.txt | 0 .../{upcoming => i}/ingenious_artillerist.txt | 0 .../{upcoming => i}/inspired_tinkering.txt | 0 .../{upcoming => i}/inspiring_leader.txt | 0 .../insufferable_balladeer.txt | 0 .../{upcoming => i}/intellect_devourer.txt | 0 .../{upcoming => i}/iron_mastiff.txt | 0 .../jade_orb_of_dragonkind.txt | 0 .../jaheira_friend_of_the_forest.txt | 0 .../{upcoming => j}/jaheiras_respite.txt | 0 .../jan_jansen_chaos_crafter.txt | 22 +++++++------- .../{upcoming => j}/javelin_of_lightning.txt | 0 .../jon_irenicus_shattered_one.txt | 0 .../journey_to_the_lost_city.txt | 0 .../{upcoming => j}/juvenile_mist_dragon.txt | 0 .../kagha_shadow_archdruid.txt | 0 .../karlach_fury_of_avernus.txt | 0 .../{upcoming => k}/kenku_artificer.txt | 0 .../{upcoming => k}/korlessa_scale_singer.txt | 0 .../laezel_vlaakiths_champion.txt | 0 .../{upcoming => l}/laezels_acrobatics.txt | 0 .../{upcoming => l}/lantern_of_revealing.txt | 0 .../lapis_orb_of_dragonkind.txt | 0 .../livaan_cultist_of_tiamat.txt | 0 .../{upcoming => l}/loot_dispute.txt | 0 .../{upcoming => l}/lulu_loyal_hollyphant.txt | 0 .../{upcoming => l}/lurking_green_dragon.txt | 0 .../maeve_insidious_singer.txt | 0 .../mahadi_emporium_master.txt | 0 .../{upcoming => m}/majestic_genesis.txt | 0 .../{upcoming => m}/manor_gate.txt | 0 .../{upcoming => m}/marching_duodrone.txt | 0 .../res/cardsfolder/{upcoming => m}/marut.txt | 0 .../{upcoming => m}/master_chef.txt | 0 .../mighty_servant_of_leuk_o.txt | 0 .../{upcoming => m}/miirym_sentinel_wyrm.txt | 0 .../minthara_merciless_soul.txt | 0 .../mirror_of_life_trapping.txt | 0 .../{upcoming => m}/mocking_doppelganger.txt | 0 .../{upcoming => m}/modify_memory.txt | 0 .../cardsfolder/{upcoming => m}/mold_folk.txt | 0 .../{upcoming => m}/moonshae_pixie.txt | 0 .../{upcoming => m}/multiclass_baldric.txt | 0 .../{upcoming => m}/myconid_spore_tender.txt | 0 .../{upcoming => m}/myrkuls_edict.txt | 0 .../{upcoming => m}/myrkuls_invoker.txt | 0 .../{upcoming => m}/mystery_key.txt | 0 .../{upcoming => n}/nalfeshnee.txt | 0 .../{upcoming => n}/nalia_dearnise.txt | 0 .../{upcoming => n}/nautiloid_ship.txt | 0 .../{upcoming => n}/navigation_orb.txt | 0 .../{upcoming => n}/neera_wild_mage.txt | 0 .../{upcoming => n}/nefarious_imp.txt | 0 .../{upcoming => n}/nightclub_bouncer.txt | 0 .../{upcoming => n}/nimbleclaw_adept.txt | 0 .../nimblewright_schematic.txt | 0 .../{upcoming => n}/nine-fingers_keene.txt | 0 .../{upcoming => n}/noble_heritage.txt | 0 .../{upcoming => n}/nogi_draco_zealot.txt | 0 .../cardsfolder/{upcoming => n}/nothic.txt | 0 .../{upcoming => o}/obscura_polymorphist.txt | 0 .../{upcoming => o}/oceanus_dragon.txt | 0 .../oji_the_exquisite_blade.txt | 0 .../overwhelming_encounter.txt | 0 .../{upcoming => o}/owlbear_cub.txt | 0 .../{upcoming => o}/owlbear_shepherd.txt | 0 .../oyaminartok_polar_werebear.txt | 0 .../{upcoming => p}/pack_attack.txt | 0 .../{upcoming => p}/pact_weapon.txt | 0 .../{upcoming => p}/pass_the_torch.txt | 0 .../{upcoming => p}/passageway_seer.txt | 0 .../passionate_archaeologist.txt | 0 .../{upcoming => p}/patriars_humiliation.txt | 0 .../{upcoming => p}/patriars_seal.txt | 0 .../{upcoming => p}/patron_of_the_arts.txt | 0 .../pegasus_guardian_rescue_the_foal.txt | 0 .../{upcoming => p}/poison_the_blade.txt | 0 .../{upcoming => p}/popular_entertainer.txt | 0 .../{upcoming => p}/prized_statue.txt | 0 .../{upcoming => p}/pseudodragon_familiar.txt | 0 .../{upcoming => p}/psionic_ritual.txt | 0 .../{upcoming => r}/raised_by_giants.txt | 0 .../{upcoming => r}/rasaad_yn_bashir.txt | 0 .../{upcoming => r}/ravenloft_adventurer.txt | 0 .../{upcoming => r}/reckless_barbarian.txt | 0 .../{upcoming => r}/recruitment_drive.txt | 0 .../renari_merchant_of_marvels.txt | 0 .../{upcoming => r}/rescuer_chwinga.txt | 0 .../{upcoming => r}/rilsa_rael_kingpin.txt | 0 .../{upcoming => r}/riveteers_provocateur.txt | 0 .../{upcoming => r}/robe_of_the_archmagi.txt | 0 .../{upcoming => r}/rope_line_attendant.txt | 0 .../{upcoming => r}/rug_of_smothering.txt | 0 .../saddle_of_the_cavalier.txt | 0 .../safana_calimport.cutthroat.txt | 0 .../{upcoming => s}/sailors_bane.txt | 0 .../sapphire_dragon_psionic_pulse.txt | 0 .../{upcoming => s}/sarevok_deathbringer.txt | 0 .../{upcoming => s}/sarevoks_tome.txt | 0 .../{upcoming => s}/scaled_nurturer.txt | 0 .../{upcoming => s}/scion_of_halaster.txt | 0 .../{upcoming => s}/scouting_hawk.txt | 0 .../{upcoming => s}/sculpted_sunburst.txt | 0 .../cardsfolder/{upcoming => s}/sea_gate.txt | 0 .../{upcoming => s}/seasoned_dungeoneer.txt | 0 .../{upcoming => s}/seek_new_knowledge.txt | 0 .../shadowheart_dark_justiciar.txt | 0 .../{upcoming => s}/shameless_charlatan.txt | 0 .../{upcoming => s}/sharpshooter_elf.txt | 0 .../{upcoming => s}/shattering_finale.txt | 0 .../{upcoming => s}/sigil_of_myrkul.txt | 0 .../{upcoming => s}/signature_spells.txt | 0 .../sivriss_nightmare_speaker.txt | 0 .../{upcoming => s}/skanos_dragonheart.txt | 0 .../{upcoming => s}/skyline_savior.txt | 0 .../{upcoming => s}/snowborn_simulacra.txt | 0 .../{upcoming => s}/solemn_doomguide.txt | 0 .../{upcoming => s}/sparas_bodyguard.txt | 0 .../{upcoming => s}/spectacular_showdown.txt | 0 .../{upcoming => s}/split_the_spoils.txt | 0 .../{upcoming => s}/steadfast_unicorn.txt | 0 .../{upcoming => s}/stick_together.txt | 0 .../{upcoming => s}/stirring_bard.txt | 0 .../cardsfolder/{upcoming => s}/stoneskin.txt | 0 .../{upcoming => s}/stonespeaker_crystal.txt | 0 .../{upcoming => s}/storm_kings_thunder.txt | 0 .../{upcoming => s}/street_urchin.txt | 0 .../{upcoming => s}/stunning_strike.txt | 0 .../{upcoming => s}/sunes_intervention.txt | 0 .../swashbuckler_extraordinaire.txt | 0 .../{upcoming => s}/sword_coast_sailor.txt | 0 .../sword_coast_serpent_capsizing_wave.txt | 0 .../{upcoming => t}/tabaxi_toucaneers.txt | 0 .../{upcoming => t}/tasha_unholy_archmage.txt | 0 .../{upcoming => t}/taunting_kobold.txt | 0 .../{upcoming => t}/tavern_brawler.txt | 0 .../{upcoming => t}/the_council_of_four.txt | 0 .../{upcoming => t}/the_hourglass_coven.txt | 0 .../{upcoming => t}/thrakkus_the_butcher.txt | 0 .../{upcoming => t}/thunderwave.txt | 0 .../{upcoming => t}/tiamats_fanatics.txt | 0 .../tlincalli_hunter_retrieve_prey.txt | 0 .../tomb_of_horrors_adventurer.txt | 0 .../topaz_dragon_entropic_cloud.txt | 0 .../{upcoming => t}/trailblazers_torch.txt | 0 .../{upcoming => t}/traumatic_prank.txt | 0 .../two_handed_axe_sweeping_cleave.txt | 0 .../cardsfolder/{upcoming => u}/uchuulon.txt | 0 .../{upcoming => u}/undercellar_myconid.txt | 0 .../{upcoming => u}/undercellar_sweep.txt | 0 .../cardsfolder/{upcoming => u}/undercity.txt | 0 .../{upcoming => u}/underdark_explorer.txt | 0 .../undermountain_adventurer.txt | 0 .../{upcoming => u}/uthgardt_fury.txt | 0 .../{upcoming => v}/venture_forth.txt | 0 .../{upcoming => v}/verdant_rejuvenation.txt | 0 .../{upcoming => v}/veteran_soldier.txt | 0 .../{upcoming => v}/vexing_puzzlebox.txt | 0 .../vhal_candelkeep_researcher.txt | 0 .../{upcoming => v}/vicious_battlerager.txt | 0 .../{upcoming => v}/viconia_drow_apostate.txt | 0 .../{upcoming => v}/vladimir_and_godfrey.txt | 0 .../vogar_necropolis_tyrant.txt | 0 .../volo_itinerant_scholar.txt | 0 .../res/cardsfolder/{upcoming => v}/vrock.txt | 0 .../{upcoming => w}/warehouse_thief.txt | 0 .../white_plume_adventurer.txt | 0 .../{upcoming => w}/wild_magic_surge.txt | 0 .../wilson_refined_grizzly.txt | 0 .../{upcoming => w}/windshaper_planetar.txt | 0 .../{upcoming => w}/winter_eladrin.txt | 0 .../{upcoming => w}/wizened_githzerai.txt | 0 .../{upcoming => w}/wrathful_red_dragon.txt | 0 .../wyll_blade_of_frontiers.txt | 0 .../{upcoming => w}/wyrms_crossing_patrol.txt | 0 .../{upcoming => x}/xanders_wake.txt | 0 .../{upcoming => y}/you_line_up_the_shot.txt | 0 .../you_look_upon_the_tarrasque.txt | 0 .../young_blue_dragon_sand_augury.txt | 0 .../young_red_dragon_bathe_in_gold.txt | 0 .../your_temple_is_under_attack.txt | 0 .../youre_confronted_by_robbers.txt | 0 .../youve_been_caught_stealing.txt | 0 .../zamriel_seraph_of_steel.txt | 0 .../zangief_the_red_cyclone.txt | 0 .../{upcoming => z}/zellix_sanity_flayer.txt | 18 +++++------ .../{upcoming => z}/zhentarim_bandit.txt | 0 375 files changed, 51 insertions(+), 51 deletions(-) rename forge-gui/res/cardsfolder/{upcoming => a}/aarakocra_sneak.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/abdel_adrian_gorions_ward.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/aboleth_spawn.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/acolyte_of_bahamut.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/agent_of_raffine.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/agent_of_the_iron_throne.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/agent_of_the_shadow_thieves.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/alaundo_the_seer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/alora_merry_thief.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/altar_of_bhaal_bone_offering.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/amber_gristle_omaul.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/ambitious_dragonborn.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/amethyst_dragon_explosive_crystal.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/ancient_bronze_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/ancient_copper_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/ancient_gold_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/ancient_silver_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/archivist_of_oghma.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/arming_gala.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/armor_of_shadows.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/arms_of_hadar.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/artificer_class.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/ascend_from_avernus.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/astarions_thirst.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/astral_confrontation.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/astral_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/atrocious_experiment.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => a}/avenging_hunter.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/baba_lysaga_night_witch.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/back_alley_gardener.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/baeloth_barrityl_entertainer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/baird_argivian_recruiter.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/baldurs_gate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/balor.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/bane_lord_of_darkness.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/banes_contingency.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/banishment.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/bank_job.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/barroom_brawl.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/basilisk_gate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/battle_angels_of_tyr.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/beckoning_will_o_wisp.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/big_spender.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/bind_to_secrecy.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/black_dragon_gate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/black_market_connections.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/blessed_hippogriff_tyrs_blesing.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/blood_money.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/bloodboil_sorceror.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/blur.txt (98%) rename forge-gui/res/cardsfolder/{upcoming => b}/bonecaller_cleric.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/bothersome_quasit.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/brainstealer_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/breath_weapon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/brokers_safeguard.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/bronze_walrus.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => b}/burakos_party_leader.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cabaretti_revels.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cadira_caller_of_the_small.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/calim_djinn_emperor.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/call_to_the_void.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/campfire.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/candlekeep_inspiration.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/candlekeep_sage.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/carefree_swinemaster.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/carnelian_orb_of_dragonkind.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/caves_of_chaos_adventurer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/celestial_vault.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/chain_devil.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/chaos_balor.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/chardalyn_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/choice_of_fortunes.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/circle_of_the_land_druid.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/clan_crafter.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cloak_of_the_bat.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cloakwood_hermit.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cloakwood_swarmkeeper.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/clockwork_fox.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cloudkill.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/colossal_badger_dig_deep.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cone_of_cold.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/contraband_livestock.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/coronation_of_chaos.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/craving_of_yeenoghu.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/criminal_past.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/crystal_dragon_rob_the_hoard.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cultist_of_the_absolute.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => c}/cut_a_deal.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/death_kiss.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/decanter_of_endless_water.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/deep_gnome_terramancer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/delayed_blast_fireball.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/descent_into_avernus.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/dire_mimic.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/displacer_kitten.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/diviner_of_fates.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/draconic_lore.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/draconic_muralists.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/dragon_cultist.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/dragonborn_looter.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/drillworks_mole.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/druid_of_the_emerald_grove.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/druidic_ritual.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/duke_ulder_ravenguard.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/dungeon_delver.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/dungeoneers_pack.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/durnan_of_the_yawning_portal.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => d}/dynaheir_invoker_adept.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/earth_tremor.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/earthquake_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/effluence_devourer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/ellyn_harbreeze_busybody.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/elminster.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/elturel_survivors.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/emerald_dragon_dissonant_wave.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/endless_evil.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/erinis_gloom_stalker.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/ettercap_web_shot.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => e}/explore_the_underdark.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/faceless_one.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/faldorn_dread_wolf_herald.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/fang_dragon_forktail_sweep.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/far_traveler.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/feywild_caretaker.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/feywild_visitor.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/firbolg_flutist.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/firkraag_cunning_instigator.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/flaming_fist.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/flaming_fist_officer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/folk_hero.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/font_of_magic.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/fraying_line.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => f}/from_the_catacombs.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gale_waterdeep_prodigy.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/ganax_astral_hunter.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gate_of_the_black_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gate_to_manorborn.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gate_to_seatower.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gate_to_the_citadel.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gate_to_tumbledown.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/genasi_enforcers.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/ghastly_death_tyrant.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/ghost_lantern_bind_spirit.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/giant_ankheg.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/giant_regrowth.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/githzerai_monk.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gluntch_the_bestower.txt (99%) rename forge-gui/res/cardsfolder/{upcoming => g}/gnoll_war_band.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/goggles_of_night.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/goliath_paladin.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gond_gate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/grave_choice.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/graven_archfiend.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gray_harbor_merfolk.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gray_slaad_entropic_decay.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/greatsword_of_tyr.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/green_slime.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/grell_philosopher.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/guardian_naga_banishing_coils.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/guiding_bolt.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/guild_artisan.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/guildsworn_prowler.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => g}/gut_true_soul_zealot.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_ceaseless_torment.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_dark_duress.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_deaths_legion.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_inner_weakness.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_mages_doom.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_noxious_nightmares.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_scoured_thoughts.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_syphoned_breath.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hag_of_twisted_visions.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/halsin_emerald_archdruid.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hammers_of_moradin.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hardy_outlander.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/harper_recruiter.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/haunted_one.txt (99%) rename forge-gui/res/cardsfolder/{upcoming => h}/heap_gate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/henzie_toolbox_torre.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/herald_of_vengeance.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hezrou_demonic_stench.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/hook_horror.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => h}/horn_of_valhalla_ysgards_call.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/icewind_stalwart.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/illithid_harvester_plant_tadpoles.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/imaryll_elfhame_elite.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/imoen_mystic_trickster.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/incessant_provocation.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/indulge_excess.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/ingenious_artillerist.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/inspired_tinkering.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/inspiring_leader.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/insufferable_balladeer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/intellect_devourer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => i}/iron_mastiff.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => j}/jade_orb_of_dragonkind.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => j}/jaheira_friend_of_the_forest.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => j}/jaheiras_respite.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => j}/jan_jansen_chaos_crafter.txt (98%) rename forge-gui/res/cardsfolder/{upcoming => j}/javelin_of_lightning.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => j}/jon_irenicus_shattered_one.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => j}/journey_to_the_lost_city.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => j}/juvenile_mist_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => k}/kagha_shadow_archdruid.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => k}/karlach_fury_of_avernus.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => k}/kenku_artificer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => k}/korlessa_scale_singer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/laezel_vlaakiths_champion.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/laezels_acrobatics.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/lantern_of_revealing.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/lapis_orb_of_dragonkind.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/livaan_cultist_of_tiamat.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/loot_dispute.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/lulu_loyal_hollyphant.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => l}/lurking_green_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/maeve_insidious_singer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/mahadi_emporium_master.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/majestic_genesis.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/manor_gate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/marching_duodrone.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/marut.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/master_chef.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/mighty_servant_of_leuk_o.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/miirym_sentinel_wyrm.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/minthara_merciless_soul.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/mirror_of_life_trapping.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/mocking_doppelganger.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/modify_memory.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/mold_folk.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/moonshae_pixie.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/multiclass_baldric.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/myconid_spore_tender.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/myrkuls_edict.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/myrkuls_invoker.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => m}/mystery_key.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nalfeshnee.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nalia_dearnise.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nautiloid_ship.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/navigation_orb.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/neera_wild_mage.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nefarious_imp.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nightclub_bouncer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nimbleclaw_adept.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nimblewright_schematic.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nine-fingers_keene.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/noble_heritage.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nogi_draco_zealot.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => n}/nothic.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => o}/obscura_polymorphist.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => o}/oceanus_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => o}/oji_the_exquisite_blade.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => o}/overwhelming_encounter.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => o}/owlbear_cub.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => o}/owlbear_shepherd.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => o}/oyaminartok_polar_werebear.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/pack_attack.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/pact_weapon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/pass_the_torch.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/passageway_seer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/passionate_archaeologist.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/patriars_humiliation.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/patriars_seal.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/patron_of_the_arts.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/pegasus_guardian_rescue_the_foal.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/poison_the_blade.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/popular_entertainer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/prized_statue.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/pseudodragon_familiar.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => p}/psionic_ritual.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/raised_by_giants.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/rasaad_yn_bashir.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/ravenloft_adventurer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/reckless_barbarian.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/recruitment_drive.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/renari_merchant_of_marvels.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/rescuer_chwinga.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/rilsa_rael_kingpin.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/riveteers_provocateur.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/robe_of_the_archmagi.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/rope_line_attendant.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => r}/rug_of_smothering.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/saddle_of_the_cavalier.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/safana_calimport.cutthroat.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sailors_bane.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sapphire_dragon_psionic_pulse.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sarevok_deathbringer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sarevoks_tome.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/scaled_nurturer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/scion_of_halaster.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/scouting_hawk.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sculpted_sunburst.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sea_gate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/seasoned_dungeoneer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/seek_new_knowledge.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/shadowheart_dark_justiciar.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/shameless_charlatan.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sharpshooter_elf.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/shattering_finale.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sigil_of_myrkul.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/signature_spells.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sivriss_nightmare_speaker.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/skanos_dragonheart.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/skyline_savior.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/snowborn_simulacra.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/solemn_doomguide.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sparas_bodyguard.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/spectacular_showdown.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/split_the_spoils.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/steadfast_unicorn.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/stick_together.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/stirring_bard.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/stoneskin.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/stonespeaker_crystal.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/storm_kings_thunder.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/street_urchin.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/stunning_strike.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sunes_intervention.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/swashbuckler_extraordinaire.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sword_coast_sailor.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => s}/sword_coast_serpent_capsizing_wave.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/tabaxi_toucaneers.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/tasha_unholy_archmage.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/taunting_kobold.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/tavern_brawler.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/the_council_of_four.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/the_hourglass_coven.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/thrakkus_the_butcher.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/thunderwave.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/tiamats_fanatics.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/tlincalli_hunter_retrieve_prey.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/tomb_of_horrors_adventurer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/topaz_dragon_entropic_cloud.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/trailblazers_torch.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/traumatic_prank.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => t}/two_handed_axe_sweeping_cleave.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => u}/uchuulon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => u}/undercellar_myconid.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => u}/undercellar_sweep.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => u}/undercity.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => u}/underdark_explorer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => u}/undermountain_adventurer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => u}/uthgardt_fury.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/venture_forth.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/verdant_rejuvenation.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/veteran_soldier.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/vexing_puzzlebox.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/vhal_candelkeep_researcher.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/vicious_battlerager.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/viconia_drow_apostate.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/vladimir_and_godfrey.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/vogar_necropolis_tyrant.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/volo_itinerant_scholar.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => v}/vrock.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/warehouse_thief.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/white_plume_adventurer.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/wild_magic_surge.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/wilson_refined_grizzly.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/windshaper_planetar.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/winter_eladrin.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/wizened_githzerai.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/wrathful_red_dragon.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/wyll_blade_of_frontiers.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => w}/wyrms_crossing_patrol.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => x}/xanders_wake.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => y}/you_line_up_the_shot.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => y}/you_look_upon_the_tarrasque.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => y}/young_blue_dragon_sand_augury.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => y}/young_red_dragon_bathe_in_gold.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => y}/your_temple_is_under_attack.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => y}/youre_confronted_by_robbers.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => y}/youve_been_caught_stealing.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => z}/zamriel_seraph_of_steel.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => z}/zangief_the_red_cyclone.txt (100%) rename forge-gui/res/cardsfolder/{upcoming => z}/zellix_sanity_flayer.txt (98%) rename forge-gui/res/cardsfolder/{upcoming => z}/zhentarim_bandit.txt (100%) diff --git a/forge-gui/res/cardsfolder/upcoming/aarakocra_sneak.txt b/forge-gui/res/cardsfolder/a/aarakocra_sneak.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/aarakocra_sneak.txt rename to forge-gui/res/cardsfolder/a/aarakocra_sneak.txt diff --git a/forge-gui/res/cardsfolder/upcoming/abdel_adrian_gorions_ward.txt b/forge-gui/res/cardsfolder/a/abdel_adrian_gorions_ward.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/abdel_adrian_gorions_ward.txt rename to forge-gui/res/cardsfolder/a/abdel_adrian_gorions_ward.txt diff --git a/forge-gui/res/cardsfolder/upcoming/aboleth_spawn.txt b/forge-gui/res/cardsfolder/a/aboleth_spawn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/aboleth_spawn.txt rename to forge-gui/res/cardsfolder/a/aboleth_spawn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/acolyte_of_bahamut.txt b/forge-gui/res/cardsfolder/a/acolyte_of_bahamut.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/acolyte_of_bahamut.txt rename to forge-gui/res/cardsfolder/a/acolyte_of_bahamut.txt diff --git a/forge-gui/res/cardsfolder/upcoming/agent_of_raffine.txt b/forge-gui/res/cardsfolder/a/agent_of_raffine.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/agent_of_raffine.txt rename to forge-gui/res/cardsfolder/a/agent_of_raffine.txt diff --git a/forge-gui/res/cardsfolder/upcoming/agent_of_the_iron_throne.txt b/forge-gui/res/cardsfolder/a/agent_of_the_iron_throne.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/agent_of_the_iron_throne.txt rename to forge-gui/res/cardsfolder/a/agent_of_the_iron_throne.txt diff --git a/forge-gui/res/cardsfolder/upcoming/agent_of_the_shadow_thieves.txt b/forge-gui/res/cardsfolder/a/agent_of_the_shadow_thieves.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/agent_of_the_shadow_thieves.txt rename to forge-gui/res/cardsfolder/a/agent_of_the_shadow_thieves.txt diff --git a/forge-gui/res/cardsfolder/upcoming/alaundo_the_seer.txt b/forge-gui/res/cardsfolder/a/alaundo_the_seer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/alaundo_the_seer.txt rename to forge-gui/res/cardsfolder/a/alaundo_the_seer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/alora_merry_thief.txt b/forge-gui/res/cardsfolder/a/alora_merry_thief.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/alora_merry_thief.txt rename to forge-gui/res/cardsfolder/a/alora_merry_thief.txt diff --git a/forge-gui/res/cardsfolder/upcoming/altar_of_bhaal_bone_offering.txt b/forge-gui/res/cardsfolder/a/altar_of_bhaal_bone_offering.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/altar_of_bhaal_bone_offering.txt rename to forge-gui/res/cardsfolder/a/altar_of_bhaal_bone_offering.txt diff --git a/forge-gui/res/cardsfolder/upcoming/amber_gristle_omaul.txt b/forge-gui/res/cardsfolder/a/amber_gristle_omaul.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/amber_gristle_omaul.txt rename to forge-gui/res/cardsfolder/a/amber_gristle_omaul.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ambitious_dragonborn.txt b/forge-gui/res/cardsfolder/a/ambitious_dragonborn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ambitious_dragonborn.txt rename to forge-gui/res/cardsfolder/a/ambitious_dragonborn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/amethyst_dragon_explosive_crystal.txt b/forge-gui/res/cardsfolder/a/amethyst_dragon_explosive_crystal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/amethyst_dragon_explosive_crystal.txt rename to forge-gui/res/cardsfolder/a/amethyst_dragon_explosive_crystal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ancient_bronze_dragon.txt b/forge-gui/res/cardsfolder/a/ancient_bronze_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ancient_bronze_dragon.txt rename to forge-gui/res/cardsfolder/a/ancient_bronze_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ancient_copper_dragon.txt b/forge-gui/res/cardsfolder/a/ancient_copper_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ancient_copper_dragon.txt rename to forge-gui/res/cardsfolder/a/ancient_copper_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ancient_gold_dragon.txt b/forge-gui/res/cardsfolder/a/ancient_gold_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ancient_gold_dragon.txt rename to forge-gui/res/cardsfolder/a/ancient_gold_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ancient_silver_dragon.txt b/forge-gui/res/cardsfolder/a/ancient_silver_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ancient_silver_dragon.txt rename to forge-gui/res/cardsfolder/a/ancient_silver_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/archivist_of_oghma.txt b/forge-gui/res/cardsfolder/a/archivist_of_oghma.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/archivist_of_oghma.txt rename to forge-gui/res/cardsfolder/a/archivist_of_oghma.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arming_gala.txt b/forge-gui/res/cardsfolder/a/arming_gala.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arming_gala.txt rename to forge-gui/res/cardsfolder/a/arming_gala.txt diff --git a/forge-gui/res/cardsfolder/upcoming/armor_of_shadows.txt b/forge-gui/res/cardsfolder/a/armor_of_shadows.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/armor_of_shadows.txt rename to forge-gui/res/cardsfolder/a/armor_of_shadows.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arms_of_hadar.txt b/forge-gui/res/cardsfolder/a/arms_of_hadar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arms_of_hadar.txt rename to forge-gui/res/cardsfolder/a/arms_of_hadar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/artificer_class.txt b/forge-gui/res/cardsfolder/a/artificer_class.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/artificer_class.txt rename to forge-gui/res/cardsfolder/a/artificer_class.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ascend_from_avernus.txt b/forge-gui/res/cardsfolder/a/ascend_from_avernus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ascend_from_avernus.txt rename to forge-gui/res/cardsfolder/a/ascend_from_avernus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/astarions_thirst.txt b/forge-gui/res/cardsfolder/a/astarions_thirst.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/astarions_thirst.txt rename to forge-gui/res/cardsfolder/a/astarions_thirst.txt diff --git a/forge-gui/res/cardsfolder/upcoming/astral_confrontation.txt b/forge-gui/res/cardsfolder/a/astral_confrontation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/astral_confrontation.txt rename to forge-gui/res/cardsfolder/a/astral_confrontation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/astral_dragon.txt b/forge-gui/res/cardsfolder/a/astral_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/astral_dragon.txt rename to forge-gui/res/cardsfolder/a/astral_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/atrocious_experiment.txt b/forge-gui/res/cardsfolder/a/atrocious_experiment.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/atrocious_experiment.txt rename to forge-gui/res/cardsfolder/a/atrocious_experiment.txt diff --git a/forge-gui/res/cardsfolder/upcoming/avenging_hunter.txt b/forge-gui/res/cardsfolder/a/avenging_hunter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/avenging_hunter.txt rename to forge-gui/res/cardsfolder/a/avenging_hunter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/baba_lysaga_night_witch.txt b/forge-gui/res/cardsfolder/b/baba_lysaga_night_witch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/baba_lysaga_night_witch.txt rename to forge-gui/res/cardsfolder/b/baba_lysaga_night_witch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/back_alley_gardener.txt b/forge-gui/res/cardsfolder/b/back_alley_gardener.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/back_alley_gardener.txt rename to forge-gui/res/cardsfolder/b/back_alley_gardener.txt diff --git a/forge-gui/res/cardsfolder/upcoming/baeloth_barrityl_entertainer.txt b/forge-gui/res/cardsfolder/b/baeloth_barrityl_entertainer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/baeloth_barrityl_entertainer.txt rename to forge-gui/res/cardsfolder/b/baeloth_barrityl_entertainer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/baird_argivian_recruiter.txt b/forge-gui/res/cardsfolder/b/baird_argivian_recruiter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/baird_argivian_recruiter.txt rename to forge-gui/res/cardsfolder/b/baird_argivian_recruiter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/baldurs_gate.txt b/forge-gui/res/cardsfolder/b/baldurs_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/baldurs_gate.txt rename to forge-gui/res/cardsfolder/b/baldurs_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/balor.txt b/forge-gui/res/cardsfolder/b/balor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/balor.txt rename to forge-gui/res/cardsfolder/b/balor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bane_lord_of_darkness.txt b/forge-gui/res/cardsfolder/b/bane_lord_of_darkness.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bane_lord_of_darkness.txt rename to forge-gui/res/cardsfolder/b/bane_lord_of_darkness.txt diff --git a/forge-gui/res/cardsfolder/upcoming/banes_contingency.txt b/forge-gui/res/cardsfolder/b/banes_contingency.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/banes_contingency.txt rename to forge-gui/res/cardsfolder/b/banes_contingency.txt diff --git a/forge-gui/res/cardsfolder/upcoming/banishment.txt b/forge-gui/res/cardsfolder/b/banishment.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/banishment.txt rename to forge-gui/res/cardsfolder/b/banishment.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bank_job.txt b/forge-gui/res/cardsfolder/b/bank_job.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bank_job.txt rename to forge-gui/res/cardsfolder/b/bank_job.txt diff --git a/forge-gui/res/cardsfolder/upcoming/barroom_brawl.txt b/forge-gui/res/cardsfolder/b/barroom_brawl.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/barroom_brawl.txt rename to forge-gui/res/cardsfolder/b/barroom_brawl.txt diff --git a/forge-gui/res/cardsfolder/upcoming/basilisk_gate.txt b/forge-gui/res/cardsfolder/b/basilisk_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/basilisk_gate.txt rename to forge-gui/res/cardsfolder/b/basilisk_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/battle_angels_of_tyr.txt b/forge-gui/res/cardsfolder/b/battle_angels_of_tyr.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/battle_angels_of_tyr.txt rename to forge-gui/res/cardsfolder/b/battle_angels_of_tyr.txt diff --git a/forge-gui/res/cardsfolder/upcoming/beckoning_will_o_wisp.txt b/forge-gui/res/cardsfolder/b/beckoning_will_o_wisp.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/beckoning_will_o_wisp.txt rename to forge-gui/res/cardsfolder/b/beckoning_will_o_wisp.txt diff --git a/forge-gui/res/cardsfolder/upcoming/big_spender.txt b/forge-gui/res/cardsfolder/b/big_spender.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/big_spender.txt rename to forge-gui/res/cardsfolder/b/big_spender.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bind_to_secrecy.txt b/forge-gui/res/cardsfolder/b/bind_to_secrecy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bind_to_secrecy.txt rename to forge-gui/res/cardsfolder/b/bind_to_secrecy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/black_dragon_gate.txt b/forge-gui/res/cardsfolder/b/black_dragon_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/black_dragon_gate.txt rename to forge-gui/res/cardsfolder/b/black_dragon_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/black_market_connections.txt b/forge-gui/res/cardsfolder/b/black_market_connections.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/black_market_connections.txt rename to forge-gui/res/cardsfolder/b/black_market_connections.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blessed_hippogriff_tyrs_blesing.txt b/forge-gui/res/cardsfolder/b/blessed_hippogriff_tyrs_blesing.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/blessed_hippogriff_tyrs_blesing.txt rename to forge-gui/res/cardsfolder/b/blessed_hippogriff_tyrs_blesing.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blood_money.txt b/forge-gui/res/cardsfolder/b/blood_money.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/blood_money.txt rename to forge-gui/res/cardsfolder/b/blood_money.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bloodboil_sorceror.txt b/forge-gui/res/cardsfolder/b/bloodboil_sorceror.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bloodboil_sorceror.txt rename to forge-gui/res/cardsfolder/b/bloodboil_sorceror.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blur.txt b/forge-gui/res/cardsfolder/b/blur.txt similarity index 98% rename from forge-gui/res/cardsfolder/upcoming/blur.txt rename to forge-gui/res/cardsfolder/b/blur.txt index 5a87dc42d3f..93d49618165 100644 --- a/forge-gui/res/cardsfolder/upcoming/blur.txt +++ b/forge-gui/res/cardsfolder/b/blur.txt @@ -1,8 +1,8 @@ -Name:Blur -ManaCost:2 U -Types:Instant -A:SP$ ChangeZone | ValidTgts$ Creature.YouCtrl | Origin$ Battlefield | Destination$ Exile | TgtPrompt$ Select target creature you control | RememberTargets$ True | SubAbility$ DBReturn | SpellDescription$ Exile target creature you control, then return that card to the battlefield under their owner's control. -SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Destination$ Battlefield | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. -Oracle:Exile target creature you control, then return that card to the battlefield under their owner's control.\nDraw a card. +Name:Blur +ManaCost:2 U +Types:Instant +A:SP$ ChangeZone | ValidTgts$ Creature.YouCtrl | Origin$ Battlefield | Destination$ Exile | TgtPrompt$ Select target creature you control | RememberTargets$ True | SubAbility$ DBReturn | SpellDescription$ Exile target creature you control, then return that card to the battlefield under their owner's control. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Destination$ Battlefield | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. +Oracle:Exile target creature you control, then return that card to the battlefield under their owner's control.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/bonecaller_cleric.txt b/forge-gui/res/cardsfolder/b/bonecaller_cleric.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bonecaller_cleric.txt rename to forge-gui/res/cardsfolder/b/bonecaller_cleric.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bothersome_quasit.txt b/forge-gui/res/cardsfolder/b/bothersome_quasit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bothersome_quasit.txt rename to forge-gui/res/cardsfolder/b/bothersome_quasit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/brainstealer_dragon.txt b/forge-gui/res/cardsfolder/b/brainstealer_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/brainstealer_dragon.txt rename to forge-gui/res/cardsfolder/b/brainstealer_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/breath_weapon.txt b/forge-gui/res/cardsfolder/b/breath_weapon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/breath_weapon.txt rename to forge-gui/res/cardsfolder/b/breath_weapon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/brokers_safeguard.txt b/forge-gui/res/cardsfolder/b/brokers_safeguard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/brokers_safeguard.txt rename to forge-gui/res/cardsfolder/b/brokers_safeguard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bronze_walrus.txt b/forge-gui/res/cardsfolder/b/bronze_walrus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bronze_walrus.txt rename to forge-gui/res/cardsfolder/b/bronze_walrus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/burakos_party_leader.txt b/forge-gui/res/cardsfolder/b/burakos_party_leader.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/burakos_party_leader.txt rename to forge-gui/res/cardsfolder/b/burakos_party_leader.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cabaretti_revels.txt b/forge-gui/res/cardsfolder/c/cabaretti_revels.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cabaretti_revels.txt rename to forge-gui/res/cardsfolder/c/cabaretti_revels.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cadira_caller_of_the_small.txt b/forge-gui/res/cardsfolder/c/cadira_caller_of_the_small.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cadira_caller_of_the_small.txt rename to forge-gui/res/cardsfolder/c/cadira_caller_of_the_small.txt diff --git a/forge-gui/res/cardsfolder/upcoming/calim_djinn_emperor.txt b/forge-gui/res/cardsfolder/c/calim_djinn_emperor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/calim_djinn_emperor.txt rename to forge-gui/res/cardsfolder/c/calim_djinn_emperor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt b/forge-gui/res/cardsfolder/c/call_to_the_void.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt rename to forge-gui/res/cardsfolder/c/call_to_the_void.txt diff --git a/forge-gui/res/cardsfolder/upcoming/campfire.txt b/forge-gui/res/cardsfolder/c/campfire.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/campfire.txt rename to forge-gui/res/cardsfolder/c/campfire.txt diff --git a/forge-gui/res/cardsfolder/upcoming/candlekeep_inspiration.txt b/forge-gui/res/cardsfolder/c/candlekeep_inspiration.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/candlekeep_inspiration.txt rename to forge-gui/res/cardsfolder/c/candlekeep_inspiration.txt diff --git a/forge-gui/res/cardsfolder/upcoming/candlekeep_sage.txt b/forge-gui/res/cardsfolder/c/candlekeep_sage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/candlekeep_sage.txt rename to forge-gui/res/cardsfolder/c/candlekeep_sage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/carefree_swinemaster.txt b/forge-gui/res/cardsfolder/c/carefree_swinemaster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/carefree_swinemaster.txt rename to forge-gui/res/cardsfolder/c/carefree_swinemaster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/carnelian_orb_of_dragonkind.txt b/forge-gui/res/cardsfolder/c/carnelian_orb_of_dragonkind.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/carnelian_orb_of_dragonkind.txt rename to forge-gui/res/cardsfolder/c/carnelian_orb_of_dragonkind.txt diff --git a/forge-gui/res/cardsfolder/upcoming/caves_of_chaos_adventurer.txt b/forge-gui/res/cardsfolder/c/caves_of_chaos_adventurer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/caves_of_chaos_adventurer.txt rename to forge-gui/res/cardsfolder/c/caves_of_chaos_adventurer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/celestial_vault.txt b/forge-gui/res/cardsfolder/c/celestial_vault.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/celestial_vault.txt rename to forge-gui/res/cardsfolder/c/celestial_vault.txt diff --git a/forge-gui/res/cardsfolder/upcoming/chain_devil.txt b/forge-gui/res/cardsfolder/c/chain_devil.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chain_devil.txt rename to forge-gui/res/cardsfolder/c/chain_devil.txt diff --git a/forge-gui/res/cardsfolder/upcoming/chaos_balor.txt b/forge-gui/res/cardsfolder/c/chaos_balor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chaos_balor.txt rename to forge-gui/res/cardsfolder/c/chaos_balor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/chardalyn_dragon.txt b/forge-gui/res/cardsfolder/c/chardalyn_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chardalyn_dragon.txt rename to forge-gui/res/cardsfolder/c/chardalyn_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/choice_of_fortunes.txt b/forge-gui/res/cardsfolder/c/choice_of_fortunes.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/choice_of_fortunes.txt rename to forge-gui/res/cardsfolder/c/choice_of_fortunes.txt diff --git a/forge-gui/res/cardsfolder/upcoming/circle_of_the_land_druid.txt b/forge-gui/res/cardsfolder/c/circle_of_the_land_druid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/circle_of_the_land_druid.txt rename to forge-gui/res/cardsfolder/c/circle_of_the_land_druid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clan_crafter.txt b/forge-gui/res/cardsfolder/c/clan_crafter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clan_crafter.txt rename to forge-gui/res/cardsfolder/c/clan_crafter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cloak_of_the_bat.txt b/forge-gui/res/cardsfolder/c/cloak_of_the_bat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cloak_of_the_bat.txt rename to forge-gui/res/cardsfolder/c/cloak_of_the_bat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cloakwood_hermit.txt b/forge-gui/res/cardsfolder/c/cloakwood_hermit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cloakwood_hermit.txt rename to forge-gui/res/cardsfolder/c/cloakwood_hermit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cloakwood_swarmkeeper.txt b/forge-gui/res/cardsfolder/c/cloakwood_swarmkeeper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cloakwood_swarmkeeper.txt rename to forge-gui/res/cardsfolder/c/cloakwood_swarmkeeper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clockwork_fox.txt b/forge-gui/res/cardsfolder/c/clockwork_fox.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clockwork_fox.txt rename to forge-gui/res/cardsfolder/c/clockwork_fox.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cloudkill.txt b/forge-gui/res/cardsfolder/c/cloudkill.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cloudkill.txt rename to forge-gui/res/cardsfolder/c/cloudkill.txt diff --git a/forge-gui/res/cardsfolder/upcoming/colossal_badger_dig_deep.txt b/forge-gui/res/cardsfolder/c/colossal_badger_dig_deep.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/colossal_badger_dig_deep.txt rename to forge-gui/res/cardsfolder/c/colossal_badger_dig_deep.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cone_of_cold.txt b/forge-gui/res/cardsfolder/c/cone_of_cold.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cone_of_cold.txt rename to forge-gui/res/cardsfolder/c/cone_of_cold.txt diff --git a/forge-gui/res/cardsfolder/upcoming/contraband_livestock.txt b/forge-gui/res/cardsfolder/c/contraband_livestock.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/contraband_livestock.txt rename to forge-gui/res/cardsfolder/c/contraband_livestock.txt diff --git a/forge-gui/res/cardsfolder/upcoming/coronation_of_chaos.txt b/forge-gui/res/cardsfolder/c/coronation_of_chaos.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/coronation_of_chaos.txt rename to forge-gui/res/cardsfolder/c/coronation_of_chaos.txt diff --git a/forge-gui/res/cardsfolder/upcoming/craving_of_yeenoghu.txt b/forge-gui/res/cardsfolder/c/craving_of_yeenoghu.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/craving_of_yeenoghu.txt rename to forge-gui/res/cardsfolder/c/craving_of_yeenoghu.txt diff --git a/forge-gui/res/cardsfolder/upcoming/criminal_past.txt b/forge-gui/res/cardsfolder/c/criminal_past.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/criminal_past.txt rename to forge-gui/res/cardsfolder/c/criminal_past.txt diff --git a/forge-gui/res/cardsfolder/upcoming/crystal_dragon_rob_the_hoard.txt b/forge-gui/res/cardsfolder/c/crystal_dragon_rob_the_hoard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/crystal_dragon_rob_the_hoard.txt rename to forge-gui/res/cardsfolder/c/crystal_dragon_rob_the_hoard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cultist_of_the_absolute.txt b/forge-gui/res/cardsfolder/c/cultist_of_the_absolute.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cultist_of_the_absolute.txt rename to forge-gui/res/cardsfolder/c/cultist_of_the_absolute.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cut_a_deal.txt b/forge-gui/res/cardsfolder/c/cut_a_deal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cut_a_deal.txt rename to forge-gui/res/cardsfolder/c/cut_a_deal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/death_kiss.txt b/forge-gui/res/cardsfolder/d/death_kiss.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/death_kiss.txt rename to forge-gui/res/cardsfolder/d/death_kiss.txt diff --git a/forge-gui/res/cardsfolder/upcoming/decanter_of_endless_water.txt b/forge-gui/res/cardsfolder/d/decanter_of_endless_water.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/decanter_of_endless_water.txt rename to forge-gui/res/cardsfolder/d/decanter_of_endless_water.txt diff --git a/forge-gui/res/cardsfolder/upcoming/deep_gnome_terramancer.txt b/forge-gui/res/cardsfolder/d/deep_gnome_terramancer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/deep_gnome_terramancer.txt rename to forge-gui/res/cardsfolder/d/deep_gnome_terramancer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/delayed_blast_fireball.txt b/forge-gui/res/cardsfolder/d/delayed_blast_fireball.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/delayed_blast_fireball.txt rename to forge-gui/res/cardsfolder/d/delayed_blast_fireball.txt diff --git a/forge-gui/res/cardsfolder/upcoming/descent_into_avernus.txt b/forge-gui/res/cardsfolder/d/descent_into_avernus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/descent_into_avernus.txt rename to forge-gui/res/cardsfolder/d/descent_into_avernus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dire_mimic.txt b/forge-gui/res/cardsfolder/d/dire_mimic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dire_mimic.txt rename to forge-gui/res/cardsfolder/d/dire_mimic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/displacer_kitten.txt b/forge-gui/res/cardsfolder/d/displacer_kitten.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/displacer_kitten.txt rename to forge-gui/res/cardsfolder/d/displacer_kitten.txt diff --git a/forge-gui/res/cardsfolder/upcoming/diviner_of_fates.txt b/forge-gui/res/cardsfolder/d/diviner_of_fates.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/diviner_of_fates.txt rename to forge-gui/res/cardsfolder/d/diviner_of_fates.txt diff --git a/forge-gui/res/cardsfolder/upcoming/draconic_lore.txt b/forge-gui/res/cardsfolder/d/draconic_lore.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/draconic_lore.txt rename to forge-gui/res/cardsfolder/d/draconic_lore.txt diff --git a/forge-gui/res/cardsfolder/upcoming/draconic_muralists.txt b/forge-gui/res/cardsfolder/d/draconic_muralists.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/draconic_muralists.txt rename to forge-gui/res/cardsfolder/d/draconic_muralists.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dragon_cultist.txt b/forge-gui/res/cardsfolder/d/dragon_cultist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dragon_cultist.txt rename to forge-gui/res/cardsfolder/d/dragon_cultist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dragonborn_looter.txt b/forge-gui/res/cardsfolder/d/dragonborn_looter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dragonborn_looter.txt rename to forge-gui/res/cardsfolder/d/dragonborn_looter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/drillworks_mole.txt b/forge-gui/res/cardsfolder/d/drillworks_mole.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/drillworks_mole.txt rename to forge-gui/res/cardsfolder/d/drillworks_mole.txt diff --git a/forge-gui/res/cardsfolder/upcoming/druid_of_the_emerald_grove.txt b/forge-gui/res/cardsfolder/d/druid_of_the_emerald_grove.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/druid_of_the_emerald_grove.txt rename to forge-gui/res/cardsfolder/d/druid_of_the_emerald_grove.txt diff --git a/forge-gui/res/cardsfolder/upcoming/druidic_ritual.txt b/forge-gui/res/cardsfolder/d/druidic_ritual.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/druidic_ritual.txt rename to forge-gui/res/cardsfolder/d/druidic_ritual.txt diff --git a/forge-gui/res/cardsfolder/upcoming/duke_ulder_ravenguard.txt b/forge-gui/res/cardsfolder/d/duke_ulder_ravenguard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/duke_ulder_ravenguard.txt rename to forge-gui/res/cardsfolder/d/duke_ulder_ravenguard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dungeon_delver.txt b/forge-gui/res/cardsfolder/d/dungeon_delver.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dungeon_delver.txt rename to forge-gui/res/cardsfolder/d/dungeon_delver.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dungeoneers_pack.txt b/forge-gui/res/cardsfolder/d/dungeoneers_pack.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dungeoneers_pack.txt rename to forge-gui/res/cardsfolder/d/dungeoneers_pack.txt diff --git a/forge-gui/res/cardsfolder/upcoming/durnan_of_the_yawning_portal.txt b/forge-gui/res/cardsfolder/d/durnan_of_the_yawning_portal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/durnan_of_the_yawning_portal.txt rename to forge-gui/res/cardsfolder/d/durnan_of_the_yawning_portal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dynaheir_invoker_adept.txt b/forge-gui/res/cardsfolder/d/dynaheir_invoker_adept.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dynaheir_invoker_adept.txt rename to forge-gui/res/cardsfolder/d/dynaheir_invoker_adept.txt diff --git a/forge-gui/res/cardsfolder/upcoming/earth_tremor.txt b/forge-gui/res/cardsfolder/e/earth_tremor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/earth_tremor.txt rename to forge-gui/res/cardsfolder/e/earth_tremor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/earthquake_dragon.txt b/forge-gui/res/cardsfolder/e/earthquake_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/earthquake_dragon.txt rename to forge-gui/res/cardsfolder/e/earthquake_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/effluence_devourer.txt b/forge-gui/res/cardsfolder/e/effluence_devourer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/effluence_devourer.txt rename to forge-gui/res/cardsfolder/e/effluence_devourer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ellyn_harbreeze_busybody.txt b/forge-gui/res/cardsfolder/e/ellyn_harbreeze_busybody.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ellyn_harbreeze_busybody.txt rename to forge-gui/res/cardsfolder/e/ellyn_harbreeze_busybody.txt diff --git a/forge-gui/res/cardsfolder/upcoming/elminster.txt b/forge-gui/res/cardsfolder/e/elminster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/elminster.txt rename to forge-gui/res/cardsfolder/e/elminster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/elturel_survivors.txt b/forge-gui/res/cardsfolder/e/elturel_survivors.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/elturel_survivors.txt rename to forge-gui/res/cardsfolder/e/elturel_survivors.txt diff --git a/forge-gui/res/cardsfolder/upcoming/emerald_dragon_dissonant_wave.txt b/forge-gui/res/cardsfolder/e/emerald_dragon_dissonant_wave.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/emerald_dragon_dissonant_wave.txt rename to forge-gui/res/cardsfolder/e/emerald_dragon_dissonant_wave.txt diff --git a/forge-gui/res/cardsfolder/upcoming/endless_evil.txt b/forge-gui/res/cardsfolder/e/endless_evil.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/endless_evil.txt rename to forge-gui/res/cardsfolder/e/endless_evil.txt diff --git a/forge-gui/res/cardsfolder/upcoming/erinis_gloom_stalker.txt b/forge-gui/res/cardsfolder/e/erinis_gloom_stalker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/erinis_gloom_stalker.txt rename to forge-gui/res/cardsfolder/e/erinis_gloom_stalker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ettercap_web_shot.txt b/forge-gui/res/cardsfolder/e/ettercap_web_shot.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ettercap_web_shot.txt rename to forge-gui/res/cardsfolder/e/ettercap_web_shot.txt diff --git a/forge-gui/res/cardsfolder/upcoming/explore_the_underdark.txt b/forge-gui/res/cardsfolder/e/explore_the_underdark.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/explore_the_underdark.txt rename to forge-gui/res/cardsfolder/e/explore_the_underdark.txt diff --git a/forge-gui/res/cardsfolder/upcoming/faceless_one.txt b/forge-gui/res/cardsfolder/f/faceless_one.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/faceless_one.txt rename to forge-gui/res/cardsfolder/f/faceless_one.txt diff --git a/forge-gui/res/cardsfolder/upcoming/faldorn_dread_wolf_herald.txt b/forge-gui/res/cardsfolder/f/faldorn_dread_wolf_herald.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/faldorn_dread_wolf_herald.txt rename to forge-gui/res/cardsfolder/f/faldorn_dread_wolf_herald.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fang_dragon_forktail_sweep.txt b/forge-gui/res/cardsfolder/f/fang_dragon_forktail_sweep.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fang_dragon_forktail_sweep.txt rename to forge-gui/res/cardsfolder/f/fang_dragon_forktail_sweep.txt diff --git a/forge-gui/res/cardsfolder/upcoming/far_traveler.txt b/forge-gui/res/cardsfolder/f/far_traveler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/far_traveler.txt rename to forge-gui/res/cardsfolder/f/far_traveler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/feywild_caretaker.txt b/forge-gui/res/cardsfolder/f/feywild_caretaker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/feywild_caretaker.txt rename to forge-gui/res/cardsfolder/f/feywild_caretaker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/feywild_visitor.txt b/forge-gui/res/cardsfolder/f/feywild_visitor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/feywild_visitor.txt rename to forge-gui/res/cardsfolder/f/feywild_visitor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/firbolg_flutist.txt b/forge-gui/res/cardsfolder/f/firbolg_flutist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/firbolg_flutist.txt rename to forge-gui/res/cardsfolder/f/firbolg_flutist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/firkraag_cunning_instigator.txt b/forge-gui/res/cardsfolder/f/firkraag_cunning_instigator.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/firkraag_cunning_instigator.txt rename to forge-gui/res/cardsfolder/f/firkraag_cunning_instigator.txt diff --git a/forge-gui/res/cardsfolder/upcoming/flaming_fist.txt b/forge-gui/res/cardsfolder/f/flaming_fist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/flaming_fist.txt rename to forge-gui/res/cardsfolder/f/flaming_fist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/flaming_fist_officer.txt b/forge-gui/res/cardsfolder/f/flaming_fist_officer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/flaming_fist_officer.txt rename to forge-gui/res/cardsfolder/f/flaming_fist_officer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/folk_hero.txt b/forge-gui/res/cardsfolder/f/folk_hero.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/folk_hero.txt rename to forge-gui/res/cardsfolder/f/folk_hero.txt diff --git a/forge-gui/res/cardsfolder/upcoming/font_of_magic.txt b/forge-gui/res/cardsfolder/f/font_of_magic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/font_of_magic.txt rename to forge-gui/res/cardsfolder/f/font_of_magic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fraying_line.txt b/forge-gui/res/cardsfolder/f/fraying_line.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fraying_line.txt rename to forge-gui/res/cardsfolder/f/fraying_line.txt diff --git a/forge-gui/res/cardsfolder/upcoming/from_the_catacombs.txt b/forge-gui/res/cardsfolder/f/from_the_catacombs.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/from_the_catacombs.txt rename to forge-gui/res/cardsfolder/f/from_the_catacombs.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gale_waterdeep_prodigy.txt b/forge-gui/res/cardsfolder/g/gale_waterdeep_prodigy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gale_waterdeep_prodigy.txt rename to forge-gui/res/cardsfolder/g/gale_waterdeep_prodigy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ganax_astral_hunter.txt b/forge-gui/res/cardsfolder/g/ganax_astral_hunter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ganax_astral_hunter.txt rename to forge-gui/res/cardsfolder/g/ganax_astral_hunter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gate_of_the_black_dragon.txt b/forge-gui/res/cardsfolder/g/gate_of_the_black_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gate_of_the_black_dragon.txt rename to forge-gui/res/cardsfolder/g/gate_of_the_black_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gate_to_manorborn.txt b/forge-gui/res/cardsfolder/g/gate_to_manorborn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gate_to_manorborn.txt rename to forge-gui/res/cardsfolder/g/gate_to_manorborn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gate_to_seatower.txt b/forge-gui/res/cardsfolder/g/gate_to_seatower.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gate_to_seatower.txt rename to forge-gui/res/cardsfolder/g/gate_to_seatower.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gate_to_the_citadel.txt b/forge-gui/res/cardsfolder/g/gate_to_the_citadel.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gate_to_the_citadel.txt rename to forge-gui/res/cardsfolder/g/gate_to_the_citadel.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gate_to_tumbledown.txt b/forge-gui/res/cardsfolder/g/gate_to_tumbledown.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gate_to_tumbledown.txt rename to forge-gui/res/cardsfolder/g/gate_to_tumbledown.txt diff --git a/forge-gui/res/cardsfolder/upcoming/genasi_enforcers.txt b/forge-gui/res/cardsfolder/g/genasi_enforcers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/genasi_enforcers.txt rename to forge-gui/res/cardsfolder/g/genasi_enforcers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ghastly_death_tyrant.txt b/forge-gui/res/cardsfolder/g/ghastly_death_tyrant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ghastly_death_tyrant.txt rename to forge-gui/res/cardsfolder/g/ghastly_death_tyrant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ghost_lantern_bind_spirit.txt b/forge-gui/res/cardsfolder/g/ghost_lantern_bind_spirit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ghost_lantern_bind_spirit.txt rename to forge-gui/res/cardsfolder/g/ghost_lantern_bind_spirit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/giant_ankheg.txt b/forge-gui/res/cardsfolder/g/giant_ankheg.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/giant_ankheg.txt rename to forge-gui/res/cardsfolder/g/giant_ankheg.txt diff --git a/forge-gui/res/cardsfolder/upcoming/giant_regrowth.txt b/forge-gui/res/cardsfolder/g/giant_regrowth.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/giant_regrowth.txt rename to forge-gui/res/cardsfolder/g/giant_regrowth.txt diff --git a/forge-gui/res/cardsfolder/upcoming/githzerai_monk.txt b/forge-gui/res/cardsfolder/g/githzerai_monk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/githzerai_monk.txt rename to forge-gui/res/cardsfolder/g/githzerai_monk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gluntch_the_bestower.txt b/forge-gui/res/cardsfolder/g/gluntch_the_bestower.txt similarity index 99% rename from forge-gui/res/cardsfolder/upcoming/gluntch_the_bestower.txt rename to forge-gui/res/cardsfolder/g/gluntch_the_bestower.txt index f3f1f538384..f0a75bde0e6 100644 --- a/forge-gui/res/cardsfolder/upcoming/gluntch_the_bestower.txt +++ b/forge-gui/res/cardsfolder/g/gluntch_the_bestower.txt @@ -1,16 +1,16 @@ -Name:Gluntch, the Bestower -ManaCost:1 G W -Types:Legendary Creature Jellyfish -PT:0/5 -K:Flying -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChoosePlayer1 | TriggerDescription$ At the beginning of your end step, choose a player. They put two +1/+1 counters on a creature they control. Choose a second player to draw a card. Then choose a third player to create two Treasure tokens. -SVar:TrigChoosePlayer1:DB$ ChoosePlayer | Defined$ You | Choices$ Player | RememberChosen$ True | ChoiceTitle$ Choose a player to put two +1/+1 counters on a creature they control | SubAbility$ Counters -SVar:Counters:DB$ PutCounter | Defined$ ChosenPlayer | Choices$ Creature.ControlledBy ChosenPlayer | ChoiceTitle$ Choose a creature you control | Chooser$ ChosenPlayer | Placer$ ChosenPlayer | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ TrigChoosePlayer2 -SVar:TrigChoosePlayer2:DB$ ChoosePlayer | Defined$ You | Choices$ Player.IsNotRemembered | RememberChosen$ True | ChoiceTitle$ Choose a player to draw a card | SubAbility$ Card -SVar:Card:DB$ Draw | Defined$ ChosenPlayer | SubAbility$ TrigChoosePlayer3 -SVar:TrigChoosePlayer3:DB$ ChoosePlayer | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3 | Defined$ You | Choices$ Player.IsNotRemembered | RememberChosen$ True | ChoiceTitle$ Choose a player to create two Treasure tokens | SubAbility$Tokens -SVar:Tokens:DB$ Token | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3 | Defined$ ChosenPlayer | TokenAmount$ 2 | TokenScript$ c_a_treasure_sac | TokenOwner$ ChosenPlayer | SubAbility$ CleanupFinal -SVar:X:PlayerCountPlayers$Amount -SVar:CleanupFinal:DB$ Cleanup | ClearRemembered$ True -DeckHas:Ability$Counters|Token|Sacrifice & Type$Treasure|Artifact +Name:Gluntch, the Bestower +ManaCost:1 G W +Types:Legendary Creature Jellyfish +PT:0/5 +K:Flying +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChoosePlayer1 | TriggerDescription$ At the beginning of your end step, choose a player. They put two +1/+1 counters on a creature they control. Choose a second player to draw a card. Then choose a third player to create two Treasure tokens. +SVar:TrigChoosePlayer1:DB$ ChoosePlayer | Defined$ You | Choices$ Player | RememberChosen$ True | ChoiceTitle$ Choose a player to put two +1/+1 counters on a creature they control | SubAbility$ Counters +SVar:Counters:DB$ PutCounter | Defined$ ChosenPlayer | Choices$ Creature.ControlledBy ChosenPlayer | ChoiceTitle$ Choose a creature you control | Chooser$ ChosenPlayer | Placer$ ChosenPlayer | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ TrigChoosePlayer2 +SVar:TrigChoosePlayer2:DB$ ChoosePlayer | Defined$ You | Choices$ Player.IsNotRemembered | RememberChosen$ True | ChoiceTitle$ Choose a player to draw a card | SubAbility$ Card +SVar:Card:DB$ Draw | Defined$ ChosenPlayer | SubAbility$ TrigChoosePlayer3 +SVar:TrigChoosePlayer3:DB$ ChoosePlayer | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3 | Defined$ You | Choices$ Player.IsNotRemembered | RememberChosen$ True | ChoiceTitle$ Choose a player to create two Treasure tokens | SubAbility$Tokens +SVar:Tokens:DB$ Token | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3 | Defined$ ChosenPlayer | TokenAmount$ 2 | TokenScript$ c_a_treasure_sac | TokenOwner$ ChosenPlayer | SubAbility$ CleanupFinal +SVar:X:PlayerCountPlayers$Amount +SVar:CleanupFinal:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Counters|Token|Sacrifice & Type$Treasure|Artifact Oracle:Flying\nAt the beginning of your end step, choose a player. They put two +1/+1 counters on a creature they control. Choose a second player to draw a card. Then choose a third player to create two Treasure tokens. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/gnoll_war_band.txt b/forge-gui/res/cardsfolder/g/gnoll_war_band.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gnoll_war_band.txt rename to forge-gui/res/cardsfolder/g/gnoll_war_band.txt diff --git a/forge-gui/res/cardsfolder/upcoming/goggles_of_night.txt b/forge-gui/res/cardsfolder/g/goggles_of_night.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/goggles_of_night.txt rename to forge-gui/res/cardsfolder/g/goggles_of_night.txt diff --git a/forge-gui/res/cardsfolder/upcoming/goliath_paladin.txt b/forge-gui/res/cardsfolder/g/goliath_paladin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/goliath_paladin.txt rename to forge-gui/res/cardsfolder/g/goliath_paladin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gond_gate.txt b/forge-gui/res/cardsfolder/g/gond_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gond_gate.txt rename to forge-gui/res/cardsfolder/g/gond_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grave_choice.txt b/forge-gui/res/cardsfolder/g/grave_choice.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grave_choice.txt rename to forge-gui/res/cardsfolder/g/grave_choice.txt diff --git a/forge-gui/res/cardsfolder/upcoming/graven_archfiend.txt b/forge-gui/res/cardsfolder/g/graven_archfiend.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/graven_archfiend.txt rename to forge-gui/res/cardsfolder/g/graven_archfiend.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gray_harbor_merfolk.txt b/forge-gui/res/cardsfolder/g/gray_harbor_merfolk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gray_harbor_merfolk.txt rename to forge-gui/res/cardsfolder/g/gray_harbor_merfolk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gray_slaad_entropic_decay.txt b/forge-gui/res/cardsfolder/g/gray_slaad_entropic_decay.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gray_slaad_entropic_decay.txt rename to forge-gui/res/cardsfolder/g/gray_slaad_entropic_decay.txt diff --git a/forge-gui/res/cardsfolder/upcoming/greatsword_of_tyr.txt b/forge-gui/res/cardsfolder/g/greatsword_of_tyr.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/greatsword_of_tyr.txt rename to forge-gui/res/cardsfolder/g/greatsword_of_tyr.txt diff --git a/forge-gui/res/cardsfolder/upcoming/green_slime.txt b/forge-gui/res/cardsfolder/g/green_slime.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/green_slime.txt rename to forge-gui/res/cardsfolder/g/green_slime.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grell_philosopher.txt b/forge-gui/res/cardsfolder/g/grell_philosopher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grell_philosopher.txt rename to forge-gui/res/cardsfolder/g/grell_philosopher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/guardian_naga_banishing_coils.txt b/forge-gui/res/cardsfolder/g/guardian_naga_banishing_coils.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/guardian_naga_banishing_coils.txt rename to forge-gui/res/cardsfolder/g/guardian_naga_banishing_coils.txt diff --git a/forge-gui/res/cardsfolder/upcoming/guiding_bolt.txt b/forge-gui/res/cardsfolder/g/guiding_bolt.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/guiding_bolt.txt rename to forge-gui/res/cardsfolder/g/guiding_bolt.txt diff --git a/forge-gui/res/cardsfolder/upcoming/guild_artisan.txt b/forge-gui/res/cardsfolder/g/guild_artisan.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/guild_artisan.txt rename to forge-gui/res/cardsfolder/g/guild_artisan.txt diff --git a/forge-gui/res/cardsfolder/upcoming/guildsworn_prowler.txt b/forge-gui/res/cardsfolder/g/guildsworn_prowler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/guildsworn_prowler.txt rename to forge-gui/res/cardsfolder/g/guildsworn_prowler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gut_true_soul_zealot.txt b/forge-gui/res/cardsfolder/g/gut_true_soul_zealot.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gut_true_soul_zealot.txt rename to forge-gui/res/cardsfolder/g/gut_true_soul_zealot.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_ceaseless_torment.txt b/forge-gui/res/cardsfolder/h/hag_of_ceaseless_torment.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_ceaseless_torment.txt rename to forge-gui/res/cardsfolder/h/hag_of_ceaseless_torment.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_dark_duress.txt b/forge-gui/res/cardsfolder/h/hag_of_dark_duress.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_dark_duress.txt rename to forge-gui/res/cardsfolder/h/hag_of_dark_duress.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_deaths_legion.txt b/forge-gui/res/cardsfolder/h/hag_of_deaths_legion.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_deaths_legion.txt rename to forge-gui/res/cardsfolder/h/hag_of_deaths_legion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_inner_weakness.txt b/forge-gui/res/cardsfolder/h/hag_of_inner_weakness.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_inner_weakness.txt rename to forge-gui/res/cardsfolder/h/hag_of_inner_weakness.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_mages_doom.txt b/forge-gui/res/cardsfolder/h/hag_of_mages_doom.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_mages_doom.txt rename to forge-gui/res/cardsfolder/h/hag_of_mages_doom.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_noxious_nightmares.txt b/forge-gui/res/cardsfolder/h/hag_of_noxious_nightmares.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_noxious_nightmares.txt rename to forge-gui/res/cardsfolder/h/hag_of_noxious_nightmares.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_scoured_thoughts.txt b/forge-gui/res/cardsfolder/h/hag_of_scoured_thoughts.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_scoured_thoughts.txt rename to forge-gui/res/cardsfolder/h/hag_of_scoured_thoughts.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_syphoned_breath.txt b/forge-gui/res/cardsfolder/h/hag_of_syphoned_breath.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_syphoned_breath.txt rename to forge-gui/res/cardsfolder/h/hag_of_syphoned_breath.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hag_of_twisted_visions.txt b/forge-gui/res/cardsfolder/h/hag_of_twisted_visions.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hag_of_twisted_visions.txt rename to forge-gui/res/cardsfolder/h/hag_of_twisted_visions.txt diff --git a/forge-gui/res/cardsfolder/upcoming/halsin_emerald_archdruid.txt b/forge-gui/res/cardsfolder/h/halsin_emerald_archdruid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/halsin_emerald_archdruid.txt rename to forge-gui/res/cardsfolder/h/halsin_emerald_archdruid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hammers_of_moradin.txt b/forge-gui/res/cardsfolder/h/hammers_of_moradin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hammers_of_moradin.txt rename to forge-gui/res/cardsfolder/h/hammers_of_moradin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hardy_outlander.txt b/forge-gui/res/cardsfolder/h/hardy_outlander.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hardy_outlander.txt rename to forge-gui/res/cardsfolder/h/hardy_outlander.txt diff --git a/forge-gui/res/cardsfolder/upcoming/harper_recruiter.txt b/forge-gui/res/cardsfolder/h/harper_recruiter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/harper_recruiter.txt rename to forge-gui/res/cardsfolder/h/harper_recruiter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/haunted_one.txt b/forge-gui/res/cardsfolder/h/haunted_one.txt similarity index 99% rename from forge-gui/res/cardsfolder/upcoming/haunted_one.txt rename to forge-gui/res/cardsfolder/h/haunted_one.txt index d06a97698ff..3c2f1807e69 100644 --- a/forge-gui/res/cardsfolder/upcoming/haunted_one.txt +++ b/forge-gui/res/cardsfolder/h/haunted_one.txt @@ -1,9 +1,9 @@ -Name:Haunted One -ManaCost:2 B -Types:Legendary Enchantment Background -S:Mode$ Continuous | Affected$ Creature.IsCommander+YouOwn | AddTrigger$ BecomesTapped | Description$ Commander creatures you own have "Whenever this creature becomes tapped, it and other creatures you control that share a creature type with it each get +2/+0 and gain undying until end of turn." -SVar:BecomesTapped:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever this creature becomes tapped, it and other creatures you control that share a creature type with it each get +2/+0 and gain undying until end of turn. -SVar:TrigPump:DB$ PumpAll | ValidCards$ Card.sharesCreatureTypeWith+YouCtrl | KW$ Undying | NumAtt$ 2 -DeckHas:Ability$Counters & Keyword$Undying -AI:RemoveDeck:NonCommander +Name:Haunted One +ManaCost:2 B +Types:Legendary Enchantment Background +S:Mode$ Continuous | Affected$ Creature.IsCommander+YouOwn | AddTrigger$ BecomesTapped | Description$ Commander creatures you own have "Whenever this creature becomes tapped, it and other creatures you control that share a creature type with it each get +2/+0 and gain undying until end of turn." +SVar:BecomesTapped:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever this creature becomes tapped, it and other creatures you control that share a creature type with it each get +2/+0 and gain undying until end of turn. +SVar:TrigPump:DB$ PumpAll | ValidCards$ Card.sharesCreatureTypeWith+YouCtrl | KW$ Undying | NumAtt$ 2 +DeckHas:Ability$Counters & Keyword$Undying +AI:RemoveDeck:NonCommander Oracle:Commander creatures you own have "Whenever this creature becomes tapped, it and other creatures you control that share a creature type with it each get +2/+0 and gain undying until end of turn." (When a creature with undying dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/heap_gate.txt b/forge-gui/res/cardsfolder/h/heap_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/heap_gate.txt rename to forge-gui/res/cardsfolder/h/heap_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/henzie_toolbox_torre.txt b/forge-gui/res/cardsfolder/h/henzie_toolbox_torre.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/henzie_toolbox_torre.txt rename to forge-gui/res/cardsfolder/h/henzie_toolbox_torre.txt diff --git a/forge-gui/res/cardsfolder/upcoming/herald_of_vengeance.txt b/forge-gui/res/cardsfolder/h/herald_of_vengeance.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/herald_of_vengeance.txt rename to forge-gui/res/cardsfolder/h/herald_of_vengeance.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hezrou_demonic_stench.txt b/forge-gui/res/cardsfolder/h/hezrou_demonic_stench.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hezrou_demonic_stench.txt rename to forge-gui/res/cardsfolder/h/hezrou_demonic_stench.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hook_horror.txt b/forge-gui/res/cardsfolder/h/hook_horror.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hook_horror.txt rename to forge-gui/res/cardsfolder/h/hook_horror.txt diff --git a/forge-gui/res/cardsfolder/upcoming/horn_of_valhalla_ysgards_call.txt b/forge-gui/res/cardsfolder/h/horn_of_valhalla_ysgards_call.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/horn_of_valhalla_ysgards_call.txt rename to forge-gui/res/cardsfolder/h/horn_of_valhalla_ysgards_call.txt diff --git a/forge-gui/res/cardsfolder/upcoming/icewind_stalwart.txt b/forge-gui/res/cardsfolder/i/icewind_stalwart.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/icewind_stalwart.txt rename to forge-gui/res/cardsfolder/i/icewind_stalwart.txt diff --git a/forge-gui/res/cardsfolder/upcoming/illithid_harvester_plant_tadpoles.txt b/forge-gui/res/cardsfolder/i/illithid_harvester_plant_tadpoles.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/illithid_harvester_plant_tadpoles.txt rename to forge-gui/res/cardsfolder/i/illithid_harvester_plant_tadpoles.txt diff --git a/forge-gui/res/cardsfolder/upcoming/imaryll_elfhame_elite.txt b/forge-gui/res/cardsfolder/i/imaryll_elfhame_elite.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/imaryll_elfhame_elite.txt rename to forge-gui/res/cardsfolder/i/imaryll_elfhame_elite.txt diff --git a/forge-gui/res/cardsfolder/upcoming/imoen_mystic_trickster.txt b/forge-gui/res/cardsfolder/i/imoen_mystic_trickster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/imoen_mystic_trickster.txt rename to forge-gui/res/cardsfolder/i/imoen_mystic_trickster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/incessant_provocation.txt b/forge-gui/res/cardsfolder/i/incessant_provocation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/incessant_provocation.txt rename to forge-gui/res/cardsfolder/i/incessant_provocation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/indulge_excess.txt b/forge-gui/res/cardsfolder/i/indulge_excess.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/indulge_excess.txt rename to forge-gui/res/cardsfolder/i/indulge_excess.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ingenious_artillerist.txt b/forge-gui/res/cardsfolder/i/ingenious_artillerist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ingenious_artillerist.txt rename to forge-gui/res/cardsfolder/i/ingenious_artillerist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/inspired_tinkering.txt b/forge-gui/res/cardsfolder/i/inspired_tinkering.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/inspired_tinkering.txt rename to forge-gui/res/cardsfolder/i/inspired_tinkering.txt diff --git a/forge-gui/res/cardsfolder/upcoming/inspiring_leader.txt b/forge-gui/res/cardsfolder/i/inspiring_leader.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/inspiring_leader.txt rename to forge-gui/res/cardsfolder/i/inspiring_leader.txt diff --git a/forge-gui/res/cardsfolder/upcoming/insufferable_balladeer.txt b/forge-gui/res/cardsfolder/i/insufferable_balladeer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/insufferable_balladeer.txt rename to forge-gui/res/cardsfolder/i/insufferable_balladeer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/intellect_devourer.txt b/forge-gui/res/cardsfolder/i/intellect_devourer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/intellect_devourer.txt rename to forge-gui/res/cardsfolder/i/intellect_devourer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/iron_mastiff.txt b/forge-gui/res/cardsfolder/i/iron_mastiff.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/iron_mastiff.txt rename to forge-gui/res/cardsfolder/i/iron_mastiff.txt diff --git a/forge-gui/res/cardsfolder/upcoming/jade_orb_of_dragonkind.txt b/forge-gui/res/cardsfolder/j/jade_orb_of_dragonkind.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/jade_orb_of_dragonkind.txt rename to forge-gui/res/cardsfolder/j/jade_orb_of_dragonkind.txt diff --git a/forge-gui/res/cardsfolder/upcoming/jaheira_friend_of_the_forest.txt b/forge-gui/res/cardsfolder/j/jaheira_friend_of_the_forest.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/jaheira_friend_of_the_forest.txt rename to forge-gui/res/cardsfolder/j/jaheira_friend_of_the_forest.txt diff --git a/forge-gui/res/cardsfolder/upcoming/jaheiras_respite.txt b/forge-gui/res/cardsfolder/j/jaheiras_respite.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/jaheiras_respite.txt rename to forge-gui/res/cardsfolder/j/jaheiras_respite.txt diff --git a/forge-gui/res/cardsfolder/upcoming/jan_jansen_chaos_crafter.txt b/forge-gui/res/cardsfolder/j/jan_jansen_chaos_crafter.txt similarity index 98% rename from forge-gui/res/cardsfolder/upcoming/jan_jansen_chaos_crafter.txt rename to forge-gui/res/cardsfolder/j/jan_jansen_chaos_crafter.txt index 6f0cabc0a39..cb4956a5631 100644 --- a/forge-gui/res/cardsfolder/upcoming/jan_jansen_chaos_crafter.txt +++ b/forge-gui/res/cardsfolder/j/jan_jansen_chaos_crafter.txt @@ -1,11 +1,11 @@ -Name:Jan Jansen, Chaos Crafter -ManaCost:R W B -Types:Legendary Creature Gnome Artificer -PT:3/3 -K:Haste -A:AB$ Token | Cost$ T Sac<1/Creature.Artifact/artifact creature> | TokenAmount$ 2 | TokenScript$ c_a_treasure_sac | SpellDescription$ Create two Treasure tokens. -A:AB$ Token | Cost$ T Sac<1/Artifact.nonCreature/noncreature artifact> | TokenAmount$ 2 | TokenScript$ c_1_1_a_construct | SpellDescription$ Create two 1/1 colorless Construct artifact creature tokens. -SVar:AIPreference:SacCost$Artifact.nonCreature+Token+powerLE1+toughnessEQ1 -DeckHas:Ability$Token|Sacrifice & Type$Treasure|Construct|Artifact -DeckNeeds:Type$Artifact -Oracle:Haste\n{T}, Sacrifice an artifact creature: Create two Treasure tokens.\n{T}, Sacrifice a noncreature artifact: Create two 1/1 colorless Construct artifact creature tokens. +Name:Jan Jansen, Chaos Crafter +ManaCost:R W B +Types:Legendary Creature Gnome Artificer +PT:3/3 +K:Haste +A:AB$ Token | Cost$ T Sac<1/Creature.Artifact/artifact creature> | TokenAmount$ 2 | TokenScript$ c_a_treasure_sac | SpellDescription$ Create two Treasure tokens. +A:AB$ Token | Cost$ T Sac<1/Artifact.nonCreature/noncreature artifact> | TokenAmount$ 2 | TokenScript$ c_1_1_a_construct | SpellDescription$ Create two 1/1 colorless Construct artifact creature tokens. +SVar:AIPreference:SacCost$Artifact.nonCreature+Token+powerLE1+toughnessEQ1 +DeckHas:Ability$Token|Sacrifice & Type$Treasure|Construct|Artifact +DeckNeeds:Type$Artifact +Oracle:Haste\n{T}, Sacrifice an artifact creature: Create two Treasure tokens.\n{T}, Sacrifice a noncreature artifact: Create two 1/1 colorless Construct artifact creature tokens. diff --git a/forge-gui/res/cardsfolder/upcoming/javelin_of_lightning.txt b/forge-gui/res/cardsfolder/j/javelin_of_lightning.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/javelin_of_lightning.txt rename to forge-gui/res/cardsfolder/j/javelin_of_lightning.txt diff --git a/forge-gui/res/cardsfolder/upcoming/jon_irenicus_shattered_one.txt b/forge-gui/res/cardsfolder/j/jon_irenicus_shattered_one.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/jon_irenicus_shattered_one.txt rename to forge-gui/res/cardsfolder/j/jon_irenicus_shattered_one.txt diff --git a/forge-gui/res/cardsfolder/upcoming/journey_to_the_lost_city.txt b/forge-gui/res/cardsfolder/j/journey_to_the_lost_city.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/journey_to_the_lost_city.txt rename to forge-gui/res/cardsfolder/j/journey_to_the_lost_city.txt diff --git a/forge-gui/res/cardsfolder/upcoming/juvenile_mist_dragon.txt b/forge-gui/res/cardsfolder/j/juvenile_mist_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/juvenile_mist_dragon.txt rename to forge-gui/res/cardsfolder/j/juvenile_mist_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kagha_shadow_archdruid.txt b/forge-gui/res/cardsfolder/k/kagha_shadow_archdruid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kagha_shadow_archdruid.txt rename to forge-gui/res/cardsfolder/k/kagha_shadow_archdruid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/karlach_fury_of_avernus.txt b/forge-gui/res/cardsfolder/k/karlach_fury_of_avernus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/karlach_fury_of_avernus.txt rename to forge-gui/res/cardsfolder/k/karlach_fury_of_avernus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kenku_artificer.txt b/forge-gui/res/cardsfolder/k/kenku_artificer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kenku_artificer.txt rename to forge-gui/res/cardsfolder/k/kenku_artificer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/korlessa_scale_singer.txt b/forge-gui/res/cardsfolder/k/korlessa_scale_singer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/korlessa_scale_singer.txt rename to forge-gui/res/cardsfolder/k/korlessa_scale_singer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/laezel_vlaakiths_champion.txt b/forge-gui/res/cardsfolder/l/laezel_vlaakiths_champion.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/laezel_vlaakiths_champion.txt rename to forge-gui/res/cardsfolder/l/laezel_vlaakiths_champion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/laezels_acrobatics.txt b/forge-gui/res/cardsfolder/l/laezels_acrobatics.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/laezels_acrobatics.txt rename to forge-gui/res/cardsfolder/l/laezels_acrobatics.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lantern_of_revealing.txt b/forge-gui/res/cardsfolder/l/lantern_of_revealing.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lantern_of_revealing.txt rename to forge-gui/res/cardsfolder/l/lantern_of_revealing.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lapis_orb_of_dragonkind.txt b/forge-gui/res/cardsfolder/l/lapis_orb_of_dragonkind.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lapis_orb_of_dragonkind.txt rename to forge-gui/res/cardsfolder/l/lapis_orb_of_dragonkind.txt diff --git a/forge-gui/res/cardsfolder/upcoming/livaan_cultist_of_tiamat.txt b/forge-gui/res/cardsfolder/l/livaan_cultist_of_tiamat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/livaan_cultist_of_tiamat.txt rename to forge-gui/res/cardsfolder/l/livaan_cultist_of_tiamat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/loot_dispute.txt b/forge-gui/res/cardsfolder/l/loot_dispute.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/loot_dispute.txt rename to forge-gui/res/cardsfolder/l/loot_dispute.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lulu_loyal_hollyphant.txt b/forge-gui/res/cardsfolder/l/lulu_loyal_hollyphant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lulu_loyal_hollyphant.txt rename to forge-gui/res/cardsfolder/l/lulu_loyal_hollyphant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lurking_green_dragon.txt b/forge-gui/res/cardsfolder/l/lurking_green_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lurking_green_dragon.txt rename to forge-gui/res/cardsfolder/l/lurking_green_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/maeve_insidious_singer.txt b/forge-gui/res/cardsfolder/m/maeve_insidious_singer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/maeve_insidious_singer.txt rename to forge-gui/res/cardsfolder/m/maeve_insidious_singer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mahadi_emporium_master.txt b/forge-gui/res/cardsfolder/m/mahadi_emporium_master.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mahadi_emporium_master.txt rename to forge-gui/res/cardsfolder/m/mahadi_emporium_master.txt diff --git a/forge-gui/res/cardsfolder/upcoming/majestic_genesis.txt b/forge-gui/res/cardsfolder/m/majestic_genesis.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/majestic_genesis.txt rename to forge-gui/res/cardsfolder/m/majestic_genesis.txt diff --git a/forge-gui/res/cardsfolder/upcoming/manor_gate.txt b/forge-gui/res/cardsfolder/m/manor_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/manor_gate.txt rename to forge-gui/res/cardsfolder/m/manor_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/marching_duodrone.txt b/forge-gui/res/cardsfolder/m/marching_duodrone.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/marching_duodrone.txt rename to forge-gui/res/cardsfolder/m/marching_duodrone.txt diff --git a/forge-gui/res/cardsfolder/upcoming/marut.txt b/forge-gui/res/cardsfolder/m/marut.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/marut.txt rename to forge-gui/res/cardsfolder/m/marut.txt diff --git a/forge-gui/res/cardsfolder/upcoming/master_chef.txt b/forge-gui/res/cardsfolder/m/master_chef.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/master_chef.txt rename to forge-gui/res/cardsfolder/m/master_chef.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mighty_servant_of_leuk_o.txt b/forge-gui/res/cardsfolder/m/mighty_servant_of_leuk_o.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mighty_servant_of_leuk_o.txt rename to forge-gui/res/cardsfolder/m/mighty_servant_of_leuk_o.txt diff --git a/forge-gui/res/cardsfolder/upcoming/miirym_sentinel_wyrm.txt b/forge-gui/res/cardsfolder/m/miirym_sentinel_wyrm.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/miirym_sentinel_wyrm.txt rename to forge-gui/res/cardsfolder/m/miirym_sentinel_wyrm.txt diff --git a/forge-gui/res/cardsfolder/upcoming/minthara_merciless_soul.txt b/forge-gui/res/cardsfolder/m/minthara_merciless_soul.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/minthara_merciless_soul.txt rename to forge-gui/res/cardsfolder/m/minthara_merciless_soul.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mirror_of_life_trapping.txt b/forge-gui/res/cardsfolder/m/mirror_of_life_trapping.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mirror_of_life_trapping.txt rename to forge-gui/res/cardsfolder/m/mirror_of_life_trapping.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mocking_doppelganger.txt b/forge-gui/res/cardsfolder/m/mocking_doppelganger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mocking_doppelganger.txt rename to forge-gui/res/cardsfolder/m/mocking_doppelganger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/modify_memory.txt b/forge-gui/res/cardsfolder/m/modify_memory.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/modify_memory.txt rename to forge-gui/res/cardsfolder/m/modify_memory.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mold_folk.txt b/forge-gui/res/cardsfolder/m/mold_folk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mold_folk.txt rename to forge-gui/res/cardsfolder/m/mold_folk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/moonshae_pixie.txt b/forge-gui/res/cardsfolder/m/moonshae_pixie.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/moonshae_pixie.txt rename to forge-gui/res/cardsfolder/m/moonshae_pixie.txt diff --git a/forge-gui/res/cardsfolder/upcoming/multiclass_baldric.txt b/forge-gui/res/cardsfolder/m/multiclass_baldric.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/multiclass_baldric.txt rename to forge-gui/res/cardsfolder/m/multiclass_baldric.txt diff --git a/forge-gui/res/cardsfolder/upcoming/myconid_spore_tender.txt b/forge-gui/res/cardsfolder/m/myconid_spore_tender.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/myconid_spore_tender.txt rename to forge-gui/res/cardsfolder/m/myconid_spore_tender.txt diff --git a/forge-gui/res/cardsfolder/upcoming/myrkuls_edict.txt b/forge-gui/res/cardsfolder/m/myrkuls_edict.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/myrkuls_edict.txt rename to forge-gui/res/cardsfolder/m/myrkuls_edict.txt diff --git a/forge-gui/res/cardsfolder/upcoming/myrkuls_invoker.txt b/forge-gui/res/cardsfolder/m/myrkuls_invoker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/myrkuls_invoker.txt rename to forge-gui/res/cardsfolder/m/myrkuls_invoker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mystery_key.txt b/forge-gui/res/cardsfolder/m/mystery_key.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mystery_key.txt rename to forge-gui/res/cardsfolder/m/mystery_key.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nalfeshnee.txt b/forge-gui/res/cardsfolder/n/nalfeshnee.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nalfeshnee.txt rename to forge-gui/res/cardsfolder/n/nalfeshnee.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nalia_dearnise.txt b/forge-gui/res/cardsfolder/n/nalia_dearnise.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nalia_dearnise.txt rename to forge-gui/res/cardsfolder/n/nalia_dearnise.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nautiloid_ship.txt b/forge-gui/res/cardsfolder/n/nautiloid_ship.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nautiloid_ship.txt rename to forge-gui/res/cardsfolder/n/nautiloid_ship.txt diff --git a/forge-gui/res/cardsfolder/upcoming/navigation_orb.txt b/forge-gui/res/cardsfolder/n/navigation_orb.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/navigation_orb.txt rename to forge-gui/res/cardsfolder/n/navigation_orb.txt diff --git a/forge-gui/res/cardsfolder/upcoming/neera_wild_mage.txt b/forge-gui/res/cardsfolder/n/neera_wild_mage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/neera_wild_mage.txt rename to forge-gui/res/cardsfolder/n/neera_wild_mage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nefarious_imp.txt b/forge-gui/res/cardsfolder/n/nefarious_imp.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nefarious_imp.txt rename to forge-gui/res/cardsfolder/n/nefarious_imp.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nightclub_bouncer.txt b/forge-gui/res/cardsfolder/n/nightclub_bouncer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nightclub_bouncer.txt rename to forge-gui/res/cardsfolder/n/nightclub_bouncer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nimbleclaw_adept.txt b/forge-gui/res/cardsfolder/n/nimbleclaw_adept.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nimbleclaw_adept.txt rename to forge-gui/res/cardsfolder/n/nimbleclaw_adept.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nimblewright_schematic.txt b/forge-gui/res/cardsfolder/n/nimblewright_schematic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nimblewright_schematic.txt rename to forge-gui/res/cardsfolder/n/nimblewright_schematic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nine-fingers_keene.txt b/forge-gui/res/cardsfolder/n/nine-fingers_keene.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nine-fingers_keene.txt rename to forge-gui/res/cardsfolder/n/nine-fingers_keene.txt diff --git a/forge-gui/res/cardsfolder/upcoming/noble_heritage.txt b/forge-gui/res/cardsfolder/n/noble_heritage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/noble_heritage.txt rename to forge-gui/res/cardsfolder/n/noble_heritage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nogi_draco_zealot.txt b/forge-gui/res/cardsfolder/n/nogi_draco_zealot.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nogi_draco_zealot.txt rename to forge-gui/res/cardsfolder/n/nogi_draco_zealot.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nothic.txt b/forge-gui/res/cardsfolder/n/nothic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nothic.txt rename to forge-gui/res/cardsfolder/n/nothic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/obscura_polymorphist.txt b/forge-gui/res/cardsfolder/o/obscura_polymorphist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/obscura_polymorphist.txt rename to forge-gui/res/cardsfolder/o/obscura_polymorphist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/oceanus_dragon.txt b/forge-gui/res/cardsfolder/o/oceanus_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/oceanus_dragon.txt rename to forge-gui/res/cardsfolder/o/oceanus_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/oji_the_exquisite_blade.txt b/forge-gui/res/cardsfolder/o/oji_the_exquisite_blade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/oji_the_exquisite_blade.txt rename to forge-gui/res/cardsfolder/o/oji_the_exquisite_blade.txt diff --git a/forge-gui/res/cardsfolder/upcoming/overwhelming_encounter.txt b/forge-gui/res/cardsfolder/o/overwhelming_encounter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/overwhelming_encounter.txt rename to forge-gui/res/cardsfolder/o/overwhelming_encounter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/owlbear_cub.txt b/forge-gui/res/cardsfolder/o/owlbear_cub.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/owlbear_cub.txt rename to forge-gui/res/cardsfolder/o/owlbear_cub.txt diff --git a/forge-gui/res/cardsfolder/upcoming/owlbear_shepherd.txt b/forge-gui/res/cardsfolder/o/owlbear_shepherd.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/owlbear_shepherd.txt rename to forge-gui/res/cardsfolder/o/owlbear_shepherd.txt diff --git a/forge-gui/res/cardsfolder/upcoming/oyaminartok_polar_werebear.txt b/forge-gui/res/cardsfolder/o/oyaminartok_polar_werebear.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/oyaminartok_polar_werebear.txt rename to forge-gui/res/cardsfolder/o/oyaminartok_polar_werebear.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pack_attack.txt b/forge-gui/res/cardsfolder/p/pack_attack.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pack_attack.txt rename to forge-gui/res/cardsfolder/p/pack_attack.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pact_weapon.txt b/forge-gui/res/cardsfolder/p/pact_weapon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pact_weapon.txt rename to forge-gui/res/cardsfolder/p/pact_weapon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pass_the_torch.txt b/forge-gui/res/cardsfolder/p/pass_the_torch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pass_the_torch.txt rename to forge-gui/res/cardsfolder/p/pass_the_torch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/passageway_seer.txt b/forge-gui/res/cardsfolder/p/passageway_seer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/passageway_seer.txt rename to forge-gui/res/cardsfolder/p/passageway_seer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/passionate_archaeologist.txt b/forge-gui/res/cardsfolder/p/passionate_archaeologist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/passionate_archaeologist.txt rename to forge-gui/res/cardsfolder/p/passionate_archaeologist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/patriars_humiliation.txt b/forge-gui/res/cardsfolder/p/patriars_humiliation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/patriars_humiliation.txt rename to forge-gui/res/cardsfolder/p/patriars_humiliation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/patriars_seal.txt b/forge-gui/res/cardsfolder/p/patriars_seal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/patriars_seal.txt rename to forge-gui/res/cardsfolder/p/patriars_seal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/patron_of_the_arts.txt b/forge-gui/res/cardsfolder/p/patron_of_the_arts.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/patron_of_the_arts.txt rename to forge-gui/res/cardsfolder/p/patron_of_the_arts.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pegasus_guardian_rescue_the_foal.txt b/forge-gui/res/cardsfolder/p/pegasus_guardian_rescue_the_foal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pegasus_guardian_rescue_the_foal.txt rename to forge-gui/res/cardsfolder/p/pegasus_guardian_rescue_the_foal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/poison_the_blade.txt b/forge-gui/res/cardsfolder/p/poison_the_blade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/poison_the_blade.txt rename to forge-gui/res/cardsfolder/p/poison_the_blade.txt diff --git a/forge-gui/res/cardsfolder/upcoming/popular_entertainer.txt b/forge-gui/res/cardsfolder/p/popular_entertainer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/popular_entertainer.txt rename to forge-gui/res/cardsfolder/p/popular_entertainer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/prized_statue.txt b/forge-gui/res/cardsfolder/p/prized_statue.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/prized_statue.txt rename to forge-gui/res/cardsfolder/p/prized_statue.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pseudodragon_familiar.txt b/forge-gui/res/cardsfolder/p/pseudodragon_familiar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pseudodragon_familiar.txt rename to forge-gui/res/cardsfolder/p/pseudodragon_familiar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/psionic_ritual.txt b/forge-gui/res/cardsfolder/p/psionic_ritual.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/psionic_ritual.txt rename to forge-gui/res/cardsfolder/p/psionic_ritual.txt diff --git a/forge-gui/res/cardsfolder/upcoming/raised_by_giants.txt b/forge-gui/res/cardsfolder/r/raised_by_giants.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/raised_by_giants.txt rename to forge-gui/res/cardsfolder/r/raised_by_giants.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rasaad_yn_bashir.txt b/forge-gui/res/cardsfolder/r/rasaad_yn_bashir.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rasaad_yn_bashir.txt rename to forge-gui/res/cardsfolder/r/rasaad_yn_bashir.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ravenloft_adventurer.txt b/forge-gui/res/cardsfolder/r/ravenloft_adventurer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ravenloft_adventurer.txt rename to forge-gui/res/cardsfolder/r/ravenloft_adventurer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/reckless_barbarian.txt b/forge-gui/res/cardsfolder/r/reckless_barbarian.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/reckless_barbarian.txt rename to forge-gui/res/cardsfolder/r/reckless_barbarian.txt diff --git a/forge-gui/res/cardsfolder/upcoming/recruitment_drive.txt b/forge-gui/res/cardsfolder/r/recruitment_drive.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/recruitment_drive.txt rename to forge-gui/res/cardsfolder/r/recruitment_drive.txt diff --git a/forge-gui/res/cardsfolder/upcoming/renari_merchant_of_marvels.txt b/forge-gui/res/cardsfolder/r/renari_merchant_of_marvels.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/renari_merchant_of_marvels.txt rename to forge-gui/res/cardsfolder/r/renari_merchant_of_marvels.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rescuer_chwinga.txt b/forge-gui/res/cardsfolder/r/rescuer_chwinga.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rescuer_chwinga.txt rename to forge-gui/res/cardsfolder/r/rescuer_chwinga.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rilsa_rael_kingpin.txt b/forge-gui/res/cardsfolder/r/rilsa_rael_kingpin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rilsa_rael_kingpin.txt rename to forge-gui/res/cardsfolder/r/rilsa_rael_kingpin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/riveteers_provocateur.txt b/forge-gui/res/cardsfolder/r/riveteers_provocateur.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/riveteers_provocateur.txt rename to forge-gui/res/cardsfolder/r/riveteers_provocateur.txt diff --git a/forge-gui/res/cardsfolder/upcoming/robe_of_the_archmagi.txt b/forge-gui/res/cardsfolder/r/robe_of_the_archmagi.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/robe_of_the_archmagi.txt rename to forge-gui/res/cardsfolder/r/robe_of_the_archmagi.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rope_line_attendant.txt b/forge-gui/res/cardsfolder/r/rope_line_attendant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rope_line_attendant.txt rename to forge-gui/res/cardsfolder/r/rope_line_attendant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rug_of_smothering.txt b/forge-gui/res/cardsfolder/r/rug_of_smothering.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rug_of_smothering.txt rename to forge-gui/res/cardsfolder/r/rug_of_smothering.txt diff --git a/forge-gui/res/cardsfolder/upcoming/saddle_of_the_cavalier.txt b/forge-gui/res/cardsfolder/s/saddle_of_the_cavalier.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/saddle_of_the_cavalier.txt rename to forge-gui/res/cardsfolder/s/saddle_of_the_cavalier.txt diff --git a/forge-gui/res/cardsfolder/upcoming/safana_calimport.cutthroat.txt b/forge-gui/res/cardsfolder/s/safana_calimport.cutthroat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/safana_calimport.cutthroat.txt rename to forge-gui/res/cardsfolder/s/safana_calimport.cutthroat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sailors_bane.txt b/forge-gui/res/cardsfolder/s/sailors_bane.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sailors_bane.txt rename to forge-gui/res/cardsfolder/s/sailors_bane.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sapphire_dragon_psionic_pulse.txt b/forge-gui/res/cardsfolder/s/sapphire_dragon_psionic_pulse.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sapphire_dragon_psionic_pulse.txt rename to forge-gui/res/cardsfolder/s/sapphire_dragon_psionic_pulse.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sarevok_deathbringer.txt b/forge-gui/res/cardsfolder/s/sarevok_deathbringer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sarevok_deathbringer.txt rename to forge-gui/res/cardsfolder/s/sarevok_deathbringer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sarevoks_tome.txt b/forge-gui/res/cardsfolder/s/sarevoks_tome.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sarevoks_tome.txt rename to forge-gui/res/cardsfolder/s/sarevoks_tome.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scaled_nurturer.txt b/forge-gui/res/cardsfolder/s/scaled_nurturer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/scaled_nurturer.txt rename to forge-gui/res/cardsfolder/s/scaled_nurturer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scion_of_halaster.txt b/forge-gui/res/cardsfolder/s/scion_of_halaster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/scion_of_halaster.txt rename to forge-gui/res/cardsfolder/s/scion_of_halaster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scouting_hawk.txt b/forge-gui/res/cardsfolder/s/scouting_hawk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/scouting_hawk.txt rename to forge-gui/res/cardsfolder/s/scouting_hawk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sculpted_sunburst.txt b/forge-gui/res/cardsfolder/s/sculpted_sunburst.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sculpted_sunburst.txt rename to forge-gui/res/cardsfolder/s/sculpted_sunburst.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sea_gate.txt b/forge-gui/res/cardsfolder/s/sea_gate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sea_gate.txt rename to forge-gui/res/cardsfolder/s/sea_gate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/seasoned_dungeoneer.txt b/forge-gui/res/cardsfolder/s/seasoned_dungeoneer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/seasoned_dungeoneer.txt rename to forge-gui/res/cardsfolder/s/seasoned_dungeoneer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/seek_new_knowledge.txt b/forge-gui/res/cardsfolder/s/seek_new_knowledge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/seek_new_knowledge.txt rename to forge-gui/res/cardsfolder/s/seek_new_knowledge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shadowheart_dark_justiciar.txt b/forge-gui/res/cardsfolder/s/shadowheart_dark_justiciar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shadowheart_dark_justiciar.txt rename to forge-gui/res/cardsfolder/s/shadowheart_dark_justiciar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shameless_charlatan.txt b/forge-gui/res/cardsfolder/s/shameless_charlatan.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shameless_charlatan.txt rename to forge-gui/res/cardsfolder/s/shameless_charlatan.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sharpshooter_elf.txt b/forge-gui/res/cardsfolder/s/sharpshooter_elf.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sharpshooter_elf.txt rename to forge-gui/res/cardsfolder/s/sharpshooter_elf.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shattering_finale.txt b/forge-gui/res/cardsfolder/s/shattering_finale.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shattering_finale.txt rename to forge-gui/res/cardsfolder/s/shattering_finale.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sigil_of_myrkul.txt b/forge-gui/res/cardsfolder/s/sigil_of_myrkul.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sigil_of_myrkul.txt rename to forge-gui/res/cardsfolder/s/sigil_of_myrkul.txt diff --git a/forge-gui/res/cardsfolder/upcoming/signature_spells.txt b/forge-gui/res/cardsfolder/s/signature_spells.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/signature_spells.txt rename to forge-gui/res/cardsfolder/s/signature_spells.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sivriss_nightmare_speaker.txt b/forge-gui/res/cardsfolder/s/sivriss_nightmare_speaker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sivriss_nightmare_speaker.txt rename to forge-gui/res/cardsfolder/s/sivriss_nightmare_speaker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skanos_dragonheart.txt b/forge-gui/res/cardsfolder/s/skanos_dragonheart.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skanos_dragonheart.txt rename to forge-gui/res/cardsfolder/s/skanos_dragonheart.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skyline_savior.txt b/forge-gui/res/cardsfolder/s/skyline_savior.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skyline_savior.txt rename to forge-gui/res/cardsfolder/s/skyline_savior.txt diff --git a/forge-gui/res/cardsfolder/upcoming/snowborn_simulacra.txt b/forge-gui/res/cardsfolder/s/snowborn_simulacra.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/snowborn_simulacra.txt rename to forge-gui/res/cardsfolder/s/snowborn_simulacra.txt diff --git a/forge-gui/res/cardsfolder/upcoming/solemn_doomguide.txt b/forge-gui/res/cardsfolder/s/solemn_doomguide.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/solemn_doomguide.txt rename to forge-gui/res/cardsfolder/s/solemn_doomguide.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sparas_bodyguard.txt b/forge-gui/res/cardsfolder/s/sparas_bodyguard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sparas_bodyguard.txt rename to forge-gui/res/cardsfolder/s/sparas_bodyguard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spectacular_showdown.txt b/forge-gui/res/cardsfolder/s/spectacular_showdown.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spectacular_showdown.txt rename to forge-gui/res/cardsfolder/s/spectacular_showdown.txt diff --git a/forge-gui/res/cardsfolder/upcoming/split_the_spoils.txt b/forge-gui/res/cardsfolder/s/split_the_spoils.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/split_the_spoils.txt rename to forge-gui/res/cardsfolder/s/split_the_spoils.txt diff --git a/forge-gui/res/cardsfolder/upcoming/steadfast_unicorn.txt b/forge-gui/res/cardsfolder/s/steadfast_unicorn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/steadfast_unicorn.txt rename to forge-gui/res/cardsfolder/s/steadfast_unicorn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stick_together.txt b/forge-gui/res/cardsfolder/s/stick_together.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stick_together.txt rename to forge-gui/res/cardsfolder/s/stick_together.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stirring_bard.txt b/forge-gui/res/cardsfolder/s/stirring_bard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stirring_bard.txt rename to forge-gui/res/cardsfolder/s/stirring_bard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stoneskin.txt b/forge-gui/res/cardsfolder/s/stoneskin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stoneskin.txt rename to forge-gui/res/cardsfolder/s/stoneskin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stonespeaker_crystal.txt b/forge-gui/res/cardsfolder/s/stonespeaker_crystal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stonespeaker_crystal.txt rename to forge-gui/res/cardsfolder/s/stonespeaker_crystal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/storm_kings_thunder.txt b/forge-gui/res/cardsfolder/s/storm_kings_thunder.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/storm_kings_thunder.txt rename to forge-gui/res/cardsfolder/s/storm_kings_thunder.txt diff --git a/forge-gui/res/cardsfolder/upcoming/street_urchin.txt b/forge-gui/res/cardsfolder/s/street_urchin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/street_urchin.txt rename to forge-gui/res/cardsfolder/s/street_urchin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stunning_strike.txt b/forge-gui/res/cardsfolder/s/stunning_strike.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stunning_strike.txt rename to forge-gui/res/cardsfolder/s/stunning_strike.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sunes_intervention.txt b/forge-gui/res/cardsfolder/s/sunes_intervention.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sunes_intervention.txt rename to forge-gui/res/cardsfolder/s/sunes_intervention.txt diff --git a/forge-gui/res/cardsfolder/upcoming/swashbuckler_extraordinaire.txt b/forge-gui/res/cardsfolder/s/swashbuckler_extraordinaire.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/swashbuckler_extraordinaire.txt rename to forge-gui/res/cardsfolder/s/swashbuckler_extraordinaire.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sword_coast_sailor.txt b/forge-gui/res/cardsfolder/s/sword_coast_sailor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sword_coast_sailor.txt rename to forge-gui/res/cardsfolder/s/sword_coast_sailor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sword_coast_serpent_capsizing_wave.txt b/forge-gui/res/cardsfolder/s/sword_coast_serpent_capsizing_wave.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sword_coast_serpent_capsizing_wave.txt rename to forge-gui/res/cardsfolder/s/sword_coast_serpent_capsizing_wave.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tabaxi_toucaneers.txt b/forge-gui/res/cardsfolder/t/tabaxi_toucaneers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tabaxi_toucaneers.txt rename to forge-gui/res/cardsfolder/t/tabaxi_toucaneers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tasha_unholy_archmage.txt b/forge-gui/res/cardsfolder/t/tasha_unholy_archmage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tasha_unholy_archmage.txt rename to forge-gui/res/cardsfolder/t/tasha_unholy_archmage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/taunting_kobold.txt b/forge-gui/res/cardsfolder/t/taunting_kobold.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/taunting_kobold.txt rename to forge-gui/res/cardsfolder/t/taunting_kobold.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tavern_brawler.txt b/forge-gui/res/cardsfolder/t/tavern_brawler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tavern_brawler.txt rename to forge-gui/res/cardsfolder/t/tavern_brawler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_council_of_four.txt b/forge-gui/res/cardsfolder/t/the_council_of_four.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_council_of_four.txt rename to forge-gui/res/cardsfolder/t/the_council_of_four.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_hourglass_coven.txt b/forge-gui/res/cardsfolder/t/the_hourglass_coven.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_hourglass_coven.txt rename to forge-gui/res/cardsfolder/t/the_hourglass_coven.txt diff --git a/forge-gui/res/cardsfolder/upcoming/thrakkus_the_butcher.txt b/forge-gui/res/cardsfolder/t/thrakkus_the_butcher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/thrakkus_the_butcher.txt rename to forge-gui/res/cardsfolder/t/thrakkus_the_butcher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/thunderwave.txt b/forge-gui/res/cardsfolder/t/thunderwave.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/thunderwave.txt rename to forge-gui/res/cardsfolder/t/thunderwave.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tiamats_fanatics.txt b/forge-gui/res/cardsfolder/t/tiamats_fanatics.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tiamats_fanatics.txt rename to forge-gui/res/cardsfolder/t/tiamats_fanatics.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tlincalli_hunter_retrieve_prey.txt b/forge-gui/res/cardsfolder/t/tlincalli_hunter_retrieve_prey.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tlincalli_hunter_retrieve_prey.txt rename to forge-gui/res/cardsfolder/t/tlincalli_hunter_retrieve_prey.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tomb_of_horrors_adventurer.txt b/forge-gui/res/cardsfolder/t/tomb_of_horrors_adventurer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tomb_of_horrors_adventurer.txt rename to forge-gui/res/cardsfolder/t/tomb_of_horrors_adventurer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/topaz_dragon_entropic_cloud.txt b/forge-gui/res/cardsfolder/t/topaz_dragon_entropic_cloud.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/topaz_dragon_entropic_cloud.txt rename to forge-gui/res/cardsfolder/t/topaz_dragon_entropic_cloud.txt diff --git a/forge-gui/res/cardsfolder/upcoming/trailblazers_torch.txt b/forge-gui/res/cardsfolder/t/trailblazers_torch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/trailblazers_torch.txt rename to forge-gui/res/cardsfolder/t/trailblazers_torch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/traumatic_prank.txt b/forge-gui/res/cardsfolder/t/traumatic_prank.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/traumatic_prank.txt rename to forge-gui/res/cardsfolder/t/traumatic_prank.txt diff --git a/forge-gui/res/cardsfolder/upcoming/two_handed_axe_sweeping_cleave.txt b/forge-gui/res/cardsfolder/t/two_handed_axe_sweeping_cleave.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/two_handed_axe_sweeping_cleave.txt rename to forge-gui/res/cardsfolder/t/two_handed_axe_sweeping_cleave.txt diff --git a/forge-gui/res/cardsfolder/upcoming/uchuulon.txt b/forge-gui/res/cardsfolder/u/uchuulon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/uchuulon.txt rename to forge-gui/res/cardsfolder/u/uchuulon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/undercellar_myconid.txt b/forge-gui/res/cardsfolder/u/undercellar_myconid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/undercellar_myconid.txt rename to forge-gui/res/cardsfolder/u/undercellar_myconid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/undercellar_sweep.txt b/forge-gui/res/cardsfolder/u/undercellar_sweep.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/undercellar_sweep.txt rename to forge-gui/res/cardsfolder/u/undercellar_sweep.txt diff --git a/forge-gui/res/cardsfolder/upcoming/undercity.txt b/forge-gui/res/cardsfolder/u/undercity.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/undercity.txt rename to forge-gui/res/cardsfolder/u/undercity.txt diff --git a/forge-gui/res/cardsfolder/upcoming/underdark_explorer.txt b/forge-gui/res/cardsfolder/u/underdark_explorer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/underdark_explorer.txt rename to forge-gui/res/cardsfolder/u/underdark_explorer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/undermountain_adventurer.txt b/forge-gui/res/cardsfolder/u/undermountain_adventurer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/undermountain_adventurer.txt rename to forge-gui/res/cardsfolder/u/undermountain_adventurer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/uthgardt_fury.txt b/forge-gui/res/cardsfolder/u/uthgardt_fury.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/uthgardt_fury.txt rename to forge-gui/res/cardsfolder/u/uthgardt_fury.txt diff --git a/forge-gui/res/cardsfolder/upcoming/venture_forth.txt b/forge-gui/res/cardsfolder/v/venture_forth.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/venture_forth.txt rename to forge-gui/res/cardsfolder/v/venture_forth.txt diff --git a/forge-gui/res/cardsfolder/upcoming/verdant_rejuvenation.txt b/forge-gui/res/cardsfolder/v/verdant_rejuvenation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/verdant_rejuvenation.txt rename to forge-gui/res/cardsfolder/v/verdant_rejuvenation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/veteran_soldier.txt b/forge-gui/res/cardsfolder/v/veteran_soldier.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/veteran_soldier.txt rename to forge-gui/res/cardsfolder/v/veteran_soldier.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vexing_puzzlebox.txt b/forge-gui/res/cardsfolder/v/vexing_puzzlebox.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vexing_puzzlebox.txt rename to forge-gui/res/cardsfolder/v/vexing_puzzlebox.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vhal_candelkeep_researcher.txt b/forge-gui/res/cardsfolder/v/vhal_candelkeep_researcher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vhal_candelkeep_researcher.txt rename to forge-gui/res/cardsfolder/v/vhal_candelkeep_researcher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vicious_battlerager.txt b/forge-gui/res/cardsfolder/v/vicious_battlerager.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vicious_battlerager.txt rename to forge-gui/res/cardsfolder/v/vicious_battlerager.txt diff --git a/forge-gui/res/cardsfolder/upcoming/viconia_drow_apostate.txt b/forge-gui/res/cardsfolder/v/viconia_drow_apostate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/viconia_drow_apostate.txt rename to forge-gui/res/cardsfolder/v/viconia_drow_apostate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vladimir_and_godfrey.txt b/forge-gui/res/cardsfolder/v/vladimir_and_godfrey.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vladimir_and_godfrey.txt rename to forge-gui/res/cardsfolder/v/vladimir_and_godfrey.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vogar_necropolis_tyrant.txt b/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vogar_necropolis_tyrant.txt rename to forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/volo_itinerant_scholar.txt b/forge-gui/res/cardsfolder/v/volo_itinerant_scholar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/volo_itinerant_scholar.txt rename to forge-gui/res/cardsfolder/v/volo_itinerant_scholar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vrock.txt b/forge-gui/res/cardsfolder/v/vrock.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vrock.txt rename to forge-gui/res/cardsfolder/v/vrock.txt diff --git a/forge-gui/res/cardsfolder/upcoming/warehouse_thief.txt b/forge-gui/res/cardsfolder/w/warehouse_thief.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/warehouse_thief.txt rename to forge-gui/res/cardsfolder/w/warehouse_thief.txt diff --git a/forge-gui/res/cardsfolder/upcoming/white_plume_adventurer.txt b/forge-gui/res/cardsfolder/w/white_plume_adventurer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/white_plume_adventurer.txt rename to forge-gui/res/cardsfolder/w/white_plume_adventurer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wild_magic_surge.txt b/forge-gui/res/cardsfolder/w/wild_magic_surge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wild_magic_surge.txt rename to forge-gui/res/cardsfolder/w/wild_magic_surge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wilson_refined_grizzly.txt b/forge-gui/res/cardsfolder/w/wilson_refined_grizzly.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wilson_refined_grizzly.txt rename to forge-gui/res/cardsfolder/w/wilson_refined_grizzly.txt diff --git a/forge-gui/res/cardsfolder/upcoming/windshaper_planetar.txt b/forge-gui/res/cardsfolder/w/windshaper_planetar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/windshaper_planetar.txt rename to forge-gui/res/cardsfolder/w/windshaper_planetar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/winter_eladrin.txt b/forge-gui/res/cardsfolder/w/winter_eladrin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/winter_eladrin.txt rename to forge-gui/res/cardsfolder/w/winter_eladrin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wizened_githzerai.txt b/forge-gui/res/cardsfolder/w/wizened_githzerai.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wizened_githzerai.txt rename to forge-gui/res/cardsfolder/w/wizened_githzerai.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wrathful_red_dragon.txt b/forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wrathful_red_dragon.txt rename to forge-gui/res/cardsfolder/w/wrathful_red_dragon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wyll_blade_of_frontiers.txt b/forge-gui/res/cardsfolder/w/wyll_blade_of_frontiers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wyll_blade_of_frontiers.txt rename to forge-gui/res/cardsfolder/w/wyll_blade_of_frontiers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wyrms_crossing_patrol.txt b/forge-gui/res/cardsfolder/w/wyrms_crossing_patrol.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wyrms_crossing_patrol.txt rename to forge-gui/res/cardsfolder/w/wyrms_crossing_patrol.txt diff --git a/forge-gui/res/cardsfolder/upcoming/xanders_wake.txt b/forge-gui/res/cardsfolder/x/xanders_wake.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/xanders_wake.txt rename to forge-gui/res/cardsfolder/x/xanders_wake.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_line_up_the_shot.txt b/forge-gui/res/cardsfolder/y/you_line_up_the_shot.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_line_up_the_shot.txt rename to forge-gui/res/cardsfolder/y/you_line_up_the_shot.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_look_upon_the_tarrasque.txt b/forge-gui/res/cardsfolder/y/you_look_upon_the_tarrasque.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_look_upon_the_tarrasque.txt rename to forge-gui/res/cardsfolder/y/you_look_upon_the_tarrasque.txt diff --git a/forge-gui/res/cardsfolder/upcoming/young_blue_dragon_sand_augury.txt b/forge-gui/res/cardsfolder/y/young_blue_dragon_sand_augury.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/young_blue_dragon_sand_augury.txt rename to forge-gui/res/cardsfolder/y/young_blue_dragon_sand_augury.txt diff --git a/forge-gui/res/cardsfolder/upcoming/young_red_dragon_bathe_in_gold.txt b/forge-gui/res/cardsfolder/y/young_red_dragon_bathe_in_gold.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/young_red_dragon_bathe_in_gold.txt rename to forge-gui/res/cardsfolder/y/young_red_dragon_bathe_in_gold.txt diff --git a/forge-gui/res/cardsfolder/upcoming/your_temple_is_under_attack.txt b/forge-gui/res/cardsfolder/y/your_temple_is_under_attack.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/your_temple_is_under_attack.txt rename to forge-gui/res/cardsfolder/y/your_temple_is_under_attack.txt diff --git a/forge-gui/res/cardsfolder/upcoming/youre_confronted_by_robbers.txt b/forge-gui/res/cardsfolder/y/youre_confronted_by_robbers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/youre_confronted_by_robbers.txt rename to forge-gui/res/cardsfolder/y/youre_confronted_by_robbers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/youve_been_caught_stealing.txt b/forge-gui/res/cardsfolder/y/youve_been_caught_stealing.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/youve_been_caught_stealing.txt rename to forge-gui/res/cardsfolder/y/youve_been_caught_stealing.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zamriel_seraph_of_steel.txt b/forge-gui/res/cardsfolder/z/zamriel_seraph_of_steel.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zamriel_seraph_of_steel.txt rename to forge-gui/res/cardsfolder/z/zamriel_seraph_of_steel.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zangief_the_red_cyclone.txt b/forge-gui/res/cardsfolder/z/zangief_the_red_cyclone.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zangief_the_red_cyclone.txt rename to forge-gui/res/cardsfolder/z/zangief_the_red_cyclone.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zellix_sanity_flayer.txt b/forge-gui/res/cardsfolder/z/zellix_sanity_flayer.txt similarity index 98% rename from forge-gui/res/cardsfolder/upcoming/zellix_sanity_flayer.txt rename to forge-gui/res/cardsfolder/z/zellix_sanity_flayer.txt index 22f8fdf1a54..3bf7fbea9dc 100644 --- a/forge-gui/res/cardsfolder/upcoming/zellix_sanity_flayer.txt +++ b/forge-gui/res/cardsfolder/z/zellix_sanity_flayer.txt @@ -1,10 +1,10 @@ -Name:Zellix, Sanity Flayer -ManaCost:2 U -Types:Legendary Creature Horror -PT:2/3 -K:Choose a Background -T:Mode$ MilledAll | ValidPlayer$ Player | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Hive Mind — Whenever a player mills one or more creature cards, you create a 1/1 black Horror creature token. -SVar:TrigToken:DB$ Token | TokenScript$ b_1_1_horror -A:AB$ Mill | Cost$ 1 T | NumCards$ 3 | ValidTgts$ Player | TgtPrompt$ Select a player | SpellDescription$ Target player mills three cards. -DeckHas:Ability$Mill|Token +Name:Zellix, Sanity Flayer +ManaCost:2 U +Types:Legendary Creature Horror +PT:2/3 +K:Choose a Background +T:Mode$ MilledAll | ValidPlayer$ Player | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Hive Mind — Whenever a player mills one or more creature cards, you create a 1/1 black Horror creature token. +SVar:TrigToken:DB$ Token | TokenScript$ b_1_1_horror +A:AB$ Mill | Cost$ 1 T | NumCards$ 3 | ValidTgts$ Player | TgtPrompt$ Select a player | SpellDescription$ Target player mills three cards. +DeckHas:Ability$Mill|Token Oracle:Hive Mind — Whenever a player mills one or more creature cards, you create a 1/1 black Horror creature token.\n{1},{T}: Target player mills three cards.\nChoose a Background (You can have a Background as a second commander.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/zhentarim_bandit.txt b/forge-gui/res/cardsfolder/z/zhentarim_bandit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zhentarim_bandit.txt rename to forge-gui/res/cardsfolder/z/zhentarim_bandit.txt From 38cbaccff975a9e4f69b60bb60ffda7ed38f679f Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Sun, 21 Aug 2022 08:49:24 +0100 Subject: [PATCH 57/65] DMU & DMC edition updates --- .../cardsfolder/{upcoming => f}/follow_the_tracks.txt | 0 forge-gui/res/editions/Dominaria United Commander.txt | 2 ++ forge-gui/res/editions/Dominaria United.txt | 9 +++++++++ 3 files changed, 11 insertions(+) rename forge-gui/res/cardsfolder/{upcoming => f}/follow_the_tracks.txt (100%) diff --git a/forge-gui/res/cardsfolder/upcoming/follow_the_tracks.txt b/forge-gui/res/cardsfolder/f/follow_the_tracks.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/follow_the_tracks.txt rename to forge-gui/res/cardsfolder/f/follow_the_tracks.txt diff --git a/forge-gui/res/editions/Dominaria United Commander.txt b/forge-gui/res/editions/Dominaria United Commander.txt index c2bcd6c6b0b..9f247f10d7c 100644 --- a/forge-gui/res/editions/Dominaria United Commander.txt +++ b/forge-gui/res/editions/Dominaria United Commander.txt @@ -37,6 +37,8 @@ ScryfallCode=DMC 39 R Ramses, Assassin Lord @Manuel Castañón 40 R Rasputin, the Oneiromancer @Matt Stewart 41 R Rohgahh, Kher Keep Overlord @Chris Seaman +42 R Stangg, Echo Warrior @Randy Vargas +43 M Sivitri, Dragon Master @Livia Prima 44 M Tetsuo, Imperial Champion @Lius Lasahido 46 U Tor Wauki the Younger @Karl Kopinski 47 M Torsten, Founder of Benalia @Volkan Baǵa diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index b9e3be0e180..7fac6373a38 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -8,6 +8,7 @@ Type=Expansion ScryfallCode=DMU [cards] +1 M Karn, Living Legacy @Chris Rahn 3 R Archangel of Wrath @Miguel Mercado 8 C Benalish Sleeper @Josu Hernaiz 10 C Charismatic Vanguard @David Palumbo @@ -24,6 +25,7 @@ ScryfallCode=DMU 54 C Impede Momentum @Igor Kieryluk 57 U Micromancer @Ernanda Souza 59 R The Phasing of Zhalfir @LA Draws +62 C Protect the Negotiators @Dominik Mayer 67 M Sphinx of Clear Skies @Valera Lutfullina 71 C Tolarian Geyser @Olivier Bernard 72 C Tolarian Terror @Vincent Christiaens @@ -34,6 +36,7 @@ ScryfallCode=DMU 89 U Cut Down @Dominik Mayer 93 R Evolved Sleeper @Jason A. Engle 97 M Liliana of the Veil @Martina Fackova +98 U Monstrous War-Leech @Christopher Burdett 103 R The Raven Man @Chris Rahn 104 U Sengir Connoisseur @Irina Nordsol 107 M Sheoldred, the Apocalypse @Chris Rahn @@ -42,6 +45,7 @@ ScryfallCode=DMU 114 C Urborg Repossession @Cristi Balanescu 115 C Writhing Necromass @Campbell White 117 R Chaotic Transformation @Joseph Meehan +120 U Dragon Whelp @Jokubas Uogintas 133 M Jaya, Fiery Negotiator @Marta Nael 135 R Keldon Flamesage @Jason A. Engle 137 C Lightning Strike @Marta Nael @@ -58,10 +62,12 @@ ScryfallCode=DMU 174 U Nishoba Brawler @Valera Lutfullina 176 C Scout the Wilderness @A. M. Sartor 179 C Snarespinner @Michele Giorgi +180 U Strength of the Coalition @Justine Cruz 184 U Territorial Maro @Simon Dominic 185 R Threats Undetected @Randy Vargas 187 C Vineshaper Prodigy @Inka Schulz 189 M The World Spell @Adam Paquette +190 U Yavimaya Iconoclast @Caio Monteiro 192 M Ajani, Sleeper Agent @Matt Stewart 194 R Astor, Bearer of Blades @Josh Hass 202 R Jhoira, Ageless Innovator @Justyna Gil @@ -77,6 +83,7 @@ ScryfallCode=DMU 243 R Adarkar Wastes @Piotr Dura 244 R Caves of Koilos @Julian Kok Joon Wen 250 R Karplusan Forest @Sam Burley +252 R Plaza of Heroes @Gabor Szikszai 255 R Shivan Reef @Andrew Mar 256 R Sulfurous Springs @Bruce Brenneise 261 R Yavimaya Coast @Jesper Ejsing @@ -119,6 +126,7 @@ ScryfallCode=DMU 369 M Sheoldred, the Apocalypse @Chris Rahn 370 M Ajani, Sleeper Agent @Victor Adame Minguez 371 M Ajani, Sleeper Agent @Victor Adame Minguez +372 M Karn, Living Legacy @rk post 373 M Liliana of the Veil @Brom 374 M Jaya, Fiery Negotiator @Scott M. Fischer 375 M Ajani, Sleeper Agent @Adam Rex @@ -138,6 +146,7 @@ ScryfallCode=DMU 410 M Shivan Devastator @Brent Hollowell 411 R Temporal Firestorm @Nestor Ossandon Leal 416 R Llanowar Loamspeaker @Zara Alfonso +421 R Plaza of Heroes @Gabor Szikszai 428 R Llanowar Loamspeaker @Volkan Baǵa 429 R Herd Migration @Antonio José Manzanedo 434 U Nishoba Brawler @Valera Lutfullina From c40f37fe5a8f1a6c0c641638136386f473aabae5 Mon Sep 17 00:00:00 2001 From: JohnWilliams77 <103562494+JohnWilliams77@users.noreply.github.com> Date: Sun, 21 Aug 2022 09:40:38 +0100 Subject: [PATCH 58/65] Update Secret Lair Drop Series.txt --- forge-gui/res/editions/Secret Lair Drop Series.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/forge-gui/res/editions/Secret Lair Drop Series.txt b/forge-gui/res/editions/Secret Lair Drop Series.txt index fd362071d44..42ed36bdc04 100644 --- a/forge-gui/res/editions/Secret Lair Drop Series.txt +++ b/forge-gui/res/editions/Secret Lair Drop Series.txt @@ -585,6 +585,8 @@ ScryfallCode=SLD 646 R Two-Headed Sliver @Dany Orizio 647 R Brood Sliver @Ron Spears 649 R Horned Sliver @Allen Williams +650 R Manaweft Sliver @Trevor Claxton +652 R Might Sliver @Jeff Miracola 657 R Tempered Sliver @Mitchell Malloy 660 R Cloudshredder Sliver @Filip Burburan 661 R Crystalline Sliver @Allen Williams From 4b8fea8f709f142618f920e48a07182a8cb6471a Mon Sep 17 00:00:00 2001 From: Northmoc <103371817+Northmoc@users.noreply.github.com> Date: Sun, 21 Aug 2022 05:37:22 -0400 Subject: [PATCH 59/65] PlayerControllerHuman.DevModeCheats.addCardToZone set "back side" as appropriate when adding cards to play with dev mode (#1351) --- .../src/main/java/forge/player/PlayerControllerHuman.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 9eac358672a..7e0a4b8ee01 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -2753,9 +2753,11 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont getGame().getAction().invoke(() -> { if (targetZone == ZoneType.Battlefield) { if (!forgeCard.getName().equals(f.getName())) { - forgeCard.changeToState(CardStateName.Flipped); - forgeCard.changeToState(CardStateName.Transformed); - forgeCard.changeToState(CardStateName.Modal); + forgeCard.changeToState(forgeCard.getRules().getSplitType().getChangedStateName()); + if (forgeCard.getCurrentStateName().equals(CardStateName.Transformed) || + forgeCard.getCurrentStateName().equals(CardStateName.Modal)) { + forgeCard.setBackSide(true); + } } if (noTriggers) { From ce89121ba33d65fddb4a6dfe688f06191df12dab Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Sun, 21 Aug 2022 12:59:13 +0200 Subject: [PATCH 60/65] Card: add Stun Counter Effect (#1379) --- .../src/main/java/forge/ai/ComputerUtil.java | 2 +- .../src/main/java/forge/game/card/Card.java | 18 +++++++++++++++--- .../java/forge/game/card/CounterEnumType.java | 2 ++ .../cardsfolder/upcoming/impede_momentum.txt | 8 ++++++++ 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/impede_momentum.txt diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index 387d4a83e07..304c825596c 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -2809,7 +2809,7 @@ public class ComputerUtil { || type.is(CounterEnumType.GOLD) || type.is(CounterEnumType.MUSIC) || type.is(CounterEnumType.PUPA) || type.is(CounterEnumType.PARALYZATION) || type.is(CounterEnumType.SHELL) || type.is(CounterEnumType.SLEEP) || type.is(CounterEnumType.SLUMBER) || type.is(CounterEnumType.SLEIGHT) || type.is(CounterEnumType.WAGE) - || type.is(CounterEnumType.INCARNATION) || type.is(CounterEnumType.RUST); + || type.is(CounterEnumType.INCARNATION) || type.is(CounterEnumType.RUST) || type.is(CounterEnumType.STUN); } // this countertypes has no effect diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index eab8afa5f4e..fe29ac14162 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -334,6 +334,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars { private ReplacementEffect shieldCounterReplaceDamage = null; private ReplacementEffect shieldCounterReplaceDestroy = null; + private ReplacementEffect stunCounterReplaceUntap = null; // Enumeration for CMC request types public enum SplitCMCMode { @@ -6100,16 +6101,16 @@ public class Card extends GameEntity implements Comparable, IHasSVars { } // Shield Counter aren't affected by Changed Card Traits - if (this.getCounters(CounterEnumType.SHIELD) > 0) { + if (getCounters(CounterEnumType.SHIELD) > 0) { String sa = "DB$ RemoveCounter | Defined$ Self | CounterType$ Shield | CounterNum$ 1"; if (shieldCounterReplaceDamage == null) { - String reStr = "Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Card.Self | PreventionEffect$ True | AlwaysReplace$ True " + String reStr = "Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Card.Self | PreventionEffect$ True | AlwaysReplace$ True | Secondary$ True " + "| Description$ If damage would be dealt to this permanent, prevent that damage and remove a shield counter from it."; shieldCounterReplaceDamage = ReplacementHandler.parseReplacement(reStr, this, false, null); shieldCounterReplaceDamage.setOverridingAbility(AbilityFactory.getAbility(sa, this)); } if (shieldCounterReplaceDestroy == null) { - String reStr = "Event$ Destroy | ActiveZones$ Battlefield | ValidCard$ Card.Self | ValidSource$ SpellAbility " + String reStr = "Event$ Destroy | ActiveZones$ Battlefield | ValidCard$ Card.Self | ValidSource$ SpellAbility | Secondary$ True " + "| Description$ If this permanent would be destroyed as the result of an effect, instead remove a shield counter from it."; shieldCounterReplaceDestroy = ReplacementHandler.parseReplacement(reStr, this, false, null); shieldCounterReplaceDestroy.setOverridingAbility(AbilityFactory.getAbility(sa, this)); @@ -6118,6 +6119,17 @@ public class Card extends GameEntity implements Comparable, IHasSVars { list.add(shieldCounterReplaceDamage); list.add(shieldCounterReplaceDestroy); } + if (getCounters(CounterEnumType.STUN) > 0) { + String sa = "DB$ RemoveCounter | Defined$ Self | CounterType$ Stun | CounterNum$ 1"; + if (stunCounterReplaceUntap == null) { + String reStr = "Event$ Untap | ActiveZones$ Battlefield | ValidCard$ Card.Self | Secondary$ True " + + "| Description$ If this permanent would become untapped, instead remove a stun counter from it."; + + stunCounterReplaceUntap = ReplacementHandler.parseReplacement(reStr, this, false, null); + stunCounterReplaceUntap.setOverridingAbility(AbilityFactory.getAbility(sa, this)); + } + list.add(stunCounterReplaceUntap); + } } public boolean hasReplacementEffect(final ReplacementEffect re) { 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 6bd9a2fb41b..ab66a3ab70f 100644 --- a/forge-game/src/main/java/forge/game/card/CounterEnumType.java +++ b/forge-game/src/main/java/forge/game/card/CounterEnumType.java @@ -329,6 +329,8 @@ public enum CounterEnumType { STUDY("STUDY", 226, 192, 165), + STUN("STUN", 226, 192, 165), + TASK("TASK", 191, 63, 49), THEFT("THEFT", 255, 176, 125), diff --git a/forge-gui/res/cardsfolder/upcoming/impede_momentum.txt b/forge-gui/res/cardsfolder/upcoming/impede_momentum.txt new file mode 100644 index 00000000000..0e3cbe0989a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/impede_momentum.txt @@ -0,0 +1,8 @@ +Name:Impede Momentum +ManaCost:1 U +Types:Sorcery +A:SP$ Tap | TgtPrompt$ Choose target creature | ValidTgts$ Creature | SubAbility$ DBCounter | SpellDescription$ Tap target creature and put three stun counters on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) +SVar:DBCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ Stun | CounterNum$ 3 | SubAbility$ DBScry +SVar:DBScry:DB$ Scry | ScryNum$ 1 | SpellDescription$ Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +DeckHints:Ability$Counters +Oracle:Tap target creature and put three stun counters on it. (If a permanent with a stun counter would become untapped, remove one from it instead.)\nScry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) From bb52a6b2bb1567f42c1d17c4aae1ad819e2308a3 Mon Sep 17 00:00:00 2001 From: Northmoc <103371817+Northmoc@users.noreply.github.com> Date: Sun, 21 Aug 2022 09:20:21 -0400 Subject: [PATCH 61/65] DMC: Jared Carthalion and support (#1368) * add text to all color tokens * all_3_3_kavu_trample.txt * ColorSet.isAllColors boolean * ForgeScript.cardStateHasProperty "AllColors" * CountersPutEffect.resolvePerType "CounterNumPerDefined" * jared_carthalion.txt --- forge-core/src/main/java/forge/card/ColorSet.java | 9 +++++++++ .../src/main/java/forge/game/ForgeScript.java | 5 +++++ .../game/ability/effects/CountersPutEffect.java | 3 +++ .../res/cardsfolder/upcoming/jared_carthalion.txt | 15 +++++++++++++++ forge-gui/res/tokenscripts/all_2_2_citizen.txt | 1 + .../res/tokenscripts/all_3_3_kavu_trample.txt | 8 ++++++++ forge-gui/res/tokenscripts/mechtitan.txt | 1 + 7 files changed, 42 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/jared_carthalion.txt create mode 100644 forge-gui/res/tokenscripts/all_3_3_kavu_trample.txt diff --git a/forge-core/src/main/java/forge/card/ColorSet.java b/forge-core/src/main/java/forge/card/ColorSet.java index 30a6c5d6571..d7aa9933d7b 100644 --- a/forge-core/src/main/java/forge/card/ColorSet.java +++ b/forge-core/src/main/java/forge/card/ColorSet.java @@ -190,6 +190,15 @@ public final class ColorSet implements Comparable, Iterable, Ser return this.countColors() > 1; } + /** + * Checks if is all colors. + * + * @return true, if is all colors + */ + public boolean isAllColors() { + return this == ALL_COLORS; + } + /** * Checks if is mono color. * diff --git a/forge-game/src/main/java/forge/game/ForgeScript.java b/forge-game/src/main/java/forge/game/ForgeScript.java index 3568ca5e9ac..93897c40050 100644 --- a/forge-game/src/main/java/forge/game/ForgeScript.java +++ b/forge-game/src/main/java/forge/game/ForgeScript.java @@ -59,6 +59,11 @@ public class ForgeScript { return false; return property.startsWith("non") != colors.isMulticolor(); + } else if (property.contains("AllColors")) { + if (property.endsWith("Source") && isColorlessSource) + return false; + return property.startsWith("non") != colors.isAllColors(); + } else if (property.contains("MonoColor")) { // ... Card is monocolored if (property.endsWith("Source") && isColorlessSource) return false; diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index fa835122984..f41b7cbdcd0 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -439,6 +439,9 @@ public class CountersPutEffect extends SpellAbilityEffect { } if (obj instanceof Card) { + if (sa.hasParam("CounterNumPerDefined")) { + counterAmount = AbilityUtils.calculateAmount(gameCard, sa.getParam("CounterNumPerDefined"), sa); + } counterAmount = sa.usesTargeting() && sa.isDividedAsYouChoose() ? sa.getDividedValue(gameCard) : counterAmount; if (!sa.usesTargeting() || gameCard.canBeTargetedBy(sa)) { diff --git a/forge-gui/res/cardsfolder/upcoming/jared_carthalion.txt b/forge-gui/res/cardsfolder/upcoming/jared_carthalion.txt new file mode 100644 index 00000000000..8f05352e686 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/jared_carthalion.txt @@ -0,0 +1,15 @@ +Name:Jared Carthalion +ManaCost:W U B R G +Types:Legendary Planeswalker Jared +Loyalty:5 +A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenScript$ all_3_3_kavu_trample | SpellDescription$ Create a 3/3 Kavu creature token with trample that's all colors. +A:AB$ PutCounter | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | Defined$ Targeted | CounterType$ P1P1 | CounterNumPerDefined$ X | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Choose up to two target creatures | StackDescription$ For each of {c:Targeted}, put a number of +1/+1 counters on it equal to the number of colors it is. | SpellDescription$ Choose up to two target creatures. For each of them, put a number of +1/+1 counters on it equal to the number of colors it is. +SVar:X:Count$CardNumColors +A:AB$ ChangeZone | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target multicolored card in your graveyard | ValidTgts$ Card.MultiColor+YouOwn | RememberChanged$ True | SubAbility$ DBDraw | SpellDescription$ Return target multicolored card from your graveyard to your hand. +SVar:DBDraw:DB$ Draw | ConditionDefined$ Remembered | ConditionPresent$ Card.AllColors | SubAbility$ DBTreasure | StackDescription$ If that card was all colors, {p:You} draws a card and creates two Treasure tokens. | SpellDescription$ If that card was all colors, draw a card and create two Treasure tokens. +SVar:DBTreasure:DB$ Token | ConditionDefined$ Remembered | ConditionPresent$ Card.AllColors | TokenAmount$ 2 | TokenScript$ c_a_treasure_sac | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Text:CARDNAME can be your commander. +DeckHas:Ability$Token|Counters|Sacrifice|Graveyard & Type$Kavu|Artifact|Treasure +AI:RemoveDeck:Random +Oracle:[+1]: Create a 3/3 Kavu creature token with trample that's all colors.\n[−3]: Choose up to two target creatures. For each of them, put a number of +1/+1 counters on it equal to the number of colors it is.\n[−6]: Return target multicolored card from your graveyard to your hand. If that card was all colors, draw a card and create two Treasure tokens.\nJared Carthalion can be your commander. diff --git a/forge-gui/res/tokenscripts/all_2_2_citizen.txt b/forge-gui/res/tokenscripts/all_2_2_citizen.txt index c0087a12203..c3381cb8227 100644 --- a/forge-gui/res/tokenscripts/all_2_2_citizen.txt +++ b/forge-gui/res/tokenscripts/all_2_2_citizen.txt @@ -3,4 +3,5 @@ ManaCost:no cost Colors:all Types:Creature Citizen PT:2/2 +Text:This creature is all colors. Oracle:This creature is all colors. diff --git a/forge-gui/res/tokenscripts/all_3_3_kavu_trample.txt b/forge-gui/res/tokenscripts/all_3_3_kavu_trample.txt new file mode 100644 index 00000000000..035e863d8e9 --- /dev/null +++ b/forge-gui/res/tokenscripts/all_3_3_kavu_trample.txt @@ -0,0 +1,8 @@ +Name:Kavu Token +ManaCost:no cost +Colors:all +Types:Creature Kavu +PT:3/3 +K:Trample +Text:This creature is all colors. +Oracle:Trample\nThis creature is all colors. diff --git a/forge-gui/res/tokenscripts/mechtitan.txt b/forge-gui/res/tokenscripts/mechtitan.txt index a7ce4651601..696a15a9a26 100644 --- a/forge-gui/res/tokenscripts/mechtitan.txt +++ b/forge-gui/res/tokenscripts/mechtitan.txt @@ -8,4 +8,5 @@ K:Vigilance K:Trample K:Lifelink K:Haste +Text:CARDNAME is all colors. Oracle:Mechtitan is all colors.\nFlying, vigilance, trample, lifelink, haste From 6eb6b7e36bd81252d58ed287fdfe9cd11a36bd6e Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 21 Aug 2022 15:20:43 +0200 Subject: [PATCH 62/65] 6 more DMC + 2 Tokenscripts (#1372) * 5 more DMC * Update the_reaver_cleaver.txt * Update and rename rasputin_the_neiromancer.txt to rasputin_the_oneiromancer.txt * Rename w_2_2_knight_protectionred.txt to w_2_2_knight_pro_red.txt * Rename two-headed_hellkite.txt to two_headed_hellkite.txt * Update rasputin_the_oneiromancer.txt * Egg * Update xira_the_golden_sting.txt * Update xira_the_golden_sting.txt * Update the_reaver_cleaver.txt * Update xira_the_golden_sting.txt * Update rasputin_the_oneiromancer.txt * Update mana_cannons.txt * Update the_reaver_cleaver.txt * Update xira_the_golden_sting.txt * Update the_reaver_cleaver.txt * Update zeriam_golden_wind.txt --- forge-gui/res/cardsfolder/upcoming/mana_cannons.txt | 9 +++++++++ .../upcoming/rasputin_the_oneiromancer.txt | 12 ++++++++++++ .../res/cardsfolder/upcoming/the_reaver_cleaver.txt | 10 ++++++++++ .../res/cardsfolder/upcoming/two_headed_hellkite.txt | 10 ++++++++++ .../cardsfolder/upcoming/xira_the_golden_sting.txt | 12 ++++++++++++ .../res/cardsfolder/upcoming/zeriam_golden_wind.txt | 8 ++++++++ forge-gui/res/tokenscripts/b_1_1_insect_flying.txt | 7 +++++++ forge-gui/res/tokenscripts/w_2_2_knight_pro_red.txt | 7 +++++++ 8 files changed, 75 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/mana_cannons.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/rasputin_the_oneiromancer.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_reaver_cleaver.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/two_headed_hellkite.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/xira_the_golden_sting.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/zeriam_golden_wind.txt create mode 100644 forge-gui/res/tokenscripts/b_1_1_insect_flying.txt create mode 100644 forge-gui/res/tokenscripts/w_2_2_knight_pro_red.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mana_cannons.txt b/forge-gui/res/cardsfolder/upcoming/mana_cannons.txt new file mode 100644 index 00000000000..2874830dd8f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mana_cannons.txt @@ -0,0 +1,9 @@ +Name:Mana Cannons +ManaCost:2 R +Types:Enchantment +T:Mode$ SpellCast | ValidCard$ Card.MultiColor | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a multicolored spell, CARDNAME deals X damage to any target, where X is the number of colors that spell is. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X +SVar:X:TriggeredCard$CardNumColors +SVar:BuffedBy:Card.MultiColor +AI:RemoveDeck:Random +Oracle:Whenever you cast a multicolored spell, Mana Cannons deals X damage to any target, where X is the number of colors that spell is. diff --git a/forge-gui/res/cardsfolder/upcoming/rasputin_the_oneiromancer.txt b/forge-gui/res/cardsfolder/upcoming/rasputin_the_oneiromancer.txt new file mode 100644 index 00000000000..5237ca7f8d2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rasputin_the_oneiromancer.txt @@ -0,0 +1,12 @@ +Name:Rasputin, the Oneiromancer +ManaCost:1 W U +Types:Legendary Creature Human Wizard +PT:4/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a dream counter on it for each opponent you have. Each opponent creates a 1/1 red Goblin creature token. +SVar:TrigCounter:DB$ PutCounter | CounterType$ Dream | CounterNum$ X | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenOwner$ Opponent +A:AB$ Mana | Cost$ T SubCounter | Produced$ C | Amount$ Y | SpellDescription$ Add that much {C}. +A:AB$ Token | Cost$ T SubCounter<1/DREAM> | TokenScript$ w_2_2_knight_pro_red | SpellDescription$ Create a 2/2 white Knight creature token with protection from red. +SVar:X:PlayerCountOpponents$Amount +SVar:Y:Count$xPaid +Oracle:When Rasputin, the Oneiromancer enters the battlefield, put a dream counter on it for each opponent you have. Each opponent creates a 1/1 red Goblin creature token.\n{T}: Remove one or more dream counters from Rasputin: Add that much {C}.\n{T}: Remove a dream counter from Rasputin: Create a 2/2 white Knight creature token with protection from red. diff --git a/forge-gui/res/cardsfolder/upcoming/the_reaver_cleaver.txt b/forge-gui/res/cardsfolder/upcoming/the_reaver_cleaver.txt new file mode 100644 index 00000000000..055e8b8fba4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_reaver_cleaver.txt @@ -0,0 +1,10 @@ +Name:The Reaver Cleaver +ManaCost:2 R +Types:Legendary Artifact Equipment +K:Equip:3 +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Trample | Description$ Equipped creature gets +1/+1 and has trample. +T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, create that many Treasure tokens. +SVar:TrigToken:DB$ Token | TokenAmount$ X | TokenScript$ c_a_treasure_sac | TokenOwner$ You +SVar:X:TriggerCount$DamageAmount +DeckHas:Ability$Token & Type$Treasure|Artifact +Oracle:Equipped creature gets +1/+1 and has trample and "Whenever this creature deals combat damage to a player or planeswalker, create that many Treasure tokens."\nEquip {3} diff --git a/forge-gui/res/cardsfolder/upcoming/two_headed_hellkite.txt b/forge-gui/res/cardsfolder/upcoming/two_headed_hellkite.txt new file mode 100644 index 00000000000..cd6990a6d30 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/two_headed_hellkite.txt @@ -0,0 +1,10 @@ +Name:Two-Headed Hellkite +ManaCost:1 W U B R G +Types:Creature Dragon +PT:5/5 +K:Flying +K:Menace +K:Haste +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, draw two cards. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 2 +Oracle:Flying,menace,haste\nWhenever Two-Headed Hellkite attacks, draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/xira_the_golden_sting.txt b/forge-gui/res/cardsfolder/upcoming/xira_the_golden_sting.txt new file mode 100644 index 00000000000..31f52f20619 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/xira_the_golden_sting.txt @@ -0,0 +1,12 @@ +Name:Xira, the Golden Sting +ManaCost:1 B R G +Types:Legendary Creature Insect Assassin +PT:3/3 +K:Flying +K:Haste +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigEggCounter | TriggerDescription$ Whenever CARDNAME attacks, put an egg counter on another target creature without an egg counter on it. When that creature dies, if it has an egg counter on it, draw a card and create a 1/1 black Insect creature token with flying. +SVar:TrigEggCounter:DB$ PutCounter | CounterType$ EGG | CounterNum$ 1 | ValidTgts$ Creature.Other+counters_EQ0_EGG | RememberTargets$ True | TgtPrompt$ Put an egg counter on another target creature without an egg counter on it. | SubAbility$ DelayedTrigger +SVar:DelayedTrigger:DB$ DelayedTrigger | Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.IsTriggerRemembered+counters_GE1_EGG | Execute$ TrigDraw | TriggerDescription$ When this creature dies, if it has an egg counter on it, draw a card and create a 1/1 black Insect creature token with flying. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenScript$ b_1_1_insect_flying +Oracle:Flying, haste\nWhenever Xira, the Golden Sting attacks, put an egg counter on another target creature without an egg counter on it. When that creature dies, if it has an egg counter on it, draw a card and create a 1/1 black Insect creature token with flying. diff --git a/forge-gui/res/cardsfolder/upcoming/zeriam_golden_wind.txt b/forge-gui/res/cardsfolder/upcoming/zeriam_golden_wind.txt new file mode 100644 index 00000000000..de02580cf46 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/zeriam_golden_wind.txt @@ -0,0 +1,8 @@ +Name:Zeriam, Golden Wind +ManaCost:3 W +Types:Legendary Creature Griffin +PT:3/4 +K:Flying +T:Mode$ DamageDone | ValidSource$ Griffin.YouCtrl | ValidTarget$ Player | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever a Griffin you control deals combat damage to a player, create a 2/2 white Griffin creature token with flying. +SVar:TrigToken:DB$ Token | TokenScript$ w_2_2_griffin_flying +Oracle:Flying\nWhenever a Griffin you control deals combat damage to a player, create a 2/2 white Griffin creature token with flying. diff --git a/forge-gui/res/tokenscripts/b_1_1_insect_flying.txt b/forge-gui/res/tokenscripts/b_1_1_insect_flying.txt new file mode 100644 index 00000000000..b5bc86c41d6 --- /dev/null +++ b/forge-gui/res/tokenscripts/b_1_1_insect_flying.txt @@ -0,0 +1,7 @@ +Name:Insect Token +ManaCost:no cost +Types:Creature Insect +Colors:black +PT:1/1 +K:Flying +Oracle:Flying diff --git a/forge-gui/res/tokenscripts/w_2_2_knight_pro_red.txt b/forge-gui/res/tokenscripts/w_2_2_knight_pro_red.txt new file mode 100644 index 00000000000..cd51986956b --- /dev/null +++ b/forge-gui/res/tokenscripts/w_2_2_knight_pro_red.txt @@ -0,0 +1,7 @@ +Name:Knight Token +ManaCost:no cost +Types:Creature Knight +Colors:white +PT:2/2 +K:Protection from red +Oracle:Protection from red From 795a7969839439528ade3c68596597d03debbfb2 Mon Sep 17 00:00:00 2001 From: t-w-o-s-a-t <103374130+t-w-o-s-a-t@users.noreply.github.com> Date: Sun, 21 Aug 2022 15:21:07 +0200 Subject: [PATCH 63/65] Update de-DE.properties (#1380) translated lblChooseFromSpellbook --- forge-gui/res/languages/de-DE.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 82984900c1d..1fb9b3368eb 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -1981,7 +1981,7 @@ lblWouldYouLikeInvestigate=Möchtest du Nachforschungen anstellen? #LifeSetEffect.java lblLifeTotal=Lebenspunkte #MakeCardEffect.java -lblChooseFromSpellbook=Choose a card from {0}''s spellbook +lblChooseFromSpellbook=Wähle eine Karte aus {0}s Zauberbuch #ManaEffect.java lblDoYouWantAddMana=Möchtest du Mana hinzufügen? lblSelectManaProduce=Wähle zu produzierendes Mana From e80ecf4e2420792bd616bff64e16168653cd59d4 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+Suthro@users.noreply.github.com> Date: Sun, 21 Aug 2022 14:12:57 -0500 Subject: [PATCH 64/65] DMU: Karn, Living Legacy + Powerstone token, engine support (#1376) * DMU: Karn, Living Legacy, Powerstone token, and engine support DMU: Add script for Karn, Living Legacy; Powerstone token; and engine support for mana restriction "can't be spent to cast nonartifact spells" * Update c_a_powerstone.txt * Add Powerstone to TypeLists.txt * Update TypeLists.txt --- .../forge/game/spellability/AbilityManaPart.java | 4 ++++ .../cardsfolder/upcoming/karn_living_legacy.txt | 14 ++++++++++++++ forge-gui/res/lists/TypeLists.txt | 3 ++- forge-gui/res/tokenscripts/c_a_powerstone.txt | 7 +++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/karn_living_legacy.txt create mode 100644 forge-gui/res/tokenscripts/c_a_powerstone.txt diff --git a/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java b/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java index abb22e116ea..3f3bada1a48 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilityManaPart.java @@ -361,6 +361,10 @@ public class AbilityManaPart implements java.io.Serializable { } } + if (restriction.equals("CantCastNonArtifactSpells")) { + return !sa.isSpell() || sa.getHostCard().isArtifact(); + } + // the payment is for a resolving SA, currently no other restrictions would allow that if (getSourceCard().getGame().getStack().getInstanceFromSpellAbility(sa.getRootAbility()) != null) { return false; diff --git a/forge-gui/res/cardsfolder/upcoming/karn_living_legacy.txt b/forge-gui/res/cardsfolder/upcoming/karn_living_legacy.txt new file mode 100644 index 00000000000..b1060e30773 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/karn_living_legacy.txt @@ -0,0 +1,14 @@ +Name:Karn, Living Legacy +ManaCost:4 +Types:Legendary Planeswalker Karn +Loyalty:4 +A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenTapped$ True | TokenScript$ c_a_powerstone | TokenOwner$ You | SpellDescription$ Create a tapped Powerstone token. (It's an artifact with "{T}: Add {C}. This mana can't be spent to cast a nonartifact spell.") +A:AB$ ChooseNumber | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | ChooseAnyNumber$ True | ListTitle$ Pay Any Mana | SubAbility$ DBDig | SpellDescription$ Pay any amount of mana. Look at that many cards from the top of your library, then put one of those cards into your hand and the rest on the bottom of your library in a random order. +SVar:DBDig:DB$ Dig | DigNum$ X | ChangeNum$ 1 | RestRandomOrder$ True | UnlessCost$ X | UnlessPayer$ You | UnlessSwitched$ True +A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | AIlogic$ Always | Stackable$ False | Name$ Emblem - Karn, Living Legacy | Image$ emblem_karn_living_legacy | Duration$ Permanent | Abilities$ KarnPing | SpellDescription$ You get an emblem with "Tap an untapped artifact you control: This emblem deals 1 damage to any target." +SVar:KarnPing:AB$ DealDamage | Cost$ tapXType<1/Artifact> | ActivationZone$ Command | ValidTgts$ Creature,Player,Planeswalker | NumDmg$ 1 +SVar:PlayMain1:TRUE +DeckHas:Ability$Token & Type|Artifact +DeckNeeds:Type$Artifact +SVar:X:Count$ChosenNumber +Oracle:[+1]: Create a tapped Powerstone token. (It's an artifact with "{T}: Add {C}. This mana can't be spent to cast a nonartifact spell.")\n[−1]: Pay any amount of mana. Look at that many cards from the top of your library, then put one of those cards into your hand and the rest on the bottom of your library in a random order.\n[−7]: You get an emblem with "Tap an untapped artifact you control: This emblem deals 1 damage to any target." diff --git a/forge-gui/res/lists/TypeLists.txt b/forge-gui/res/lists/TypeLists.txt index ce9d93f9234..aee753559ba 100644 --- a/forge-gui/res/lists/TypeLists.txt +++ b/forge-gui/res/lists/TypeLists.txt @@ -313,6 +313,7 @@ Food Fortification Gold Key:Keys +Powerstone Treasure Vehicle [WalkerTypes] @@ -394,4 +395,4 @@ Yanggu Yanling Zariel [DungeonTypes] -Undercity \ No newline at end of file +Undercity diff --git a/forge-gui/res/tokenscripts/c_a_powerstone.txt b/forge-gui/res/tokenscripts/c_a_powerstone.txt new file mode 100644 index 00000000000..12f067bf94e --- /dev/null +++ b/forge-gui/res/tokenscripts/c_a_powerstone.txt @@ -0,0 +1,7 @@ +Name:Powerstone token +ManaCost:no cost +Types:Artifact Powerstone +Colors:colorless +A:AB$ Mana | Cost$ T | Produced$ C | RestrictValid$ CantCastNonArtifactSpells | SpellDescription$ Add {C}. This mana can't be spent to cast a nonartifact spell. +Oracle:{T}: Add {C}. This mana can't be spent to cast a nonartifact spell. + From f9a1485b45684ee112ac69bdda4609d799e5b869 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Sun, 21 Aug 2022 21:25:26 +0200 Subject: [PATCH 65/65] Ramses, Assassin Lord and support (#1382) Co-authored-by: TRT <> --- .../java/forge/game/ability/AbilityUtils.java | 4 +- .../java/forge/game/combat/CombatUtil.java | 5 +- .../main/java/forge/game/player/Player.java | 47 +++++++++---------- .../forge/game/player/PlayerProperty.java | 8 ++++ .../upcoming/ramses_assassin_lord.txt | 9 ++++ 5 files changed, 43 insertions(+), 30 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/ramses_assassin_lord.txt diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index c1578443353..806ba8a6b40 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -3478,8 +3478,8 @@ public class AbilityUtils { } if (value.equals("OpponentsAttackedThisTurn")) { - final List opps = player.getAttackedPlayersMyTurn(); - return doXMath(opps == null ? 0 : opps.size(), m, source, ctb); + final Iterable opps = player.getAttackedPlayersMyTurn(); + return doXMath(opps == null ? 0 : Iterables.size(opps), m, source, ctb); } if (value.equals("OpponentsAttackedThisCombat")) { diff --git a/forge-game/src/main/java/forge/game/combat/CombatUtil.java b/forge-game/src/main/java/forge/game/combat/CombatUtil.java index 9dad2411453..a9daa7aedaa 100644 --- a/forge-game/src/main/java/forge/game/combat/CombatUtil.java +++ b/forge-game/src/main/java/forge/game/combat/CombatUtil.java @@ -407,10 +407,7 @@ public class CombatUtil { c.getDamageHistory().setCreatureAttackedThisCombat(defender); c.getDamageHistory().clearNotAttackedSinceLastUpkeepOf(); - c.getController().addCreaturesAttackedThisTurn(CardUtil.getLKICopy(c)); - if (defender instanceof Player) { - c.getController().addAttackedPlayersMyTurn(combat.getDefenderPlayerByAttacker(c)); - } + c.getController().addCreaturesAttackedThisTurn(CardUtil.getLKICopy(c), defender); } /** diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 78827701494..0dc1738b021 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -24,6 +24,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Deque; import java.util.EnumSet; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -202,9 +203,8 @@ public class Player extends GameEntity implements Comparable { private Table changedKeywords = TreeBasedTable.create(); private ManaPool manaPool = new ManaPool(this); - private List creatureAttackedThisTurn = new ArrayList<>(); - private List attackedPlayersThisTurn = new ArrayList<>(); - private List attackedPlayersLastTurn = new ArrayList<>(); + private Map> attackedThisTurn = new HashMap<>(); + private List attackedPlayersLastTurn = new ArrayList<>(); private List attackedPlayersThisCombat = new ArrayList<>(); private boolean activateLoyaltyAbilityThisTurn = false; @@ -1826,37 +1826,37 @@ public class Player extends GameEntity implements Comparable { } public final List getCreaturesAttackedThisTurn() { - return creatureAttackedThisTurn; + List result = Lists.newArrayList(Iterables.concat(attackedThisTurn.values())); + return result; } - public final void addCreaturesAttackedThisTurn(final Card c) { - creatureAttackedThisTurn.add(c); + public final List getCreaturesAttackedThisTurn(final GameEntity e) { + return attackedThisTurn.getOrDefault(e, Lists.newArrayList()); } - public final void clearCreaturesAttackedThisTurn() { - creatureAttackedThisTurn.clear(); - } - - public final void addAttackedPlayersMyTurn(final Player p) { - if (!attackedPlayersThisTurn.contains(p)) { - attackedPlayersThisCombat.add(p); - attackedPlayersThisTurn.add(p); + public final void addCreaturesAttackedThisTurn(final Card c, final GameEntity e) { + final List creatures = attackedThisTurn.getOrDefault(e, Lists.newArrayList()); + creatures.add(c); + attackedThisTurn.putIfAbsent(e, creatures); + if (e instanceof Player && !attackedPlayersThisCombat.contains(e)) { + attackedPlayersThisCombat.add((Player) e); } } - public final List getAttackedPlayersMyTurn() { - return attackedPlayersThisTurn; + + public final Iterable getAttackedPlayersMyTurn() { + return Iterables.filter(attackedThisTurn.keySet(), Player.class); } public final List getAttackedPlayersMyLastTurn() { return attackedPlayersLastTurn; } - public final void clearAttackedPlayersMyTurn() { - attackedPlayersThisTurn.clear(); + public final void clearAttackedMyTurn() { + attackedThisTurn.clear(); } - public final void setAttackedPlayersMyLastTurn(List players) { + public final void setAttackedPlayersMyLastTurn(Iterable players) { attackedPlayersLastTurn.clear(); - attackedPlayersLastTurn.addAll(players); + Iterables.addAll(attackedPlayersLastTurn, players); } public final List getAttackedPlayersMyCombat() { - return attackedPlayersThisTurn; + return attackedPlayersThisCombat; } public final void clearAttackedPlayersMyCombat() { attackedPlayersThisCombat.clear(); @@ -2390,7 +2390,6 @@ public class Player extends GameEntity implements Comparable { resetNumForetoldThisTurn(); resetNumTokenCreatedThisTurn(); setNumCardsInHandStartedThisTurnWith(getCardsIn(ZoneType.Hand).size()); - clearCreaturesAttackedThisTurn(); setActivateLoyaltyAbilityThisTurn(false); setTappedLandForManaThisTurn(false); setLandsPlayedLastTurn(getLandsPlayedThisTurn()); @@ -2417,8 +2416,8 @@ public class Player extends GameEntity implements Comparable { // set last turn nr if (game.getPhaseHandler().isPlayerTurn(this)) { - setAttackedPlayersMyLastTurn(attackedPlayersThisTurn); - clearAttackedPlayersMyTurn(); + setAttackedPlayersMyLastTurn(getAttackedPlayersMyTurn()); + clearAttackedMyTurn(); this.lastTurnNr = game.getPhaseHandler().getTurn(); } } diff --git a/forge-game/src/main/java/forge/game/player/PlayerProperty.java b/forge-game/src/main/java/forge/game/player/PlayerProperty.java index 9d14fe11f54..e997cd039df 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerProperty.java +++ b/forge-game/src/main/java/forge/game/player/PlayerProperty.java @@ -381,6 +381,14 @@ public class PlayerProperty { if (player.getCreaturesAttackedThisTurn().isEmpty()) { return false; } + } else if (property.startsWith("wasAttackedThisTurnBy")) { + String restriction = property.split(" ")[1]; + for (Card c : sourceController.getCreaturesAttackedThisTurn(player)) { + if (c.isValid(restriction, sourceController, source, spellAbility)) { + return true; + } + } + return false; } else if (property.equals("attackedYouTheirLastTurn")) { if (!player.getAttackedPlayersMyLastTurn().contains(sourceController)) { return false; diff --git a/forge-gui/res/cardsfolder/upcoming/ramses_assassin_lord.txt b/forge-gui/res/cardsfolder/upcoming/ramses_assassin_lord.txt new file mode 100644 index 00000000000..c897c13946c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ramses_assassin_lord.txt @@ -0,0 +1,9 @@ +Name:Ramses, Assassin Lord +ManaCost:2 B U +Types:Legendary Creature Human Assassin +PT:4/4 +K:Deathtouch +S:Mode$ Continuous | Affected$ Assassin.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Assassin's you control get +1/+1. +T:Mode$ LosesGame | ValidPlayer$ Player.Other+wasAttackedThisTurnBy Assassin.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigWinGame | TriggerDescription$ Whenever a player loses the game, if they were attacked this turn by an Assassin you controlled, you win the game. +SVar:TrigWinGame:DB$ WinsGame | Defined$ You +Oracle:Other Assassin's you control get +1/+1.\nWhenever a player loses the game, if they were attacked this turn by an Assassin you controlled, you win the game.