From fc803cdbdada377edd71be462df0b1ecff58ef7e Mon Sep 17 00:00:00 2001 From: tool4ever Date: Mon, 22 Jul 2024 07:19:28 +0000 Subject: [PATCH] Ain't a normal month without a Henzie fix (#5671) --- .../main/java/forge/game/GameActionUtil.java | 1 + .../java/forge/game/card/CardProperty.java | 27 +++---------------- .../res/cardsfolder/a/aerial_extortionist.txt | 2 +- .../cardsfolder/c/chainer_nightmare_adept.txt | 2 +- forge-gui/res/cardsfolder/e/epochrasite.txt | 2 +- .../cardsfolder/f/flaming_tyrannosaurus.txt | 2 +- .../res/cardsfolder/g/ghostly_pilferer.txt | 2 +- forge-gui/res/cardsfolder/g/graham_obrien.txt | 2 +- .../res/cardsfolder/i/impending_flux.txt | 2 +- .../cardsfolder/i/iraxxa_empress_of_mars.txt | 2 +- .../res/cardsfolder/k/keeper_of_secrets.txt | 2 +- .../res/cardsfolder/k/kellan_the_kid.txt | 2 +- forge-gui/res/cardsfolder/m/memory_worm.txt | 2 +- .../cardsfolder/m/mizzix_replica_rider.txt | 2 +- .../cardsfolder/o/osgood_operation_double.txt | 2 +- .../cardsfolder/p/phage_the_untouchable.txt | 2 +- forge-gui/res/cardsfolder/p/poxwalkers.txt | 2 +- .../rebalanced/a-vega_the_watcher.txt | 2 +- .../res/cardsfolder/s/sage_of_the_beyond.txt | 2 +- forge-gui/res/cardsfolder/s/savvy_trader.txt | 2 +- .../res/cardsfolder/s/sisterhood_of_karn.txt | 2 +- .../res/cardsfolder/s/surge_of_brilliance.txt | 2 +- .../cardsfolder/t/the_lost_and_the_damned.txt | 2 +- .../cardsfolder/t/the_thirteenth_doctor.txt | 2 +- .../res/cardsfolder/t/the_twelfth_doctor.txt | 4 +-- .../res/cardsfolder/u/unstable_amulet.txt | 2 +- .../upcoming/fortune_tellers_talent.txt | 2 +- .../res/cardsfolder/v/vega_the_watcher.txt | 2 +- forge-gui/res/cardsfolder/w/wash_away.txt | 2 +- 29 files changed, 32 insertions(+), 52 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index f21c7b0ed8f..600111f1905 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -235,6 +235,7 @@ public final class GameActionUtil { stackCopy = CardCopyService.getLKICopy(source); } stackCopy.setLastKnownZone(game.getStackZone()); + stackCopy.setCastFrom(oldZone); lkicheck = true; stackCopy.clearStaticChangedCardKeywords(false); diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 2664531d8ba..ff3bc739cf9 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -2050,37 +2050,16 @@ public class CardProperty { strZone = strZone.substring(0, strZone.indexOf("ByYou", 0)); } final ZoneType realZone = ZoneType.smartValueOf(strZone); - if (card.getCastFrom() == null || (zoneOwner != null && !card.getCastFrom().getPlayer().equals(zoneOwner)) + if (card.getCastFrom() == null || card.getCastSA() == null || (zoneOwner != null && !card.getCastFrom().getPlayer().equals(zoneOwner)) || (byYou && !sourceController.equals(card.getCastSA().getActivatingPlayer())) || realZone != card.getCastFrom().getZoneType()) { return false; } - } else if (property.startsWith("wasNotCastFrom")) { - boolean byYou = property.contains("ByYou"); - String strZone = property.substring(14); - Player zoneOwner = null; - if (property.contains("Your")) { - strZone = strZone.substring(4); - zoneOwner = sourceController; - } - if (property.contains("Their")) { - strZone = strZone.substring(5); - zoneOwner = controller; - } - if (byYou) { - strZone = strZone.substring(0, strZone.indexOf("ByYou", 0)); - } - final ZoneType realZone = ZoneType.smartValueOf(strZone); - if (card.getCastFrom() != null && (zoneOwner == null || card.getCastFrom().getPlayer().equals(zoneOwner)) - && (!byYou || sourceController.equals(card.getCastSA().getActivatingPlayer())) - && realZone == card.getCastFrom().getZoneType()) { - return false; - } - } else if (property.startsWith("wasCast")) { + } else if (property.startsWith("wasCast")) { if (!card.wasCast()) { return false; } - if (property.contains("ByYou") && !sourceController.equals(card.getCastSA().getActivatingPlayer())) { + if (property.contains("ByYou") && card.getCastSA() != null && !sourceController.equals(card.getCastSA().getActivatingPlayer())) { return false; } } else if (property.equals("wasNotCast")) { diff --git a/forge-gui/res/cardsfolder/a/aerial_extortionist.txt b/forge-gui/res/cardsfolder/a/aerial_extortionist.txt index e1268501b7c..4d5f8209cb9 100644 --- a/forge-gui/res/cardsfolder/a/aerial_extortionist.txt +++ b/forge-gui/res/cardsfolder/a/aerial_extortionist.txt @@ -8,6 +8,6 @@ T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent.nonLand | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target nonland permanent | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | StaticAbilities$ Play | ForgetOnMoved$ Exile | EffectOwner$ TargetedOwner | Duration$ Permanent SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ For as long as that card remains exiled, its owner may cast it. -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromTheirHand | ValidActivatingPlayer$ Player.Other | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever another player casts a spell from anywhere other than their hand, draw a card. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromTheirHand | ValidActivatingPlayer$ Player.Other | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever another player casts a spell from anywhere other than their hand, draw a card. SVar:TrigDraw:DB$ Draw Oracle:Flying\nWhenever Aerial Extortionist enters the battlefield or deals combat damage to a player, exile up to one target nonland permanent. For as long as that card remains exiled, its owner may cast it.\nWhenever another player casts a spell from anywhere other than their hand, draw a card. diff --git a/forge-gui/res/cardsfolder/c/chainer_nightmare_adept.txt b/forge-gui/res/cardsfolder/c/chainer_nightmare_adept.txt index 752333c2bdc..ee4f5efa386 100644 --- a/forge-gui/res/cardsfolder/c/chainer_nightmare_adept.txt +++ b/forge-gui/res/cardsfolder/c/chainer_nightmare_adept.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Minion PT:3/2 A:AB$ Effect | Cost$ Discard<1/Card> | StaticAbilities$ STYardCast | ActivationLimit$ 1 | SpellDescription$ You may cast a creature spell from your graveyard this turn. Activate only once each turn. SVar:STYardCast:Mode$ Continuous | Affected$ Creature.nonLand+YouCtrl | MayPlay$ True | MayPlayLimit$ 1 | EffectZone$ Command | AffectedZone$ Graveyard -T:Mode$ ChangesZone | ValidCard$ Creature.nonToken+YouCtrl+wasNotCastFromYourHandByYou | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever a nontoken creature enters the battlefield under your control, if you didn't cast it from your hand, it gains haste until your next turn. +T:Mode$ ChangesZone | ValidCard$ Creature.nonToken+YouCtrl+!wasCastFromYourHandByYou | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever a nontoken creature enters the battlefield under your control, if you didn't cast it from your hand, it gains haste until your next turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | KW$ Haste | Duration$ UntilYourNextTurn AI:RemoveDeck:All Oracle:Discard a card: You may cast a creature spell from your graveyard this turn. Activate only once each turn.\nWhenever a nontoken creature enters the battlefield under your control, if you didn't cast it from your hand, it gains haste until your next turn. diff --git a/forge-gui/res/cardsfolder/e/epochrasite.txt b/forge-gui/res/cardsfolder/e/epochrasite.txt index a7c6e36d710..15e1b7760f5 100644 --- a/forge-gui/res/cardsfolder/e/epochrasite.txt +++ b/forge-gui/res/cardsfolder/e/epochrasite.txt @@ -2,7 +2,7 @@ Name:Epochrasite ManaCost:2 Types:Artifact Creature Construct PT:1/1 -K:etbCounter:P1P1:3:ValidCard$ Card.Self+wasNotCastFromYourHandByYou:CARDNAME enters the battlefield with three +1/+1 counters on it if you didn't cast it from your hand. +K:etbCounter:P1P1:3:ValidCard$ Card.Self+!wasCastFromYourHandByYou:CARDNAME enters the battlefield with three +1/+1 counters on it if you didn't cast it from your hand. T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigExile | TriggerDescription$ When CARDNAME dies, exile it with three time counters on it and it gains suspend. SVar:TrigExile:DB$ ChangeZone | Defined$ TriggeredNewCardLKICopy | Origin$ Graveyard | Destination$ Exile | SubAbility$ DBPutCounter | RememberChanged$ True SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ TIME | CounterNum$ 3 | SubAbility$ GiveSuspend diff --git a/forge-gui/res/cardsfolder/f/flaming_tyrannosaurus.txt b/forge-gui/res/cardsfolder/f/flaming_tyrannosaurus.txt index ff44e34a347..78067ada566 100644 --- a/forge-gui/res/cardsfolder/f/flaming_tyrannosaurus.txt +++ b/forge-gui/res/cardsfolder/f/flaming_tyrannosaurus.txt @@ -3,7 +3,7 @@ ManaCost:5 R R Types:Creature Dinosaur PT:5/5 K:Menace -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, CARDNAME deals 3 damage to any target. Then put a +1/+1 counter on CARDNAME. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, CARDNAME deals 3 damage to any target. Then put a +1/+1 counter on CARDNAME. SVar:TrigDamage:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Any | SubAbility$ DBPutCounter SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamageDies | TriggerDescription$ When CARDNAME dies, it deals damage equal to its power to each opponent. diff --git a/forge-gui/res/cardsfolder/g/ghostly_pilferer.txt b/forge-gui/res/cardsfolder/g/ghostly_pilferer.txt index a6571cdf882..a28a18cc3b3 100644 --- a/forge-gui/res/cardsfolder/g/ghostly_pilferer.txt +++ b/forge-gui/res/cardsfolder/g/ghostly_pilferer.txt @@ -4,7 +4,7 @@ Types:Creature Spirit Rogue PT:2/1 T:Mode$ Untaps | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDraw1 | TriggerDescription$ Whenever CARDNAME becomes untapped, you may pay {2}. If you do, draw a card. SVar:TrigDraw1:AB$ Draw | Cost$ 2 -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromTheirHand | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDraw2 | TriggerDescription$ Whenever an opponent casts a spell from anywhere other than their hand, draw a card. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromTheirHand | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDraw2 | TriggerDescription$ Whenever an opponent casts a spell from anywhere other than their hand, draw a card. SVar:TrigDraw2:DB$ Draw SVar:AIPreference:DiscardCost$Card.cmcLE2 A:AB$ Effect | Cost$ Discard<1/Card> | RememberObjects$ Self | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | StackDescription$ SpellDescription | SpellDescription$ CARDNAME can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/g/graham_obrien.txt b/forge-gui/res/cardsfolder/g/graham_obrien.txt index e1f28cb03b2..a53d57938f4 100644 --- a/forge-gui/res/cardsfolder/g/graham_obrien.txt +++ b/forge-gui/res/cardsfolder/g/graham_obrien.txt @@ -2,7 +2,7 @@ Name:Graham O'Brien ManaCost:1 G Types:Legendary Creature Human Pilot PT:2/2 -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | TokenOwner$ You K:Doctor's companion DeckHas:Ability$Token|Sacrifice & Type$Food|Artifact diff --git a/forge-gui/res/cardsfolder/i/impending_flux.txt b/forge-gui/res/cardsfolder/i/impending_flux.txt index 47e0be0759a..772175fa838 100644 --- a/forge-gui/res/cardsfolder/i/impending_flux.txt +++ b/forge-gui/res/cardsfolder/i/impending_flux.txt @@ -2,6 +2,6 @@ Name:Impending Flux ManaCost:2 R Types:Sorcery A:SP$ DamageAll | NumDmg$ X | ValidPlayers$ Opponent | ValidCards$ Creature.OppCtrl | ValidDescription$ each opponent and each creature they control | SpellDescription$ Paradox — CARDNAME deals X damage to each opponent and each creature they control, where X is 1 plus the number of spells you've cast from anywhere other than your hand this turn. -SVar:X:Count$ThisTurnCast_Card.YouCtrl+wasNotCastFromYourHand/Plus.1 +SVar:X:Count$ThisTurnCast_Card.YouCtrl+!wasCastFromYourHand/Plus.1 K:Foretell:1 R R Oracle:Paradox — Impending Flux deals X damage to each opponent and each creature they control, where X is 1 plus the number of spells you've cast from anywhere other than your hand this turn.\nForetell {1}{R}{R} (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/i/iraxxa_empress_of_mars.txt b/forge-gui/res/cardsfolder/i/iraxxa_empress_of_mars.txt index 71037418ff3..f4e009ea048 100644 --- a/forge-gui/res/cardsfolder/i/iraxxa_empress_of_mars.txt +++ b/forge-gui/res/cardsfolder/i/iraxxa_empress_of_mars.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Alien Warrior PT:5/4 K:Trample K:Battle cry -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, create a 2/2 red Alien Warrior creature token. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, create a 2/2 red Alien Warrior creature token. SVar:TrigToken:DB$ Token | TokenScript$ r_2_2_alien_warrior DeckHas:Ability$Token Oracle:Trample\nBattle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)\nParadox — Whenever you cast a spell from anywhere other than your hand, create a 2/2 red Alien Warrior creature token. diff --git a/forge-gui/res/cardsfolder/k/keeper_of_secrets.txt b/forge-gui/res/cardsfolder/k/keeper_of_secrets.txt index 8138ca83118..bc403cf0f73 100644 --- a/forge-gui/res/cardsfolder/k/keeper_of_secrets.txt +++ b/forge-gui/res/cardsfolder/k/keeper_of_secrets.txt @@ -4,7 +4,7 @@ Types:Creature Demon PT:6/4 K:First Strike K:Haste -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ DBDealDamage | TriggerDescription$ Symphony of Pain — Whenever you cast a spell from anywhere other than your hand, CARDNAME deals damage equal to that spell's mana value to target opponent. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ DBDealDamage | TriggerDescription$ Symphony of Pain — Whenever you cast a spell from anywhere other than your hand, CARDNAME deals damage equal to that spell's mana value to target opponent. SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Opponent | NumDmg$ X SVar:X:TriggeredStackInstance$CardManaCostLKI Oracle:First strike, haste\nSymphony of Pain — Whenever you cast a spell from anywhere other than your hand, Keeper of Secrets deals damage equal to that spell's mana value to target opponent. diff --git a/forge-gui/res/cardsfolder/k/kellan_the_kid.txt b/forge-gui/res/cardsfolder/k/kellan_the_kid.txt index b3cff6194a5..46c0c1ca8d8 100644 --- a/forge-gui/res/cardsfolder/k/kellan_the_kid.txt +++ b/forge-gui/res/cardsfolder/k/kellan_the_kid.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Faerie Rogue PT:3/3 K:Flying K:Lifelink -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCast | OptionalDecider$ You | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, you may cast a permanent spell with equal or lesser mana value from your hand without paying its mana cost. If you don't, you may put a land card from your hand onto the battlefield. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCast | OptionalDecider$ You | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, you may cast a permanent spell with equal or lesser mana value from your hand without paying its mana cost. If you don't, you may put a land card from your hand onto the battlefield. SVar:TrigCast:DB$ Play | Valid$ Permanent.YouOwn+cmcLEX | ValidSA$ Spell | ValidZone$ Hand | WithoutManaCost$ True | Amount$ 1 | Optional$ True | RememberPlayed$ True | SubAbility$ PlayLandIfNotCast SVar:PlayLandIfNotCast:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Land.YouCtrl | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/m/memory_worm.txt b/forge-gui/res/cardsfolder/m/memory_worm.txt index fb3e274807e..90836feed78 100644 --- a/forge-gui/res/cardsfolder/m/memory_worm.txt +++ b/forge-gui/res/cardsfolder/m/memory_worm.txt @@ -2,7 +2,7 @@ Name:Memory Worm ManaCost:1 R Types:Creature Alien Worm PT:1/1 -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, CARDNAME deals 2 damage to target player. That player discards a card, then draws a card. Put a +1/+1 counter on CARDNAME. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, CARDNAME deals 2 damage to target player. That player discards a card, then draws a card. Put a +1/+1 counter on CARDNAME. SVar:TrigDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player | SubAbility$ DBDiscard SVar:DBDiscard:DB$ Discard | Defined$ TargetedPlayer | Mode$ TgtChoose | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | Defined$ TargetedPlayer | SubAbility$ DBPutCounter diff --git a/forge-gui/res/cardsfolder/m/mizzix_replica_rider.txt b/forge-gui/res/cardsfolder/m/mizzix_replica_rider.txt index 0107818145c..efbb31636c7 100644 --- a/forge-gui/res/cardsfolder/m/mizzix_replica_rider.txt +++ b/forge-gui/res/cardsfolder/m/mizzix_replica_rider.txt @@ -3,7 +3,7 @@ ManaCost:4 R Types:Legendary Creature Goblin Wizard PT:4/5 K:Flying -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCopy | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, you may pay {1}{U/R}. If you do, copy that spell and you may choose new targets for the copy. If the copy is a permanent spell, it gains haste and "At the beginning of the end step, sacrifice this permanent." (A copy of a permanent spell becomes a token.) +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCopy | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, you may pay {1}{U/R}. If you do, copy that spell and you may choose new targets for the copy. If the copy is a permanent spell, it gains haste and "At the beginning of the end step, sacrifice this permanent." (A copy of a permanent spell becomes a token.) SVar:TrigCopy:AB$ CopySpellAbility | Cost$ 1 UR | Defined$ TriggeredSpellAbility | MayChooseTarget$ True | RememberNewCard$ True | SubAbility$ DBAnimate SVar:DBAnimate:DB$ Animate | Defined$ Remembered | ConditionDefined$ Remembered | ConditionPresent$ Permanent | Keywords$ Haste | Duration$ Permanent | Triggers$ EOTSac | SubAbility$ DBCleanup SVar:EOTSac:Mode$ Phase | Phase$ End of Turn | Execute$ TrigSac | TriggerDescription$ At the beginning of the end step, sacrifice this permanent. diff --git a/forge-gui/res/cardsfolder/o/osgood_operation_double.txt b/forge-gui/res/cardsfolder/o/osgood_operation_double.txt index fea0c4e6b69..6a151a1437c 100644 --- a/forge-gui/res/cardsfolder/o/osgood_operation_double.txt +++ b/forge-gui/res/cardsfolder/o/osgood_operation_double.txt @@ -5,7 +5,7 @@ PT:2/2 T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ When you cast this spell, create a token that's a copy of it, except it isn't legendary. SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | NonLegendary$ True A:AB$ Mana | Cost$ T | Produced$ C | Amount$ 1 | RestrictValid$ Spell.Artifact,Activated.Artifact+inZoneBattlefield | SpellDescription$ Add {C}. Spend this mana only to cast an artifact spell or activate an ability of an artifact. -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigInvestigate | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, investigate. (Create a Clue token. It's an artifact with "{2}, Sacrifice this artifact: Draw a card.") +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigInvestigate | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, investigate. (Create a Clue token. It's an artifact with "{2}, Sacrifice this artifact: Draw a card.") SVar:TrigInvestigate:DB$ Investigate DeckHas:Ability$Token & Type$Clue|Artifact DeckHints:Type$Artifact diff --git a/forge-gui/res/cardsfolder/p/phage_the_untouchable.txt b/forge-gui/res/cardsfolder/p/phage_the_untouchable.txt index 9d0fed93f0b..67b89f0b8c9 100644 --- a/forge-gui/res/cardsfolder/p/phage_the_untouchable.txt +++ b/forge-gui/res/cardsfolder/p/phage_the_untouchable.txt @@ -2,7 +2,7 @@ Name:Phage the Untouchable ManaCost:3 B B B B Types:Legendary Creature Avatar Minion PT:4/4 -T:Mode$ ChangesZone | ValidCard$ Card.wasNotCastFromYourHandByYou+Self | Destination$ Battlefield | Execute$ TrigYouLose | TriggerDescription$ When CARDNAME enters the battlefield, if you didn't cast it from your hand, you lose the game. +T:Mode$ ChangesZone | ValidCard$ Card.!wasCastFromYourHandByYou+Self | Destination$ Battlefield | Execute$ TrigYouLose | TriggerDescription$ When CARDNAME enters the battlefield, if you didn't cast it from your hand, you lose the game. SVar:TrigYouLose:DB$ LosesGame | Defined$ You T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | Execute$ TrigDestroy | TriggerDescription$ Whenever NICKNAME deals combat damage to a creature, destroy that creature. It can't be regenerated. SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredTargetLKICopy | NoRegen$ True diff --git a/forge-gui/res/cardsfolder/p/poxwalkers.txt b/forge-gui/res/cardsfolder/p/poxwalkers.txt index 6857515abcb..f0023826d6c 100644 --- a/forge-gui/res/cardsfolder/p/poxwalkers.txt +++ b/forge-gui/res/cardsfolder/p/poxwalkers.txt @@ -3,7 +3,7 @@ ManaCost:2 B Types:Creature Zombie PT:3/1 K:Deathtouch -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Graveyard | Execute$ TrigChange | TriggerDescription$ Curse of the Walking Pox — Whenever you cast a spell from anywhere other than your hand, return CARDNAME from your graveyard to the battlefield tapped. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Graveyard | Execute$ TrigChange | TriggerDescription$ Curse of the Walking Pox — Whenever you cast a spell from anywhere other than your hand, return CARDNAME from your graveyard to the battlefield tapped. SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True DeckHas:Ability$Graveyard SVar:SacMe:3 diff --git a/forge-gui/res/cardsfolder/rebalanced/a-vega_the_watcher.txt b/forge-gui/res/cardsfolder/rebalanced/a-vega_the_watcher.txt index cef922caf32..0a68fa27ba7 100644 --- a/forge-gui/res/cardsfolder/rebalanced/a-vega_the_watcher.txt +++ b/forge-gui/res/cardsfolder/rebalanced/a-vega_the_watcher.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Bird Spirit PT:2/2 K:Flying K:Ward:2 -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, draw a card. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, draw a card. SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 AI:RemoveDeck:Random Oracle:Flying\nWard {2}\nWhenever you cast a spell from anywhere other than your hand, draw a card. diff --git a/forge-gui/res/cardsfolder/s/sage_of_the_beyond.txt b/forge-gui/res/cardsfolder/s/sage_of_the_beyond.txt index dfbbbb70008..09387488e96 100644 --- a/forge-gui/res/cardsfolder/s/sage_of_the_beyond.txt +++ b/forge-gui/res/cardsfolder/s/sage_of_the_beyond.txt @@ -3,6 +3,6 @@ ManaCost:5 U U Types:Creature Spirit Giant PT:5/5 K:Flying -S:Mode$ ReduceCost | ValidCard$ Card.wasNotCastFromYourHand | Activator$ You | Type$ Spell | Amount$ 2 | Description$ Spells you cast from anywhere other than your hand cost {2} less to cast +S:Mode$ ReduceCost | ValidCard$ Card.!wasCastFromYourHand | Activator$ You | Type$ Spell | Amount$ 2 | Description$ Spells you cast from anywhere other than your hand cost {2} less to cast K:Foretell:4 U Oracle:Flying\nSpells you cast from anywhere other than your hand cost {2} less to cast.\nForetell {4}{U} (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/savvy_trader.txt b/forge-gui/res/cardsfolder/s/savvy_trader.txt index a28979a35fe..d1698320c19 100644 --- a/forge-gui/res/cardsfolder/s/savvy_trader.txt +++ b/forge-gui/res/cardsfolder/s/savvy_trader.txt @@ -7,6 +7,6 @@ SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Select SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | ForgetOnMoved$ Exile | RememberObjects$ Imprinted | Duration$ Permanent | SubAbility$ DBCleanup SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | AffectedZone$ Exile | Description$ You may play that card for as long as it remains exiled. SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True -S:Mode$ ReduceCost | ValidCard$ Card.wasNotCastFromYourHand | Activator$ You | Type$ Spell | Amount$ 1 | Description$ Spells you cast from anywhere other than your hand cost {1} less to cast. +S:Mode$ ReduceCost | ValidCard$ Card.!wasCastFromYourHand | Activator$ You | Type$ Spell | Amount$ 1 | Description$ Spells you cast from anywhere other than your hand cost {1} less to cast. DeckHas:Ability$Graveyard Oracle:When Savvy Trader enters the battlefield, exile target permanent card from your graveyard. You may play that card for as long as it remains exiled.\nSpells you cast from anywhere other than your hand cost {1} less to cast. diff --git a/forge-gui/res/cardsfolder/s/sisterhood_of_karn.txt b/forge-gui/res/cardsfolder/s/sisterhood_of_karn.txt index 181d12b3284..843a2fe160f 100644 --- a/forge-gui/res/cardsfolder/s/sisterhood_of_karn.txt +++ b/forge-gui/res/cardsfolder/s/sisterhood_of_karn.txt @@ -3,7 +3,7 @@ ManaCost:1 G Types:Creature Cleric PT:0/0 K:etbCounter:P1P1:1 -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDouble | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, double the number of +1/+1 counters on CARDNAME. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDouble | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, double the number of +1/+1 counters on CARDNAME. SVar:TrigDouble:DB$ MultiplyCounter | Defined$ Self | CounterType$ P1P1 DeckHas:Ability$Counters Oracle:Sisterhood of Karn enters the battlefield with a +1/+1 counter on it.\nParadox — Whenever you cast a spell from anywhere other than your hand, double the number of +1/+1 counters on Sisterhood of Karn. diff --git a/forge-gui/res/cardsfolder/s/surge_of_brilliance.txt b/forge-gui/res/cardsfolder/s/surge_of_brilliance.txt index 0bcb21caff0..dc22d426162 100644 --- a/forge-gui/res/cardsfolder/s/surge_of_brilliance.txt +++ b/forge-gui/res/cardsfolder/s/surge_of_brilliance.txt @@ -2,6 +2,6 @@ Name:Surge of Brilliance ManaCost:1 U Types:Instant A:SP$ Draw | NumCards$ X | SpellDescription$ Paradox — Draw a card for each spell you've cast this turn from anywhere other than your hand. -SVar:X:Count$ThisTurnCast_Card.YouCtrl+wasNotCastFromYourHand +SVar:X:Count$ThisTurnCast_Card.YouCtrl+!wasCastFromYourHand K:Foretell:1 U Oracle:Paradox — Draw a card for each spell you've cast this turn from anywhere other than your hand.\nForetell {1}{U} (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/t/the_lost_and_the_damned.txt b/forge-gui/res/cardsfolder/t/the_lost_and_the_damned.txt index 93e9cb96483..0cd7bbb79d2 100644 --- a/forge-gui/res/cardsfolder/t/the_lost_and_the_damned.txt +++ b/forge-gui/res/cardsfolder/t/the_lost_and_the_damned.txt @@ -2,7 +2,7 @@ Name:The Lost and the Damned ManaCost:1 U R Types:Enchantment T:Mode$ ChangesZone | Origin$ Graveyard,Exile,Command,Library | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever a land enters the battlefield under your control from anywhere other than your hand or you cast a spell from anywhere other than your hand, create 3/3 red Spawn creature token. -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | Secondary$ True | TriggerDescription$ Whenever a land enters the battlefield under your control from anywhere other than your hand or you cast a spell from anywhere other than your hand, create 3/3 red Spawn creature token. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | Secondary$ True | TriggerDescription$ Whenever a land enters the battlefield under your control from anywhere other than your hand or you cast a spell from anywhere other than your hand, create 3/3 red Spawn creature token. SVar:TrigToken:DB$ Token | TokenScript$ r_3_3_spawn DeckHas:Ability$Token & Type$Spawn Oracle:Whenever a land enters the battlefield under your control from anywhere other than your hand or you cast a spell from anywhere other than your hand, create 3/3 red Spawn creature token. diff --git a/forge-gui/res/cardsfolder/t/the_thirteenth_doctor.txt b/forge-gui/res/cardsfolder/t/the_thirteenth_doctor.txt index c26dcf23a60..5e3e8cf7bfd 100644 --- a/forge-gui/res/cardsfolder/t/the_thirteenth_doctor.txt +++ b/forge-gui/res/cardsfolder/t/the_thirteenth_doctor.txt @@ -2,7 +2,7 @@ Name:The Thirteenth Doctor ManaCost:1 G U Types:Legendary Creature Time Lord Doctor PT:2/2 -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, put a +1/+1 counter on target creature. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Paradox — Whenever you cast a spell from anywhere other than your hand, put a +1/+1 counter on target creature. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ Team TARDIS — At the beginning of your end step, untap each creature you control with a counter on it. SVar:TrigUntap:DB$ UntapAll | ValidCards$ Creature.YouCtrl+HasCounters diff --git a/forge-gui/res/cardsfolder/t/the_twelfth_doctor.txt b/forge-gui/res/cardsfolder/t/the_twelfth_doctor.txt index f3d5bda6aff..30e4b29325f 100644 --- a/forge-gui/res/cardsfolder/t/the_twelfth_doctor.txt +++ b/forge-gui/res/cardsfolder/t/the_twelfth_doctor.txt @@ -2,8 +2,8 @@ Name:The Twelfth Doctor ManaCost:3 U R Types:Legendary Creature Time Lord Doctor PT:4/4 -S:Mode$ Continuous | Affected$ Card.YouCtrl+wasNotCastFromYourHand | AffectedZone$ Stack | CheckSVar$ X | SVarCompare$ EQ0 | AddKeyword$ Demonstrate | Description$ The first spell you cast from anywhere other than your hand each turn has demonstrate. (When you cast that spell, you may copy it. If you do, choose an opponent to also copy it. A copy of a permanent spell becomes a token.) -SVar:X:Count$ThisTurnCast_Card.YouCtrl+wasNotCastFromYourHand +S:Mode$ Continuous | Affected$ Card.YouCtrl+!wasCastFromYourHand | AffectedZone$ Stack | CheckSVar$ X | SVarCompare$ EQ0 | AddKeyword$ Demonstrate | Description$ The first spell you cast from anywhere other than your hand each turn has demonstrate. (When you cast that spell, you may copy it. If you do, choose an opponent to also copy it. A copy of a permanent spell becomes a token.) +SVar:X:Count$ThisTurnCast_Card.YouCtrl+!wasCastFromYourHand T:Mode$ SpellCopy | ValidActivatingPlayer$ You | NoResolvingCheck$ True | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you copy a spell, put a +1/+1 counter on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/u/unstable_amulet.txt b/forge-gui/res/cardsfolder/u/unstable_amulet.txt index cdd62e22462..a7c1489f7f9 100644 --- a/forge-gui/res/cardsfolder/u/unstable_amulet.txt +++ b/forge-gui/res/cardsfolder/u/unstable_amulet.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Artifact T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEnergy | TriggerDescription$ When CARDNAME enters the battlefield, you get {E}{E} (two energy counters). SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 2 -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, CARDNAME deals 1 damage to each opponent. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, CARDNAME deals 1 damage to each opponent. SVar:TrigDamage:DB$ DealDamage | NumDmg$ 1 | Defined$ Opponent A:AB$ ChangeZone | Cost$ T PayEnergy<2> | Defined$ Imprinted | Origin$ Command | Destination$ Exile | SubAbility$ DBCleanup | StackDescription$ None | SpellDescription$ Exile the top card of your library. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | SubAbility$ DBExile diff --git a/forge-gui/res/cardsfolder/upcoming/fortune_tellers_talent.txt b/forge-gui/res/cardsfolder/upcoming/fortune_tellers_talent.txt index b7b27a53f71..2f0a73deb8a 100644 --- a/forge-gui/res/cardsfolder/upcoming/fortune_tellers_talent.txt +++ b/forge-gui/res/cardsfolder/upcoming/fortune_tellers_talent.txt @@ -5,6 +5,6 @@ S:Mode$ Continuous | Affected$ Card.TopLibrary+YouCtrl | AffectedZone$ Library | K:Class:2:3 U:AddStaticAbility$ SFutureSight SVar:SFutureSight:Mode$ Continuous | Affected$ Card.TopLibrary+YouCtrl | CheckSVar$ X | SVarCompare$ GE1 | AffectedZone$ Library | MayPlay$ True | Description$ As long as you've cast a spell this turn, you may play cards from the top of your library. K:Class:3:2 U:AddStaticAbility$ SReduceCost -SVar:SReduceCost:Mode$ ReduceCost | ValidCard$ Card.wasNotCastFromYourHand | Type$ Spell | Activator$ You | Amount$ 2 | Description$ Spells you cast from anywhere other than your hand cost {2} less to cast. +SVar:SReduceCost:Mode$ ReduceCost | ValidCard$ Card.!wasCastFromYourHand | Type$ Spell | Activator$ You | Amount$ 2 | Description$ Spells you cast from anywhere other than your hand cost {2} less to cast. SVar:X:Count$ThisTurnCast_Card.YouCtrl Oracle:(Gain the next level as a sorcery to add its ability.)\nYou may look at the top card of your library any time.\n{3}{U}: Level 2\nAs long as you've cast a spell this turn, you may play cards from the top of your library.\n{2}{U}: Level 3\nSpells you cast from anywhere other than your hand cost {2} less to cast. diff --git a/forge-gui/res/cardsfolder/v/vega_the_watcher.txt b/forge-gui/res/cardsfolder/v/vega_the_watcher.txt index 3d49bef4248..d69aff1233f 100644 --- a/forge-gui/res/cardsfolder/v/vega_the_watcher.txt +++ b/forge-gui/res/cardsfolder/v/vega_the_watcher.txt @@ -3,7 +3,7 @@ ManaCost:1 W U Types:Legendary Creature Bird Spirit PT:2/2 K:Flying -T:Mode$ SpellCast | ValidCard$ Card.wasNotCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, draw a card. +T:Mode$ SpellCast | ValidCard$ Card.!wasCastFromYourHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you cast a spell from anywhere other than your hand, draw a card. SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 AI:RemoveDeck:Random Oracle:Flying\nWhenever you cast a spell from anywhere other than your hand, draw a card. diff --git a/forge-gui/res/cardsfolder/w/wash_away.txt b/forge-gui/res/cardsfolder/w/wash_away.txt index b0d0fc44dd1..8ef70cbae37 100644 --- a/forge-gui/res/cardsfolder/w/wash_away.txt +++ b/forge-gui/res/cardsfolder/w/wash_away.txt @@ -1,6 +1,6 @@ Name:Wash Away ManaCost:U Types:Instant -A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell that wasn't cast from its owner's hand | ValidTgts$ Card.wasNotCastFromTheirHand | SpellDescription$ Counter target spell [that wasn't cast from its owner's hand]. +A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell that wasn't cast from its owner's hand | ValidTgts$ Card.!wasCastFromTheirHand | SpellDescription$ Counter target spell [that wasn't cast from its owner's hand]. A:SP$ Counter | Cost$ 1 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | PrecostDesc$ Cleave | CostDesc$ {1}{U}{U} | NonBasicSpell$ True | SpellDescription$ (You may cast this spell for its cleave cost. If you do, remove the words in square brackets.) Oracle:Cleave {1}{U}{U} (You may cast this spell for its cleave cost. If you do, remove the words in square brackets.)\nCounter target spell [that wasn't cast from its owner's hand].