diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java index 02cdadca1c4..c066116aea1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseSourceEffect.java @@ -84,7 +84,6 @@ public class ChooseSourceEffect extends SpellAbilityEffect { if (sa.hasParam("Choices")) { permanentSources = CardLists.getValidCards(permanentSources, sa.getParam("Choices"), host.getController(), host, sa); - stackSources = CardLists.getValidCards(stackSources, sa.getParam("Choices"), host.getController(), host, sa); referencedSources = CardLists.getValidCards(referencedSources, sa.getParam("Choices"), host.getController(), host, sa); commandZoneSources = CardLists.getValidCards(commandZoneSources, sa.getParam("Choices"), host.getController(), host, sa); @@ -137,7 +136,7 @@ public class ChooseSourceEffect extends SpellAbilityEffect { Card o = null; do { o = p.getController().chooseSingleEntityForEffect(sourcesToChooseFrom, sa, choiceTitle, null); - } while (o == null); + } while (o == null || o.getName().startsWith("--")); chosen.add(o); sourcesToChooseFrom.remove(o); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java index 9dadfade795..691b149d6d6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java @@ -24,7 +24,7 @@ public class ControlGainEffect extends SpellAbilityEffect { protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - final List newController = getTargetPlayers(sa, "NewController"); + final List newController = getDefinedPlayersOrTargeted(sa, "NewController"); if (newController.isEmpty()) { newController.add(sa.getActivatingPlayer()); } diff --git a/forge-gui/res/cardsfolder/a/ajanis_aid.txt b/forge-gui/res/cardsfolder/a/ajanis_aid.txt index cfdbd510d95..afbb53f0358 100644 --- a/forge-gui/res/cardsfolder/a/ajanis_aid.txt +++ b/forge-gui/res/cardsfolder/a/ajanis_aid.txt @@ -3,7 +3,7 @@ ManaCost:2 G W Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library and/or graveyard for a card named Ajani, Valiant Protector, reveal it, and put it into your hand. If you search your library this way, shuffle. SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | OriginChoice$ True | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Hand | ChangeType$ Card.namedAjani; Valiant Protector | ChangeNum$ 1 | Optional$ True -A:AB$ ChooseCard | Cost$ Sac<1/CARDNAME> | Choices$ Creature | AILogic$ NeedsPrevention | SubAbility$ DBEffect | RememberChosen$ True | SpellDescription$ Prevent all combat damage a creature of your choice would deal this turn. +A:AB$ ChooseCard | Cost$ Sac<1/CARDNAME> | Choices$ Creature | Mandatory$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | RememberChosen$ True | SpellDescription$ Prevent all combat damage a creature of your choice would deal this turn. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | IsCombat$ True | ValidSource$ Card.IsRemembered | Prevent$ True | Description$ Prevent all combat damage a creature of your choice would deal this turn. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/a/aluren.txt b/forge-gui/res/cardsfolder/a/aluren.txt index 7962e60828c..0a6190d776f 100644 --- a/forge-gui/res/cardsfolder/a/aluren.txt +++ b/forge-gui/res/cardsfolder/a/aluren.txt @@ -1,7 +1,7 @@ Name:Aluren ManaCost:2 G G Types:Enchantment -S:Mode$ Continuous | Affected$ Creature.cmcLE3+nonToken | MayPlay$ True | MayPlayCardOwner$ True | MayPlayWithoutManaCost$ True | MayPlayWithFlash$ True | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand,Graveyard,Library,Exile | Description$ Any player may cast creature spells with mana value 3 or less without paying their mana costs and as though they had flash. +S:Mode$ Continuous | Affected$ Creature.cmcLE3+nonToken | MayPlay$ True | MayPlayCardOwner$ True | MayPlayWithoutManaCost$ True | MayPlayWithFlash$ True | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Description$ Any player may cast creature spells with mana value 3 or less without paying their mana costs and as though they had flash. SVar:NonStackingEffect:True AI:RemoveDeck:Random SVar:Picture:http://www.wizards.com/global/images/magic/general/aluren.jpg diff --git a/forge-gui/res/cardsfolder/a/armed_and_armored.txt b/forge-gui/res/cardsfolder/a/armed_and_armored.txt index 28c31627381..d49a2edaad3 100644 --- a/forge-gui/res/cardsfolder/a/armed_and_armored.txt +++ b/forge-gui/res/cardsfolder/a/armed_and_armored.txt @@ -2,7 +2,7 @@ Name:Armed and Armored ManaCost:1 W Types:Instant A:SP$ AnimateAll | Cost$ 1 W | Types$ Creature,Artifact | ValidCards$ Vehicle.YouCtrl | SubAbility$ ChooseDwarf | StackDescription$ Vehicles {p:You} controls become artifact creatures until end of turn. | SpellDescription$ Vehicles you control become artifact creatures until end of turn. Choose a Dwarf you control. Attach any number of Equipment you control to it. -SVar:ChooseDwarf:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Dwarf.YouCtrl | ChoiceTitle$ Choose a Dwarf you control | StackDescription$ {p:You} chooses a Dwarf they control and attaches any number of Equipment they control to it. | ImprintChosen$ True | SubAbility$ ChooseEquipment +SVar:ChooseDwarf:DB$ ChooseCard | Defined$ You | Mandatory$ True | Choices$ Dwarf.YouCtrl | ChoiceTitle$ Choose a Dwarf you control | StackDescription$ {p:You} chooses a Dwarf they control and attaches any number of Equipment they control to it. | ImprintChosen$ True | SubAbility$ ChooseEquipment SVar:ChooseEquipment:DB$ ChooseCard | Defined$ You | MinAmount$ 0 | Amount$ X | Choices$ Equipment.YouCtrl | StackDescription$ None | ChoiceTitle$ Choose any number of Equipment you control | ForgetChosen$ True | SubAbility$ DeployDwarf SVar:DeployDwarf:DB$ RepeatEach | RepeatSubAbility$ ArmDwarf | RepeatCards$ Card.ChosenCard | SubAbility$ DBCleanup SVar:ArmDwarf:DB$ Attach | Object$ Remembered | Defined$ Imprinted | StackDescription$ None diff --git a/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt b/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt index cbaa25fa107..8b22230ffdc 100644 --- a/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt +++ b/forge-gui/res/cardsfolder/a/ascent_of_the_worthy.txt @@ -2,10 +2,10 @@ Name:Ascent of the Worthy ManaCost:1 W B Types:Enchantment Saga K:Saga:3:DBChoose,DBChoose,DBChangeZone -SVar:DBChoose:DB$ ChooseCard | Choices$ Creature.YouCtrl | SubAbility$ DBEffect | SpellDescription$ Choose a creature you control. Until your next turn, all damage that would be dealt to creatures you control is dealt to that creature instead. +SVar:DBChoose:DB$ ChooseCard | Choices$ Creature.YouCtrl | Mandatory$ True | SubAbility$ DBEffect | SpellDescription$ Choose a creature you control. Until your next turn, all damage that would be dealt to creatures you control is dealt to that creature instead. SVar:DBEffect:DB$ Effect | ReplacementEffects$ DamageEvent | ExileOnMoved$ True | RememberObjects$ ChosenCard | Duration$ UntilYourNextTurn SVar:DamageEvent:Event$ DamageDone | ActiveZones$ Command | ValidTarget$ Creature.YouCtrl | ReplaceWith$ GideonSac | DamageTarget$ Remembered | Description$ All damage that would be dealt this turn to creatures you control is dealt to the chosen creature instead (if it's still on the battlefield). -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | WithCounters$ Flying_1 | AnimateSubAbility$ Animate | SpellDescription$ Return target creature card from your graveyard to the battlefield with a flying counter on it. SVar:GideonSac:DB$ ReplaceEffect | VarName$ Affected | VarValue$ Remembered | VarType$ Card +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | WithCounters$ Flying_1 | AnimateSubAbility$ Animate | SpellDescription$ Return target creature card from your graveyard to the battlefield with a flying counter on it. SVar:Animate:DB$Animate | Defined$ Remembered | Types$ Angel,Warrior | Duration$ Permanent Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Choose a creature you control. Until your next turn, all damage that would be dealt to creatures you control is dealt to that creature instead.\nIII — Return target creature card from your graveyard to the battlefield with a flying counter on it. That creature is an Angel Warrior in addition to its other types. diff --git a/forge-gui/res/cardsfolder/a/azra_oddsmaker.txt b/forge-gui/res/cardsfolder/a/azra_oddsmaker.txt index 7571c95bcbf..3ddf51713bc 100644 --- a/forge-gui/res/cardsfolder/a/azra_oddsmaker.txt +++ b/forge-gui/res/cardsfolder/a/azra_oddsmaker.txt @@ -2,7 +2,7 @@ Name:Azra Oddsmaker ManaCost:1 R B Types:Creature Azra Warrior T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ ChooseCreature | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, you may discard a card. If you do, choose a creature. Whenever that creature deals combat damage to a player this turn, you draw two cards. -SVar:ChooseCreature:AB$ ChooseCard | Cost$ Discard<1/Card> | Choices$ Creature | ChoiceTitle$ Choose a creature | SubAbility$ DBEffect +SVar:ChooseCreature:AB$ ChooseCard | Cost$ Discard<1/Card> | Mandatory$ True | Choices$ Creature | ChoiceTitle$ Choose a creature | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | Name$ Azra Oddsmaker Effect | Triggers$ TrigDamage SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Card.ChosenCard | ValidTarget$ Player | Execute$ TrigDraw | CombatDamage$ True | TriggerDescription$ Whenever that creature deals combat damage to a player this turn, you draw two cards. SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 2 | SubAbility$ DBCleanup diff --git a/forge-gui/res/cardsfolder/b/blim_comedic_genius.txt b/forge-gui/res/cardsfolder/b/blim_comedic_genius.txt index 2de1f91fd82..d5a6eafba9e 100644 --- a/forge-gui/res/cardsfolder/b/blim_comedic_genius.txt +++ b/forge-gui/res/cardsfolder/b/blim_comedic_genius.txt @@ -3,14 +3,12 @@ ManaCost:2 B R Types:Legendary Creature Imp PT:4/3 K:Flying -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | CombatDamage$ True | TriggerZone$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player gains control of target permanent you control. Then each player loses life and discards cards equal to the number of permanents they control but don't own. -SVar:TrigPump:DB$ ChooseCard | Choices$ Permanent.YouCtrl | ChoiceTitle$ Choose a permanent you control for damaged player to gain control of | Defined$ You | SubAbility$ DBControl -SVar:DBControl:DB$ GainControl | Defined$ ChosenCard | NewController$ TriggeredTarget | SubAbility$ DBRepeatEach -SVar:DBRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBLoseLife | SubAbility$ DBCleanup +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | CombatDamage$ True | TriggerZone$ Battlefield | Execute$ TrigControl | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player gains control of target permanent you control. Then each player loses life and discards cards equal to the number of permanents they control but don't own. +SVar:TrigControl:DB$ GainControl | ValidTgts$ Permanent.YouCtrl | TargetMin$ 1 | TgtPrompt$ Choose a permanent you control for damaged player to gain control of | NewController$ TriggeredTarget | SubAbility$ DBRepeatEach +SVar:DBRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X | SubAbility$ DBDiscard SVar:DBDiscard:DB$ Discard | Defined$ Player.IsRemembered | NumCards$ X | Mode$ TgtChoose SVar:X:Count$Valid Permanent.RememberedPlayerCtrl/Minus.Y SVar:Y:Count$Valid Permanent.RememberedPlayerCtrl+RememberedPlayerOwn -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True DeckHints:Ability$Token Oracle:Flying\nWhenever Blim, Comedic Genius deals combat damage to a player, that player gains control of target permanent you control. Then each player loses life and discards cards equal to the number of permanents they control but don't own. diff --git a/forge-gui/res/cardsfolder/c/capricious_efreet.txt b/forge-gui/res/cardsfolder/c/capricious_efreet.txt index a115b6aaade..6aca978daa1 100644 --- a/forge-gui/res/cardsfolder/c/capricious_efreet.txt +++ b/forge-gui/res/cardsfolder/c/capricious_efreet.txt @@ -3,7 +3,7 @@ ManaCost:4 R R Types:Creature Efreet PT:6/4 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of your upkeep, choose target nonland permanent you control and up to two target nonland permanents you don't control. Destroy one of them at random. -SVar:TrigPump:DB$ Pump | ValidTgts$ Permanent.nonLand+YouCtrl | TgtPrompt$ Select target nonland permanent you control | RememberObjects$ Targeted | IsCurse$ True | SubAbility$ DBPump | StackDescription$ None +SVar:TrigPump:DB$ Pump | ValidTgts$ Permanent.nonLand+YouCtrl | TgtPrompt$ Select target nonland permanent you control | Mandatory$ True | RememberObjects$ Targeted | IsCurse$ True | SubAbility$ DBPump | StackDescription$ None SVar:DBPump:DB$ Pump | ValidTgts$ Permanent.nonLand+YouDontCtrl | TgtPrompt$ Select target nonland permanent you don't control | TargetMin$ 0 | TargetMax$ 1 | RememberObjects$ Targeted | IsCurse$ True | SubAbility$ DBPump2 | StackDescription$ None SVar:DBPump2:DB$ Pump | ValidTgts$ Permanent.nonLand+YouDontCtrl | TgtPrompt$ Select another target nonland permanent you don't control | TargetMin$ 0 | TargetMax$ 1 | TargetUnique$ True | RememberObjects$ Targeted | IsCurse$ True | SubAbility$ DBChooseRandom | StackDescription$ None SVar:DBChooseRandom:DB$ ChooseCard | Defined$ You | Amount$ 1 | AtRandom$ True | Choices$ Card.IsRemembered | SubAbility$ DBDestroy diff --git a/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt b/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt index 53b0826c1d9..6e6952ed53c 100644 --- a/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt +++ b/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt @@ -11,7 +11,7 @@ SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Pl SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play remembered card. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True A:AB$ Dig | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ You | DigNum$ 10 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBChoose | SpellDescription$ Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs. -SVar:DBChoose:DB$ ChooseCard | Choices$ Instant.IsRemembered,Sorcery.IsRemembered | ChoiceZone$ Exile | Defined$ You | SubAbility$ DBPlay +SVar:DBChoose:DB$ ChooseCard | Choices$ Instant.IsRemembered,Sorcery.IsRemembered | Mandatory$ True | ChoiceZone$ Exile | Defined$ You | SubAbility$ DBPlay SVar:DBPlay:DB$ Play | Defined$ ChosenCard | WithoutManaCost$ True | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | SubAbility$ DBCleanup AI:RemoveDeck:All Oracle:[+1]: Chandra, Pyromaster deals 1 damage to target player or planeswalker and 1 damage to up to one target creature that player or that planeswalker's controller controls. That creature can't block this turn.\n[0]: Exile the top card of your library. You may play it this turn.\n[−7]: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/c/circle_of_protection_shadow.txt b/forge-gui/res/cardsfolder/c/circle_of_protection_shadow.txt index 7dc5b62035c..9bd8f7f1fde 100644 --- a/forge-gui/res/cardsfolder/c/circle_of_protection_shadow.txt +++ b/forge-gui/res/cardsfolder/c/circle_of_protection_shadow.txt @@ -1,12 +1,11 @@ Name:Circle of Protection: Shadow ManaCost:1 W Types:Enchantment -A:AB$ ChooseCard | Cost$ 1 | Choices$ Creature.withShadow | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a creature of your choice with shadow would deal damage to you this turn, prevent that damage. +A:AB$ ChooseCard | Cost$ 1 | Choices$ Creature.withShadow | AILogic$ NeedsPrevention | Mandatory$ True | SubAbility$ DBEffect | SpellDescription$ The next time a creature of your choice with shadow would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromCreature | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromCreature:Event$ DamageDone | ValidSource$ Card.ChosenCard+withShadow | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time a creature of your choice with shadow would deal damage to you, prevent that damage. SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:NonStackingEffect:True AI:RemoveDeck:Random -SVar:Picture:http://www.wizards.com/global/images/magic/general/circle_of_protection_shadow.jpg Oracle:{1}: The next time a creature of your choice with shadow would deal damage to you this turn, prevent that damage. diff --git a/forge-gui/res/cardsfolder/c/crush_underfoot.txt b/forge-gui/res/cardsfolder/c/crush_underfoot.txt index d5f048d6860..6317421f4af 100644 --- a/forge-gui/res/cardsfolder/c/crush_underfoot.txt +++ b/forge-gui/res/cardsfolder/c/crush_underfoot.txt @@ -1,10 +1,9 @@ Name:Crush Underfoot ManaCost:1 R Types:Tribal Instant Giant -A:SP$ ChooseCard | Cost$ 1 R | Defined$ You | Amount$ 1 | Choices$ Creature.Giant+YouCtrl | ChoiceTitle$ Choose a Giant creature you control | RememberChosen$ True | SubAbility$ DBDmg | SpellDescription$ Choose a Giant creature you control. It deals damage equal to its power to target creature. +A:SP$ ChooseCard | Cost$ 1 R | Defined$ You | Mandatory$ True | Choices$ Creature.Giant+YouCtrl | ChoiceTitle$ Choose a Giant creature you control | RememberChosen$ True | SubAbility$ DBDmg | SpellDescription$ Choose a Giant creature you control. It deals damage equal to its power to target creature. SVar:DBDmg:DB$ DealDamage | NumDmg$ X | DamageSource$ Remembered | ValidTgts$ Creature | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardPower AI:RemoveDeck:Random -SVar:Picture:http://www.wizards.com/global/images/magic/general/crush_underfoot.jpg Oracle:Choose a Giant creature you control. It deals damage equal to its power to target creature. diff --git a/forge-gui/res/cardsfolder/d/demonic_hordes.txt b/forge-gui/res/cardsfolder/d/demonic_hordes.txt index d87dbbff843..e1c97dec5b2 100644 --- a/forge-gui/res/cardsfolder/d/demonic_hordes.txt +++ b/forge-gui/res/cardsfolder/d/demonic_hordes.txt @@ -6,8 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | E A:AB$ Destroy | ValidTgts$ Land | TgtPrompt$ Select target land. | Cost$ T | SpellDescription$ Destroy target land. SVar:DBTap:DB$ Tap | Defined$ Self | UnlessCost$ B B B | UnlessPayer$ You | UnlessResolveSubs$ WhenNotPaid | SubAbility$ DBChooseOpponent SVar:DBChooseOpponent:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ DBChooseLand -SVar:DBChooseLand:DB$ ChooseCard | Defined$ ChosenPlayer | Choices$ Land.YouCtrl | ChoiceTitle$ Select a land for opponent to sacrifice | SubAbility$ DBSacLand +SVar:DBChooseLand:DB$ ChooseCard | Defined$ ChosenPlayer | Choices$ Land.YouCtrl | Mandatory$ True | ChoiceTitle$ Select a land for opponent to sacrifice | SubAbility$ DBSacLand SVar:DBSacLand:DB$ Destroy | Sacrifice$ True | Defined$ ChosenCard SVar:PlayMain1:FALSE -SVar:Picture:http://www.wizards.com/global/images/magic/general/demonic_hordes.jpg Oracle:{T}: Destroy target land.\nAt the beginning of your upkeep, unless you pay {B}{B}{B}, tap Demonic Hordes and sacrifice a land of an opponent's choice. diff --git a/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt b/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt index ecb8142e93b..c51e75fec6a 100755 --- a/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt +++ b/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Vampire Cleric PT:4/4 K:Flying T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME attacks, defending player chooses a nonlegendary creature card in your graveyard. You return that card to the battlefield with an additional +1/+1 counter on it. The creature is a Vampire in addition to its other types. -SVar:TrigChoose:DB$ ChooseCard | Defined$ DefendingPlayer | Choices$ Creature.YouOwn+nonLegendary | ChoiceZone$ Graveyard | AILogic$ WorstCard | RememberChosen$ True | SubAbility$ DBChangeZone +SVar:TrigChoose:DB$ ChooseCard | Defined$ DefendingPlayer | Choices$ Creature.YouOwn+nonLegendary | Mandatory$ True | ChoiceZone$ Graveyard | AILogic$ WorstCard | RememberChosen$ True | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Graveyard | Destination$ Battlefield | WithCounters$ P1P1_1 | SubAbility$ DBAnimate SVar:DBAnimate:DB$ Animate | Defined$ ChosenCard | Types$ Vampire | Duration$ Permanent DeckHas:Ability$Graveyard & Ability$Counters diff --git a/forge-gui/res/cardsfolder/e/eunuchs_intrigues.txt b/forge-gui/res/cardsfolder/e/eunuchs_intrigues.txt index 83e63109173..7fabd4ef6ab 100644 --- a/forge-gui/res/cardsfolder/e/eunuchs_intrigues.txt +++ b/forge-gui/res/cardsfolder/e/eunuchs_intrigues.txt @@ -1,7 +1,7 @@ Name:Eunuchs' Intrigues ManaCost:2 R Types:Sorcery -A:SP$ ChooseCard | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Amount$ 1 | Choices$ Creature.TargetedPlayerCtrl | SubAbility$ DBPumpAll | RememberChosen$ True | AILogic$ BestBlocker | SpellDescription$ Target opponent chooses a creature they control. Other creatures they control can't block this turn. +A:SP$ ChooseCard | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Mandatory$ True | Choices$ Creature.TargetedPlayerCtrl | SubAbility$ DBPumpAll | RememberChosen$ True | AILogic$ BestBlocker | SpellDescription$ Target opponent chooses a creature they control. Other creatures they control can't block this turn. SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.IsNotRemembered+TargetedPlayerCtrl | KW$ HIDDEN CARDNAME can't block. | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/e/expropriate.txt b/forge-gui/res/cardsfolder/e/expropriate.txt index 32834258f05..4e9832103dd 100644 --- a/forge-gui/res/cardsfolder/e/expropriate.txt +++ b/forge-gui/res/cardsfolder/e/expropriate.txt @@ -3,7 +3,7 @@ ManaCost:7 U U Types:Sorcery A:SP$ Vote | Cost$ 7 U U | Defined$ Player | VoteType$ Time,Money | VoteTime$ DBTime | VoteMoney$ DBMoney | EachVote$ True | SubAbility$ DBChange | SpellDescription$ Council's dilemma — Starting with you, each player votes for time or money. For each time vote, take an extra turn after this one. For each money vote, choose a permanent owned by the voter and gain control of it. Exile Expropriate. SVar:DBTime:DB$ AddTurn | Defined$ You | NumTurns$ 1 -SVar:DBMoney:DB$ ChooseCard | Defined$ You | Choices$ Permanent.RememberedPlayerOwn | SubAbility$ DBControl +SVar:DBMoney:DB$ ChooseCard | Defined$ You | Choices$ Permanent.RememberedPlayerOwn | Mandatory$ True | SubAbility$ DBControl SVar:DBControl:DB$ GainControl | Defined$ ChosenCard | NewController$ You SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | StackDescription$ None Oracle:Council's dilemma — Starting with you, each player votes for time or money. For each time vote, take an extra turn after this one. For each money vote, choose a permanent owned by the voter and gain control of it. Exile Expropriate. diff --git a/forge-gui/res/cardsfolder/f/forcefield.txt b/forge-gui/res/cardsfolder/f/forcefield.txt index e206ae2b5e6..ac911de3ea9 100644 --- a/forge-gui/res/cardsfolder/f/forcefield.txt +++ b/forge-gui/res/cardsfolder/f/forcefield.txt @@ -1,7 +1,7 @@ Name:Forcefield ManaCost:3 Types:Artifact -A:AB$ ChooseCard | Cost$ 1 | Choices$ Creature.unblocked | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time an unblocked creature of your choice would deal combat damage to you this turn, prevent all but 1 of that damage. +A:AB$ ChooseCard | Cost$ 1 | Choices$ Creature.unblocked | AILogic$ NeedsPrevention | Mandatory$ True | SubAbility$ DBEffect | SpellDescription$ The next time an unblocked creature of your choice would deal combat damage to you this turn, prevent all but 1 of that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventDamage | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventDamage:Event$ DamageDone | ValidSource$ Card.ChosenCard | ValidTarget$ You | ReplaceWith$ PreventDmg | PreventionEffect$ True | IsCombat$ True | Description$ The next time an unblocked creature of your choice would deal combat damage to you this turn, prevent all but 1 of that damage. SVar:PreventDmg:DB$ ReplaceDamage | Amount$ ShieldAmount | SubAbility$ ExileEffect diff --git a/forge-gui/res/cardsfolder/g/gideons_sacrifice.txt b/forge-gui/res/cardsfolder/g/gideons_sacrifice.txt index 66ee881dc95..d16c7e894d7 100644 --- a/forge-gui/res/cardsfolder/g/gideons_sacrifice.txt +++ b/forge-gui/res/cardsfolder/g/gideons_sacrifice.txt @@ -1,7 +1,7 @@ Name:Gideon's Sacrifice ManaCost:W Types:Instant -A:SP$ ChooseCard | Cost$ W | Choices$ Creature.YouCtrl,Planeswalker.YouCtrl | SubAbility$ DBEffect | SpellDescription$ Choose a creature or planeswalker you control. All damage that would be dealt this turn to you and permanents you control is dealt to the chosen permanent instead (if it's still on the battlefield). +A:SP$ ChooseCard | Cost$ W | Choices$ Creature.YouCtrl,Planeswalker.YouCtrl | Mandatory$ True | SubAbility$ DBEffect | SpellDescription$ Choose a creature or planeswalker you control. All damage that would be dealt this turn to you and permanents you control is dealt to the chosen permanent instead (if it's still on the battlefield). SVar:DBEffect:DB$ Effect | ReplacementEffects$ DamageEvent | ExileOnMoved$ True | RememberObjects$ ChosenCard SVar:DamageEvent:Event$ DamageDone | ActiveZones$ Command | ValidTarget$ You,Permanent.YouCtrl | ReplaceWith$ GideonSac | DamageTarget$ Remembered | Description$ All damage that would be dealt this turn to you and permanents you control is dealt to the chosen permanent instead (if it's still on the battlefield). SVar:GideonSac:DB$ ReplaceEffect | VarName$ Affected | VarValue$ Remembered | VarType$ Card diff --git a/forge-gui/res/cardsfolder/g/goblin_war_cry.txt b/forge-gui/res/cardsfolder/g/goblin_war_cry.txt index 8c885813763..af97701ff26 100644 --- a/forge-gui/res/cardsfolder/g/goblin_war_cry.txt +++ b/forge-gui/res/cardsfolder/g/goblin_war_cry.txt @@ -1,9 +1,8 @@ Name:Goblin War Cry ManaCost:2 R Types:Sorcery -A:SP$ ChooseCard | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Amount$ 1 | Choices$ Creature.TargetedPlayerCtrl | SubAbility$ DBPumpAll | RememberChosen$ True | AILogic$ BestBlocker | SpellDescription$ Target opponent chooses a creature they control. Other creatures they control can't block this turn. +A:SP$ ChooseCard | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Mandatory$ True | Choices$ Creature.TargetedPlayerCtrl | SubAbility$ DBPumpAll | RememberChosen$ True | AILogic$ BestBlocker | SpellDescription$ Target opponent chooses a creature they control. Other creatures they control can't block this turn. SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.IsNotRemembered+TargetedPlayerCtrl | KW$ HIDDEN CARDNAME can't block. | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All -SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_war_cry.jpg Oracle:Target opponent chooses a creature they control. Other creatures they control can't block this turn. diff --git a/forge-gui/res/cardsfolder/g/gruesome_menagerie.txt b/forge-gui/res/cardsfolder/g/gruesome_menagerie.txt index 8173712338a..cb8658bc399 100644 --- a/forge-gui/res/cardsfolder/g/gruesome_menagerie.txt +++ b/forge-gui/res/cardsfolder/g/gruesome_menagerie.txt @@ -1,9 +1,9 @@ Name:Gruesome Menagerie ManaCost:3 B B Types:Sorcery -A:SP$ ChooseCard | Cost$ 3 B B | Defined$ You | Choices$ Creature.YouOwn+cmcEQ1 | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChoose2 | RememberChosen$ True | SpellDescription$ Choose a creature card with mana value 1 in your graveyard, then do the same for creature cards with mana value 2 and 3. Return those cards to the battlefield. -SVar:DBChoose2:DB$ ChooseCard | Defined$ You | Choices$ Creature.YouOwn+cmcEQ2 | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChoose3 | RememberChosen$ True | SpellDescription$ Choose a creature card with mana value 2 in your graveyard. -SVar:DBChoose3:DB$ ChooseCard | Defined$ You | Choices$ Creature.YouOwn+cmcEQ3 | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBReturn | RememberChosen$ True | SpellDescription$ Choose a creature card with mana value 3 in your graveyard. +A:SP$ ChooseCard | Cost$ 3 B B | Defined$ You | Choices$ Creature.YouOwn+cmcEQ1 | ChoiceZone$ Graveyard | Mandatory$ True | SubAbility$ DBChoose2 | RememberChosen$ True | SpellDescription$ Choose a creature card with mana value 1 in your graveyard, then do the same for creature cards with mana value 2 and 3. Return those cards to the battlefield. +SVar:DBChoose2:DB$ ChooseCard | Defined$ You | Choices$ Creature.YouOwn+cmcEQ2 | ChoiceZone$ Graveyard | Mandatory$ True | SubAbility$ DBChoose3 | RememberChosen$ True | SpellDescription$ Choose a creature card with mana value 2 in your graveyard. +SVar:DBChoose3:DB$ ChooseCard | Defined$ You | Choices$ Creature.YouOwn+cmcEQ3 | ChoiceZone$ Graveyard | Mandatory$ True | SubAbility$ DBReturn | RememberChosen$ True | SpellDescription$ Choose a creature card with mana value 3 in your graveyard. SVar:DBReturn:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Card.IsRemembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:NeedsToPlayVar:Z GE1 diff --git a/forge-gui/res/cardsfolder/g/guard_dogs.txt b/forge-gui/res/cardsfolder/g/guard_dogs.txt index 0642c320db3..633cb7cfdcc 100644 --- a/forge-gui/res/cardsfolder/g/guard_dogs.txt +++ b/forge-gui/res/cardsfolder/g/guard_dogs.txt @@ -2,10 +2,9 @@ Name:Guard Dogs ManaCost:3 W Types:Creature Dog PT:2/2 -A:AB$ ChooseCard | Cost$ 2 W T | Choices$ Permanent.YouCtrl | Amount$ 1 | ChoiceTitle$ Choose a permanent you control | RememberChosen$ True | SubAbility$ DBPrevent | SpellDescription$ Choose a permanent you control. Prevent all combat damage target creature would deal this turn if it shares a color with that permanent. +A:AB$ ChooseCard | Cost$ 2 W T | Choices$ Permanent.YouCtrl | Mandatory$ True | ChoiceTitle$ Choose a permanent you control | RememberChosen$ True | SubAbility$ DBPrevent | SpellDescription$ Choose a permanent you control. Prevent all combat damage target creature would deal this turn if it shares a color with that permanent. SVar:DBPrevent:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature whose combat damage will be prevented | KW$ Prevent all combat damage that would be dealt by CARDNAME. | ConditionDefined$ Targeted | ConditionPresent$ Card.SharesColorWith Card.IsRemembered | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All AI:RemoveDeck:Random -SVar:Picture:http://www.wizards.com/global/images/magic/general/guard_dogs.jpg Oracle:{2}{W}, {T}: Choose a permanent you control. Prevent all combat damage target creature would deal this turn if it shares a color with that permanent. diff --git a/forge-gui/res/cardsfolder/h/harmless_offering.txt b/forge-gui/res/cardsfolder/h/harmless_offering.txt index 8a56afd9466..cf0cefd41c8 100644 --- a/forge-gui/res/cardsfolder/h/harmless_offering.txt +++ b/forge-gui/res/cardsfolder/h/harmless_offering.txt @@ -1,10 +1,7 @@ Name:Harmless Offering ManaCost:2 R Types:Sorcery -A:SP$ Pump | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | SubAbility$ D1 | SpellDescription$ Target opponent gains control of target permanent you control. | StackDescription$ None -SVar:D1:DB$ Pump | Static$ True | SubAbility$ D2 | StackDescription$ None -SVar:D2:DB$ Pump | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target permanent you control | SubAbility$ D3 | StackDescription$ None -SVar:D3:DB$ GainControl | Defined$ Targeted | NewController$ TargetedPlayer +A:SP$ Pump | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | SubAbility$ DBGainControl | SpellDescription$ Target opponent gains control of target permanent you control. | StackDescription$ None +SVar:DBGainControl:DB$ GainControl | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target permanent you control | NewController$ ParentTarget AI:RemoveDeck:Random -SVar:Picture:http://www.wizards.com/global/images/magic/general/harmless_offering.jpg Oracle:Target opponent gains control of target permanent you control. diff --git a/forge-gui/res/cardsfolder/i/infernal_denizen.txt b/forge-gui/res/cardsfolder/i/infernal_denizen.txt index 1759c1fa9c4..664e147ca8c 100644 --- a/forge-gui/res/cardsfolder/i/infernal_denizen.txt +++ b/forge-gui/res/cardsfolder/i/infernal_denizen.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigSacrificeSwamp | SVar:TrigSacrificeSwamp:DB$ Sacrifice | Defined$ You | Amount$ 2 | SacValid$ Swamp | RememberSacrificed$ True | SubAbility$ DBTap SVar:DBTap:DB$ Tap | Defined$ Self | ConditionDefined$ Remembered | ConditionPresent$ Swamp | ConditionCompare$ LE1 | SubAbility$ DBChooseOpponent SVar:DBChooseOpponent:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent: | AILogic$ Random | ConditionDefined$ Remembered | ConditionPresent$ Swamp | ConditionCompare$ LE1 | SubAbility$ DBChooseCreature -SVar:DBChooseCreature:DB$ ChooseCard | Optional$ Yes | Defined$ Player.Chosen | Choices$ Creature.YouCtrl | ChoiceTitle$ Choose a creature you want to control: | AILogic$ BestCard | ConditionDefined$ Remembered | ConditionPresent$ Swamp | ConditionCompare$ LE1 | SubAbility$ DBOpponentGainControl +SVar:DBChooseCreature:DB$ ChooseCard | Defined$ Player.Chosen | Choices$ Creature.YouCtrl | ChoiceTitle$ Choose a creature you want to control: | AILogic$ BestCard | ConditionDefined$ Remembered | ConditionPresent$ Swamp | ConditionCompare$ LE1 | SubAbility$ DBOpponentGainControl SVar:DBOpponentGainControl:DB$ GainControl | Defined$ ChosenCard | NewController$ Player.Chosen | LoseControl$ LeavesPlay | ConditionDefined$ Remembered | ConditionPresent$ Swamp | ConditionCompare$ LE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenPlayer$ True | ClearChosenCard$ True A:AB$ GainControl | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature. | LoseControl$ LeavesPlay | SpellDescription$ Gain control of target creature for as long as CARDNAME remains on the battlefield. diff --git a/forge-gui/res/cardsfolder/k/kefnet_the_mindful.txt b/forge-gui/res/cardsfolder/k/kefnet_the_mindful.txt index bc1c1ca861b..9f745e1191e 100644 --- a/forge-gui/res/cardsfolder/k/kefnet_the_mindful.txt +++ b/forge-gui/res/cardsfolder/k/kefnet_the_mindful.txt @@ -7,7 +7,7 @@ K:Indestructible S:Mode$ Continuous | Affected$ Card.Self | AddHiddenKeyword$ CARDNAME can't attack or block. | CheckSVar$ X | SVarCompare$ LE6 | Description$ CARDNAME can't attack or block unless you have seven or more cards in hand. SVar:X:Count$InYourHand A:AB$ Draw | Cost$ 3 U | NumCards$ 1 | Defined$ You | SubAbility$ DBChooseCard | SpellDescription$ Draw a card, then you may return a land you control to its owner's hand. -SVar:DBChooseCard:DB$ ChooseCard | Choices$ Land.YouCtrl | Optional$ Yes | ChoiceZone$ Battlefield | Amount$ 1 | SubAbility$ DBChangeZone +SVar:DBChooseCard:DB$ ChooseCard | Choices$ Land.YouCtrl | ChoiceZone$ Battlefield | Amount$ 1 | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ ChosenCard | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/kefnet_the_mindful.jpg diff --git a/forge-gui/res/cardsfolder/l/liliana_the_last_hope.txt b/forge-gui/res/cardsfolder/l/liliana_the_last_hope.txt index f4143d54fe0..f61da264657 100644 --- a/forge-gui/res/cardsfolder/l/liliana_the_last_hope.txt +++ b/forge-gui/res/cardsfolder/l/liliana_the_last_hope.txt @@ -4,7 +4,7 @@ Types:Legendary Planeswalker Liliana Loyalty:3 A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | NumAtt$ -2 | NumDef$ -1 | IsCurse$ True | Duration$ UntilYourNextTurn | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Up to one target creature gets -2/-1 until your next turn. A:AB$ Mill | Cost$ SubCounter<2/LOYALTY> | NumCards$ 2 | AILogic$ LilianaMill | Planeswalker$ True | Defined$ You | SubAbility$ DBChooseCard | SpellDescription$ Mill two cards, then you may return a creature card from your graveyard to your hand. -SVar:DBChooseCard:DB$ ChooseCard | Choices$ Creature.YouOwn | Optional$ Yes | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChangeZone +SVar:DBChooseCard:DB$ ChooseCard | Choices$ Creature.YouOwn | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ ChosenCard | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Name$ Emblem - Liliana, the Last Hope | Image$ emblem_liliana_the_last_hope | Triggers$ TrigToken | Planeswalker$ True | Ultimate$ True | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "At the beginning of your end step, create X 2/2 black Zombie creature tokens, where X is two plus the number of Zombies you control." diff --git a/forge-gui/res/cardsfolder/m/metamorphic_alteration.txt b/forge-gui/res/cardsfolder/m/metamorphic_alteration.txt index 33f4c43c7e5..f7fcfad0ed3 100644 --- a/forge-gui/res/cardsfolder/m/metamorphic_alteration.txt +++ b/forge-gui/res/cardsfolder/m/metamorphic_alteration.txt @@ -4,8 +4,7 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature K:ETBReplacement:Other:ChooseCreature -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SpellDescription$ As CARDNAME enters the battlefield, choose a creature. -T:Mode$ ChangesZone | ValidCard$ Card.Self | Static$ True | Origin$ Any | Destination$ Battlefield | Execute$ DBClone | TriggerDescription$ Enchanted creature is a copy of the chosen creature. -SVar:DBClone:DB$ Clone | Defined$ ChosenCard | CloneTarget$ Enchanted | Duration$ UntilUnattached | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Mandatory$ True | Choices$ Creature.Other | SpellDescription$ As CARDNAME enters the battlefield, choose a creature. +T:Mode$ Attached | ValidSource$ Card.Self | Static$ True | Execute$ DBClone | TriggerDescription$ Enchanted creature is a copy of the chosen creature. +SVar:DBClone:DB$ Clone | Defined$ ChosenCard | CloneTarget$ Enchanted | Duration$ UntilUnattached Oracle:Enchant creature\nAs Metamorphic Alteration enters the battlefield, choose a creature.\nEnchanted creature is a copy of the chosen creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/mist_of_stagnation.txt b/forge-gui/res/cardsfolder/m/mist_of_stagnation.txt index 0d37e66a1fc..25293f6761d 100644 --- a/forge-gui/res/cardsfolder/m/mist_of_stagnation.txt +++ b/forge-gui/res/cardsfolder/m/mist_of_stagnation.txt @@ -3,7 +3,7 @@ ManaCost:3 U U Types:Enchantment S:Mode$ Continuous | Affected$ Permanent | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Permanents don't untap during their controllers' untap steps. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ TrigChoose | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, that player chooses a permanent for each card in their graveyard, then untaps those permanents. -SVar:TrigChoose:DB$ ChooseCard | Defined$ TriggeredPlayer | Amount$ X | Choices$ Permanent.ActivePlayerCtrl | ChoiceTitle$ Choose a permanent to untap | RememberChosen$ True | AILogic$ Untap | SubAbility$ DBUntap +SVar:TrigChoose:DB$ ChooseCard | Defined$ TriggeredPlayer | Amount$ X | Mandatory$ True | Choices$ Permanent.ActivePlayerCtrl | ChoiceTitle$ Choose a permanent to untap | RememberChosen$ True | AILogic$ Untap | SubAbility$ DBUntap SVar:DBUntap:DB$ UntapAll | ValidCards$ Permanent.IsRemembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$ValidGraveyard Card.ActivePlayerCtrl diff --git a/forge-gui/res/cardsfolder/m/monomania.txt b/forge-gui/res/cardsfolder/m/monomania.txt index 76b8feda902..b56d349cc94 100644 --- a/forge-gui/res/cardsfolder/m/monomania.txt +++ b/forge-gui/res/cardsfolder/m/monomania.txt @@ -1,7 +1,7 @@ Name:Monomania ManaCost:3 B B Types:Sorcery -A:SP$ ChooseCard | Cost$ 3 B B | ValidTgts$ Player | Amount$ 1 | Choices$ Card | SubAbility$ DBDiscard | RememberChosen$ True | AILogic$ AtLeast2 | TargetControls$ True | ChoiceZone$ Hand | SpellDescription$ Target player chooses a card in their hand and discards the rest. +A:SP$ ChooseCard | Cost$ 3 B B | ValidTgts$ Player | Mandatory$ True | Choices$ Card | SubAbility$ DBDiscard | RememberChosen$ True | AILogic$ AtLeast2 | TargetControls$ True | ChoiceZone$ Hand | SpellDescription$ Target player chooses a card in their hand and discards the rest. SVar:DBDiscard:DB$ Discard | Defined$ Targeted | Mode$ NotRemembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/monomania.jpg diff --git a/forge-gui/res/cardsfolder/p/phthisis.txt b/forge-gui/res/cardsfolder/p/phthisis.txt index f834c811375..315fff4579c 100644 --- a/forge-gui/res/cardsfolder/p/phthisis.txt +++ b/forge-gui/res/cardsfolder/p/phthisis.txt @@ -2,9 +2,9 @@ Name:Phthisis ManaCost:3 B B B B Types:Sorcery K:Suspend:5:1 B -A:SP$ Destroy | Cost$ 3 B B B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | RememberLKI$ True | SubAbility$ DBLoseLife | SpellDescription$ Destroy target creature. Its controller loses life equal to its power plus its toughness. +A:SP$ Destroy | Cost$ 3 B B B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBLoseLife | SpellDescription$ Destroy target creature. Its controller loses life equal to its power plus its toughness. SVar:DBLoseLife:DB$ LoseLife | Defined$ TargetedController | LifeAmount$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:RememberedLKI$CardSumPT +SVar:X:TargetedLKI$CardSumPT SVar:Picture:http://www.wizards.com/global/images/magic/general/phthisis.jpg Oracle:Destroy target creature. Its controller loses life equal to its power plus its toughness.\nSuspend 5—{1}{B} (Rather than cast this card from your hand, you may pay {1}{B} and exile it with five time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) diff --git a/forge-gui/res/cardsfolder/p/phylactery_lich.txt b/forge-gui/res/cardsfolder/p/phylactery_lich.txt index 704f26ae557..71bc5d5c3e5 100644 --- a/forge-gui/res/cardsfolder/p/phylactery_lich.txt +++ b/forge-gui/res/cardsfolder/p/phylactery_lich.txt @@ -4,7 +4,7 @@ Types:Creature Zombie PT:5/5 K:Indestructible K:ETBReplacement:Other:TrigChooseArtifact -SVar:TrigChooseArtifact:DB$ ChooseCard | Choices$ Artifact.YouCtrl | RememberChosen$ True | SubAbility$ DBPutCounter | AILogic$ Phylactery | SpellDescription$ As CARDNAME enters the battlefield, put a phylactery counter on an artifact you control. +SVar:TrigChooseArtifact:DB$ ChooseCard | Choices$ Artifact.YouCtrl | Mandatory$ True | RememberChosen$ True | SubAbility$ DBPutCounter | AILogic$ Phylactery | SpellDescription$ As CARDNAME enters the battlefield, put a phylactery counter on an artifact you control. SVar:DBPutCounter:DB$ PutCounter | CounterType$ PHYLACTERY | CounterNum$ 1 | Defined$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Permanent.counters_GE1_PHYLACTERY+YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no permanents with phylactery counters on them, sacrifice CARDNAME. @@ -12,5 +12,4 @@ SVar:TrigSac:DB$Sacrifice | Defined$ Self AI:RemoveDeck:Random DeckHints:Type$Artifact SVar:NeedsToPlay:Artifact.YouCtrl -SVar:Picture:http://www.wizards.com/global/images/magic/general/phylactery_lich.jpg Oracle:Indestructible\nAs Phylactery Lich enters the battlefield, put a phylactery counter on an artifact you control.\nWhen you control no permanents with phylactery counters on them, sacrifice Phylactery Lich. diff --git a/forge-gui/res/cardsfolder/p/phyrexian_gremlins.txt b/forge-gui/res/cardsfolder/p/phyrexian_gremlins.txt index 795cfaec2e8..db088fb5cf4 100644 --- a/forge-gui/res/cardsfolder/p/phyrexian_gremlins.txt +++ b/forge-gui/res/cardsfolder/p/phyrexian_gremlins.txt @@ -4,7 +4,7 @@ Types:Creature Gremlin PT:1/1 K:You may choose not to untap CARDNAME during your untap step. A:AB$ Tap | Cost$ T | ValidTgts$ Artifact | RememberTapped$ True | AlwaysRemember$ True | SpellDescription$ Tap target artifact. It doesn't untap during its controller's untap step for as long as CARDNAME remains tapped. | StackDescription$ SpellDescription -S:Mode$ Continuous | Affected$ Creature.IsRemembered | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. +S:Mode$ Continuous | Affected$ Card.IsRemembered | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. T:Mode$ Untaps | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ ClearRemembered | Static$ True SVar:ClearRemembered:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/r/retribution.txt b/forge-gui/res/cardsfolder/r/retribution.txt index b01728fa39d..c8e6e26d83a 100644 --- a/forge-gui/res/cardsfolder/r/retribution.txt +++ b/forge-gui/res/cardsfolder/r/retribution.txt @@ -2,7 +2,7 @@ Name:Retribution ManaCost:2 R R Types:Sorcery A:SP$ Pump | Cost$ 2 R R | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select two target creature an opponent controls | TargetMin$ 2 | TargetMax$ 2 | TargetsFromSingleZone$ True | IsCurse$ True | RememberTargets$ True | SubAbility$ DBChoose | StackDescription$ SpellDescription | SpellDescription$ Choose two target creatures an opponent controls. That player chooses and sacrifices one of those creatures. Put a -1/-1 counter on the other. -SVar:DBChoose:DB$ ChooseCard | Defined$ TargetedController | Amount$ 1 | Choices$ Creature.IsRemembered | ChoiceTitle$ Choose one to sacrifice | ForgetChosen$ True | AILogic$ WorstCard | SubAbility$ DBSac | StackDescription$ None +SVar:DBChoose:DB$ ChooseCard | Defined$ TargetedController | Mandatory$ True | Choices$ Creature.IsRemembered | ChoiceTitle$ Choose one to sacrifice | ForgetChosen$ True | AILogic$ WorstCard | SubAbility$ DBSac | StackDescription$ None SVar:DBSac:DB$ Destroy | Defined$ ChosenCard | Sacrifice$ True | SubAbility$ DBPutCounter | StackDescription$ None SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ M1M1 | CounterNum$ 1 | StackDescription$ None | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/s/sakashimas_will.txt b/forge-gui/res/cardsfolder/s/sakashimas_will.txt index a2e779059c9..0aea368f132 100755 --- a/forge-gui/res/cardsfolder/s/sakashimas_will.txt +++ b/forge-gui/res/cardsfolder/s/sakashimas_will.txt @@ -2,10 +2,10 @@ Name:Sakashima's Will ManaCost:3 U Types:Sorcery A:SP$ Charm | Cost$ 3 U | MinCharmNum$ 1 | CharmNum$ X | Choices$ DBControl,DBImprint | AdditionalDescription$ If you control a commander as you cast this spell, you may choose both. -SVar:DBControl:DB$ ChooseCard | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Amount$ 1 | Choices$ Creature.TargetedPlayerCtrl | ChoiceTitle$ Choose a creature you control | SubAbility$ DBGainControl | AILogic$ WorstCard | SpellDescription$ Target opponent chooses a creature they control. You gain control of it. +SVar:DBControl:DB$ ChooseCard | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Mandatory$ True | Choices$ Creature.TargetedPlayerCtrl | ChoiceTitle$ Choose a creature you control | SubAbility$ DBGainControl | AILogic$ WorstCard | SpellDescription$ Target opponent chooses a creature they control. You gain control of it. SVar:DBGainControl:DB$ GainControl | Defined$ ChosenCard | NewController$ You | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True | ClearRemembered$ True -SVar:DBImprint:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.YouCtrl | ChoiceTitle$ Choose a creature you control | RememberChosen$ True | SubAbility$ MassClone | AILogic$ BestCard | SpellDescription$ Choose a creature you control. Each other creature you control becomes a copy of that creature until end of turn. +SVar:DBImprint:DB$ ChooseCard | Defined$ You | Mandatory$ True | Choices$ Creature.YouCtrl | ChoiceTitle$ Choose a creature you control | RememberChosen$ True | SubAbility$ MassClone | AILogic$ BestCard | SpellDescription$ Choose a creature you control. Each other creature you control becomes a copy of that creature until end of turn. SVar:MassClone:DB$ RepeatEach | UseImprinted$ True | RepeatCards$ Card.Creature+IsNotRemembered+YouCtrl | RepeatSubAbility$ DBCopy | SubAbility$ DBCleanup SVar:DBCopy:DB$ Clone | Defined$ Remembered | CloneTarget$ Imprinted | Duration$ UntilEndOfTurn SVar:X:Count$Compare Y GE1.2.1 diff --git a/forge-gui/res/cardsfolder/t/talaras_bane.txt b/forge-gui/res/cardsfolder/t/talaras_bane.txt index 956750de58a..999ba628231 100644 --- a/forge-gui/res/cardsfolder/t/talaras_bane.txt +++ b/forge-gui/res/cardsfolder/t/talaras_bane.txt @@ -2,7 +2,7 @@ Name:Talara's Bane ManaCost:1 B Types:Sorcery A:SP$ RevealHand | Cost$ 1 B | ValidTgts$ Opponent | RememberRevealed$ True | SubAbility$ DBChoose | StackDescription$ SpellDescription | SpellDescription$ Target opponent reveals their hand. You choose a green or white creature card from it. You gain life equal to that creature card's toughness, then that player discards that card. -SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Creature.Green+IsRemembered,Creature.White+IsRemembered | SubAbility$ DBImprint | StackDescription$ None +SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Mandatory$ True | Choices$ Creature.Green+IsRemembered,Creature.White+IsRemembered | SubAbility$ DBImprint | StackDescription$ None SVar:DBImprint:DB$ Pump | Defined$ ChosenCard | PumpZone$ Hand | ImprintCards$ ChosenCard | SubAbility$ DBGainLife | StackDescription$ None SVar:DBGainLife:DB$ GainLife | LifeAmount$ X | SubAbility$ DBDiscard | StackDescription$ None | ConditionDefined$ Imprinted | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:DBDiscard:DB$ Discard | DefinedCards$ Imprinted | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup | StackDescription$ None | ConditionDefined$ Imprinted | ConditionPresent$ Card | ConditionCompare$ GE1 diff --git a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java index 4bcbdcbf4ab..56f0b326e18 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java @@ -143,8 +143,9 @@ public class HumanPlaySpellAbility { // This line makes use of short-circuit evaluation of boolean values, that is each subsequent argument // is only executed or evaluated if the first argument does not suffice to determine the value of the expression - final boolean prerequisitesMet = announceValuesLikeX() - && announceType() + // because of Selective Snare do announceType first + final boolean prerequisitesMet = announceType() + && announceValuesLikeX() && (!mayChooseTargets || ability.setupTargets()) // if you can choose targets, then do choose them. && ability.canCastTiming(human) && ability.checkRestrictions(human)