From baf1d969a8ed75874d8a400cf6a4b1a5747cf7c7 Mon Sep 17 00:00:00 2001 From: TRT <> Date: Wed, 8 Feb 2023 18:05:50 +0100 Subject: [PATCH] Cleanup some SVar --- .../forge/ai/simulation/GameStateEvaluator.java | 17 ++++++++--------- .../src/main/java/forge/game/card/Card.java | 1 - forge-gui/res/cardsfolder/a/ancient_animus.txt | 3 +-- .../res/cardsfolder/a/animists_awakening.txt | 3 +-- forge-gui/res/cardsfolder/a/arcbond.txt | 2 +- .../res/cardsfolder/b/blessing_of_belzenlok.txt | 3 +-- forge-gui/res/cardsfolder/b/burn_the_impure.txt | 3 +-- forge-gui/res/cardsfolder/b/burnout.txt | 3 +-- .../res/cardsfolder/c/calculated_dismissal.txt | 3 +-- forge-gui/res/cardsfolder/d/dark_dabbling.txt | 3 +-- forge-gui/res/cardsfolder/d/dark_petition.txt | 3 +-- forge-gui/res/cardsfolder/d/defy_death.txt | 3 +-- .../res/cardsfolder/e/exquisite_firecraft.txt | 3 +-- forge-gui/res/cardsfolder/g/gideons_phalanx.txt | 3 +-- forge-gui/res/cardsfolder/g/goatnap.txt | 3 +-- forge-gui/res/cardsfolder/h/hydroblast.txt | 3 +-- forge-gui/res/cardsfolder/j/jaded_response.txt | 3 +-- .../res/cardsfolder/k/kytheons_tactics.txt | 3 +-- .../res/cardsfolder/p/psychic_rebuttal.txt | 3 +-- forge-gui/res/cardsfolder/p/pyroblast.txt | 3 +-- forge-gui/res/cardsfolder/r/ravaging_blaze.txt | 3 +-- .../res/cardsfolder/r/return_upon_the_tide.txt | 3 +-- forge-gui/res/cardsfolder/s/send_to_sleep.txt | 3 +-- forge-gui/res/cardsfolder/s/starfall.txt | 3 +-- forge-gui/res/cardsfolder/u/unholy_hunger.txt | 3 +-- 25 files changed, 31 insertions(+), 55 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameStateEvaluator.java b/forge-ai/src/main/java/forge/ai/simulation/GameStateEvaluator.java index 32998d0bd79..ce4965686f5 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameStateEvaluator.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameStateEvaluator.java @@ -123,20 +123,20 @@ public class GameStateEvaluator { int opponentIndex = 1; int opponentLife = 0; for (Player opponent : aiPlayer.getOpponents()) { - debugPrint(" Opponent " + opponentIndex + " life: -" + opponent.getLife()); - opponentLife += opponent.getLife(); - opponentIndex++; + debugPrint(" Opponent " + opponentIndex + " life: -" + opponent.getLife()); + opponentLife += opponent.getLife(); + opponentIndex++; } score -= 2* opponentLife / (game.getPlayers().size() - 1); // evaluate mana base quality score += evalManaBase(game, aiPlayer, AIDeckStatistics.fromPlayer(aiPlayer)); // TODO deal with opponents. Do we want to use perfect information to evaluate their manabase? -// int opponentManaScore = 0; -// for (Player opponent : aiPlayer.getOpponents()) { -// opponentManaScore += evalManaBase(game, opponent); -// } -// score -= opponentManaScore / (game.getPlayers().size() - 1); + //int opponentManaScore = 0; + //for (Player opponent : aiPlayer.getOpponents()) { + // opponentManaScore += evalManaBase(game, opponent); + //} + //score -= opponentManaScore / (game.getPlayers().size() - 1); // TODO evaluate holding mana open for counterspells @@ -258,7 +258,6 @@ public class GameStateEvaluator { // The value should be more than the value of having a card in hand, so if a land has an // activated ability but not a mana ability, it will still be played. for (SpellAbility m: c.getNonManaAbilities()) { - if (!m.getPayCosts().hasTapCost()) { // probably a manland, rate it higher than a rainbow land value += 25; diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 4b9c7b0e565..311f1a252be 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -4425,7 +4425,6 @@ public class Card extends GameEntity implements Comparable, IHasSVars { storedTrigger.put(stAb, str, result); } return result; - } public final ReplacementEffect getReplacementEffectForStaticAbility(final String str, final StaticAbility stAb) { diff --git a/forge-gui/res/cardsfolder/a/ancient_animus.txt b/forge-gui/res/cardsfolder/a/ancient_animus.txt index c41c30f9b7d..a0968941706 100644 --- a/forge-gui/res/cardsfolder/a/ancient_animus.txt +++ b/forge-gui/res/cardsfolder/a/ancient_animus.txt @@ -1,8 +1,7 @@ Name:Ancient Animus ManaCost:1 G Types:Instant -A:SP$ PutCounter | Cost$ 1 G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | CounterType$ P1P1 | CounterNum$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | AILogic$ Fight | SubAbility$ DBFight | SpellDescription$ Put a +1/+1 counter on target creature you control if it's legendary. Then it fights target creature an opponent controls. (Each deals damage equal to its power to the other.) -SVar:X:Targeted$Valid Legendary +A:SP$ PutCounter | Cost$ 1 G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | CounterType$ P1P1 | CounterNum$ 1 | ConditionDefined$ Targeted | ConditionPresent$ Legendary | AILogic$ Fight | SubAbility$ DBFight | SpellDescription$ Put a +1/+1 counter on target creature you control if it's legendary. Then it fights target creature an opponent controls. (Each deals damage equal to its power to the other.) SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.OppCtrl | AILogic$ Always | TgtPrompt$ Choose target creature an opponent controls DeckHas:Ability$Counters Oracle:Put a +1/+1 counter on target creature you control if it's legendary. Then it fights target creature an opponent controls. (Each deals damage equal to its power to the other.) diff --git a/forge-gui/res/cardsfolder/a/animists_awakening.txt b/forge-gui/res/cardsfolder/a/animists_awakening.txt index 4201f5bef1d..43a8606528a 100644 --- a/forge-gui/res/cardsfolder/a/animists_awakening.txt +++ b/forge-gui/res/cardsfolder/a/animists_awakening.txt @@ -2,7 +2,6 @@ Name:Animist's Awakening ManaCost:X G Types:Sorcery A:SP$ Dig | Cost$ X G | DigNum$ X | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | RememberChanged$ True | RestRandomOrder$ True | SubAbility$ DBUntap | SpellDescription$ Reveal the top X cards of your library. Put all land cards from among them onto the battlefield tapped and the rest on the bottom of your library in a random order. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, untap those lands. -SVar:DBUntap:DB$ Untap | Defined$ Remembered | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE2 +SVar:DBUntap:DB$ Untap | Defined$ Remembered | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 SVar:X:Count$xPaid -SVar:Y:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn Oracle:Reveal the top X cards of your library. Put all land cards from among them onto the battlefield tapped and the rest on the bottom of your library in a random order.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, untap those lands. diff --git a/forge-gui/res/cardsfolder/a/arcbond.txt b/forge-gui/res/cardsfolder/a/arcbond.txt index 14ac71e7aea..e18029eacdb 100644 --- a/forge-gui/res/cardsfolder/a/arcbond.txt +++ b/forge-gui/res/cardsfolder/a/arcbond.txt @@ -1,7 +1,7 @@ Name:Arcbond ManaCost:2 R Types:Instant -A:SP$ Effect | Cost$ 2 R | ValidTgts$ Creature | Triggers$ TrigDealtDmg | ForgetOnMoved$ Battlefield | RememberObjects$ Targeted | SpellDescription$ Choose target creature. Whenever that creature is dealt damage this turn, it deals that much damage to each other creature and each player. +A:SP$ Effect | Cost$ 2 R | ValidTgts$ Creature | Triggers$ TrigDealtDmg | ExileOnMoved$ Battlefield | RememberObjects$ Targeted | SpellDescription$ Choose target creature. Whenever that creature is dealt damage this turn, it deals that much damage to each other creature and each player. SVar:TrigDealtDmg:Mode$ DamageDoneOnce | ValidTarget$ Card.IsRemembered | Execute$ DmgOther | TriggerDescription$ Whenever that creature is dealt damage this turn, it deals that much damage to each other creature and each player. SVar:DmgOther:DB$ DamageAll | ValidCards$ Creature.IsNotRemembered | ValidPlayers$ Player | NumDmg$ X | DamageSource$ Remembered SVar:X:TriggerCount$DamageAmount diff --git a/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt b/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt index 9d157487866..491cdcc9d43 100644 --- a/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt +++ b/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt @@ -2,6 +2,5 @@ Name:Blessing of Belzenlok ManaCost:B Types:Instant A:SP$ Pump | Cost$ B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +1 | SubAbility$ DBPump | SpellDescription$ Target creature gets +2/+1 until end of turn. If it's legendary, it also gains lifelink until end of turn. -SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Lifelink | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 -SVar:X:Targeted$Valid Legendary +SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Lifelink | ConditionDefined$ Targeted | ConditionPresent$ Legendary Oracle:Target creature gets +2/+1 until end of turn. If it's legendary, it also gains lifelink until end of turn. diff --git a/forge-gui/res/cardsfolder/b/burn_the_impure.txt b/forge-gui/res/cardsfolder/b/burn_the_impure.txt index 11a36c995c7..aff2b83f6e5 100644 --- a/forge-gui/res/cardsfolder/b/burn_the_impure.txt +++ b/forge-gui/res/cardsfolder/b/burn_the_impure.txt @@ -2,6 +2,5 @@ Name:Burn the Impure ManaCost:1 R Types:Instant A:SP$ DealDamage | Cost$ 1 R | NumDmg$ 3 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDamage | SpellDescription$ CARDNAME deals 3 damage to target creature. If that creature has infect, CARDNAME deals 3 damage to that creature's controller. -SVar:DBDamage:DB$ DealDamage | Defined$ TargetedController | NumDmg$ 3 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 -SVar:X:Targeted$Valid Creature.withInfect +SVar:DBDamage:DB$ DealDamage | Defined$ TargetedController | NumDmg$ 3 | ConditionDefined$ Targeted | ConditionPresent$ Creature.withInfect Oracle:Burn the Impure deals 3 damage to target creature. If that creature has infect, Burn the Impure deals 3 damage to that creature's controller. diff --git a/forge-gui/res/cardsfolder/b/burnout.txt b/forge-gui/res/cardsfolder/b/burnout.txt index 4b09d99f1de..b4da2c549c7 100644 --- a/forge-gui/res/cardsfolder/b/burnout.txt +++ b/forge-gui/res/cardsfolder/b/burnout.txt @@ -1,9 +1,8 @@ Name:Burnout ManaCost:1 R Types:Instant -A:SP$ Counter | Cost$ 1 R | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Instant | AITgts$ Card.Blue | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SpellDescription$ Counter target instant spell if it's blue. Draw a card at the beginning of the next turn's upkeep. | SubAbility$ DelTrigSlowtrip +A:SP$ Counter | Cost$ 1 R | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Instant | AITgts$ Card.Blue | ConditionDefined$ Targeted | ConditionPresent$ Spell.Blue | SpellDescription$ Counter target instant spell if it's blue. Draw a card at the beginning of the next turn's upkeep. | SubAbility$ DelTrigSlowtrip SVar:DelTrigSlowtrip:DB$ DelayedTrigger | NextTurn$ True | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card. SVar:DrawSlowtrip:DB$ Draw | NumCards$ 1 | Defined$ You -SVar:X:Targeted$Valid Card.Blue AI:RemoveDeck:Random Oracle:Counter target instant spell if it's blue.\nDraw a card at the beginning of the next turn's upkeep. diff --git a/forge-gui/res/cardsfolder/c/calculated_dismissal.txt b/forge-gui/res/cardsfolder/c/calculated_dismissal.txt index 1277118b972..17cdb58bedc 100644 --- a/forge-gui/res/cardsfolder/c/calculated_dismissal.txt +++ b/forge-gui/res/cardsfolder/c/calculated_dismissal.txt @@ -2,6 +2,5 @@ Name:Calculated Dismissal ManaCost:2 U Types:Instant A:SP$ Counter | Cost$ 2 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | UnlessCost$ 3 | SubAbility$ DBScry | SpellDescription$ Counter target spell unless its controller pays {3}. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, scry 2. -SVar:DBScry:DB$ Scry | ScryNum$ 2 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:DBScry:DB$ Scry | ScryNum$ 2 | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 Oracle:Counter target spell unless its controller pays {3}.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, scry 2. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) diff --git a/forge-gui/res/cardsfolder/d/dark_dabbling.txt b/forge-gui/res/cardsfolder/d/dark_dabbling.txt index 2c6b74f8eeb..42fe58f435a 100644 --- a/forge-gui/res/cardsfolder/d/dark_dabbling.txt +++ b/forge-gui/res/cardsfolder/d/dark_dabbling.txt @@ -3,6 +3,5 @@ ManaCost:2 B Types:Instant A:SP$ Regenerate | Cost$ 2 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDraw | SpellDescription$ Regenerate target creature. Draw a card. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control. SVar:DBDraw:DB$ Draw | NumCards$ 1 | SubAbility$ DBRegenerate -SVar:DBRegenerate:DB$ Regenerate | Defined$ Targeted.Other+YouCtrl+Creature | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:DBRegenerate:DB$ Regenerate | Defined$ Targeted.Other+YouCtrl+Creature | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 Oracle:Regenerate target creature. Draw a card. (The next time the creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.)\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control. diff --git a/forge-gui/res/cardsfolder/d/dark_petition.txt b/forge-gui/res/cardsfolder/d/dark_petition.txt index 4679abae3cd..8d5fe6d59c2 100644 --- a/forge-gui/res/cardsfolder/d/dark_petition.txt +++ b/forge-gui/res/cardsfolder/d/dark_petition.txt @@ -2,8 +2,7 @@ Name:Dark Petition ManaCost:3 B B Types:Sorcery A:SP$ ChangeZone | Cost$ 3 B B | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | SubAbility$ DBMana | SpellDescription$ Search your library for a card, put that card into your hand, then shuffle. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, add {B}{B}{B}. -SVar:DBMana:DB$ Mana | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | Produced$ B | Amount$ 3 -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:DBMana:DB$ Mana | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 | Produced$ B | Amount$ 3 #TODO: Improve the tutoring logic for the AI. Currently will generally look for the most expensive castable thing in the library (which can, of course, be used to advantage in properly constructed AI decks). AI:RemoveDeck:Random Oracle:Search your library for a card, put that card into your hand, then shuffle.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, add {B}{B}{B}. diff --git a/forge-gui/res/cardsfolder/d/defy_death.txt b/forge-gui/res/cardsfolder/d/defy_death.txt index 61824947b34..4be378e529b 100644 --- a/forge-gui/res/cardsfolder/d/defy_death.txt +++ b/forge-gui/res/cardsfolder/d/defy_death.txt @@ -2,6 +2,5 @@ Name:Defy Death ManaCost:3 W W Types:Sorcery A:SP$ ChangeZone | Cost$ 3 W W | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SubAbility$ DBPutCounter | SpellDescription$ Return target creature card from your graveyard to the battlefield. If it's an Angel, put two +1/+1 counters on it. -SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 2 | Defined$ Targeted | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 -SVar:X:Targeted$Valid Angel +SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 2 | Defined$ Targeted | ConditionDefined$ Targeted | ConditionPresent$ Angel Oracle:Return target creature card from your graveyard to the battlefield. If it's an Angel, put two +1/+1 counters on it. diff --git a/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt b/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt index f64f77a9ee0..4890980ac3e 100644 --- a/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt +++ b/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt @@ -2,6 +2,5 @@ Name:Exquisite Firecraft ManaCost:1 R R Types:Sorcery A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. -S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | AddHiddenKeyword$ This spell can't be countered. | CheckSVar$ X | SVarCompare$ GE2 | Description$ Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, this spell can't be countered. -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | AddHiddenKeyword$ This spell can't be countered. | IsPresent$ Instant.YouOwn,Sorcery.YouOwn | PresentZone$ Graveyard | PresentCompare$ GE2 | Description$ Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, this spell can't be countered. Oracle:Exquisite Firecraft deals 4 damage to any target.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, this spell can't be countered. diff --git a/forge-gui/res/cardsfolder/g/gideons_phalanx.txt b/forge-gui/res/cardsfolder/g/gideons_phalanx.txt index 35396b1d4cd..215b326ce5b 100644 --- a/forge-gui/res/cardsfolder/g/gideons_phalanx.txt +++ b/forge-gui/res/cardsfolder/g/gideons_phalanx.txt @@ -2,6 +2,5 @@ Name:Gideon's Phalanx ManaCost:5 W W Types:Instant A:SP$ Token | Cost$ 5 W W | TokenAmount$ 4 | TokenScript$ w_2_2_knight_vigilance | TokenOwner$ You | SubAbility$ DBPumpAll | SpellDescription$ Create four 2/2 white Knight creature tokens with vigilance. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, creatures you control gain indestructible until end of turn. -SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Indestructible | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Indestructible | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 Oracle:Create four 2/2 white Knight creature tokens with vigilance.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, creatures you control gain indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/g/goatnap.txt b/forge-gui/res/cardsfolder/g/goatnap.txt index cd89c0856bb..cb90be0353b 100644 --- a/forge-gui/res/cardsfolder/g/goatnap.txt +++ b/forge-gui/res/cardsfolder/g/goatnap.txt @@ -2,6 +2,5 @@ Name:Goatnap ManaCost:2 R Types:Sorcery A:SP$ GainControl | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | Untap$ True | AddKWs$ Haste | LoseControl$ EOT | SubAbility$ DBPump | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. If that creature is a Goat, it also gets +3/+0 until end of turn. -SVar:DBPump:DB$ Pump | Defined$ Targeted | NumAtt$ 3 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 -SVar:X:Targeted$Valid Goat +SVar:DBPump:DB$ Pump | Defined$ Targeted | NumAtt$ 3 | ConditionDefined$ Targeted | ConditionPresent$ Goat Oracle:Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. If that creature is a Goat, it also gets +3/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/h/hydroblast.txt b/forge-gui/res/cardsfolder/h/hydroblast.txt index afb48606511..6f01f0dbe64 100644 --- a/forge-gui/res/cardsfolder/h/hydroblast.txt +++ b/forge-gui/res/cardsfolder/h/hydroblast.txt @@ -2,8 +2,7 @@ Name:Hydroblast ManaCost:U Types:Instant A:SP$ Charm | Cost$ U | Choices$ DBCounter,DBDestroy | CharmNum$ 1 -SVar:DBCounter:DB$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | AITgts$ Card.Red | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SpellDescription$ Counter target spell if it's red. +SVar:DBCounter:DB$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | AITgts$ Card.Red | ConditionDefined$ Targeted | ConditionPresent$ Spell.Red | SpellDescription$ Counter target spell if it's red. SVar:DBDestroy:DB$ Destroy | ValidTgts$ Permanent | AITgts$ Card.Red | TgtPrompt$ Select target permanent | ConditionDefined$ Targeted | ConditionPresent$ Card.Red | ConditionCompare$ GE1 | SpellDescription$ Destroy target permanent if it's red. -SVar:X:Targeted$Valid Card.Red AI:RemoveDeck:Random Oracle:Choose one —\n• Counter target spell if it's red.\n• Destroy target permanent if it's red. diff --git a/forge-gui/res/cardsfolder/j/jaded_response.txt b/forge-gui/res/cardsfolder/j/jaded_response.txt index 8a987cd9932..688a3386003 100644 --- a/forge-gui/res/cardsfolder/j/jaded_response.txt +++ b/forge-gui/res/cardsfolder/j/jaded_response.txt @@ -1,6 +1,5 @@ Name:Jaded Response ManaCost:1 U Types:Instant -A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | ValidTgts$ Card | AITgts$ Card.SharesColorWith Creature.YouCtrl | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SpellDescription$ Counter target spell if it shares a color with a creature you control. -SVar:X:Targeted$Valid Card.SharesColorWith Creature.YouCtrl +A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | ValidTgts$ Card | AITgts$ Card.SharesColorWith Creature.YouCtrl | ConditionDefined$ Targeted | ConditionPresent$ Spell.SharesColorWith Creature.YouCtrl | SpellDescription$ Counter target spell if it shares a color with a creature you control. Oracle:Counter target spell if it shares a color with a creature you control. diff --git a/forge-gui/res/cardsfolder/k/kytheons_tactics.txt b/forge-gui/res/cardsfolder/k/kytheons_tactics.txt index cd52e0e860d..99d3f0b1b01 100644 --- a/forge-gui/res/cardsfolder/k/kytheons_tactics.txt +++ b/forge-gui/res/cardsfolder/k/kytheons_tactics.txt @@ -2,6 +2,5 @@ Name:Kytheon's Tactics ManaCost:1 W W Types:Sorcery A:SP$ PumpAll | Cost$ 1 W W | ValidCards$ Creature.YouCtrl | NumAtt$ +2 | NumDef$ +1 | SubAbility$ DBPumpAll | SpellDescription$ Creatures you control get +2/+1 until end of turn. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, those creatures also gain vigilance until end of turn. -SVar:DBPumpAll:DB$ PumpAll | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | ValidCards$ Creature.YouCtrl | KW$ Vigilance -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:DBPumpAll:DB$ PumpAll | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 | ValidCards$ Creature.YouCtrl | KW$ Vigilance Oracle:Creatures you control get +2/+1 until end of turn.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, those creatures also gain vigilance until end of turn. (Attacking doesn't cause them to tap.) diff --git a/forge-gui/res/cardsfolder/p/psychic_rebuttal.txt b/forge-gui/res/cardsfolder/p/psychic_rebuttal.txt index fc09bd2cd5e..31385311dea 100644 --- a/forge-gui/res/cardsfolder/p/psychic_rebuttal.txt +++ b/forge-gui/res/cardsfolder/p/psychic_rebuttal.txt @@ -2,7 +2,6 @@ Name:Psychic Rebuttal ManaCost:1 U Types:Instant A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | TargetValidTargeting$ You | TgtPrompt$ Select target spell that targets you | ValidTgts$ Instant,Sorcery | RememberCountered$ True | SubAbility$ DBCopy | SpellDescription$ Counter target instant or sorcery spell that targets you.Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you may copy the spell countered this way. You may choose new targets for the copy. -SVar:DBCopy:DB$ CopySpellAbility | Defined$ Remembered | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | MayChooseTarget$ True | SubAbility$ DBCleanup -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:DBCopy:DB$ CopySpellAbility | Defined$ Remembered | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 | MayChooseTarget$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Counter target instant or sorcery spell that targets you.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you may copy the spell countered this way. You may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/p/pyroblast.txt b/forge-gui/res/cardsfolder/p/pyroblast.txt index 847b7cf4041..55e321c6162 100644 --- a/forge-gui/res/cardsfolder/p/pyroblast.txt +++ b/forge-gui/res/cardsfolder/p/pyroblast.txt @@ -2,8 +2,7 @@ Name:Pyroblast ManaCost:R Types:Instant A:SP$ Charm | Cost$ R | Choices$ DBCounter,DBDestroy | CharmNum$ 1 -SVar:DBCounter:DB$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | AITgts$ Card.Blue | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SpellDescription$ Counter target spell if it's blue. +SVar:DBCounter:DB$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | AITgts$ Card.Blue | ConditionDefined$ Targeted | ConditionPresent$ Spell.Blue | SpellDescription$ Counter target spell if it's blue. SVar:DBDestroy:DB$ Destroy | ValidTgts$ Permanent | AITgts$ Card.Blue | TgtPrompt$ Select target permanent | ConditionDefined$ Targeted | ConditionPresent$ Card.Blue | ConditionCompare$ GE1 | SpellDescription$ Destroy target permanent if it's blue. -SVar:X:Targeted$Valid Card.Blue AI:RemoveDeck:Random Oracle:Choose one —\n• Counter target spell if it's blue.\n• Destroy target permanent if it's blue. diff --git a/forge-gui/res/cardsfolder/r/ravaging_blaze.txt b/forge-gui/res/cardsfolder/r/ravaging_blaze.txt index 322cbbae8cf..bbcf0bd8378 100644 --- a/forge-gui/res/cardsfolder/r/ravaging_blaze.txt +++ b/forge-gui/res/cardsfolder/r/ravaging_blaze.txt @@ -2,7 +2,6 @@ Name:Ravaging Blaze ManaCost:X R R Types:Instant A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | SubAbility$ DmgController | SpellDescription$ CARDNAME deals X damage to target creature. -SVar:DmgController:DB$ DealDamage | Defined$ TargetedController | NumDmg$ X | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE2 | SpellDescription$ Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, CARDNAME also deals X damage to that creature's controller. +SVar:DmgController:DB$ DealDamage | Defined$ TargetedController | NumDmg$ X | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 | SpellDescription$ Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, CARDNAME also deals X damage to that creature's controller. SVar:X:Count$xPaid -SVar:Y:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn Oracle:Ravaging Blaze deals X damage to target creature.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, Ravaging Blaze also deals X damage to that creature's controller. diff --git a/forge-gui/res/cardsfolder/r/return_upon_the_tide.txt b/forge-gui/res/cardsfolder/r/return_upon_the_tide.txt index 9df4cf4f728..3c70c09346c 100644 --- a/forge-gui/res/cardsfolder/r/return_upon_the_tide.txt +++ b/forge-gui/res/cardsfolder/r/return_upon_the_tide.txt @@ -2,8 +2,7 @@ Name:Return Upon the Tide ManaCost:4 B Types:Sorcery A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SubAbility$ DBToken | SpellDescription$ Return target creature card from your graveyard to the battlefield. If it's an Elf, create two 1/1 green Elf Warrior creature tokens. -SVar:DBToken:DB$ Token | TokenAmount$ 2 | TokenScript$ g_1_1_elf_warrior | TokenOwner$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 -SVar:X:Targeted$Valid Elf +SVar:DBToken:DB$ Token | TokenAmount$ 2 | TokenScript$ g_1_1_elf_warrior | TokenOwner$ You | ConditionDefined$ Targeted | ConditionPresent$ Elf K:Foretell:3 B DeckHas:Ability$Token Oracle:Return target creature card from your graveyard to the battlefield. If it's an Elf, create two 1/1 green Elf Warrior creature tokens.\nForetell {3}{B} (During your turn, you may pay {2} and exile this card from your hand face down. Cast it on a later turn for its foretell cost.) diff --git a/forge-gui/res/cardsfolder/s/send_to_sleep.txt b/forge-gui/res/cardsfolder/s/send_to_sleep.txt index 1253ae0f028..d892f8faf6d 100644 --- a/forge-gui/res/cardsfolder/s/send_to_sleep.txt +++ b/forge-gui/res/cardsfolder/s/send_to_sleep.txt @@ -2,6 +2,5 @@ Name:Send to Sleep ManaCost:1 U Types:Instant A:SP$ Tap | Cost$ 1 U | TgtPrompt$ Select up to two target creatures | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 2 | SubAbility$ TrigPump | SpellDescription$ Tap up to two target creatures.Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, those creatures don't untap during their controllers' next untap steps. -SVar:TrigPump:DB$ Pump | Defined$ Targeted | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:TrigPump:DB$ Pump | Defined$ Targeted | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent Oracle:Tap up to two target creatures.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, those creatures don't untap during their controllers' next untap steps. diff --git a/forge-gui/res/cardsfolder/s/starfall.txt b/forge-gui/res/cardsfolder/s/starfall.txt index 2b7f1556382..77b6a352efb 100644 --- a/forge-gui/res/cardsfolder/s/starfall.txt +++ b/forge-gui/res/cardsfolder/s/starfall.txt @@ -2,6 +2,5 @@ Name:Starfall ManaCost:4 R Types:Instant A:SP$ DealDamage | Cost$ 4 R | NumDmg$ 3 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDamage | SpellDescription$ CARDNAME deals 3 damage to target creature. If that creature is an enchantment, CARDNAME deals 3 damage to that creature's controller. -SVar:DBDamage:DB$ DealDamage | Defined$ TargetedController | NumDmg$ 3 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 -SVar:X:Targeted$Valid Creature.Enchantment +SVar:DBDamage:DB$ DealDamage | Defined$ TargetedController | NumDmg$ 3 | ConditionDefined$ Targeted | ConditionPresent$ Enchantment Oracle:Starfall deals 3 damage to target creature. If that creature is an enchantment, Starfall deals 3 damage to that creature's controller. diff --git a/forge-gui/res/cardsfolder/u/unholy_hunger.txt b/forge-gui/res/cardsfolder/u/unholy_hunger.txt index eed132ffcdd..8fdb402f503 100644 --- a/forge-gui/res/cardsfolder/u/unholy_hunger.txt +++ b/forge-gui/res/cardsfolder/u/unholy_hunger.txt @@ -2,6 +2,5 @@ Name:Unholy Hunger ManaCost:3 B B Types:Instant A:SP$ Destroy | Cost$ 3 B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBGainLife | SpellDescription$ Destroy target creature. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life. -SVar:DBGainLife:DB$ GainLife | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | LifeAmount$ 2 -SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 2 | ConditionPresent$ Instant.YouOwn,Sorcery.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE2 Oracle:Destroy target creature.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life.