From dc2683fde9ed2a9b2a5d3d1d017c589e4056b34c Mon Sep 17 00:00:00 2001 From: Northmoc Date: Sun, 6 Feb 2022 16:11:53 -0500 Subject: [PATCH 1/5] ascent_of_the_worthy.txt finish SpellDesc for III --- forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt b/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt index e5cbd800ef8..4629003283d 100644 --- a/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt +++ b/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt @@ -6,6 +6,6 @@ SVar:DBChoose:DB$ ChooseCard | Choices$ Creature.YouCtrl | Mandatory$ True | Sub SVar:DBEffect:DB$ Effect | ReplacementEffects$ DamageEvent | ExileOnMoved$ True | RememberObjects$ ChosenCard | Duration$ UntilYourNextTurn SVar:DamageEvent:Event$ DamageDone | ActiveZones$ Command | ValidTarget$ Creature.YouCtrl | ReplaceWith$ GideonSac | DamageTarget$ Remembered | Description$ All damage that would be dealt this turn to creatures you control is dealt to the chosen creature instead (if it's still on the battlefield). SVar:GideonSac:DB$ ReplaceEffect | VarName$ Affected | VarValue$ Remembered | VarType$ Card -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | WithCountersType$ Flying | AnimateSubAbility$ Animate | SpellDescription$ Return target creature card from your graveyard to the battlefield with a flying counter on it. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | WithCountersType$ Flying | AnimateSubAbility$ Animate | SpellDescription$ Return target creature card from your graveyard to the battlefield with a flying counter on it. That creature is an Angel Warrior in addition to its other types. SVar:Animate:DB$ Animate | Defined$ Remembered | Types$ Angel,Warrior | Duration$ Permanent Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Choose a creature you control. Until your next turn, all damage that would be dealt to creatures you control is dealt to that creature instead.\nIII — Return target creature card from your graveyard to the battlefield with a flying counter on it. That creature is an Angel Warrior in addition to its other types. From 9c0d347679b91ded673bd5a3bbdf8819dc0f0a68 Mon Sep 17 00:00:00 2001 From: Renato Santos Date: Mon, 7 Feb 2022 00:13:21 +0000 Subject: [PATCH 2/5] New tested card scripts (2022-06-06) --- .../res/cardsfolder/upcoming/intercessors_arrest.txt | 8 ++++++++ forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt | 9 +++++++++ forge-gui/res/cardsfolder/upcoming/lucky_offering.txt | 6 ++++++ forge-gui/res/cardsfolder/upcoming/mech_hangar.txt | 7 +++++++ .../res/cardsfolder/upcoming/mothrider_patrol.txt | 7 +++++++ .../res/cardsfolder/upcoming/regents_authority.txt | 10 ++++++++++ forge-gui/res/cardsfolder/upcoming/repel_the_vile.txt | 7 +++++++ .../res/cardsfolder/upcoming/roadside_reliquary.txt | 7 +++++++ .../res/cardsfolder/upcoming/selfless_samurai.txt | 8 ++++++++ forge-gui/res/cardsfolder/upcoming/uncharted_haven.txt | 8 ++++++++ 10 files changed, 77 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/intercessors_arrest.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/lucky_offering.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/mech_hangar.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/mothrider_patrol.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/regents_authority.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/repel_the_vile.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/uncharted_haven.txt diff --git a/forge-gui/res/cardsfolder/upcoming/intercessors_arrest.txt b/forge-gui/res/cardsfolder/upcoming/intercessors_arrest.txt new file mode 100644 index 00000000000..bd5e3a03ea4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/intercessors_arrest.txt @@ -0,0 +1,8 @@ +Name:Intercessor's Arrest +ManaCost:2 W +Types:Enchantment Aura +K:Enchant permanent +A:SP$ Attach | ValidTgts$ Permanent | AILogic$ Curse +S:Mode$ Continuous | Affected$ Permanent.EnchantedBy | AddHiddenKeyword$ CARDNAME can't attack or block. & CARDNAME can't crew Vehicles. | Description$ Enchanted permanent can't attack, block, or crew Vehicles. Its activated abilities can't be activated unless they're mana abilities. +S:Mode$ CantBeActivated | ValidCard$ Card.EnchantedBy | ValidSA$ Activated.nonManaAbility +Oracle:Enchant permanent\nEnchanted permanent can't attack, block, or crew Vehicles. Its activated abilities can't be activated unless they're mana abilities. diff --git a/forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt b/forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt new file mode 100644 index 00000000000..9cf621d03cd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt @@ -0,0 +1,9 @@ +Name:Kitsune Ace +ManaCost:1 W +Types:Creature Fox Pilot +PT:2/2 +T:Mode$ Attacks | ValidCard$ Vehicle.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Whenever a Vehicle you control attacks, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DBPump,DBUntap +SVar:DBPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ First Strike | SpellDescription$ That Vehicle gains first strike until end of turn +SVar:DBUntap:DB$ Untap | Defined$ Self | SpellDescription$ Untap CARDNAME +Oracle:Whenever a Vehicle you control attacks, choose one —\n• That Vehicle gains first strike until end of turn.\n• Untap Kitsune Ace. diff --git a/forge-gui/res/cardsfolder/upcoming/lucky_offering.txt b/forge-gui/res/cardsfolder/upcoming/lucky_offering.txt new file mode 100644 index 00000000000..22bebc56e67 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lucky_offering.txt @@ -0,0 +1,6 @@ +Name:Lucky Offering +ManaCost:W +Types:Sorcery +A:SP$ Destroy | ValidTgts$ Artifact.cmcLE3 | TgtPrompt$ Choose target artifact with mana value 3 or less | SubAbility$ DBGainLife | SpellDescription$ Destroy target artifact with mana value 3 or less. You gain 3 life. +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 +Oracle:Destroy target artifact with mana value 3 or less. You gain 3 life. diff --git a/forge-gui/res/cardsfolder/upcoming/mech_hangar.txt b/forge-gui/res/cardsfolder/upcoming/mech_hangar.txt new file mode 100644 index 00000000000..c8bdf9f79e9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mech_hangar.txt @@ -0,0 +1,7 @@ +Name:Mech Hangar +ManaCost:no cost +Types:Land +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | RestrictValid$ Vehicle,Pilot | SpellDescription$ Add one mana of any color. Spend this mana only to cast a Pilot or Vehicle spell. +A:AB$ Animate | Cost$ 3 T | ValidTgts$ Vehicle | TgtPrompt$ Choose target Vehicle | Types$ Artifact,Creature | SpellDescription$ Target Vehicle becomes an artifact creature until end of turn. | StackDescription$ {c:Targeted} becomes an artifact creature until end of turn. +Oracle:{T}: Add {C}.\n{T}: Add one mana of any color. Spend this mana only to cast a Pilot or Vehicle spell.\n{3}, {T}: Target Vehicle becomes an artifact creature until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/mothrider_patrol.txt b/forge-gui/res/cardsfolder/upcoming/mothrider_patrol.txt new file mode 100644 index 00000000000..7ca7fa93da5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mothrider_patrol.txt @@ -0,0 +1,7 @@ +Name:Mothrider Patrol +ManaCost:W +Types:Creature Fox Warrior +PT:1/1 +K:Flying +A:AB$ Tap | Cost$ 3 W T | ValidTgts$ Creature | TgtPrompt$ Choose target creature | SpellDescription$ Tap target creature. +Oracle:Flying\n{3}{W}, {T}: Tap target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/regents_authority.txt b/forge-gui/res/cardsfolder/upcoming/regents_authority.txt new file mode 100644 index 00000000000..a7c62077253 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/regents_authority.txt @@ -0,0 +1,10 @@ +Name:Regent's Authority +ManaCost:W +Types:Instant +A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Choose target creature | SubAbility$ DBBranch | StackDescription$ SpellDescription | SpellDescription$ Target creature gets +2/+2 until end of turn. If it's an enchantment creature or legendary creature, instead put a +1/+1 counter on it and it gets +1/+1 until end of turn. +SVar:DBBranch:DB$ Branch | BranchConditionSVar$ X | BranchConditionSVarCompare$ EQ1 | TrueSubAbility$ DBPutCounter | FalseSubAbility$ DBPumpTwo +SVar:DBPutCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPumpOne +SVar:DBPumpOne:DB$ Pump | Defined$ Targeted | NumAtt$ 1 | NumDef$ 1 +SVar:DBPumpTwo:DB$ Pump | Defined$ Targeted | NumAtt$ 2 | NumDef$ 2 +SVar:X:Targeted$Valid Creature.Enchantment,Creature.Legendary +Oracle:Target creature gets +2/+2 until end of turn. If it's an enchantment creature or legendary creature, instead put a +1/+1 counter on it and it gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/repel_the_vile.txt b/forge-gui/res/cardsfolder/upcoming/repel_the_vile.txt new file mode 100644 index 00000000000..1d1003018ec --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/repel_the_vile.txt @@ -0,0 +1,7 @@ +Name:Repel the Vile +ManaCost:3 W +Types:Instant +A:SP$ Charm | Choices$ DBExileCreature,DBExileEnchantment | Defined$ You +SVar:DBExileCreature:DB$ ChangeZone | ValidTgts$ Creature.powerGE4 | TgtPrompt$ Choose target creature with power 4 or greater | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target creature with power 4 or greater. +SVar:DBExileEnchantment:DB$ ChangeZone | ValidTgts$ Enchantment | TgtPrompt$ Choose target enchantment | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target enchantment. +Oracle:Choose one —\n• Exile target creature with power 4 or greater.\n• Exile target enchantment. diff --git a/forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt b/forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt new file mode 100644 index 00000000000..9ea0ecec85f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt @@ -0,0 +1,7 @@ +Name:Roadside Reliquary +ManaCost:no cost +Types:Land +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ Draw | Cost$ 2 T Sac<1/CARDNAME> | NumCards$ 1 | ConditionPresent$ Artifact.YouCtrl | SubAbility$ DBDraw | SpellDescription$ Draw a card if you control an artifact. Draw a card if you control an enchantment. +SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionPresent$ Enchantment.YouCtrl +Oracle:{T}: Add {C}.\n{2}, {T}, Sacrifice Roadside Reliquary: Draw a card if you control an artifact. Draw a card if you control an enchantment. diff --git a/forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt b/forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt new file mode 100644 index 00000000000..8f320224770 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt @@ -0,0 +1,8 @@ +Name:Selfless Samurai +ManaCost:1 W +Types:Creature Fox Samurai +PT:2/2 +T:Mode$ Attacks | ValidCard$ Samurai.YouCtrl,Warrior.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a Samurai or Warrior you control attacks alone, it gains lifelink until end of turn. +SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ Lifelink +A:AB$ Pump | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select target creature you control | KW$ Indestructible | SpellDescription$ Another target creature you control gains indestructible until end of turn. +Oracle:Whenever a Samurai or Warrior you control attacks alone, it gains lifelink until end of turn.\nSacrifice Selfless Samurai: Another target creature you control gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) diff --git a/forge-gui/res/cardsfolder/upcoming/uncharted_haven.txt b/forge-gui/res/cardsfolder/upcoming/uncharted_haven.txt new file mode 100644 index 00000000000..e323e1b6e31 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/uncharted_haven.txt @@ -0,0 +1,8 @@ +Name:Uncharted Haven +ManaCost:no cost +Types:Land +K:CARDNAME enters the battlefield tapped. +K:ETBReplacement:Other:ChooseColor +SVar:ChooseColor:DB$ ChooseColor | Defined$ You | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a color. +A:AB$ Mana | Cost$ T | Produced$ Chosen | SpellDescription$ Add one mana of the chosen color. +Oracle:Uncharted Haven enters the battlefield tapped.\nAs Uncharted Haven enters the battlefield, choose a color.\n{T}: Add one mana of the chosen color. From d23b38b18a616f777be0697ad9629f7a7c0d0aeb Mon Sep 17 00:00:00 2001 From: Renato Santos Date: Mon, 7 Feb 2022 04:25:16 +0000 Subject: [PATCH 3/5] Requested corrections --- forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt | 3 ++- forge-gui/res/cardsfolder/upcoming/lucky_offering.txt | 1 + forge-gui/res/cardsfolder/upcoming/mech_hangar.txt | 2 ++ forge-gui/res/cardsfolder/upcoming/regents_authority.txt | 2 ++ forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt | 1 + forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt | 1 + 6 files changed, 9 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt b/forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt index 9cf621d03cd..0c36ef19539 100644 --- a/forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt +++ b/forge-gui/res/cardsfolder/upcoming/kitsune_ace.txt @@ -4,6 +4,7 @@ Types:Creature Fox Pilot PT:2/2 T:Mode$ Attacks | ValidCard$ Vehicle.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Whenever a Vehicle you control attacks, ABILITY SVar:TrigCharm:DB$ Charm | Choices$ DBPump,DBUntap -SVar:DBPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ First Strike | SpellDescription$ That Vehicle gains first strike until end of turn +SVar:DBPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ First strike | SpellDescription$ That Vehicle gains first strike until end of turn SVar:DBUntap:DB$ Untap | Defined$ Self | SpellDescription$ Untap CARDNAME +DeckNeeds:Type$Vehicle Oracle:Whenever a Vehicle you control attacks, choose one —\n• That Vehicle gains first strike until end of turn.\n• Untap Kitsune Ace. diff --git a/forge-gui/res/cardsfolder/upcoming/lucky_offering.txt b/forge-gui/res/cardsfolder/upcoming/lucky_offering.txt index 22bebc56e67..2c578ec1125 100644 --- a/forge-gui/res/cardsfolder/upcoming/lucky_offering.txt +++ b/forge-gui/res/cardsfolder/upcoming/lucky_offering.txt @@ -3,4 +3,5 @@ ManaCost:W Types:Sorcery A:SP$ Destroy | ValidTgts$ Artifact.cmcLE3 | TgtPrompt$ Choose target artifact with mana value 3 or less | SubAbility$ DBGainLife | SpellDescription$ Destroy target artifact with mana value 3 or less. You gain 3 life. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 +DeckHas:Ability$LifeGain Oracle:Destroy target artifact with mana value 3 or less. You gain 3 life. diff --git a/forge-gui/res/cardsfolder/upcoming/mech_hangar.txt b/forge-gui/res/cardsfolder/upcoming/mech_hangar.txt index c8bdf9f79e9..572e9d5196e 100644 --- a/forge-gui/res/cardsfolder/upcoming/mech_hangar.txt +++ b/forge-gui/res/cardsfolder/upcoming/mech_hangar.txt @@ -4,4 +4,6 @@ Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | RestrictValid$ Vehicle,Pilot | SpellDescription$ Add one mana of any color. Spend this mana only to cast a Pilot or Vehicle spell. A:AB$ Animate | Cost$ 3 T | ValidTgts$ Vehicle | TgtPrompt$ Choose target Vehicle | Types$ Artifact,Creature | SpellDescription$ Target Vehicle becomes an artifact creature until end of turn. | StackDescription$ {c:Targeted} becomes an artifact creature until end of turn. +DeckHints:Type$Pilot +DeckNeeds:Type$Vehicle Oracle:{T}: Add {C}.\n{T}: Add one mana of any color. Spend this mana only to cast a Pilot or Vehicle spell.\n{3}, {T}: Target Vehicle becomes an artifact creature until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/regents_authority.txt b/forge-gui/res/cardsfolder/upcoming/regents_authority.txt index a7c62077253..478f63d601a 100644 --- a/forge-gui/res/cardsfolder/upcoming/regents_authority.txt +++ b/forge-gui/res/cardsfolder/upcoming/regents_authority.txt @@ -7,4 +7,6 @@ SVar:DBPutCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ P1P1 | Count SVar:DBPumpOne:DB$ Pump | Defined$ Targeted | NumAtt$ 1 | NumDef$ 1 SVar:DBPumpTwo:DB$ Pump | Defined$ Targeted | NumAtt$ 2 | NumDef$ 2 SVar:X:Targeted$Valid Creature.Enchantment,Creature.Legendary +DeckHas:Ability$Counters +DeckHints:Type$Enchantment|Legendary Oracle:Target creature gets +2/+2 until end of turn. If it's an enchantment creature or legendary creature, instead put a +1/+1 counter on it and it gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt b/forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt index 9ea0ecec85f..7e632f6ab45 100644 --- a/forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt +++ b/forge-gui/res/cardsfolder/upcoming/roadside_reliquary.txt @@ -4,4 +4,5 @@ Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. A:AB$ Draw | Cost$ 2 T Sac<1/CARDNAME> | NumCards$ 1 | ConditionPresent$ Artifact.YouCtrl | SubAbility$ DBDraw | SpellDescription$ Draw a card if you control an artifact. Draw a card if you control an enchantment. SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionPresent$ Enchantment.YouCtrl +DeckHints:Type$Artifact|Enchantment Oracle:{T}: Add {C}.\n{2}, {T}, Sacrifice Roadside Reliquary: Draw a card if you control an artifact. Draw a card if you control an enchantment. diff --git a/forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt b/forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt index 8f320224770..4466a7d7bf3 100644 --- a/forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt +++ b/forge-gui/res/cardsfolder/upcoming/selfless_samurai.txt @@ -5,4 +5,5 @@ PT:2/2 T:Mode$ Attacks | ValidCard$ Samurai.YouCtrl,Warrior.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a Samurai or Warrior you control attacks alone, it gains lifelink until end of turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ Lifelink A:AB$ Pump | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select target creature you control | KW$ Indestructible | SpellDescription$ Another target creature you control gains indestructible until end of turn. +DeckHints:Type$Samurai|Warrior Oracle:Whenever a Samurai or Warrior you control attacks alone, it gains lifelink until end of turn.\nSacrifice Selfless Samurai: Another target creature you control gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) From 9db08ea013e656e3ead13f65aefcfbd341f9d6ab Mon Sep 17 00:00:00 2001 From: Tim Mocny Date: Mon, 7 Feb 2022 04:36:10 +0000 Subject: [PATCH 4/5] =?UTF-8?q?NEO=20=E2=80=93=206=20Feb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../upcoming/go_shintai_of_hidden_cruelty.txt | 12 ++++++++++ .../upcoming/go_shintai_of_lost_wisdom.txt | 2 +- .../cardsfolder/upcoming/mobilizer_mech.txt | 11 +++++++++ .../upcoming/nezumi_bladeblesser.txt | 8 +++++++ ...kiba_reckoner_raid_nezumi_road_captain.txt | 24 +++++++++++++++++++ .../cardsfolder/upcoming/oni_cult_anvil.txt | 10 ++++++++ .../upcoming/spinning_wheel_kick.txt | 8 +++++++ .../upcoming/spirit_sisters_call.txt | 12 ++++++++++ .../upcoming/weaver_of_harmony.txt | 7 ++++++ 9 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/go_shintai_of_hidden_cruelty.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/mobilizer_mech.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/nezumi_bladeblesser.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/okiba_reckoner_raid_nezumi_road_captain.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/oni_cult_anvil.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/spinning_wheel_kick.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/spirit_sisters_call.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/weaver_of_harmony.txt diff --git a/forge-gui/res/cardsfolder/upcoming/go_shintai_of_hidden_cruelty.txt b/forge-gui/res/cardsfolder/upcoming/go_shintai_of_hidden_cruelty.txt new file mode 100644 index 00000000000..acd4737ece6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/go_shintai_of_hidden_cruelty.txt @@ -0,0 +1,12 @@ +Name:Go-Shintai of Hidden Cruelty +ManaCost:3 B +Types:Legendary Enchantment Creature Shrine +PT:2/2 +K:Deathtouch +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ At the beginning of your end step, you may pay {1}. When you do, destroy target creature with toughness X or less, where X is the number of Shrines you control. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigDestroy | SpellDescription$ Destroy target creature with toughness X or less, where X is the number of Shrines you control. +SVar:TrigDestroy:DB$ Mill | ValidTgts$ Creature.toughnessLEX | TgtPrompt$ Select target creature with toughness X or less +SVar:X:Count$TypeYouCtrl.Shrine +DeckHas:Ability$Mill +DeckHints:Type$Shrine +Oracle:Deathtouch\nAt the beginning of your end step, you may pay {1}. When you do, destroy target creature with toughness X or less, where X is the number of Shrines you control. diff --git a/forge-gui/res/cardsfolder/upcoming/go_shintai_of_lost_wisdom.txt b/forge-gui/res/cardsfolder/upcoming/go_shintai_of_lost_wisdom.txt index a84a9a7943a..02fa179849c 100644 --- a/forge-gui/res/cardsfolder/upcoming/go_shintai_of_lost_wisdom.txt +++ b/forge-gui/res/cardsfolder/upcoming/go_shintai_of_lost_wisdom.txt @@ -5,7 +5,7 @@ PT:0/4 K:Flying T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ At the beginning of your end step, you may pay {1}. When you do, target player mills X cards, where X is the number of Shrines you control. (To mill a card, a player puts the top card of their library into their graveyard.) SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigMill | SpellDescription$ Target player mills X cards, where X is the number of Shrines you control. -SVar:TrigMill:DB$ Mill | ValidTgts$ Player | NumCards$ X | TgtPrompt$ Select target player | SpellDescription$ Fart knocker! +SVar:TrigMill:DB$ Mill | ValidTgts$ Player | NumCards$ X | TgtPrompt$ Select target player SVar:X:Count$TypeYouCtrl.Shrine DeckHas:Ability$Mill DeckHints:Type$Shrine diff --git a/forge-gui/res/cardsfolder/upcoming/mobilizer_mech.txt b/forge-gui/res/cardsfolder/upcoming/mobilizer_mech.txt new file mode 100644 index 00000000000..ffcee9829ee --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mobilizer_mech.txt @@ -0,0 +1,11 @@ +Name:Mobilizer Mech +ManaCost:1 U +Types:Artifact Vehicle +PT:3/4 +K:Flying +T:Mode$ Crewed | ValidVehicle$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ Whenever CARDNAME becomes crewed, up to one other target Vehicle you control becomes an artifact creature until end of turn. +SVar:TrigAnimate:DB$ Animate | ValidTgts$ Vehicle.YouCtrl+Other | TgtPrompt$ Select up to one other target Vehicle you control | TargetMin$ 0 | TargetMax$ 1 | Types$ Creature,Artifact +K:Crew:3 +Oracle:Flying +DeckHints:Type$Vehicle +Oracle:Whenever Mobilizer Mech becomes crewed, up to one other target Vehicle you control becomes an artifact creature until end of turn.\nCrew 3 (Tap any number of creatures you control with total power 3 or more: This Vehicle becomes an artifact creature until end of turn.) diff --git a/forge-gui/res/cardsfolder/upcoming/nezumi_bladeblesser.txt b/forge-gui/res/cardsfolder/upcoming/nezumi_bladeblesser.txt new file mode 100644 index 00000000000..6f3ab95ed8b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nezumi_bladeblesser.txt @@ -0,0 +1,8 @@ +Name:Nezumi Bladeblesser +ManaCost:2 B +Types:Creature Rat Samurai +PT:3/2 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Deathtouch | IsPresent$ Artifact.YouCtrl | Description$ CARDNAME has deathtouch as long as you control an artifact. +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Menace | IsPresent$ Enchantment.YouCtrl | Description$ CARDNAME has menace as long as you control an enchantment. (It can't be blocked except by two or more creatures.) +DeckHints:Type$Artifact|Enchantment +Oracle:Nezumi Bladeblesser has deathtouch as long as you control an artifact.\nNezumi Bladeblesser has menace as long as you control an enchantment. (It can't be blocked except by two or more creatures.) diff --git a/forge-gui/res/cardsfolder/upcoming/okiba_reckoner_raid_nezumi_road_captain.txt b/forge-gui/res/cardsfolder/upcoming/okiba_reckoner_raid_nezumi_road_captain.txt new file mode 100644 index 00000000000..bd6065f279c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/okiba_reckoner_raid_nezumi_road_captain.txt @@ -0,0 +1,24 @@ +Name:Okiba Reckoner Raid +ManaCost:B +Types:Enchantment Saga +K:Saga:3:DBDrain,DBDrain,DBTransform +SVar:DBDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife | SpellDescription$ Each opponent loses 1 life and you gain 1 life. +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SpellDescription$ Exile this Saga, then return it to the battlefield transformed under your control. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | GainControl$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AlternateMode:DoubleFaced +DeckHas:Ability$LifeGain +Oracle:(As this Saga enters and after your draw step, add a lore counter.)\nI, II — Each opponent loses 1 life and you gain 1 life.\nIII — Exile this Saga, then return it to the battlefield transformed under your control. + +ALTERNATE + +Name:Nezumi Road Captain +ManaCost:no cost +Colors:black +Types:Enchantment Creature Rat Rogue +PT:2/2 +K:Menace +S:Mode$ Continuous | Affected$ Vehicle.YouCtrl | AddKeyword$ Menace | Description$ Vehicles you control have menace. (They can't be blocked except by two or more creatures.) +DeckHints:Type$Vehicle +Oracle:Menace\nVehicles you control have menace. (They can't be blocked except by two or more creatures.) diff --git a/forge-gui/res/cardsfolder/upcoming/oni_cult_anvil.txt b/forge-gui/res/cardsfolder/upcoming/oni_cult_anvil.txt new file mode 100644 index 00000000000..5935e1eadf9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/oni_cult_anvil.txt @@ -0,0 +1,10 @@ +Name:Oni-Cult Anvil +ManaCost:B R +Types:Artifact +T:Mode$ ChangesZoneAll | ValidCards$ Artifact.YouCtrl | Origin$ Battlefield | TriggerZones$ Battlefield | ActivationLimit$ 1 | Execute$ TrigToken | TriggerDescription$ Whenever one or more artifacts you control leave the battlefield during your turn, create a 1/1 colorless Construct artifact creature token. This ability triggers only once each turn. +SVar:TrigToken:DB$ Token | TokenScript$ c_1_1_a_construct +A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | Defined$ Player.Opponent | NumDmg$ 1 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 1 damage to each opponent. +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 1 | SpellDescription$ You gain 1 life. +DeckHints:Type$Artifact & Ability$Discard +DeckHas:Ability$Sacrifice|Token|LifeGain & Type$Construct +Oracle:Whenever one or more artifacts you control leave the battlefield during your turn, create a 1/1 colorless Construct artifact creature token. This ability triggers only once each turn.\n{T}, Sacrifice an artifact: Oni-Cult Anvil deals 1 damage to each opponent. You gain 1 life. diff --git a/forge-gui/res/cardsfolder/upcoming/spinning_wheel_kick.txt b/forge-gui/res/cardsfolder/upcoming/spinning_wheel_kick.txt new file mode 100644 index 00000000000..84fa1e11027 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/spinning_wheel_kick.txt @@ -0,0 +1,8 @@ +Name:Spinning Wheel Kick +ManaCost:X X G G +Types:Sorcery +A:SP$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ DBDamage | StackDescription$ None | SpellDescription$ Target creature you control +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select X target creatures and/or planeswalkers | TargetMin$ X | TargetMax$ X | DamageSource$ ParentTarget | NumDmg$ Y | SpellDescription$ deals damage equal to its power to each of X target creatures and/or planeswalkers. +SVar:X:Count$xPaid +SVar:Y:ParentTargeted$CardPower +Oracle:Target creature you control deals damage equal to its power to each of X target creatures and/or planeswalkers. diff --git a/forge-gui/res/cardsfolder/upcoming/spirit_sisters_call.txt b/forge-gui/res/cardsfolder/upcoming/spirit_sisters_call.txt new file mode 100644 index 00000000000..6b697924291 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/spirit_sisters_call.txt @@ -0,0 +1,12 @@ +Name:Spirit-Sister's Call +ManaCost:3 W B +Types:Enchantment +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of your end step, choose target permanent card in your graveyard. You may sacrifice a permanent that shares a card type with the chosen card. If you do, return the chosen card from your graveyard to the battlefield and it gains "If this permanent would leave the battlefield, exile it instead of putting it anywhere else." +SVar:TrigChoose:DB$ ChooseCard | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Choose target permanent card in your graveyard | TgtZone$ Graveyard | DefinedCards$ Targeted | SubAbility$ DBSacrifice +SVar:DBSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Permanent.sharesCardTypeWith Targeted | SacMessage$ permanent that shares a card type with the chosen card | Amount$ 1 | RememberSacrificed$ True | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | ConditionDefined$ Remembered | ConditionPresent$ Card | Defined$ Targeted | Origin$ Graveyard | Destination$ Battlefield | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Replacements$ ReplaceLeaves | Defined$ Targeted | Duration$ Permanent +SVar:ReplaceLeaves:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | ValidCard$ Card.Self | ReplaceWith$ Exile | Description$ If this permanent would leave the battlefield, exile it instead of putting it anywhere else. +SVar:Exile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ ReplacedCard +DeckHas:Ability$Graveyard|Sacrifice +Oracle:At the beginning of your end step, choose target permanent card in your graveyard. You may sacrifice a permanent that shares a card type with the chosen card. If you do, return the chosen card from your graveyard to the battlefield and it gains "If this permanent would leave the battlefield, exile it instead of putting it anywhere else." diff --git a/forge-gui/res/cardsfolder/upcoming/weaver_of_harmony.txt b/forge-gui/res/cardsfolder/upcoming/weaver_of_harmony.txt new file mode 100644 index 00000000000..48120396240 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/weaver_of_harmony.txt @@ -0,0 +1,7 @@ +Name:Weaver of Harmony +ManaCost:1 G +Types:Enchantment Creature Snake Druid +PT:2/2 +S:Mode$ Continuous | Affected$ Creature.Other+Enchantment+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other enchantment creatures you control get +1/+1. +A:AB$ CopySpellAbility | Cost$ G T | TgtPrompt$ Select target activated or triggered ability you control from an enchantment source | TargetType$ Activated.YouCtrl,Triggered.YouCtrl | ValidTgts$ Enchantment | AILogic$ AlwaysCopyActivatedAbilities | MayChooseTarget$ True | SpellDescription$ Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.) +Oracle:Other enchantment creatures you control get +1/+1.\n{G}, {T}: Copy target activated or triggered ability you control from an enchantment source. You may choose new targets for the copy. (Mana abilities can't be targeted.) From 7fec1d98bafef2d960b9367422e3862fdd0c1e3e Mon Sep 17 00:00:00 2001 From: Tim Mocny Date: Mon, 7 Feb 2022 09:23:08 +0000 Subject: [PATCH 5/5] AnimateEffect / DamageDealEffect improve getStackDescription --- .../game/ability/effects/AnimateEffect.java | 46 ++++++++----------- .../ability/effects/DamageDealEffect.java | 14 ++---- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java index 752e7bc11d2..2d2270b80c9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java @@ -238,51 +238,45 @@ public class AnimateEffect extends AnimateEffectBase { // if power is -1, we'll assume it's not just setting toughness if (power != null && toughness != null) { - sb.append("become"); - if (tgts.size() == 1) { - sb.append("s "); - } + sb.append(tgts.size() == 1 ? "becomes " : "become "); sb.append(" ").append(power).append("/").append(toughness); } else if (power != null) { sb.append("power becomes ").append(power); } else if (toughness != null) { sb.append("toughness becomes ").append(toughness); - } else{ - sb.append("become"); - if (tgts.size() == 1) { - sb.append("s "); - } + } else { + sb.append(tgts.size() == 1 ? "becomes " : "become "); } - if (colors.size() > 0) { - sb.append(" "); - } if (colors.contains("ChosenColor")) { sb.append("color of that player's choice"); } else { for (int i = 0; i < colors.size(); i++) { - sb.append(colors.get(i)); + sb.append(colors.get(i)).append(" "); if (i < (colors.size() - 1)) { - sb.append(" and "); + sb.append("and "); } } } - sb.append(" "); + if (types.contains("ChosenType")) { sb.append("type of player's choice "); } else { - for (int i = types.size() - 1; i >= 0; i--) { - sb.append(types.get(i)); - sb.append(" "); + for (int i = 0; i < types.size(); i++) { + String type = types.get(i); + if (i == 0 && tgts.size() == 1) { + sb.append(Lang.startsWithVowel(type) ? "an " : "a "); + } + sb.append(CardType.CoreType.isValidEnum(type) ? type.toLowerCase() : type).append(" "); } } if (keywords.size() > 0) { sb.append("with "); } for (int i = 0; i < keywords.size(); i++) { - sb.append(keywords.get(i)); + sb.append(keywords.get(i)).append(" "); if (i < (keywords.size() - 1)) { - sb.append(" and "); + sb.append("and "); } } // sb.append(abilities) @@ -290,17 +284,17 @@ public class AnimateEffect extends AnimateEffectBase { if (!permanent) { final String duration = sa.getParam("Duration"); if ("UntilEndOfCombat".equals(duration)) { - sb.append(" until end of combat."); + sb.append("until end of combat."); } else if ("UntilHostLeavesPlay".equals(duration)) { - sb.append(" until ").append(host).append(" leaves the battlefield."); + sb.append("until ").append(host).append(" leaves the battlefield."); } else if ("UntilYourNextUpkeep".equals(duration)) { - sb.append(" until your next upkeep."); + sb.append("until your next upkeep."); } else if ("UntilYourNextTurn".equals(duration)) { - sb.append(" until your next turn."); + sb.append("until your next turn."); } else if ("UntilControllerNextUntap".equals(duration)) { - sb.append(" until its controller's next untap step."); + sb.append("until its controller's next untap step."); } else { - sb.append(" until end of turn."); + sb.append("until end of turn."); } } else { sb.append("."); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java index bf94cfac833..7fe677a4580 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java @@ -43,19 +43,13 @@ public class DamageDealEffect extends DamageBaseEffect { } List targets = SpellAbilityEffect.getTargets(spellAbility); - if (targets.isEmpty()) { + final List definedSources = AbilityUtils.getDefinedCards(spellAbility.getHostCard(), spellAbility.getParam("DamageSource"), spellAbility); + + if (targets.isEmpty() || definedSources.isEmpty()) { return ""; } - final List definedSources = AbilityUtils.getDefinedCards(spellAbility.getHostCard(), spellAbility.getParam("DamageSource"), spellAbility); - - if (!definedSources.isEmpty() && definedSources.get(0) != spellAbility.getHostCard()) { - stringBuilder.append(definedSources.get(0).toString()).append(" deals"); - } else { - stringBuilder.append("Deals"); - } - - stringBuilder.append(" ").append(dmg).append(" damage "); + stringBuilder.append(definedSources.get(0).toString()).append(" deals").append(" ").append(dmg).append(" damage "); // if use targeting we show all targets and corresponding damage if (spellAbility.usesTargeting()) {