From 45b6f1a6ef0734395fd87e9054d57ef530836bdc Mon Sep 17 00:00:00 2001 From: swordshine Date: Thu, 5 Apr 2018 22:07:15 +0800 Subject: [PATCH] - Fixed "precombat main phase" triggers --- forge-game/src/main/java/forge/game/trigger/Trigger.java | 6 ++++++ forge-gui/res/cardsfolder/a/altar_of_shadows.txt | 2 +- forge-gui/res/cardsfolder/b/black_market.txt | 2 +- forge-gui/res/cardsfolder/b/blinkmoth_urn.txt | 2 +- forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt | 2 +- forge-gui/res/cardsfolder/c/coalition_relic.txt | 2 +- .../res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt | 2 +- forge-gui/res/cardsfolder/e/eladamris_vineyard.txt | 2 +- forge-gui/res/cardsfolder/e/elemental_resonance.txt | 2 +- forge-gui/res/cardsfolder/k/kilnspire_district.txt | 2 +- forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt | 2 +- forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt | 2 +- forge-gui/res/cardsfolder/p/plasm_capture.txt | 2 +- forge-gui/res/cardsfolder/v/ventifact_bottle.txt | 2 +- 14 files changed, 19 insertions(+), 13 deletions(-) diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index 2835e658c28..8700ff560be 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -235,6 +235,12 @@ public abstract class Trigger extends TriggerReplacementBase { } } + if (this.mapParams.containsKey("PreCombatMain")) { + if (!phaseHandler.isPreCombatMain()) { + return false; + } + } + if (this.mapParams.containsKey("PlayerTurn")) { if (!phaseHandler.isPlayerTurn(this.getHostCard().getController())) { return false; diff --git a/forge-gui/res/cardsfolder/a/altar_of_shadows.txt b/forge-gui/res/cardsfolder/a/altar_of_shadows.txt index 52e7f5a4c35..5c566284828 100644 --- a/forge-gui/res/cardsfolder/a/altar_of_shadows.txt +++ b/forge-gui/res/cardsfolder/a/altar_of_shadows.txt @@ -1,7 +1,7 @@ Name:Altar of Shadows ManaCost:7 Types:Artifact -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. SVar:TrigGetMana:DB$ Mana | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {X}{B} to your mana pool A:AB$ Destroy | Cost$ 7 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBPutCounter | SpellDescription$ Destroy target creature. Then put a charge counter on CARDNAME. SVar:DBPutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 diff --git a/forge-gui/res/cardsfolder/b/black_market.txt b/forge-gui/res/cardsfolder/b/black_market.txt index 6d8ccfcfc9e..d778476f2f6 100644 --- a/forge-gui/res/cardsfolder/b/black_market.txt +++ b/forge-gui/res/cardsfolder/b/black_market.txt @@ -3,7 +3,7 @@ ManaCost:3 B B Types:Enchantment T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a creature dies, put a charge counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. SVar:TrigGetMana:DB$ Mana | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {X}{B} to your mana pool SVar:X:Count$CardCounters.CHARGE SVar:Picture:http://www.wizards.com/global/images/magic/general/black_market.jpg diff --git a/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt b/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt index 701221e7a40..f6c525433db 100644 --- a/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt +++ b/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt @@ -1,7 +1,7 @@ Name:Blinkmoth Urn ManaCost:5 Types:Artifact -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Battlefield | IsPresent$ Card.Self+untapped | Execute$ TrigGetMana | TriggerDescription$ At the beginning of each player's precombat main phase, if CARDNAME is untapped, that player adds {C} to his or her mana pool for each artifact he or she controls. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | TriggerZones$ Battlefield | IsPresent$ Card.Self+untapped | Execute$ TrigGetMana | TriggerDescription$ At the beginning of each player's precombat main phase, if CARDNAME is untapped, that player adds {C} to his or her mana pool for each artifact he or she controls. SVar:TrigGetMana:DB$ Mana | Produced$ C | Amount$ X | References$ X | Defined$ TriggeredPlayer SVar:X:Count$Valid Artifact.ActivePlayerCtrl SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt b/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt index 83440c262f0..37f1924c4db 100644 --- a/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt +++ b/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt @@ -1,7 +1,7 @@ Name:Bounty of the Luxa ManaCost:2 G U Types:Enchantment -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all flood counters from CARDNAME. If no counters were removed this way, put a flood counter on CARDNAME and draw a card. Otherwise, add {C}{G}{U} to your mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all flood counters from CARDNAME. If no counters were removed this way, put a flood counter on CARDNAME and draw a card. Otherwise, add {C}{G}{U} to your mana pool. SVar:TrigRemove:DB$ RemoveCounter | CounterType$ FLOOD | CounterNum$ All | RememberRemoved$ True | SubAbility$ DBPutCounter SVar:DBPutCounter:DB$PutCounter | Defined$ Self | ConditionCheckSVar$ X | References$ X | ConditionSVarCompare$ EQ0 | CounterType$ FLOOD | CounterNum$ 1 | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionCheckSVar$ X | References$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBGetMana diff --git a/forge-gui/res/cardsfolder/c/coalition_relic.txt b/forge-gui/res/cardsfolder/c/coalition_relic.txt index 56ac352c590..6140718b951 100644 --- a/forge-gui/res/cardsfolder/c/coalition_relic.txt +++ b/forge-gui/res/cardsfolder/c/coalition_relic.txt @@ -3,7 +3,7 @@ ManaCost:3 Types:Artifact A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color to your mana pool. A:AB$ PutCounter | Cost$ T | CounterType$ CHARGE | CounterNum$ 1 | SpellDescription$ Put a charge counter on CARDNAME. -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all charge counters from CARDNAME. Add one mana of any color to your mana pool for each charge counter removed this way. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all charge counters from CARDNAME. Add one mana of any color to your mana pool for each charge counter removed this way. SVar:TrigRemove:DB$ RemoveCounter | CounterType$ CHARGE | CounterNum$ All | RememberRemoved$ True | SubAbility$ TrigGetMana SVar:TrigGetMana:DB$ Mana | Produced$ Combo Any | Amount$ NumRemoved | References$ NumRemoved | AILogic$ MostProminentInComputerHand | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt b/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt index 19eedb69663..8ffdf7cd54e 100644 --- a/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt +++ b/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt @@ -2,7 +2,7 @@ Name:Eladamri, Lord of Leaves Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:-1/+2 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Command | Execute$ TrigAddMana | TriggerDescription$ At the beginning of each player's precombat main phase, that player adds {G}{G} to his or her mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | TriggerZones$ Command | Execute$ TrigAddMana | TriggerDescription$ At the beginning of each player's precombat main phase, that player adds {G}{G} to his or her mana pool. SVar:TrigAddMana:DB$ Mana | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer SVar:RemRandomDeck:True SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Eladamri, Lord of Leaves Avatar.full.jpg diff --git a/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt b/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt index 2e107211202..c11a1f41a34 100644 --- a/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt +++ b/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt @@ -1,7 +1,7 @@ Name:Eladamri's Vineyard ManaCost:G Types:Enchantment -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. SVar:TrigMana:DB$Mana | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/eladamris_vineyard.jpg Oracle:At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. diff --git a/forge-gui/res/cardsfolder/e/elemental_resonance.txt b/forge-gui/res/cardsfolder/e/elemental_resonance.txt index 3709882672b..a25125a0b58 100644 --- a/forge-gui/res/cardsfolder/e/elemental_resonance.txt +++ b/forge-gui/res/cardsfolder/e/elemental_resonance.txt @@ -3,7 +3,7 @@ ManaCost:2 G G Types:Enchantment Aura K:Enchant permanent A:SP$ Attach | Cost$ 2 G G | ValidTgts$ Permanent | AILogic$ Pump -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of your precombat main phase, add mana equal to enchanted permanent's mana cost to your mana pool. (Mana cost includes color. If a mana symbol has multiple colors, choose one.) +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of your precombat main phase, add mana equal to enchanted permanent's mana cost to your mana pool. (Mana cost includes color. If a mana symbol has multiple colors, choose one.) SVar:TrigMana:DB$ Mana | Produced$ Special EnchantedManaCost SVar:Picture:http://www.wizards.com/global/images/magic/general/elemental_resonance.jpg Oracle:Enchant permanent\nAt the beginning of your precombat main phase, add mana equal to enchanted permanent's mana cost to your mana pool. (Mana cost includes color. If a mana symbol has multiple colors, choose one.) diff --git a/forge-gui/res/cardsfolder/k/kilnspire_district.txt b/forge-gui/res/cardsfolder/k/kilnspire_district.txt index 7e2e685ade3..23128cdc0f7 100644 --- a/forge-gui/res/cardsfolder/k/kilnspire_district.txt +++ b/forge-gui/res/cardsfolder/k/kilnspire_district.txt @@ -2,7 +2,7 @@ Name:Kilnspire District ManaCost:no cost Types:Plane Ravnica T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ PutCounter | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} to your mana pool for each charge counter on it. -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} to your mana pool for each charge counter on it. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} to your mana pool for each charge counter on it. SVar:PutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ R | Amount$ Y | References$ Y T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPay | TriggerDescription$ Whenever you roll {CHAOS}, you may pay {X}. If you do, CARDNAME deals X damage to target creature or player. diff --git a/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt b/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt index de6c2929715..e5e59ca0e72 100644 --- a/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt +++ b/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt @@ -2,7 +2,7 @@ Name:Magus of the Vineyard ManaCost:G Types:Creature Human Wizard PT:1/1 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. SVar:TrigMana:DB$Mana | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/magus_of_the_vineyard.jpg Oracle:At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. diff --git a/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt b/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt index c3325629b9c..86fef9dc028 100644 --- a/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt +++ b/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt @@ -2,7 +2,7 @@ Name:Orcish Squatters Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:-1/-1 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add an amount of {C} to your mana pool equal to the number of lands target opponent controls. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add an amount of {C} to your mana pool equal to the number of lands target opponent controls. SVar:TrigGetMana:DB$ Pump | ValidTgts$ Player | RememberObjects$ Targeted | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ C | Amount$ X | References$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/p/plasm_capture.txt b/forge-gui/res/cardsfolder/p/plasm_capture.txt index 1137f140b08..0eb1003fea9 100644 --- a/forge-gui/res/cardsfolder/p/plasm_capture.txt +++ b/forge-gui/res/cardsfolder/p/plasm_capture.txt @@ -2,7 +2,7 @@ Name:Plasm Capture ManaCost:G G U U Types:Instant A:SP$ Counter | Cost$ G G U U | TargetType$ Spell | RememberCounteredCMC$ True | ValidTgts$ Card | SubAbility$ DBDelTrig | SpellDescription$ Counter target spell. At the beginning of your next precombat main phase, add X mana in any combination of colors to your mana pool, where X is that spell's converted mana cost. -SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | Execute$ AddMana | TriggerDescription$ At the beginning of your next precombat main phase, add X mana in any combination of colors to your mana pool, where X is that spell's converted mana cost. | RememberNumber$ True | SubAbility$ DBCleanup +SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | Execute$ AddMana | TriggerDescription$ At the beginning of your next precombat main phase, add X mana in any combination of colors to your mana pool, where X is that spell's converted mana cost. | RememberNumber$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AddMana:DB$ Mana | Produced$ Combo Any | Amount$ X | References$ X | AILogic$ MostProminentInComputerHand SVar:X:Count$TriggerRememberAmount diff --git a/forge-gui/res/cardsfolder/v/ventifact_bottle.txt b/forge-gui/res/cardsfolder/v/ventifact_bottle.txt index 452e305915a..7350b7e3cfe 100644 --- a/forge-gui/res/cardsfolder/v/ventifact_bottle.txt +++ b/forge-gui/res/cardsfolder/v/ventifact_bottle.txt @@ -2,7 +2,7 @@ Name:Ventifact Bottle ManaCost:3 Types:Artifact A:AB$ PutCounter | Cost$ X 1 T | CounterType$ CHARGE | CounterNum$ X | References$ X | SorcerySpeed$ True | SpellDescription$ Put X charge counters on Ventifact Bottle. Activate this ability only any time you could cast a sorcery. -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | CheckSVar$ Y | SVarCompare$ GE1 | TriggerDescription$ At the beginning of your precombat main phase, if CARDNAME has a charge counter on it, tap it and remove all charge counters from it. Add {C} to your mana pool for each charge counter removed this way. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | CheckSVar$ Y | SVarCompare$ GE1 | TriggerDescription$ At the beginning of your precombat main phase, if CARDNAME has a charge counter on it, tap it and remove all charge counters from it. Add {C} to your mana pool for each charge counter removed this way. SVar:TrigGetMana:DB$ Mana | Produced$ C | Amount$ Y | SubAbility$ TrigRemove SVar:TrigRemove:DB$ RemoveCounter | CounterType$ CHARGE | CounterNum$ Y | References$ Y | SubAbility$ DBTap SVar:DBTap:DB$ Tap | Defined$ Self