From 1ca6b8c56c38cd8a5912fca4056b3cdc563660f3 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Tue, 6 Sep 2022 18:54:14 +0000 Subject: [PATCH] Improved Domain handling (#1479) * Improved Domain handling * Card fixes * Update cards Co-authored-by: tool4EvEr --- forge-ai/src/main/java/forge/ai/AiController.java | 8 ++++++++ forge-game/src/main/java/forge/game/GameActionUtil.java | 6 ++---- forge-gui/res/cardsfolder/a/aven_trailblazer.txt | 1 - forge-gui/res/cardsfolder/b/brood_of_cockroaches.txt | 4 ++-- forge-gui/res/cardsfolder/e/exotic_curse.txt | 1 - forge-gui/res/cardsfolder/h/hiveheart_shaman.txt | 1 - forge-gui/res/cardsfolder/k/kavu_scout.txt | 1 - forge-gui/res/cardsfolder/m/magnigoth_treefolk.txt | 1 - forge-gui/res/cardsfolder/m/manaforce_mace.txt | 1 - forge-gui/res/cardsfolder/m/matca_rioters.txt | 1 - forge-gui/res/cardsfolder/n/notorious_throng.txt | 2 +- forge-gui/res/cardsfolder/p/power_armor.txt | 1 - forge-gui/res/cardsfolder/r/ravenous_trap.txt | 2 +- forge-gui/res/cardsfolder/s/strength_of_unity.txt | 1 - forge-gui/res/cardsfolder/t/thassas_intervention.txt | 2 +- forge-gui/res/cardsfolder/upcoming/artillery_blast.txt | 1 - forge-gui/res/cardsfolder/upcoming/bortuk_bonerattle.txt | 1 - forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt | 1 - forge-gui/res/cardsfolder/upcoming/furious_bellow.txt | 2 +- forge-gui/res/cardsfolder/upcoming/jodahs_codex.txt | 1 - forge-gui/res/cardsfolder/upcoming/leyline_binding.txt | 1 - .../res/cardsfolder/upcoming/llanowar_greenwidow.txt | 1 - forge-gui/res/cardsfolder/upcoming/merias_outrider.txt | 1 - .../res/cardsfolder/upcoming/nael_avizoa_aeronaut.txt | 1 - forge-gui/res/cardsfolder/upcoming/nishoba_brawler.txt | 1 - .../res/cardsfolder/upcoming/radha_coalition_warlord.txt | 1 - forge-gui/res/cardsfolder/upcoming/radhas_firebrand.txt | 1 - forge-gui/res/cardsfolder/upcoming/slimefoots_survey.txt | 1 - forge-gui/res/cardsfolder/upcoming/the_lady_of_otaria.txt | 4 ++-- forge-gui/res/cardsfolder/upcoming/the_mana_rig.txt | 2 +- .../res/cardsfolder/upcoming/the_weatherseed_treaty.txt | 1 - forge-gui/res/cardsfolder/v/vorinclex_voice_of_hunger.txt | 2 +- forge-gui/res/cardsfolder/w/wandering_goblins.txt | 1 - forge-gui/res/cardsfolder/w/wars_toll.txt | 4 ++-- forge-gui/res/cardsfolder/w/wayfaring_giant.txt | 1 - 35 files changed, 22 insertions(+), 40 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 4e26a7b288d..0b97eb2a91e 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -27,6 +27,7 @@ import forge.ai.ability.ExploreAi; import forge.ai.ability.LearnAi; import forge.ai.simulation.SpellAbilityPicker; import forge.card.CardStateName; +import forge.card.CardType; import forge.card.MagicColor; import forge.card.mana.ManaCost; import forge.deck.Deck; @@ -1615,6 +1616,13 @@ public class AiController { } for (String sv : card.getSVars().keySet()) { String varValue = card.getSVar(sv); + if (varValue.equals("Count$Domain")) { + for (String type : landToPlay.getType().getLandTypes()) { + if (CardType.isABasicLandType(type) && CardLists.getType(otb, type).isEmpty()) { + return true; + } + } + } if (varValue.startsWith("Count$Valid") || sv.equals("BuffedBy")) { if (varValue.contains("Land") || varValue.contains("Plains") || varValue.contains("Forest") || varValue.contains("Mountain") || varValue.contains("Island") || varValue.contains("Swamp") diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index 22f49d4fa62..d4ecc260d8b 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -580,11 +580,9 @@ public final class GameActionUtil { if (tr != null) { String n = o.split(":")[1]; if (host.wasCast() && n.equals("X")) { - CardCollectionView creatures = CardLists.filter(CardLists.filterControlledBy(game.getCardsIn - (ZoneType.Battlefield), activator), CardPredicates.Presets.CREATURES); + CardCollectionView creatures = activator.getCreaturesInPlay(); int max = Aggregates.max(creatures, CardPredicates.Accessors.fnGetNetPower); - int min = Aggregates.min(creatures, CardPredicates.Accessors.fnGetNetPower); - n = Integer.toString(pc.chooseNumber(sa, "Choose X for Casualty", min, max)); + n = Integer.toString(pc.chooseNumber(sa, "Choose X for Casualty", 0, max)); } final String casualtyCost = "Sac<1/Creature.powerGE" + n + "/creature with power " + n + " or greater>"; diff --git a/forge-gui/res/cardsfolder/a/aven_trailblazer.txt b/forge-gui/res/cardsfolder/a/aven_trailblazer.txt index 69783203d3d..b61b3c369b4 100644 --- a/forge-gui/res/cardsfolder/a/aven_trailblazer.txt +++ b/forge-gui/res/cardsfolder/a/aven_trailblazer.txt @@ -5,5 +5,4 @@ PT:2/* K:Flying S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetToughness$ X | Description$ Domain — CARDNAME's toughness is equal to the number of basic land types among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest Oracle:Flying\nDomain — Aven Trailblazer's toughness is equal to the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/b/brood_of_cockroaches.txt b/forge-gui/res/cardsfolder/b/brood_of_cockroaches.txt index a39f1b6465c..5cd4f83783c 100644 --- a/forge-gui/res/cardsfolder/b/brood_of_cockroaches.txt +++ b/forge-gui/res/cardsfolder/b/brood_of_cockroaches.txt @@ -3,8 +3,8 @@ ManaCost:1 B Types:Creature Insect PT:1/1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DelTrigLeaves | TriggerDescription$ When CARDNAME is put into your graveyard from the battlefield, at the beginning of the next end step, you lose 1 life and return CARDNAME to your hand. -SVar:DelTrigLeaves:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ DBLoseLife | TriggerDescription$ Lose 1 life and return CARDNAME to your hand. +SVar:DelTrigLeaves:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | RememberObjects$ TriggeredNewCardLKICopy | Execute$ DBLoseLife | TriggerDescription$ Lose 1 life and return CARDNAME to your hand. SVar:DBLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ 1 | SubAbility$ DBChange -SVar:DBChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand +SVar:DBChange:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Graveyard | Destination$ Hand SVar:SacMe:1 Oracle:When Brood of Cockroaches is put into your graveyard from the battlefield, at the beginning of the next end step, you lose 1 life and return Brood of Cockroaches to your hand. diff --git a/forge-gui/res/cardsfolder/e/exotic_curse.txt b/forge-gui/res/cardsfolder/e/exotic_curse.txt index 9dcfdd1923f..7d091190c26 100644 --- a/forge-gui/res/cardsfolder/e/exotic_curse.txt +++ b/forge-gui/res/cardsfolder/e/exotic_curse.txt @@ -5,5 +5,4 @@ K:Enchant creature A:SP$ Attach | Cost$ 2 B | ValidTgts$ Creature | AILogic$ Curse S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ -X | AddToughness$ -X | Description$ Domain — Enchanted creature gets -1/-1 for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest Oracle:Enchant creature\nDomain — Enchanted creature gets -1/-1 for each basic land type among lands you control. diff --git a/forge-gui/res/cardsfolder/h/hiveheart_shaman.txt b/forge-gui/res/cardsfolder/h/hiveheart_shaman.txt index 1e29d016479..ce24eecb574 100644 --- a/forge-gui/res/cardsfolder/h/hiveheart_shaman.txt +++ b/forge-gui/res/cardsfolder/h/hiveheart_shaman.txt @@ -8,7 +8,6 @@ A:AB$ Token | Cost$ 5 G | TokenScript$ g_1_1_insect | RememberTokens$ True | Sor SVar:DBCounters:DB$ PutCounter | Defined$ Remembered | CounterType$ P1P1 | CounterNum$ X | StackDescription$ None | SubAbility$ DBCleanup | SpellDescription$ Activate only as a sorcery. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest SVar:HasAttackEffect:TRUE DeckHints:Color$White|Blue|Red|Black DeckHas:Ability$Token|Counters diff --git a/forge-gui/res/cardsfolder/k/kavu_scout.txt b/forge-gui/res/cardsfolder/k/kavu_scout.txt index 983470c5723..0b1ddc61983 100644 --- a/forge-gui/res/cardsfolder/k/kavu_scout.txt +++ b/forge-gui/res/cardsfolder/k/kavu_scout.txt @@ -4,6 +4,5 @@ Types:Creature Kavu Scout PT:0/2 S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | Description$ Domain — CARDNAME gets +1/+0 for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — Kavu Scout gets +1/+0 for each basic land type among lands you control. diff --git a/forge-gui/res/cardsfolder/m/magnigoth_treefolk.txt b/forge-gui/res/cardsfolder/m/magnigoth_treefolk.txt index ce9c711f9d9..b15871c8f0d 100644 --- a/forge-gui/res/cardsfolder/m/magnigoth_treefolk.txt +++ b/forge-gui/res/cardsfolder/m/magnigoth_treefolk.txt @@ -12,5 +12,4 @@ SVar:I:Count$Valid Island.YouCtrl SVar:S:Count$Valid Swamp.YouCtrl SVar:M:Count$Valid Mountain.YouCtrl SVar:F:Count$Valid Forest.YouCtrl -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest Oracle:Domain — For each basic land type among lands you control, Magnigoth Treefolk has landwalk of that type. (It can't be blocked as long as defending player controls a land of that type.) diff --git a/forge-gui/res/cardsfolder/m/manaforce_mace.txt b/forge-gui/res/cardsfolder/m/manaforce_mace.txt index 9ec3295f7a6..7162141c461 100644 --- a/forge-gui/res/cardsfolder/m/manaforce_mace.txt +++ b/forge-gui/res/cardsfolder/m/manaforce_mace.txt @@ -4,5 +4,4 @@ Types:Artifact Equipment K:Equip:3 S:Mode$ Continuous | Affected$ Card.EquippedBy | AddPower$ X | AddToughness$ X | Description$ Domain — Equipped creature gets +1/+1 for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest Oracle:Domain — Equipped creature gets +1/+1 for each basic land type among lands you control.\nEquip {3} diff --git a/forge-gui/res/cardsfolder/m/matca_rioters.txt b/forge-gui/res/cardsfolder/m/matca_rioters.txt index af8e407b0a2..a5cc0db47be 100644 --- a/forge-gui/res/cardsfolder/m/matca_rioters.txt +++ b/forge-gui/res/cardsfolder/m/matca_rioters.txt @@ -4,7 +4,6 @@ Types:Creature Human Warrior PT:*/* S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ Domain — CARDNAME's power and toughness are each equal to the number of basic land types among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random SVar:NeedsToPlayVar:X GE2 Oracle:Domain — Matca Rioters's power and toughness are each equal to the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/n/notorious_throng.txt b/forge-gui/res/cardsfolder/n/notorious_throng.txt index da2a0930a3b..55b356a9fff 100644 --- a/forge-gui/res/cardsfolder/n/notorious_throng.txt +++ b/forge-gui/res/cardsfolder/n/notorious_throng.txt @@ -4,6 +4,6 @@ Types:Tribal Sorcery Rogue K:Prowl:5 U A:SP$ Token | Cost$ 3 U | TokenAmount$ X | TokenScript$ b_1_1_faerie_rogue_flying | TokenOwner$ You | SubAbility$ DBTakeTurn | SpellDescription$ Create X 1/1 black Faerie Rogue creature tokens with flying, where X is the damage dealt to your opponents this turn. If CARDNAME's prowl cost was paid, take an extra turn after this one. SVar:DBTakeTurn:DB$ AddTurn | NumTurns$ 1 | ConditionDefined$ Self | ConditionPresent$ Card.prowled -SVar:X:PlayerCountPropertyYou$DamageToOppsThisTurn +SVar:X:Count$BloodthirstAmount DeckNeeds:Type$Rogue Oracle:Prowl {5}{U} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.)\nCreate X 1/1 black Faerie Rogue creature tokens with flying, where X is the damage dealt to your opponents this turn. If this spell's prowl cost was paid, take an extra turn after this one. diff --git a/forge-gui/res/cardsfolder/p/power_armor.txt b/forge-gui/res/cardsfolder/p/power_armor.txt index 593e7dfa410..781faa9e7c9 100644 --- a/forge-gui/res/cardsfolder/p/power_armor.txt +++ b/forge-gui/res/cardsfolder/p/power_armor.txt @@ -3,6 +3,5 @@ ManaCost:4 Types:Artifact A:AB$ Pump | Cost$ 3 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ +X | PrecostDesc$ Domain — | SpellDescription$ Target creature gets +1/+1 until end of turn for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — {3}, {T}: Target creature gets +1/+1 until end of turn for each basic land type among lands you control. diff --git a/forge-gui/res/cardsfolder/r/ravenous_trap.txt b/forge-gui/res/cardsfolder/r/ravenous_trap.txt index 42a04ba02f5..af8bc7e2c52 100644 --- a/forge-gui/res/cardsfolder/r/ravenous_trap.txt +++ b/forge-gui/res/cardsfolder/r/ravenous_trap.txt @@ -3,6 +3,6 @@ ManaCost:2 B B Types:Instant Trap SVar:AltCost:Cost$ 0 | CheckSVar$ CardsToGraveyard | Description$ If an opponent had three or more cards put into their graveyard from anywhere this turn, you may pay {0} rather than pay this spell's mana cost. A:SP$ ChangeZoneAll | Cost$ 2 B B | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Player | TgtPrompt$ Select target player | ChangeType$ Card | StackDescription$ Exile all cards from {p:Targeted}'s graveyard. | SpellDescription$ Exile all cards from target player's graveyard. -SVar:CardsToGraveyard:PlayerCountOpponents$ConditionGE3 ThisTurnEntered_Graveyard_Card.YouCtrl +SVar:CardsToGraveyard:PlayerCountOpponents$ConditionGE3 ThisTurnEntered_Graveyard_Card.YouOwn AI:RemoveDeck:Random Oracle:If an opponent had three or more cards put into their graveyard from anywhere this turn, you may pay {0} rather than pay this spell's mana cost.\nExile all cards from target player's graveyard. diff --git a/forge-gui/res/cardsfolder/s/strength_of_unity.txt b/forge-gui/res/cardsfolder/s/strength_of_unity.txt index 60f948eff4a..0f956a3337b 100644 --- a/forge-gui/res/cardsfolder/s/strength_of_unity.txt +++ b/forge-gui/res/cardsfolder/s/strength_of_unity.txt @@ -5,6 +5,5 @@ K:Enchant creature A:SP$ Attach | Cost$ 3 W | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ X | AddToughness$ X | Description$ Domain — Enchanted creature gets +1/+1 for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Enchant creature\nDomain — Enchanted creature gets +1/+1 for each basic land type among lands you control. diff --git a/forge-gui/res/cardsfolder/t/thassas_intervention.txt b/forge-gui/res/cardsfolder/t/thassas_intervention.txt index 798ed84bfa6..ad165c8f7c4 100644 --- a/forge-gui/res/cardsfolder/t/thassas_intervention.txt +++ b/forge-gui/res/cardsfolder/t/thassas_intervention.txt @@ -2,7 +2,7 @@ Name:Thassa's Intervention ManaCost:X U U Types:Instant A:SP$ Charm | Cost$ X U U | Choices$ DBDig,DBCounter -SVar:DBDig:DB$ Dig | DigNum$ X | ChangeNum$ 2 | DestinationZone$ Hand | LibraryPosition$ 0 | RestRandomOrder$ True | SpellDescription$ Look at the top X cards of your library. Put up to two of them into your hand and the rest on the bottom of your library in a random order. +SVar:DBDig:DB$ Dig | DigNum$ X | ChangeNum$ 2 | DestinationZone$ Hand | LibraryPosition$ 0 | RestRandomOrder$ True | Optional$ True | SpellDescription$ Look at the top X cards of your library. Put up to two of them into your hand and the rest on the bottom of your library in a random order. SVar:DBCounter:DB$ Counter | TargetType$ Spell | ValidTgts$ Card | UnlessCost$ XX | UnlessPayer$ TargetedController | SpellDescription$ Counter target spell unless its controller pays twice {X}. SVar:X:Count$xPaid SVar:XX:SVar$X/Twice diff --git a/forge-gui/res/cardsfolder/upcoming/artillery_blast.txt b/forge-gui/res/cardsfolder/upcoming/artillery_blast.txt index a95d5be95a7..3585c717507 100644 --- a/forge-gui/res/cardsfolder/upcoming/artillery_blast.txt +++ b/forge-gui/res/cardsfolder/upcoming/artillery_blast.txt @@ -3,6 +3,5 @@ ManaCost:1 W Types:Instant A:SP$ DealDamage | ValidTgts$ Creature.tapped | TgtPrompt$ Select target tapped creature |NumDmg$ X | SpellDescription$ Domain — CARDNAME deals X damage to target tapped creature, where X is 1 plus the number of basic land types among lands you control. SVar:X:Count$Domain/Plus.1 -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — Artillery Blast deals X damage to target tapped creature, where X is 1 plus the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/upcoming/bortuk_bonerattle.txt b/forge-gui/res/cardsfolder/upcoming/bortuk_bonerattle.txt index b21ad37cf29..126950822e6 100644 --- a/forge-gui/res/cardsfolder/upcoming/bortuk_bonerattle.txt +++ b/forge-gui/res/cardsfolder/upcoming/bortuk_bonerattle.txt @@ -6,7 +6,6 @@ T:Mode$ ChangesZone | ValidCard$ Card.wasCastByYou+Self | Destination$ Battlefie SVar:TrigChangeZone:DB$ ChangeZone | ValidTgts$ Creature.YouOwn | Origin$ Graveyard | Destination$ Battlefield | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLEX | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcGTX SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest RemoveDeck:Random DeckHas:Ability$Graveyard Oracle:Domain — When Bortuk Bonerattle enters the battlefield, if you cast it, choose target creature card in your graveyard. Return that card to the battlefield if its mana value is less than or equal to the number of basic land types among lands you control. Otherwise, put it into your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt b/forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt index cc62349f1bd..65deb0e41ae 100644 --- a/forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt +++ b/forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt @@ -3,6 +3,5 @@ ManaCost:2 B B Types:Sorcery A:SP$ PumpAll | ValidCards$ Creature | NumAtt$ -X | NumDef$ -X | SpellDescription$ Domain — Each creature gets -X/-X until end of turn, where X is 1 plus the number of basic land types among lands you control. SVar:X:Count$Domain/Plus.1 -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — Each creature gets -X/-X until end of turn, where X is 1 plus the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/upcoming/furious_bellow.txt b/forge-gui/res/cardsfolder/upcoming/furious_bellow.txt index bb29c26fb63..dfe2814e794 100644 --- a/forge-gui/res/cardsfolder/upcoming/furious_bellow.txt +++ b/forge-gui/res/cardsfolder/upcoming/furious_bellow.txt @@ -1,6 +1,6 @@ Name:Furious Bellow ManaCost:1 R Types:Instant -A:SP$ Pump | Cost$ R | ValidTgts$ Creature | NumAtt$ +3 | KW$ First Strike | SubAbility$ DBScry | SpellDescription$ Target creature gets +3/+0 and gains first strike until end of turn. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +A:SP$ Pump | ValidTgts$ Creature | NumAtt$ +3 | KW$ First Strike | SubAbility$ DBScry | SpellDescription$ Target creature gets +3/+0 and gains first strike until end of turn. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) SVar:DBScry:DB$ Scry Oracle:Target creature gets +3/+0 and gains first strike until end of turn. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/jodahs_codex.txt b/forge-gui/res/cardsfolder/upcoming/jodahs_codex.txt index 1f66dadee13..e3937ea4619 100644 --- a/forge-gui/res/cardsfolder/upcoming/jodahs_codex.txt +++ b/forge-gui/res/cardsfolder/upcoming/jodahs_codex.txt @@ -3,6 +3,5 @@ ManaCost:5 Types:Artifact A:AB$ Draw | Cost$ 5 T | NumCards$ 1 | ReduceCost$ X | SpellDescription$ Draw a card. This ability costs {1} less to activate for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — {5}, {T}: Draw a card. This ability costs {1} less to activate for each basic land type among lands you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/leyline_binding.txt b/forge-gui/res/cardsfolder/upcoming/leyline_binding.txt index 457f3eea960..548b03b67d5 100644 --- a/forge-gui/res/cardsfolder/upcoming/leyline_binding.txt +++ b/forge-gui/res/cardsfolder/upcoming/leyline_binding.txt @@ -7,6 +7,5 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigExile:DB$ ChangeZone | TargetMin$ 1 | IsCurse$ True | Duration$ UntilHostLeavesPlay | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Choose target nonland permanent an opponent controls | Origin$ Battlefield | Destination$ Exile SVar:X:Count$Domain SVar:OblivionRing:TRUE -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Flash\nDomain — This spell costs {1} less to cast for each basic land type among lands you control.\nWhen Leyline Binding enters the battlefield, exile target nonland permanent an opponent controls until Leyline Binding leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/llanowar_greenwidow.txt b/forge-gui/res/cardsfolder/upcoming/llanowar_greenwidow.txt index d67dc09bcca..9f8e30a4283 100644 --- a/forge-gui/res/cardsfolder/upcoming/llanowar_greenwidow.txt +++ b/forge-gui/res/cardsfolder/upcoming/llanowar_greenwidow.txt @@ -11,6 +11,5 @@ SVar:Exile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ SVar:DiscardMe:2 SVar:SacMe:1 SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:{T}:Reach, trample\nDomain — {7}{G}: Return Llanowar Greenwidow from your graveyard to the battlefield tapped. It gains "If this permanent would leave the battlefield, exile it instead." This ability costs {1} less to activate for each basic land type among lands you control. diff --git a/forge-gui/res/cardsfolder/upcoming/merias_outrider.txt b/forge-gui/res/cardsfolder/upcoming/merias_outrider.txt index 84221a3501d..76bc3e4615e 100644 --- a/forge-gui/res/cardsfolder/upcoming/merias_outrider.txt +++ b/forge-gui/res/cardsfolder/upcoming/merias_outrider.txt @@ -6,6 +6,5 @@ K:Reach T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Domain — When CARDNAME enters the battlefield, it deals damage to each opponent equal to the number of basic land types among lands you control. SVar:TrigDamage:DB$ DealDamage | Defined$ Opponent | NumDmg$ X SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Reach\nDomain — When Meria's Outrider enters the battlefield, it deals damage to each opponent equal to the number of basic land types among lands you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/nael_avizoa_aeronaut.txt b/forge-gui/res/cardsfolder/upcoming/nael_avizoa_aeronaut.txt index 1a0d8991ea6..35b441d4b60 100644 --- a/forge-gui/res/cardsfolder/upcoming/nael_avizoa_aeronaut.txt +++ b/forge-gui/res/cardsfolder/upcoming/nael_avizoa_aeronaut.txt @@ -7,6 +7,5 @@ T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ Tri SVar:TrigDig:DB$ Dig | DigNum$ X | Defined$ You | DestinationZone$ Library | RestRandomOrder$ True | LibraryPosition$ 0 | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ5 SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Flying\nDomain — Whenever Nael, Avizoa Aeronaut deals combat damage to a player, look at the top X cards of your library, where X is the number of basic land types among lands you control. Put up to one of them on top of your library and the rest on the bottom in a random order. Then if there are five basic land types among lands you control, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/nishoba_brawler.txt b/forge-gui/res/cardsfolder/upcoming/nishoba_brawler.txt index 88c2ff8161e..16c79b34632 100644 --- a/forge-gui/res/cardsfolder/upcoming/nishoba_brawler.txt +++ b/forge-gui/res/cardsfolder/upcoming/nishoba_brawler.txt @@ -5,6 +5,5 @@ PT:*/3 K:Trample S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | Description$ Domain — CARDNAME's power is each equal to the number of basic land types among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Trample\nDomain — Nishoba Brawler's power is equal to the number of basic land types among lands you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/radha_coalition_warlord.txt b/forge-gui/res/cardsfolder/upcoming/radha_coalition_warlord.txt index ca3ceaf3edf..9fee7973cf7 100644 --- a/forge-gui/res/cardsfolder/upcoming/radha_coalition_warlord.txt +++ b/forge-gui/res/cardsfolder/upcoming/radha_coalition_warlord.txt @@ -5,6 +5,5 @@ PT:3/3 T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Domain — Whenever CARDNAME becomes tapped, another target creature you control gets +X/+X until end of turn, where X is the number of basic land types among lands you control. SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select another target creature you control | NumAtt$ +X | NumDef$ +X SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — Whenever Radha, Coalition Warlord becomes tapped, another target creature you control gets +X/+X until end of turn, where X is the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/upcoming/radhas_firebrand.txt b/forge-gui/res/cardsfolder/upcoming/radhas_firebrand.txt index 22052263699..049d4118536 100644 --- a/forge-gui/res/cardsfolder/upcoming/radhas_firebrand.txt +++ b/forge-gui/res/cardsfolder/upcoming/radhas_firebrand.txt @@ -8,6 +8,5 @@ A:AB$ Pump | Cost$ 5 R | ReduceCost$ Y | Defined$ Self | NumAtt$ +2 | NumDef$ +2 SVar:X:Count$CardPower SVar:Y:Count$Domain SVar:HasAttackEffect:TRUE -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Whenever Radha's Firebrand attacks, target creature defending player controls with power less than Radha's Firebrand's power can't block this turn.\nDomain — {5}{R}: Radha's Firebrand gets +2/+2 until end of turn. This ability costs {1} less to activate for each basic land type among lands you control. Activate only once each turn. diff --git a/forge-gui/res/cardsfolder/upcoming/slimefoots_survey.txt b/forge-gui/res/cardsfolder/upcoming/slimefoots_survey.txt index 7da65deedf3..245bc0b605c 100644 --- a/forge-gui/res/cardsfolder/upcoming/slimefoots_survey.txt +++ b/forge-gui/res/cardsfolder/upcoming/slimefoots_survey.txt @@ -4,6 +4,5 @@ Types:Sorcery A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.hasABasicLandType | ChangeNum$ 2 | Tapped$ True | SubAbility$ DBDig | SpellDescription$ Domain — Search your library for up to two land cards that each have a basic land type, put them into the battlefield tapped, then shuffle. Look at the top X cards of your library, where X is the number of basic land types among lands you control. Put up to one of them on top of your library and the rest on the bottom of your library in a random order. SVar:DBDig:DB$ Dig | DigNum$ X | ChangeNum$ 1 | RestRandomOrder$ True | DestinationZone$ Library | LibraryPosition$ 0 SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — Search your library for up to two land cards that each have a basic land type, put them into the battlefield tapped, then shuffle. Look at the top X cards of your library, where X is the number of basic land types among lands you control. Put up to one of them on top of your library and the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/the_lady_of_otaria.txt b/forge-gui/res/cardsfolder/upcoming/the_lady_of_otaria.txt index 597fe3e6a35..05524142e5c 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_lady_of_otaria.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_lady_of_otaria.txt @@ -3,8 +3,8 @@ ManaCost:3 R G Types:Legendary Creature Avatar PT:5/5 SVar:AltCost:Cost$ tapXType<3/Creature.Dwarf> | Description$ You may tap three untapped Dwarves you control rather than pay this spell's mana cost. -T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigDig | CheckSVar$ X | SVarCompare$ GE1 | TriggerDescription$ At the beginning of each end step, if a land you controlled was put into your graveyard from the battlefield this turn, reveal the top four cards of your library. Put any number of Dwarf cards from among them into your hand and the rest on the bottom of your library in a random order. +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigDig | CheckSVar$ X | TriggerDescription$ At the beginning of each end step, if a land you controlled was put into your graveyard from the battlefield this turn, reveal the top four cards of your library. Put any number of Dwarf cards from among them into your hand and the rest on the bottom of your library in a random order. SVar:TrigDig:DB$ Dig | DigNum$ 4 | ChangeValid$ Dwarf | DestinationZone$ Hand | RestRandomOrder$ True | AnyNumber$ True -SVar:X:Count$ValidGraveyard Land.YouCtrl+ThisTurnEnteredFrom_Battlefield +SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Land.YouCtrl+YouOwn DeckNeeds:Type$Dwarf Oracle:You may tap three untapped Dwarves you control rather than pay this spell's mana cost.\nAt the beginning of each end step, if a land you controlled was put into your graveyard from the battlefield this turn, reveal the top four cards of your library. Put any number of Dwarf cards from among them into your hand and the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_mana_rig.txt b/forge-gui/res/cardsfolder/upcoming/the_mana_rig.txt index 7d5e67742f4..3690970d80a 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_mana_rig.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_mana_rig.txt @@ -3,7 +3,7 @@ ManaCost:3 Types:Legendary Artifact T:Mode$ SpellCast | ValidCard$ Card.MultiColor | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPowerStone | TriggerDescription$ Whenever you cast a multicolored spell, create a tapped Powerstone token. (It's an artifact with "T: Add C. This mana can't be spent to cast a nonartifact spell.") SVar:TrigPowerStone:DB$ Token | TokenAmount$ 1 | TokenTapped$ True | TokenScript$ c_a_powerstone | TokenOwner$ You -A:AB$ Dig | Cost$ T X X X | DigNum$ X | ChangeNum$ 2 | RestRandomOrder$ True | SpellDescription$ Look at the top X cards of your library. Put up to two of them into your hand and the rest on the bottom of your library in a random order. +A:AB$ Dig | Cost$ T X X X | DigNum$ X | ChangeNum$ 2 | RestRandomOrder$ True | Optional$ True | SpellDescription$ Look at the top X cards of your library. Put up to two of them into your hand and the rest on the bottom of your library in a random order. SVar:X:Count$xPaid DeckHas:Ability$Token & Type|Artifact Oracle:Whenever you cast a multicolored spell, create a tapped Powerstone token. (It's an artifact with "{T}: Add {C}. This mana can't be spent to cast a nonartifact spell.")\n{X}{X}{X}, {T}:Look at the top X cards of your library. Put up to two of them into your hand and the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/the_weatherseed_treaty.txt b/forge-gui/res/cardsfolder/upcoming/the_weatherseed_treaty.txt index 55595d873cf..e3f117c86ac 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_weatherseed_treaty.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_weatherseed_treaty.txt @@ -6,7 +6,6 @@ SVar:DBChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | SVar:DBToken:DB$ Token | TokenScript$ g_1_1_saproling | SpellDescription$ Create a 1/1 green Saproling creature token. SVar:DBDomain:DB$ Pump | ValidTgts$ Creature.YouCtrl | NumAtt$ +X | NumDef$ +X | KW$ Trample | TgtPrompt$ Select target creature you control | SpellDescription$ Domain — Target creature you control gets +X/+X and gains trample until end of turn, where X is the number of basic land types among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random DeckHas:Ability$Token & Type$Saproling Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI — Search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nII — Create a 1/1 green Saproling creature token.\nIII — Domain — Target creature you control gets +X/+X and gains trample until end of turn, where X is the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/v/vorinclex_voice_of_hunger.txt b/forge-gui/res/cardsfolder/v/vorinclex_voice_of_hunger.txt index bb0a8ffde68..4a41fa95834 100644 --- a/forge-gui/res/cardsfolder/v/vorinclex_voice_of_hunger.txt +++ b/forge-gui/res/cardsfolder/v/vorinclex_voice_of_hunger.txt @@ -5,6 +5,6 @@ PT:7/6 K:Trample T:Mode$ TapsForMana | ValidCard$ Land | Activator$ You | Execute$ TrigMana | TriggerZones$ Battlefield | Static$ True | TriggerDescription$ Whenever you tap a land for mana, add one mana of any type that land produced. SVar:TrigMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ You -T:Mode$ TapsForMana | ValidCard$ Land.OppCtrl | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever an opponent taps a land for mana, that land doesn't untap during its controller's next untap step. +T:Mode$ TapsForMana | ValidCard$ Land | Activator$ Opponent | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever an opponent taps a land for mana, that land doesn't untap during its controller's next untap step. SVar:TrigPump:DB$ Pump | Defined$ TriggeredCardLKICopy | Duration$ Permanent | KW$ HIDDEN This card doesn't untap during your next untap step. Oracle:Trample\nWhenever you tap a land for mana, add one mana of any type that land produced.\nWhenever an opponent taps a land for mana, that land doesn't untap during its controller's next untap step. diff --git a/forge-gui/res/cardsfolder/w/wandering_goblins.txt b/forge-gui/res/cardsfolder/w/wandering_goblins.txt index 8468f013268..b2bedb4485e 100644 --- a/forge-gui/res/cardsfolder/w/wandering_goblins.txt +++ b/forge-gui/res/cardsfolder/w/wandering_goblins.txt @@ -4,6 +4,5 @@ Types:Creature Goblin Warrior PT:0/3 A:AB$ Pump | Cost$ 3 | Defined$ Self | NumAtt$ +X | PrecostDesc$ Domain — | SpellDescription$ Wandering Goblins gets +1/+0 until end of turn for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — {3}: Wandering Goblins gets +1/+0 until end of turn for each basic land type among lands you control. diff --git a/forge-gui/res/cardsfolder/w/wars_toll.txt b/forge-gui/res/cardsfolder/w/wars_toll.txt index 0e082d1cf2a..e1fe5281dea 100644 --- a/forge-gui/res/cardsfolder/w/wars_toll.txt +++ b/forge-gui/res/cardsfolder/w/wars_toll.txt @@ -1,8 +1,8 @@ Name:War's Toll ManaCost:3 R Types:Enchantment -T:Mode$ TapsForMana | ValidCard$ Land.OppCtrl | TriggerZones$ Battlefield | Execute$ TrigTapAll | TriggerDescription$ Whenever an opponent taps a land for mana, tap all lands that player controls. -SVar:TrigTapAll:DB$ TapAll | Defined$ TriggeredPlayer | ValidCards$ Land +T:Mode$ TapsForMana | ValidCard$ Land | Activator$ Opponent | TriggerZones$ Battlefield | Execute$ TrigTapAll | TriggerDescription$ Whenever an opponent taps a land for mana, tap all lands that player controls. +SVar:TrigTapAll:DB$ TapAll | Defined$ TriggeredActivator | ValidCards$ Land S:Mode$ Continuous | Affected$ Creature.OppCtrl | AddKeyword$ If CARDNAME attacks, all creatures you control attack if able. | Description$ If a creature an opponent controls attacks, all creatures that player controls attack if able. SVar:NonStackingEffect:True Oracle:Whenever an opponent taps a land for mana, tap all lands that player controls.\nIf a creature an opponent controls attacks, all creatures that opponent controls attack if able. diff --git a/forge-gui/res/cardsfolder/w/wayfaring_giant.txt b/forge-gui/res/cardsfolder/w/wayfaring_giant.txt index ff99b66ebcc..9fd59bf3ad8 100644 --- a/forge-gui/res/cardsfolder/w/wayfaring_giant.txt +++ b/forge-gui/res/cardsfolder/w/wayfaring_giant.txt @@ -4,6 +4,5 @@ Types:Creature Giant PT:1/3 S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | AddToughness$ X | Description$ Domain — CARDNAME gets +1/+1 for each basic land type among lands you control. SVar:X:Count$Domain -SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest AI:RemoveDeck:Random Oracle:Domain — Wayfaring Giant gets +1/+1 for each basic land type among lands you control.