From 2de9e7f92ce91ba33fbfad40dd52e6b814e149a4 Mon Sep 17 00:00:00 2001 From: Fulgur14 <54345051+Fulgur14@users.noreply.github.com> Date: Tue, 29 Oct 2024 18:17:06 +0100 Subject: [PATCH 1/6] Another 12 FDN/J25 cards (#6461) --- .../upcoming/dionus_elvish_archdruid.txt | 11 +++++++++++ .../res/cardsfolder/upcoming/dropkick_bomber.txt | 11 +++++++++++ .../upcoming/eidolon_of_astral_winds.txt | 9 +++++++++ .../res/cardsfolder/upcoming/electroduplicate.txt | 8 ++++++++ .../res/cardsfolder/upcoming/erudite_wizard.txt | 7 +++++++ .../upcoming/evereth_viceroy_of_plunder.txt | 13 +++++++++++++ .../res/cardsfolder/upcoming/exemplar_of_light.txt | 12 ++++++++++++ .../cardsfolder/upcoming/faithful_pikemaster.txt | 8 ++++++++ .../upcoming/fumulus_the_infestation.txt | 14 ++++++++++++++ .../res/cardsfolder/upcoming/gilded_scuttler.txt | 9 +++++++++ forge-gui/res/cardsfolder/upcoming/go_forth.txt | 7 +++++++ .../res/cardsfolder/upcoming/goblin_surprise.txt | 7 +++++++ 12 files changed, 116 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/dionus_elvish_archdruid.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/dropkick_bomber.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/eidolon_of_astral_winds.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/electroduplicate.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/erudite_wizard.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/evereth_viceroy_of_plunder.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/exemplar_of_light.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/faithful_pikemaster.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/fumulus_the_infestation.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/gilded_scuttler.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/go_forth.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/goblin_surprise.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dionus_elvish_archdruid.txt b/forge-gui/res/cardsfolder/upcoming/dionus_elvish_archdruid.txt new file mode 100644 index 00000000000..099a3e3c562 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dionus_elvish_archdruid.txt @@ -0,0 +1,11 @@ +Name:Dionus, Elvish Archdruid +ManaCost:3 G +Types:Legendary Creature Elf Druid +PT:2/3 +S:Mode$ Continuous | Affected$ Elf.YouCtrl | AddTrigger$ TrigTapped | Description$ Elves you control have "Whenever this creature becomes tapped during your turn, untap it and put a +1/+1 counter on it. This ability triggers only once each turn." +SVar:TrigTapped:Mode$ Taps | ValidCard$ Card.Self | TriggerZones$ Battlefield | ActivationLimit$ 1 | PlayerTurn$ True | Execute$ TrigUntap | TriggerDescription$ Whenever this creature becomes tapped during your turn, untap it and put a +1/+1 counter on it. This ability triggers only once each turn. +SVar:TrigUntap:DB$ Untap | Defined$ Self | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +DeckHas:Ability$Counters +DeckHints:Type$Elf +Oracle:Elves you control have "Whenever this creature becomes tapped during your turn, untap it and put a +1/+1 counter on it. This ability triggers only once each turn." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/dropkick_bomber.txt b/forge-gui/res/cardsfolder/upcoming/dropkick_bomber.txt new file mode 100644 index 00000000000..44e61e6a307 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dropkick_bomber.txt @@ -0,0 +1,11 @@ +Name:Dropkick Bomber +ManaCost:2 R +Types:Creature Goblin Warrior +PT:2/3 +S:Mode$ Continuous | Affected$ Goblin.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Goblins you control get +1/+1. +A:AB$ Animate | Cost$ R | ValidTgts$ Goblin.Other+YouCtrl | TgtPrompt$ Select another target Goblin you control | Keywords$ Flying | Triggers$ TrigDamageDealtOnce | SpellDescription$ Until end of turn, another target Goblin you control gains flying and "When this creature deals combat damage, sacrifice it." +SVar:TrigDamageDealtOnce:Mode$ DamageDealtOnce | CombatDamage$ True | ValidSource$ Card.Self | Execute$ TrigSac | TriggerDescription$ When this creature deals combat damage, sacrifice it. +SVar:TrigSac:DB$ Sacrifice +SVar:PlayMain1:TRUE +SVar:BuffedBy:Goblin +Oracle:Other Goblins you control get +1/+1.\n{R}: Until end of turn, another target Goblin you control gains flying and "When this creature deals combat damage, sacrifice it." diff --git a/forge-gui/res/cardsfolder/upcoming/eidolon_of_astral_winds.txt b/forge-gui/res/cardsfolder/upcoming/eidolon_of_astral_winds.txt new file mode 100644 index 00000000000..fc5864fdd7f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/eidolon_of_astral_winds.txt @@ -0,0 +1,9 @@ +Name:Eidolon of Astral Winds +ManaCost:2 W +Types:Enchantment Creature Spirit +PT:2/4 +K:Vigilance +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Enchantment.YouCtrl | Execute$ TrigAnimate | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment you control enters, choose target creature you control. Until end of turn, that creature has base power and toughness 4/4 and gains flying. +SVar:TrigAnimate:DB$ Animate | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | Power$ 4 | Toughness$ 4 | Keywords$ Flying +DeckHints:Type$Enchantment +Oracle:Vigilance\nConstellation — Whenever Eidolon of Astral Winds or another enchantment you control enters, choose target creature you control. Until end of turn, that creature has base power and toughness 4/4 and gains flying. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/electroduplicate.txt b/forge-gui/res/cardsfolder/upcoming/electroduplicate.txt new file mode 100644 index 00000000000..7cf5cfbac61 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/electroduplicate.txt @@ -0,0 +1,8 @@ +Name:Electroduplicate +ManaCost:2 R +Types:Sorcery +K:Flashback:2 R R +A:SP$ CopyPermanent | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | AddKeywords$ Haste | AddTriggers$ TrigEOT | 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." +SVar:TrigEOT:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of the end step, sacrifice this token. +SVar:TrigSac:DB$ Sacrifice | SacValid$ Self +Oracle: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."\nFlashback {2}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/upcoming/erudite_wizard.txt b/forge-gui/res/cardsfolder/upcoming/erudite_wizard.txt new file mode 100644 index 00000000000..906a4b98c13 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/erudite_wizard.txt @@ -0,0 +1,7 @@ +Name:Erudite Wizard +ManaCost:2 U +Types:Creature Human Wizard +PT:2/3 +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you draw your second card each turn, put a +1/+1 counter on this creature. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +Oracle:Whenever you draw your second card each turn, put a +1/+1 counter on this creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/evereth_viceroy_of_plunder.txt b/forge-gui/res/cardsfolder/upcoming/evereth_viceroy_of_plunder.txt new file mode 100644 index 00000000000..03875f84c08 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/evereth_viceroy_of_plunder.txt @@ -0,0 +1,13 @@ +Name:Evereth, Viceroy of Plunder +ManaCost:2 B +Types:Legendary Creature Vampire Soldier +PT:2/2 +K:Flying +A:AB$ PutCounter | Cost$ Sac<1/Creature.Other;Artifact.Other/another creature or artifact> | CounterType$ P1P1 | CounterNum$ 1 | SorcerySpeed$ True | SubAbility$ DBPump | SpellDescription$ Put a +1/+1 counter on CARDNAME. If the sacrificed permanent was a Treasure, NICKNAME gains lifelink until end of turn. Activate only as a sorcery. +SVar:DBPump:DB$ Pump | Defined$ Self | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | KW$ Lifelink +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | OptionalDecider$ TriggeredCardController | Execute$ TrigImmediateTrig | TriggerDescription$ When NICKNAME dies, you may pay {1}{B/R}. When you do, NICKNAME deals damage equal to its power to each opponent. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 BR | Execute$ TrigDealDamage | SpellDescription$ When you do, NICKNAME deals damage equal to its power to each opponent. +SVar:TrigDealDamage:DB$ DealDamage | Defined$ Opponent | NumDmg$ Y +SVar:X:Sacrificed$Valid Treasure +SVar:Y:Count$CardPower +Oracle:Flying\nSacrifice another creature or artifact: Put a +1/+1 counter on Evereth, Viceroy of Plunder. If the sacrificed permanent was a Treasure, Evereth gains lifelink until end of turn. Activate only as a sorcery.\nWhen Evereth dies, you may pay {1}{B/R}. When you do, Evereth deals damage equal to its power to each opponent. diff --git a/forge-gui/res/cardsfolder/upcoming/exemplar_of_light.txt b/forge-gui/res/cardsfolder/upcoming/exemplar_of_light.txt new file mode 100644 index 00000000000..38c40eab9fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/exemplar_of_light.txt @@ -0,0 +1,12 @@ +Name:Exemplar of Light +ManaCost:2 W W +Types:Creature Angel +PT:3/3 +K:Flying +T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you gain life, put a +1/+1 counter on this creature. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ CounterAddedOnce | CounterType$ P1P1 | ValidSource$ You | ValidCard$ Card.Self | TriggerZones$ Battlefield | ActivationLimit$ 1 | Execute$ TrigDraw | TriggerDescription$ Whenever you put one or more +1/+1 counters on this creature, draw a card. This ability triggers only once each turn. +SVar:TrigDraw:DB$ Draw +DeckHas:Ability$Counters +DeckHints:Ability$LifeGain +Oracle:Flying\nWhenever you gain life, put a +1/+1 counter on this creature.\nWhenever you put one or more +1/+1 counters on this creature, draw a card. This ability triggers only once each turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/faithful_pikemaster.txt b/forge-gui/res/cardsfolder/upcoming/faithful_pikemaster.txt new file mode 100644 index 00000000000..6f921ed5150 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/faithful_pikemaster.txt @@ -0,0 +1,8 @@ +Name:Faithful Pikemaster +ManaCost:3 W +Types:Creature Rhino Monk Soldier +PT:3/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When CARDNAME enters, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom and the rest on top in any order.) +SVar:TrigScry:DB$ Scry | ScryNum$ 2 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ First Strike | Condition$ PlayerTurn | Description$ As long as it's your turn, CARDNAME has first strike. +Oracle:When Faithful Pikemaster enters, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom and the rest on top in any order.)\nAs long as it's your turn, Faithful Pikemaster has first strike. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/fumulus_the_infestation.txt b/forge-gui/res/cardsfolder/upcoming/fumulus_the_infestation.txt new file mode 100644 index 00000000000..85094f7a937 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fumulus_the_infestation.txt @@ -0,0 +1,14 @@ +Name:Fumulus, the Infestation +ManaCost:3 B +Types:Legendary Creature Vampire Insect +PT:2/2 +K:Flying +K:Deathtouch +T:Mode$ Sacrificed | ValidCard$ Creature.nonToken | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player sacrifices a nontoken creature, create a 1/1 black Insect creature token with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_insect_flying | TokenOwner$ You +T:Mode$ Attacks | ValidCard$ Insect.YouCtrl,Leech.YouCtrl,Slug.YouCtrl,Worm.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever an Insect, Leech, Slug, or Worm you control attacks, defending player loses 1 life and you gain 1 life. +SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredDefendingPlayer | LifeAmount$ 1 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +SVar:PlayMain1:TRUE +DeckHints:Type$Insect|Leech|Slug|Worm +Oracle:Flying, deathtouch\nWhenever a player sacrifices a nontoken creature, create a 1/1 black Insect creature token with flying.\nWhenever an Insect, Leech, Slug, or Worm you control attacks, defending player loses 1 life and you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/gilded_scuttler.txt b/forge-gui/res/cardsfolder/upcoming/gilded_scuttler.txt new file mode 100644 index 00000000000..d7ad30139ae --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gilded_scuttler.txt @@ -0,0 +1,9 @@ +Name:Gilded Scuttler +ManaCost:2 U +Types:Artifact Creature Crab +PT:1/3 +S:Mode$ CantBlockBy | ValidAttacker$ Creature.Self | Description$ CARDNAME can't be blocked. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters, tap target creature an opponent controls and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) +SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | SubAbility$ DBCounter +SVar:DBCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ Stun | CounterNum$ 1 +Oracle:Gilded Scuttler can't be blocked.\nWhen Gilded Scuttler enters, tap target creature an opponent controls and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/go_forth.txt b/forge-gui/res/cardsfolder/upcoming/go_forth.txt new file mode 100644 index 00000000000..53841b3e2c9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/go_forth.txt @@ -0,0 +1,7 @@ +Name:Go Forth +ManaCost:G +Types:Instant +A:SP$ Charm | Choices$ DBSearch,DBPump | CharmNum$ 1 +SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | SpellDescription$ Search your library for a basic land card, reveal it, put it into your hand, then shuffle. +SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. +Oracle:Choose one —\n• Search your library for a basic land card, reveal it, put it into your hand, then shuffle.\n• Target creature gets +2/+2 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_surprise.txt b/forge-gui/res/cardsfolder/upcoming/goblin_surprise.txt new file mode 100644 index 00000000000..967e96f6beb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/goblin_surprise.txt @@ -0,0 +1,7 @@ +Name:Goblin Surprise +ManaCost:2 R +Types:Instant +A:SP$ Charm | Choices$ DBPumpAll,DBToken | CharmNum$ 1 +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +2 | SpellDescription$ Creatures you control get +2/+0 until end of turn. +SVar:DBToken:DB$ Token | TokenAmount$ 2 | TokenScript$ r_1_1_goblin | SpellDescription$ Create two 1/1 red Goblin creature tokens. +Oracle:Choose one —\n• Creatures you control get +2/+0 until end of turn.\n• Create two 1/1 red Goblin creature tokens. \ No newline at end of file From 80010d5fb55965a0783f56ab8261fd3c79e4a646 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Tue, 29 Oct 2024 20:25:54 +0000 Subject: [PATCH 2/6] Update anep_vizier_of_hazoret.txt --- forge-gui/res/cardsfolder/upcoming/anep_vizier_of_hazoret.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/anep_vizier_of_hazoret.txt b/forge-gui/res/cardsfolder/upcoming/anep_vizier_of_hazoret.txt index 098cb98fe21..877ee494ab8 100644 --- a/forge-gui/res/cardsfolder/upcoming/anep_vizier_of_hazoret.txt +++ b/forge-gui/res/cardsfolder/upcoming/anep_vizier_of_hazoret.txt @@ -4,8 +4,8 @@ Types:Legendary Creature Jackal Warrior PT:4/2 K:Trample S:Mode$ OptionalAttackCost | ValidCard$ Card.Self | Trigger$ TrigExile | Cost$ Exert<1/CARDNAME> | Description$ You may exert CARDNAME as it attacks. When you do, exile the top two cards of your library. Until the end of your next turn, you may play those cards. (An exerted creature won't untap during your next untap step.) -SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect +SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ When you do, exile the top two cards of your library. Until the end of your next turn, you may play those cards. SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | Duration$ UntilTheEndOfYourNextTurn SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play the exiled cards. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -Oracle:Trample\nYou may exert Anep, Vizier of Hazoret as it attacks. When you do, exile the top two cards of your library. Until the end of your next turn, you may play those cards. (An exerted creature won't untap during your next untap step.) \ No newline at end of file +Oracle:Trample\nYou may exert Anep, Vizier of Hazoret as it attacks. When you do, exile the top two cards of your library. Until the end of your next turn, you may play those cards. (An exerted creature won't untap during your next untap step.) From 86e4f5b500fa8807c96c88badad1a8a4c14160dc Mon Sep 17 00:00:00 2001 From: tool4ever Date: Tue, 29 Oct 2024 20:31:48 +0000 Subject: [PATCH 3/6] Rename emrakul's messenger.txt to emrakuls_messenger.txt --- .../e/{emrakul's messenger.txt => emrakuls_messenger.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename forge-gui/res/cardsfolder/e/{emrakul's messenger.txt => emrakuls_messenger.txt} (100%) diff --git a/forge-gui/res/cardsfolder/e/emrakul's messenger.txt b/forge-gui/res/cardsfolder/e/emrakuls_messenger.txt similarity index 100% rename from forge-gui/res/cardsfolder/e/emrakul's messenger.txt rename to forge-gui/res/cardsfolder/e/emrakuls_messenger.txt From 3569dd37f1f39027c50e371a1fa7b4c4be8a5a56 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Tue, 29 Oct 2024 20:32:25 +0000 Subject: [PATCH 4/6] Rename emergent woodwurm.txt to emergent_woodwurm.txt --- .../e/{emergent woodwurm.txt => emergent_woodwurm.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename forge-gui/res/cardsfolder/e/{emergent woodwurm.txt => emergent_woodwurm.txt} (100%) diff --git a/forge-gui/res/cardsfolder/e/emergent woodwurm.txt b/forge-gui/res/cardsfolder/e/emergent_woodwurm.txt similarity index 100% rename from forge-gui/res/cardsfolder/e/emergent woodwurm.txt rename to forge-gui/res/cardsfolder/e/emergent_woodwurm.txt From d54b48ec1d094f71227698a847b6f988cc0cbe14 Mon Sep 17 00:00:00 2001 From: Fulgur14 <54345051+Fulgur14@users.noreply.github.com> Date: Tue, 29 Oct 2024 21:44:44 +0100 Subject: [PATCH 5/6] Third dozen of FDN/J25 cards (#6463) --- .../java/forge/game/card/CounterEnumType.java | 2 ++ .../java/forge/game/cost/CostTapType.java | 4 ++++ .../res/cardsfolder/a/ace_fearless_rebel.txt | 2 +- .../upcoming/alesha_who_laughs_at_fate.txt | 12 +++++++++++ .../res/cardsfolder/upcoming/bulk_up.txt | 6 ++++++ .../upcoming/fiery_annihilation.txt | 6 ++++++ .../res/cardsfolder/upcoming/fishing_pole.txt | 12 +++++++++++ .../upcoming/gornog_the_red_reaper.txt | 12 +++++++++++ .../cardsfolder/upcoming/grappling_kraken.txt | 10 +++++++++ .../res/cardsfolder/upcoming/guarded_heir.txt | 8 +++++++ .../upcoming/high_fae_trickster.txt | 8 +++++++ .../upcoming/high_society_hunter.txt | 12 +++++++++++ .../cardsfolder/upcoming/hungry_megasloth.txt | 7 +++++++ .../upcoming/hurska_sweet_tooth.txt | 11 ++++++++++ .../upcoming/inspiration_from_beyond.txt | 8 +++++++ forge-gui/res/tokenscripts/w_3_3_knight.txt | 6 ++++++ .../java/forge/player/HumanCostDecision.java | 21 +++++++++++++------ 17 files changed, 140 insertions(+), 7 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/alesha_who_laughs_at_fate.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/bulk_up.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/fiery_annihilation.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/fishing_pole.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/gornog_the_red_reaper.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/grappling_kraken.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/guarded_heir.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/high_fae_trickster.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/high_society_hunter.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/hungry_megasloth.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/hurska_sweet_tooth.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/inspiration_from_beyond.txt create mode 100644 forge-gui/res/tokenscripts/w_3_3_knight.txt 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 1a8645dedad..b56b8352582 100644 --- a/forge-game/src/main/java/forge/game/card/CounterEnumType.java +++ b/forge-game/src/main/java/forge/game/card/CounterEnumType.java @@ -49,6 +49,8 @@ public enum CounterEnumType { AWAKENING("AWAKE", 0, 231, 79), + BAIT("BAIT", 120, 100, 60), + BLAZE("BLAZE", 255, 124, 82), BLESSING("BLESS", 251, 0, 94), diff --git a/forge-game/src/main/java/forge/game/cost/CostTapType.java b/forge-game/src/main/java/forge/game/cost/CostTapType.java index 509f402adf0..4c8cd61f831 100644 --- a/forge-game/src/main/java/forge/game/cost/CostTapType.java +++ b/forge-game/src/main/java/forge/game/cost/CostTapType.java @@ -148,6 +148,10 @@ public class CostTapType extends CostPartWithList { String type = this.getType(); boolean sameType = false; + if (type.equals("OriginalHost")) { + return ability.getOriginalHost().canTap(); + } + if (type.contains(".sharesCreatureTypeWith")) { sameType = true; type = TextUtil.fastReplace(type, ".sharesCreatureTypeWith", ""); diff --git a/forge-gui/res/cardsfolder/a/ace_fearless_rebel.txt b/forge-gui/res/cardsfolder/a/ace_fearless_rebel.txt index 0e578ce535a..bb9d38e48dd 100644 --- a/forge-gui/res/cardsfolder/a/ace_fearless_rebel.txt +++ b/forge-gui/res/cardsfolder/a/ace_fearless_rebel.txt @@ -2,7 +2,7 @@ Name:Ace, Fearless Rebel ManaCost:3 G Types:Legendary Creature Human Rebel PT:2/2 -T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | OptionalDecider$ You | TriggerDescription$ Nitro-9 — Whenever CARDNAME attacks, you may sacrifice an artifact. When you do, put a +1/+1 counter on CARDNAME, then it fights up to one target creature defending player controls. +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ Nitro-9 — Whenever CARDNAME attacks, you may sacrifice an artifact. When you do, put a +1/+1 counter on CARDNAME, then it fights up to one target creature defending player controls. SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ Sac<1/Artifact> | Execute$ TrigPutCounter | TriggerDescription$ When you do, put a +1/+1 counter on CARDNAME, then it fights up to one target creature defending player controls. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBFight SVar:DBFight:DB$ Fight | Defined$ Self | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.ControlledBy Spawner>TriggeredDefendingPlayer | TgtPrompt$ Select up to one target creature defending player controls diff --git a/forge-gui/res/cardsfolder/upcoming/alesha_who_laughs_at_fate.txt b/forge-gui/res/cardsfolder/upcoming/alesha_who_laughs_at_fate.txt new file mode 100644 index 00000000000..2e817fec6dc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/alesha_who_laughs_at_fate.txt @@ -0,0 +1,12 @@ +Name:Alesha, Who Laughs at Fate +ManaCost:1 B R +Types:Legendary Creature Human Warrior +PT:2/2 +K:First Strike +T:Mode$ Attacks | ValidCard$ Creature.Self | Execute$ TrigPutCounter | TriggerDescription$ Whenever NICKNAME attacks, put a +1/+1 counter on it. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ RaidTest | Execute$ TrigChangeZone | TriggerDescription$ Raid — At the beginning of your end step, if you attacked this turn, return target creature card with mana value less than or equal to NICKNAME's power from your graveyard to the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn+cmcLEX | TgtPrompt$ Select target creature card with mana value less than or equal to Alesha's power +SVar:RaidTest:Count$AttackersDeclared +SVar:X:Count$CardPower +Oracle:First strike\nWhenever Alesha attacks, put a +1/+1 counter on it.\nRaid — At the beginning of your end step, if you attacked this turn, return target creature card with mana value less than or equal to Alesha's power from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/bulk_up.txt b/forge-gui/res/cardsfolder/upcoming/bulk_up.txt new file mode 100644 index 00000000000..fef34370f83 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bulk_up.txt @@ -0,0 +1,6 @@ +Name:Bulk Up +ManaCost:1 R +Types:Instant +A:SP$ Pump | ValidTgts$ Creature | NumAtt$ Double | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ Double target creature's power until end of turn. +K:Flashback:4 R R +Oracle:Double target creature's power until end of turn.\nFlashback {4}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/fiery_annihilation.txt b/forge-gui/res/cardsfolder/upcoming/fiery_annihilation.txt new file mode 100644 index 00000000000..ddec1b15b7f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fiery_annihilation.txt @@ -0,0 +1,6 @@ +Name:Fiery Annihilation +ManaCost:2 R +Types:Instant +A:SP$ DealDamage | NumDmg$ 5 | ValidTgts$ Creature | TgtPrompt$ Select target creature | ReplaceDyingDefined$ Targeted | SubAbility$ DBChangeZone | SpellDescription$ CARDNAME deals 5 damage to target creature. Exile up to one target Equipment attached to that creature. If that creature would die this turn, exile it instead. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Equipment.AttachedTo ParentTarget | TargetMin$ 0 | TargetMax$ 1 +Oracle:Fiery Annihilation deals 5 damage to target creature. Exile up to one target Equipment attached to that creature. If that creature would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/upcoming/fishing_pole.txt b/forge-gui/res/cardsfolder/upcoming/fishing_pole.txt new file mode 100644 index 00000000000..4187aed2881 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fishing_pole.txt @@ -0,0 +1,12 @@ +Name:Fishing Pole +ManaCost:1 +Types:Artifact Equipment +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ FishingPoleBaiting | Description$ Equipped creature has "{1}, {T}, Tap CARDNAME: Put a bait counter on CARDNAME." +SVar:FishingPoleBaiting:AB$ PutCounter | Cost$ 1 T tapXType<1/OriginalHost/Fishing Pole> | CounterType$ BAIT | CounterNum$ 1 | Defined$ OriginalHost | SpellDescription$ Put a bait counter on ORIGINALHOST. +T:Mode$ Untaps | ValidCard$ Creature.EquippedBy | TriggerZones$ Battlefield | Execute$ TrigRemoveCounter | TriggerDescription$ Whenever equipped creature becomes untapped, remove a bait counter from this Equipment. If you do, create a 1/1 blue Fish creature token. +SVar:TrigRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ BAIT | CounterNum$ 1 | RememberRemoved$ True | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenAmount$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | TokenScript$ u_1_1_fish | TokenOwner$ You | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$RememberedSize +K:Equip:2 +Oracle:Equipped creature has "{1}, {T}, Tap Fishing Pole: Put a bait counter on Fishing Pole."\nWhenever equipped creature becomes untapped, remove a bait counter from this Equipment. If you do, create a 1/1 blue Fish creature token.\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/upcoming/gornog_the_red_reaper.txt b/forge-gui/res/cardsfolder/upcoming/gornog_the_red_reaper.txt new file mode 100644 index 00000000000..d1c58504ff6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gornog_the_red_reaper.txt @@ -0,0 +1,12 @@ +Name:Gornog, the Red Reaper +ManaCost:2 R +Types:Legendary Creature Minotaur Warrior +PT:2/3 +K:Haste +S:Mode$ CantBlockBy | ValidAttacker$ Creature.Warrior | ValidBlocker$ Creature.Coward | Description$ Cowards can't block Warriors. +T:Mode$ AttackersDeclaredOneTarget | AttackedTarget$ Player | ValidAttackers$ Creature.Warrior+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigAnimate | TriggerDescription$ Whenever one or more Warriors you control attack a player, target creature that player controls becomes a Coward. +SVar:TrigAnimate:DB$ Animate | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredAttackedTarget | TgtPrompt$ Select target creature that player controls | Types$ Coward | RemoveCreatureTypes$ True | Duration$ Permanent +S:Mode$ Continuous | Affected$ Creature.Warrior+attacking+YouCtrl | AddPower$ X | Description$ Attacking Warriors you control get +X/+0, where X is the number of Cowards your opponents control. +SVar:X:Count$Valid Coward.OppCtrl +SVar:PlayMain1:TRUE +Oracle:Haste\nCowards can't block Warriors.\nWhenever one or more Warriors you control attack a player, target creature that player controls becomes a Coward.\nAttacking Warriors you control get +X/+0, where X is the number of Cowards your opponents control. diff --git a/forge-gui/res/cardsfolder/upcoming/grappling_kraken.txt b/forge-gui/res/cardsfolder/upcoming/grappling_kraken.txt new file mode 100644 index 00000000000..0eeb8426e01 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/grappling_kraken.txt @@ -0,0 +1,10 @@ +Name:Grappling Kraken +ManaCost:4 U U +Types:Creature Kraken +PT:5/6 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigTap | TriggerDescription$ Landfall — Whenever a land you control enters, tap target creature an opponent controls and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) +SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | SubAbility$ DBCounter +SVar:DBCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ Stun | CounterNum$ 1 +DeckHas:Ability$Counters +SVar:BuffedBy:Land +Oracle:Landfall — Whenever a land you control enters, tap target creature an opponent controls and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/guarded_heir.txt b/forge-gui/res/cardsfolder/upcoming/guarded_heir.txt new file mode 100644 index 00000000000..cb4e489059c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/guarded_heir.txt @@ -0,0 +1,8 @@ +Name:Guarded Heir +ManaCost:5 W +Types:Creature Human Noble +PT:1/1 +K:Lifelink +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When this creature enters, create two 3/3 white Knight creature tokens. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ w_3_3_knight | TokenOwner$ You +Oracle:Lifelink (Damage dealt by this creature also causes you to gain that much life.)\nWhen this creature enters, create two 3/3 white Knight creature tokens. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/high_fae_trickster.txt b/forge-gui/res/cardsfolder/upcoming/high_fae_trickster.txt new file mode 100644 index 00000000000..2a25d913acc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/high_fae_trickster.txt @@ -0,0 +1,8 @@ +Name:High Fae Trickster +ManaCost:3 U +Types:Creature Faerie Wizard +PT:4/2 +K:Flash +K:Flying +S:Mode$ CastWithFlash | ValidCard$ Card | ValidSA$ Spell | Caster$ You | Description$ You may cast spells as though they had flash. +Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFlying\nYou may cast spells as though they had flash. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/high_society_hunter.txt b/forge-gui/res/cardsfolder/upcoming/high_society_hunter.txt new file mode 100644 index 00000000000..c5d150dd8e1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/high_society_hunter.txt @@ -0,0 +1,12 @@ +Name:High-Society Hunter +ManaCost:3 B B +Types:Creature Vampire Noble +PT:5/3 +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever this creature attacks, you may sacrifice another creature. If you do, put a +1/+1 counter on this creature. +SVar:TrigPutCounter:AB$ PutCounter | Cost$ Sac<1/Creature.Other/another creature> | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ ChangesZone | ValidCard$ Creature.nonToken+Other | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever another nontoken creature dies, draw a card. +SVar:TrigDraw:DB$ Draw +SVar:HasAttackEffect:TRUE +DeckHas:Ability$Counters|Sacrifice +Oracle:Flying\nWhenever this creature attacks, you may sacrifice another creature. If you do, put a +1/+1 counter on this creature.\nWhenever another nontoken creature dies, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/hungry_megasloth.txt b/forge-gui/res/cardsfolder/upcoming/hungry_megasloth.txt new file mode 100644 index 00000000000..7243d4df99b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hungry_megasloth.txt @@ -0,0 +1,7 @@ +Name:Hungry Megasloth +ManaCost:2 G +Types:Creature Sloth Beast +PT:3/3 +K:Reach +A:AB$ PutCounter | Cost$ 2 T | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME. +Oracle:Reach (This creature can block creatures with flying.)\n{2}, {T}: Put a +1/+1 counter on Hungry Megasloth. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/hurska_sweet_tooth.txt b/forge-gui/res/cardsfolder/upcoming/hurska_sweet_tooth.txt new file mode 100644 index 00000000000..a9dfe015692 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hurska_sweet_tooth.txt @@ -0,0 +1,11 @@ +Name:Hurska Sweet-Tooth +ManaCost:2 G +Types:Legendary Creature Bear +PT:3/3 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +SVar:TrigToken:DB$ Token | TokenScript$ c_a_food_sac +T:Mode$ LifeGained | ValidPlayer$ You | Execute$ TrigImmediateTrig | TriggerZones$ Battlefield | TriggerDescription$ Whenever you gain life, you may pay {G/W}. When you do, target creature gets +X/+X until end of turn, where X is the amount of life you gained. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ GW | Execute$ TrigPump | TriggerDescription$ When you do, target creature gets +X/+X until end of turn, where X is the amount of life you gained. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | NumAtt$ Spawner>TriggerCount$LifeAmount | NumDef$ Spawner>TriggerCount$LifeAmount +DeckHas:Ability$Sacrifice|Token & Type$Food|Artifact +Oracle:Whenever Hurska Sweet-Tooth attacks, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.")\nWhenever you gain life, you may pay {G/W}. When you do, target creature gets +X/+X until end of turn, where X is the amount of life you gained. diff --git a/forge-gui/res/cardsfolder/upcoming/inspiration_from_beyond.txt b/forge-gui/res/cardsfolder/upcoming/inspiration_from_beyond.txt new file mode 100644 index 00000000000..9c78a83e484 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/inspiration_from_beyond.txt @@ -0,0 +1,8 @@ +Name:Inspiration from Beyond +ManaCost:2 U +Types:Sorcery +A:SP$ Mill | NumCards$ 3 | Defined$ You | SubAbility$ DBChangeZone | SpellDescription$ Mill three cards, then return an instant or sorcery card from your graveyard to your hand. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Mandatory$ True | ChangeType$ Instant.YouOwn,Sorcery.YouOwn | ChangeNum$ 1 | Hidden$ True +K:Flashback:5 U U +DeckHas:Ability$Graveyard +Oracle:Mill three cards, then return an instant or sorcery card from your graveyard to your hand.\nFlashback {5}{U}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) \ No newline at end of file diff --git a/forge-gui/res/tokenscripts/w_3_3_knight.txt b/forge-gui/res/tokenscripts/w_3_3_knight.txt new file mode 100644 index 00000000000..9b9e5713138 --- /dev/null +++ b/forge-gui/res/tokenscripts/w_3_3_knight.txt @@ -0,0 +1,6 @@ +Name:Knight Token +ManaCost:no cost +Colors:white +Types:Creature Knight +PT:3/3 +Oracle: \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index b64572b0c43..73402c00b5a 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -1141,16 +1141,18 @@ public class HumanCostDecision extends CostDecisionMakerBase { String type = cost.getType(); if (cost.payCostFromSource()) { - if (source.getController() == ability.getActivatingPlayer() && source.canBeSacrificedBy(ability, isEffect())) { - return mandatory || confirmAction(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null; + if (source.getController() == ability.getActivatingPlayer() && source.canBeSacrificedBy(ability, isEffect()) && + (mandatory || confirmAction(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(source.getName()))))) { + return PaymentDecision.card(source); } return null; } if (type.equals("OriginalHost")) { Card host = ability.getOriginalHost(); - if (host.getController() == ability.getActivatingPlayer() && host.canBeSacrificedBy(ability, isEffect())) { - return confirmAction(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(host.getName()))) ? PaymentDecision.card(host) : null; + if (host.getController() == ability.getActivatingPlayer() && host.canBeSacrificedBy(ability, isEffect()) && + confirmAction(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(host.getName())))) { + return PaymentDecision.card(host); } return null; } @@ -1218,6 +1220,14 @@ public class HumanCostDecision extends CostDecisionMakerBase { String type = cost.getType(); final String amount = cost.getAmount(); + if (type.equals("OriginalHost")) { + Card host = ability.getOriginalHost(); + if (host.canTap()) { + return PaymentDecision.card(host); + } + return null; + } + boolean sameType = false; if (type.contains(".sharesCreatureTypeWith")) { sameType = true; @@ -1232,8 +1242,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { type = TextUtil.fastReplace(type, TextUtil.concatNoSpace("+withTotalPowerGE", totalP), ""); } - CardCollection typeList = CardLists.getValidCards(player.getCardsIn(ZoneType.Battlefield), type.split(";"), player, - source, ability); + CardCollection typeList = CardLists.getValidCards(player.getCardsIn(ZoneType.Battlefield), type.split(";"), player, source, ability); typeList = CardLists.filter(typeList, ability.isCrew() ? Presets.CAN_CREW : Presets.CAN_TAP); Integer c = null; From e49f0baa12eb82cee14998b75eea82aeb3c09e2e Mon Sep 17 00:00:00 2001 From: tool4ever Date: Tue, 29 Oct 2024 21:45:59 +0100 Subject: [PATCH 6/6] Fix AbilityResolves timing (#6464) --- forge-game/src/main/java/forge/game/zone/MagicStack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index 22b1acf4133..7dd7c25734e 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -607,10 +607,10 @@ public class MagicStack /* extends MyObservable */ implements Iterable runParams = AbilityKey.mapFromCard(source); runParams.put(AbilityKey.SpellAbility, sa); game.getTriggerHandler().runTrigger(TriggerType.AbilityResolves, runParams, false); - AbilityUtils.resolve(sa); } else { sa.resolve(); // do creatures ETB from here?