From 3b95d5e2876b6dfc84c2348a36d21b6cb30a8f8d Mon Sep 17 00:00:00 2001 From: jendave Date: Sun, 7 Aug 2011 01:58:23 +0000 Subject: [PATCH] Bugfix: Multi-triggering should now function as intended - Moved TriggerObjects to the SA and saved through the StackInstance. - Changed Count$Triggered to TriggerCount$ since Count doesn't have access to where the TriggerObjects live anymore --- res/cardsfolder/ageless_entity.txt | 2 +- res/cardsfolder/angelheart_vial.txt | 2 +- res/cardsfolder/armadillo_cloak.txt | 2 +- res/cardsfolder/beastmasters_magemark.txt | 2 +- res/cardsfolder/belltower_sphinx.txt | 2 +- res/cardsfolder/berserk_murlodont.txt | 2 +- res/cardsfolder/binding_agony.txt | 2 +- res/cardsfolder/blood_hound.txt | 2 +- res/cardsfolder/broodhatch_nantuko.txt | 2 +- res/cardsfolder/cold_eyed_selkie.txt | 2 +- res/cardsfolder/cradle_of_vitality.txt | 2 +- res/cardsfolder/darien_king_of_kjeldor.txt | 2 +- res/cardsfolder/doubtless_one.txt | 2 +- res/cardsfolder/druids_call.txt | 2 +- res/cardsfolder/el_hajjaj.txt | 2 +- res/cardsfolder/elvish_berserker.txt | 2 +- res/cardsfolder/emberwilde_caliph.txt | 2 +- res/cardsfolder/essence_sliver.txt | 2 +- res/cardsfolder/exalted_angel.txt | 2 +- res/cardsfolder/false_cure.txt | 2 +- res/cardsfolder/filthy_cur.txt | 2 +- res/cardsfolder/flayed_nim.txt | 2 +- res/cardsfolder/glint_eye_nephilim.txt | 2 +- res/cardsfolder/greatbow_doyen.txt | 2 +- res/cardsfolder/grollub.txt | 2 +- res/cardsfolder/guilty_conscience.txt | 2 +- res/cardsfolder/horned_cheetah.txt | 2 +- res/cardsfolder/jackal_pup.txt | 2 +- res/cardsfolder/jagged_poppet.txt | 2 +- res/cardsfolder/jungle_wurm.txt | 2 +- res/cardsfolder/kami_of_the_honored_dead.txt | 2 +- res/cardsfolder/kavu_predator.txt | 2 +- res/cardsfolder/kjeldoran_gargoyle.txt | 2 +- res/cardsfolder/living_artifact.txt | 2 +- res/cardsfolder/living_hive.txt | 2 +- res/cardsfolder/mindcrank.txt | 2 +- res/cardsfolder/miraris_wake.txt | 2 +- res/cardsfolder/mogg_maniac.txt | 2 +- res/cardsfolder/mourning_thrull.txt | 2 +- res/cardsfolder/needle_specter.txt | 2 +- res/cardsfolder/noble_purpose.txt | 2 +- res/cardsfolder/phantom_nishoba.txt | 2 +- res/cardsfolder/phyrexian_negator.txt | 2 +- res/cardsfolder/phyrexian_obliterator.txt | 2 +- res/cardsfolder/pollenbright_wings.txt | 2 +- res/cardsfolder/ragged_veins.txt | 2 +- res/cardsfolder/rapacious_one.txt | 2 +- res/cardsfolder/repercussion.txt | 4 +- res/cardsfolder/rite_of_passage.txt | 3 +- res/cardsfolder/saber_ants.txt | 2 +- res/cardsfolder/sanguine_bond.txt | 2 +- res/cardsfolder/soul_link.txt | 2 +- res/cardsfolder/souls_of_the_faultless.txt | 2 +- res/cardsfolder/sparring_golem.txt | 2 +- res/cardsfolder/spined_sliver.txt | 2 +- res/cardsfolder/spirit_link.txt | 2 +- res/cardsfolder/spirit_loop.txt | 2 +- res/cardsfolder/spitemare.txt | 2 +- res/cardsfolder/squandered_resources.txt | 2 +- res/cardsfolder/sunhome_enforcer.txt | 2 +- res/cardsfolder/tamanoa.txt | 2 +- res/cardsfolder/tephraderm.txt | 2 +- res/cardsfolder/thrashing_mudspawn.txt | 2 +- res/cardsfolder/vampiric_link.txt | 2 +- res/cardsfolder/vorinclex_voice_of_hunger.txt | 2 +- res/cardsfolder/wall_of_essence.txt | 2 +- res/cardsfolder/wall_of_hope.txt | 2 +- res/cardsfolder/wall_of_souls.txt | 2 +- res/cardsfolder/warrior_angel.txt | 2 +- res/cardsfolder/winters_night.txt | 2 +- res/cardsfolder/zebra_unicorn.txt | 2 +- src/forge/Card.java | 33 ------------- .../card/abilityFactory/AbilityFactory.java | 43 ++++++++++++++--- .../AbilityFactory_ChangeZone.java | 2 +- .../abilityFactory/AbilityFactory_Mana.java | 10 ++-- .../AbilityFactory_Sacrifice.java | 2 +- src/forge/card/cardFactory/CardFactory.java | 1 - .../card/cardFactory/CardFactoryUtil.java | 22 +++++---- src/forge/card/spellability/SpellAbility.java | 33 ++++++++++++- .../SpellAbility_StackInstance.java | 11 ++++- src/forge/card/trigger/Trigger.java | 10 +++- src/forge/card/trigger/TriggerHandler.java | 46 +++++++++++++++++-- .../card/trigger/Trigger_AttackerBlocked.java | 9 ++-- .../trigger/Trigger_AttackerUnblocked.java | 5 +- src/forge/card/trigger/Trigger_Attacks.java | 5 +- src/forge/card/trigger/Trigger_Blocks.java | 7 +-- .../card/trigger/Trigger_ChangesZone.java | 5 +- src/forge/card/trigger/Trigger_Clashed.java | 3 +- .../card/trigger/Trigger_CounterAdded.java | 5 +- src/forge/card/trigger/Trigger_Cycled.java | 5 +- .../card/trigger/Trigger_DamageDone.java | 9 ++-- src/forge/card/trigger/Trigger_Discarded.java | 5 +- src/forge/card/trigger/Trigger_Drawn.java | 5 +- .../card/trigger/Trigger_LandPlayed.java | 5 +- .../card/trigger/Trigger_LifeGained.java | 7 +-- src/forge/card/trigger/Trigger_LifeLost.java | 7 +-- src/forge/card/trigger/Trigger_Phase.java | 5 +- .../card/trigger/Trigger_Sacrificed.java | 5 +- src/forge/card/trigger/Trigger_Shuffled.java | 5 +- .../trigger/Trigger_SpellAbilityCast.java | 10 ++-- src/forge/card/trigger/Trigger_Taps.java | 5 +- .../card/trigger/Trigger_TapsForMana.java | 9 ++-- .../card/trigger/Trigger_TurnFaceUp.java | 5 +- src/forge/card/trigger/Trigger_Unequip.java | 7 +-- src/forge/card/trigger/Trigger_Untaps.java | 5 +- 105 files changed, 302 insertions(+), 194 deletions(-) diff --git a/res/cardsfolder/ageless_entity.txt b/res/cardsfolder/ageless_entity.txt index b23e5b70305..1fc1d556524 100644 --- a/res/cardsfolder/ageless_entity.txt +++ b/res/cardsfolder/ageless_entity.txt @@ -5,7 +5,7 @@ Text:no text PT:4/4 T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you gain life, put that many +1/+1 counters on CARDNAME. SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ X -SVar:X:Count$TriggeredLifeAmount +SVar:X:TriggerCount$LifeAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/ageless_entity.jpg SetInfo:DST|Rare|http://magiccards.info/scans/en/ds/73.jpg diff --git a/res/cardsfolder/angelheart_vial.txt b/res/cardsfolder/angelheart_vial.txt index 9facb442508..1caa281513e 100644 --- a/res/cardsfolder/angelheart_vial.txt +++ b/res/cardsfolder/angelheart_vial.txt @@ -6,7 +6,7 @@ A:AB$ GainLife | Cost$ 2 T SubCounter<4/CHARGE> | Defined$ You | LifeAmount$ 2 | T:Mode$ DamageDone | ValidTarget$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ Whenever you're dealt damage, you may put that many charge counters on CARDNAME. SVar:DBDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ CHARGE | CounterNum$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/angelheart_vial.jpg SetInfo:ROE|Rare|http://magiccards.info/scans/en/roe/215.jpg diff --git a/res/cardsfolder/armadillo_cloak.txt b/res/cardsfolder/armadillo_cloak.txt index d5dcb7ee290..afa0b40204e 100644 --- a/res/cardsfolder/armadillo_cloak.txt +++ b/res/cardsfolder/armadillo_cloak.txt @@ -6,7 +6,7 @@ K:Enchant creature K:enPump:+2/+2/Trample T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/armadillo_cloak.jpg SetInfo:INV|Common|http://magiccards.info/scans/en/in/229.jpg diff --git a/res/cardsfolder/beastmasters_magemark.txt b/res/cardsfolder/beastmasters_magemark.txt index 00d9713e341..164ab931065 100644 --- a/res/cardsfolder/beastmasters_magemark.txt +++ b/res/cardsfolder/beastmasters_magemark.txt @@ -7,7 +7,7 @@ K:enPump:+0/+0 K:stPumpAll:Creature.enchanted+YouCtrl:1/1:no Condition:Creatures you control that are enchanted get +1/+1. T:Mode$ AttackerBlocked | ValidCard$ Creature.enchanted+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control that's enchanted becomes blocked, it gets +1/+1 until end of turn for each creature blocking it. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ TriggeredAttacker | NumAtt$ +X | NumDef$ +X -SVar:X:Count$TriggeredNumBlockers +SVar:X:TriggerCount$NumBlockers SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/beastmasters_magemark.jpg SetInfo:GPT|Common|http://magiccards.info/scans/en/gp/80.jpg diff --git a/res/cardsfolder/belltower_sphinx.txt b/res/cardsfolder/belltower_sphinx.txt index 08c5be6b047..38cc8716fd3 100644 --- a/res/cardsfolder/belltower_sphinx.txt +++ b/res/cardsfolder/belltower_sphinx.txt @@ -6,7 +6,7 @@ PT:2/5 K:Flying T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigMill | TriggerDescription$ Whenever a source deals damage to CARDNAME, that source's controller puts that many cards from the top of his or her library into his or her graveyard. SVar:TrigMill:AB$Mill | Cost$ 0 | Defined$ TriggeredSourceController | NumCards$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/belltower_sphinx.jpg SetInfo:RAV|Uncommon|http://magiccards.info/scans/en/rav/38.jpg diff --git a/res/cardsfolder/berserk_murlodont.txt b/res/cardsfolder/berserk_murlodont.txt index 7421974d536..f18f8212145 100644 --- a/res/cardsfolder/berserk_murlodont.txt +++ b/res/cardsfolder/berserk_murlodont.txt @@ -5,7 +5,7 @@ Text:no text PT:3/3 T:Mode$ AttackerBlocked | ValidCard$ Beast | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a Beast becomes blocked, it gets +1/+1 until end of turn for each creature blocking it. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ TriggeredAttacker | NumAtt$ +X | NumDef$ +X -SVar:X:Count$TriggeredNumBlockers +SVar:X:TriggerCount$NumBlockers SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/berserk_murlodont.jpg SetInfo:LGN|Common|http://magiccards.info/scans/en/le/117.jpg diff --git a/res/cardsfolder/binding_agony.txt b/res/cardsfolder/binding_agony.txt index 7f9456426a3..443a79ac192 100644 --- a/res/cardsfolder/binding_agony.txt +++ b/res/cardsfolder/binding_agony.txt @@ -5,7 +5,7 @@ Text:no text K:Enchant Creature Curse T:Mode$ DamageDone | ValidTarget$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever enchanted creature is dealt damage, CARDNAME deals that much damage to that creature's controller. SVar:TrigDealDamage:AB$ DealDamage | Cost$ 0 | Defined$ EnchantedController | NumDmg$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/binding_agony.jpg SetInfo:MIR|Common|http://magiccards.info/scans/en/mr/4.jpg diff --git a/res/cardsfolder/blood_hound.txt b/res/cardsfolder/blood_hound.txt index 9674cf5931e..67f2072d0e2 100644 --- a/res/cardsfolder/blood_hound.txt +++ b/res/cardsfolder/blood_hound.txt @@ -6,7 +6,7 @@ T:Mode$ DamageDone | ValidTarget$ You | TriggerZones$ Battlefield | Execute$ Tri SVar:TrigPutCounter: AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ X T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemoveCounter | TriggerDescription$ At the beginning of your end step, remove all +1/+1 counters from CARDNAME. SVar:TrigRemoveCounter: AB$ RemoveCounter | Cost$ 0 | CounterType$ P1P1 | CounterNum$ All -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:All:Count$CardCounters.P1P1 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_hound.jpg diff --git a/res/cardsfolder/broodhatch_nantuko.txt b/res/cardsfolder/broodhatch_nantuko.txt index 09a0b7ab791..c6157892e36 100644 --- a/res/cardsfolder/broodhatch_nantuko.txt +++ b/res/cardsfolder/broodhatch_nantuko.txt @@ -6,7 +6,7 @@ PT:1/1 K:Morph:2 G T:Mode$ DamageDone | Execute$ TrigToken | ValidTarget$ Card.Self | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME is dealt damage, you may put that many 1/1 green Insect creature tokens onto the battlefield. SVar:TrigToken:AB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Insect | TokenTypes$ Creature,Insect | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/broodhatch_nantuko.jpg SetInfo:ONS|Uncommon|http://magiccards.info/scans/en/on/250.jpg diff --git a/res/cardsfolder/cold_eyed_selkie.txt b/res/cardsfolder/cold_eyed_selkie.txt index 37d79e869f9..24bcb986a02 100644 --- a/res/cardsfolder/cold_eyed_selkie.txt +++ b/res/cardsfolder/cold_eyed_selkie.txt @@ -6,7 +6,7 @@ PT:1/1 K:Islandwalk T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDraw | CombatDamage$ True | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw that many cards. SVar:TrigDraw:AB$Draw | Cost$ 0 | Defined$ You | NumCards$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/cold_eyed_selkie.jpg SetInfo:EVE|Rare|http://magiccards.info/scans/en/eve/149.jpg diff --git a/res/cardsfolder/cradle_of_vitality.txt b/res/cardsfolder/cradle_of_vitality.txt index 6ec58553cdc..e8d4db26b78 100644 --- a/res/cardsfolder/cradle_of_vitality.txt +++ b/res/cardsfolder/cradle_of_vitality.txt @@ -4,7 +4,7 @@ Types:Enchantment Text:no text T:Mode$ LifeGained | ValidPlayer$ You | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you gain life, you may pay 1 W. If you do, put a +1/+1 counter on target creature for each 1 life you gained. SVar:TrigPutCounter:AB$PutCounter | Cost$ 1 W | Tgt$ TgtC | CounterType$ P1P1 | CounterNum$ X -SVar:X:Count$TriggeredLifeAmount +SVar:X:TriggerCount$LifeAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/cradle_of_vitality.jpg SetInfo:ALA|Rare|http://magiccards.info/scans/en/ala/7.jpg diff --git a/res/cardsfolder/darien_king_of_kjeldor.txt b/res/cardsfolder/darien_king_of_kjeldor.txt index 07d1b682904..df393680fd2 100644 --- a/res/cardsfolder/darien_king_of_kjeldor.txt +++ b/res/cardsfolder/darien_king_of_kjeldor.txt @@ -5,7 +5,7 @@ Text:no text PT:3/3 T:Mode$ DamageDone | Execute$ TrigToken | ValidTarget$ You | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever you're dealt damage, you may put that many 1/1 white Soldier creature tokens onto the battlefield. SVar:TrigToken:AB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Soldier | TokenTypes$ Creature,Soldier | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/darien_king_of_kjeldor.jpg SetInfo:CSP|Rare|http://magiccards.info/scans/en/cs/4.jpg diff --git a/res/cardsfolder/doubtless_one.txt b/res/cardsfolder/doubtless_one.txt index 40e2bd398de..042eb6f17ad 100644 --- a/res/cardsfolder/doubtless_one.txt +++ b/res/cardsfolder/doubtless_one.txt @@ -6,7 +6,7 @@ PT:*/* K:stSetPT:Count$Valid Cleric:Count$Valid Cleric:CARDNAME's power and toughness are each equal to the number of Clerics on the battlefield. T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:BuffedBy:Cleric SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/doubtless_one.jpg diff --git a/res/cardsfolder/druids_call.txt b/res/cardsfolder/druids_call.txt index a3cbd5c4596..82bb22be987 100644 --- a/res/cardsfolder/druids_call.txt +++ b/res/cardsfolder/druids_call.txt @@ -5,7 +5,7 @@ Text:no text K:Enchant Creature T:Mode$ DamageDone | ValidTarget$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever enchanted creature is dealt damage, its controller puts that many 1/1 green Squirrel creature tokens onto the battlefield. SVar:TrigToken:AB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Squirrel | TokenTypes$ Creature,Squirrel | TokenOwner$ TriggeredTargetController | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/druids_call.jpg SetInfo:ODY|Uncommon|http://magiccards.info/scans/en/od/239.jpg diff --git a/res/cardsfolder/el_hajjaj.txt b/res/cardsfolder/el_hajjaj.txt index c31f470b277..6f247f35c83 100644 --- a/res/cardsfolder/el_hajjaj.txt +++ b/res/cardsfolder/el_hajjaj.txt @@ -5,7 +5,7 @@ Text:no text PT:1/1 T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/el_hajjaj.jpg SetInfo:3ED|Rare|http://magiccards.info/scans/en/rv/16.jpg diff --git a/res/cardsfolder/elvish_berserker.txt b/res/cardsfolder/elvish_berserker.txt index e1db0a95d2e..3cf0b5f150e 100644 --- a/res/cardsfolder/elvish_berserker.txt +++ b/res/cardsfolder/elvish_berserker.txt @@ -5,7 +5,7 @@ Text:no text PT:1/1 T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME becomes blocked, it gets +1/+1 until end of turn for each creature blocking it. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ Self | NumAtt$ +X | NumDef$ +X -SVar:X:Count$TriggeredNumBlockers +SVar:X:TriggerCount$NumBlockers SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/elvish_berserker.jpg SetInfo:EXO|Common|http://magiccards.info/scans/en/ex/110.jpg diff --git a/res/cardsfolder/emberwilde_caliph.txt b/res/cardsfolder/emberwilde_caliph.txt index 71d4df3b176..790d4d86b9f 100644 --- a/res/cardsfolder/emberwilde_caliph.txt +++ b/res/cardsfolder/emberwilde_caliph.txt @@ -8,7 +8,7 @@ K:Trample K:CARDNAME attacks each turn if able. T:Mode$ DamageDone | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME deals damage, you lose that much life. SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/emberwilde_caliph.jpg diff --git a/res/cardsfolder/essence_sliver.txt b/res/cardsfolder/essence_sliver.txt index 1ee73e8ac0a..34b2ef2db83 100644 --- a/res/cardsfolder/essence_sliver.txt +++ b/res/cardsfolder/essence_sliver.txt @@ -5,7 +5,7 @@ Text:no text PT:3/3 T:Mode$ DamageDone | ValidSource$ Sliver | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Sliver deals damage, its controller gains that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ TriggeredSourceController | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:PlayMain1:TRUE SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/essence_sliver.jpg diff --git a/res/cardsfolder/exalted_angel.txt b/res/cardsfolder/exalted_angel.txt index 3dc45b46300..c09a2bcae5b 100644 --- a/res/cardsfolder/exalted_angel.txt +++ b/res/cardsfolder/exalted_angel.txt @@ -6,7 +6,7 @@ PT:4/5 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount K:Morph:2 W W SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/exalted_angel.jpg diff --git a/res/cardsfolder/false_cure.txt b/res/cardsfolder/false_cure.txt index 3afd428e4a4..f1b36753334 100644 --- a/res/cardsfolder/false_cure.txt +++ b/res/cardsfolder/false_cure.txt @@ -5,7 +5,7 @@ Text:no text A:SP$ Effect | Cost$ B B | Name$ False Cure Effect | Triggers$ GainLife | SVars$ TrigLoseLife,X | SpellDescription$ Until end of turn, whenever a player gains life, that player loses 2 life for each 1 life he or she gained. SVar:GainLife:Mode$ LifeGained | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever a player gains life, that player loses 2 life for each 1 life he or she gained. SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ TriggeredPlayer | LifeAmount$ X -SVar:X:Count$TriggeredLifeAmount/Times.2 +SVar:X:TriggerCount$LifeAmount/Times.2 SVar:RemRandomDeck:True SVar:PlayMain1:TRUE SVar:Rarity:Rare diff --git a/res/cardsfolder/filthy_cur.txt b/res/cardsfolder/filthy_cur.txt index 098184c831b..14662a93573 100644 --- a/res/cardsfolder/filthy_cur.txt +++ b/res/cardsfolder/filthy_cur.txt @@ -5,7 +5,7 @@ Text:no text PT:2/2 T:Mode$ DamageDone | ValidTarget$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME is dealt damage, you lose that much life. SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/filthy_cur.jpg SetInfo:ODY|Common|http://magiccards.info/scans/en/od/136.jpg diff --git a/res/cardsfolder/flayed_nim.txt b/res/cardsfolder/flayed_nim.txt index cd940f58fa7..d0fa2e4d157 100644 --- a/res/cardsfolder/flayed_nim.txt +++ b/res/cardsfolder/flayed_nim.txt @@ -6,7 +6,7 @@ PT:2/2 A:AB$ Regenerate | Cost$ 2 B | SpellDescription$ Regenerate CARDNAME. T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, that creature's controller loses that much life. SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ TriggeredTargetController | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/flayed_nim.jpg SetInfo:MRD|Uncommon|http://magiccards.info/scans/en/mi/65.jpg diff --git a/res/cardsfolder/glint_eye_nephilim.txt b/res/cardsfolder/glint_eye_nephilim.txt index 5af9e81f68d..a7beb84f5b9 100644 --- a/res/cardsfolder/glint_eye_nephilim.txt +++ b/res/cardsfolder/glint_eye_nephilim.txt @@ -5,7 +5,7 @@ Text:no text PT:2/2 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDraw | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, draw that many cards. SVar:TrigDraw:AB$Draw | Cost$ 0 | Defined$ You | NumCards$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount A:AB$ Pump | Cost$ 1 Discard<1/Card> | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/glint_eye_nephilim.jpg diff --git a/res/cardsfolder/greatbow_doyen.txt b/res/cardsfolder/greatbow_doyen.txt index c37958e53ef..243d763d236 100644 --- a/res/cardsfolder/greatbow_doyen.txt +++ b/res/cardsfolder/greatbow_doyen.txt @@ -6,7 +6,7 @@ PT:2/4 K:stPumpAll:Creature.Archer+Other+YouCtrl:1/1:No Condition:Other Archer creatures you control get +1/+1. T:Mode$ DamageDone | ValidSource$ Archer.YouCtrl | ValidTarget$ Creature | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever an Archer you control deals damage to a creature, that Archer deals that much damage to that creature's controller. SVar:TrigDealDamage:AB$DealDamage | Cost$ 0 | Defined$ TriggeredTargetController | DamageSource$ TriggeredSource | NumDmg$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/greatbow_doyen.jpg SetInfo:MOR|Rare|http://magiccards.info/scans/en/mt/125.jpg diff --git a/res/cardsfolder/grollub.txt b/res/cardsfolder/grollub.txt index c4d19288c01..264f2e8c2e9 100644 --- a/res/cardsfolder/grollub.txt +++ b/res/cardsfolder/grollub.txt @@ -5,7 +5,7 @@ Text:no text PT:3/3 T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, each opponent gains that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ Opponent| LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/grollub.jpg diff --git a/res/cardsfolder/guilty_conscience.txt b/res/cardsfolder/guilty_conscience.txt index 96ce5f65616..acb0cc5c840 100644 --- a/res/cardsfolder/guilty_conscience.txt +++ b/res/cardsfolder/guilty_conscience.txt @@ -5,7 +5,7 @@ Text:no text K:Enchant creature Curse T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, CARDNAME deals that much damage to that creature. SVar:TrigDamage:AB$DealDamage | Cost$ 0 | Defined$ Enchanted | NumDmg$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/guilty_conscience.jpg SetInfo:SCG|Common|http://magiccards.info/scans/en/sc/17.jpg diff --git a/res/cardsfolder/horned_cheetah.txt b/res/cardsfolder/horned_cheetah.txt index d6a855e402d..1d9f4d0b71e 100644 --- a/res/cardsfolder/horned_cheetah.txt +++ b/res/cardsfolder/horned_cheetah.txt @@ -5,7 +5,7 @@ Text:no text PT:2/2 T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/horned_cheetah.jpg SetInfo:INV|Uncommon|http://magiccards.info/scans/en/in/251.jpg diff --git a/res/cardsfolder/jackal_pup.txt b/res/cardsfolder/jackal_pup.txt index 0f439c099dd..c3265fb1ffa 100644 --- a/res/cardsfolder/jackal_pup.txt +++ b/res/cardsfolder/jackal_pup.txt @@ -5,7 +5,7 @@ Text:no text PT:2/1 T:Mode$ DamageDone | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to you. SVar:TrigDamage:AB$DealDamage | Cost$ 0 | NumDmg$ X | Defined$ You -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/jackal_pup.jpg SetInfo:TMP|Uncommon|http://magiccards.info/scans/en/tp/183.jpg diff --git a/res/cardsfolder/jagged_poppet.txt b/res/cardsfolder/jagged_poppet.txt index f7f1fd00526..cbe49be8270 100644 --- a/res/cardsfolder/jagged_poppet.txt +++ b/res/cardsfolder/jagged_poppet.txt @@ -7,7 +7,7 @@ T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigYouDiscard | TriggerD T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | Hellbent$ True | CombatDamage$ True | Execute$ TrigOppDiscard | TriggerDescription$ Hellbent - Whenever CARDNAME deals combat damage to a player, if you have no cards in hand, that player discards cards equal to the damage. SVar:TrigYouDiscard:AB$Discard | Cost$ 0 | Defined$ You | NumCards$ X | Mode$ TgtChoose SVar:TrigOppDiscard:AB$Discard | Cost$ 0 | Defined$ Opponent | NumCards$ X | Mode$ TgtChoose -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/jagged_poppet.jpg SetInfo:DIS|Uncommon|http://magiccards.info/scans/en/di/115.jpg diff --git a/res/cardsfolder/jungle_wurm.txt b/res/cardsfolder/jungle_wurm.txt index f73bccef00c..7f4878034cb 100644 --- a/res/cardsfolder/jungle_wurm.txt +++ b/res/cardsfolder/jungle_wurm.txt @@ -5,7 +5,7 @@ Text:no text PT:5/5 T:Mode$ AttackerBlocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME becomes blocked, it gets -1/-1 until end of turn for each creature blocking it beyond the first. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ Self | NumAtt$ -X | NumDef$ -X -SVar:X:Count$TriggeredNumBlockers/Minus.1 +SVar:X:TriggerCount$NumBlockers/Minus.1 SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/jungle_wurm.jpg SetInfo:MIR|Common|http://magiccards.info/scans/en/mr/122.jpg diff --git a/res/cardsfolder/kami_of_the_honored_dead.txt b/res/cardsfolder/kami_of_the_honored_dead.txt index 987b6339e27..4dd618c5441 100644 --- a/res/cardsfolder/kami_of_the_honored_dead.txt +++ b/res/cardsfolder/kami_of_the_honored_dead.txt @@ -6,7 +6,7 @@ PT:3/5 K:Flying T:Mode$ DamageDone | ValidTarget$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigGain | TriggerDescription$ Whenever CARDNAME is dealt damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/kami_of_the_honored_dead.jpg SetInfo:BOK|Uncommon|http://magiccards.info/scans/en/bok/12.jpg diff --git a/res/cardsfolder/kavu_predator.txt b/res/cardsfolder/kavu_predator.txt index e15917cd3a7..65d0b23980d 100644 --- a/res/cardsfolder/kavu_predator.txt +++ b/res/cardsfolder/kavu_predator.txt @@ -6,7 +6,7 @@ PT:2/2 K:Trample T:Mode$ LifeGained | ValidPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigPut | TriggerDescription$ Whenever an opponent gains life, put that many +1/+1 counters on CARDNAME. SVar:TrigPut:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ X -SVar:X:Count$TriggeredLifeAmount +SVar:X:TriggerCount$LifeAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/kavu_predator.jpg SetInfo:PLC|Uncommon|http://magiccards.info/scans/en/pc/132.jpg diff --git a/res/cardsfolder/kjeldoran_gargoyle.txt b/res/cardsfolder/kjeldoran_gargoyle.txt index f4c2948e2f6..125892faaae 100644 --- a/res/cardsfolder/kjeldoran_gargoyle.txt +++ b/res/cardsfolder/kjeldoran_gargoyle.txt @@ -7,7 +7,7 @@ K:Flying K:First Strike T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/kjeldoran_gargoyle.jpg SetInfo:CSP|Uncommon|http://magiccards.info/scans/en/cs/10.jpg diff --git a/res/cardsfolder/living_artifact.txt b/res/cardsfolder/living_artifact.txt index 0846fda419e..9653377879c 100644 --- a/res/cardsfolder/living_artifact.txt +++ b/res/cardsfolder/living_artifact.txt @@ -5,7 +5,7 @@ Text:no text K:Enchant Artifact T:Mode$ DamageDone | ValidTarget$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you're dealt damage, put that many vitality counters on CARDNAME. SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ VITALITY | CounterNum$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGainLife | IsPresent$ Card.Self+countersGE1VITALITY | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may remove a vitality counter from CARDNAME. If you do, you gain 1 life. SVar:TrigGainLife:AB$GainLife | Cost$ SubCounter<1/VITALITY> | Defined$ You | LifeAmount$ 1 SVar:Rarity:Rare diff --git a/res/cardsfolder/living_hive.txt b/res/cardsfolder/living_hive.txt index aac2d75c030..b2d4b5a754b 100644 --- a/res/cardsfolder/living_hive.txt +++ b/res/cardsfolder/living_hive.txt @@ -6,7 +6,7 @@ PT:6/6 K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigToken | ValidTarget$ Player | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, put that many 1/1 green Insect creature tokens onto the battlefield. SVar:TrigToken:AB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Insect | TokenTypes$ Creature,Insect | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/living_hive.jpg SetInfo:MRD|Rare|http://magiccards.info/scans/en/mi/124.jpg diff --git a/res/cardsfolder/mindcrank.txt b/res/cardsfolder/mindcrank.txt index b0412906900..3c07dabbdfc 100644 --- a/res/cardsfolder/mindcrank.txt +++ b/res/cardsfolder/mindcrank.txt @@ -4,7 +4,7 @@ Types:Artifact Text:no text T:Mode$ LifeLost | ValidPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigMill | TriggerDescription$ Whenever an opponent loses life, that player puts that many cards from the top of his or her library into his or her graveyard. (Damage dealt by sources without infect causes loss of life.) SVar:TrigMill:AB$Mill | Cost$ 0 | Defined$ Opponent | NumCards$ X -SVar:X:Count$TriggeredLifeAmount +SVar:X:TriggerCount$LifeAmount SVar:RemRandomDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/mindcrank.jpg diff --git a/res/cardsfolder/miraris_wake.txt b/res/cardsfolder/miraris_wake.txt index 73198a95731..6ad3689af46 100644 --- a/res/cardsfolder/miraris_wake.txt +++ b/res/cardsfolder/miraris_wake.txt @@ -3,7 +3,7 @@ ManaCost:3 G W Types:Enchantment Text:no text T:Mode$ TapsForMana | ValidCard$ Land.YouCtrl | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ Whenever you tap a land for mana, add one mana to your mana pool of any type that land produced. -SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Card.IsTriggeredCard | ReflectProperty$ Produced | Defined$ TriggeredPlayer +SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Defined.Triggered | ReflectProperty$ Produced | Defined$ TriggeredPlayer K:stPumpAll:Creature.YouCtrl:1/1:No Condition:Creatures you control get +1/+1. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/miraris_wake.jpg diff --git a/res/cardsfolder/mogg_maniac.txt b/res/cardsfolder/mogg_maniac.txt index 744eaa27415..21c766f8b53 100644 --- a/res/cardsfolder/mogg_maniac.txt +++ b/res/cardsfolder/mogg_maniac.txt @@ -5,7 +5,7 @@ Text:no text PT:1/1 T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to target opponent. SVar:TrigDamage:AB$DealDamage | Cost$ 0 | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/mogg_maniac.jpg SetInfo:STH|Uncommon|http://magiccards.info/scans/en/sh/94.jpg diff --git a/res/cardsfolder/mourning_thrull.txt b/res/cardsfolder/mourning_thrull.txt index f3b483409b3..cd40971b681 100644 --- a/res/cardsfolder/mourning_thrull.txt +++ b/res/cardsfolder/mourning_thrull.txt @@ -6,7 +6,7 @@ PT:1/1 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/mourning_thrull.jpg SetInfo:GPT|Common|http://magiccards.info/scans/en/gp/146.jpg diff --git a/res/cardsfolder/needle_specter.txt b/res/cardsfolder/needle_specter.txt index 3b8d2ce2845..1452f88671e 100644 --- a/res/cardsfolder/needle_specter.txt +++ b/res/cardsfolder/needle_specter.txt @@ -7,7 +7,7 @@ K:Flying K:Wither T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player discards that many cards. SVar:TrigDiscard:AB$Discard | Cost$ 0 | Defined$ TriggeredTarget | NumCards$ X | Mode$ TgtChoose -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/needle_specter.jpg SetInfo:EVE|Rare|http://magiccards.info/scans/en/eve/39.jpg diff --git a/res/cardsfolder/noble_purpose.txt b/res/cardsfolder/noble_purpose.txt index ff8d4313803..3849b21fa60 100644 --- a/res/cardsfolder/noble_purpose.txt +++ b/res/cardsfolder/noble_purpose.txt @@ -4,7 +4,7 @@ Types:Enchantment Text:no text T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | Execute$ TrigGain | TriggerZones$ Battlefield | CombatDamage$ True | TriggerDescription$ Whenever a creature you control deals combat damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/noble_purpose.jpg SetInfo:8ED|Rare|http://magiccards.info/scans/en/8e/31.jpg diff --git a/res/cardsfolder/phantom_nishoba.txt b/res/cardsfolder/phantom_nishoba.txt index 18cfa04a028..d82c94d5c46 100644 --- a/res/cardsfolder/phantom_nishoba.txt +++ b/res/cardsfolder/phantom_nishoba.txt @@ -7,7 +7,7 @@ K:etbCounter:P1P1:7 K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount K:If damage would be dealt to CARDNAME, prevent that damage. Remove a +1/+1 counter from CARDNAME. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/phantom_nishoba.jpg diff --git a/res/cardsfolder/phyrexian_negator.txt b/res/cardsfolder/phyrexian_negator.txt index 7c969968d49..81f48fb9e86 100644 --- a/res/cardsfolder/phyrexian_negator.txt +++ b/res/cardsfolder/phyrexian_negator.txt @@ -6,7 +6,7 @@ PT:5/5 K:Trample T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, sacrifice that many permanents. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Amount$ X | SacValid$ Permanent -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:RemAIDeck:True SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/phyrexian_negator.jpg diff --git a/res/cardsfolder/phyrexian_obliterator.txt b/res/cardsfolder/phyrexian_obliterator.txt index 1bae84763b6..665258bdd4a 100644 --- a/res/cardsfolder/phyrexian_obliterator.txt +++ b/res/cardsfolder/phyrexian_obliterator.txt @@ -6,7 +6,7 @@ PT:5/5 K:Trample T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ Whenever a source deals damage to CARDNAME, that source's controller sacrifices that many permanents. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Amount$ X | SacValid$ Permanent | Defined$ TriggeredSourceController -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:RemRandomDeck:True SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/phyrexian_obliterator.jpg diff --git a/res/cardsfolder/pollenbright_wings.txt b/res/cardsfolder/pollenbright_wings.txt index 0e939771940..9439f12c28d 100644 --- a/res/cardsfolder/pollenbright_wings.txt +++ b/res/cardsfolder/pollenbright_wings.txt @@ -6,7 +6,7 @@ K:Enchant creature K:enPump:Flying T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigToken | ValidTarget$ Player | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals combat damage to a player, put that many 1/1 green Saproling creature tokens onto the battlefield. SVar:TrigToken:AB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/pollenbright_wings.jpg SetInfo:RAV|Uncommon|http://magiccards.info/scans/en/rav/219.jpg diff --git a/res/cardsfolder/ragged_veins.txt b/res/cardsfolder/ragged_veins.txt index 2e6a9d2221a..1ed2d19fbab 100644 --- a/res/cardsfolder/ragged_veins.txt +++ b/res/cardsfolder/ragged_veins.txt @@ -6,7 +6,7 @@ K:Flash K:Enchant Creature Curse T:Mode$ DamageDone | ValidTarget$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever enchanted creature is dealt damage, its controller loses that much life. SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ TriggeredCardController | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/ragged_veins.jpg SetInfo:CHK|Common|http://magiccards.info/scans/en/chk/139.jpg diff --git a/res/cardsfolder/rapacious_one.txt b/res/cardsfolder/rapacious_one.txt index 2cc028322c5..186a810107e 100644 --- a/res/cardsfolder/rapacious_one.txt +++ b/res/cardsfolder/rapacious_one.txt @@ -7,7 +7,7 @@ K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, put that many 0/1 colorless Eldrazi Spawn creature tokens onto the battlefield. They have "Sacrifice this creature: Add 1 to your mana pool." SVar:TrigToken:AB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Eldrazi Spawn | TokenTypes$ Creature,Eldrazi,Spawn | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 0 | TokenToughness$ 1 | TokenAbilities$ ABMana SVar:ABMana:AB$Mana | Cost$ Sac<1/CARDNAME> | Produced$ 1 | Amount$ 1 | SpellDescription$ Add 1 to your mana pool. -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/rapacious_one.jpg SetInfo:ROE|Uncommon|http://magiccards.info/scans/en/roe/162.jpg diff --git a/res/cardsfolder/repercussion.txt b/res/cardsfolder/repercussion.txt index 42f53b826a5..0b91f9cc766 100644 --- a/res/cardsfolder/repercussion.txt +++ b/res/cardsfolder/repercussion.txt @@ -6,8 +6,8 @@ T:Mode$ DamageDone | ValidTarget$ Creature.YouCtrl | TriggerZones$ Battlefield | T:Mode$ DamageDone | ValidTarget$ Creature.YouDontCtrl | TriggerZones$ Battlefield | Execute$ TrigDamageOpp | Secondary$ True | TriggerDescription$ Whenever a creature is dealt damage, CARDNAME deals that much damage to that creature's controller. SVar:TrigDamageYou:AB$DealDamage | Cost$ 0 | Defined$ You | NumDmg$ X SVar:TrigDamageOpp:AB$DealDamage | Cost$ 0 | Defined$ Opponent | NumDmg$ Y -SVar:X:Count$TriggeredDamageAmount -SVar:Y:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount +SVar:Y:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/repercussion.jpg SetInfo:UDS|Rare|http://magiccards.info/scans/en/ud/95.jpg diff --git a/res/cardsfolder/rite_of_passage.txt b/res/cardsfolder/rite_of_passage.txt index 47591abe1a3..e8e654794ab 100644 --- a/res/cardsfolder/rite_of_passage.txt +++ b/res/cardsfolder/rite_of_passage.txt @@ -2,7 +2,8 @@ Name:Rite of Passage ManaCost:2 G Types:Enchantment Text:no text -K:stPumpAll:Creature.YouCtrl:0/0/Whenever CARDNAME is dealt damage, put a +1/+1 counter on it.:no Condition:Whenever a creature you control is dealt damage, put a +1/+1 counter on it. (The damage is dealt before the counter is put on.) +T:Mode$ DamageDone | ValidTarget$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a creature you control is dealt damage, put a +1/+1 counter on it. (The damage is dealt before the counter is put on.) +SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | Defined$ TriggeredTarget | CounterType$ P1P1 | CounterNum$ 1 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/rite_of_passage.jpg SetInfo:5DN|Rare|http://magiccards.info/scans/en/5dn/91.jpg diff --git a/res/cardsfolder/saber_ants.txt b/res/cardsfolder/saber_ants.txt index a3d58ab15bc..09ad6bf6ec2 100644 --- a/res/cardsfolder/saber_ants.txt +++ b/res/cardsfolder/saber_ants.txt @@ -5,7 +5,7 @@ Text:no text PT:2/3 T:Mode$ DamageDone | Execute$ TrigToken | ValidTarget$ Card.Self | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME is dealt damage, you may put that many 1/1 green Insect creature tokens onto the battlefield. SVar:TrigToken:AB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Insect | TokenTypes$ Creature,Insect | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/saber_ants.jpg SetInfo:MMQ|Uncommon|http://magiccards.info/scans/en/mm/267.jpg diff --git a/res/cardsfolder/sanguine_bond.txt b/res/cardsfolder/sanguine_bond.txt index 936fe751aa3..5c3b32bc128 100644 --- a/res/cardsfolder/sanguine_bond.txt +++ b/res/cardsfolder/sanguine_bond.txt @@ -4,7 +4,7 @@ Types:Enchantment Text:no text T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ Whenever you gain life, target opponent loses that much life. SVar:TrigDrain:AB$LoseLife | Cost$ 0 | ValidTgts$ Opponent | TgtPromp$ Select target opponent | LifeAmount$ X -SVar:X:Count$TriggeredLifeAmount +SVar:X:TriggerCount$LifeAmount SVar:RemRandomDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/sanguine_bond.jpg diff --git a/res/cardsfolder/soul_link.txt b/res/cardsfolder/soul_link.txt index 6e2aafe37dd..d930752adc1 100644 --- a/res/cardsfolder/soul_link.txt +++ b/res/cardsfolder/soul_link.txt @@ -7,7 +7,7 @@ K:enPump:+0/+0 T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. T:Mode$ DamageDone | ValidTarget$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature is dealt damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_link.jpg SetInfo:APC|Common|http://magiccards.info/scans/en/ap/120.jpg diff --git a/res/cardsfolder/souls_of_the_faultless.txt b/res/cardsfolder/souls_of_the_faultless.txt index da62cdd74fd..a16eaa321f2 100644 --- a/res/cardsfolder/souls_of_the_faultless.txt +++ b/res/cardsfolder/souls_of_the_faultless.txt @@ -7,7 +7,7 @@ K:Defender T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigGain | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME is dealt combat damage, you gain that much life and attacking player loses that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | SubAbility$ SVar=DBDrain SVar:DBDrain:DB$LoseLife | Defined$ AttackingPlayer | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/souls_of_the_faultless.jpg SetInfo:GPT|Uncommon|http://magiccards.info/scans/en/gp/131.jpg diff --git a/res/cardsfolder/sparring_golem.txt b/res/cardsfolder/sparring_golem.txt index b8b7982d62b..d0e27984666 100644 --- a/res/cardsfolder/sparring_golem.txt +++ b/res/cardsfolder/sparring_golem.txt @@ -5,7 +5,7 @@ Text:no text PT:2/2 T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME becomes blocked, it gets +1/+1 until end of turn for each creature blocking it. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ Self | NumAtt$ +X | NumDef$ +X -SVar:X:Count$TriggeredNumBlockers +SVar:X:TriggerCount$NumBlockers SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/sparring_golem.jpg SetInfo:INV|Uncommon|http://magiccards.info/scans/en/in/312.jpg diff --git a/res/cardsfolder/spined_sliver.txt b/res/cardsfolder/spined_sliver.txt index 566c7f6e607..445a279bf9f 100644 --- a/res/cardsfolder/spined_sliver.txt +++ b/res/cardsfolder/spined_sliver.txt @@ -5,7 +5,7 @@ Text:no text PT:2/2 T:Mode$ AttackerBlocked | ValidCard$ Sliver | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a Sliver becomes blocked, that Sliver gets +1/+1 until end of turn for each creature blocking it. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ TriggeredAttacker | NumAtt$ +X | NumDef$ +X -SVar:X:Count$TriggeredNumBlockers +SVar:X:TriggerCount$NumBlockers SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/spined_sliver.jpg SetInfo:STH|Uncommon|http://magiccards.info/scans/en/sh/142.jpg diff --git a/res/cardsfolder/spirit_link.txt b/res/cardsfolder/spirit_link.txt index 6b973d601c4..ba76acc7bba 100644 --- a/res/cardsfolder/spirit_link.txt +++ b/res/cardsfolder/spirit_link.txt @@ -6,7 +6,7 @@ K:Enchant creature K:enPump:+0/+0 T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/spirit_link.jpg SetInfo:8ED|Uncommon|http://magiccards.info/scans/en/8e/47.jpg diff --git a/res/cardsfolder/spirit_loop.txt b/res/cardsfolder/spirit_loop.txt index fda9ded11a9..12a55e1914c 100644 --- a/res/cardsfolder/spirit_loop.txt +++ b/res/cardsfolder/spirit_loop.txt @@ -5,7 +5,7 @@ Text:no text K:Enchant Creature you control T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, return CARDNAME to its owner's hand. SVar:TrigChangeZone:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Hand SVar:SacMe:2 diff --git a/res/cardsfolder/spitemare.txt b/res/cardsfolder/spitemare.txt index 02db6d65b86..d04a81aee97 100644 --- a/res/cardsfolder/spitemare.txt +++ b/res/cardsfolder/spitemare.txt @@ -5,7 +5,7 @@ Text:no text PT:3/3 T:Mode$ DamageDone | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to target creature or player. SVar:TrigDamage:AB$DealDamage | Cost$ 0 | NumDmg$ X | Tgt$ TgtCP -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/spitemare.jpg SetInfo:EVE|Uncommon|http://magiccards.info/scans/en/eve/147.jpg diff --git a/res/cardsfolder/squandered_resources.txt b/res/cardsfolder/squandered_resources.txt index b7efbc85ccb..8ee90fe2a9d 100644 --- a/res/cardsfolder/squandered_resources.txt +++ b/res/cardsfolder/squandered_resources.txt @@ -2,7 +2,7 @@ Name:Squandered Resources ManaCost:B G Types:Enchantment Text:no text -A:AB$ ManaReflected | Cost$ Sac<1/Land> | ColorOrType$ Type | Valid$ Sacrificed | ReflectProperty$ Produce | SpellDescription$ Add to your mana pool one mana of any type the sacrificed land could produce. +A:AB$ ManaReflected | Cost$ Sac<1/Land> | ColorOrType$ Type | Valid$ Defined.Sacrificed | ReflectProperty$ Produce | SpellDescription$ Add to your mana pool one mana of any type the sacrificed land could produce. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/squandered_resources.jpg diff --git a/res/cardsfolder/sunhome_enforcer.txt b/res/cardsfolder/sunhome_enforcer.txt index 0babdf64ae7..7980d4a0b74 100644 --- a/res/cardsfolder/sunhome_enforcer.txt +++ b/res/cardsfolder/sunhome_enforcer.txt @@ -5,7 +5,7 @@ Text:no text PT:2/4 T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount A:AB$ Pump | Cost$ 1 R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/sunhome_enforcer.jpg diff --git a/res/cardsfolder/tamanoa.txt b/res/cardsfolder/tamanoa.txt index 24d2cfa02be..d29ba1f3222 100644 --- a/res/cardsfolder/tamanoa.txt +++ b/res/cardsfolder/tamanoa.txt @@ -5,7 +5,7 @@ Text:no text PT:2/4 T:Mode$ DamageDone | ValidSource$ Card.nonCreature+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a noncreature source you control deals damage, you gain that much life. SVar:TrigGainLife:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount Svar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/tamanoa.jpg SetInfo:CSP|Rare|http://magiccards.info/scans/en/cs/132.jpg diff --git a/res/cardsfolder/tephraderm.txt b/res/cardsfolder/tephraderm.txt index c39d7cbcbe8..84644cca2e5 100644 --- a/res/cardsfolder/tephraderm.txt +++ b/res/cardsfolder/tephraderm.txt @@ -7,7 +7,7 @@ T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Card.Self | Execute$ T T:Mode$ DamageDone | ValidSource$ Instant,Sorcery | ValidTarget$ Card.Self | Execute$ TrigDealDamage2 | TriggerDescription$ Whenever a spell deals damage to CARDNAME, CARDNAME deals that much damage to that spell's controller. SVar:TrigDealDamage1:AB$DealDamage | Cost$ 0 | Defined$ TriggeredSource | NumDmg$ X SVar:TrigDealDamage2:AB$DealDamage | Cost$ 0 | Defined$ TriggeredSourceController | NumDmg$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/tephraderm.jpg SetInfo:ONS|Rare|http://magiccards.info/scans/en/on/239.jpg diff --git a/res/cardsfolder/thrashing_mudspawn.txt b/res/cardsfolder/thrashing_mudspawn.txt index 9315d826d51..073049b65cb 100644 --- a/res/cardsfolder/thrashing_mudspawn.txt +++ b/res/cardsfolder/thrashing_mudspawn.txt @@ -5,7 +5,7 @@ Text:no text PT:4/4 T:Mode$ DamageDone | ValidTarget$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME is dealt damage, you lose that much life. SVar:TrigLoseLife:AB$LoseLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount K:Morph:1 B B SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/thrashing_mudspawn.jpg diff --git a/res/cardsfolder/vampiric_link.txt b/res/cardsfolder/vampiric_link.txt index 822dfad3723..c0fbd5a611b 100644 --- a/res/cardsfolder/vampiric_link.txt +++ b/res/cardsfolder/vampiric_link.txt @@ -6,7 +6,7 @@ K:Enchant creature K:enPump:+0/+0 T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/vampiric_link.jpg SetInfo:PLC|Common|http://magiccards.info/scans/en/pc/92.jpg diff --git a/res/cardsfolder/vorinclex_voice_of_hunger.txt b/res/cardsfolder/vorinclex_voice_of_hunger.txt index dd9a696010a..22765ac003a 100644 --- a/res/cardsfolder/vorinclex_voice_of_hunger.txt +++ b/res/cardsfolder/vorinclex_voice_of_hunger.txt @@ -5,7 +5,7 @@ Text:no text PT:7/6 K:Trample T:Mode$ TapsForMana | ValidCard$ Land.YouCtrl | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ Whenever you tap a land for mana, add one mana to your mana pool of any type that land produced. -SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Card.IsTriggeredCard | ReflectProperty$ Produced | Defined$ You +SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Defined.Triggered | ReflectProperty$ Produced | Defined$ You T:Mode$ TapsForMana | ValidCard$ Land.YouDontCtrl | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever an opponent taps a land for mana, that land doesn't untap during its controller's next untap step. SVar:TrigPump:AB$Pump | Cost$ 0 | Defined$ TriggeredCard | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step. SVar:Rarity:Mythic diff --git a/res/cardsfolder/wall_of_essence.txt b/res/cardsfolder/wall_of_essence.txt index cdbca275ec3..b813807350b 100644 --- a/res/cardsfolder/wall_of_essence.txt +++ b/res/cardsfolder/wall_of_essence.txt @@ -6,7 +6,7 @@ PT:0/4 K:Defender T:Mode$ DamageDone | ValidTarget$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigGain | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME is dealt combat damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/wall_of_essence.jpg SetInfo:STH|Uncommon|http://magiccards.info/scans/en/sh/122.jpg diff --git a/res/cardsfolder/wall_of_hope.txt b/res/cardsfolder/wall_of_hope.txt index 4674e30b741..6c1ab9ffafe 100644 --- a/res/cardsfolder/wall_of_hope.txt +++ b/res/cardsfolder/wall_of_hope.txt @@ -6,7 +6,7 @@ PT:0/3 K:Defender T:Mode$ DamageDone | DamageSource$ Any | ValidTarget$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever CARDNAME is dealt damage, you gain that much life. SVar:TrigGainLife:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/wall_of_hope.jpg SetInfo:LGN|Common|http://magiccards.info/scans/en/le/24.jpg diff --git a/res/cardsfolder/wall_of_souls.txt b/res/cardsfolder/wall_of_souls.txt index ce420ce9164..ca117f50b9f 100644 --- a/res/cardsfolder/wall_of_souls.txt +++ b/res/cardsfolder/wall_of_souls.txt @@ -6,7 +6,7 @@ PT:0/4 K:Defender T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigDamage | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME is dealt combat damage, it deals that much damage to target opponent. SVar:TrigDamage:AB$DealDamage | Cost$ 0 | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/wall_of_souls.jpg SetInfo:STH|Uncommon|http://magiccards.info/scans/en/sh/25.jpg diff --git a/res/cardsfolder/warrior_angel.txt b/res/cardsfolder/warrior_angel.txt index fd4081ddcd1..74a5587721b 100644 --- a/res/cardsfolder/warrior_angel.txt +++ b/res/cardsfolder/warrior_angel.txt @@ -6,7 +6,7 @@ PT:3/4 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/warrior_angel.jpg SetInfo:STH|Rare|http://magiccards.info/scans/en/sh/123.jpg diff --git a/res/cardsfolder/winters_night.txt b/res/cardsfolder/winters_night.txt index 1130d8104ba..cb9a46de555 100644 --- a/res/cardsfolder/winters_night.txt +++ b/res/cardsfolder/winters_night.txt @@ -3,7 +3,7 @@ ManaCost:R G W Types:World Enchantment Text:no text T:Mode$ TapsForMana | ValidCard$ Land.Snow | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player taps a snow land for mana, that player adds one mana to his or her mana pool of any type that land produced. That land doesn't untap during its controller's next untap step. -SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Card.IsTriggeredCard | ReflectProperty$ Produced | Defined$ TriggeredPlayer | SubAbility$ SVar=DBPump +SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Defined.Triggered | ReflectProperty$ Produced | Defined$ TriggeredPlayer | SubAbility$ SVar=DBPump SVar:DBPump:DB$Pump | Defined$ TriggeredCard | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step. SVar:RemAIDeck:True SVar:RemRandomDeck:True diff --git a/res/cardsfolder/zebra_unicorn.txt b/res/cardsfolder/zebra_unicorn.txt index 9b4612bba0a..fa1a9937c93 100644 --- a/res/cardsfolder/zebra_unicorn.txt +++ b/res/cardsfolder/zebra_unicorn.txt @@ -5,7 +5,7 @@ Text:no text PT:2/2 T:Mode$ DamageDone | ValidSource$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X -SVar:X:Count$TriggeredDamageAmount +SVar:X:TriggerCount$DamageAmount SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/zebra_unicorn.jpg SetInfo:MIR|Uncommon|http://magiccards.info/scans/en/mr/350.jpg diff --git a/src/forge/Card.java b/src/forge/Card.java index e07faec9bb3..c1e247b034b 100644 --- a/src/forge/Card.java +++ b/src/forge/Card.java @@ -266,32 +266,11 @@ public class Card extends MyObservable { triggers.clear(); } - public void setTriggeringObject(String type,Object o) - { - triggeringObjects.put(type,o); - } - public Object getTriggeringObject(String type) { return triggeringObjects.get(type); } - public boolean hasTriggeringObject(String type) - { - return triggeringObjects.containsKey(type); - } - - public void setAllTriggeringObjects(HashMap map) - { - triggeringObjects = map; - } - - public HashMap getAllTriggeringObjects() - { - return triggeringObjects; - } - - public void setAbilityUsed(int i) { abilityUsed = i; } @@ -2954,18 +2933,6 @@ public class Card extends MyObservable { { if(!manaCost.contains("P")) return false; } - else if(Property.startsWith("IsTriggered")) - { - if(!source.hasTriggeringObject(Property.substring(11))) - return false; - - Object TriggeredObject = source.getTriggeringObject(Property.substring(11)); - if(!(TriggeredObject instanceof Card)) - return false; - - if(!TriggeredObject.equals(this)) - return false; - } else { if(Property.equals("ChosenType")) { if(!isType(source.getChosenType())) return false; diff --git a/src/forge/card/abilityFactory/AbilityFactory.java b/src/forge/card/abilityFactory/AbilityFactory.java index fef1833fd0b..cd66676399c 100644 --- a/src/forge/card/abilityFactory/AbilityFactory.java +++ b/src/forge/card/abilityFactory/AbilityFactory.java @@ -976,7 +976,7 @@ public class AbilityFactory { } else if (calcX[0].startsWith("Triggered")) { list = new CardList(); - list.add((Card)ability.getSourceCard().getTriggeringObject(calcX[0].substring(9))); + list.add((Card)ability.getTriggeringObject(calcX[0].substring(9))); } else if (calcX[0].startsWith("Remembered")) { // Add whole Remembered list to handlePaid @@ -992,6 +992,16 @@ public class AbilityFactory { for(Card c : card.getImprinted()) list.add(AllZoneUtil.getCardState(c)); } + + else if (calcX[0].startsWith("TriggerCount")) { + // TriggerCount is similar to a regular Count, but just pulls Integer Values from Trigger objects + String[] l = calcX[1].split("/"); + String[] m = CardFactoryUtil.parseMath(l); + int count = (Integer)ability.getTriggeringObject(l[0]); + + return CardFactoryUtil.doXMath(count, m, card) * multiplier; + } + else return 0; @@ -1030,7 +1040,7 @@ public class AbilityFactory { } else if (defined.startsWith("Triggered")){ - Object crd = hostCard.getTriggeringObject(defined.substring(9)); + Object crd = sa.getTriggeringObject(defined.substring(9)); if(crd instanceof Card) { c = AllZoneUtil.getCardState((Card)crd); @@ -1055,7 +1065,26 @@ public class AbilityFactory { cards.add(AllZoneUtil.getCardState(imprint)); } } + else{ + CardList list = null; + if (defined.startsWith("Sacrificed")) + list = findRootAbility(sa).getPaidList("Sacrificed"); + else if (defined.startsWith("Discarded")) + list = findRootAbility(sa).getPaidList("Discarded"); + + else if(defined.startsWith("Exiled")) + list = findRootAbility(sa).getPaidList("Exiled"); + + else if(defined.startsWith("Tapped")) + list = findRootAbility(sa).getPaidList("Tapped"); + + else + return cards; + + for(Card cl : list) + cards.add(cl); + } if (c != null) cards.add(c); @@ -1115,7 +1144,7 @@ public class AbilityFactory { if (defined.endsWith("Controller")){ String triggeringType = defined.substring(9); triggeringType = triggeringType.substring(0,triggeringType.length()-10); - Object c = sa.getSourceCard().getTriggeringObject(triggeringType); + Object c = sa.getTriggeringObject(triggeringType); if(c instanceof Card) { o = ((Card)c).getController(); @@ -1124,7 +1153,7 @@ public class AbilityFactory { else if (defined.endsWith("Owner")){ String triggeringType = defined.substring(9); triggeringType = triggeringType.substring(0,triggeringType.length()-5); - Object c = sa.getSourceCard().getTriggeringObject(triggeringType); + Object c = sa.getTriggeringObject(triggeringType); if(c instanceof Card) { o = ((Card)c).getOwner(); @@ -1132,7 +1161,7 @@ public class AbilityFactory { } else { String triggeringType = defined.substring(9); - o = sa.getSourceCard().getTriggeringObject(triggeringType); + o = sa.getTriggeringObject(triggeringType); } if(o != null) { @@ -1191,8 +1220,8 @@ public class AbilityFactory { else if(defined.startsWith("Triggered")) { String triggeringType = defined.substring(9); - if(sa.getSourceCard().getTriggeringObject(triggeringType) instanceof SpellAbility) - s = (SpellAbility)sa.getSourceCard().getTriggeringObject(triggeringType); + if(sa.getTriggeringObject(triggeringType) instanceof SpellAbility) + s = (SpellAbility)sa.getTriggeringObject(triggeringType); } if (s != null) diff --git a/src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java b/src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java index ba9c82861b6..f540bf62413 100644 --- a/src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java +++ b/src/forge/card/abilityFactory/AbilityFactory_ChangeZone.java @@ -682,7 +682,7 @@ public class AbilityFactory_ChangeZone { Card source = sa.getSourceCard(); if (type.contains("Triggered")){ - Object o = source.getTriggeringObject("Card"); + Object o = sa.getTriggeringObject("Card"); // I won't the card attached to the Triggering object if (!(o instanceof Card)) diff --git a/src/forge/card/abilityFactory/AbilityFactory_Mana.java b/src/forge/card/abilityFactory/AbilityFactory_Mana.java index 62593333961..37da89b79af 100644 --- a/src/forge/card/abilityFactory/AbilityFactory_Mana.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Mana.java @@ -353,9 +353,11 @@ public class AbilityFactory_Mana { CardList cards = null; - // TODO: Conver this to Calculate Amount? - if (validCard.equals("Sacrificed")){ - cards = abMana.getPaidList("Sacrificed"); + // Reuse AF_Defined in a slightly different way + if (validCard.startsWith("Defined.")){ + cards = new CardList(); + for(Card c : AbilityFactory.getDefinedCards(card, validCard.replace("Defined.", ""), (SpellAbility)abMana)) + cards.add(c); } else{ cards = AllZoneUtil.getCardsInPlay().getValidCards(validCard, abMana.getActivatingPlayer(), card); @@ -373,7 +375,7 @@ public class AbilityFactory_Mana { colors = hasProperty(maxChoices, cards, colors); } else if (reflectProperty.equals("Produced")){ - String producedColors = (String)af.getHostCard().getTriggeringObject("Produced"); + String producedColors = (String)abMana.getTriggeringObject("Produced"); for(String col : Constant.Color.onlyColors){ String s = Input_PayManaCostUtil.getShortColorString(col); if(producedColors.contains(s) && !colors.contains(col)) diff --git a/src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java b/src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java index 3ff17b41c0e..ac5ea5dbb9e 100644 --- a/src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Sacrifice.java @@ -309,7 +309,7 @@ public class AbilityFactory_Sacrifice { } } else if( valid.equals("TriggeredCard")) { - Card equipee = (Card)(card.getTriggeringObject("Card")); + Card equipee = (Card)sa.getTriggeringObject("Card"); if(tgts.contains(card.getController()) && AllZoneUtil.isCardInPlay(equipee)) { AllZone.GameAction.sacrifice(equipee); } diff --git a/src/forge/card/cardFactory/CardFactory.java b/src/forge/card/cardFactory/CardFactory.java index 89edc8cf416..95f43dfcfb2 100644 --- a/src/forge/card/cardFactory/CardFactory.java +++ b/src/forge/card/cardFactory/CardFactory.java @@ -190,7 +190,6 @@ public class CardFactory implements NewConstants { out.setSets(in.getSets()); out.setCurSetCode(in.getCurSetCode()); out.setImageFilename(in.getImageFilename()); - out.setAllTriggeringObjects(in.getAllTriggeringObjects()); out.setEquipping(in.getEquipping()); out.setEquippedBy(in.getEquippedBy()); out.setEnchantedBy(in.getEnchantedBy()); diff --git a/src/forge/card/cardFactory/CardFactoryUtil.java b/src/forge/card/cardFactory/CardFactoryUtil.java index fd5e7a8e389..4866015941a 100644 --- a/src/forge/card/cardFactory/CardFactoryUtil.java +++ b/src/forge/card/cardFactory/CardFactoryUtil.java @@ -2275,14 +2275,20 @@ public class CardFactoryUtil { return count; } + public static String[] parseMath(String[] l){ + String[] m = {"none"}; + if(l.length > 1) m[0] = l[1]; + + return m; + } + + //parser for player targeted X variables public static int playerXCount(ArrayList players, String s, Card source) { if(players.size() == 0) return 0; - final String[] l; - l = s.split("/"); - final String m[] = {"none"}; - if(l.length > 1) m[0] = l[1]; + final String[] l = s.split("/"); + final String[] m = parseMath(l); int n = 0; @@ -2336,10 +2342,8 @@ public class CardFactoryUtil { Player cardController = c.getController(); Player oppController = cardController.getOpponent(); - final String[] l; - l = s.split("/"); // separate the specification from any math - final String m[] = {"none"}; - if(l.length > 1) m[0] = l[1]; + final String[] l = s.split("/"); + final String[] m = parseMath(l); //accept straight numbers if(l[0].contains("Number$")) { @@ -2771,7 +2775,7 @@ public class CardFactoryUtil { else return num; } - private static int doXMath(int num, String[] m, Card c) { + public static int doXMath(int num, String[] m, Card c) { if (m.length == 0) return num; diff --git a/src/forge/card/spellability/SpellAbility.java b/src/forge/card/spellability/SpellAbility.java index 309e8c526d1..14f955fe1ad 100644 --- a/src/forge/card/spellability/SpellAbility.java +++ b/src/forge/card/spellability/SpellAbility.java @@ -70,9 +70,11 @@ public abstract class SpellAbility { private ArrayList payingMana = new ArrayList(); private ArrayList paidAbilities = new ArrayList(); - HashMap paidLists = new HashMap(); + private HashMap paidLists = new HashMap(); - private Command cancelCommand = Command.Blank; + private HashMap triggeringObjects = new HashMap(); + + private Command cancelCommand = Command.Blank; private Command beforePayManaAI = Command.Blank; private CommandArgs randomTarget = new CommandArgs() { @@ -337,12 +339,39 @@ public abstract class SpellAbility { paidLists = new HashMap(); } + public HashMap getTriggeringObjects() { + return triggeringObjects; + } + + public void setAllTriggeringObjects(HashMap triggeredObjects) { + this.triggeringObjects = triggeredObjects; + } + + public void setTriggeringObject(String type,Object o) { + this.triggeringObjects.put(type, o); + } + + public Object getTriggeringObject(String type) + { + return triggeringObjects.get(type); + } + + public boolean hasTriggeringObject(String type) + { + return triggeringObjects.containsKey(type); + } + + public void resetTriggeringObjects(){ + triggeringObjects = new HashMap(); + } public void resetOnceResolved(){ resetPaidHash(); if (chosenTarget != null) chosenTarget.resetTargets(); + + resetTriggeringObjects(); } public Input getAfterResolve() { diff --git a/src/forge/card/spellability/SpellAbility_StackInstance.java b/src/forge/card/spellability/SpellAbility_StackInstance.java index fb5c2d23666..1a771b7b16b 100644 --- a/src/forge/card/spellability/SpellAbility_StackInstance.java +++ b/src/forge/card/spellability/SpellAbility_StackInstance.java @@ -30,11 +30,15 @@ public class SpellAbility_StackInstance { private int xManaPaid = 0; // Other Paid things - HashMap paidHash = new HashMap(); + private HashMap paidHash = new HashMap(); // Additional info // is Kicked, is Buyback + + // Triggers + private HashMap triggeringObjects = new HashMap(); + public SpellAbility_StackInstance(SpellAbility sa){ // Base SA info ability = sa; @@ -56,7 +60,7 @@ public class SpellAbility_StackInstance { } // Triggering info - + triggeringObjects = sa.getTriggeringObjects(); Ability_Sub subAb = ability.getSubAbility(); if (subAb != null) @@ -78,6 +82,9 @@ public class SpellAbility_StackInstance { ability.setPaidHash(paidHash); ability.getSourceCard().setXManaCostPaid(xManaPaid); + // Triggered + ability.setAllTriggeringObjects(triggeringObjects); + return ability; } diff --git a/src/forge/card/trigger/Trigger.java b/src/forge/card/trigger/Trigger.java index 35e9999bfd9..a36b1d89e45 100644 --- a/src/forge/card/trigger/Trigger.java +++ b/src/forge/card/trigger/Trigger.java @@ -64,6 +64,14 @@ public abstract class Trigger { overridingAbility = sa; } + private HashMap storedTriggeredObjects = null; + public void setStoredTriggeredObjects(HashMap storedTriggeredObjects) { + this.storedTriggeredObjects = storedTriggeredObjects; + } + public HashMap getStoredTriggeredObjects() { + return storedTriggeredObjects; + } + protected Card hostCard; public Card getHostCard() { @@ -391,5 +399,5 @@ public abstract class Trigger { public abstract Trigger getCopy(); - public abstract void setTriggeringObjects(Card c); + public abstract void setTriggeringObjects(SpellAbility sa); } diff --git a/src/forge/card/trigger/TriggerHandler.java b/src/forge/card/trigger/TriggerHandler.java index b31835d3c31..3c61c8de8e2 100644 --- a/src/forge/card/trigger/TriggerHandler.java +++ b/src/forge/card/trigger/TriggerHandler.java @@ -373,7 +373,9 @@ public class TriggerHandler { } } sa[0].setTrigger(true); - regtrig.setTriggeringObjects(host); + regtrig.setTriggeringObjects(sa[0]); + if (regtrig.getStoredTriggeredObjects() != null) + sa[0].setAllTriggeringObjects(regtrig.getStoredTriggeredObjects()); sa[0].setActivatingPlayer(host.getController()); if(sa[0].getStackDescription().equals("")) @@ -401,31 +403,68 @@ public class TriggerHandler { //Yes, it must wrap ALL SpellAbility methods in order to handle possible corner cases. //(The trigger can have a hardcoded OverridingAbility which can make use of any of the methods) final Ability wrapperAbility = new Ability(regtrig.getHostCard(),"0") { - + @Override public void setPaidHash(HashMap hash){ sa[0].setPaidHash(hash); } + @Override public HashMap getPaidHash(){ return sa[0].getPaidHash(); } + @Override public void setPaidList(CardList list, String str){ sa[0].setPaidList(list, str); } + @Override public CardList getPaidList(String str){ return sa[0].getPaidList(str); } + @Override public void addCostToHashList(Card c, String str){ sa[0].addCostToHashList(c, str); } + @Override public void resetPaidHash(){ sa[0].resetPaidHash(); } + + @Override + public HashMap getTriggeringObjects() { + return sa[0].getTriggeringObjects(); + } + + @Override + public void setAllTriggeringObjects(HashMap triggeredObjects) { + sa[0].setAllTriggeringObjects(triggeredObjects); + } + @Override + public void setTriggeringObject(String type,Object o) { + sa[0].setTriggeringObject(type, o); + } + + @Override + public Object getTriggeringObject(String type) + { + return sa[0].getTriggeringObject(type); + } + + @Override + public boolean hasTriggeringObject(String type) + { + return sa[0].hasTriggeringObject(type); + } + + @Override + public void resetTriggeringObjects(){ + sa[0].resetTriggeringObjects(); + } + @Override public boolean canPlay() { @@ -933,7 +972,8 @@ public class TriggerHandler { { String SVarName = regtrig.getMapParams().get("DelayedTrigger"); Trigger deltrig = parseTrigger(regtrig.getHostCard().getSVar(SVarName),regtrig.getHostCard()); - registerDelayedTrigger(deltrig); + deltrig.setStoredTriggeredObjects(this.getTriggeringObjects()); + registerDelayedTrigger(deltrig); } } }; diff --git a/src/forge/card/trigger/Trigger_AttackerBlocked.java b/src/forge/card/trigger/Trigger_AttackerBlocked.java index 011dc0114be..f64d05f1125 100644 --- a/src/forge/card/trigger/Trigger_AttackerBlocked.java +++ b/src/forge/card/trigger/Trigger_AttackerBlocked.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_AttackerBlocked extends Trigger { @@ -44,10 +45,10 @@ public class Trigger_AttackerBlocked extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Attacker",runParams.get("Attacker")); - c.setTriggeringObject("Blocker",runParams.get("Blocker")); - c.setTriggeringObject("NumBlockers", runParams.get("NumBlockers")); + sa.setTriggeringObject("Attacker",runParams.get("Attacker")); + sa.setTriggeringObject("Blocker",runParams.get("Blocker")); + sa.setTriggeringObject("NumBlockers", runParams.get("NumBlockers")); } } diff --git a/src/forge/card/trigger/Trigger_AttackerUnblocked.java b/src/forge/card/trigger/Trigger_AttackerUnblocked.java index bfa56566f08..e58b069e9e9 100644 --- a/src/forge/card/trigger/Trigger_AttackerUnblocked.java +++ b/src/forge/card/trigger/Trigger_AttackerUnblocked.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_AttackerUnblocked extends Trigger { @@ -37,8 +38,8 @@ public class Trigger_AttackerUnblocked extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Attacker",runParams.get("Attacker")); + sa.setTriggeringObject("Attacker",runParams.get("Attacker")); } } diff --git a/src/forge/card/trigger/Trigger_Attacks.java b/src/forge/card/trigger/Trigger_Attacks.java index b8b66dbe52f..1e19c7df69e 100644 --- a/src/forge/card/trigger/Trigger_Attacks.java +++ b/src/forge/card/trigger/Trigger_Attacks.java @@ -4,6 +4,7 @@ import java.util.HashMap; import forge.Card; import forge.CardList; +import forge.card.spellability.SpellAbility; public class Trigger_Attacks extends Trigger { @@ -62,8 +63,8 @@ public class Trigger_Attacks extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Attacker",runParams.get("Attacker")); + sa.setTriggeringObject("Attacker",runParams.get("Attacker")); } } diff --git a/src/forge/card/trigger/Trigger_Blocks.java b/src/forge/card/trigger/Trigger_Blocks.java index eff660717f3..612d1cec215 100644 --- a/src/forge/card/trigger/Trigger_Blocks.java +++ b/src/forge/card/trigger/Trigger_Blocks.java @@ -2,6 +2,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; @@ -45,9 +46,9 @@ public class Trigger_Blocks extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Blocker",runParams.get("Blocker")); - c.setTriggeringObject("Attacker",runParams.get("Attacker")); + sa.setTriggeringObject("Blocker",runParams.get("Blocker")); + sa.setTriggeringObject("Attacker",runParams.get("Attacker")); } } diff --git a/src/forge/card/trigger/Trigger_ChangesZone.java b/src/forge/card/trigger/Trigger_ChangesZone.java index 82bc8ed0584..5750d9c1cc9 100644 --- a/src/forge/card/trigger/Trigger_ChangesZone.java +++ b/src/forge/card/trigger/Trigger_ChangesZone.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_ChangesZone extends Trigger { @@ -65,8 +66,8 @@ public class Trigger_ChangesZone extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } } diff --git a/src/forge/card/trigger/Trigger_Clashed.java b/src/forge/card/trigger/Trigger_Clashed.java index b82a86a2840..5f7c2909af7 100644 --- a/src/forge/card/trigger/Trigger_Clashed.java +++ b/src/forge/card/trigger/Trigger_Clashed.java @@ -1,6 +1,7 @@ package forge.card.trigger; import forge.Card; +import forge.card.spellability.SpellAbility; import java.util.HashMap; @@ -51,7 +52,7 @@ public class Trigger_Clashed extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { //No triggered-variables for you :( } diff --git a/src/forge/card/trigger/Trigger_CounterAdded.java b/src/forge/card/trigger/Trigger_CounterAdded.java index 8277d727dd2..6704cc866c6 100644 --- a/src/forge/card/trigger/Trigger_CounterAdded.java +++ b/src/forge/card/trigger/Trigger_CounterAdded.java @@ -4,6 +4,7 @@ import java.util.HashMap; import forge.Card; import forge.Counters; +import forge.card.spellability.SpellAbility; public class Trigger_CounterAdded extends Trigger { @@ -45,8 +46,8 @@ public class Trigger_CounterAdded extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } } diff --git a/src/forge/card/trigger/Trigger_Cycled.java b/src/forge/card/trigger/Trigger_Cycled.java index d88cdadacdf..cadc7544559 100644 --- a/src/forge/card/trigger/Trigger_Cycled.java +++ b/src/forge/card/trigger/Trigger_Cycled.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Cycled extends Trigger { @@ -24,8 +25,8 @@ public class Trigger_Cycled extends Trigger { } @Override - public void setTriggeringObjects(Card c) { - c.setTriggeringObject("Card",runParams.get("Card")); + public void setTriggeringObjects(SpellAbility sa) { + sa.setTriggeringObject("Card",runParams.get("Card")); } @Override diff --git a/src/forge/card/trigger/Trigger_DamageDone.java b/src/forge/card/trigger/Trigger_DamageDone.java index cd7f1b00dc9..69ef0279a53 100644 --- a/src/forge/card/trigger/Trigger_DamageDone.java +++ b/src/forge/card/trigger/Trigger_DamageDone.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_DamageDone extends Trigger { @@ -103,10 +104,10 @@ public class Trigger_DamageDone extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Source",runParams.get("DamageSource")); - c.setTriggeringObject("Target",runParams.get("DamageTarget")); - c.setTriggeringObject("DamageAmount",runParams.get("DamageAmount")); + sa.setTriggeringObject("Source",runParams.get("DamageSource")); + sa.setTriggeringObject("Target",runParams.get("DamageTarget")); + sa.setTriggeringObject("DamageAmount",runParams.get("DamageAmount")); } } diff --git a/src/forge/card/trigger/Trigger_Discarded.java b/src/forge/card/trigger/Trigger_Discarded.java index 6f9934a9cbf..72122095b6c 100644 --- a/src/forge/card/trigger/Trigger_Discarded.java +++ b/src/forge/card/trigger/Trigger_Discarded.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Discarded extends Trigger { @@ -56,8 +57,8 @@ public class Trigger_Discarded extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } } diff --git a/src/forge/card/trigger/Trigger_Drawn.java b/src/forge/card/trigger/Trigger_Drawn.java index adb2077c6e6..24fbc16d9ec 100644 --- a/src/forge/card/trigger/Trigger_Drawn.java +++ b/src/forge/card/trigger/Trigger_Drawn.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Drawn extends Trigger { @@ -38,8 +39,8 @@ public class Trigger_Drawn extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } } diff --git a/src/forge/card/trigger/Trigger_LandPlayed.java b/src/forge/card/trigger/Trigger_LandPlayed.java index 233ded633a9..81dac983410 100644 --- a/src/forge/card/trigger/Trigger_LandPlayed.java +++ b/src/forge/card/trigger/Trigger_LandPlayed.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_LandPlayed extends Trigger { @@ -28,8 +29,8 @@ public class Trigger_LandPlayed extends Trigger { } @Override - public void setTriggeringObjects(Card c) { - c.setTriggeringObject("Card",runParams.get("Card")); + public void setTriggeringObjects(SpellAbility sa) { + sa.setTriggeringObject("Card",runParams.get("Card")); } @Override diff --git a/src/forge/card/trigger/Trigger_LifeGained.java b/src/forge/card/trigger/Trigger_LifeGained.java index 5af82ada0a7..44fe5c5291f 100644 --- a/src/forge/card/trigger/Trigger_LifeGained.java +++ b/src/forge/card/trigger/Trigger_LifeGained.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_LifeGained extends Trigger { @@ -38,9 +39,9 @@ public class Trigger_LifeGained extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("LifeAmount",runParams.get("LifeAmount")); - c.setTriggeringObject("Player",runParams.get("Player")); + sa.setTriggeringObject("LifeAmount",runParams.get("LifeAmount")); + sa.setTriggeringObject("Player",runParams.get("Player")); } } diff --git a/src/forge/card/trigger/Trigger_LifeLost.java b/src/forge/card/trigger/Trigger_LifeLost.java index 3e078a5241f..0292fcb673f 100644 --- a/src/forge/card/trigger/Trigger_LifeLost.java +++ b/src/forge/card/trigger/Trigger_LifeLost.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_LifeLost extends Trigger { @@ -38,9 +39,9 @@ public class Trigger_LifeLost extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("LifeAmount",runParams.get("LifeAmount")); - c.setTriggeringObject("Player",runParams.get("Player")); + sa.setTriggeringObject("LifeAmount",runParams.get("LifeAmount")); + sa.setTriggeringObject("Player",runParams.get("Player")); } } diff --git a/src/forge/card/trigger/Trigger_Phase.java b/src/forge/card/trigger/Trigger_Phase.java index df6fda43013..782eefdbe1d 100644 --- a/src/forge/card/trigger/Trigger_Phase.java +++ b/src/forge/card/trigger/Trigger_Phase.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Phase extends Trigger { @@ -61,8 +62,8 @@ public class Trigger_Phase extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Player",runParams.get("Player")); + sa.setTriggeringObject("Player",runParams.get("Player")); } } diff --git a/src/forge/card/trigger/Trigger_Sacrificed.java b/src/forge/card/trigger/Trigger_Sacrificed.java index 17ec3add46c..8308c7f2916 100644 --- a/src/forge/card/trigger/Trigger_Sacrificed.java +++ b/src/forge/card/trigger/Trigger_Sacrificed.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Sacrificed extends Trigger { @@ -44,8 +45,8 @@ public class Trigger_Sacrificed extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } } diff --git a/src/forge/card/trigger/Trigger_Shuffled.java b/src/forge/card/trigger/Trigger_Shuffled.java index f42ced3c308..6c0def9d893 100644 --- a/src/forge/card/trigger/Trigger_Shuffled.java +++ b/src/forge/card/trigger/Trigger_Shuffled.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Shuffled extends Trigger{ @@ -38,8 +39,8 @@ public class Trigger_Shuffled extends Trigger{ } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Player",runParams.get("Player")); + sa.setTriggeringObject("Player",runParams.get("Player")); } } diff --git a/src/forge/card/trigger/Trigger_SpellAbilityCast.java b/src/forge/card/trigger/Trigger_SpellAbilityCast.java index ab063c04bb1..1f68956d38c 100644 --- a/src/forge/card/trigger/Trigger_SpellAbilityCast.java +++ b/src/forge/card/trigger/Trigger_SpellAbilityCast.java @@ -166,11 +166,11 @@ public class Trigger_SpellAbilityCast extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",((SpellAbility)runParams.get("CastSA")).getSourceCard()); - c.setTriggeringObject("SpellAbility",runParams.get("CastSA")); - c.setTriggeringObject("Player", runParams.get("Player")); - c.setTriggeringObject("Activator", runParams.get("Activator")); + sa.setTriggeringObject("Card",((SpellAbility)runParams.get("CastSA")).getSourceCard()); + sa.setTriggeringObject("SpellAbility",runParams.get("CastSA")); + sa.setTriggeringObject("Player", runParams.get("Player")); + sa.setTriggeringObject("Activator", runParams.get("Activator")); } } diff --git a/src/forge/card/trigger/Trigger_Taps.java b/src/forge/card/trigger/Trigger_Taps.java index b35e568b8c1..ec61315f80c 100644 --- a/src/forge/card/trigger/Trigger_Taps.java +++ b/src/forge/card/trigger/Trigger_Taps.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Taps extends Trigger { @@ -40,8 +41,8 @@ public class Trigger_Taps extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } } diff --git a/src/forge/card/trigger/Trigger_TapsForMana.java b/src/forge/card/trigger/Trigger_TapsForMana.java index c9655c2dda5..f4c95e6e202 100644 --- a/src/forge/card/trigger/Trigger_TapsForMana.java +++ b/src/forge/card/trigger/Trigger_TapsForMana.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_TapsForMana extends Trigger { @@ -36,9 +37,9 @@ public class Trigger_TapsForMana extends Trigger { } @Override - public void setTriggeringObjects(Card c) { - c.setTriggeringObject("Card", runParams.get("Card")); - c.setTriggeringObject("Player", runParams.get("Player")); - c.setTriggeringObject("Produced", runParams.get("Produced")); + public void setTriggeringObjects(SpellAbility sa) { + sa.setTriggeringObject("Card", runParams.get("Card")); + sa.setTriggeringObject("Player", runParams.get("Player")); + sa.setTriggeringObject("Produced", runParams.get("Produced")); } } diff --git a/src/forge/card/trigger/Trigger_TurnFaceUp.java b/src/forge/card/trigger/Trigger_TurnFaceUp.java index 6d965cef6ec..21b01b7f622 100644 --- a/src/forge/card/trigger/Trigger_TurnFaceUp.java +++ b/src/forge/card/trigger/Trigger_TurnFaceUp.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_TurnFaceUp extends Trigger { @@ -37,8 +38,8 @@ public class Trigger_TurnFaceUp extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } } diff --git a/src/forge/card/trigger/Trigger_Unequip.java b/src/forge/card/trigger/Trigger_Unequip.java index 48ece406e07..709a74daa52 100644 --- a/src/forge/card/trigger/Trigger_Unequip.java +++ b/src/forge/card/trigger/Trigger_Unequip.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Unequip extends Trigger { @@ -43,8 +44,8 @@ public class Trigger_Unequip extends Trigger { } @Override - public void setTriggeringObjects(Card c) { - c.setTriggeringObject("Card", runParams.get("Card")); - c.setTriggeringObject("Equipment", runParams.get("Equipment")); + public void setTriggeringObjects(SpellAbility sa) { + sa.setTriggeringObject("Card", runParams.get("Card")); + sa.setTriggeringObject("Equipment", runParams.get("Equipment")); } } diff --git a/src/forge/card/trigger/Trigger_Untaps.java b/src/forge/card/trigger/Trigger_Untaps.java index 6378eeaa115..ca07a5a38e7 100644 --- a/src/forge/card/trigger/Trigger_Untaps.java +++ b/src/forge/card/trigger/Trigger_Untaps.java @@ -3,6 +3,7 @@ package forge.card.trigger; import java.util.HashMap; import forge.Card; +import forge.card.spellability.SpellAbility; public class Trigger_Untaps extends Trigger { @@ -40,9 +41,9 @@ public class Trigger_Untaps extends Trigger { } @Override - public void setTriggeringObjects(Card c) + public void setTriggeringObjects(SpellAbility sa) { - c.setTriggeringObject("Card",runParams.get("Card")); + sa.setTriggeringObject("Card",runParams.get("Card")); } }