diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 97dc8521d78..923d862b406 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -1064,7 +1064,7 @@ public class PlayerControllerAi extends PlayerController { } } - private boolean prepareSingleSa(final Card host, final SpellAbility sa, boolean isMandatory){ + private boolean prepareSingleSa(final Card host, final SpellAbility sa, boolean isMandatory) { if (sa.hasParam("TargetingPlayer")) { Player targetingPlayer = AbilityUtils.getDefinedPlayers(host, sa.getParam("TargetingPlayer"), sa).get(0); sa.setTargetingPlayer(targetingPlayer); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 046e673abe4..2b6a43a4723 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -579,7 +579,7 @@ public class TriggerHandler { sa.setOptionalTrigger(true); decider = AbilityUtils.getDefinedPlayers(host, regtrig.getParam("OptionalDecider"), sa).get(0); } - else if (sa instanceof AbilitySub || !sa.hasParam("Cost") || sa.getParam("Cost").equals("0")) { + else if (sa instanceof AbilitySub || !sa.hasParam("Cost") || sa.hasParam("CostMandatory") || sa.getParam("Cost").equals("0")) { isMandatory = true; } else { // triggers with a cost can't be mandatory sa.setOptionalTrigger(true); diff --git a/forge-gui/res/cardsfolder/a/abomination_of_gudul.txt b/forge-gui/res/cardsfolder/a/abomination_of_gudul.txt index 3f9501c5511..f4cbaf8c10a 100644 --- a/forge-gui/res/cardsfolder/a/abomination_of_gudul.txt +++ b/forge-gui/res/cardsfolder/a/abomination_of_gudul.txt @@ -4,8 +4,7 @@ Types:Creature Horror PT:3/4 K:Flying K:Morph:2 B G U -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> SVar:Picture:http://www.wizards.com/global/images/magic/general/abomination_of_gudul.jpg Oracle:Flying\nWhenever Abomination of Gudul deals combat damage to a player, you may draw a card. If you do, discard a card.\nMorph {2}{B}{G}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/a/awaken_the_sky_tyrant.txt b/forge-gui/res/cardsfolder/a/awaken_the_sky_tyrant.txt index e7d2b4a872b..8e2f9e8ee47 100644 --- a/forge-gui/res/cardsfolder/a/awaken_the_sky_tyrant.txt +++ b/forge-gui/res/cardsfolder/a/awaken_the_sky_tyrant.txt @@ -2,9 +2,7 @@ Name:Awaken the Sky Tyrant ManaCost:3 R Types:Enchantment T:Mode$ DamageDone | ValidSource$ Card.OppCtrl | ValidTarget$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When a source an opponent controls deals damage to you, sacrifice CARDNAME. If you do, create a 5/5 red Dragon creature token with flying. -SVar:TrigSac:DB$ Sacrifice | SacValid$ Self | RememberSacrificed$ True | SubAbility$ DBToken -SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_5_5_dragon_flying | TokenOwner$ You | LegacyImage$ r 5 5 dragon flying c15 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigSac:AB$ Token | TokenAmount$ 1 | TokenScript$ r_5_5_dragon_flying | TokenOwner$ You | Cost$ Sac<1/CARDNAME> | CostMandatory$ True SVar:X:Remembered$Amount SVar:Picture:http://www.wizards.com/global/images/magic/general/awaken_the_sky_tyrant.jpg Oracle:When a source an opponent controls deals damage to you, sacrifice Awaken the Sky Tyrant. If you do, create a 5/5 red Dragon creature token with flying. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/balduvian_horde.txt b/forge-gui/res/cardsfolder/b/balduvian_horde.txt index ca337b8a7e5..8a4c851097c 100644 --- a/forge-gui/res/cardsfolder/b/balduvian_horde.txt +++ b/forge-gui/res/cardsfolder/b/balduvian_horde.txt @@ -2,11 +2,8 @@ Name:Balduvian Horde ManaCost:2 R R Types:Creature Human Barbarian PT:5/5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you discard a card at random. -SVar:TrigDiscard:DB$ Discard | NumCards$ 1 | Mode$ Random | Optional$ True | RememberDiscarded$ True | SubAbility$ DBSacrifice -SVar:DBSacrifice:DB$ Sacrifice | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Remembered$Amount +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you discard a card at random. +SVar:TrigSac:DB$ Sacrifice | SacValid$ Self | UnlessCost$ Discard<1/Random> | UnlessPayer$ You SVar:NeedsToPlayVar:Y GE2 SVar:Y:Count$InYourHand SVar:Picture:http://www.wizards.com/global/images/magic/general/balduvian_horde.jpg diff --git a/forge-gui/res/cardsfolder/b/baral_chief_of_compliance.txt b/forge-gui/res/cardsfolder/b/baral_chief_of_compliance.txt index 14bf4b8a955..ebeb89fe99a 100644 --- a/forge-gui/res/cardsfolder/b/baral_chief_of_compliance.txt +++ b/forge-gui/res/cardsfolder/b/baral_chief_of_compliance.txt @@ -3,9 +3,8 @@ ManaCost:1 U Types:Legendary Creature Human Wizard PT:1/3 S:Mode$ ReduceCost | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Instant and sorcery spells you cast cost {1} less to cast. -T:Mode$ Countered | ValidCause$ Card.YouCtrl | ValidCard$ Card | ValidType$ Spell | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerDescription$ Whenever a spell or ability you control counters a spell, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ Countered | ValidCause$ Card.YouCtrl | ValidCard$ Card | ValidType$ Spell | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerDescription$ Whenever a spell or ability you control counters a spell, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> DeckHints:Type$Instant|Sorcery SVar:Picture:http://www.wizards.com/global/images/magic/general/baral_chief_of_compliance.jpg Oracle:Instant and sorcery spells you cast cost {1} less to cast.\nWhenever a spell or ability you control counters a spell, you may draw a card. If you do, discard a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/battlefield_scavenger.txt b/forge-gui/res/cardsfolder/b/battlefield_scavenger.txt index 2e59e545135..13a9612c03a 100644 --- a/forge-gui/res/cardsfolder/b/battlefield_scavenger.txt +++ b/forge-gui/res/cardsfolder/b/battlefield_scavenger.txt @@ -5,7 +5,5 @@ PT:2/2 K:You may exert CARDNAME as it attacks. T:Mode$ Exerted | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDiscard | TriggerDescription$ Whenever you exert a creature, you may discard a card. If you do, draw a card. // This code presumes that you are only ever allowed to exert creatures you control. If this is changed in the future, it will need an update. -SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | Optional$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:DBDraw:AB$ Draw | NumCards$ 1 | Cost$ Discard<1/Card> Oracle:You may exert Battlefield Scavenger as it attacks. (It won't untap during your next untap step.)\nWhenever you exert a creature, you may discard a card. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/b/burning_tree_vandal.txt b/forge-gui/res/cardsfolder/b/burning_tree_vandal.txt index 664652dc71a..4e116984c3e 100644 --- a/forge-gui/res/cardsfolder/b/burning_tree_vandal.txt +++ b/forge-gui/res/cardsfolder/b/burning_tree_vandal.txt @@ -3,9 +3,7 @@ ManaCost:2 R Types:Creature Human Rogue PT:2/1 K:Riot -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME attacks, you may discard a card. If you do, draw a card. -SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | Optional$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, you may discard a card. If you do, draw a card. +SVar:TrigDraw:AB$ Draw | NumCards$ 1 | Cost$ Discard<1/Card> DeckHas:Ability$Counters Oracle:Riot (This creature enters the battlefield with your choice of a +1/+1 counter or haste.)\nWhenever Burning-Tree Vandal attacks, you may discard a card. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/c/cloudpiercer.txt b/forge-gui/res/cardsfolder/c/cloudpiercer.txt index 91e965f0163..9dd012c8ffb 100755 --- a/forge-gui/res/cardsfolder/c/cloudpiercer.txt +++ b/forge-gui/res/cardsfolder/c/cloudpiercer.txt @@ -4,8 +4,6 @@ Types:Creature Dinosaur PT:5/4 K:Mutate:3 R K:Reach -T:Mode$ Mutates | ValidCard$ Card.Self | Execute$ TrigDiscard | OptionalDecider$ You | TriggerDescription$ Whenever this creature mutates, you may discard a card. If you do, draw a card. -SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ Mutates | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever this creature mutates, you may discard a card. If you do, draw a card. +SVar:TrigDiscard:AB$ Draw | NumCards$ 1 | Cost$ Discard<1/Card> Oracle:Mutate {3}{R} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.)\nReach\nWhenever this creature mutates, you may discard a card. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/d/daring_saboteur.txt b/forge-gui/res/cardsfolder/d/daring_saboteur.txt index 1d1061ce23e..c787fd5c7d5 100644 --- a/forge-gui/res/cardsfolder/d/daring_saboteur.txt +++ b/forge-gui/res/cardsfolder/d/daring_saboteur.txt @@ -3,7 +3,6 @@ ManaCost:1 U Types:Creature Human Pirate PT:2/1 A:AB$ Pump | Cost$ 2 U | Defined$ Self | KW$ HIDDEN Unblockable | SpellDescription$ CARDNAME can't be blocked this turn. -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$ Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> Oracle:{2}{U}: Daring Saboteur can't be blocked this turn.\nWhenever Daring Saboteur deals combat damage to a player, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/d/durable_handicraft.txt b/forge-gui/res/cardsfolder/d/durable_handicraft.txt index 044f0f1a8a5..8c994669750 100644 --- a/forge-gui/res/cardsfolder/d/durable_handicraft.txt +++ b/forge-gui/res/cardsfolder/d/durable_handicraft.txt @@ -2,7 +2,7 @@ Name:Durable Handicraft ManaCost:1 G Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a creature enters the battlefield under your control, you may pay {1}. If you do, put a +1/+1 counter on that creature. -SVar:TrigPutCounter:AB$PutCounter | Cost$ 1 | Defined$ TriggeredCardLKICopy | CounterType$ P1P1 | CounterNum$ 1 +SVar:TrigPutCounter:AB$ PutCounter | Cost$ 1 | Defined$ TriggeredCardLKICopy | CounterType$ P1P1 | CounterNum$ 1 A:AB$ PutCounterAll | Cost$ 5 G Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on each creature you control. SVar:Picture:http://www.wizards.com/global/images/magic/general/durable_handicraft.jpg Oracle:Whenever a creature enters the battlefield under your control, you may pay {1}. If you do, put a +1/+1 counter on that creature.\n{5}{G}, Sacrifice Durable Handicraft: Put a +1/+1 counter on each creature you control. diff --git a/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt b/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt index cc48c710f0a..56db269b309 100644 --- a/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt +++ b/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt @@ -3,9 +3,7 @@ ManaCost:3 R Types:Creature Elemental Scout PT:2/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Other |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When another creature enters the battlefield, sacrifice Flame-Kin War Scout. If you do, Flame-Kin War Scout deals 4 damage to that creature. -SVar:TrigSac:DB$Sacrifice | Defined$ Self | SubAbility$ DBDamage | RememberSacrificed$ True -SVar:DBDamage:DB$DealDamage | Defined$ TriggeredCardLKICopy | NumDmg$ 4 | ConditionDefined$ Remembered | ConditionPresent$ Card.Self | SubAbility$ DBCleanup -SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True +SVar:TrigSac:AB$ DealDamage | Defined$ TriggeredCardLKICopy | NumDmg$ 4 | Cost$ Sac<1/CARDNAME> | CostMandatory$ True AI:RemoveDeck:All SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_kin_war_scout.jpg Oracle:When another creature enters the battlefield, sacrifice Flame-Kin War Scout. If you do, Flame-Kin War Scout deals 4 damage to that creature. diff --git a/forge-gui/res/cardsfolder/g/gallia_of_the_endless_dance.txt b/forge-gui/res/cardsfolder/g/gallia_of_the_endless_dance.txt index 53d8b139310..2ac298f5888 100644 --- a/forge-gui/res/cardsfolder/g/gallia_of_the_endless_dance.txt +++ b/forge-gui/res/cardsfolder/g/gallia_of_the_endless_dance.txt @@ -4,10 +4,8 @@ Types:Legendary Creature Satyr PT:2/2 K:Haste S:Mode$ Continuous | Affected$ Card.Satyr+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Haste | Description$ Other Satyrs you control get +1/+1 and have haste. -T:Mode$ AttackersDeclared | Execute$ TrigDiscard | CheckSVar$ AttackerCount | SVarCompare$ GE3 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ You | OptionalDecider$ You | TriggerDescription$ Whenever you attack with three or more creatures, you may discard a card at random. If you do, draw two cards. +T:Mode$ AttackersDeclared | Execute$ TrigDiscard | CheckSVar$ AttackerCount | SVarCompare$ GE3 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ You | TriggerDescription$ Whenever you attack with three or more creatures, you may discard a card at random. If you do, draw two cards. SVar:AttackerCount:Count$Valid Creature.attacking -SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ Random | RememberDiscarded$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 2 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigDiscard:AB$ Draw | Defined$ You | NumCards$ 2 | Cost$ Discard<1/Random> DeckHints:Type$Satyr Oracle:Haste\nOther Satyrs you control get +1/+1 and have haste.\nWhenever you attack with three or more creatures, you may discard a card at random. If you do, draw two cards. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/grave_peril.txt b/forge-gui/res/cardsfolder/g/grave_peril.txt index f2fff0bf33c..b3dc40c3f1a 100644 --- a/forge-gui/res/cardsfolder/g/grave_peril.txt +++ b/forge-gui/res/cardsfolder/g/grave_peril.txt @@ -2,8 +2,7 @@ Name:Grave Peril ManaCost:1 B Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonBlack |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When a nonblack creature enters the battlefield, sacrifice Grave Peril. If you do, destroy that creature. -SVar:TrigSac:DB$ SacrificeAll | Defined$ Self | SubAbility$ DBDestroy | RememberSacrificed$ True -SVar:DBDestroy:DB$ Destroy | Defined$ TriggeredCardLKICopy | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup +SVar:TrigSac:AB$ Destroy | Defined$ TriggeredCardLKICopy | Cost$ Sac<1/CARDNAME> | CostMandatory$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:NonStackingEffect:True AI:RemoveDeck:Random diff --git a/forge-gui/res/cardsfolder/h/hazorets_monument.txt b/forge-gui/res/cardsfolder/h/hazorets_monument.txt index 23e48f0344a..4f981c68bdf 100644 --- a/forge-gui/res/cardsfolder/h/hazorets_monument.txt +++ b/forge-gui/res/cardsfolder/h/hazorets_monument.txt @@ -3,9 +3,7 @@ ManaCost:3 Types:Legendary Artifact S:Mode$ ReduceCost | ValidCard$ Creature.Red | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Red creature spells you cast cost {1} less to cast. T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | Execute$ TrigDiscard | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell, you may discard a card. If you do, draw a card. -SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | Optional$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigDiscard:AB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | Cost$ Discard<1/Card> DeckNeeds:Color$Red SVar:Picture:http://www.wizards.com/global/images/magic/general/hazorets_monument.jpg Oracle:Red creature spells you cast cost {1} less to cast.\nWhenever you cast a creature spell, you may discard a card. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/i/izzet_keyrune.txt b/forge-gui/res/cardsfolder/i/izzet_keyrune.txt index 413f58067a9..094159528fb 100644 --- a/forge-gui/res/cardsfolder/i/izzet_keyrune.txt +++ b/forge-gui/res/cardsfolder/i/izzet_keyrune.txt @@ -4,9 +4,8 @@ Types:Artifact A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}. A:AB$ Mana | Cost$ T | Produced$ R | SpellDescription$ Add {R}. A:AB$ Animate | Cost$ U R | Defined$ Self | Power$ 2 | Toughness$ 1 | Types$ Artifact,Creature,Elemental | Colors$ Blue,Red | SpellDescription$ Until end of turn, CARDNAME becomes a 2/1 blue and red Elemental artifact creature. -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> AI:RemoveDeck:Random DeckNeeds:Color$Blue|Red SVar:Picture:http://www.wizards.com/global/images/magic/general/izzet_keyrune.jpg diff --git a/forge-gui/res/cardsfolder/j/jeskai_ascendancy.txt b/forge-gui/res/cardsfolder/j/jeskai_ascendancy.txt index 5447810ea5a..4e357f7c18e 100644 --- a/forge-gui/res/cardsfolder/j/jeskai_ascendancy.txt +++ b/forge-gui/res/cardsfolder/j/jeskai_ascendancy.txt @@ -2,11 +2,10 @@ Name:Jeskai Ascendancy ManaCost:U R W Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPumpAll | TriggerDescription$ Whenever you cast a noncreature spell, creatures you control get +1/+1 until end of turn. Untap those creatures. -T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever you cast a noncreature spell, you may draw a card. If you do, discard a card. +T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerDescription$ Whenever you cast a noncreature spell, you may draw a card. If you do, discard a card. SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ 1 | NumDef$ 1 | SubAbility$ TrigUntapAll SVar:TrigUntapAll:DB$ UntapAll | ValidCards$ Creature.YouCtrl -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> SVar:BuffedBy:Card.nonCreature+nonLand SVar:Picture:http://www.wizards.com/global/images/magic/general/jeskai_ascendancy.jpg Oracle:Whenever you cast a noncreature spell, creatures you control get +1/+1 until end of turn. Untap those creatures.\nWhenever you cast a noncreature spell, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/j/jeskai_elder.txt b/forge-gui/res/cardsfolder/j/jeskai_elder.txt index d217c58bc04..f9ddadfc912 100644 --- a/forge-gui/res/cardsfolder/j/jeskai_elder.txt +++ b/forge-gui/res/cardsfolder/j/jeskai_elder.txt @@ -3,8 +3,7 @@ ManaCost:1 U Types:Creature Human Monk PT:1/2 K:Prowess -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> SVar:Picture:http://www.wizards.com/global/images/magic/general/jeskai_elder.jpg Oracle:Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)\nWhenever Jeskai Elder deals combat damage to a player, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/k/keldon_raider.txt b/forge-gui/res/cardsfolder/k/keldon_raider.txt index 7b935cc7afc..51bb1b78bd1 100644 --- a/forge-gui/res/cardsfolder/k/keldon_raider.txt +++ b/forge-gui/res/cardsfolder/k/keldon_raider.txt @@ -3,8 +3,6 @@ ManaCost:2 R R Types:Creature Human Warrior PT:4/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, you may discard a card. If you do, draw a card. -SVar:TrigDiscard:DB$ Discard | NumCards$ 1 | Mode$ TgtChoose | Optional$ True | RememberDiscarded$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigDiscard:AB$ Draw | NumCards$ 1 | Cost$ Discard<1/Card> SVar:X:Remembered$Amount Oracle:When Keldon Raider enters the battlefield, you may discard a card. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/l/lamplighter_of_selhoff.txt b/forge-gui/res/cardsfolder/l/lamplighter_of_selhoff.txt index b91d4965785..f97e65e20aa 100644 --- a/forge-gui/res/cardsfolder/l/lamplighter_of_selhoff.txt +++ b/forge-gui/res/cardsfolder/l/lamplighter_of_selhoff.txt @@ -2,9 +2,8 @@ Name:Lamplighter of Selhoff ManaCost:4 U Types:Creature Zombie Horror PT:3/5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Permanent.Zombie+Other+YouCtrl | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, if you control another Zombie, you may draw a card. If you do, discard a card. -SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Permanent.Zombie+Other+YouCtrl | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, if you control another Zombie, you may draw a card. If you do, discard a card. +SVar:TrigDraw:AB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | Cost$ Draw<1/You> DeckHints:Type$Zombie SVar:Picture:http://www.wizards.com/global/images/magic/general/lamplighter_of_selhoff.jpg Oracle:When Lamplighter of Selhoff enters the battlefield, if you control another Zombie, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/m/mask_of_memory.txt b/forge-gui/res/cardsfolder/m/mask_of_memory.txt index efca65d7859..07fa17cf9f1 100644 --- a/forge-gui/res/cardsfolder/m/mask_of_memory.txt +++ b/forge-gui/res/cardsfolder/m/mask_of_memory.txt @@ -2,8 +2,7 @@ Name:Mask of Memory ManaCost:2 Types:Artifact Equipment K:Equip:1 -T:Mode$ DamageDone | ValidSource$ Creature.AttachedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, you may draw two cards. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 2 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ DamageDone | ValidSource$ Creature.AttachedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoot | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, you may draw two cards. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<2/You> SVar:Picture:http://www.wizards.com/global/images/magic/general/mask_of_memory.jpg Oracle:Whenever equipped creature deals combat damage to a player, you may draw two cards. If you do, discard a card.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/m/minotaur_explorer.txt b/forge-gui/res/cardsfolder/m/minotaur_explorer.txt index 9afb763ddc3..069b819eb1e 100644 --- a/forge-gui/res/cardsfolder/m/minotaur_explorer.txt +++ b/forge-gui/res/cardsfolder/m/minotaur_explorer.txt @@ -2,11 +2,8 @@ Name:Minotaur Explorer ManaCost:1 R Types:Creature Minotaur Scout PT:3/3 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you discard a card at random. -SVar:TrigDiscard:DB$ Discard | NumCards$ 1 | Mode$ Random | Optional$ True | RememberDiscarded$ True | SubAbility$ DBSacrifice -SVar:DBSacrifice:DB$ Sacrifice | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Remembered$Amount +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you discard a card at random. +SVar:TrigSac:DB$ Sacrifice | SacValid$ Self | UnlessCost$ Discard<1/Random> | UnlessPayer$ You SVar:NeedsToPlayVar:Y GE2 SVar:Y:Count$InYourHand SVar:Picture:http://resources.wizards.com/magic/cards/od/en-us/card31786.jpg diff --git a/forge-gui/res/cardsfolder/m/mortal_obstinacy.txt b/forge-gui/res/cardsfolder/m/mortal_obstinacy.txt index 0134f508d04..351906ef8e6 100644 --- a/forge-gui/res/cardsfolder/m/mortal_obstinacy.txt +++ b/forge-gui/res/cardsfolder/m/mortal_obstinacy.txt @@ -4,7 +4,7 @@ Types:Enchantment Aura K:Enchant creature you control A:SP$ Attach | Cost$ W | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | Description$ Enchanted creature gets +1/+1. -T:Mode$ DamageDone | ValidSource$ Card.EnchantedBy | ValidTarget$ Player | Execute$ TrigDestroy| CombatDamage$ True | TriggerDescription$ Whenever enchanted creature deals combat damage to a player, you may sacrifice CARDNAME. If you do, destroy target enchantment. +T:Mode$ DamageDone | ValidSource$ Card.EnchantedBy | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | TriggerDescription$ Whenever enchanted creature deals combat damage to a player, you may sacrifice CARDNAME. If you do, destroy target enchantment. SVar:TrigDestroy:AB$ Destroy | Cost$ Sac<1/CARDNAME> | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment SVar:Picture:http://www.wizards.com/global/images/magic/general/mortal_obstinacy.jpg Oracle:Enchant creature you control\nEnchanted creature gets +1/+1.\nWhenever enchanted creature deals combat damage to a player, you may sacrifice Mortal Obstinacy. If you do, destroy target enchantment. diff --git a/forge-gui/res/cardsfolder/m/murder_of_crows.txt b/forge-gui/res/cardsfolder/m/murder_of_crows.txt index 521d9a6ba29..c9dd20abef4 100644 --- a/forge-gui/res/cardsfolder/m/murder_of_crows.txt +++ b/forge-gui/res/cardsfolder/m/murder_of_crows.txt @@ -3,8 +3,7 @@ ManaCost:3 U U Types:Creature Bird PT:4/4 K:Flying -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever another creature dies, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerZones$ Battlefield | TriggerDescription$ Whenever another creature dies, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> SVar:Picture:http://www.wizards.com/global/images/magic/general/murder_of_crows.jpg Oracle:Flying\nWhenever another creature dies, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/p/pillaging_horde.txt b/forge-gui/res/cardsfolder/p/pillaging_horde.txt index 2e80cc30580..b049d02ebf1 100644 --- a/forge-gui/res/cardsfolder/p/pillaging_horde.txt +++ b/forge-gui/res/cardsfolder/p/pillaging_horde.txt @@ -2,10 +2,8 @@ Name:Pillaging Horde ManaCost:2 R R Types:Creature Human Barbarian PT:5/5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you discard a card at random. -SVar:TrigDiscard:DB$ Discard | NumCards$ 1 | Mode$ Random | Optional$ True | RememberDiscarded$ True | SubAbility$ DBSacrifice -SVar:DBSacrifice:DB$ Sacrifice | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you discard a card at random. +SVar:TrigSac:DB$ Sacrifice | SacValid$ Self | UnlessCost$ Discard<1/Random> | UnlessPayer$ You SVar:X:Remembered$Amount SVar:NeedsToPlayVar:Y GE2 SVar:Y:Count$InYourHand diff --git a/forge-gui/res/cardsfolder/p/promise_of_bunrei.txt b/forge-gui/res/cardsfolder/p/promise_of_bunrei.txt index f3eadbd61bb..e24a4476751 100644 --- a/forge-gui/res/cardsfolder/p/promise_of_bunrei.txt +++ b/forge-gui/res/cardsfolder/p/promise_of_bunrei.txt @@ -2,7 +2,5 @@ Name:Promise of Bunrei ManaCost:2 W Types:Enchantment T:Mode$ ChangesZone | ValidCard$ Creature.YouCtrl | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ When a creature you control dies, sacrifice CARDNAME. If you do, create four 1/1 colorless Spirit creature tokens. -SVar:TrigSac:DB$ SacrificeAll | Defined$ Self | RememberSacrificed$ True | SubAbility$ DBToken -SVar:DBToken:DB$ Token | TokenAmount$ 4 | TokenScript$ c_1_1_spirit | TokenOwner$ You | LegacyImage$ c 1 1 spirit sok | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigSac:AB$ Token | TokenAmount$ 4 | TokenScript$ c_1_1_spirit | TokenOwner$ You | LegacyImage$ c 1 1 spirit sok | Cost$ Sac<1/CARDNAME> | CostMandatory$ True Oracle:When a creature you control dies, sacrifice Promise of Bunrei. If you do, create four 1/1 colorless Spirit creature tokens. diff --git a/forge-gui/res/cardsfolder/r/reckless_racer.txt b/forge-gui/res/cardsfolder/r/reckless_racer.txt index 7c2c60c6cac..249df800f9e 100644 --- a/forge-gui/res/cardsfolder/r/reckless_racer.txt +++ b/forge-gui/res/cardsfolder/r/reckless_racer.txt @@ -4,8 +4,6 @@ Types:Creature Human Pilot PT:2/3 K:First Strike T:Mode$ Taps | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes tapped, you may discard a card. If you do, draw a card. -SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigDiscard:AB$ Draw | NumCards$ 1 | Cost$ Discard<1/Card> SVar:Picture:http://www.wizards.com/global/images/magic/general/reckless_racer.jpg Oracle:First strike\nWhenever Reckless Racer becomes tapped, you may discard a card. If you do, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/riddlesmith.txt b/forge-gui/res/cardsfolder/r/riddlesmith.txt index 8eb1a59c874..ee9ce54dadf 100644 --- a/forge-gui/res/cardsfolder/r/riddlesmith.txt +++ b/forge-gui/res/cardsfolder/r/riddlesmith.txt @@ -2,9 +2,8 @@ Name:Riddlesmith ManaCost:1 U Types:Creature Human Artificer PT:2/1 -T:Mode$ SpellCast | ValidCard$ Artifact | ValidActivatingPlayer$ You | Execute$ TrigLoot | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever you cast an artifact spell, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ SpellCast | ValidCard$ Artifact | ValidActivatingPlayer$ You | Execute$ TrigLoot | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast an artifact spell, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> AI:RemoveDeck:Random SVar:Picture:http://www.wizards.com/global/images/magic/general/riddlesmith.jpg Oracle:Whenever you cast an artifact spell, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/s/sage_of_the_falls.txt b/forge-gui/res/cardsfolder/s/sage_of_the_falls.txt index 24c4cf4ef12..f27a147b5f8 100644 --- a/forge-gui/res/cardsfolder/s/sage_of_the_falls.txt +++ b/forge-gui/res/cardsfolder/s/sage_of_the_falls.txt @@ -4,6 +4,5 @@ Types:Creature Merfolk Wizard PT:2/5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME or another non-Human creature enters the battlefield under your control, you may draw a card. If you do, discard a card. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonHuman+Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigLoot | OptionalDecider$ You | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another non-Human creature enters the battlefield under your control, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$ Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> Oracle:Whenever Sage of the Falls or another non-Human creature enters the battlefield under your control, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/s/salvage_drone.txt b/forge-gui/res/cardsfolder/s/salvage_drone.txt index ec8a9d9bbc9..b99ddd5fc98 100644 --- a/forge-gui/res/cardsfolder/s/salvage_drone.txt +++ b/forge-gui/res/cardsfolder/s/salvage_drone.txt @@ -4,9 +4,8 @@ Types:Creature Eldrazi Drone PT:1/1 K:Devoid K:Ingest -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ When CARDNAME dies, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerDescription$ When CARDNAME dies, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> DeckHints:Type$Processor SVar:Picture:http://www.wizards.com/global/images/magic/general/salvage_drone.jpg Oracle:Devoid (This card has no color.)\nIngest (Whenever this creature deals combat damage to a player, that player exiles the top card of their library.)\nWhen Salvage Drone dies, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/s/shipwreck_looter.txt b/forge-gui/res/cardsfolder/s/shipwreck_looter.txt index 3c1988ab0bc..10838966237 100644 --- a/forge-gui/res/cardsfolder/s/shipwreck_looter.txt +++ b/forge-gui/res/cardsfolder/s/shipwreck_looter.txt @@ -2,8 +2,7 @@ Name:Shipwreck Looter ManaCost:1 U Types:Creature Human Pirate PT:2/1 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ RaidTest | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Raid — When CARDNAME enters the battlefield, if you attacked this turn, you may draw a card. If you do, discard a card. -SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ RaidTest | Execute$ TrigDraw | TriggerDescription$ Raid — When CARDNAME enters the battlefield, if you attacked this turn, you may draw a card. If you do, discard a card. +SVar:TrigDraw:AB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | Cost$ Draw<1/You> SVar:RaidTest:Count$AttackersDeclared Oracle:Raid — When Shipwreck Looter enters the battlefield, if you attacked this turn, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/s/shoal_kraken.txt b/forge-gui/res/cardsfolder/s/shoal_kraken.txt index a59d513e294..af8a01e449a 100755 --- a/forge-gui/res/cardsfolder/s/shoal_kraken.txt +++ b/forge-gui/res/cardsfolder/s/shoal_kraken.txt @@ -2,8 +2,7 @@ Name:Shoal Kraken ManaCost:4 U Types:Creature Kraken PT:3/5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Constellation - Whenever an enchantment enters the battlefield under your control, you may a draw card. If you do, discard a card. -SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Constellation - Whenever an enchantment enters the battlefield under your control, you may a draw card. If you do, discard a card. +SVar:TrigDraw:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> DeckNeeds:Type$Enchantment Oracle:Constellation — Whenever an enchantment enters the battlefield under your control, you may draw a card. If you do, discard a card. diff --git a/forge-gui/res/cardsfolder/s/skeleton_key.txt b/forge-gui/res/cardsfolder/s/skeleton_key.txt index bd6aae3714f..2a8f7a6cd1f 100644 --- a/forge-gui/res/cardsfolder/s/skeleton_key.txt +++ b/forge-gui/res/cardsfolder/s/skeleton_key.txt @@ -2,9 +2,8 @@ Name:Skeleton Key ManaCost:1 Types:Artifact Equipment S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Skulk | Description$ Equipped creature has skulk. (It can't be blocked by creatures with greater power.) -T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, you may draw a card. If you do, discard a card. -SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose +T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, you may draw a card. If you do, discard a card. +SVar:TrigDraw:AB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | Cost$ Draw<1/You> K:Equip:2 DeckHas:Ability$Discard DeckHints:Keyword$Madness & Ability$Delirium diff --git a/forge-gui/res/cardsfolder/s/smugglers_copter.txt b/forge-gui/res/cardsfolder/s/smugglers_copter.txt index 054727674af..a265b0b511b 100644 --- a/forge-gui/res/cardsfolder/s/smugglers_copter.txt +++ b/forge-gui/res/cardsfolder/s/smugglers_copter.txt @@ -3,10 +3,9 @@ ManaCost:2 Types:Artifact Vehicle PT:3/3 K:Flying -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks or blocks, you may draw a card. If you do, discard a card. -T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigLoot | OptionalDecider$ You | Secondary$ True | TriggerDescription$ Whenever CARDNAME attacks or blocks, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$ Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigLoot | TriggerDescription$ Whenever CARDNAME attacks or blocks, you may draw a card. If you do, discard a card. +T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigLoot | Secondary$ True | TriggerDescription$ Whenever CARDNAME attacks or blocks, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> K:Crew:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/smugglers_copter.jpg Oracle:Flying\nWhenever Smuggler's Copter attacks or blocks, you may draw a card. If you do, discard a card.\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This Vehicle becomes an artifact creature until end of turn.) diff --git a/forge-gui/res/cardsfolder/s/standstill.txt b/forge-gui/res/cardsfolder/s/standstill.txt index 3f466236530..5bfc6a1c472 100644 --- a/forge-gui/res/cardsfolder/s/standstill.txt +++ b/forge-gui/res/cardsfolder/s/standstill.txt @@ -2,9 +2,7 @@ Name:Standstill ManaCost:1 U Types:Enchantment T:Mode$ SpellCast | ValidActivatingPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When a player casts a spell, sacrifice CARDNAME. If you do, each of that player's opponents draws three cards. -SVar:TrigSac:DB$ Sacrifice | SacValid$ Self | RememberSacrificed$ True | SubAbility$ DrawOpp -SVar:DrawOpp:DB$ Draw | NumCards$ 3 | Defined$ TriggeredCardOpponent | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigSac:AB$ Draw | NumCards$ 3 | Cost$ Sac<1/CARDNAME> | CostMandatory$ True | Defined$ TriggeredCardOpponent SVar:X:Remembered$Amount SVar:Y:Count$Valid Creature.YouCtrl SVar:Z:Count$Valid Creature.OppCtrl diff --git a/forge-gui/res/cardsfolder/s/surge_mare.txt b/forge-gui/res/cardsfolder/s/surge_mare.txt index aa992d1aba4..88fd5ce255e 100644 --- a/forge-gui/res/cardsfolder/s/surge_mare.txt +++ b/forge-gui/res/cardsfolder/s/surge_mare.txt @@ -3,9 +3,8 @@ ManaCost:U U Types:Creature Horse Fish PT:0/5 S:Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.Green | Description$ CARDNAME can't be blocked by green creatures. -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals damage to an opponent, you may draw a card. If you do, discard a card. -SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals damage to an opponent, you may draw a card. If you do, discard a card. +SVar:TrigDraw:AB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | Cost$ Draw<1/You> A:AB$ Pump | Cost$ 1 U | ValidCard$ Card.Self | NumAtt$ +2 | NumDef$ -2 | SpellDescription$ CARDNAME gets +2/-2 until end of turn. DeckHas:Ability$Discard Oracle:Surge Mare can't be blocked by green creatures.\nWhenever Surge Mare deals damage to an opponent, you may draw a card. If you do, discard a card.\n{1}{U}: Surge Mare gets +2/-2 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/viashino_racketeer.txt b/forge-gui/res/cardsfolder/v/viashino_racketeer.txt index 35be277b37e..a4c2ff54475 100644 --- a/forge-gui/res/cardsfolder/v/viashino_racketeer.txt +++ b/forge-gui/res/cardsfolder/v/viashino_racketeer.txt @@ -3,9 +3,7 @@ ManaCost:2 R Types:Creature Viashino Rogue PT:2/1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, you may discard a card. If you do, draw a card. -SVar:TrigDiscard:DB$ Discard | NumCards$ 1 | Mode$ TgtChoose | Optional$ True | RememberDiscarded$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:TrigDiscard:AB$ Draw | NumCards$ 1 | Cost$ Discard<1/Card> SVar:X:Remembered$Amount SVar:Picture:http://www.wizards.com/global/images/magic/general/viashino_racketeer.jpg Oracle:When Viashino Racketeer enters the battlefield, you may discard a card. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/w/wandering_champion.txt b/forge-gui/res/cardsfolder/w/wandering_champion.txt index 8e0203fc569..217a24a3aa4 100644 --- a/forge-gui/res/cardsfolder/w/wandering_champion.txt +++ b/forge-gui/res/cardsfolder/w/wandering_champion.txt @@ -2,10 +2,8 @@ Name:Wandering Champion ManaCost:1 W Types:Creature Human Monk PT:3/1 -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | IsPresent$ Permanent.Blue+YouCtrl,Permanent.Red+YouCtrl | CombatDamage$ True | Execute$ TrigDiscard | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, if you control a blue or red permanent, you may discard a card. If you do, draw a card. -SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | IsPresent$ Permanent.Blue+YouCtrl,Permanent.Red+YouCtrl | CombatDamage$ True | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, if you control a blue or red permanent, you may discard a card. If you do, draw a card. +SVar:TrigDiscard:AB$ Draw | NumCards$ 1 | Cost$ Discard<1/Card> DeckHints:Color$Blue|Red SVar:Picture:http://www.wizards.com/global/images/magic/general/wandering_champion.jpg Oracle:Whenever Wandering Champion deals combat damage to a player, if you control a blue or red permanent, you may discard a card. If you do, draw a card. diff --git a/forge-gui/res/cardsfolder/w/wharf_infiltrator.txt b/forge-gui/res/cardsfolder/w/wharf_infiltrator.txt index 4f69997d820..e210c27f852 100644 --- a/forge-gui/res/cardsfolder/w/wharf_infiltrator.txt +++ b/forge-gui/res/cardsfolder/w/wharf_infiltrator.txt @@ -3,9 +3,8 @@ ManaCost:1 U Types:Creature Human Horror PT:1/1 K:Skulk -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. -SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw a card. If you do, discard a card. +SVar:TrigDraw:AB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | Cost$ Draw<1/You> T:Mode$ Discarded | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you discard a creature card, you may pay {2}. If you do, create a 3/2 colorless Eldrazi Horror creature token. SVar:TrigToken:AB$ Token | Cost$ 2 | TokenAmount$ 1 | TokenScript$ c_3_2_eldrazi_horror | TokenOwner$ You | LegacyImage$ c 3 2 eldrazi horror emn DeckHas:Ability$Token & Ability$Discard diff --git a/forge-gui/res/cardsfolder/w/windrider_wizard.txt b/forge-gui/res/cardsfolder/w/windrider_wizard.txt index 26334907bef..8cea9047c69 100644 --- a/forge-gui/res/cardsfolder/w/windrider_wizard.txt +++ b/forge-gui/res/cardsfolder/w/windrider_wizard.txt @@ -3,8 +3,7 @@ ManaCost:2 U Types:Creature Human Wizard PT:2/2 K:Flying -T:Mode$ SpellCast | ValidCard$ Instant,Sorcery,Wizard | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever you cast an instant, sorcery, or Wizard spell, you may draw a card. If you do, discard a card. -SVar:TrigLoot:DB$ Draw | NumCards$ 1 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery,Wizard | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerDescription$ Whenever you cast an instant, sorcery, or Wizard spell, you may draw a card. If you do, discard a card. +SVar:TrigLoot:AB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 | Cost$ Draw<1/You> DeckHints:Type$Instant|Sorcery|Wizard Oracle:Flying\nWhenever you cast an instant, sorcery, or Wizard spell, you may draw a card. If you do, discard a card. diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index ed69cdd0fd2..7968c9b8556 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -269,8 +269,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { final CardCollection enoughType = CardLists.filter(list, CardPredicates.isOwner(p)); if (enoughType.size() < c) { list.removeAll((CardCollectionView)enoughType); - } - else { + } else { payableZone.add(p); } } @@ -437,9 +436,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (source.getController() == ability.getActivatingPlayer() && source.isInPlay()) { return player.getController().confirmPayment(cost, Localizer.getInstance().getMessage("lblExertCardConfirm", CardTranslation.getTranslatedName(source.getName())), ability) ? PaymentDecision.card(source) : null; } - else { - return null; - } + return null; } Integer c = cost.convertAmount(); @@ -782,8 +779,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { } }; inp.setMessage(Localizer.getInstance().getMessage("lblSelectNCardOfSameColorToReveal", String.valueOf(num))); - } - else { + } else { Integer num = cost.convertAmount(); CardCollectionView hand = player.getCardsIn(cost.getRevealFrom()); @@ -1027,11 +1023,9 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (cost.payCostFromSource()) { if (source.getController() == ability.getActivatingPlayer() && source.isInPlay()) { - return player.getController().confirmPayment(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(source.getName())), ability) ? PaymentDecision.card(source) : null; - } - else { - return null; + return ability.hasParam("CostMandatory") || player.getController().confirmPayment(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(source.getName())), ability) ? PaymentDecision.card(source) : null; } + return null; } if (type.equals("OriginalHost")) { @@ -1039,9 +1033,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (host.getController() == ability.getActivatingPlayer() && host.isInPlay()) { return player.getController().confirmPayment(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(host.getName())), ability) ? PaymentDecision.card(host) : null; } - else { - return null; - } + return null; } if (amount.equals("All")) { @@ -1209,8 +1201,6 @@ public class HumanCostDecision extends CostDecisionMakerBase { @Override public PaymentDecision visit(final CostUnattach cost) { - final Card source = ability.getHostCard(); - final Card cardToUnattach = cost.findCardToUnattach(source, player, ability); if (cardToUnattach != null && player.getController().confirmPayment(cost, Localizer.getInstance().getMessage("lblUnattachCardConfirm", CardTranslation.getTranslatedName(cardToUnattach.getName())), ability)) { return PaymentDecision.card(cardToUnattach); diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java index a410e3e3006..760c9374e90 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/player/HumanPlay.java @@ -44,6 +44,7 @@ import forge.gamemodes.match.input.InputPayManaOfCostPayment; import forge.gamemodes.match.input.InputSelectCardsFromList; import forge.gui.FThreads; import forge.gui.util.SGuiChoose; +import forge.util.Aggregates; import forge.util.Localizer; import forge.util.TextUtil; import forge.util.collect.FCollectionView; @@ -565,15 +566,21 @@ public class HumanPlay { if (!hasPaid) { return false; } } else if (part instanceof CostDiscard) { + int amount = getAmountFromPartX(part, source, sourceAbility); if ("Hand".equals(part.getType())) { if (!p.getController().confirmPayment(part, Localizer.getInstance().getMessage("lblDoYouWantDiscardYourHand"), sourceAbility)) { return false; } ((CostDiscard)part).payAsDecided(p, PaymentDecision.card(p.getCardsIn(ZoneType.Hand)), sourceAbility); + } else if ("Random".equals(part.getType())) { + if (!part.canPay(sourceAbility, p) || !p.getController().confirmPayment(part, Localizer.getInstance().getMessage("lblWouldYouLikeRandomDiscardTargetCard", amount), sourceAbility)) { + return false; + } + + ((CostDiscard)part).payAsDecided(p, (PaymentDecision.card(Aggregates.random(p.getCardsIn(ZoneType.Hand), amount, new CardCollection()))), sourceAbility); } else { CardCollectionView list = CardLists.getValidCards(p.getCardsIn(ZoneType.Hand), part.getType(), p, source, sourceAbility); - int amount = getAmountFromPartX(part, source, sourceAbility); boolean hasPaid = payCostPart(controller, p, sourceAbility, (CostPartWithList)part, amount, list, Localizer.getInstance().getMessage("lbldiscard") + orString); if (!hasPaid) { return false; } }