diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index 2f870cb0540..887cc915cfb 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -676,10 +676,19 @@ public class ComputerUtil { if ("True".equals(card.getSVar("NonStackingEffect")) && card.getController().isCardInPlay(card.getName())) { return false; } - if (card.getSVar("PlayMain1").equals("TRUE") && (!card.getController().getCreaturesInPlay().isEmpty() || sa.getPayCosts().hasNoManaCost() - || card.isPlaneswalker())) { - return true; + if (card.hasSVar("PlayMain1")) { + if (card.getSVar("PlayMain1").equals("ALWAYS") || sa.getPayCosts().hasNoManaCost()) { + return true; + } else if (card.getSVar("PlayMain1").equals("OPPONENTCREATURES")) { + //Only play these main1 when the opponent has creatures (stealing and giving them haste) + if (!card.getController().getOpponent().getCreaturesInPlay().isEmpty()) { + return true; + } + } else if (!card.getController().getCreaturesInPlay().isEmpty()) { + return true; + } } + if ((card.isCreature() && (ComputerUtil.hasACardGivingHaste(ai) || card.hasKeyword("Haste"))) || card.hasKeyword("Exalted")) { return true; diff --git a/forge-gui/res/cardsfolder/b/blade_tribe_berserkers.txt b/forge-gui/res/cardsfolder/b/blade_tribe_berserkers.txt index e240e169ef5..a3140d5a333 100644 --- a/forge-gui/res/cardsfolder/b/blade_tribe_berserkers.txt +++ b/forge-gui/res/cardsfolder/b/blade_tribe_berserkers.txt @@ -4,5 +4,6 @@ Types:Creature Human Berserker PT:3/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Metalcraft$ True | Execute$ TrigPump | TriggerDescription$ Metalcraft - When CARDNAME enters the battlefield, if you control three or more artifacts, CARDNAME gets +3/+3 and gains haste until end of turn. SVar:TrigPump:AB$ Pump | Cost$ 0 | Defined$ Self | NumAtt$ 3 | NumDef$ 3 | KW$ Haste +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/blade_tribe_berserkers.jpg Oracle:Metalcraft - When Blade-Tribe Berserkers enters the battlefield, if you control three or more artifacts, Blade-Tribe Berserkers gets +3/+3 and gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/c/conquering_manticore.txt b/forge-gui/res/cardsfolder/c/conquering_manticore.txt index 4cfc933401b..94f46d236ed 100644 --- a/forge-gui/res/cardsfolder/c/conquering_manticore.txt +++ b/forge-gui/res/cardsfolder/c/conquering_manticore.txt @@ -5,6 +5,6 @@ PT:5/5 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. SVar:TrigChange:AB$ GainControl | Cost$ 0 | TgtPrompt$ Choose target creature you don't control | ValidTgts$ Creature.OppCtrl | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. -SVar:PlayMain1:TRUE +SVar:PlayMain1:OPPONENTCREATURES SVar:Picture:http://www.wizards.com/global/images/magic/general/conquering_manticore.jpg Oracle:Flying\nWhen Conquering Manticore enters the battlefield, gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/f/fanatic_of_xenagos.txt b/forge-gui/res/cardsfolder/f/fanatic_of_xenagos.txt index 0636368be66..80f9e788f7c 100644 --- a/forge-gui/res/cardsfolder/f/fanatic_of_xenagos.txt +++ b/forge-gui/res/cardsfolder/f/fanatic_of_xenagos.txt @@ -6,6 +6,6 @@ K:Trample K:Tribute 1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+notTributed | Execute$ TrigNotTribute | TriggerDescription$ When CARDNAME enters the battlefield, if tribute wasn't paid, it gets +1/+1 and gains haste until end of turn. SVar:TrigNotTribute:AB$ Pump | Cost$ 0 | Defined$ Self | NumAtt$ +1 | NumDef$ +1 | KW$ Haste -SVar:PlayMain1:TRUE +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/fanatic_of_xenagos.jpg Oracle:Trample\nTribute 1 (As this creature enters the battlefield, an opponent of your choice may place a +1/+1 counter on it.)\nWhen Fanatic of Xenagos enters the battlefield, if tribute wasn't paid, it gets +1/+1 and gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/f/flame_wreathed_phoenix.txt b/forge-gui/res/cardsfolder/f/flame_wreathed_phoenix.txt index aecb4521d4f..23415ce6554 100644 --- a/forge-gui/res/cardsfolder/f/flame_wreathed_phoenix.txt +++ b/forge-gui/res/cardsfolder/f/flame_wreathed_phoenix.txt @@ -9,6 +9,6 @@ SVar:TrigNotTribute:AB$ Animate | Cost$ 0 | Permanent$ True | Triggers$ FlamePho SVar:FlamePhoenixChangeZone:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, return it to its owner's hand. SVar:TrigChangeZone:AB$ ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Hand | Defined$ TriggeredCard SVar:TributeAILogic:CanBlockThisTurn -SVar:PlayMain1:TRUE +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_wreathed_phoenix.jpg Oracle:Flying\nTribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)\nWhen Flame-Wreathed Phoenix enters the battlefield, if tribute wasn't paid, it gains haste and "When this creature dies, return it to its owner's hand." diff --git a/forge-gui/res/cardsfolder/g/gruul_scrapper.txt b/forge-gui/res/cardsfolder/g/gruul_scrapper.txt index 887cf067168..2ce063d4e55 100644 --- a/forge-gui/res/cardsfolder/g/gruul_scrapper.txt +++ b/forge-gui/res/cardsfolder/g/gruul_scrapper.txt @@ -6,6 +6,7 @@ T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefi SVar:TrigPump:AB$ Pump | Cost$ 0 | Defined$ Self | KW$ Haste SVar:ManaNeededToAvoidNegativeEffect:red SVar:RemRandomDeck:True +SVar:PlayMain1:ALWAYS DeckNeeds:Color$Red SVar:Picture:http://www.wizards.com/global/images/magic/general/gruul_scrapper.jpg Oracle:When Gruul Scrapper enters the battlefield, if {R} was spent to cast Gruul Scrapper, it gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/i/in_the_web_of_war.txt b/forge-gui/res/cardsfolder/i/in_the_web_of_war.txt index a94be99e84f..1021722974c 100644 --- a/forge-gui/res/cardsfolder/i/in_the_web_of_war.txt +++ b/forge-gui/res/cardsfolder/i/in_the_web_of_war.txt @@ -3,5 +3,6 @@ ManaCost:3 R R Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature enters the battlefield under your control, it gets +2/+0 and gains haste until end of turn. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ TriggeredCard | NumAtt$ +2 | KW$ Haste +SVar:BuffedBy:Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/in_the_web_of_war.jpg Oracle:Whenever a creature enters the battlefield under your control, it gets +2/+0 and gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/i/inner_flame_acolyte.txt b/forge-gui/res/cardsfolder/i/inner_flame_acolyte.txt index 2b762339a70..540b0f6c56f 100644 --- a/forge-gui/res/cardsfolder/i/inner_flame_acolyte.txt +++ b/forge-gui/res/cardsfolder/i/inner_flame_acolyte.txt @@ -7,6 +7,6 @@ K:Evoke:R SVar:TrigPump:DB$ Pump | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | KW$ Haste T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+evoked | Execute$ TrigSac | Secondary$ True | TriggerDescription$ When CARDNAME enters the battlefield, if you cast it by it's evoke cost, sacrifice it. SVar:TrigSac:AB$ Sacrifice | Cost$ 0 -SVar:PlayMain1:TRUE +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/inner_flame_acolyte.jpg Oracle:When Inner-Flame Acolyte enters the battlefield, target creature gets +2/+0 and gains haste until end of turn.\nEvoke {R} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.) diff --git a/forge-gui/res/cardsfolder/m/mogiss_marauder.txt b/forge-gui/res/cardsfolder/m/mogiss_marauder.txt index 2310287196b..195a3771b7a 100644 --- a/forge-gui/res/cardsfolder/m/mogiss_marauder.txt +++ b/forge-gui/res/cardsfolder/m/mogiss_marauder.txt @@ -5,6 +5,6 @@ PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, up to X target creatures each gain intimidate and haste until end of turn, where X is your devotion to black. SVar:TrigPump:AB$ Pump | Cost$ 0 | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ X | References$ X | KW$ Intimidate & Haste | TgtPrompt$ Select target creature SVar:X:Count$Devotion.Black -SVar:PlayMain1:TRUE +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/mogiss_marauder.jpg Oracle:When Mogis's Marauder enters the battlefield, up to X target creatures each gain intimidate and haste until end of turn, where X is your devotion to black. (Each {B} in the mana costs of permanents you control counts toward your devotion to black.) diff --git a/forge-gui/res/cardsfolder/m/molten_primordial.txt b/forge-gui/res/cardsfolder/m/molten_primordial.txt index dc3dd3c7546..3fd9070ff09 100644 --- a/forge-gui/res/cardsfolder/m/molten_primordial.txt +++ b/forge-gui/res/cardsfolder/m/molten_primordial.txt @@ -6,5 +6,6 @@ K:Haste T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TakeOneEach | TriggerDescription$ When CARDNAME enters the battlefield, for each opponent, take control of up to one target creature that player controls until end of turn. Untap those creatures. They have haste until end of turn. SVar:TakeOneEach:AB$ GainControl | Cost$ 0 | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose target creature each opponent controls | TargetMin$ 0 | TargetMax$ OneEach | References$ OneEach | TargetsWithDifferentControllers$ True | LoseControl$ EOT | Untap$ True | AddKWs$ Haste SVar:OneEach:PlayerCountOpponents$Amount +SVar:PlayMain1:OPPONENTCREATURES SVar:Picture:http://www.wizards.com/global/images/magic/general/molten_primordial.jpg Oracle:Haste\nWhen Molten Primordial enters the battlefield, for each opponent, gain control of up to one target creature that player controls until end of turn. Untap those creatures. They gain haste until end of turn. diff --git a/forge-gui/res/cardsfolder/p/puppeteer_clique.txt b/forge-gui/res/cardsfolder/p/puppeteer_clique.txt index 4dbad7ac1d5..5c53d618b00 100644 --- a/forge-gui/res/cardsfolder/p/puppeteer_clique.txt +++ b/forge-gui/res/cardsfolder/p/puppeteer_clique.txt @@ -10,6 +10,6 @@ SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | Permanent$ True | SubAb SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigExile | RememberObjects$ Remembered | TriggerDescription$ Exile creature at the beginning of your next end step. | SubAbility$ DBCleanup SVar:TrigExile:AB$ ChangeZone | Cost$ 0 | Origin$ Battlefield | Destination$ Exile | Defined$ DelayTriggerRemembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:PlayMain1:TRUE +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/puppeteer_clique.jpg Oracle:Flying\nWhen Puppeteer Clique enters the battlefield, put target creature card from an opponent's graveyard onto the battlefield under your control. It gains haste. At the beginning of your next end step, exile it.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) diff --git a/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt b/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt index 9837e6c2107..c35b619d4f3 100644 --- a/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt +++ b/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt @@ -9,6 +9,6 @@ SVar:BODTrig:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | TriggerZones$ Comman SVar:SarkhanDraw:AB$ Draw | Cost$ 0 | NumCards$ 2 | Defined$ You SVar:EOTTrig:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | Execute$ SarkhanDiscard | TriggerDescription$ At the beginning of your end step, discard your hand. SVar:SarkhanDiscard:AB$ Discard | Cost$ 0 | Mode$ Hand -SVar:PlayMain1:TRUE +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/sarkhan_the_dragonspeaker.jpg Oracle:[+1] Until end of turn, Sarkhan, the Dragonspeaker becomes a legendary 4/4 red Dragon creature with flying, indestructible, and haste. (He doesn't lose loyalty while he's not a planeswalker.)\n[-3] Sarkhan, the Dragonspeaker deals 4 damage to target creature.\n[-6] You get an emblem with "At the beginning of your draw step, draw two additional cards" and "At the beginning of your end step, discard your hand." diff --git a/forge-gui/res/cardsfolder/s/smelt_ward_gatekeepers.txt b/forge-gui/res/cardsfolder/s/smelt_ward_gatekeepers.txt index cf9c2dc7dc5..4e4df2d88fa 100644 --- a/forge-gui/res/cardsfolder/s/smelt_ward_gatekeepers.txt +++ b/forge-gui/res/cardsfolder/s/smelt_ward_gatekeepers.txt @@ -5,6 +5,6 @@ PT:2/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Gate.YouCtrl | PresentCompare$ GE2 | Execute$ TrigGainControl | TriggerDescription$ When CARDNAME enters the battlefield, if you control two or more Gates, gain control of target creature an opponent controls until end of turn. Untap that creature. That creature gains haste until end of turn. SVar:TrigGainControl:AB$ GainControl | Cost$ 0 | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | Untap$ True | LoseControl$ EOT | SubAbility$ DBPump SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Haste -SVar:PlayMain1:TRUE +SVar:PlayMain1:OPPONENTCREATURES SVar:Picture:http://www.wizards.com/global/images/magic/general/smelt_ward_gatekeepers.jpg Oracle:When Smelt-Ward Gatekeepers enters the battlefield, if you control two or more Gates, gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/t/thunder_brute.txt b/forge-gui/res/cardsfolder/t/thunder_brute.txt index 7093e9ae373..4ab3423a3e3 100644 --- a/forge-gui/res/cardsfolder/t/thunder_brute.txt +++ b/forge-gui/res/cardsfolder/t/thunder_brute.txt @@ -6,7 +6,7 @@ K:Trample K:Tribute 3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+notTributed | Execute$ TrigNotTribute | TriggerDescription$ When CARDNAME enters the battlefield, if tribute wasn't paid, it gains haste until end of turn. SVar:TrigNotTribute:AB$ Pump | Cost$ 0 | KW$ Haste | Defined$ Self -SVar:PlayMain1:TRUE +SVar:PlayMain1:ALWAYS SVar:TributeAILogic:CanBlockThisTurn SVar:Picture:http://www.wizards.com/global/images/magic/general/thunder_brute.jpg Oracle:Trample\nTribute 3 (As this creature enters the battlefield, an opponent of your choice may place three +1/+1 counters on it.)\nWhen Thunder Brute enters the battlefield, if tribute wasn't paid, it gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/w/warren_pilferers.txt b/forge-gui/res/cardsfolder/w/warren_pilferers.txt index 2623ddad572..c159cfe3824 100644 --- a/forge-gui/res/cardsfolder/w/warren_pilferers.txt +++ b/forge-gui/res/cardsfolder/w/warren_pilferers.txt @@ -6,5 +6,6 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigMove:AB$ ChangeZone | Cost$ 0 | Mandatory$ True | ValidTgts$ Card.Creature+YouCtrl | TgtPrompt$ Select target creature card | Origin$ Graveyard | Destination$ Hand | RememberChanged$ True | SubAbility$ DBPump SVar:DBPump:DB$ Pump | Cost$ 0 | Defined$ Self | KW$ Haste | SubAbility$ DBCleanUp | ConditionPresent$ Card.Goblin+IsRemembered | ConditionDefined$ Remembered | ConditionCompare$ EQ1 SVar:DBCleanUp:DB$Cleanup | ClearRemembered$ True +SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/warren_pilferers.jpg Oracle:When Warren Pilferers enters the battlefield, return target creature card from your graveyard to your hand. If that card is a Goblin card, Warren Pilferers gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/z/zealous_conscripts.txt b/forge-gui/res/cardsfolder/z/zealous_conscripts.txt index ca9d7ca8e17..ab2895aab8d 100644 --- a/forge-gui/res/cardsfolder/z/zealous_conscripts.txt +++ b/forge-gui/res/cardsfolder/z/zealous_conscripts.txt @@ -5,5 +5,6 @@ PT:3/3 K:Haste T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, untap target permanent and gain control of it until end of turn. It gains haste until end of turn. SVar:TrigChange:AB$GainControl | Cost$ 0 | TgtPrompt$ Choose target permanent | ValidTgts$ Permanent | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Untap target permanent gain control of it until end of turn. It gains haste until end of turn. +SVar:PlayMain1:OPPONENTCREATURES SVar:Picture:http://www.wizards.com/global/images/magic/general/zealous_conscripts.jpg Oracle:Haste\nWhen Zealous Conscripts enters the battlefield, gain control of target permanent until end of turn. Untap that permanent. It gains haste until end of turn.