diff --git a/.github/workflows/snapshots-pc.yml b/.github/workflows/snapshots-pc.yml index ce72b8df769..0dc50ecd525 100644 --- a/.github/workflows/snapshots-pc.yml +++ b/.github/workflows/snapshots-pc.yml @@ -58,6 +58,8 @@ jobs: mkdir izpack # move bz2 and jar from work dir to izpack dir mv /home/runner/work/forge/forge/forge-installer/*/*.{bz2,jar} izpack/ + # move desktop build.txt to izpack + mv /home/runner/work/forge/forge/forge-gui-desktop/target/classes/build.txt izpack/ cd izpack d=$(date +%m.%d) # rename files and append date diff --git a/forge-gui/res/cardsfolder/c/clammy_prowler.txt b/forge-gui/res/cardsfolder/c/clammy_prowler.txt index b2cdfc3e1a4..9a26e758bd2 100644 --- a/forge-gui/res/cardsfolder/c/clammy_prowler.txt +++ b/forge-gui/res/cardsfolder/c/clammy_prowler.txt @@ -3,6 +3,6 @@ ManaCost:3 U Types:Enchantment Creature Horror PT:2/5 T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, another target attacking creature can't be blocked this turn. -SVar:TrigPump:DB$ Effect | ValidTgts$ Creature.Other+attacking | TgtPrompt$ Select another target attacking non-Human creature | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable +SVar:TrigPump:DB$ Effect | ValidTgts$ Creature.Other+attacking | TgtPrompt$ Select another target attacking creature | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ This creature can't be blocked this turn. Oracle:Whenever Clammy Prowler attacks, another target attacking creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/arahbo_the_first_fang.txt b/forge-gui/res/cardsfolder/upcoming/arahbo_the_first_fang.txt new file mode 100644 index 00000000000..43169a5907e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/arahbo_the_first_fang.txt @@ -0,0 +1,10 @@ +Name:Arahbo, the First Fang +ManaCost:2 W +Types:Legendary Creature Cat Avatar +PT:2/2 +S:Mode$ Continuous | Affected$ Cat.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Cats you control get +1/+1. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Cat.nonToken+Other | Execute$ TrigToken | TriggerDescription$ Whenever NICKNAME or another nontoken Cat you control enters, create a 1/1 white Cat creature token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_cat +DeckHas:Ability$Token +DeckHints:Type$Cat +Oracle:Other Cats you control get +1/+1.\nWhenever Arahbo or another nontoken Cat you control enters, create a 1/1 white Cat creature token. diff --git a/forge-gui/res/cardsfolder/upcoming/arcane_epiphany.txt b/forge-gui/res/cardsfolder/upcoming/arcane_epiphany.txt new file mode 100644 index 00000000000..11f4f9e5fb8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/arcane_epiphany.txt @@ -0,0 +1,7 @@ +Name:Arcane Epiphany +ManaCost:3 U U +Types:Instant +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | IsPresent$ Wizard.YouCtrl | Description$ This spell costs {1} less to cast if you control a Wizard. +A:SP$ Draw | NumCards$ 3 | SpellDescription$ Draw three cards. +DeckNeeds:Type$Wizard +Oracle:This spell costs {1} less to cast if you control a Wizard.\nDraw three cards. diff --git a/forge-gui/res/cardsfolder/upcoming/archmage_of_runes.txt b/forge-gui/res/cardsfolder/upcoming/archmage_of_runes.txt new file mode 100644 index 00000000000..9973d69d7cd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/archmage_of_runes.txt @@ -0,0 +1,9 @@ +Name:Archmage of Runes +ManaCost:3 U U +Types:Creature Giant Wizard +PT:3/6 +S:Mode$ ReduceCost | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Instant and sorcery spells you cast cost {1} less to cast. +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast an instant or sorcery spell, draw a card. +SVar:TrigDraw:DB$ Draw | NumCards$ 1 +DeckHints:Type$Instant|Sorcery +Oracle:Instant and sorcery spells you cast cost {1} less to cast.\nWhenever you cast an instant or sorcery spell, draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/bloodthirsty_conqueror.txt b/forge-gui/res/cardsfolder/upcoming/bloodthirsty_conqueror.txt new file mode 100644 index 00000000000..e727c38f98a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bloodthirsty_conqueror.txt @@ -0,0 +1,11 @@ +Name:Bloodthirsty Conqueror +ManaCost:3 B B +Types:Creature Vampire Knight +PT:5/5 +K:Flying +K:Deathtouch +T:Mode$ LifeLost | ValidPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigLifeGain | TriggerDescription$ Whenever an opponent loses life, you gain that much life. (Damage causes loss of life.) +SVar:TrigLifeGain:DB$ GainLife | Defined$ You | LifeAmount$ X +SVar:X:TriggerCount$LifeAmount +DeckHas:Ability$LifeGain +Oracle:Flying, deathtouch\nWhenever an opponent loses life, you gain that much life. (Damage causes loss of life.) diff --git a/forge-gui/res/cardsfolder/upcoming/chandra_flameshaper.txt b/forge-gui/res/cardsfolder/upcoming/chandra_flameshaper.txt new file mode 100644 index 00000000000..65abcdf2d1a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/chandra_flameshaper.txt @@ -0,0 +1,13 @@ +Name:Chandra, Flameshaper +ManaCost:5 R R +Types:Legendary Planeswalker Chandra +Loyalty:6 +A:AB$ Mana | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | Produced$ R | Amount$ 3 | AILogic$ Always | SubAbility$ DBExile | SpellDescription$ Add {R}{R}{R}. +SVar:DBExile:DB$ Dig | Defined$ You | DigNum$ 3 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBChoose | SpellDescription$ Exile the top three cards of your library. Choose one. You may play that card this turn. +SVar:DBChoose:DB$ ChooseCard | Choices$ Card.IsRemembered | ChoiceZone$ Exile | Mandatory$ True | ForgetOtherRemembered$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ ChosenCard | StaticAbilities$ Play | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.ChosenCard | AffectedZone$ Exile | Description$ You may play that card this turn. +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +A:AB$ CopyPermanent | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | AddKeywords$ Haste | AtEOTTrig$ Sacrifice | SpellDescription$ Create a token that's a copy of target creature you control, except it has haste and "At the beginning of the end step, sacrifice this token." +A:AB$ DealDamage | Cost$ SubCounter<4/LOYALTY> | Planeswalker$ True | Ultimate$ True | NumDmg$ 8 | TargetMin$ 0 | TargetMax$ 8 | DividedAsYouChoose$ 8 | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select any number of Planeswalkers and creatures to distribute damage to | SpellDescription$ NICKNAME deals 8 damage divided as you choose among any number of target creatures and/or planeswalkers. +Oracle:[+2]: Add {R}{R}{R}. Exile the top three cards of your library. Choose one. You may play that card this turn.\n[+1]: Create a token that's a copy of target creature you control, except it has haste and "At the beginning of the end step, sacrifice this token."\n[−4]: Chandra deals 8 damage divided as you choose among any number of target creatures and/or planeswalkers. diff --git a/forge-gui/res/cardsfolder/upcoming/crude_abattoir_unsavory_kitchen.txt b/forge-gui/res/cardsfolder/upcoming/crude_abattoir_unsavory_kitchen.txt new file mode 100644 index 00000000000..bf8df1a7998 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/crude_abattoir_unsavory_kitchen.txt @@ -0,0 +1,18 @@ +Name:Crude Abattoir +ManaCost:R +Types:Enchantment Room +T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ DBDealDamage | TriggerDescription$ When you unlock this door, this Room deals 2 damage to target creature. +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 +AlternateMode:Split +Oracle:When you unlock this door, this Room deals 2 damage to target creature. + +ALTERNATE + +Name:Unsavory Kitchen +ManaCost:2 R +Types:Enchantment Room +T:Mode$ DamageDone | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Creature | CombatDamage$ False | TriggerZones$ Battlefield | Execute$ TrigChooseCard | TriggerDescription$ Whenever a source you control deals noncombat damage to a creature, choose a creature card in your hand. It perpetually gets +2/+0 and gains haste. +SVar:TrigChooseCard:DB$ ChooseCard | Choices$ Creature.YouOwn | ChoiceZone$ Hand | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | PumpZone$ Hand | Defined$ ChosenCard | NumAtt$ 2 | KW$ Haste | Duration$ Perpetual | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +Oracle:Whenever a source you control deals noncombat damage to a creature, choose a creature card in your hand. It perpetually gets +2/+0 and gains haste. diff --git a/forge-gui/res/cardsfolder/upcoming/crypt_feaster.txt b/forge-gui/res/cardsfolder/upcoming/crypt_feaster.txt new file mode 100644 index 00000000000..d97f58daf14 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/crypt_feaster.txt @@ -0,0 +1,9 @@ +Name:Crypt Feaster +ManaCost:3 B +Types:Creature Zombie +PT:3/4 +K:Menace +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | Threshold$ True | TriggerDescription$ Threshold — Whenever this creature attacks, if there are seven or more cards in your graveyard, this creature gets +2/+0 until end of turn. +SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ 2 +DeckHints:Ability$Graveyard +Oracle:Menace (This creature can't be blocked except by two or more creatures.)\nThreshold — Whenever this creature attacks, if there are seven or more cards in your graveyard, this creature gets +2/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/crystal_barricade.txt b/forge-gui/res/cardsfolder/upcoming/crystal_barricade.txt new file mode 100644 index 00000000000..e727dc5b309 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/crystal_barricade.txt @@ -0,0 +1,8 @@ +Name:Crystal Barricade +ManaCost:1 W +Types:Artifact Creature Wall +PT:0/4 +K:Defender +S:Mode$ Continuous | Affected$ You | AddKeyword$ Hexproof | Description$ You have hexproof. +R:Event$ DamageDone | ActiveZones$ Battlefield | Prevent$ True | ValidTarget$ Creature.YouCtrl+Other | IsCombat$ False | Description$ Prevent all noncombat damage that would be dealt to other creatures you control. +Oracle:Defender (This creature can't attack.)\nYou have hexproof. (You can't be the target of spells or abilities your opponents control.)\nPrevent all noncombat damage that would be dealt to other creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/firespitter_whelp.txt b/forge-gui/res/cardsfolder/upcoming/firespitter_whelp.txt new file mode 100644 index 00000000000..d27858bcee0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/firespitter_whelp.txt @@ -0,0 +1,9 @@ +Name:Firespitter Whelp +ManaCost:2 R +Types:Creature Dragon +PT:2/2 +K:Flying +T:Mode$ SpellCast | ValidCard$ Card.nonCreature,Dragon | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a noncreature or Dragon spell, this creature deals 1 damage to each opponent. +SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 1 +DeckHints:Type$Dragon +Oracle:Flying\nWhenever you cast a noncreature or Dragon spell, this creature deals 1 damage to each opponent. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/frontline_heroism.txt b/forge-gui/res/cardsfolder/upcoming/frontline_heroism.txt new file mode 100644 index 00000000000..f455c0f9274 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/frontline_heroism.txt @@ -0,0 +1,10 @@ +Name:Frontline Heroism +ManaCost:2 R +Types:Enchantment +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken1 | TriggerDescription$ When CARDNAME enters, create a 1/1 red Soldier creature token with haste. +SVar:TrigToken1:DB$ Token | TokenAmount$ 1 | TokenScript$ r_1_1_soldier_haste | TokenOwner$ You +T:Mode$ SpellCast | ValidCard$ Card | Execute$ TrigToken2 | ValidActivatingPlayer$ You | IsSingleTarget$ True | TriggerZones$ Battlefield | TargetsValid$ Creature.YouCtrl+inZoneBattlefield | TriggerDescription$ Whenever you cast a spell that targets only a single creature you control, create a 1/1 red Soldier creature token with haste, then copy that spell. The copy targets that token. +SVar:TrigToken2:DB$ Token | TokenAmount$ 1 | TokenScript$ r_1_1_soldier_haste | TokenOwner$ You | RememberTokens$ True | SubAbility$ DBCopy +SVar:DBCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | Controller$ You | CopyForEachCanTarget$ Permanent.IsRemembered | ChooseOnlyOne$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:When Frontline Heroism enters, create a 1/1 red Soldier creature token with haste.\nWhenever you cast a spell that targets only a single creature you control, create a 1/1 red Soldier creature token with haste, then copy that spell. The copy targets that token. diff --git a/forge-gui/res/cardsfolder/upcoming/general_kreat_the_boltbringer.txt b/forge-gui/res/cardsfolder/upcoming/general_kreat_the_boltbringer.txt new file mode 100644 index 00000000000..1783d699a18 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/general_kreat_the_boltbringer.txt @@ -0,0 +1,10 @@ +Name:General Kreat, the Boltbringer +ManaCost:2 R +Types:Legendary Creature Goblin Soldier +PT:2/2 +T:Mode$ AttackersDeclared | ValidAttackers$ Goblin.YouCtrl | Execute$ TrigToken | TriggerZones$ Battlefield | ActivationLimit$ 1 | TriggerDescription$ Whenever one or more Goblins you control attack, create a 1/1 red Goblin creature token that's tapped and attacking. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenOwner$ You | TokenTapped$ True | TokenAttacking$ True +T:Mode$ ChangesZone | ValidCard$ Creature.Other+YouCtrl | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever another creature you control enters, CARDNAME deals 1 damage to each opponent. +SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 1 +DeckHints:Type$Goblin +Oracle:Whenever one or more Goblins you control attack, create a 1/1 red Goblin creature token that's tapped and attacking.\nWhenever another creature you control enters, General Kreat, the Boltbringer deals 1 damage to each opponent. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/generous_pup.txt b/forge-gui/res/cardsfolder/upcoming/generous_pup.txt new file mode 100644 index 00000000000..70f88880d38 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/generous_pup.txt @@ -0,0 +1,9 @@ +Name:Generous Pup +ManaCost:1 W +Types:Creature Dog +PT:2/2 +K:Vigilance +T:Mode$ CounterAddedOnce | ValidCard$ Card.Self | TriggerZones$ Battlefield | CounterType$ P1P1 | Execute$ TrigPutCounterAll | ActivationLimit$ 1 | TriggerDescription$ Whenever one or more +1/+1 counters are put on CARDNAME, put a +1/+1 counter on each other creature you control. This ability triggers only once each turn. +SVar:TrigPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl+StrictlyOther | CounterType$ P1P1 | CounterNum$ 1 +DeckHas:Ability$Counters +Oracle:Vigilance\nWhenever one or more +1/+1 counters are put on Generous Pup, put a +1/+1 counter on each other creature you control. This ability triggers only once each turn. diff --git a/forge-gui/res/cardsfolder/upcoming/hearts_on_fire.txt b/forge-gui/res/cardsfolder/upcoming/hearts_on_fire.txt new file mode 100644 index 00000000000..7db7b2c963b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hearts_on_fire.txt @@ -0,0 +1,5 @@ +Name:Hearts on Fire +ManaCost:1 R +Types:Instant +A:SP$ Pump | TargetMin$ 1 | TargetMax$ 2 | NumAtt$ +2 | NumDef$ +1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ One or two target creatures each get +2/+1 until end of turn. +Oracle:One or two target creatures each get +2/+1 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/herald_of_eternal_dawn.txt b/forge-gui/res/cardsfolder/upcoming/herald_of_eternal_dawn.txt new file mode 100644 index 00000000000..bc162d6b0d2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/herald_of_eternal_dawn.txt @@ -0,0 +1,9 @@ +Name:Herald of Eternal Dawn +ManaCost:4 W W W +Types:Creature Angel +PT:6/6 +K:Flash +K:Flying +R:Event$ GameLoss | ActiveZones$ Battlefield | ValidPlayer$ You | Layer$ CantHappen | Description$ You can't lose the game and your opponents can't win the game. +R:Event$ GameWin | ActiveZones$ Battlefield | ValidPlayer$ Opponent | Layer$ CantHappen | Secondary$ True | Description$ You can't lose the game and your opponents can't win the game. +Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFlying\nYou can't lose the game and your opponents can't win the game. diff --git a/forge-gui/res/cardsfolder/upcoming/hinterland_sanctifier.txt b/forge-gui/res/cardsfolder/upcoming/hinterland_sanctifier.txt new file mode 100644 index 00000000000..d87d656ae61 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hinterland_sanctifier.txt @@ -0,0 +1,9 @@ +Name:Hinterland Sanctifier +ManaCost:W +Types:Creature Rabbit Cleric +PT:1/2 +T:Mode$ ChangesZone | ValidCard$ Creature.Other+YouCtrl | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever another creature you control enters, you gain 1 life. +SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 1 +SVar:BuffedBy:Creature +DeckHas:Ability$LifeGain +Oracle:Whenever another creature you control enters, you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/kaito_cunning_infiltrator.txt b/forge-gui/res/cardsfolder/upcoming/kaito_cunning_infiltrator.txt new file mode 100644 index 00000000000..f43676ba74d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kaito_cunning_infiltrator.txt @@ -0,0 +1,16 @@ +Name:Kaito, Cunning Infiltrator +ManaCost:1 U U +Types:Legendary Planeswalker Kaito +Loyalty:3 +T:Mode$ DamageDone | CombatDamage$ True | ValidSource$ Creature.YouCtrl | TriggerZones$ Battlefield | ValidTarget$ Player | Execute$ TrigLoyalty | TriggerDescription$ Whenever a creature you control deals combat damage to a player, put a loyalty counter on NICKNAME. +SVar:TrigLoyalty:DB$ PutCounter | Defined$ Self | CounterType$ LOYALTY | CounterNum$ 1 +A:AB$ Effect | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | StaticAbilities$ Unblockable | SubAbility$ DBDraw | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StackDescription$ SpellDescription | SpellDescription$ Up to one target creature you control can't be blocked this turn. Draw a card, then discard a card. +SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ This creature can't be blocked this turn. +SVar:DBDraw:DB$ Draw | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Mode$ TgtChoose +A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | TokenScript$ u_2_1_ninja | SpellDescription$ Create a 2/1 blue Ninja creature token. +A:AB$ Effect | Cost$ SubCounter<9/LOYALTY> | Planeswalker$ True | Ultimate$ True | Stackable$ False | Name$ Emblem — Kaito, Cunning Infiltrator | Image$ emblem_kaito_cunning_infiltrator | Triggers$ CastTrig | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever a player casts a spell, you create a 2/1 blue Ninja creature token." +SVar:CastTrig:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ Whenever a player casts a spell, you create a 2/1 blue Ninja creature token. +SVar:TrigToken:DB$ Token | TokenScript$ u_2_1_ninja +DeckHas:Ability$Token & Type$Ninja +Oracle:Whenever a creature you control deals combat damage to a player, put a loyalty counter on Kaito.\n[+1]: Up to one target creature you control can't be blocked this turn. Draw a card, then discard a card.\n[−2]: Create a 2/1 blue Ninja creature token.\n[−9]: You get an emblem with "Whenever a player casts a spell, you create a 2/1 blue Ninja creature token." diff --git a/forge-gui/res/cardsfolder/upcoming/mossborn_hydra.txt b/forge-gui/res/cardsfolder/upcoming/mossborn_hydra.txt new file mode 100644 index 00000000000..eed3f3c4590 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mossborn_hydra.txt @@ -0,0 +1,10 @@ +Name:Mossborn Hydra +ManaCost:2 G +Types:Creature Elemental Hydra +PT:0/0 +K:Trample +K:etbCounter:P1P1:1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDouble | TriggerDescription$ Landfall — Whenever a land you control enters, double the number of +1/+1 counters on this creature. +SVar:TrigDouble:DB$ MultiplyCounter | Defined$ Self | CounterType$ P1P1 +DeckHas:Ability$Counters +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\nThis creature enters with a +1/+1 counter on it.\nLandfall — Whenever a land you control enters, double the number of +1/+1 counters on this creature. diff --git a/forge-gui/res/cardsfolder/upcoming/niv_mizzet_visionary.txt b/forge-gui/res/cardsfolder/upcoming/niv_mizzet_visionary.txt new file mode 100644 index 00000000000..7b9c4d0fdbe --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/niv_mizzet_visionary.txt @@ -0,0 +1,10 @@ +Name:Niv-Mizzet, Visionary +ManaCost:4 U R +Types:Legendary Creature Dragon Wizard +PT:5/5 +K:Flying +S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size. +T:Mode$ DamageDone | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Opponent | CombatDamage$ False | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a source you control deals noncombat damage to an opponent, you draw that many cards. +SVar:TrigDraw:DB$ Draw | NumCards$ X +SVar:X:TriggerCount$DamageAmount +Oracle:Flying\nYou have no maximum hand size.\nWhenever a source you control deals noncombat damage to an opponent, you draw that many cards. diff --git a/forge-gui/res/cardsfolder/upcoming/refute.txt b/forge-gui/res/cardsfolder/upcoming/refute.txt new file mode 100644 index 00000000000..9621bbd0b3b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/refute.txt @@ -0,0 +1,7 @@ +Name:Refute +ManaCost:1 U U +Types:Instant +A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SubAbility$ DBDraw | SpellDescription$ Counter target spell. Draw a card, then discard a card. +SVar:DBDraw:DB$ Draw | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +Oracle:Counter target spell. Draw a card, then discard a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/scythecat_cub.txt b/forge-gui/res/cardsfolder/upcoming/scythecat_cub.txt new file mode 100644 index 00000000000..89f8f195b48 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/scythecat_cub.txt @@ -0,0 +1,12 @@ +Name:Scythecat Cub +ManaCost:1 G +Types:Creature Cat +PT:2/2 +K:Trample +T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Landfall — Whenever a land you control enters, put a +1/+1 counter on target creature you control. If this is the second time this ability has resolved this turn, double the number of +1/+1 counters on that creature instead. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ P1P1 | CounterNum$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ NE2 | SubAbility$ DBMultiplyCounter +SVar:DBMultiplyCounter:DB$ MultiplyCounter | Defined$ Targeted | CounterType$ P1P1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ2 +SVar:X:Count$ResolvedThisTurn +DeckHints:Ability$Counters +Oracle:Trample\nLandfall — Whenever a land you control enters, put a +1/+1 counter on target creature you control. If this is the second time this ability has resolved this turn, double the number of +1/+1 counters on that creature instead. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/searslicer_goblin.txt b/forge-gui/res/cardsfolder/upcoming/searslicer_goblin.txt new file mode 100644 index 00000000000..22d8195f758 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/searslicer_goblin.txt @@ -0,0 +1,8 @@ +Name:Searslicer Goblin +ManaCost:1 R +Types:Creature Goblin Warrior +PT:2/1 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ RaidTest | Execute$ TrigToken| TriggerDescription$ Raid — At the beginning of your end step, if you attacked this turn, create a 1/1 red Goblin creature token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenOwner$ You +SVar:RaidTest:Count$AttackersDeclared +Oracle:Raid — At the beginning of your end step, if you attacked this turn, create a 1/1 red Goblin creature token. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/shroofus_sproutsire.txt b/forge-gui/res/cardsfolder/upcoming/shroofus_sproutsire.txt new file mode 100644 index 00000000000..2c857b0f27d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/shroofus_sproutsire.txt @@ -0,0 +1,12 @@ +Name:Shroofus Sproutsire +ManaCost:2 G +Types:Legendary Creature Saproling +PT:1/1 +K:Trample +T:Mode$ DamageDone | ValidSource$ Saproling.YouCtrl | ValidTarget$ Player | TriggerZones$ Battlefield | CombatDamage$ True | Execute$ TrigToken | TriggerDescription$ Whenever a Saproling you control deals combat damage to a player, create that many 1/1 green Saproling creature tokens. +SVar:TrigToken:DB$ Token | TokenAmount$ X | TokenScript$ g_1_1_saproling | TokenOwner$ You +SVar:PlayMain1:TRUE +SVar:X:TriggerCount$DamageAmount +DeckHints:Type$Saproling +DeckHas:Ability$Token +Oracle:Trample\nWhenever a Saproling you control deals combat damage to a player, create that many 1/1 green Saproling creature tokens. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/taeko_the_patient_avalanche.txt b/forge-gui/res/cardsfolder/upcoming/taeko_the_patient_avalanche.txt new file mode 100644 index 00000000000..92ac5f35065 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/taeko_the_patient_avalanche.txt @@ -0,0 +1,15 @@ +Name:Taeko, the Patient Avalanche +ManaCost:3 U +Types:Legendary Creature Turtle Ninja +PT:4/5 +R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplacementResult$ Updated | ReplaceWith$ ETBTapped | Description$ CARDNAME enters tapped. +SVar:ETBTapped:DB$ Tap | Defined$ Self | ETB$ True +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Ante,Command,Exile,Hand,Library | ValidCard$ Creature.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigScry | TriggerDescription$ Whenever another creature you control leaves the battlefield, if it didn't die, scry 1 and put a +1/+1 counter on NICKNAME. +SVar:TrigScry:DB$ Scry | ScryNum$ 1 | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ Whenever NICKNAME attacks, you may pay {U/B}. When you do, target attacking creature can't be blocked this turn. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ UB | Execute$ TrigUnblockable | SpellDescription$ When you do, target attacking creature can't be blocked this turn. +SVar:TrigUnblockable:DB$ Effect | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable +SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ This creature can't be blocked this turn. +DeckHas:Ability$Counters +Oracle:Taeko, the Patient Avalanche enters tapped.\nWhenever another creature you control leaves the battlefield, if it didn't die, scry 1 and put a +1/+1 counter on Taeko.\nWhenever Taeko attacks, you may pay {U/B}. When you do, target attacking creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/tinybones_bauble_burglar.txt b/forge-gui/res/cardsfolder/upcoming/tinybones_bauble_burglar.txt new file mode 100644 index 00000000000..b1b99a62fd6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tinybones_bauble_burglar.txt @@ -0,0 +1,9 @@ +Name:Tinybones, Bauble Burglar +ManaCost:1 B +Types:Legendary Creature Skeleton Rogue +PT:1/3 +T:Mode$ Discarded | ValidCard$ Card.OppOwn | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ Whenever an opponent discards a card, exile it from their graveyard with a stash counter on it. +SVar:TrigExile:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile | WithCountersType$ STASH +S:Mode$ Continuous | Condition$ PlayerTurn | MayPlay$ True | Affected$ Card.YouDontOwn+counters_GE1_STASH | AffectedZone$ Exile | MayPlayIgnoreType$ True | Description$ During your turn, you may play cards you don't own with stash counters on them from exile, and mana of any type can be spent to cast those spells. +A:AB$ Discard | Cost$ 3 B T | Defined$ Opponent | Mode$ TgtChoose | SorcerySpeed$ True | SpellDescription$ Each opponent discards a card. Activate only as a sorcery. +Oracle:Whenever an opponent discards a card, exile it from their graveyard with a stash counter on it.\nDuring your turn, you may play cards you don't own with stash counters on them from exile, and mana of any type can be spent to cast those spells.\n{3}{B}, {T}: Each opponent discards a card. Activate only as a sorcery. diff --git a/forge-gui/res/cardsfolder/upcoming/twinflame_tyrant.txt b/forge-gui/res/cardsfolder/upcoming/twinflame_tyrant.txt new file mode 100644 index 00000000000..2c5147cf9e9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/twinflame_tyrant.txt @@ -0,0 +1,11 @@ +Name:Twinflame Tyrant +ManaCost:3 R R +Types:Creature Dragon +PT:3/5 +K:Flying +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Opponent,Permanent.OppCtrl | ReplaceWith$ DmgTwice | Description$ If a source you control would deal damage to an opponent or a permanent an opponent controls, it deals double that damage instead. +SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X +SVar:X:ReplaceCount$DamageAmount/Twice +SVar:PlayMain1:TRUE +AI:RemoveDeck:Random +Oracle:Flying\nIf a source you control would deal damage to an opponent or a permanent an opponent controls, it deals double that damage instead. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/verdant_dread.txt b/forge-gui/res/cardsfolder/upcoming/verdant_dread.txt new file mode 100644 index 00000000000..e4325c6f04c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/verdant_dread.txt @@ -0,0 +1,7 @@ +Name:Verdant Dread +ManaCost:1 G +Types:Enchantment +T:Mode$ ChangesZone | ValidCard$ Card.Self,Card.namedVerdant Dread | Origin$ Any | Destination$ Battlefield | Execute$ TrigManifestDread | TriggerDescription$ Whenever CARDNAME or another card named Verdant Dread enters, manifest dread. +SVar:TrigManifestDread:DB$ ManifestDread +A:AB$ MakeCard | Cost$ 3 G G | Conjure$ True | Name$ Verdant Dread | Zone$ Battlefield | SorcerySpeed$ True | SpellDescription$ Conjure a card named Verdant Dread onto the battlefield. Activate only as a sorcery. +Oracle:Whenever Verdant Dread or another card named Verdant Dread enters, manifest dread.\n{3}{G}{G}: Conjure a card named Verdant Dread onto the battlefield. Activate only as a sorcery. diff --git a/forge-gui/res/cardsfolder/upcoming/zul_ashur_lich_lord.txt b/forge-gui/res/cardsfolder/upcoming/zul_ashur_lich_lord.txt new file mode 100644 index 00000000000..fc6db3d3631 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/zul_ashur_lich_lord.txt @@ -0,0 +1,8 @@ +Name:Zul Ashur, Lich Lord +ManaCost:1 B +Types:Legendary Creature Zombie Warlock +PT:2/2 +K:Ward:PayLife<2> +A:AB$ Effect | Cost$ T | TgtZone$ Graveyard | ValidTgts$ Creature.Zombie+YouOwn | PumpZone$ Graveyard | TgtPrompt$ Select target Zombie creature card in your graveyard | RememberObjects$ Targeted | StaticAbilities$ Play | ExileOnMoved$ Graveyard | SpellDescription$ You may cast target Zombie creature card from your graveyard this turn. +SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may play remembered card. +Oracle:Ward—Pay 2 life. (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays 2 life.)\n{T}: You may cast target Zombie creature card from your graveyard this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/w/wind_sail.txt b/forge-gui/res/cardsfolder/w/wind_sail.txt index 5ffb5886878..28c8d0cf7ce 100644 --- a/forge-gui/res/cardsfolder/w/wind_sail.txt +++ b/forge-gui/res/cardsfolder/w/wind_sail.txt @@ -1,5 +1,5 @@ Name:Wind Sail ManaCost:1 U Types:Sorcery -A:SP$ Pump | TargetMin$ 1 | TargetMax$ 2 | KW$ Flying | ValidTgts$ Creature | TgtPrompt$ Select target Creature | SpellDescription$ One or two target creatures gain flying until end of turn. +A:SP$ Pump | TargetMin$ 1 | TargetMax$ 2 | KW$ Flying | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ One or two target creatures gain flying until end of turn. Oracle:One or two target creatures gain flying until end of turn. diff --git a/forge-gui/res/editions/Eternal Weekend 2024.txt b/forge-gui/res/editions/Eternal Weekend 2024.txt deleted file mode 100644 index 13b8f4fc185..00000000000 --- a/forge-gui/res/editions/Eternal Weekend 2024.txt +++ /dev/null @@ -1,10 +0,0 @@ -[metadata] -Code=PE24 -Date=2024-10-12 -Name=Eternal Weekend 2024 -Type=Promo -ScryfallCode=PE24 - -[cards] -1 M Tinker @Jason Rainville -2 R Crop Rotation @Samuele Bandini diff --git a/forge-gui/res/editions/Eternal Weekend.txt b/forge-gui/res/editions/Eternal Weekend.txt index 27584ef8c9c..e84cafb517b 100644 --- a/forge-gui/res/editions/Eternal Weekend.txt +++ b/forge-gui/res/editions/Eternal Weekend.txt @@ -6,7 +6,9 @@ Type=Promo ScryfallCode=PEWK [cards] -1 R Gush @Sam White -2 R Ponder @Julie Dillon -2023a R Dragon's Rage Channeler @Patrik Hell -2023b M Mental Misstep @Kai Carpenter +2022a R Gush @Sam White +2022b R Ponder @Julie Dillon +2023a M Mental Misstep @Kai Carpenter +2023b R Dragon's Rage Channeler @Patrik Hell +2024a M Tinker @Jason Rainville +2024b R Crop Rotation @Samuele Bandini diff --git a/forge-gui/res/editions/Foundations Commander.txt b/forge-gui/res/editions/Foundations Commander.txt new file mode 100644 index 00000000000..b4a22cea6ed --- /dev/null +++ b/forge-gui/res/editions/Foundations Commander.txt @@ -0,0 +1,8 @@ +[metadata] +Code=FDC +Date=2024-11-15 +Name=Foundations Commander +Type=Commander +ScryfallCode=FDC + +[cards] diff --git a/forge-gui/res/tokenscripts/u_2_1_ninja.txt b/forge-gui/res/tokenscripts/u_2_1_ninja.txt new file mode 100644 index 00000000000..0760840245f --- /dev/null +++ b/forge-gui/res/tokenscripts/u_2_1_ninja.txt @@ -0,0 +1,6 @@ +Name:Ninja Token +ManaCost:no cost +Colors:blue +Types:Creature Ninja +PT:2/1 +Oracle: