diff --git a/forge-gui/res/cardsfolder/a/adun_oakenshield.txt b/forge-gui/res/cardsfolder/a/adun_oakenshield.txt index c25e8671151..3159acfa928 100644 --- a/forge-gui/res/cardsfolder/a/adun_oakenshield.txt +++ b/forge-gui/res/cardsfolder/a/adun_oakenshield.txt @@ -4,4 +4,5 @@ Types:Legendary Creature Human Knight PT:1/2 A:AB$ ChangeZone | Cost$ B R G T | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to your hand. SVar:NonCombatPriority:3 +DeckHas:Ability$Graveyard Oracle:{B}{R}{G}, {T}: Return target creature card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/a/akron_legionnaire.txt b/forge-gui/res/cardsfolder/a/akron_legionnaire.txt index 740c277744b..4f7742b72a6 100644 --- a/forge-gui/res/cardsfolder/a/akron_legionnaire.txt +++ b/forge-gui/res/cardsfolder/a/akron_legionnaire.txt @@ -3,5 +3,6 @@ ManaCost:6 W W Types:Creature Giant Soldier PT:8/4 S:Mode$ Continuous | Affected$ Creature.YouCtrl+nonArtifact+notnamedAkron Legionnaire | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Except for creatures named Akron Legionnaire and artifact creatures, creatures you control can't attack. +DeckHints:Type$Artifact DeckNeeds:Name$Akron Legionnaire Oracle:Except for creatures named Akron Legionnaire and artifact creatures, creatures you control can't attack. diff --git a/forge-gui/res/cardsfolder/a/alabaster_potion.txt b/forge-gui/res/cardsfolder/a/alabaster_potion.txt index 9f111ca8d25..f11ee9064f2 100644 --- a/forge-gui/res/cardsfolder/a/alabaster_potion.txt +++ b/forge-gui/res/cardsfolder/a/alabaster_potion.txt @@ -1,8 +1,9 @@ Name:Alabaster Potion ManaCost:X W W Types:Instant -A:SP$ Charm | Cost$ X W W | Choices$ DBGainLife,DBPreventDamage +A:SP$ Charm | Choices$ DBGainLife,DBPreventDamage SVar:DBGainLife:DB$ GainLife | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ X | SpellDescription$ Target player gains X life. SVar:DBPreventDamage:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ X | SpellDescription$ Prevent the next X damage that would be dealt to any target this turn. SVar:X:Count$xPaid +DeckHas:Ability$LifeGain Oracle:Choose one —\n• Target player gains X life.\n• Prevent the next X damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/a/all_hallows_eve.txt b/forge-gui/res/cardsfolder/a/all_hallows_eve.txt index 60ff7bbf606..ed027095087 100644 --- a/forge-gui/res/cardsfolder/a/all_hallows_eve.txt +++ b/forge-gui/res/cardsfolder/a/all_hallows_eve.txt @@ -13,6 +13,6 @@ SVar:NeedsToPlayVar:CountOpps LECountMe SVar:CountMe:Count$ValidGraveyard Creature.YouOwn/Minus.NumOpps SVar:CountOpps:Count$ValidGraveyard Creature.OppOwn/DivideEvenlyDown.NumOpps SVar:NumOpps:PlayerCountOpponents$Amount -DeckHas:Ability$Counters -DeckNeeds:Ability$Graveyard +DeckHas:Ability$Graveyard|Counters +DeckHints:Ability$Graveyard|Sacrifice Oracle:Exile All Hallow's Eve with two scream counters on it.\nAt the beginning of your upkeep, if All Hallow's Eve is exiled with a scream counter on it, remove a scream counter from it. If there are no more scream counters on it, put it into your graveyard and each player returns all creature cards from their graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/a/arcades_sabboth.txt b/forge-gui/res/cardsfolder/a/arcades_sabboth.txt index 42c868b9c7c..83b924c7b99 100644 --- a/forge-gui/res/cardsfolder/a/arcades_sabboth.txt +++ b/forge-gui/res/cardsfolder/a/arcades_sabboth.txt @@ -6,4 +6,5 @@ K:Flying K:UpkeepCost:G W U S:Mode$ Continuous | Affected$ Creature.notattacking+untapped+YouCtrl | AddToughness$ 2 | Description$ Each untapped creature you control gets +0/+2 as long as it's not attacking. A:AB$ Pump | Cost$ W | Defined$ Self | NumDef$ +1 | SpellDescription$ CARDNAME gets +0/+1 until end of turn. +DeckHints:Type$Wall & Keyword$Defender Oracle:Flying\nAt the beginning of your upkeep, sacrifice Arcades Sabboth unless you pay {G}{W}{U}.\nEach untapped creature you control gets +0/+2 as long as it's not attacking.\n{W}: Arcades Sabboth gets +0/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/a/argivian_archaeologist.txt b/forge-gui/res/cardsfolder/a/argivian_archaeologist.txt index 6f3b2c24a21..b667e877a96 100644 --- a/forge-gui/res/cardsfolder/a/argivian_archaeologist.txt +++ b/forge-gui/res/cardsfolder/a/argivian_archaeologist.txt @@ -3,4 +3,8 @@ ManaCost:1 W W Types:Creature Human Artificer PT:1/1 A:AB$ ChangeZone | Cost$ W W T | TgtPrompt$ Choose target artifact card in your graveyard | ValidTgts$ Artifact.YouCtrl | Origin$ Graveyard | Destination$ Hand | SpellDescription$ Return target artifact card from your graveyard to your hand. +AI:RemoveDeck:Random +DeckNeeds:Type$Artifact +DeckHas:Ability$Graveyard +DeckHints:Ability$Graveyard|Mill Oracle:{W}{W}, {T}: Return target artifact card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/a/argivian_blacksmith.txt b/forge-gui/res/cardsfolder/a/argivian_blacksmith.txt index c898d4fe5e8..5dba7a58ae1 100644 --- a/forge-gui/res/cardsfolder/a/argivian_blacksmith.txt +++ b/forge-gui/res/cardsfolder/a/argivian_blacksmith.txt @@ -3,4 +3,5 @@ ManaCost:1 W W Types:Creature Human Artificer PT:2/2 A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature.Artifact | Amount$ 2 | TgtPrompt$ Select target artifact creature | SpellDescription$ Prevent the next 2 damage that would be dealt to target artifact creature this turn. +DeckHints:Type$Artifact Oracle:{T}: Prevent the next 2 damage that would be dealt to target artifact creature this turn. diff --git a/forge-gui/res/cardsfolder/a/armageddon_clock.txt b/forge-gui/res/cardsfolder/a/armageddon_clock.txt index e3d91f58ae3..ab76492e6b1 100644 --- a/forge-gui/res/cardsfolder/a/armageddon_clock.txt +++ b/forge-gui/res/cardsfolder/a/armageddon_clock.txt @@ -8,4 +8,5 @@ SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ X SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ DOOM | CounterNum$ 1 SVar:X:Count$CardCounters.DOOM AI:RemoveDeck:All +DeckHas:Ability$Counters Oracle:At the beginning of your upkeep, put a doom counter on Armageddon Clock.\nAt the beginning of your draw step, Armageddon Clock deals damage equal to the number of doom counters on it to each player.\n{4}: Remove a doom counter from Armageddon Clock. Any player may activate this ability but only during any upkeep step. diff --git a/forge-gui/res/cardsfolder/a/ashnods_altar.txt b/forge-gui/res/cardsfolder/a/ashnods_altar.txt index 8c9245bb9da..716a2a55996 100644 --- a/forge-gui/res/cardsfolder/a/ashnods_altar.txt +++ b/forge-gui/res/cardsfolder/a/ashnods_altar.txt @@ -3,5 +3,6 @@ ManaCost:3 Types:Artifact A:AB$ Mana | Cost$ Sac<1/Creature> | Produced$ C | Amount$ 2 | SpellDescription$ Add {C}{C}. SVar:NonStackingEffect:True -AI:RemoveDeck:All +DeckHas:Ability$Sacrifice +DeckHints:Ability$Token Oracle:Sacrifice a creature: Add {C}{C}. diff --git a/forge-gui/res/cardsfolder/a/ashnods_transmogrant.txt b/forge-gui/res/cardsfolder/a/ashnods_transmogrant.txt index 7c0277dc5e8..dd170395d08 100644 --- a/forge-gui/res/cardsfolder/a/ashnods_transmogrant.txt +++ b/forge-gui/res/cardsfolder/a/ashnods_transmogrant.txt @@ -3,4 +3,5 @@ ManaCost:1 Types:Artifact A:AB$ PutCounter | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature.nonArtifact | TgtPrompt$ Select target nonartifact creature | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBAnimate | SpellDescription$ Put a +1/+1 counter on target nonartifact creature. That creature becomes an artifact in addition to its other types. SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Types$ Artifact | Duration$ Permanent +DeckHas:Ability$Counters & Type$Artifact Oracle:{T}, Sacrifice Ashnod's Transmogrant: Put a +1/+1 counter on target nonartifact creature. That creature becomes an artifact in addition to its other types. diff --git a/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt b/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt index 70e44a384d9..34998084b76 100644 --- a/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt +++ b/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt @@ -6,4 +6,5 @@ K:Trample T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.DamagedBy | Execute$ DBGainLife | TriggerDescription$ Whenever a creature dealt damage by CARDNAME this turn dies, you gain 1 life and CARDNAME deals 1 damage to target player or planeswalker. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 | SubAbility$ DBDealDamage SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 +DeckHas:Ability$LifeGain Oracle:Trample\nWhenever a creature dealt damage by Axelrod Gunnarson this turn dies, you gain 1 life and Axelrod deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/b/black_mana_battery.txt b/forge-gui/res/cardsfolder/b/black_mana_battery.txt index a60c3679353..1581fae5b85 100644 --- a/forge-gui/res/cardsfolder/b/black_mana_battery.txt +++ b/forge-gui/res/cardsfolder/b/black_mana_battery.txt @@ -6,4 +6,5 @@ A:AB$ Mana | Cost$ T SubCounter | Produced$ B | AILogic$ ManaRitualBat SVar:DBMana: DB$ Mana | Produced$ B | Amount$ X SVar:X:Count$xPaid AI:RemoveDeck:Random +DeckHas:Ability$Counters Oracle:{2}, {T}: Put a charge counter on Black Mana Battery.\n{T}, Remove any number of charge counters from Black Mana Battery: Add {B}, then add an additional {B} for each charge counter removed this way. diff --git a/forge-gui/res/cardsfolder/b/blazing_effigy.txt b/forge-gui/res/cardsfolder/b/blazing_effigy.txt index c5c665340ea..c223b754d7c 100644 --- a/forge-gui/res/cardsfolder/b/blazing_effigy.txt +++ b/forge-gui/res/cardsfolder/b/blazing_effigy.txt @@ -5,4 +5,6 @@ PT:0/3 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ BlazeDmg | TriggerDescription$ When CARDNAME dies, it deals X damage to target creature, where X is 3 plus the amount of damage dealt to CARDNAME this turn by other sources named Blazing Effigy. SVar:BlazeDmg:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature to deal damage to | NumDmg$ BlazeSize SVar:BlazeSize:Count$TotalDamageThisTurn Card.Other+namedBlazing_Effigy/Plus.3 +SVar:SacMe:2 +DeckHints:Name$Blazing Effigy Oracle:When Blazing Effigy dies, it deals X damage to target creature, where X is 3 plus the amount of damage dealt to Blazing Effigy this turn by other sources named Blazing Effigy. diff --git a/forge-gui/res/cardsfolder/b/blue_mana_battery.txt b/forge-gui/res/cardsfolder/b/blue_mana_battery.txt index 117f093403c..224cf7c2e41 100644 --- a/forge-gui/res/cardsfolder/b/blue_mana_battery.txt +++ b/forge-gui/res/cardsfolder/b/blue_mana_battery.txt @@ -6,4 +6,5 @@ A:AB$ Mana | Cost$ T SubCounter | Produced$ U | AILogic$ ManaRitualBat SVar:DBMana: DB$ Mana | Produced$ U | Amount$ X SVar:X:Count$xPaid AI:RemoveDeck:Random +DeckHas:Ability$Counters Oracle:{2}, {T}: Put a charge counter on Blue Mana Battery.\n{T}, Remove any number of charge counters from Blue Mana Battery: Add {U}, then add an additional {U} for each charge counter removed this way. diff --git a/forge-gui/res/cardsfolder/b/boris_devilboon.txt b/forge-gui/res/cardsfolder/b/boris_devilboon.txt index 42b9341262e..09b521067d7 100644 --- a/forge-gui/res/cardsfolder/b/boris_devilboon.txt +++ b/forge-gui/res/cardsfolder/b/boris_devilboon.txt @@ -3,4 +3,5 @@ ManaCost:3 B R Types:Legendary Creature Zombie Wizard PT:2/2 A:AB$ Token | Cost$ 2 B R T | TokenAmount$ 1 | TokenScript$ minor_demon | TokenOwner$ You | SpellDescription$ Create a 1/1 black and red Demon creature token named Minor Demon. +DeckHas:Ability$Token & Type$Demon Oracle:{2}{B}{R}, {T}: Create a 1/1 black and red Demon creature token named Minor Demon. diff --git a/forge-gui/res/cardsfolder/c/cathedral_of_serra.txt b/forge-gui/res/cardsfolder/c/cathedral_of_serra.txt index 485c1533fbe..3cfbce7eb25 100644 --- a/forge-gui/res/cardsfolder/c/cathedral_of_serra.txt +++ b/forge-gui/res/cardsfolder/c/cathedral_of_serra.txt @@ -4,4 +4,6 @@ Types:Land S:Mode$ Continuous | Affected$ Creature.White+Legendary | AddKeyword$ Bands with Other Legendary Creatures | Description$ White legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) AI:RemoveDeck:All SVar:NonStackingEffect:True +DeckHas:Keyword$BandsWithOther +DeckNeeds:Type$Legendary & Color$White Oracle:White legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) diff --git a/forge-gui/res/cardsfolder/c/caverns_of_despair.txt b/forge-gui/res/cardsfolder/c/caverns_of_despair.txt index 32298ef404e..979aa20dc81 100644 --- a/forge-gui/res/cardsfolder/c/caverns_of_despair.txt +++ b/forge-gui/res/cardsfolder/c/caverns_of_despair.txt @@ -5,4 +5,5 @@ K:No more than two creatures can attack each combat. S:Mode$ Continuous | GlobalRule$ No more than two creatures can block each combat. | Description$ No more than two creatures can block each combat. SVar:NonStackingEffect:True AI:RemoveDeck:Random +DeckHints:Type$Planeswalker|Artifact|Enchantment|Aura|Equipment Oracle:No more than two creatures can attack each combat.\nNo more than two creatures can block each combat. diff --git a/forge-gui/res/cardsfolder/c/chains_of_mephistopheles.txt b/forge-gui/res/cardsfolder/c/chains_of_mephistopheles.txt index aef6d890b34..97415fdd821 100644 --- a/forge-gui/res/cardsfolder/c/chains_of_mephistopheles.txt +++ b/forge-gui/res/cardsfolder/c/chains_of_mephistopheles.txt @@ -7,4 +7,5 @@ SVar:DBDraw:DB$ Draw | Defined$ ReplacedPlayer | ConditionDefined$ Remembered | SVar:MillOne:DB$ Mill | NumCards$ 1 | Defined$ ReplacedPlayer | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:Random +DeckHas:Ability$Discard|Mill Oracle:If a player would draw a card except the first one they draw in each of their draw steps, that player discards a card instead. If the player discards a card this way, they draw a card. If the player doesn't discard a card this way, they mill a card. diff --git a/forge-gui/res/cardsfolder/c/cocoon.txt b/forge-gui/res/cardsfolder/c/cocoon.txt index cbc0502e102..4df87bb8e8f 100644 --- a/forge-gui/res/cardsfolder/c/cocoon.txt +++ b/forge-gui/res/cardsfolder/c/cocoon.txt @@ -16,4 +16,5 @@ SVar:TrigSac:DB$ Sacrifice | Defined$ Self | ConditionCheckSVar$ X | ConditionSV SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$RememberedSize AI:RemoveDeck:Random +DeckHas:Ability$Counters Oracle:Enchant creature you control\nWhen Cocoon enters the battlefield, tap enchanted creature and put three pupa counters on Cocoon.\nEnchanted creature doesn't untap during your untap step if Cocoon has a pupa counter on it.\nAt the beginning of your upkeep, remove a pupa counter from Cocoon. If you can't, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying. diff --git a/forge-gui/res/cardsfolder/c/coral_helm.txt b/forge-gui/res/cardsfolder/c/coral_helm.txt index f9862420e91..61e697777bf 100644 --- a/forge-gui/res/cardsfolder/c/coral_helm.txt +++ b/forge-gui/res/cardsfolder/c/coral_helm.txt @@ -4,4 +4,5 @@ Types:Artifact A:AB$ Pump | Cost$ 3 Discard<1/Random> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. SVar:NonStackingEffect:True AI:RemoveDeck:All +DeckHas:Ability$Discard Oracle:{3}, Discard a card at random: Target creature gets +2/+2 until end of turn. diff --git a/forge-gui/res/cardsfolder/c/cursed_rack.txt b/forge-gui/res/cardsfolder/c/cursed_rack.txt index 0c43261b9b3..a71eef27f83 100644 --- a/forge-gui/res/cardsfolder/c/cursed_rack.txt +++ b/forge-gui/res/cardsfolder/c/cursed_rack.txt @@ -2,7 +2,7 @@ Name:Cursed Rack ManaCost:4 Types:Artifact K:ETBReplacement:Other:ChooseP -SVar:ChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | AILogic$ Curse | SpellDescription$ As CARDNAME enters the battlefield, choose an opponent. +SVar:ChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | AILogic$ Curse | AILogic$ MostCardsInHand | SpellDescription$ As CARDNAME enters the battlefield, choose an opponent. S:Mode$ Continuous | Affected$ Player.Chosen | SetMaxHandSize$ 4 | Description$ The chosen player's maximum hand size is four. SVar:NonStackingEffect:True Oracle:As Cursed Rack enters the battlefield, choose an opponent.\nThe chosen player's maximum hand size is four. diff --git a/forge-gui/res/cardsfolder/d/damping_field.txt b/forge-gui/res/cardsfolder/d/damping_field.txt index c3704d1082a..dc96afac41a 100644 --- a/forge-gui/res/cardsfolder/d/damping_field.txt +++ b/forge-gui/res/cardsfolder/d/damping_field.txt @@ -4,4 +4,7 @@ Types:Enchantment S:Mode$ Continuous | Affected$ Player | AddKeyword$ UntapAdjust:Artifact:1 | Description$ Players can't untap more than one artifact during their untap steps. SVar:NonStackingEffect:True AI:RemoveDeck:Random +SVar:NeedsToPlayVar:CountOpps GTCountMe +SVar:CountOpps:Count$Valid Artifact.OppCtrl/LimitMax.5 +SVar:CountMe:Count$Valid Artifact.YouCtrl Oracle:Players can't untap more than one artifact during their untap steps. diff --git a/forge-gui/res/cardsfolder/d/divine_intervention.txt b/forge-gui/res/cardsfolder/d/divine_intervention.txt index 641b3e6873b..149e764e97d 100644 --- a/forge-gui/res/cardsfolder/d/divine_intervention.txt +++ b/forge-gui/res/cardsfolder/d/divine_intervention.txt @@ -7,4 +7,5 @@ SVar:TrigRemoveCtr:DB$ RemoveCounter | Defined$ Self | CounterType$ INTERVENTION SVar:GameIsADraw:DB$ GameDrawn | ConditionPresent$ Card.Self+counters_EQ0_INTERVENTION AI:RemoveDeck:Random AI:RemoveDeck:All +DeckHas:Ability$Counters Oracle:Divine Intervention enters the battlefield with two intervention counters on it.\nAt the beginning of your upkeep, remove an intervention counter from Divine Intervention.\nWhen you remove the last intervention counter from Divine Intervention, the game is a draw. diff --git a/forge-gui/res/cardsfolder/d/divine_offering.txt b/forge-gui/res/cardsfolder/d/divine_offering.txt index 1b1a2dccf98..924efbdc4f2 100644 --- a/forge-gui/res/cardsfolder/d/divine_offering.txt +++ b/forge-gui/res/cardsfolder/d/divine_offering.txt @@ -4,4 +4,5 @@ Types:Instant A:SP$ Destroy | Cost$ 1 W | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | SubAbility$ DBGainLife | SpellDescription$ Destroy target artifact. You gain life equal to its mana value. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X SVar:X:Targeted$CardManaCost +DeckHas:Ability$LifeGain Oracle:Destroy target artifact. You gain life equal to its mana value. diff --git a/forge-gui/res/cardsfolder/d/drafnas_restoration.txt b/forge-gui/res/cardsfolder/d/drafnas_restoration.txt index d7ca25ba599..17581c3a6bc 100644 --- a/forge-gui/res/cardsfolder/d/drafnas_restoration.txt +++ b/forge-gui/res/cardsfolder/d/drafnas_restoration.txt @@ -5,5 +5,7 @@ A:SP$ Pump | Cost$ U | ValidTgts$ Player | TgtPrompt$ Select target Player | Sub SVar:DBChangeZone:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ X | TargetsWithDefinedController$ ParentTarget | Origin$ Graveyard | Destination$ Library | TgtPrompt$ Choose target artifact card | ValidTgts$ Artifact | Chooser$ You SVar:X:Count$InAllYards AI:RemoveDeck:All -AI:RemoveDeck:Random +DeckHas:Ability$Graveyard +DeckHints:Ability$Mill +DeckNeeds:Type$Artifact Oracle:Put any number of target artifact cards from target player's graveyard on top of their library in any order. diff --git a/forge-gui/res/cardsfolder/d/dwarven_weaponsmith.txt b/forge-gui/res/cardsfolder/d/dwarven_weaponsmith.txt index 829fd758aae..0fe31ee37f4 100644 --- a/forge-gui/res/cardsfolder/d/dwarven_weaponsmith.txt +++ b/forge-gui/res/cardsfolder/d/dwarven_weaponsmith.txt @@ -3,5 +3,7 @@ ManaCost:1 R Types:Creature Dwarf Artificer PT:1/1 A:AB$ PutCounter | Cost$ T Sac<1/Artifact> | CounterType$ P1P1 | CounterNum$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | PlayerTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ Put a +1/+1 counter on target creature. Activate only during your upkeep. -AI:RemoveDeck:All +AI:RemoveDeck:Random +DeckHas:Ability$Sacrifice|Counters +DeckNeeds:Type$Artifact Oracle:{T}, Sacrifice an artifact: Put a +1/+1 counter on target creature. Activate only during your upkeep. diff --git a/forge-gui/res/cardsfolder/e/elder_spawn.txt b/forge-gui/res/cardsfolder/e/elder_spawn.txt index 641b6a3a7bc..3ffdbd0fbef 100644 --- a/forge-gui/res/cardsfolder/e/elder_spawn.txt +++ b/forge-gui/res/cardsfolder/e/elder_spawn.txt @@ -11,4 +11,5 @@ S:Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.Red AI:RemoveDeck:Random SVar:NeedsToPlayVar:Z GE3 SVar:Z:Count$Valid Island.YouCtrl+inZoneBattlefield +DeckHas:Ability$Sacrifice Oracle:At the beginning of your upkeep, unless you sacrifice an Island, sacrifice Elder Spawn and it deals 6 damage to you.\nElder Spawn can't be blocked by red creatures. diff --git a/forge-gui/res/cardsfolder/e/emerald_dragonfly.txt b/forge-gui/res/cardsfolder/e/emerald_dragonfly.txt index baf6ca71d79..59a83b5c0a8 100644 --- a/forge-gui/res/cardsfolder/e/emerald_dragonfly.txt +++ b/forge-gui/res/cardsfolder/e/emerald_dragonfly.txt @@ -4,4 +4,5 @@ Types:Creature Insect PT:1/1 K:Flying A:AB$ Pump | Cost$ G G | Defined$ Self | KW$ First Strike | SpellDescription$ CARDNAME gains first strike until end of turn. +DeckHas:Keyword$FirstStrike Oracle:Flying\n{G}{G}: Emerald Dragonfly gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/e/energy_flux.txt b/forge-gui/res/cardsfolder/e/energy_flux.txt index 0f6612a88fc..b19cd674a2f 100644 --- a/forge-gui/res/cardsfolder/e/energy_flux.txt +++ b/forge-gui/res/cardsfolder/e/energy_flux.txt @@ -3,4 +3,8 @@ ManaCost:2 U Types:Enchantment S:Mode$ Continuous | Affected$ Artifact | AddKeyword$ UpkeepCost:2 | Description$ All artifacts have "At the beginning of your upkeep, sacrifice this artifact unless you pay {2}." AI:RemoveDeck:Random +DeckHas:Ability$Sacrifice +SVar:NeedsToPlayVar:CountOpps GTCountMe +SVar:CountOpps:Count$Valid Artifact.OppCtrl/LimitMax.5 +SVar:CountMe:Count$Valid Artifact.YouCtrl Oracle:All artifacts have "At the beginning of your upkeep, sacrifice this artifact unless you pay {2}." diff --git a/forge-gui/res/cardsfolder/e/eternal_warrior.txt b/forge-gui/res/cardsfolder/e/eternal_warrior.txt index d8c174642c8..7dc87dc409a 100644 --- a/forge-gui/res/cardsfolder/e/eternal_warrior.txt +++ b/forge-gui/res/cardsfolder/e/eternal_warrior.txt @@ -4,4 +4,5 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ R | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Vigilance | Description$ Enchanted creature has vigilance. +DeckHas:Keyword$Vigilance Oracle:Enchant creature\nEnchanted creature has vigilance. diff --git a/forge-gui/res/cardsfolder/f/fallen_angel.txt b/forge-gui/res/cardsfolder/f/fallen_angel.txt index e5ac290d421..a2e2b72f497 100644 --- a/forge-gui/res/cardsfolder/f/fallen_angel.txt +++ b/forge-gui/res/cardsfolder/f/fallen_angel.txt @@ -6,4 +6,5 @@ K:Flying A:AB$ Pump | Cost$ Sac<1/Creature> | Defined$ Self | NumAtt$ +2 | NumDef$ +1 | AILogic$ Aristocrat | SpellDescription$ CARDNAME gets +2/+1 until end of turn. SVar:AIPreference:SacCost$Creature.Other DeckHas:Ability$Sacrifice +DeckHints:Ability$Token Oracle:Flying\nSacrifice a creature: Fallen Angel gets +2/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/f/feldons_cane.txt b/forge-gui/res/cardsfolder/f/feldons_cane.txt index 7a74f4247c7..f78492aaf22 100644 --- a/forge-gui/res/cardsfolder/f/feldons_cane.txt +++ b/forge-gui/res/cardsfolder/f/feldons_cane.txt @@ -3,5 +3,5 @@ ManaCost:1 Types:Artifact A:AB$ ChangeZoneAll | Cost$ T Exile<1/CARDNAME> | ChangeType$ Card.YouOwn | Origin$ Graveyard | Destination$ Library | Shuffle$ True | SpellDescription$ Shuffle your graveyard into your library. AI:RemoveDeck:Random -AI:RemoveDeck:All +DeckHas:Ability$Graveyard Oracle:{T}, Exile Feldon's Cane: Shuffle your graveyard into your library. diff --git a/forge-gui/res/cardsfolder/f/firestorm_phoenix.txt b/forge-gui/res/cardsfolder/f/firestorm_phoenix.txt index b9f3fee3f20..c9d2714ba37 100644 --- a/forge-gui/res/cardsfolder/f/firestorm_phoenix.txt +++ b/forge-gui/res/cardsfolder/f/firestorm_phoenix.txt @@ -10,4 +10,5 @@ SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card.IsRemem SVar:KWShow:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Hand | Affected$ Card.IsRemembered | MayLookAt$ Player | Description$ Play with rembembered card revealed. SVar:ComeBack:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | ValidCard$ Card.IsRemembered | Execute$ ExileSelf | TriggerZones$ Command | TriggerController$ TriggeredCardController | Static$ True | TriggerDescription$ None SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self +SVar:SacMe:1 Oracle:Flying\nIf Firestorm Phoenix would die, return it to its owner's hand instead. Until that player's next turn, that player plays with that card revealed in their hand and can't play it. diff --git a/forge-gui/res/cardsfolder/f/forethought_amulet.txt b/forge-gui/res/cardsfolder/f/forethought_amulet.txt index 681538a41cd..e58a9c25867 100644 --- a/forge-gui/res/cardsfolder/f/forethought_amulet.txt +++ b/forge-gui/res/cardsfolder/f/forethought_amulet.txt @@ -5,4 +5,5 @@ K:UpkeepCost:3 R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Instant,Sorcery | ValidTarget$ You | DamageAmount$ GE3 | ReplaceWith$ Dmg2 | Description$ If an instant or sorcery source would deal 3 or more damage to you, it deals 2 damage to you instead. SVar:Dmg2:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ 2 AI:RemoveDeck:Random +DeckHas:Ability$Sacrifice Oracle:At the beginning of your upkeep, sacrifice Forethought Amulet unless you pay {3}.\nIf an instant or sorcery source would deal 3 or more damage to you, it deals 2 damage to you instead. diff --git a/forge-gui/res/cardsfolder/f/fortified_area.txt b/forge-gui/res/cardsfolder/f/fortified_area.txt index 5c578e6eeba..5ea898099ae 100644 --- a/forge-gui/res/cardsfolder/f/fortified_area.txt +++ b/forge-gui/res/cardsfolder/f/fortified_area.txt @@ -4,4 +4,6 @@ Types:Enchantment S:Mode$ Continuous | Affected$ Creature.YouCtrl+Wall | AddPower$ 1 | AddKeyword$ Banding | Description$ Wall creatures you control get +1/+0 and have banding. AI:RemoveDeck:Random AI:RemoveDeck:All +DeckHas:Keyword$Banding +DeckHints:Keyword$Defender & Type$Wall Oracle:Wall creatures you control get +1/+0 and have banding. (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) diff --git a/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt b/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt index ac6de73b228..2dc88aa68e3 100644 --- a/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt +++ b/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt @@ -9,4 +9,5 @@ SVar:SVar2:DB$ Pump | Defined$ Self | KW$ First Strike | Duration$ UntilYourNext SVar:SVar3:DB$ Pump | Defined$ Self | KW$ Trample | Duration$ UntilYourNextUpkeep | SpellDescription$ Trample SVar:SVar4:DB$ Pump | Defined$ Self | KW$ Rampage:3 | Duration$ UntilYourNextUpkeep | SpellDescription$ Rampage 3 AI:RemoveDeck:All +DeckHas:Keyword$Rampage|Trample|FirstStrike|Flying Oracle:At the beginning of your upkeep, choose flying, first strike, trample, or rampage 3. Gabriel Angelfire gains that ability until your next upkeep. (Whenever a creature with rampage 3 becomes blocked, it gets +3/+3 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/g/gate_to_phyrexia.txt b/forge-gui/res/cardsfolder/g/gate_to_phyrexia.txt index a01e2b7c1e1..b7f646626fb 100644 --- a/forge-gui/res/cardsfolder/g/gate_to_phyrexia.txt +++ b/forge-gui/res/cardsfolder/g/gate_to_phyrexia.txt @@ -4,4 +4,5 @@ Types:Enchantment A:AB$ Destroy | Cost$ Sac<1/Creature> | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | ActivationPhases$ Upkeep | ActivationLimit$ 1 | PlayerTurn$ True | SpellDescription$ Destroy target artifact. Activate only during your upkeep and only once each turn. AI:RemoveDeck:Random SVar:NonStackingEffect:True +DeckHas:Ability$Sacrifice Oracle:Sacrifice a creature: Destroy target artifact. Activate only during your upkeep and only once each turn. diff --git a/forge-gui/res/cardsfolder/g/gauntlets_of_chaos.txt b/forge-gui/res/cardsfolder/g/gauntlets_of_chaos.txt index 991a6868a74..4fa8e9d1d88 100644 --- a/forge-gui/res/cardsfolder/g/gauntlets_of_chaos.txt +++ b/forge-gui/res/cardsfolder/g/gauntlets_of_chaos.txt @@ -6,4 +6,5 @@ SVar:DBExchange:DB$ ExchangeControl | Defined$ ParentTarget | ValidTgts$ Permane SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Aura.AttachedTo Card.IsRemembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All +DeckHas:Ability$Sacrifice Oracle:{5}, Sacrifice Gauntlets of Chaos: Exchange control of target artifact, creature, or land you control and target permanent an opponent controls that shares one of those types with it. If those permanents are exchanged this way, destroy all Auras attached to them. diff --git a/forge-gui/res/cardsfolder/g/glyph_of_delusion.txt b/forge-gui/res/cardsfolder/g/glyph_of_delusion.txt index be7577bfaac..d8c9a1a5a5f 100644 --- a/forge-gui/res/cardsfolder/g/glyph_of_delusion.txt +++ b/forge-gui/res/cardsfolder/g/glyph_of_delusion.txt @@ -8,4 +8,5 @@ SVar:Delude:DB$ Animate | Defined$ ParentTarget | staticAbilities$ Delusional | SVar:Delusional:Mode$ Continuous | Affected$ Card.Self+counters_GE1_GLYPH | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ CARDNAME doesn't untap during your untap step if it has a glyph counter on it. SVar:TrigGlyphUpkeep:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ LoseGlyph | TriggerDescription$ At the beginning of your upkeep, remove a glyph counter from CARDNAME. SVar:LoseGlyph:DB$ RemoveCounter | CounterType$ GLYPH | CounterNum$ 1 +DeckHas:Ability$Counters Oracle:Put X glyph counters on target creature that target Wall blocked this turn, where X is the power of that blocked creature. The creature gains "This creature doesn't untap during your untap step if it has a glyph counter on it" and "At the beginning of your upkeep, remove a glyph counter from this creature." diff --git a/forge-gui/res/cardsfolder/g/glyph_of_destruction.txt b/forge-gui/res/cardsfolder/g/glyph_of_destruction.txt index 0d8b5366d84..153e20291fd 100644 --- a/forge-gui/res/cardsfolder/g/glyph_of_destruction.txt +++ b/forge-gui/res/cardsfolder/g/glyph_of_destruction.txt @@ -6,4 +6,5 @@ SVar:DBPump:DB$ Effect | ReplacementEffects$ RPrevent | RememberObjects$ Targete SVar:RPrevent:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidSource$ Card.IsRemembered | Description$ Prevent all damage that would be dealt to it this turn. AI:RemoveDeck:All AI:RemoveDeck:Random +DeckHas:Type$Wall & Keyword$Defender Oracle:Target blocking Wall you control gets +10/+0 until end of combat. Prevent all damage that would be dealt to it this turn. Destroy it at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/g/glyph_of_doom.txt b/forge-gui/res/cardsfolder/g/glyph_of_doom.txt index 364ca075dba..122c317f7b5 100644 --- a/forge-gui/res/cardsfolder/g/glyph_of_doom.txt +++ b/forge-gui/res/cardsfolder/g/glyph_of_doom.txt @@ -8,4 +8,5 @@ SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Creature.blockedByRemembered | Sub SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All AI:RemoveDeck:Random +DeckHints:Type$Wall & Keyword$Defender Oracle:Choose target Wall creature. At this turn's next end of combat, destroy all creatures that were blocked by that creature this turn. diff --git a/forge-gui/res/cardsfolder/g/glyph_of_life.txt b/forge-gui/res/cardsfolder/g/glyph_of_life.txt index 22175ee5378..7332c2503f1 100644 --- a/forge-gui/res/cardsfolder/g/glyph_of_life.txt +++ b/forge-gui/res/cardsfolder/g/glyph_of_life.txt @@ -7,4 +7,6 @@ SVar:TrigGainLife:DB$ GainLife | LifeAmount$ X | Defined$ You SVar:X:TriggerCount$DamageAmount AI:RemoveDeck:All AI:RemoveDeck:Random +DeckHas:Ability$LifeGain +DeckHints:Type$Wall & Keyword$Defender Oracle:Choose target Wall creature. Whenever that creature is dealt damage by an attacking creature this turn, you gain that much life. diff --git a/forge-gui/res/cardsfolder/g/glyph_of_reincarnation.txt b/forge-gui/res/cardsfolder/g/glyph_of_reincarnation.txt index 6050facd160..4e18c6a71f6 100644 --- a/forge-gui/res/cardsfolder/g/glyph_of_reincarnation.txt +++ b/forge-gui/res/cardsfolder/g/glyph_of_reincarnation.txt @@ -7,4 +7,6 @@ SVar:DBChoose:DB$ ChooseCard | Defined$ You | Choices$ Creature.OwnedBy Player.A SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Graveyard | Destination$ Battlefield | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$ValidGraveyard Creature.IsRemembered +DeckHints:Type$Wall & Keyword$Defender +DeckHas:Ability$Graveyard Oracle:Cast this spell only after combat.\nDestroy all creatures that were blocked by target Wall this turn. They can't be regenerated. For each creature that died this way, put a creature card from the graveyard of the player who controlled that creature the last time it became blocked by that Wall onto the battlefield under its owner's control. diff --git a/forge-gui/res/cardsfolder/g/golgothian_sylex.txt b/forge-gui/res/cardsfolder/g/golgothian_sylex.txt index db37e46416c..9b86fbc7fbb 100644 --- a/forge-gui/res/cardsfolder/g/golgothian_sylex.txt +++ b/forge-gui/res/cardsfolder/g/golgothian_sylex.txt @@ -5,4 +5,5 @@ A:AB$ SacrificeAll | Cost$ 1 T | ValidCards$ Permanent.nonToken+setATQ | SpellDe AI:RemoveDeck:All AI:RemoveDeck:Random SVar:NonStackingEffect:True +DeckHas:Ability$Sacrifice Oracle:{1}, {T}: Each nontoken permanent with a name originally printed in the Antiquities expansion is sacrificed by its controller. diff --git a/forge-gui/res/cardsfolder/g/green_mana_battery.txt b/forge-gui/res/cardsfolder/g/green_mana_battery.txt index 96890f2623c..f5a9aa592a6 100644 --- a/forge-gui/res/cardsfolder/g/green_mana_battery.txt +++ b/forge-gui/res/cardsfolder/g/green_mana_battery.txt @@ -6,4 +6,6 @@ A:AB$ Mana | Cost$ T SubCounter | Produced$ G | AILogic$ ManaRitualBat SVar:DBMana: DB$ Mana | Produced$ G | Amount$ X SVar:X:Count$xPaid AI:RemoveDeck:Random +DeckHas:Ability$Counters +DeckHints:Color$Green Oracle:{2}, {T}: Put a charge counter on Green Mana Battery.\n{T}, Remove any number of charge counters from Green Mana Battery: Add {G}, then add an additional {G} for each charge counter removed this way. diff --git a/forge-gui/res/cardsfolder/g/gwendlyn_di_corci.txt b/forge-gui/res/cardsfolder/g/gwendlyn_di_corci.txt index 788bc5b0a71..0e9d4571883 100644 --- a/forge-gui/res/cardsfolder/g/gwendlyn_di_corci.txt +++ b/forge-gui/res/cardsfolder/g/gwendlyn_di_corci.txt @@ -3,4 +3,5 @@ ManaCost:U B B R Types:Legendary Creature Human Rogue PT:3/5 A:AB$ Discard | Cost$ T | ValidTgts$ Player | PlayerTurn$ True | NumCards$ 1 | Mode$ Random | SpellDescription$ Target player discards a card at random. Activate only during your turn. +DeckHas:Ability$Discard Oracle:{T}: Target player discards a card at random. Activate only during your turn. diff --git a/forge-gui/res/cardsfolder/h/hazezon_tamar.txt b/forge-gui/res/cardsfolder/h/hazezon_tamar.txt index 7632e8f42cc..da387395927 100644 --- a/forge-gui/res/cardsfolder/h/hazezon_tamar.txt +++ b/forge-gui/res/cardsfolder/h/hazezon_tamar.txt @@ -8,5 +8,6 @@ SVar:TrigTokens:DB$ Token | TokenAmount$ X | TokenScript$ rgw_1_1_sand_warrior | T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Any | Execute$ TrigExile | TriggerDescription$ When NICKNAME leaves the battlefield, exile all Sand Warriors. SVar:TrigExile:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Sand.Warrior SVar:X:Count$Valid Land.YouCtrl -DeckHas:Ability$Token +SVar:BuffedBy:Land +DeckHas:Ability$Token & Type$Sand Oracle:When Hazezon Tamar enters the battlefield, create X 1/1 Sand Warrior creature tokens that are red, green, and white at the beginning of your next upkeep, where X is the number of lands you control at that time.\nWhen Hazezon leaves the battlefield, exile all Sand Warriors. diff --git a/forge-gui/res/cardsfolder/h/hells_caretaker.txt b/forge-gui/res/cardsfolder/h/hells_caretaker.txt index ffc6a41d387..81bbad222ba 100644 --- a/forge-gui/res/cardsfolder/h/hells_caretaker.txt +++ b/forge-gui/res/cardsfolder/h/hells_caretaker.txt @@ -4,5 +4,8 @@ Types:Creature Horror PT:1/1 A:AB$ ChangeZone | Cost$ T Sac<1/Creature> | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | Origin$ Graveyard | Destination$ Battlefield | PlayerTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ Return target creature card from your graveyard to the battlefield. Activate only during your upkeep. SVar:AIPreference:SacCost$Creature.cmcLE3 -AI:RemoveDeck:All +AI:RemoveDeck:Random +DeckNeeds:Ability$Graveyard +DeckHas:Ability$Sacrifice|Graveyard +DeckHints:Ability$Mill|Dredge & Type$Zombie|Phoenix Oracle:{T}, Sacrifice a creature: Return target creature card from your graveyard to the battlefield. Activate only during your upkeep. diff --git a/forge-gui/res/cardsfolder/h/horror_of_horrors.txt b/forge-gui/res/cardsfolder/h/horror_of_horrors.txt index 900a5393211..4af2d89180c 100644 --- a/forge-gui/res/cardsfolder/h/horror_of_horrors.txt +++ b/forge-gui/res/cardsfolder/h/horror_of_horrors.txt @@ -4,4 +4,5 @@ Types:Enchantment A:AB$ Regenerate | ValidTgts$ Creature.Black | TgtPrompt$ Select target black creature | Cost$ Sac<1/Swamp> | SpellDescription$ Regenerate target black creature. AI:RemoveDeck:All SVar:NonStackingEffect:True +DeckHas:Ability$Sacrifice & Keyword$Regenerate Oracle:Sacrifice a Swamp: Regenerate target black creature. (The next time that creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.) diff --git a/forge-gui/res/cardsfolder/i/in_the_eye_of_chaos.txt b/forge-gui/res/cardsfolder/i/in_the_eye_of_chaos.txt index 56b0f7c06f1..c6e23869094 100644 --- a/forge-gui/res/cardsfolder/i/in_the_eye_of_chaos.txt +++ b/forge-gui/res/cardsfolder/i/in_the_eye_of_chaos.txt @@ -5,4 +5,5 @@ T:Mode$ SpellCast | ValidCard$ Instant | Execute$ TrigCounter | TriggerZones$ Ba SVar:TrigCounter:DB$ Counter | Defined$ TriggeredSpellAbility | UnlessCost$ X | UnlessPayer$ TriggeredActivator SVar:X:TriggeredCard$CardManaCost AI:RemoveDeck:Random +DeckHints:Type$Artifact|Enchantment|Creature|Planeswalker|Sorcery Oracle:Whenever a player casts an instant spell, counter it unless that player pays {X}, where X is its mana value. diff --git a/forge-gui/res/cardsfolder/i/infinite_authority.txt b/forge-gui/res/cardsfolder/i/infinite_authority.txt index fe44431a25f..fc5a30ea39f 100644 --- a/forge-gui/res/cardsfolder/i/infinite_authority.txt +++ b/forge-gui/res/cardsfolder/i/infinite_authority.txt @@ -13,4 +13,5 @@ SVar:DBDelTrigAttacker:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | E SVar:DBDelTrigBlocker:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ DBPutCounter | RememberObjects$ TriggeredAttacker | TriggerDescription$ At the beginning of the next end step, if that creature was destroyed this way, put a +1/+1 counter on the first creature. | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBPutCounter:DB$ PutCounter | Defined$ DelayTriggerRemembered | CounterType$ P1P1 | CounterNum$ 1 SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Counters Oracle:Enchant creature\nWhenever enchanted creature blocks or becomes blocked by a creature with toughness 3 or less, destroy the other creature at end of combat. At the beginning of the next end step, if that creature was destroyed this way, put a +1/+1 counter on the first creature. diff --git a/forge-gui/res/cardsfolder/i/ivory_tower.txt b/forge-gui/res/cardsfolder/i/ivory_tower.txt index 6f5c009b3be..be204c86809 100644 --- a/forge-gui/res/cardsfolder/i/ivory_tower.txt +++ b/forge-gui/res/cardsfolder/i/ivory_tower.txt @@ -4,4 +4,5 @@ Types:Artifact T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ GT4 | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ At the beginning of your upkeep, you gain X life, where X is the number of cards in your hand minus 4. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X SVar:X:Count$InYourHand/Minus.4 +DeckHas:Ability$LifeGain Oracle:At the beginning of your upkeep, you gain X life, where X is the number of cards in your hand minus 4. diff --git a/forge-gui/res/cardsfolder/j/jalum_tome.txt b/forge-gui/res/cardsfolder/j/jalum_tome.txt index 83c14b03cd2..605d412f9be 100644 --- a/forge-gui/res/cardsfolder/j/jalum_tome.txt +++ b/forge-gui/res/cardsfolder/j/jalum_tome.txt @@ -3,5 +3,6 @@ ManaCost:3 Types:Artifact A:AB$ Draw | Cost$ 2 T | NumCards$ 1 | SpellDescription$ Draw a card, then discard a card. | SubAbility$ DBDiscard SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose -AI:RemoveDeck:All +AI:RemoveDeck:Random +DeckHas:Ability$Discard Oracle:{2}, {T}: Draw a card, then discard a card. diff --git a/forge-gui/res/cardsfolder/k/karakas.txt b/forge-gui/res/cardsfolder/k/karakas.txt index bfe8aa13fa4..cacd4252927 100644 --- a/forge-gui/res/cardsfolder/k/karakas.txt +++ b/forge-gui/res/cardsfolder/k/karakas.txt @@ -3,4 +3,5 @@ ManaCost:no cost Types:Legendary Land A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}. A:AB$ ChangeZone | Cost$ T | ValidTgts$ Creature.Legendary | TgtPrompt$ Select target legendary creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target legendary creature to its owner's hand. +DeckHints:Type$Legendary Oracle:{T}: Add {W}.\n{T}: Return target legendary creature to its owner's hand. diff --git a/forge-gui/res/cardsfolder/k/knowledge_vault.txt b/forge-gui/res/cardsfolder/k/knowledge_vault.txt index f025c7de834..ec4b01cb866 100644 --- a/forge-gui/res/cardsfolder/k/knowledge_vault.txt +++ b/forge-gui/res/cardsfolder/k/knowledge_vault.txt @@ -9,4 +9,5 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Any | Hidden$ True | Execute$ TrigGraveyard | TriggerDescription$ When CARDNAME leaves the battlefield, put all cards exiled with CARDNAME into their owner's graveyard. SVar:TrigGraveyard:DB$ ChangeZoneAll | ChangeType$ Remembered | Origin$ Exile | Destination$ Graveyard AI:RemoveDeck:All +DeckHas:Ability$Sacrifice|Graveyard Oracle:{2}, {T}: Exile the top card of your library face down.\n{0}: Sacrifice Knowledge Vault. If you do, discard your hand, then put all cards exiled with Knowledge Vault into their owner's hand.\nWhen Knowledge Vault leaves the battlefield, put all cards exiled with Knowledge Vault into their owner's graveyard. diff --git a/forge-gui/res/cardsfolder/k/kobold_drill_sergeant.txt b/forge-gui/res/cardsfolder/k/kobold_drill_sergeant.txt index e7ad2aa0dea..74c8a8f6aaa 100644 --- a/forge-gui/res/cardsfolder/k/kobold_drill_sergeant.txt +++ b/forge-gui/res/cardsfolder/k/kobold_drill_sergeant.txt @@ -4,4 +4,6 @@ Types:Creature Kobold Soldier PT:1/2 S:Mode$ Continuous | Affected$ Creature.Kobold+Other+YouCtrl | AddToughness$ 1 | AddKeyword$ Trample | Description$ Other Kobold creatures you control get +0/+1 and have trample. SVar:PlayMain1:TRUE +DeckHints:Type$Kobold +DeckHas:Keyword$Trample Oracle:Other Kobold creatures you control get +0/+1 and have trample. diff --git a/forge-gui/res/cardsfolder/k/kobold_overlord.txt b/forge-gui/res/cardsfolder/k/kobold_overlord.txt index 4a8048dc075..647ec1e32a6 100644 --- a/forge-gui/res/cardsfolder/k/kobold_overlord.txt +++ b/forge-gui/res/cardsfolder/k/kobold_overlord.txt @@ -5,4 +5,5 @@ PT:1/2 K:First Strike S:Mode$ Continuous | Affected$ Creature.Kobold+Other+YouCtrl | AddKeyword$ First Strike | Description$ Other Kobold creatures you control have first strike. SVar:PlayMain1:TRUE +DeckHints:Type$Kobold Oracle:First strike\nOther Kobold creatures you control have first strike. diff --git a/forge-gui/res/cardsfolder/k/kobold_taskmaster.txt b/forge-gui/res/cardsfolder/k/kobold_taskmaster.txt index 2e1dc8317d6..5acf160e5e4 100644 --- a/forge-gui/res/cardsfolder/k/kobold_taskmaster.txt +++ b/forge-gui/res/cardsfolder/k/kobold_taskmaster.txt @@ -4,4 +4,5 @@ Types:Creature Kobold PT:1/2 S:Mode$ Continuous | Affected$ Creature.Kobold+Other+YouCtrl | AddPower$ 1 | Description$ Other Kobold creatures you control get +1/+0. SVar:PlayMain1:TRUE +DeckHints:Type$Kobold Oracle:Other Kobold creatures you control get +1/+0. diff --git a/forge-gui/res/cardsfolder/l/land_equilibrium.txt b/forge-gui/res/cardsfolder/l/land_equilibrium.txt index 6bde0b930bb..056106f3578 100644 --- a/forge-gui/res/cardsfolder/l/land_equilibrium.txt +++ b/forge-gui/res/cardsfolder/l/land_equilibrium.txt @@ -4,4 +4,5 @@ Types:Enchantment R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Battlefield | ValidCard$ Land.OppCtrl+ControllerControlsAtLeastAsManyLand | ReplaceWith$ MoveToPlay | Description$ If an opponent who controls at least as many lands as you do would put a land onto the battlefield, that player instead puts that land onto the battlefield then sacrifices a land. SVar:MoveToPlay:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard | SubAbility$ SacLand SVar:SacLand:DB$ Sacrifice | SacValid$ Land | Defined$ ReplacedCardController +DeckHas:Ability$Sacrifice Oracle:If an opponent who controls at least as many lands as you do would put a land onto the battlefield, that player instead puts that land onto the battlefield then sacrifices a land. diff --git a/forge-gui/res/cardsfolder/l/lands_edge.txt b/forge-gui/res/cardsfolder/l/lands_edge.txt index 9a4f098ea39..e2f9a5748a0 100644 --- a/forge-gui/res/cardsfolder/l/lands_edge.txt +++ b/forge-gui/res/cardsfolder/l/lands_edge.txt @@ -4,4 +4,5 @@ Types:World Enchantment A:AB$ DealDamage | Cost$ Discard<1/Card> | ValidTgts$ Player,Planeswalker | NumDmg$ X | Activator$ Player | AILogic$ DiscardLands | SpellDescription$ If the discarded card was a land card, CARDNAME deals 2 damage to target player or planeswalker. Any player may activate this ability. SVar:X:Discarded$Valid Land/Times.2 AI:RemoveDeck:All +DeckHas:Ability$Discard Oracle:Discard a card: If the discarded card was a land card, Land's Edge deals 2 damage to target player or planeswalker. Any player may activate this ability. diff --git a/forge-gui/res/cardsfolder/l/lesser_werewolf.txt b/forge-gui/res/cardsfolder/l/lesser_werewolf.txt index 6467e0f3ade..260da4d29f8 100644 --- a/forge-gui/res/cardsfolder/l/lesser_werewolf.txt +++ b/forge-gui/res/cardsfolder/l/lesser_werewolf.txt @@ -4,4 +4,5 @@ Types:Creature Werewolf PT:2/4 A:AB$ PutCounter | Cost$ B | ConditionDefined$ Self | ConditionPresent$ Creature.powerGE1 | ConditionCompare$ EQ1 | ValidTgts$ Creature.blockedBySource,Creature.blockingSource | TgtPrompt$ Select target creature blocking or blocked by Lesser Werewolf | CounterType$ M0M1 | CounterNum$ 1 | ActivationPhases$ Declare Blockers | SubAbility$ DBPump | SpellDescription$ If CARDNAME's power is 1 or more, it gets -1/-0 until end of turn and put a -0/-1 counter on target creature blocking or blocked by CARDNAME. Activate only during the declare blockers step. SVar:DBPump:DB$ Pump | NumAtt$ -1 | Defined$ Self | ConditionDefined$ Self | ConditionPresent$ Creature.powerGE1 | ConditionCompare$ EQ1 +DeckHas:Ability$Counters Oracle:{B}: If Lesser Werewolf's power is 1 or more, it gets -1/-0 until end of turn and put a -0/-1 counter on target creature blocking or blocked by Lesser Werewolf. Activate only during the declare blockers step. diff --git a/forge-gui/res/cardsfolder/l/life_chisel.txt b/forge-gui/res/cardsfolder/l/life_chisel.txt index baf73106c47..b84a2177bec 100644 --- a/forge-gui/res/cardsfolder/l/life_chisel.txt +++ b/forge-gui/res/cardsfolder/l/life_chisel.txt @@ -3,6 +3,8 @@ ManaCost:4 Types:Artifact A:AB$ GainLife | Cost$ Sac<1/Creature> | LifeAmount$ X | PlayerTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ You gain life equal to the sacrificed creature's toughness. Activate only during your upkeep. SVar:X:Sacrificed$CardToughness -AI:RemoveDeck:All +AI:RemoveDeck:Random SVar:NonStackingEffect:True +DeckHas:Ability$Sacrifice|LifeGain +DeckHints:Type$Zombie|Phyrexian|Thrull Oracle:Sacrifice a creature: You gain life equal to the sacrificed creature's toughness. Activate only during your upkeep. diff --git a/forge-gui/res/cardsfolder/l/life_matrix.txt b/forge-gui/res/cardsfolder/l/life_matrix.txt index 4331884f893..3bc0c518158 100644 --- a/forge-gui/res/cardsfolder/l/life_matrix.txt +++ b/forge-gui/res/cardsfolder/l/life_matrix.txt @@ -5,4 +5,5 @@ A:AB$ PutCounter | Cost$ 4 T | PlayerTurn$ True | ActivationPhases$ Upkeep | Cou SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Abilities$ Regen | Duration$ Permanent | SpellDescription$ Activate only during your upkeep. SVar:Regen:AB$ Regenerate | Cost$ SubCounter<1/MATRIX> | SpellDescription$ Regenerate CARDNAME. AI:RemoveDeck:All +DeckHas:Ability$Counters & Keyword$Regenerate Oracle:{4}, {T}: Put a matrix counter on target creature and that creature gains "Remove a matrix counter from this creature: Regenerate this creature." Activate only during your upkeep. diff --git a/forge-gui/res/cardsfolder/l/lifeblood.txt b/forge-gui/res/cardsfolder/l/lifeblood.txt index 1b550c790fd..05406b648c8 100644 --- a/forge-gui/res/cardsfolder/l/lifeblood.txt +++ b/forge-gui/res/cardsfolder/l/lifeblood.txt @@ -4,4 +4,5 @@ Types:Enchantment T:Mode$ Taps | ValidCard$ Mountain.OppCtrl | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a Mountain an opponent controls becomes tapped, you gain 1 life. SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 1 | Defined$ You AI:RemoveDeck:Random +DeckHas:Ability$LifeGain Oracle:Whenever a Mountain an opponent controls becomes tapped, you gain 1 life. diff --git a/forge-gui/res/cardsfolder/l/living_plane.txt b/forge-gui/res/cardsfolder/l/living_plane.txt index 75d80d5fb06..b86b4028603 100644 --- a/forge-gui/res/cardsfolder/l/living_plane.txt +++ b/forge-gui/res/cardsfolder/l/living_plane.txt @@ -4,4 +4,5 @@ Types:World Enchantment S:Mode$ Continuous | Affected$ Land | SetPower$ 1 | SetToughness$ 1 | AddType$ Creature | Description$ All lands are 1/1 creatures that are still lands. SVar:NonStackingEffect:True AI:RemoveDeck:Random +DeckHints:Name$Goblin Sharpshooter Oracle:All lands are 1/1 creatures that are still lands. diff --git a/forge-gui/res/cardsfolder/m/mana_matrix.txt b/forge-gui/res/cardsfolder/m/mana_matrix.txt index 5799c4e8ed8..4fa50df48ca 100644 --- a/forge-gui/res/cardsfolder/m/mana_matrix.txt +++ b/forge-gui/res/cardsfolder/m/mana_matrix.txt @@ -2,4 +2,5 @@ Name:Mana Matrix ManaCost:6 Types:Artifact S:Mode$ ReduceCost | ValidCard$ Instant,Enchantment | Type$ Spell | Activator$ You | Amount$ 2 | Description$ Instant and enchantment spells you cast cost up to {2} less to cast. +DeckNeeds:Type$Enchantment|Instant Oracle:Instant and enchantment spells you cast cost up to {2} less to cast. diff --git a/forge-gui/res/cardsfolder/m/millstone.txt b/forge-gui/res/cardsfolder/m/millstone.txt index 33eac3011e5..fcbac6fbae3 100644 --- a/forge-gui/res/cardsfolder/m/millstone.txt +++ b/forge-gui/res/cardsfolder/m/millstone.txt @@ -2,4 +2,5 @@ Name:Millstone ManaCost:2 Types:Artifact A:AB$ Mill | Cost$ 2 T | NumCards$ 2 | ValidTgts$ Player | TgtPrompt$ Choose a player | AILogic$ EndOfOppTurn | SpellDescription$ Target player mills two cards. +DeckHas:Ability$Mill Oracle:{2}, {T}: Target player mills two cards. diff --git a/forge-gui/res/cardsfolder/m/mirror_universe.txt b/forge-gui/res/cardsfolder/m/mirror_universe.txt index bb01bffd630..81fce964cb1 100644 --- a/forge-gui/res/cardsfolder/m/mirror_universe.txt +++ b/forge-gui/res/cardsfolder/m/mirror_universe.txt @@ -3,4 +3,5 @@ ManaCost:6 Types:Artifact A:AB$ ExchangeLife | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | ActivationPhases$ Upkeep | PlayerTurn$ True | SpellDescription$ Exchange life totals with target opponent. Activate only during your upkeep. SVar:NonStackingEffect:True +DeckHas:Ability$Sacrifice Oracle:{T}, Sacrifice Mirror Universe: Exchange life totals with target opponent. Activate only during your upkeep. diff --git a/forge-gui/res/cardsfolder/m/mishras_war_machine.txt b/forge-gui/res/cardsfolder/m/mishras_war_machine.txt index af9b1637895..051f1d4611e 100644 --- a/forge-gui/res/cardsfolder/m/mishras_war_machine.txt +++ b/forge-gui/res/cardsfolder/m/mishras_war_machine.txt @@ -7,4 +7,5 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | E SVar:TrigDealDamage:DB$ DealDamage | Defined$ You | NumDmg$ 3 | UnlessPayer$ You | UnlessCost$ Discard<1/Card> | RememberDamaged$ True | SubAbility$ DBTap SVar:DBTap:DB$ Tap | ConditionPlayerDefined$ Remembered | ConditionPlayerContains$ You | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Discard Oracle:Banding (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.)\nAt the beginning of your upkeep, Mishra's War Machine deals 3 damage to you unless you discard a card. If Mishra's War Machine deals damage to you this way, tap it. diff --git a/forge-gui/res/cardsfolder/m/moat.txt b/forge-gui/res/cardsfolder/m/moat.txt index f342557c13e..ca1869d64b3 100644 --- a/forge-gui/res/cardsfolder/m/moat.txt +++ b/forge-gui/res/cardsfolder/m/moat.txt @@ -3,4 +3,6 @@ ManaCost:2 W W Types:Enchantment S:Mode$ Continuous | Affected$ Creature.withoutFlying | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures without flying can't attack. AI:RemoveDeck:Random +DeckNeeds:Keyword$Flying +DeckHints:Type$Dragon|Angel|Bird|Gargoyles|Griffin|Specter|Spirit|Phoenix|Faerie|Manticore|Drake|Pegasus Oracle:Creatures without flying can't attack. diff --git a/forge-gui/res/cardsfolder/m/mold_demon.txt b/forge-gui/res/cardsfolder/m/mold_demon.txt index 48542b3ff81..e4187c4b212 100644 --- a/forge-gui/res/cardsfolder/m/mold_demon.txt +++ b/forge-gui/res/cardsfolder/m/mold_demon.txt @@ -6,4 +6,5 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigSacUnless:DB$ Sacrifice | Defined$ Self | UnlessCost$ Sac<2/Swamp> | UnlessPayer$ You SVar:NeedsToPlayVar:Y GE2 SVar:Y:Count$Valid Swamp.YouCtrl +DeckHas:Ability$Sacrifice Oracle:When Mold Demon enters the battlefield, sacrifice it unless you sacrifice two Swamps. diff --git a/forge-gui/res/cardsfolder/m/mountain_stronghold.txt b/forge-gui/res/cardsfolder/m/mountain_stronghold.txt index ef08f1fe22e..78468437b8a 100644 --- a/forge-gui/res/cardsfolder/m/mountain_stronghold.txt +++ b/forge-gui/res/cardsfolder/m/mountain_stronghold.txt @@ -3,4 +3,5 @@ ManaCost:no cost Types:Land S:Mode$ Continuous | Affected$ Creature.Red+Legendary | AddKeyword$ Bands with Other Legendary Creatures | Description$ Red legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) AI:RemoveDeck:All +DeckNeeds:Color$Red & Type$Legendary Oracle:Red legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) diff --git a/forge-gui/res/cardsfolder/n/nebuchadnezzar.txt b/forge-gui/res/cardsfolder/n/nebuchadnezzar.txt index cc5b777ecb5..7afc4da2e0b 100644 --- a/forge-gui/res/cardsfolder/n/nebuchadnezzar.txt +++ b/forge-gui/res/cardsfolder/n/nebuchadnezzar.txt @@ -8,4 +8,5 @@ SVar:DBDiscard:DB$ Discard | DefinedCards$ ValidHand Card.IsRemembered+NamedCard SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid AI:RemoveDeck:All +DeckHas:Ability$Discard Oracle:{X}, {T}: Choose a card name. Target opponent reveals X cards at random from their hand. Then that player discards all cards with that name revealed this way. Activate only during your turn. diff --git a/forge-gui/res/cardsfolder/n/nicol_bolas.txt b/forge-gui/res/cardsfolder/n/nicol_bolas.txt index afc4dd8a748..6849fd7cf6d 100644 --- a/forge-gui/res/cardsfolder/n/nicol_bolas.txt +++ b/forge-gui/res/cardsfolder/n/nicol_bolas.txt @@ -6,4 +6,6 @@ K:Flying K:UpkeepCost:U B R T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME deals damage to an opponent, that player discards their hand. SVar:TrigDiscard:DB$ Discard | Defined$ TriggeredTarget | Mode$ Hand +DeckHas:Ability$Discard +DeckHints:Type$Bolas Oracle:Flying\nAt the beginning of your upkeep, sacrifice Nicol Bolas unless you pay {U}{B}{R}.\nWhenever Nicol Bolas deals damage to an opponent, that player discards their hand. diff --git a/forge-gui/res/cardsfolder/o/onulet.txt b/forge-gui/res/cardsfolder/o/onulet.txt index 91a2b3594e6..0e397c7d66c 100644 --- a/forge-gui/res/cardsfolder/o/onulet.txt +++ b/forge-gui/res/cardsfolder/o/onulet.txt @@ -4,4 +4,7 @@ Types:Artifact Creature Construct PT:2/2 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME dies, you gain 2 life. SVar:TrigSac:DB$ GainLife | Defined$ TriggeredCardController | LifeAmount$ 2 +SVar:SacMe:3 +DeckHas:Ability$LifeGain +DeckHints:Ability$Sacrifice Oracle:When Onulet dies, you gain 2 life. diff --git a/forge-gui/res/cardsfolder/o/orcish_mechanics.txt b/forge-gui/res/cardsfolder/o/orcish_mechanics.txt index 01370d47767..5119beaf8c7 100644 --- a/forge-gui/res/cardsfolder/o/orcish_mechanics.txt +++ b/forge-gui/res/cardsfolder/o/orcish_mechanics.txt @@ -4,4 +4,6 @@ Types:Creature Orc PT:1/1 A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. AI:RemoveDeck:All +DeckHas:Ability$Sacrifice +DeckHints:Type$Artifact Oracle:{T}, Sacrifice an artifact: Orcish Mechanics deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/o/osai_vultures.txt b/forge-gui/res/cardsfolder/o/osai_vultures.txt index d90063329c3..3e0aaa0e68d 100644 --- a/forge-gui/res/cardsfolder/o/osai_vultures.txt +++ b/forge-gui/res/cardsfolder/o/osai_vultures.txt @@ -7,4 +7,6 @@ T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ X | SVarCompare$ GE1 | TriggerZo SVar:TrigPutCounter:DB$ PutCounter | CounterType$ CARRION | CounterNum$ 1 | Defined$ Self A:AB$ Pump | Cost$ SubCounter<2/CARRION> | NumAtt$ 1 | NumDef$ 1 | Defined$ Self | CostDesc$ Remove two carrion counters from Osai Vultures: | SpellDescription$ CARDNAME gets +1/+1 until end of turn. SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature +DeckHas:Ability$Counters +DeckHints:Ability$Sacrifice Oracle:Flying\nAt the beginning of each end step, if a creature died this turn, put a carrion counter on Osai Vultures.\nRemove two carrion counters from Osai Vultures: Osai Vultures gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/p/part_water.txt b/forge-gui/res/cardsfolder/p/part_water.txt index 3d6f0cc9e77..35461b85414 100644 --- a/forge-gui/res/cardsfolder/p/part_water.txt +++ b/forge-gui/res/cardsfolder/p/part_water.txt @@ -3,6 +3,6 @@ ManaCost:X X U Types:Sorcery A:SP$ Pump | Cost$ X X U | KW$ Islandwalk | TargetMin$ X | TargetMax$ X | ValidTgts$ Creature | TgtPrompt$ Select X target creatures | StackDescription$ X target creatures [{c:Targeted}] gain islandwalk until end of turn. | SpellDescription$ X target creatures gain islandwalk until end of turn. (They can't be blocked as long as defending player controls an Island.) SVar:X:Count$xPaid -AI:RemoveDeck:All AI:RemoveDeck:Random +DeckHas:Keyword$IslandWalk Oracle:X target creatures gain islandwalk until end of turn. (They can't be blocked as long as defending player controls an Island.) diff --git a/forge-gui/res/cardsfolder/p/pit_scorpion.txt b/forge-gui/res/cardsfolder/p/pit_scorpion.txt index fbb59dcda8e..caacd855cc1 100644 --- a/forge-gui/res/cardsfolder/p/pit_scorpion.txt +++ b/forge-gui/res/cardsfolder/p/pit_scorpion.txt @@ -4,4 +4,6 @@ Types:Creature Scorpion PT:1/1 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigPoison | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage to a player, that player gets a poison counter. (A player with ten or more poison counters loses the game.) SVar:TrigPoison:DB$ Poison | Defined$ TriggeredTarget | Num$ 1 +DeckHas:Ability$Counters +DeckHints:Keyword$Infect Oracle:Whenever Pit Scorpion deals damage to a player, that player gets a poison counter. (A player with ten or more poison counters loses the game.) diff --git a/forge-gui/res/cardsfolder/p/power_artifact.txt b/forge-gui/res/cardsfolder/p/power_artifact.txt index 09594c0d2be..bea7d7c7da7 100644 --- a/forge-gui/res/cardsfolder/p/power_artifact.txt +++ b/forge-gui/res/cardsfolder/p/power_artifact.txt @@ -5,4 +5,5 @@ K:Enchant artifact S:Mode$ ReduceCost | ValidCard$ Artifact.EnchantedBy | Type$ Ability | Amount$ 2 | MinMana$ 1 | Description$ Enchanted artifact's activated abilities cost {2} less to activate. This effect can't reduce the mana in that cost to less than one mana. A:SP$ Attach | Cost$ U U | ValidTgts$ Artifact | AILogic$ Pump AI:RemoveDeck:Random +DeckNeeds:Type$Artifact Oracle:Enchant artifact\nEnchanted artifact's activated abilities cost {2} less to activate. This effect can't reduce the mana in that cost to less than one mana. diff --git a/forge-gui/res/cardsfolder/p/powerleech.txt b/forge-gui/res/cardsfolder/p/powerleech.txt index a468b205ca8..c7511968b91 100644 --- a/forge-gui/res/cardsfolder/p/powerleech.txt +++ b/forge-gui/res/cardsfolder/p/powerleech.txt @@ -5,4 +5,5 @@ T:Mode$ AbilityCast | NonTapCost$ True | ValidCard$ Artifact | ValidActivatingPl T:Mode$ Taps | ValidCard$ Artifact.OppCtrl | TriggerZones$ Battlefield | Execute$ TrigGain | Secondary$ True | TriggerDescription$ Whenever an artifact an opponent controls becomes tapped or an opponent activates an artifact's ability without {T} in its activation cost, you gain 1 life. SVar:TrigGain:DB$ GainLife | Defined$ You | LifeAmount$ 1 AI:RemoveDeck:Random +DeckHints:Ability$LifeGain Oracle:Whenever an artifact an opponent controls becomes tapped or an opponent activates an artifact's ability without {T} in its activation cost, you gain 1 life. diff --git a/forge-gui/res/cardsfolder/p/priest_of_yawgmoth.txt b/forge-gui/res/cardsfolder/p/priest_of_yawgmoth.txt index 7520d2ec06f..05b31869f85 100644 --- a/forge-gui/res/cardsfolder/p/priest_of_yawgmoth.txt +++ b/forge-gui/res/cardsfolder/p/priest_of_yawgmoth.txt @@ -5,4 +5,6 @@ PT:1/2 A:AB$ Mana | Cost$ T Sac<1/Artifact> | Produced$ B | Amount$ X | SpellDescription$ Add an amount of black mana equal to the sacrificed artifact's mana value. SVar:X:Sacrificed$CardManaCost AI:RemoveDeck:All +DeckHas:Ability$Sacrifice +DeckNeeds:Type$Artifact Oracle:{T}, Sacrifice an artifact: Add an amount of {B} equal to the sacrificed artifact's mana value. diff --git a/forge-gui/res/cardsfolder/p/primal_clay.txt b/forge-gui/res/cardsfolder/p/primal_clay.txt index 2b9aa95a62c..316f940f183 100644 --- a/forge-gui/res/cardsfolder/p/primal_clay.txt +++ b/forge-gui/res/cardsfolder/p/primal_clay.txt @@ -7,5 +7,6 @@ SVar:MoldChoice:DB$ GenericChoice | Defined$ You | Choices$ GroundMold,AirMold,W SVar:GroundMold:DB$ Animate | Defined$ Self | Duration$ Permanent | Power$ 3 | Toughness$ 3 | SpellDescription$ CARDNAME is 3/3 SVar:AirMold:DB$ Animate | Defined$ Self | Duration$ Permanent | Power$ 2 | Toughness$ 2 | Keywords$ Flying | SpellDescription$ CARDNAME is 2/2 with flying SVar:WallMold:DB$ Animate | Defined$ Self | Duration$ Permanent | Power$ 1 | Toughness$ 6 | Types$ Wall | Keywords$ Defender | SpellDescription$ CARDNAME is 1/6 with defender and is a wall in addition to its other types -AI:RemoveDeck:All +AI:RemoveDeck:Random +DeckHas:Keyword$Defender|Flying & Type$Wall Oracle:As Primal Clay enters the battlefield, it becomes your choice of a 3/3 artifact creature, a 2/2 artifact creature with flying, or a 1/6 Wall artifact creature with defender in addition to its other types. (A creature with defender can't attack.) diff --git a/forge-gui/res/cardsfolder/p/puppet_master.txt b/forge-gui/res/cardsfolder/p/puppet_master.txt index 5dafb68171c..4fc35085190 100644 --- a/forge-gui/res/cardsfolder/p/puppet_master.txt +++ b/forge-gui/res/cardsfolder/p/puppet_master.txt @@ -6,5 +6,7 @@ A:SP$ Attach | Cost$ U U U | ValidTgts$ Creature | AILogic$ Pump T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.EnchantedBy | Execute$ TrigChange | TriggerDescription$ When enchanted creature dies, return that card to its owner's hand. If that card is returned to its owner's hand this way, you may pay {U}{U}{U}. If you do, return CARDNAME to its owner's hand. SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ TriggeredNewCardLKICopy | RememberChanged$ True | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | ConditionCompare$ GE1 | UnlessCost$ U U U | UnlessPayer$ You | UnlessSwitched$ True +S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddSVar$ Sac SVar:NonStackingAttachEffect:True +SVar:Sac:SVar:SacMe:3 Oracle:Enchant creature\nWhen enchanted creature dies, return that card to its owner's hand. If that card is returned to its owner's hand this way, you may pay {U}{U}{U}. If you do, return Puppet Master to its owner's hand. diff --git a/forge-gui/res/cardsfolder/r/ragnar.txt b/forge-gui/res/cardsfolder/r/ragnar.txt index 7c0af61beb0..97f9ab1eb9f 100644 --- a/forge-gui/res/cardsfolder/r/ragnar.txt +++ b/forge-gui/res/cardsfolder/r/ragnar.txt @@ -4,4 +4,5 @@ Types:Legendary Creature Human Cleric PT:2/2 A:AB$ Regenerate | Cost$ G W U T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Regenerate target creature. AI:RemoveDeck:All +DeckHas:Keyword$Regenerate Oracle:{G}{W}{U}, {T}: Regenerate target creature. diff --git a/forge-gui/res/cardsfolder/r/rapid_fire.txt b/forge-gui/res/cardsfolder/r/rapid_fire.txt index d901949751c..af6d1345319 100644 --- a/forge-gui/res/cardsfolder/r/rapid_fire.txt +++ b/forge-gui/res/cardsfolder/r/rapid_fire.txt @@ -5,4 +5,5 @@ Text:Cast this spell only before blockers are declared. A:SP$ Pump | Cost$ 3 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ First Strike | ActivationPhases$ Upkeep->Declare Attackers | ActivationFirstCombat$ True | SubAbility$ DBPump | SpellDescription$ Target creature gains first strike until end of turn. If it doesn't have rampage, that creature gains rampage 2 until end of turn. (Whenever the creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.) SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Rampage:2 | ConditionDefined$ Targeted | ConditionPresent$ Creature.withoutRampage AI:RemoveDeck:All +DeckHas:Keyword$FirstStrike|Rampage Oracle:Cast this spell only before blockers are declared.\nTarget creature gains first strike until end of turn. If it doesn't have rampage, that creature gains rampage 2 until end of turn. (Whenever the creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/r/rasputin_dreamweaver.txt b/forge-gui/res/cardsfolder/r/rasputin_dreamweaver.txt index 8b7967e3fce..4937323a179 100644 --- a/forge-gui/res/cardsfolder/r/rasputin_dreamweaver.txt +++ b/forge-gui/res/cardsfolder/r/rasputin_dreamweaver.txt @@ -8,4 +8,5 @@ A:AB$ Mana | Cost$ SubCounter<1/DREAM> | Produced$ C | SpellDescription$ Add {C} A:AB$ PreventDamage | Cost$ SubCounter<1/DREAM> | Defined$ Self | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to CARDNAME this turn. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | IsPresent$ Card.Self+startedTheTurnUntapped | TriggerDescription$ At the beginning of your upkeep, if CARDNAME started the turn untapped, put a dream counter on it. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ DREAM | CounterNum$ 1 +DeckHas:Ability$Counters Oracle:Rasputin Dreamweaver enters the battlefield with seven dream counters on it.\nRemove a dream counter from Rasputin: Add {C}.\nRemove a dream counter from Rasputin: Prevent the next 1 damage that would be dealt to Rasputin this turn.\nAt the beginning of your upkeep, if Rasputin started the turn untapped, put a dream counter on it.\nRasputin can't have more than seven dream counters on it. diff --git a/forge-gui/res/cardsfolder/r/recall.txt b/forge-gui/res/cardsfolder/r/recall.txt index 890c951bcfc..b620f3bc2e8 100644 --- a/forge-gui/res/cardsfolder/r/recall.txt +++ b/forge-gui/res/cardsfolder/r/recall.txt @@ -8,4 +8,6 @@ SVar:Cleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid SVar:Y:Remembered$Amount AI:RemoveDeck:All +DeckHas:Ability$Discard|Graveyard +DeckHints:Ability$Mill|Graveyard Oracle:Discard X cards, then return a card from your graveyard to your hand for each card discarded this way. Exile Recall. diff --git a/forge-gui/res/cardsfolder/r/reconstruction.txt b/forge-gui/res/cardsfolder/r/reconstruction.txt index 4ca7c8d75f1..941d7470d24 100644 --- a/forge-gui/res/cardsfolder/r/reconstruction.txt +++ b/forge-gui/res/cardsfolder/r/reconstruction.txt @@ -2,4 +2,7 @@ Name:Reconstruction ManaCost:U Types:Sorcery A:SP$ ChangeZone | Cost$ U | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Choose target artifact card in your graveyard | ValidTgts$ Artifact.YouCtrl | SpellDescription$ Return target artifact card from your graveyard to your hand. +DeckHas:Ability$Graveyard +DeckNeeds:Type$Artifact +DeckHints:Ability$Mill Oracle:Return target artifact card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/r/red_mana_battery.txt b/forge-gui/res/cardsfolder/r/red_mana_battery.txt index e84a79f6ce5..36da66af978 100644 --- a/forge-gui/res/cardsfolder/r/red_mana_battery.txt +++ b/forge-gui/res/cardsfolder/r/red_mana_battery.txt @@ -6,4 +6,6 @@ A:AB$ Mana | Cost$ T SubCounter | Produced$ R | AILogic$ ManaRitualBat SVar:DBMana: DB$ Mana | Produced$ R | Amount$ X SVar:X:Count$xPaid AI:RemoveDeck:Random +DeckHas:Ability$Counters +DeckHints:Color$Red Oracle:{2}, {T}: Put a charge counter on Red Mana Battery.\n{T}, Remove any number of charge counters from Red Mana Battery: Add {R}, then add an additional {R} for each charge counter removed this way. diff --git a/forge-gui/res/cardsfolder/r/reverse_polarity.txt b/forge-gui/res/cardsfolder/r/reverse_polarity.txt index 6e73825c3a9..0a1cf2027fb 100644 --- a/forge-gui/res/cardsfolder/r/reverse_polarity.txt +++ b/forge-gui/res/cardsfolder/r/reverse_polarity.txt @@ -4,4 +4,5 @@ Types:Instant A:SP$ GainLife | Cost$ W W | Defined$ You | LifeAmount$ X | SpellDescription$ You gain X life, where X is twice the damage dealt to you so far this turn by artifacts. SVar:X:Count$YourTypeDamageThisTurn Artifact/Times.2 AI:RemoveDeck:Random +DeckHas:Ability$LifeGain Oracle:You gain X life, where X is twice the damage dealt to you so far this turn by artifacts. diff --git a/forge-gui/res/cardsfolder/r/rohgahh_of_kher_keep.txt b/forge-gui/res/cardsfolder/r/rohgahh_of_kher_keep.txt index aaff608cd94..e0c320b5424 100644 --- a/forge-gui/res/cardsfolder/r/rohgahh_of_kher_keep.txt +++ b/forge-gui/res/cardsfolder/r/rohgahh_of_kher_keep.txt @@ -8,6 +8,6 @@ SVar:DBChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | AILo SVar:DBGainControl:DB$ GainControl | NewController$ Player.Chosen | AllValid$ Card.Self,Creature.YouCtrl+namedKobolds of Kher Keep | SubAbility$ DBClearChosen SVar:DBClearChosen:DB$ Cleanup | ClearChosenPlayer$ True S:Mode$ Continuous | Affected$ Creature.YouCtrl+namedKobolds of Kher Keep | AddPower$ 2 | AddToughness$ 2 | Description$ Creatures you control named Kobolds of Kher Keep get +2/+2. -DeckHints:Name$Kobolds of Kher Keep +DeckHints:Name$Kobolds of Kher Keep & Type$Kobold SVar:PlayMain1:TRUE Oracle:At the beginning of your upkeep, you may pay {R}{R}{R}. If you don't, tap Rohgahh of Kher Keep and all creatures named Kobolds of Kher Keep, then an opponent gains control of them.\nCreatures you control named Kobolds of Kher Keep get +2/+2. diff --git a/forge-gui/res/cardsfolder/s/sage_of_lat_nam.txt b/forge-gui/res/cardsfolder/s/sage_of_lat_nam.txt index afade2ee1f8..ef55d72e43d 100644 --- a/forge-gui/res/cardsfolder/s/sage_of_lat_nam.txt +++ b/forge-gui/res/cardsfolder/s/sage_of_lat_nam.txt @@ -4,4 +4,6 @@ Types:Creature Human Artificer PT:1/2 A:AB$ Draw | Cost$ T Sac<1/Artifact> | NumCards$ 1 | SpellDescription$ Draw a card. AI:RemoveDeck:Random +DeckNeeds:Type$Artifact +DeckHas:Ability$Sacrifice Oracle:{T}, Sacrifice an artifact: Draw a card. diff --git a/forge-gui/res/cardsfolder/s/seafarers_quay.txt b/forge-gui/res/cardsfolder/s/seafarers_quay.txt index 2ee1b727190..a9910cb8e95 100644 --- a/forge-gui/res/cardsfolder/s/seafarers_quay.txt +++ b/forge-gui/res/cardsfolder/s/seafarers_quay.txt @@ -3,4 +3,5 @@ ManaCost:no cost Types:Land S:Mode$ Continuous | Affected$ Creature.Blue+Legendary | AddKeyword$ Bands with Other Legendary Creatures | Description$ Blue legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) AI:RemoveDeck:All +DeckNeeds:Type$Legendary & Color$Blue Oracle:Blue legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) diff --git a/forge-gui/res/cardsfolder/s/serpent_generator.txt b/forge-gui/res/cardsfolder/s/serpent_generator.txt index ca72255f6ef..96cdd91bb1d 100644 --- a/forge-gui/res/cardsfolder/s/serpent_generator.txt +++ b/forge-gui/res/cardsfolder/s/serpent_generator.txt @@ -2,4 +2,6 @@ Name:Serpent Generator ManaCost:6 Types:Artifact A:AB$ Token | Cost$ 4 T | TokenAmount$ 1 | TokenScript$ c_1_1_a_snake_poison | TokenOwner$ You | SpellDescription$ Create a 1/1 colorless Snake artifact creature token. It has "Whenever this creature deals damage to a player, that player gets a poison counter." (A player with ten or more poison counters loses the game.) +DeckHas:Ability$Token & Type$Snake +DeckHints:Keyword$Infect Oracle:{4}, {T}: Create a 1/1 colorless Snake artifact creature token. It has "Whenever this creature deals damage to a player, that player gets a poison counter." (A player with ten or more poison counters loses the game.) diff --git a/forge-gui/res/cardsfolder/s/solkanar_the_swamp_king.txt b/forge-gui/res/cardsfolder/s/solkanar_the_swamp_king.txt index 11b6813ddb4..9d92f0de688 100644 --- a/forge-gui/res/cardsfolder/s/solkanar_the_swamp_king.txt +++ b/forge-gui/res/cardsfolder/s/solkanar_the_swamp_king.txt @@ -5,4 +5,5 @@ PT:5/5 K:Swampwalk T:Mode$ SpellCast | ValidCard$ Card.Black | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a player casts a black spell, you gain 1 life. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +DeckHas:Ability$LifeGain Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\nWhenever a player casts a black spell, you gain 1 life. diff --git a/forge-gui/res/cardsfolder/s/spectral_cloak.txt b/forge-gui/res/cardsfolder/s/spectral_cloak.txt index 559ace8e85e..0941e86e73e 100644 --- a/forge-gui/res/cardsfolder/s/spectral_cloak.txt +++ b/forge-gui/res/cardsfolder/s/spectral_cloak.txt @@ -4,4 +4,5 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ U U | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy+untapped | AddKeyword$ Shroud | Description$ Enchanted creature has shroud as long as it's untapped. (It can't be the target of spells or abilities.) +DeckHas:Keyword$Shroud Oracle:Enchant creature\nEnchanted creature has shroud as long as it's untapped. (It can't be the target of spells or abilities.) diff --git a/forge-gui/res/cardsfolder/s/spirit_link.txt b/forge-gui/res/cardsfolder/s/spirit_link.txt index 1440f0ae498..034241afd07 100644 --- a/forge-gui/res/cardsfolder/s/spirit_link.txt +++ b/forge-gui/res/cardsfolder/s/spirit_link.txt @@ -7,4 +7,5 @@ T:Mode$ DamageDealtOnce | ValidSource$ Card.AttachedBy | Execute$ TrigGain | Tri SVar:TrigGain:DB$ GainLife | Defined$ You | LifeAmount$ X SVar:X:TriggerCount$DamageAmount SVar:LikeLifeLink:True +DeckHas:Ability$LifeGain Oracle:Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)\nWhenever enchanted creature deals damage, you gain that much life. diff --git a/forge-gui/res/cardsfolder/s/spirit_shackle.txt b/forge-gui/res/cardsfolder/s/spirit_shackle.txt index bf96cc2749b..850a70decf9 100644 --- a/forge-gui/res/cardsfolder/s/spirit_shackle.txt +++ b/forge-gui/res/cardsfolder/s/spirit_shackle.txt @@ -5,4 +5,5 @@ K:Enchant creature A:SP$ Attach | Cost$ B B | ValidTgts$ Creature | AILogic$ Curse T:Mode$ Taps | ValidCard$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever enchanted creature becomes tapped, put a -0/-2 counter on it. SVar:TrigPutCounter:DB$ PutCounter | Defined$ TriggeredCardLKICopy | CounterType$ M0M2 | CounterNum$ 1 +DeckHas:Ability$Counters Oracle:Enchant creature\nWhenever enchanted creature becomes tapped, put a -0/-2 counter on it. diff --git a/forge-gui/res/cardsfolder/s/spiritual_sanctuary.txt b/forge-gui/res/cardsfolder/s/spiritual_sanctuary.txt index e22e3155a2e..514057e8f93 100644 --- a/forge-gui/res/cardsfolder/s/spiritual_sanctuary.txt +++ b/forge-gui/res/cardsfolder/s/spiritual_sanctuary.txt @@ -3,4 +3,5 @@ ManaCost:2 W W Types:Enchantment T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | IsPresent$ Plains.ActivePlayerCtrl | PresentCompare$ GE1 | Execute$ TrigGainLife | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, if that player controls a Plains, they gain 1 life. SVar:TrigGainLife:DB$ GainLife | Defined$ TriggeredPlayer | LifeAmount$ 1 +DeckHas:Ability$LifeGain Oracle:At the beginning of each player's upkeep, if that player controls a Plains, they gain 1 life. diff --git a/forge-gui/res/cardsfolder/s/stangg.txt b/forge-gui/res/cardsfolder/s/stangg.txt index 246e021b1ec..84659223e89 100644 --- a/forge-gui/res/cardsfolder/s/stangg.txt +++ b/forge-gui/res/cardsfolder/s/stangg.txt @@ -9,4 +9,5 @@ SVar:TrigExile:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Dest SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsRemembered | Execute$ TrigSac | TriggerDescription$ When that token leaves the battlefield, sacrifice CARDNAME. SVar:TrigSac:DB$ Sacrifice | Defined$ Self | SubAbility$ DBCleanup +DeckHas:Ability$Token Oracle:When Stangg enters the battlefield, create Stangg Twin, a legendary 3/4 red and green Human Warrior creature token. Exile that token when Stangg leaves the battlefield. Sacrifice Stangg when that token leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/s/storm_world.txt b/forge-gui/res/cardsfolder/s/storm_world.txt index fd61e58ec62..2a17a36524c 100644 --- a/forge-gui/res/cardsfolder/s/storm_world.txt +++ b/forge-gui/res/cardsfolder/s/storm_world.txt @@ -5,4 +5,5 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ X SVar:X:Count$ValidHand Card.ActivePlayerCtrl/NMinus.4 AI:RemoveDeck:Random +DeckHints:Ability$Discard Oracle:At the beginning of each player's upkeep, Storm World deals X damage to that player, where X is 4 minus the number of cards in their hand. diff --git a/forge-gui/res/cardsfolder/s/su_chi.txt b/forge-gui/res/cardsfolder/s/su_chi.txt index a655fee2804..473de506a46 100644 --- a/forge-gui/res/cardsfolder/s/su_chi.txt +++ b/forge-gui/res/cardsfolder/s/su_chi.txt @@ -4,4 +4,5 @@ Types:Artifact Creature Construct PT:4/4 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigAddMana | TriggerDescription$ When CARDNAME dies, add {C}{C}{C}{C}. SVar:TrigAddMana:DB$ Mana | Produced$ C | Amount$ 4 +SVar:SacMe:4 Oracle:When Su-Chi dies, add {C}{C}{C}{C}. diff --git a/forge-gui/res/cardsfolder/s/syphon_soul.txt b/forge-gui/res/cardsfolder/s/syphon_soul.txt index 7a1469db63a..30face1b37e 100644 --- a/forge-gui/res/cardsfolder/s/syphon_soul.txt +++ b/forge-gui/res/cardsfolder/s/syphon_soul.txt @@ -4,4 +4,5 @@ Types:Sorcery A:SP$ DealDamage | Cost$ 2 B | Defined$ Player.Other | NumDmg$ 2 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 2 damage to each other player. You gain life equal to the damage dealt this way. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | StackDescription$ You gain life equal to the damage dealt this way. SVar:X:Count$TotalDamageDoneByThisTurn +DeckHas:Ability$LifeGain Oracle:Syphon Soul deals 2 damage to each other player. You gain life equal to the damage dealt this way. diff --git a/forge-gui/res/cardsfolder/t/tablet_of_epityr.txt b/forge-gui/res/cardsfolder/t/tablet_of_epityr.txt index 096fa51fd04..b92a5545862 100644 --- a/forge-gui/res/cardsfolder/t/tablet_of_epityr.txt +++ b/forge-gui/res/cardsfolder/t/tablet_of_epityr.txt @@ -3,4 +3,5 @@ ManaCost:1 Types:Artifact T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Artifact.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigGainLife | TriggerDescription$ Whenever an artifact you control is put into a graveyard from the battlefield, you may pay {1}. If you do, you gain 1 life. SVar:TrigGainLife:AB$GainLife | Cost$ 1 | Defined$ You | LifeAmount$ 1 +DeckHints:Type$Artifact Oracle:Whenever an artifact you control is put into a graveyard from the battlefield, you may pay {1}. If you do, you gain 1 life. diff --git a/forge-gui/res/cardsfolder/t/takklemaggot.txt b/forge-gui/res/cardsfolder/t/takklemaggot.txt index 1be38bd646d..97f6587b5e7 100644 --- a/forge-gui/res/cardsfolder/t/takklemaggot.txt +++ b/forge-gui/res/cardsfolder/t/takklemaggot.txt @@ -16,4 +16,5 @@ SVar:TrigUpkeep:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.IsRemembered | SVar:TrigDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ 1 AI:RemoveDeck:All AI:RemoveDeck:Random +DeckHas:Ability$Counters Oracle:Enchant creature\nAt the beginning of the upkeep of enchanted creature's controller, put a -0/-1 counter on that creature.\nWhen enchanted creature dies, that creature's controller chooses a creature that Takklemaggot could enchant. If the player does, return Takklemaggot to the battlefield under your control attached to that creature. If they don't, return Takklemaggot to the battlefield under your control as a non-Aura enchantment. It loses "enchant creature" and gains "At the beginning of that player's upkeep, Takklemaggot deals 1 damage to that player." diff --git a/forge-gui/res/cardsfolder/t/tetravus.txt b/forge-gui/res/cardsfolder/t/tetravus.txt index eb50c05718a..d297bb28d1a 100644 --- a/forge-gui/res/cardsfolder/t/tetravus.txt +++ b/forge-gui/res/cardsfolder/t/tetravus.txt @@ -9,4 +9,5 @@ SVar:TrigToken:AB$Token | Cost$ SubCounter | TokenAmount$ X | TokenScrip SVar:X:Count$xPaid T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounters | TriggerDescription$ At the beginning of your upkeep, you may exile any number of tokens created with CARDNAME. If you do, put that many +1/+1 counters on CARDNAME. SVar:TrigPutCounters:AB$PutCounter | Cost$ Exile | Defined$ Self | CounterType$ P1P1 | CounterNum$ X | CostDesc$ Exile any number of tokens put onto the battlefield with CARDNAME. +DeckHas:Ability$Token|Counters Oracle:Flying\nTetravus enters the battlefield with three +1/+1 counters on it.\nAt the beginning of your upkeep, you may remove any number of +1/+1 counters from Tetravus. If you do, create that many 1/1 colorless Tetravite artifact creature tokens. They each have flying and "This creature can't be enchanted."\nAt the beginning of your upkeep, you may exile any number of tokens created with Tetravus. If you do, put that many +1/+1 counters on Tetravus. diff --git a/forge-gui/res/cardsfolder/t/the_abyss.txt b/forge-gui/res/cardsfolder/t/the_abyss.txt index 040547612b9..c9893d7ee8b 100644 --- a/forge-gui/res/cardsfolder/t/the_abyss.txt +++ b/forge-gui/res/cardsfolder/t/the_abyss.txt @@ -4,4 +4,5 @@ Types:World Enchantment T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, destroy target nonartifact creature that player controls of their choice. It can't be regenerated. SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.nonArtifact+ActivePlayerCtrl | TgtPrompt$ Choose target nonartifact creature. | NoRegen$ True | TargetingPlayer$ TriggeredPlayer AI:RemoveDeck:Random +DeckHints:Type$Artifact|Thopter|Golem|Construct|Assembly-Worker|Myr Oracle:At the beginning of each player's upkeep, destroy target nonartifact creature that player controls of their choice. It can't be regenerated. diff --git a/forge-gui/res/cardsfolder/t/the_brute.txt b/forge-gui/res/cardsfolder/t/the_brute.txt index 5d89920eb7d..066db581538 100644 --- a/forge-gui/res/cardsfolder/t/the_brute.txt +++ b/forge-gui/res/cardsfolder/t/the_brute.txt @@ -5,4 +5,5 @@ K:Enchant creature A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | Description$ Enchanted creature gets +1/+0. A:AB$ Regenerate | Cost$ R R R | Defined$ Enchanted | SpellDescription$ Regenerate enchanted creature. +DeckHas:Keyword$Regenerate Oracle:Enchant creature\nEnchanted creature gets +1/+0.\n{R}{R}{R}: Regenerate enchanted creature. diff --git a/forge-gui/res/cardsfolder/t/the_rack.txt b/forge-gui/res/cardsfolder/t/the_rack.txt index 3b7656e43fb..d6916113b7d 100644 --- a/forge-gui/res/cardsfolder/t/the_rack.txt +++ b/forge-gui/res/cardsfolder/t/the_rack.txt @@ -2,7 +2,7 @@ Name:The Rack ManaCost:1 Types:Artifact K:ETBReplacement:Other:ChooseP -SVar:ChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | AILogic$ Curse | SpellDescription$ As CARDNAME enters the battlefield, choose an opponent. +SVar:ChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | AILogic$ Curse | AILogic$ MostCardsInHand | SpellDescription$ As CARDNAME enters the battlefield, choose an opponent. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.Chosen | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of the chosen player's upkeep, CARDNAME deals X damage to that player, where X is 3 minus the number of cards in their hand. SVar:TrigDamage:DB$ DealDamage | Defined$ ChosenPlayer | NumDmg$ X SVar:X:Count$InChosenHand/NMinus.3 diff --git a/forge-gui/res/cardsfolder/t/the_tabernacle_at_pendrell_vale.txt b/forge-gui/res/cardsfolder/t/the_tabernacle_at_pendrell_vale.txt index f8f7e7a9b20..18a3a12ee06 100644 --- a/forge-gui/res/cardsfolder/t/the_tabernacle_at_pendrell_vale.txt +++ b/forge-gui/res/cardsfolder/t/the_tabernacle_at_pendrell_vale.txt @@ -5,4 +5,8 @@ S:Mode$ Continuous | Affected$ Creature | AddTrigger$ TabernacleTrig | AddSVar$ SVar:TabernacleTrig:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TabernacleDestroy | TriggerDescription$ At the beginning of your upkeep, destroy CARDNAME unless you pay {1}. SVar:TabernacleDestroy:DB$ Destroy | Defined$ Self | UnlessPayer$ You | UnlessCost$ 1 AI:RemoveDeck:Random +SVar:NeedsToPlayVar:CountOpps GTCountMe +SVar:CountOpp:Count$Valid Creature.OppCtrl +SVar:CountMe:Count$Valid Creature.YouCtrl +DeckHints:Type$Enchantment|Planeswalker|Artifact|Instant|Sorcery Oracle:All creatures have "At the beginning of your upkeep, destroy this creature unless you pay {1}." diff --git a/forge-gui/res/cardsfolder/t/time_elemental.txt b/forge-gui/res/cardsfolder/t/time_elemental.txt index d6e379c35b4..af41b47d6d2 100644 --- a/forge-gui/res/cardsfolder/t/time_elemental.txt +++ b/forge-gui/res/cardsfolder/t/time_elemental.txt @@ -9,4 +9,5 @@ SVar:DelayedTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlay SVar:TrigSacrifice:DB$ SacrificeAll | Defined$ Self | Controller$ You | SubAbility$ DBDamage SVar:DBDamage:DB$ DealDamage | NumDmg$ 5 | Defined$ You AI:RemoveDeck:All +DeckHas:Ability$Sacrifice Oracle:When Time Elemental attacks or blocks, at end of combat, sacrifice it and it deals 5 damage to you.\n{2}{U}{U}, {T}: Return target permanent that isn't enchanted to its owner's hand. diff --git a/forge-gui/res/cardsfolder/t/titanias_song.txt b/forge-gui/res/cardsfolder/t/titanias_song.txt index 9030119a7d5..ae469abee95 100644 --- a/forge-gui/res/cardsfolder/t/titanias_song.txt +++ b/forge-gui/res/cardsfolder/t/titanias_song.txt @@ -9,4 +9,8 @@ SVar:AffectedX:Count$CardManaCost SVar:NonStackingEffect:True SVar:PlayMain1:ALWAYS AI:RemoveDeck:Random +SVar:NeedsToPlayVar:CountOpps GTCountMe +SVar:CountOpps:Count$Valid Artifact.OppCtrl/LimitMax.5 +SVar:CountMe:Count$Valid Artifact.YouCtrl +DeckHints:Type$Enchantment|Creature|Planeswalker Oracle:Each noncreature artifact loses all abilities and becomes an artifact creature with power and toughness each equal to its mana value. If Titania's Song leaves the battlefield, this effect continues until end of turn. diff --git a/forge-gui/res/cardsfolder/t/transmute_artifact.txt b/forge-gui/res/cardsfolder/t/transmute_artifact.txt index 100a5f72827..7f5dd82e6c3 100644 --- a/forge-gui/res/cardsfolder/t/transmute_artifact.txt +++ b/forge-gui/res/cardsfolder/t/transmute_artifact.txt @@ -14,6 +14,8 @@ SVar:CostNotPaid:DB$ ChangeZone | Origin$ Library | Destination$ Graveyard | NoL SVar:Y:Remembered$CardManaCost SVar:SackedCMC:Number$0 SVar:X:SVar$Y/Minus.SackedCMC -AI:RemoveDeck:All +AI:RemoveDeck:Random #ChangeType$ Card.IsRemembered +DeckHas:Ability$Sacrifice +DeckNeeds:Type$Artifact Oracle:Sacrifice an artifact. If you do, search your library for an artifact card. If that card's mana value is less than or equal to the sacrificed artifact's mana value, put it onto the battlefield. If it's greater, you may pay {X}, where X is the difference. If you do, put it onto the battlefield. If you don't, put it into its owner's graveyard. Then shuffle. diff --git a/forge-gui/res/cardsfolder/t/triassic_egg.txt b/forge-gui/res/cardsfolder/t/triassic_egg.txt index a1edf1debd9..7610b66bf87 100644 --- a/forge-gui/res/cardsfolder/t/triassic_egg.txt +++ b/forge-gui/res/cardsfolder/t/triassic_egg.txt @@ -5,4 +5,5 @@ A:AB$ PutCounter | Cost$ 3 T | CounterType$ HATCHLING | CounterNum$ 1 | SpellDes A:AB$ ChangeZone | Cost$ Sac<1/CARDNAME> | IsPresent$ Card.Self+counters_GE2_HATCHLING | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.YouCtrl | ChangeNum$ 1 | SpellDescription$ You may put a creature card from your hand onto the battlefield. A:AB$ ChangeZone | Cost$ Sac<1/CARDNAME> | IsPresent$ Card.Self+counters_GE2_HATCHLING | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature from your graveyard | SpellDescription$ Return target creature card from your graveyard to the battlefield. AI:RemoveDeck:All +DeckHas:Ability$Counters Oracle:{3}, {T}: Put a hatchling counter on Triassic Egg.\nSacrifice Triassic Egg: Choose one. Activate only if there are two or more hatchling counters on Triassic Egg.\n• You may put a creature card from your hand onto the battlefield.\n• Return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/t/triskelion.txt b/forge-gui/res/cardsfolder/t/triskelion.txt index ec22c17471a..963672e813e 100644 --- a/forge-gui/res/cardsfolder/t/triskelion.txt +++ b/forge-gui/res/cardsfolder/t/triskelion.txt @@ -4,4 +4,5 @@ Types:Artifact Creature Construct PT:1/1 K:etbCounter:P1P1:3 A:AB$ DealDamage | AILogic$ Triskelion | Cost$ SubCounter<1/P1P1> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. +DeckHas:Ability$Counters Oracle:Triskelion enters the battlefield with three +1/+1 counters on it.\nRemove a +1/+1 counter from Triskelion: It deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/u/unholy_citadel.txt b/forge-gui/res/cardsfolder/u/unholy_citadel.txt index d3ae94236f7..31f81f96e3d 100644 --- a/forge-gui/res/cardsfolder/u/unholy_citadel.txt +++ b/forge-gui/res/cardsfolder/u/unholy_citadel.txt @@ -4,4 +4,5 @@ Types:Land S:Mode$ Continuous | Affected$ Creature.Black+Legendary | AddKeyword$ Bands with Other Legendary Creatures | Description$ Black legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) AI:RemoveDeck:All SVar:NonStackingEffect:True +DeckNeeds:Type$Legendary & Color$Black Oracle:Black legendary creatures you control have "bands with other legendary creatures." (Any legendary creatures can attack in a band as long as at least one has "bands with other legendary creatures." Bands are blocked as a group. If at least two legendary creatures you control, one of which has "bands with other legendary creatures," are blocking or being blocked by the same creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) diff --git a/forge-gui/res/cardsfolder/u/urzas_avenger.txt b/forge-gui/res/cardsfolder/u/urzas_avenger.txt index 029c323ed61..48551cad57f 100644 --- a/forge-gui/res/cardsfolder/u/urzas_avenger.txt +++ b/forge-gui/res/cardsfolder/u/urzas_avenger.txt @@ -4,4 +4,5 @@ Types:Artifact Creature Shapeshifter PT:4/4 A:AB$ Pump | Cost$ 0 | NumAtt$ -1 | NumDef$ -1 | KWChoice$ Flying,Banding,First Strike,Trample | StackDescription$ SpellDescription | SpellDescription$ CARDNAME gets -1/-1 and gains your choice of banding, flying, first strike, or trample until end of turn. AI:RemoveDeck:All +DeckHas:Keyword$Banding|Flying|FirstStrike|Trample Oracle:{0}: Urza's Avenger gets -1/-1 and gains your choice of banding, flying, first strike, or trample until end of turn. (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.) diff --git a/forge-gui/res/cardsfolder/u/urzas_chalice.txt b/forge-gui/res/cardsfolder/u/urzas_chalice.txt index a96d373352e..4817f1e91c4 100644 --- a/forge-gui/res/cardsfolder/u/urzas_chalice.txt +++ b/forge-gui/res/cardsfolder/u/urzas_chalice.txt @@ -4,4 +4,5 @@ Types:Artifact T:Mode$ SpellCast | ValidCard$ Artifact | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigGainLife | TriggerDescription$ Whenever a player casts an artifact spell, you may pay {1}. If you do, you gain 1 life. SVar:TrigGainLife:AB$GainLife | Cost$ 1 | Defined$ You | LifeAmount$ 1 AI:RemoveDeck:Random +DeckHints:Type$Artifact Oracle:Whenever a player casts an artifact spell, you may pay {1}. If you do, you gain 1 life. diff --git a/forge-gui/res/cardsfolder/u/urzas_mine.txt b/forge-gui/res/cardsfolder/u/urzas_mine.txt index 89408226c62..aa58458a199 100644 --- a/forge-gui/res/cardsfolder/u/urzas_mine.txt +++ b/forge-gui/res/cardsfolder/u/urzas_mine.txt @@ -4,4 +4,6 @@ Types:Land Urza's Mine A:AB$ Mana | Cost$ T | Produced$ C | Amount$ UrzaAmount | SpellDescription$ Add {C}. If you control an Urza's Power-Plant and an Urza's Tower, add {C}{C} instead. SVar:UrzaAmount:Count$UrzaLands.2.1 AI:RemoveDeck:Random +DeckNeeds:Name$Urza's Power Plant|Urza's Tower +DeckHints:Type$Ugin|Karn|Urza|Construct|Assembly-Worker|Golem|Artifact|Eldrazi Oracle:{T}: Add {C}. If you control an Urza's Power-Plant and an Urza's Tower, add {C}{C} instead. diff --git a/forge-gui/res/cardsfolder/u/urzas_miter.txt b/forge-gui/res/cardsfolder/u/urzas_miter.txt index 5ee1e789910..a6a5c00111c 100644 --- a/forge-gui/res/cardsfolder/u/urzas_miter.txt +++ b/forge-gui/res/cardsfolder/u/urzas_miter.txt @@ -6,4 +6,5 @@ SVar:DelTrigChangeZone:DB$ DelayedTrigger | Mode$ ChangesZone | Static$ True | V SVar:TrigCleanup:DB$ Cleanup | ClearRemembered$ True | ClearTriggered$ True T:Mode$ ChangesZone | ValidCard$ Artifact.YouCtrl+IsNotRemembered | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever an artifact you control is put into a graveyard from the battlefield, if it wasn't sacrificed, you may pay {3}. If you do, draw a card. SVar:TrigDraw:AB$ Draw | Cost$ 3 | NumCards$ 1 | Defined$ You +DeckHints:Type$Artifact Oracle:Whenever an artifact you control is put into a graveyard from the battlefield, if it wasn't sacrificed, you may pay {3}. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/u/urzas_power_plant.txt b/forge-gui/res/cardsfolder/u/urzas_power_plant.txt index d10cadc798a..f48d6570f81 100644 --- a/forge-gui/res/cardsfolder/u/urzas_power_plant.txt +++ b/forge-gui/res/cardsfolder/u/urzas_power_plant.txt @@ -4,4 +4,6 @@ Types:Land Urza's Power-Plant A:AB$ Mana | Cost$ T | Produced$ C | Amount$ UrzaAmount | SpellDescription$ Add {C}. If you control an Urza's Mine and an Urza's Tower, add {C}{C} instead. SVar:UrzaAmount:Count$UrzaLands.2.1 AI:RemoveDeck:Random +DeckNeeds:Name$Urza's Tower|Urza's Mine +DeckHints:Type$Ugin|Karn|Urza|Construct|Assembly-Worker|Golem|Artifact|Eldrazi Oracle:{T}: Add {C}. If you control an Urza's Mine and an Urza's Tower, add {C}{C} instead. diff --git a/forge-gui/res/cardsfolder/u/urzas_tower.txt b/forge-gui/res/cardsfolder/u/urzas_tower.txt index 16d2d1430c7..7d8d1fbf90c 100644 --- a/forge-gui/res/cardsfolder/u/urzas_tower.txt +++ b/forge-gui/res/cardsfolder/u/urzas_tower.txt @@ -4,4 +4,6 @@ Types:Land Urza's Tower A:AB$ Mana | Cost$ T | Produced$ C | Amount$ UrzaAmount | SpellDescription$ Add {C}. If you control an Urza's Mine and an Urza's Power-Plant, add {C}{C}{C} instead. SVar:UrzaAmount:Count$UrzaLands.3.1 AI:RemoveDeck:Random +DeckNeeds:Name$Urza's Power Plant|Urza's Mine +DeckHints:Type$Ugin|Karn|Urza|Construct|Assembly-Worker|Golem|Artifact|Eldrazi Oracle:{T}: Add {C}. If you control an Urza's Mine and an Urza's Power-Plant, add {C}{C}{C} instead. diff --git a/forge-gui/res/cardsfolder/v/vaevictis_asmadi.txt b/forge-gui/res/cardsfolder/v/vaevictis_asmadi.txt index 821e6bb5de2..65c8af6ba8f 100644 --- a/forge-gui/res/cardsfolder/v/vaevictis_asmadi.txt +++ b/forge-gui/res/cardsfolder/v/vaevictis_asmadi.txt @@ -7,4 +7,5 @@ K:UpkeepCost:B R G A:AB$ Pump | Cost$ B | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. A:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. A:AB$ Pump | Cost$ G | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. +DeckHas:Ability$Sacrifice Oracle:Flying\nAt the beginning of your upkeep, sacrifice Vaevictis Asmadi unless you pay {B}{R}{G}.\n{B}: Vaevictis Asmadi gets +1/+0 until end of turn.\n{R}: Vaevictis Asmadi gets +1/+0 until end of turn.\n{G}: Vaevictis Asmadi gets +1/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/v/venarian_gold.txt b/forge-gui/res/cardsfolder/v/venarian_gold.txt index 90ea84152ba..f25571f3c39 100644 --- a/forge-gui/res/cardsfolder/v/venarian_gold.txt +++ b/forge-gui/res/cardsfolder/v/venarian_gold.txt @@ -10,4 +10,5 @@ S:Mode$ Continuous | Affected$ Creature.AttachedBy+counters_GE1_SLEEP | AddHidde T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ EnchantedController | TriggerZones$ Battlefield | Execute$ TrigRemoveCounter | TriggerDescription$ At the beginning of the upkeep of enchanted creature's controller, remove a sleep counter from that creature. SVar:TrigRemoveCounter:DB$ RemoveCounter | Defined$ Enchanted | CounterType$ SLEEP | CounterNum$ 1 SVar:X:Count$xPaid +DeckHas:Ability$Counters Oracle:Enchant creature\nWhen Venarian Gold enters the battlefield, tap enchanted creature and put X sleep counters on it.\nEnchanted creature doesn't untap during its controller's untap step if it has a sleep counter on it.\nAt the beginning of the upkeep of enchanted creature's controller, remove a sleep counter from that creature. diff --git a/forge-gui/res/cardsfolder/w/whirling_dervish.txt b/forge-gui/res/cardsfolder/w/whirling_dervish.txt index 1e4bc2ca94e..dc8db3bd7df 100644 --- a/forge-gui/res/cardsfolder/w/whirling_dervish.txt +++ b/forge-gui/res/cardsfolder/w/whirling_dervish.txt @@ -5,4 +5,5 @@ PT:1/1 K:Protection from black T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigPutCounter | IsPresent$ Card.Self+dealtDamageToOppThisTurn | TriggerDescription$ At the beginning of each end step, if CARDNAME dealt damage to an opponent this turn, put a +1/+1 counter on it. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +DeckHas:Ability$Counters Oracle:Protection from black\nAt the beginning of each end step, if Whirling Dervish dealt damage to an opponent this turn, put a +1/+1 counter on it. diff --git a/forge-gui/res/cardsfolder/w/white_mana_battery.txt b/forge-gui/res/cardsfolder/w/white_mana_battery.txt index ab5cbb293a3..53bbc7b8cb7 100644 --- a/forge-gui/res/cardsfolder/w/white_mana_battery.txt +++ b/forge-gui/res/cardsfolder/w/white_mana_battery.txt @@ -6,4 +6,5 @@ A:AB$ Mana | Cost$ T SubCounter | Produced$ W | AILogic$ ManaRitualBat SVar:DBMana: DB$ Mana | Produced$ W | Amount$ X SVar:X:Count$xPaid AI:RemoveDeck:Random +DeckHas:Ability$Counters Oracle:{2}, {T}: Put a charge counter on White Mana Battery.\n{T}, Remove any number of charge counters from White Mana Battery: Add {W}, then add an additional {W} for each charge counter removed this way. diff --git a/forge-gui/res/cardsfolder/w/wood_elemental.txt b/forge-gui/res/cardsfolder/w/wood_elemental.txt index 6e738c4f8fd..a71d9e76783 100644 --- a/forge-gui/res/cardsfolder/w/wood_elemental.txt +++ b/forge-gui/res/cardsfolder/w/wood_elemental.txt @@ -11,4 +11,5 @@ SVar:SacX:Count$Valid Forest.YouCtrl+untapped SVar:NeedsToPlayVar:SacX GE5 SVar:X:Remembered$Amount AI:RemoveDeck:Random +DeckHas:Ability$Sacrifice Oracle:As Wood Elemental enters the battlefield, sacrifice any number of untapped Forests.\nWood Elemental's power and toughness are each equal to the number of Forests sacrificed as it entered the battlefield. diff --git a/forge-gui/res/cardsfolder/x/xenic_poltergeist.txt b/forge-gui/res/cardsfolder/x/xenic_poltergeist.txt index e894971da54..ab644da3bb4 100644 --- a/forge-gui/res/cardsfolder/x/xenic_poltergeist.txt +++ b/forge-gui/res/cardsfolder/x/xenic_poltergeist.txt @@ -5,4 +5,5 @@ PT:1/1 A:AB$ Animate | Cost$ T | ValidTgts$ Artifact.nonCreature | TgtPrompt$ Select target noncreature artifact | Power$ X | Toughness$ X | Types$ Creature,Artifact | Duration$ UntilYourNextUpkeep | SpellDescription$ Until your next upkeep, target noncreature artifact becomes an artifact creature with power and toughness each equal to its mana value. SVar:X:Targeted$CardManaCost AI:RemoveDeck:All +DeckNeeds:Type$Artifact Oracle:{T}: Until your next upkeep, target noncreature artifact becomes an artifact creature with power and toughness each equal to its mana value. diff --git a/forge-gui/res/cardsfolder/y/yawgmoth_demon.txt b/forge-gui/res/cardsfolder/y/yawgmoth_demon.txt index 16e087348f4..67627ab45b9 100644 --- a/forge-gui/res/cardsfolder/y/yawgmoth_demon.txt +++ b/forge-gui/res/cardsfolder/y/yawgmoth_demon.txt @@ -12,4 +12,6 @@ SVar:DBElderSpawnCleanup:DB$ Cleanup | ClearRemembered$ True SVar:NeedsToPlayVar:Z GE3 SVar:Z:Count$Valid Artifact.YouCtrl+inZoneBattlefield AI:RemoveDeck:Random +DeckNeeds:Type$Artifact +DeckHas:Ability$Sacrifice Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nFirst strike (This creature deals combat damage before creatures without first strike.)\nAt the beginning of your upkeep, you may sacrifice an artifact. If you don't, tap Yawgmoth Demon and it deals 2 damage to you. diff --git a/forge-gui/res/tokenscripts/wolves_of_the_hunt.txt b/forge-gui/res/tokenscripts/wolves_of_the_hunt.txt index 52c66ecb6ec..869fab177f7 100644 --- a/forge-gui/res/tokenscripts/wolves_of_the_hunt.txt +++ b/forge-gui/res/tokenscripts/wolves_of_the_hunt.txt @@ -4,4 +4,5 @@ Colors:green Types:Creature Wolf PT:1/1 K:Bands with Other Creatures named Wolves of the Hunt +DeckHas:Ability$Token & Type$Wolf Oracle:Bands with other creatures named Wolves of the Hunt.