From a56f87494bf91ccd58fdc0867d7fd8d9917ebb5b Mon Sep 17 00:00:00 2001 From: Sloth Date: Sat, 8 Sep 2012 19:27:36 +0000 Subject: [PATCH] - Fixed the Epic keyword. --- .../card/abilityfactory/AbilityFactory.java | 4 ++ .../card/cardfactory/CardFactoryUtil.java | 58 ++++++++++--------- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index e77654c2879..bbb50577c31 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -2228,6 +2228,10 @@ public class AbilityFactory { for (final Card imp : card.getImprinted()) { sas.addAll(imp.getSpellAbilities()); } + } else if (defined.equals("EffectSource") ) { + if (card.getEffectSource() != null) { + sas.addAll(card.getEffectSource().getSpellAbilities()); + } } else if (defined.equals("Imprinted.doesNotShareNameWith+TriggeredCard+Exiled")) { //get Imprinted list ArrayList imprintedCards = new ArrayList(); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index da9e8310b07..5fc8b650e70 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -4720,33 +4720,37 @@ public class CardFactoryUtil { @Override public void resolve() { - // Create Epic emblem - final Card eff = new Card(); - eff.setName(card.toString() + " Epic"); - eff.addType("Effect"); // Or Emblem - eff.setToken(true); // Set token to true, so when leaving - // play it gets nuked - eff.addController(card.getController()); - eff.setOwner(card.getController()); - eff.setImageName(card.getImageName()); - eff.setColor(card.getColor()); - eff.setImmutable(true); - - eff.addStaticAbility("Mode$ CantBeCast | ValidCard$ Card | Caster$ You " - + "| Description$ For the rest of the game, you can't cast spells."); - - final Trigger copyTrigger = forge.card.trigger.TriggerHandler.parseTrigger( - "Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerDescription$ " - + "At the beginning of each of your upkeeps, copy " + card.toString() - + " except for its epic ability.", card, false); - - copyTrigger.setOverridingAbility(origSA); - - eff.addTrigger(copyTrigger); - - AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); - Singletons.getModel().getGameAction().moveToPlay(eff); - AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + String name = card.toString() + " Epic"; + if (card.getController().getCardsIn(ZoneType.Battlefield, name).isEmpty()) { + // Create Epic emblem + final Card eff = new Card(); + eff.setName(card.toString() + " Epic"); + eff.addType("Effect"); // Or Emblem + eff.setToken(true); // Set token to true, so when leaving + // play it gets nuked + eff.addController(card.getController()); + eff.setOwner(card.getController()); + eff.setImageName(card.getImageName()); + eff.setColor(card.getColor()); + eff.setImmutable(true); + eff.setEffectSource(card); + + eff.addStaticAbility("Mode$ CantBeCast | ValidCard$ Card | Caster$ You " + + "| Description$ For the rest of the game, you can't cast spells."); + + eff.setSVar("EpicCopy", "AB$ CopySpell | Cost$ 0 | Defined$ EffectSource"); + + final Trigger copyTrigger = forge.card.trigger.TriggerHandler.parseTrigger( + "Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ EpicCopy | TriggerDescription$ " + + "At the beginning of each of your upkeeps, copy " + card.toString() + + " except for its epic ability.", eff, false); + + eff.addTrigger(copyTrigger); + + AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); + Singletons.getModel().getGameAction().moveToPlay(eff); + AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + } if (card.getController().isHuman()) { Singletons.getModel().getGameAction().playSpellAbilityNoStack(origSA, false);