From fb4f36bb0950635c2c101e611b4597d5d7f91d58 Mon Sep 17 00:00:00 2001 From: Renato Filipe Vidal Santos <45150760+dracontes@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:24:06 +0100 Subject: [PATCH 1/3] Fixing Rootwater Matriarch (#5909) --- .../src/main/java/forge/ai/ability/ControlGainAi.java | 9 +++------ forge-gui/res/cardsfolder/r/rootwater_matriarch.txt | 3 +-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java b/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java index 0cfe07f9201..7f7c70bd8fb 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ControlGainAi.java @@ -23,6 +23,7 @@ import java.util.Map; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; import forge.ai.ComputerUtilCombat; import forge.ai.SpecialCardAi; @@ -123,12 +124,8 @@ public class ControlGainAi extends SpellAbilityAi { CardCollection list = opponents.getCardsIn(ZoneType.Battlefield); - list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getHostCard(), sa); - - if (list.isEmpty()) { - // no valid targets, so we need to bail - return false; - } + // Filter AI-specific targets if provided + list = ComputerUtil.filterAITgts(sa, ai, list, false); // AI won't try to grab cards that are filtered out of AI decks on purpose list = CardLists.filter(list, c -> { diff --git a/forge-gui/res/cardsfolder/r/rootwater_matriarch.txt b/forge-gui/res/cardsfolder/r/rootwater_matriarch.txt index dff6b9c36b3..0c1c04185a6 100644 --- a/forge-gui/res/cardsfolder/r/rootwater_matriarch.txt +++ b/forge-gui/res/cardsfolder/r/rootwater_matriarch.txt @@ -2,9 +2,8 @@ Name:Rootwater Matriarch ManaCost:2 U U Types:Creature Merfolk PT:2/3 -A:AB$ GainControl | Cost$ T | ValidTgts$ Creature | AITgts$ Creature.Enchanted | LoseControl$ StaticCommandCheck | StaticCommandCheckSVar$ X | StaticCommandSVarCompare$ EQ0 | ConditionCheckSVar$ Y | ContionSVarCompare$ GE1 | SpellDescription$ Gain control of target creature for as long as that creature is enchanted. +A:AB$ GainControl | Cost$ T | ValidTgts$ Creature | AITgts$ Creature.enchanted | AITgtsStrict$ True | LoseControl$ StaticCommandCheck | StaticCommandCheckSVar$ X | StaticCommandSVarCompare$ EQ0 | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | SpellDescription$ Gain control of target creature for as long as that creature is enchanted. # The hostcard of SVar X is the controlled card SVar:X:Count$Valid Card.Self+enchanted SVar:Y:Targeted$Valid Card.enchanted -AI:RemoveDeck:Random Oracle:{T}: Gain control of target creature for as long as that creature is enchanted. From 61aaa8a7150122bd5d7e9a46a494978339fbcedd Mon Sep 17 00:00:00 2001 From: Renato Filipe Vidal Santos <45150760+dracontes@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:29:44 +0100 Subject: [PATCH 2/3] Update ulamog_the_defiler.txt (#5915) --- forge-gui/res/cardsfolder/u/ulamog_the_defiler.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/u/ulamog_the_defiler.txt b/forge-gui/res/cardsfolder/u/ulamog_the_defiler.txt index 28a490ce2ab..5e9d72df1f3 100644 --- a/forge-gui/res/cardsfolder/u/ulamog_the_defiler.txt +++ b/forge-gui/res/cardsfolder/u/ulamog_the_defiler.txt @@ -2,7 +2,7 @@ Name:Ulamog, the Defiler ManaCost:10 Types:Legendary Creature Eldrazi PT:7/7 -K:Ward:Sac<2/Permanent/permanents> +K:Ward:Sac<2/Permanent> T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When you cast this spell, target opponent exiles half their library, rounded up. SVar:TrigExile:DB$ Dig | ValidTgts$ Opponent | DestinationZone$ Exile | DigNum$ X | ChangeNum$ All SVar:X:TargetedPlayer$CardsInLibrary/HalfUp From 35b898cc5a2aab01db50467b0c413c6bdc79d85b Mon Sep 17 00:00:00 2001 From: tool4ever Date: Tue, 13 Aug 2024 08:30:14 +0200 Subject: [PATCH 3/3] Script fixes (#5912) --- forge-gui/res/cardsfolder/b/breena_the_demagogue.txt | 4 ++-- forge-gui/res/cardsfolder/c/cloudform.txt | 4 ++-- forge-gui/res/cardsfolder/d/diabolic_servitude.txt | 2 +- forge-gui/res/cardsfolder/d/drag_the_canal.txt | 6 +++--- forge-gui/res/cardsfolder/g/giant_oyster.txt | 2 +- forge-gui/res/cardsfolder/l/lightform.txt | 4 ++-- forge-gui/res/cardsfolder/n/necromancy.txt | 2 +- forge-gui/res/cardsfolder/r/rageform.txt | 4 ++-- forge-gui/res/cardsfolder/s/sakashimas_will.txt | 2 +- forge-gui/res/cardsfolder/s/shirei_shizos_caretaker.txt | 2 +- forge-gui/res/cardsfolder/s/stalking_yeti.txt | 4 ++-- forge-gui/res/cardsfolder/upcoming/kindlespark_duo.txt | 1 - forge-gui/res/cardsfolder/upcoming/portent_of_calamity.txt | 2 +- forge-gui/res/cardsfolder/upcoming/reptilian_recruiter.txt | 2 +- .../res/cardsfolder/upcoming/wick_the_whorled_mind.txt | 2 +- 15 files changed, 21 insertions(+), 22 deletions(-) diff --git a/forge-gui/res/cardsfolder/b/breena_the_demagogue.txt b/forge-gui/res/cardsfolder/b/breena_the_demagogue.txt index e976c73c8b6..aef6c4cbe75 100644 --- a/forge-gui/res/cardsfolder/b/breena_the_demagogue.txt +++ b/forge-gui/res/cardsfolder/b/breena_the_demagogue.txt @@ -4,8 +4,8 @@ Types:Legendary Creature Bird Warlock PT:1/3 K:Flying T:Mode$ AttackersDeclaredOneTarget | AttackedTarget$ Opponent.lifeGTX | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player attacks one of your opponents, if that opponent has more life than another of your opponents, that attacking player draws a card and you put two +1/+1 counters on a creature you control. -SVar:TrigDraw:DB$ Draw | Defined$ AttackingPlayer | SubAbility$ DBPutCounter | CheckSVar$ PlayerCountDefinedTriggeredAttackedTarget$HasPropertylifeGTX -SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 2 | CheckSVar$ PlayerCountDefinedTriggeredAttackedTarget$HasPropertylifeGTX +SVar:TrigDraw:DB$ Draw | Defined$ AttackingPlayer | SubAbility$ DBPutCounter | ConditionCheckSVar$ PlayerCountDefinedTriggeredAttackedTarget$HasPropertylifeGTX +SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 2 | ConditionCheckSVar$ PlayerCountDefinedTriggeredAttackedTarget$HasPropertylifeGTX SVar:X:PlayerCountOpponents$LowestLifeTotal DeckHas:Ability$Counters Oracle:Flying\nWhenever a player attacks one of your opponents, if that opponent has more life than another of your opponents, that attacking player draws a card and you put two +1/+1 counters on a creature you control. diff --git a/forge-gui/res/cardsfolder/c/cloudform.txt b/forge-gui/res/cardsfolder/c/cloudform.txt index 1115d00c202..7f14c874141 100644 --- a/forge-gui/res/cardsfolder/c/cloudform.txt +++ b/forge-gui/res/cardsfolder/c/cloudform.txt @@ -3,8 +3,8 @@ ManaCost:1 U U Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigManifest | TriggerDescription$ When CARDNAME enters, it becomes an Aura with enchant creature. Manifest the top card of your library and attach CARDNAME to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. You may turn it face up at any time for its mana cost if it's a creature card.) SVar:TrigManifest:DB$ Manifest | RememberManifested$ True | SubAbility$ Aurify -SVar:Aurify:DB$ Animate | IsPresent$ Card.Self | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature | Duration$ Permanent | SubAbility$ RageformAttach +SVar:Aurify:DB$ Animate | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature | Duration$ Permanent | SubAbility$ RageformAttach SVar:NewAttach:SP$ Attach | Cost$ 1 U U | ValidTgts$ Creature | AILogic$ Pump -SVar:RageformAttach:DB$ Attach | Defined$ Remembered | IsPresent$ Card.Self +SVar:RageformAttach:DB$ Attach | Defined$ Remembered S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Flying & Hexproof | Description$ Enchanted creature has flying and hexproof. Oracle:When Cloudform enters, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Cloudform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)\nEnchanted creature has flying and hexproof. diff --git a/forge-gui/res/cardsfolder/d/diabolic_servitude.txt b/forge-gui/res/cardsfolder/d/diabolic_servitude.txt index c38a0fc5616..e7222ef8a95 100644 --- a/forge-gui/res/cardsfolder/d/diabolic_servitude.txt +++ b/forge-gui/res/cardsfolder/d/diabolic_servitude.txt @@ -8,7 +8,7 @@ SVar:TrigExileAndBounce:DB$ ChangeZone | Defined$ Remembered | Origin$ Graveyard SVar:DBCleanupAndBounce:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBBounceMe SVar:DBBounceMe:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Hand | Hidden$ True T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Any | Execute$ TrigExileCreature | TriggerDescription$ When CARDNAME leaves the battlefield, exile the creature put onto the battlefield with CARDNAME. -SVar:TrigExileCreature:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Destination$ Exile | IsPresent$ Card.IsRemembered | SubAbility$ DBCleanup +SVar:TrigExileCreature:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True T:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Battlefield | Destination$ Exile | Execute$ DBCleanup | Static$ True | Secondary$ True | TriggerDescription$ Forget remembered card if it goes into Exile. T:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Battlefield | Destination$ Hand | Execute$ DBCleanup | Static$ True | Secondary$ True | TriggerDescription$ Forget remembered card if it goes into Hand. diff --git a/forge-gui/res/cardsfolder/d/drag_the_canal.txt b/forge-gui/res/cardsfolder/d/drag_the_canal.txt index a91a40ca010..fc176044867 100644 --- a/forge-gui/res/cardsfolder/d/drag_the_canal.txt +++ b/forge-gui/res/cardsfolder/d/drag_the_canal.txt @@ -2,9 +2,9 @@ Name:Drag the Canal ManaCost:U B Types:Instant A:SP$ Token | TokenAmount$ 1 | TokenScript$ wu_2_2_detective | TokenOwner$ You | SubAbility$ DBGainLife | SpellDescription$ Create a 2/2 white and blue Detective creature token. -SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 | CheckSVar$ X | SVarCompare$ GE1 | SubAbility$ DBSurveil | SpellDescription$ If a creature died this turn, you gain 2 life, surveil 2, then investigate. (Create a Clue token. It's an artifact with "{2}, Sacrifice this artifact: Draw a card.") -SVar:DBSurveil:DB$ Surveil | Amount$ 2 | CheckSVar$ X | SVarCompare$ GE1 | SubAbility$ DBInvestigate -SVar:DBInvestigate:DB$ Investigate | CheckSVar$ X | SVarCompare$ GE1 +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 | ConditionCheckSVar$ X | SubAbility$ DBSurveil | SpellDescription$ If a creature died this turn, you gain 2 life, surveil 2, then investigate. (Create a Clue token. It's an artifact with "{2}, Sacrifice this artifact: Draw a card.") +SVar:DBSurveil:DB$ Surveil | Amount$ 2 | ConditionCheckSVar$ X | SubAbility$ DBInvestigate +SVar:DBInvestigate:DB$ Investigate | ConditionCheckSVar$ X SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature DeckHas:Ability$Investigate|Token & Type$Artifact|Clue|Detective Oracle:Create a 2/2 white and blue Detective creature token. If a creature died this turn, you gain 2 life, surveil 2, then investigate. (Create a Clue token. It's an artifact with "{2}, Sacrifice this artifact: Draw a card.") diff --git a/forge-gui/res/cardsfolder/g/giant_oyster.txt b/forge-gui/res/cardsfolder/g/giant_oyster.txt index f48ca2fbb61..5f9be62e8c3 100644 --- a/forge-gui/res/cardsfolder/g/giant_oyster.txt +++ b/forge-gui/res/cardsfolder/g/giant_oyster.txt @@ -10,7 +10,7 @@ S:Mode$ Continuous | Affected$ Creature.IsRemembered | AddHiddenKeyword$ CARDNAM T:Mode$ ChangesZone | TriggerZones$ Battlefield | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsRemembered | Execute$ ClearRemembered | Static$ True T:Mode$ Untaps | TriggerZones$ Battlefield | ValidCard$ Card.Self | Execute$ RemoveCounters | TriggerDescription$ When CARDNAME leaves the battlefield or becomes untapped, remove all -1/-1 counters from the creature. T:Mode$ ChangesZone | TriggerZones$ Battlefield | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ RemoveCounters | Secondary$ True | TriggerDescription$ When CARDNAME leaves the battlefield or becomes untapped, remove all -1/-1 counters from the creature. -SVar:RemoveCounters:DB$ RemoveCounter | Defined$ Creature.IsRemembered | CounterType$ M1M1 | CounterNum$ All | SubAbility$ ClearRemembered +SVar:RemoveCounters:DB$ RemoveCounter | Defined$ Remembered | CounterType$ M1M1 | CounterNum$ All | SubAbility$ ClearRemembered SVar:ClearRemembered:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All Oracle:You may choose not to untap Giant Oyster during your untap step.\n{T}: For as long as Giant Oyster remains tapped, target tapped creature doesn't untap during its controller's untap step, and at the beginning of each of your draw steps, put a -1/-1 counter on that creature. When Giant Oyster leaves the battlefield or becomes untapped, remove all -1/-1 counters from the creature. diff --git a/forge-gui/res/cardsfolder/l/lightform.txt b/forge-gui/res/cardsfolder/l/lightform.txt index 948783f2363..5009731e061 100644 --- a/forge-gui/res/cardsfolder/l/lightform.txt +++ b/forge-gui/res/cardsfolder/l/lightform.txt @@ -3,8 +3,8 @@ ManaCost:1 W W Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigManifest | TriggerDescription$ When CARDNAME enters, it becomes an Aura with enchant creature. Manifest the top card of your library and attach CARDNAME to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. You may turn it face up at any time for its mana cost if it's a creature card.) SVar:TrigManifest:DB$ Manifest | RememberManifested$ True | SubAbility$ Aurify -SVar:Aurify:DB$ Animate | IsPresent$ Card.Self | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature | Duration$ Permanent | SubAbility$ LightformAttach +SVar:Aurify:DB$ Animate | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature | Duration$ Permanent | SubAbility$ LightformAttach SVar:NewAttach:SP$ Attach | Cost$ 1 W W | ValidTgts$ Creature | AILogic$ Pump -SVar:LightformAttach:DB$ Attach | Defined$ Remembered | IsPresent$ Card.Self +SVar:LightformAttach:DB$ Attach | Defined$ Remembered S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Lifelink & Flying | Description$ Enchanted creature has flying and lifelink. Oracle:When Lightform enters, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Lightform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)\nEnchanted creature has flying and lifelink. diff --git a/forge-gui/res/cardsfolder/n/necromancy.txt b/forge-gui/res/cardsfolder/n/necromancy.txt index 2ed5e7647f0..9513d7a9957 100644 --- a/forge-gui/res/cardsfolder/n/necromancy.txt +++ b/forge-gui/res/cardsfolder/n/necromancy.txt @@ -4,7 +4,7 @@ Types:Enchantment K:MayFlashSac T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ RaiseDead | TriggerDescription$ When CARDNAME enters, if it's on the battlefield, it becomes an Aura with "enchant creature put onto the battlefield with CARDNAME." Put target creature card from a graveyard onto the battlefield under your control and attach CARDNAME to it. When CARDNAME leaves the battlefield, that creature's controller sacrifices it. When CARDNAME leaves the battlefield, that creature's controller sacrifices it. SVar:RaiseDead:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | RememberChanged$ True | TgtPrompt$ Select target creature card in a graveyard | ValidTgts$ Creature | ChangeNum$ 1 | SubAbility$ Aurify -SVar:Aurify:DB$ Animate | IsPresent$ Card.Self | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature put onto the battlefield with CARDNAME | Duration$ Permanent | SubAbility$ NecromAttach +SVar:Aurify:DB$ Animate | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature put onto the battlefield with CARDNAME | Duration$ Permanent | SubAbility$ NecromAttach SVar:NewAttach:SP$ Attach | Cost$ 2 B | ValidTgts$ Creature.IsRemembered | AILogic$ Pump SVar:DBDelay:DB$ DelayedTrigger | Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Execute$ TrigSacrifice | RememberObjects$ RememberedLKI | TriggerDescription$ When CARDNAME leaves the battlefield, that creature's controller sacrifices it. SVar:NecromAttach:DB$ Attach | Defined$ Remembered | SubAbility$ DBDelay diff --git a/forge-gui/res/cardsfolder/r/rageform.txt b/forge-gui/res/cardsfolder/r/rageform.txt index 1997cdd7764..b941662de19 100644 --- a/forge-gui/res/cardsfolder/r/rageform.txt +++ b/forge-gui/res/cardsfolder/r/rageform.txt @@ -3,8 +3,8 @@ ManaCost:2 R R Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigManifest | TriggerDescription$ When CARDNAME enters, it becomes an Aura with enchant creature. Manifest the top card of your library and attach CARDNAME to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. You may turn it face up at any time for its mana cost if it's a creature card.) SVar:TrigManifest:DB$ Manifest | RememberManifested$ True | SubAbility$ Aurify -SVar:Aurify:DB$ Animate | IsPresent$ Card.Self | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature | Duration$ Permanent | SubAbility$ RageformAttach +SVar:Aurify:DB$ Animate | Types$ Aura | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature | Duration$ Permanent | SubAbility$ RageformAttach SVar:NewAttach:SP$ Attach | Cost$ 2 R R | ValidTgts$ Creature | AILogic$ Pump -SVar:RageformAttach:DB$ Attach | Defined$ Remembered | IsPresent$ Card.Self +SVar:RageformAttach:DB$ Attach | Defined$ Remembered S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Double Strike | Description$ Enchanted creature has double strike. Oracle:When Rageform enters, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Rageform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)\nEnchanted creature has double strike. (It deals both first-strike and regular combat damage.) diff --git a/forge-gui/res/cardsfolder/s/sakashimas_will.txt b/forge-gui/res/cardsfolder/s/sakashimas_will.txt index 2762b497703..0b05484e59f 100644 --- a/forge-gui/res/cardsfolder/s/sakashimas_will.txt +++ b/forge-gui/res/cardsfolder/s/sakashimas_will.txt @@ -4,7 +4,7 @@ Types:Sorcery A:SP$ Charm | MinCharmNum$ 1 | CharmNum$ Count$Compare Y GE1.2.1 | Choices$ DBControl,DBClone | AdditionalDescription$ . If you control a commander as you cast this spell, you may choose both. SVar:DBControl:DB$ ChooseCard | ValidTgts$ Opponent | Mandatory$ True | Choices$ Creature.TargetedPlayerCtrl | ChoiceTitle$ Choose a creature you control | SubAbility$ DBGainControl | AILogic$ WorstCard | SpellDescription$ Target opponent chooses a creature they control. You gain control of it. SVar:DBGainControl:DB$ GainControl | Defined$ ChosenCard | NewController$ You -SVar:DBClone:DB$ Clone | Choices$ Creature.YouCtrl | ChoiceTitle$ Choose a creature you control | ExcludeChosen$ True | CloneTarget$ Valid Creature.YouCtrl | Duration$ UntilEndOfTurn +SVar:DBClone:DB$ Clone | Choices$ Creature.YouCtrl | ChoiceTitle$ Choose a creature you control | ExcludeChosen$ True | CloneTarget$ Valid Creature.YouCtrl | Duration$ UntilEndOfTurn | SpellDescription$ Choose a creature you control. Each other creature you control becomes a copy of that creature until end of turn. SVar:Y:Count$Valid Card.IsCommander+YouCtrl SVar:PlayMain1:TRUE Oracle:Choose one. If you control a commander as you cast this spell, you may choose both.\n• Target opponent chooses a creature they control. You gain control of it.\n• Choose a creature you control. Each other creature you control becomes a copy of that creature until end of turn. diff --git a/forge-gui/res/cardsfolder/s/shirei_shizos_caretaker.txt b/forge-gui/res/cardsfolder/s/shirei_shizos_caretaker.txt index 46b452a71e7..14bdd2f0591 100644 --- a/forge-gui/res/cardsfolder/s/shirei_shizos_caretaker.txt +++ b/forge-gui/res/cardsfolder/s/shirei_shizos_caretaker.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Spirit PT:2/2 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | ValidCard$ Creature.powerLE1+YouOwn | OptionalDecider$ You | Execute$ DelTrig | TriggerDescription$ Whenever a creature with power 1 or less is put into your graveyard from the battlefield, you may return that card to the battlefield at the beginning of the next end step if CARDNAME is still on the battlefield. SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigReturn | IsPresent$ Card.StrictlySelf | PresentZone$ Battlefield | RememberObjects$ TriggeredNewCardLKICopy | TriggerDescription$ Return creature to the battlefield. -SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI | IsPresent$ Card.StrictlySelf | PresentZone$ Battlefield +SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI S:Mode$ Continuous | Affected$ Creature.YouCtrl+powerLE1+YouOwn | AddSVar$ Sac SVar:Sac:SVar:SacMe:3 Oracle:Whenever a creature with power 1 or less is put into your graveyard from the battlefield, you may return that card to the battlefield at the beginning of the next end step if Shirei, Shizo's Caretaker is still on the battlefield. diff --git a/forge-gui/res/cardsfolder/s/stalking_yeti.txt b/forge-gui/res/cardsfolder/s/stalking_yeti.txt index ae9a9e1b097..54abd085f97 100644 --- a/forge-gui/res/cardsfolder/s/stalking_yeti.txt +++ b/forge-gui/res/cardsfolder/s/stalking_yeti.txt @@ -2,8 +2,8 @@ Name:Stalking Yeti ManaCost:2 R R Types:Snow Creature Yeti PT:3/3 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters, if it's on the battlefield, it deals damage equal to its power to target creature an opponent controls and that creature deals damage equal to its power to CARDNAME. -SVar:TrigDamage:DB$ DealDamage | IsPresent$ Card.Self | PresentZone$ Battlefield | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumDmg$ X | SubAbility$ DBDamage +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Card.StrictlySelf | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters, if it's on the battlefield, it deals damage equal to its power to target creature an opponent controls and that creature deals damage equal to its power to CARDNAME. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumDmg$ X | SubAbility$ DBDamage SVar:DBDamage:DB$ DealDamage | Defined$ Self | DamageSource$ Targeted | NumDmg$ Y A:AB$ ChangeZone | Cost$ 2 S | Origin$ Battlefield | Destination$ Hand | SorcerySpeed$ True | SpellDescription$ Return CARDNAME to its owner's hand. Activate only any time you could cast a sorcery. SVar:X:Count$CardPower diff --git a/forge-gui/res/cardsfolder/upcoming/kindlespark_duo.txt b/forge-gui/res/cardsfolder/upcoming/kindlespark_duo.txt index 6743cf894c6..f56fa1ac175 100644 --- a/forge-gui/res/cardsfolder/upcoming/kindlespark_duo.txt +++ b/forge-gui/res/cardsfolder/upcoming/kindlespark_duo.txt @@ -2,7 +2,6 @@ Name:Kindlespark Duo ManaCost:2 R Types:Creature Lizard Otter PT:1/3 -K:Flying A:AB$ DealDamage | Cost$ T | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target opponent. T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | Execute$ TrigUntap | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a noncreature spell, untap CARDNAME. SVar:TrigUntap:DB$ Untap | Defined$ Self diff --git a/forge-gui/res/cardsfolder/upcoming/portent_of_calamity.txt b/forge-gui/res/cardsfolder/upcoming/portent_of_calamity.txt index 7aaafd06fd8..948c417bd10 100644 --- a/forge-gui/res/cardsfolder/upcoming/portent_of_calamity.txt +++ b/forge-gui/res/cardsfolder/upcoming/portent_of_calamity.txt @@ -6,7 +6,7 @@ SVar:DBRepeatTypes:DB$ RepeatEach | RepeatTypesFrom$ Card.IsImprinted | TypesFro SVar:ChooseCard:DB$ ChooseCard | Choices$ Card.ChosenType+YouOwn+IsImprinted | ChoiceZone$ Library | RememberChosen$ True SVar:DBChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Exile | Defined$ Remembered | SubAbility$ DBGraveyard SVar:DBGraveyard:DB$ ChangeZoneAll | Origin$ Library | Destination$ Graveyard | ChangeType$ Card.IsImprinted+!IsRemembered | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | ValidSA$ Spell | CheckSVar$ Y | SVarCompare$ GE4 | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | SubAbility$ DBChangeZone2 +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | ValidSA$ Spell | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE4 | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | SubAbility$ DBChangeZone2 SVar:DBChangeZone2:DB$ ChangeZone | Origin$ Exile | Destination$ Hand | Defined$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:X:Count$xPaid diff --git a/forge-gui/res/cardsfolder/upcoming/reptilian_recruiter.txt b/forge-gui/res/cardsfolder/upcoming/reptilian_recruiter.txt index fc2c4879cc4..1cd187098c6 100644 --- a/forge-gui/res/cardsfolder/upcoming/reptilian_recruiter.txt +++ b/forge-gui/res/cardsfolder/upcoming/reptilian_recruiter.txt @@ -4,7 +4,7 @@ Types:Creature Lizard Warrior PT:4/2 K:Trample T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters, choose target creature. If that creature's power is 2 or less or if you control another Lizard, gain control of that creature until end of turn, untap it, and it gains haste until end of turn. -SVar:TrigChange:DB$ GainControl | TgtPrompt$ Choose target creature | ValidTgts$ Creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | CheckSVar$ X | SVarCompare$ GE1 +SVar:TrigChange:DB$ GainControl | TgtPrompt$ Choose target creature | ValidTgts$ Creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | ConditionCheckSVar$ X SVar:X:Count$Valid Creature.targetedBy+powerLE2/Plus.Y SVar:Y:Count$Valid Lizard.Other+YouCtrl SVar:PlayMain1:OPPONENTCREATURES diff --git a/forge-gui/res/cardsfolder/upcoming/wick_the_whorled_mind.txt b/forge-gui/res/cardsfolder/upcoming/wick_the_whorled_mind.txt index 5b5eca267ac..bfb8812adfa 100644 --- a/forge-gui/res/cardsfolder/upcoming/wick_the_whorled_mind.txt +++ b/forge-gui/res/cardsfolder/upcoming/wick_the_whorled_mind.txt @@ -2,7 +2,7 @@ Name:Wick, the Whorled Mind ManaCost:3 B Types:Legendary Creature Rat Warlock PT:2/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Rat.Other+YouCtrl | OptionalDecider$ You | Execute$ TrigBranch | TriggerDescription$ Whenever NICKNAME or another Rat you control enters, create a 1/1 black Snail creature token if you don't control a Snail. Otherwise, put a +1/+1 counter on a Snail you control. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Rat.Other+YouCtrl | Execute$ TrigBranch | TriggerDescription$ Whenever NICKNAME or another Rat you control enters, create a 1/1 black Snail creature token if you don't control a Snail. Otherwise, put a +1/+1 counter on a Snail you control. SVar:TrigBranch:DB$ Branch | BranchConditionSVar$ X | BranchConditionSVarCompare$ EQ0 | TrueSubAbility$ DBToken | FalseSubAbility$ DBPutCounter SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_snail | TokenOwner$ You SVar:DBPutCounter:DB$ PutCounter | Choices$ Snail.YouCtrl | CounterType$ P1P1 | CounterNum$ 1