diff --git a/res/cards.txt b/res/cards.txt index c0d14978b45..2a7392b1582 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,9 @@ +Fear +B B +Enchantment Aura +Enchanted creature has fear. +Enchant creature + Fire-Field Ogre 1 U B R Creature Ogre Mutant @@ -9521,13 +9527,6 @@ Enchanted creature has shroud. Enchant creature enPump:Shroud -Fear -B B -Enchantment Aura -Enchanted creature has fear. -Enchant creature -enPump:Fear - Battle Mastery 2 W Enchantment Aura diff --git a/src/forge/CardFactory_Auras.java b/src/forge/CardFactory_Auras.java index 6d2302df2a4..b5642ed2930 100644 --- a/src/forge/CardFactory_Auras.java +++ b/src/forge/CardFactory_Auras.java @@ -1263,6 +1263,123 @@ class CardFactory_Auras { spell.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell)); }//*************** END ************ END ************************** + //************************************************************** + // This card can't be converted to keyword, problem with Fear * + //*************** START *********** START ********************** + else if (cardName.equals("Fear")) { + final SpellAbility spell = new Spell(card) { + private static final long serialVersionUID = -6430665444443363057L; + + @Override + public boolean canPlayAI() { + CardList list = new CardList(AllZone.Computer_Play.getCards()); + list = list.getType("Creature"); + + if (list.isEmpty()) return false; + + //else (is there a Rabid Wombat or a Uril, the Miststalker to target?) + + CardList auraMagnetList = new CardList(AllZone.Computer_Play.getCards()); + auraMagnetList = auraMagnetList.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.isCreature() && (c.getName().equals("Rabid Wombat") || c.getName().equals("Uril, the Miststalker")); + } + }); + if (! auraMagnetList.isEmpty()) { // AI has a special target creature(s) to enchant + auraMagnetList.shuffle(); + for (int i = 0; i < auraMagnetList.size(); i++) { + if (CardFactoryUtil.canTarget(card, auraMagnetList.get(i))) { + setTargetCard(auraMagnetList.get(i)); // Target only Rabid Wombat or Uril, the Miststalker + return true; + } + } + } + + /* + * else target another creature + * Do not enchant card with Defender or Fear or enchant card already enchanted + */ + CardListUtil.sortAttack(list); + CardListUtil.sortFlying(list); + + for (int i = 0; i < list.size(); i++) { + if (CardFactoryUtil.canTarget(card, list.get(i)) && + !list.get(i).getKeyword().contains("Fear") && + !list.get(i).getKeyword().contains("Defender") && + !list.get(i).isEnchanted()) { + setTargetCard(list.get(i)); + return true; + } + } + + return false; + }//canPlayAI() + + @Override + public void resolve() { + PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController()); + play.add(card); + + Card c = getTargetCard(); + + if (AllZone.GameAction.isCardInPlay(c) && + CardFactoryUtil.canTarget(card, c)) { + card.enchantCard(c); + System.out.println("Enchanted: " + getTargetCard()); + } + }//resolve() + };//SpellAbility + card.clearSpellAbility(); + card.addSpellAbility(spell); + + Command onEnchant = new Command() { + + private static final long serialVersionUID = 2754287307356877714L; + + public void execute() { + if (card.isEnchanting()) { + Card crd = card.getEnchanting().get(0); + if (!crd.getIntrinsicKeyword().contains("Fear")) { + crd.addExtrinsicKeyword("Fear"); + } + } + }//execute() + };//Command + + + Command onUnEnchant = new Command() { + + private static final long serialVersionUID = 2007362030422979630L; + + public void execute() { + if(card.isEnchanting()) { + Card crd = card.getEnchanting().get(0); + + crd.removeExtrinsicKeyword("Fear"); + } + + }//execute() + };//Command + + Command onLeavesPlay = new Command() { + + private static final long serialVersionUID = -8020540432500093584L; + + public void execute() { + if (card.isEnchanting()) { + Card crd = card.getEnchanting().get(0); + card.unEnchantCard(crd); + } + }//execute() + };//Command + + card.addEnchantCommand(onEnchant); + card.addUnEnchantCommand(onUnEnchant); + card.addLeavesPlayCommand(onLeavesPlay); + + spell.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell)); + }//*************** END ************ END ************************** + //*************** START *********** START ************************** else if (cardName.equals("Entangling Vines") || cardName.equals("Glimmerdust Nap") || cardName.equals("Melancholy") || cardName.equals("Mystic Restraints") ||