From fa9f00ca500f2ecce103e210322cd161fed826e1 Mon Sep 17 00:00:00 2001 From: Sloth Date: Fri, 27 Jan 2012 19:06:02 +0000 Subject: [PATCH] - Added "ClearTriggered" parameter to AF CleanUp. - Added Shirei, Shizo's Caretaker by marc. --- .gitattributes | 1 + res/cardsfolder/s/shirei_shizos_caretaker.txt | 15 +++++++++++++++ .../abilityfactory/AbilityFactoryCleanup.java | 4 ++++ .../forge/card/trigger/TriggerHandler.java | 18 ++++++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 res/cardsfolder/s/shirei_shizos_caretaker.txt diff --git a/.gitattributes b/.gitattributes index 4fb61527acb..c1d60e2c382 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7663,6 +7663,7 @@ res/cardsfolder/s/shinen_of_stars_light.txt svneol=native#text/plain res/cardsfolder/s/shinewend.txt svneol=native#text/plain res/cardsfolder/s/shinka_gatekeeper.txt svneol=native#text/plain res/cardsfolder/s/shinka_the_bloodsoaked_keep.txt svneol=native#text/plain +res/cardsfolder/s/shirei_shizos_caretaker.txt -text res/cardsfolder/s/shivan_dragon.txt svneol=native#text/plain res/cardsfolder/s/shivan_emissary.txt svneol=native#text/plain res/cardsfolder/s/shivan_gorge.txt svneol=native#text/plain diff --git a/res/cardsfolder/s/shirei_shizos_caretaker.txt b/res/cardsfolder/s/shirei_shizos_caretaker.txt new file mode 100644 index 00000000000..31f07a3bacc --- /dev/null +++ b/res/cardsfolder/s/shirei_shizos_caretaker.txt @@ -0,0 +1,15 @@ +Name:Shirei, Shizo's Caretaker +ManaCost:4 B +Types:Legendary Creature Spirit +Text:no text +PT:2/2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | ValidCard$ Creature.powerLE1+YouOwn | OptionalDecider$ You | DelayedTrigger$ DelTrig | TriggerDescription$ Whenever a creature with power 1 or less is put into your graveyard from the battlefield, you may return that card to the battlefield under your control at the beginning of the next end step if CARDNAME is still on the battlefield. +SVar:DelTrig:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigReturn | IsPresent$ Card.Self | PresentZone$ Battlefield | TriggerDescription$ Return creature to the battlefield. +SVar:TrigReturn:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Battlefield | Defined$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Static$ True | Execute$ DBCleanup +SVar:DBCleanup:DB$Cleanup | ClearTriggered$ True +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/shirei_shizos_caretaker.jpg +SetInfo:BOK|Rare|http://magiccards.info/scans/en/bok/81.jpg +Oracle:Whenever a creature with power 1 or less is put into your graveyard from the battlefield, you may return that card to the battlefield under your control at the beginning of the next end step if Shirei, Shizo's Caretaker is still on the battlefield. +End \ No newline at end of file diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java index d95664fe55e..487b6d313c8 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java @@ -19,6 +19,7 @@ package forge.card.abilityfactory; import java.util.HashMap; +import forge.AllZone; import forge.card.spellability.AbilitySub; import forge.card.spellability.SpellAbility; @@ -94,6 +95,9 @@ public final class AbilityFactoryCleanup { if (params.containsKey("ClearChosenX")) { sa.getSourceCard().setSVar("ChosenX", ""); } + if (params.containsKey("ClearTriggered")) { + AllZone.getTriggerHandler().clearDelayedTrigger(sa.getSourceCard()); + } } } // end class AbilityFactory_Cleanup diff --git a/src/main/java/forge/card/trigger/TriggerHandler.java b/src/main/java/forge/card/trigger/TriggerHandler.java index 5ac69dc0408..9c44366f984 100644 --- a/src/main/java/forge/card/trigger/TriggerHandler.java +++ b/src/main/java/forge/card/trigger/TriggerHandler.java @@ -101,6 +101,24 @@ public class TriggerHandler { public final void clearDelayedTrigger() { this.delayedTriggers.clear(); } + + /** + *

+ * clearDelayedTrigger. + *

+ * @param card + * a card object. + */ + public final void clearDelayedTrigger(Card card) { + ArrayList deltrigs = new ArrayList(this.delayedTriggers); + + for (Trigger trigger : deltrigs) { + if (trigger.getHostCard().equals(card)) { + this.delayedTriggers.remove(trigger); + } + } + } + /** *