diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 6a15ac9a4d5..2e293a967de 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -3909,6 +3909,10 @@ public class Card extends GameEntity implements Comparable { if (equals(source)) { return false; } + } else if (property.startsWith("StrictlySelf")) { + if (!equals(source) || getTimestamp() != source.getTimestamp()) { + return false; + } } else if (property.startsWith("Self")) { if (!equals(source)) { return false; diff --git a/forge-gui/res/cardsfolder/a/aunties_snitch.txt b/forge-gui/res/cardsfolder/a/aunties_snitch.txt index c5e5f8170cd..e47482e572c 100644 --- a/forge-gui/res/cardsfolder/a/aunties_snitch.txt +++ b/forge-gui/res/cardsfolder/a/aunties_snitch.txt @@ -4,7 +4,7 @@ Types:Creature Goblin Rogue PT:3/1 K:CARDNAME can't block. SVar:AltCost:Cost$ 1 B | Activation$ ProwlGoblin | Description$ Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.) -T:Mode$ DamageDone | ValidSource$ Goblin.YouCtrl,Rogue.YouCtrl | TriggerZones$ Graveyard | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ Whenever a Goblin or Rogue you control deals combat damage to a player, if CARDNAME is in your graveyard, you may return CARDNAME to your hand. +T:Mode$ DamageDone | ValidSource$ Goblin.YouCtrl,Rogue.YouCtrl | TriggerZones$ Graveyard | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ Whenever a Goblin or Rogue you control deals combat damage to a player, if CARDNAME is in your graveyard, you may return CARDNAME to your hand. SVar:TrigChange:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Hand | Defined$ Self SVar:Picture:http://www.wizards.com/global/images/magic/general/aunties_snitch.jpg Oracle:Auntie's Snitch can't block.\nProwl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.)\nWhenever a Goblin or Rogue you control deals combat damage to a player, if Auntie's Snitch is in your graveyard, you may return Auntie's Snitch to your hand. diff --git a/forge-gui/res/cardsfolder/f/firemane_angel.txt b/forge-gui/res/cardsfolder/f/firemane_angel.txt index b97079845d2..6a0b340b8e5 100644 --- a/forge-gui/res/cardsfolder/f/firemane_angel.txt +++ b/forge-gui/res/cardsfolder/f/firemane_angel.txt @@ -4,7 +4,8 @@ Types:Creature Angel PT:4/3 K:Flying K:First Strike -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield,Graveyard | OptionalDecider$ You | Execute$ TrigGainLife | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard or on the battlefield, you may gain 1 life. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self | PresentZone$ Battlefield | OptionalDecider$ You | Execute$ TrigGainLife | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard or on the battlefield, you may gain 1 life. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Graveyard | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | OptionalDecider$ You | Secondary$ True | Execute$ TrigGainLife | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard or on the battlefield, you may gain 1 life. A:AB$ ChangeZone | Cost$ 6 R R W W | Origin$ Graveyard | Destination$ Battlefield | ActivationZone$ Graveyard | PlayerTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ Return CARDNAME from your graveyard to the battlefield. Activate this ability only during your upkeep. SVar:TrigGainLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/firemane_angel.jpg diff --git a/forge-gui/res/cardsfolder/t/tree_of_redemption.txt b/forge-gui/res/cardsfolder/t/tree_of_redemption.txt index 19bd96b29e2..7052103a185 100644 --- a/forge-gui/res/cardsfolder/t/tree_of_redemption.txt +++ b/forge-gui/res/cardsfolder/t/tree_of_redemption.txt @@ -3,9 +3,9 @@ ManaCost:3 G Types:Creature Plant PT:0/13 K:Defender -A:AB$ StoreSVar | Cost$ T | SVar$ OldToughness | Type$ Count | Expression$ CardToughness | SubAbility$ TreeRedemption | ConditionPresent$ Card.Self | SpellDescription$ Exchange your life total with CARDNAME's toughness. | StackDescription$ Exchange your life total with CARDNAME's toughness. -SVar:TreeRedemption:DB$ Animate | Toughness$ X | References$ X | Permanent$ True | SubAbility$ SetLife | ConditionPresent$ Card.Self -SVar:SetLife:DB$ SetLife | Defined$ You | LifeAmount$ OldToughness | References$ OldToughness | ConditionPresent$ Card.Self +A:AB$ StoreSVar | Cost$ T | SVar$ OldToughness | Type$ Count | Expression$ CardToughness | SubAbility$ TreeRedemption | ConditionPresent$ Card.StrictlySelf | StackDescription$ SpellDescription | SpellDescription$ Exchange your life total with CARDNAME's toughness. +SVar:TreeRedemption:DB$ Animate | Toughness$ X | References$ X | Permanent$ True | SubAbility$ SetLife | ConditionPresent$ Card.StrictlySelf +SVar:SetLife:DB$ SetLife | Defined$ You | LifeAmount$ OldToughness | References$ OldToughness | ConditionPresent$ Card.StrictlySelf SVar:OldToughness:Number$13 SVar:X:Count$YourLifeTotal SVar:Picture:http://www.wizards.com/global/images/magic/general/tree_of_redemption.jpg diff --git a/forge-gui/res/cardsfolder/v/vengeful_pharaoh.txt b/forge-gui/res/cardsfolder/v/vengeful_pharaoh.txt index 301cb8582ad..c59c834e497 100644 --- a/forge-gui/res/cardsfolder/v/vengeful_pharaoh.txt +++ b/forge-gui/res/cardsfolder/v/vengeful_pharaoh.txt @@ -3,7 +3,10 @@ ManaCost:2 B B B Types:Creature Zombie PT:5/4 K:Deathtouch -T:Mode$ CombatDamageDoneOnce | ValidTarget$ You,Planeswalker.YouCtrl | ValidSource$ Card | TriggerZones$ Graveyard | Execute$ TrigDestroy | TriggerDescription$ Whenever combat damage is dealt to you or a planeswalker you control, if CARDNAME is in your graveyard, destroy target attacking creature, then put CARDNAME on top of your library. +T:Mode$ CombatDamageDoneOnce | ValidTarget$ You | ValidSource$ Card | TriggerZones$ Graveyard | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | Execute$ TrigDestroy | TriggerDescription$ Whenever combat damage is dealt to you or a planeswalker you control, if CARDNAME is in your graveyard, destroy target attacking creature, then put CARDNAME on top of your library. + +T:Mode$ DamageDone | ValidTarget$ Planeswalker.YouCtrl | ValidSource$ Card | TriggerZones$ Graveyard | IsPresent$ Card.Self | PresentZone$ Graveyard | Execute$ TrigDestroy | Secondary$ True | CombatDamage$ True | TriggerDescription$ Whenever combat damage is dealt to you or a planeswalker you control, if CARDNAME is in your graveyard, destroy target attacking creature, then put CARDNAME on top of your library. + SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature | SubAbility$ DBReturn SVar:DBReturn:DB$ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Library SVar:DiscardMe:4