From e7dc12abe58026405bef48c731f1adfb10f6636c Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 04:11:16 +0000 Subject: [PATCH] 1) Added a new keyword "When CARDNAME enters the battlefield, tap enchanted creature.". It is limited in use at this time and can only be used with cards in the code block for Roots and other similar cards. 2) Modified the card object for Entangling Vines and Glimmerdust Nap. Added: Melancholy Mystic Restraints Roots Thirst via the changes that were made to this card object. 3) Added the LQ pic urls. --- res/card-pictures.txt | 4 ++ res/cards.txt | 31 ++++++++++++++ src/forge/CardFactory_Auras.java | 70 ++++++++++++++++++++++++++++---- 3 files changed, 98 insertions(+), 7 deletions(-) diff --git a/res/card-pictures.txt b/res/card-pictures.txt index b2dc1fa7add..d6d797cf8ef 100644 --- a/res/card-pictures.txt +++ b/res/card-pictures.txt @@ -38,6 +38,10 @@ snow_covered_mountain.jpg http://www.wizards.com/global/images/magic/gene snow_covered_mountain1.jpg http://www.wizards.com/global/images/magic/general/snow_covered_mountain.jpg snow_covered_mountain2.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg snow_covered_mountain3.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg +melancholy.jpg http://www.wizards.com/global/images/magic/general/melancholy.jpg +mystic_restraints.jpg http://www.wizards.com/global/images/magic/general/mystic_restraints.jpg +roots.jpg http://www.wizards.com/global/images/magic/general/roots.jpg +thirst.jpg http://www.wizards.com/global/images/magic/general/thirst.jpg eldrazi_conscription.jpg http://www.wizards.com/global/images/magic/general/eldrazi_conscription.jpg brood_birthing.jpg http://www.wizards.com/global/images/magic/general/brood_birthing.jpg skittering_invasion.jpg http://www.wizards.com/global/images/magic/general/skittering_invasion.jpg diff --git a/res/cards.txt b/res/cards.txt index 92e54fdbe73..fef15c521f4 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,34 @@ +Melancholy +2 B +Enchantment Aura +Enchanted creature doesn't untap during its controller's untap step. +Enchant creature +At the beginning of your upkeep, sacrifice Melancholy unless you pay:B +When CARDNAME enters the battlefield, tap enchanted creature. + +Mystic Restraints +2 U U +Enchantment Aura +Enchanted creature doesn't untap during its controller's untap step. +Flash +Enchant creature +When CARDNAME enters the battlefield, tap enchanted creature. + +Roots +3 G +Enchantment Aura +Enchanted creature doesn't untap during its controller's untap step. +Enchant creature without flying +When CARDNAME enters the battlefield, tap enchanted creature. + +Thirst +2 U +Enchantment Aura +Enchanted creature doesn't untap during its controller's untap step. +Enchant creature +At the beginning of your upkeep, sacrifice Thirst unless you pay:U +When CARDNAME enters the battlefield, tap enchanted creature. + Death Cultist B Creature Human Wizard diff --git a/src/forge/CardFactory_Auras.java b/src/forge/CardFactory_Auras.java index 32948a90cd3..95ca7b29c8f 100644 --- a/src/forge/CardFactory_Auras.java +++ b/src/forge/CardFactory_Auras.java @@ -1253,10 +1253,24 @@ class CardFactory_Auras { }//*************** END ************ END ************************** //*************** START *********** START ************************** - else if (cardName.equals("Entangling Vines") || cardName.equals("Glimmerdust Nap")) { + else if (cardName.equals("Entangling Vines") || cardName.equals("Glimmerdust Nap") || + cardName.equals("Melancholy") || cardName.equals("Mystic Restraints") || + cardName.equals("Roots") || cardName.equals("Thirst")) { final SpellAbility spell = new Spell(card) { private static final long serialVersionUID = 843412563175285562L; + + // for flash, which is not working through the keyword for some reason + // if not flash then limit to main 1 and 2 on controller's turn and card in hand + @Override + public boolean canPlay() { + return (card.getKeyword().contains("Flash") && (AllZone.GameAction.isCardInZone(card, AllZone.Human_Hand) || + AllZone.GameAction.isCardInZone(card, AllZone.Computer_Hand)) + || + (! card.getKeyword().contains("Flash") && (card.getController().equals(AllZone.Phase.getActivePlayer()) && + (AllZone.GameAction.isCardInZone(card, AllZone.Human_Hand) || AllZone.GameAction.isCardInZone(card, AllZone.Computer_Hand)) && + (AllZone.Phase.getPhase().equals(Constant.Phase.Main1) || AllZone.Phase.getPhase().equals(Constant.Phase.Main2))))); + } @Override public boolean canPlayAI() { @@ -1264,16 +1278,34 @@ class CardFactory_Auras { CardList list = new CardList(AllZone.Human_Play.getCards()); // Target human creature list = list.filter(new CardListFilter() { public boolean addCard(Card c) { - return c.isCreature() && c.isTapped() && CardFactoryUtil.canTarget(card, c) && + return c.isCreature() && CardFactoryUtil.canTarget(card, c) && !c.getKeyword().contains("CARDNAME doesn't untap during your untap step."); } }); + + if (card.getKeyword().contains("Enchant tapped creature")) { + list = list.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.isTapped(); + } + }); + } + + if (card.getKeyword().contains("Enchant creature without flying")) { + list = list.filter(new CardListFilter() { + public boolean addCard(Card c) { + return ! c.getKeyword().contains("Flying"); + } + }); + } if (list.isEmpty()) { return false; } else { CardListUtil.sortAttack(list); - CardListUtil.sortFlying(list); + if (! card.getKeyword().contains("Enchant creature without flying")) { + CardListUtil.sortFlying(list); + } setTargetCard(list.get(0)); } return true; @@ -1286,8 +1318,12 @@ class CardFactory_Auras { Card c = getTargetCard(); - if (AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) card.enchantCard(c); - + if (AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) { + if (card.getKeyword().contains("When CARDNAME enters the battlefield, tap enchanted creature.")) { + c.tap(); + } + card.enchantCard(c); + } }//resolve() };//SpellAbility card.clearSpellAbility(); @@ -1340,11 +1376,31 @@ class CardFactory_Auras { creatures.addAll(hum.getCards()); creatures = creatures.filter(new CardListFilter() { public boolean addCard(Card c) { - return c.isCreature() && c.isTapped() && CardFactoryUtil.canTarget(card, c); + return c.isCreature() && CardFactoryUtil.canTarget(card, c); } }); - stopSetNext(CardFactoryUtil.input_targetSpecific(spell, creatures, "Select target tapped creature", true, false)); + String instruction = "Select target creature"; + + if (card.getKeyword().contains("Enchant tapped creature")) { + instruction = "Select target tapped creature"; + creatures = creatures.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.isTapped(); + } + }); + } + + if (card.getKeyword().contains("Enchant creature without flying")) { + instruction = "Select target creature without flying"; + creatures = creatures.filter(new CardListFilter() { + public boolean addCard(Card c) { + return ! c.getKeyword().contains("Flying"); + } + }); + } + + stopSetNext(CardFactoryUtil.input_targetSpecific(spell, creatures, instruction, true, false)); } }; card.addEnchantCommand(onEnchant);