diff --git a/res/card-pictures.txt b/res/card-pictures.txt index e3700bc4f89..2710aa62c6e 100644 --- a/res/card-pictures.txt +++ b/res/card-pictures.txt @@ -38,6 +38,7 @@ 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 +rampant_growth.jpg http://www.wizards.com/global/images/magic/general/rampant_growth.jpg kjeldoran_outpost.jpg http://www.wizards.com/global/images/magic/general/kjeldoran_outpost.jpg kor_firewalker.jpg http://www.wizards.com/global/images/magic/general/kor_firewalker.jpg lone_missionary.jpg http://www.wizards.com/global/images/magic/general/lone_missionary.jpg diff --git a/res/cards.txt b/res/cards.txt index bb645aee026..bd75422eb97 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,8 @@ +Funeral Charm +B +Instant +(NOTE: Computer will only use the first ability against you.) + Rampant Growth 1 G Sorcery @@ -17138,11 +17143,6 @@ no text Flying This creature cannot block -Funeral Charm -B -Instant -Choose one - Target player discards a card; or target creature gets +2/-1 until end of turn; or target creature gains swampwalk until end of turn. - Echoing Decay 1 B Instant diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index a577c731a92..b9315fc81d0 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -10290,53 +10290,45 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** - else if(cardName.equals("Funeral Charm")) { + else if (cardName.equals("Funeral Charm")) { + //discard final SpellAbility spell_one = new Spell(card) { private static final long serialVersionUID = 8273875515630095127L; @Override public boolean canPlayAI() { + setTargetPlayer(Constant.Player.Human); - return MyRandom.random.nextBoolean(); + PlayerZone humanHand = AllZone.getZone(Constant.Zone.Hand, Constant.Player.Human); + + return (humanHand.size() >= 1); } @Override public void resolve() { - if(Constant.Player.Computer.equals(getTargetPlayer())) AllZone.GameAction.discardRandom(getTargetPlayer()); + if (Constant.Player.Computer.equals(getTargetPlayer())) AllZone.GameAction.discardRandom(getTargetPlayer()); else AllZone.InputControl.setInput(CardFactoryUtil.input_discard()); }//resolve() };//SpellAbility + spell_one.setDescription("Target player discards a card."); spell_one.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spell_one)); - - + //creature gets +2/-1 final SpellAbility spell_two = new Spell(card) { private static final long serialVersionUID = -4554812851052322555L; - @Override public boolean canPlayAI() { - CardList list = new CardList(ComputerUtil.getAttackers().getAttackers()); - list = list.filter(new CardListFilter() { - public boolean addCard(Card c) { - return 1 < c.getNetDefense(); - } - }); - - list.shuffle(); - if(list.size() > 0) setTargetCard(list.get(0)); - - return (list.size() > 0) && MyRandom.random.nextBoolean(); + return false; } - @Override public void resolve() { final Card c = getTargetCard(); - if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) { + if (AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) { c.addTempAttackBoost(2); c.addTempDefenseBoost(-1); @@ -10355,9 +10347,42 @@ public class CardFactory implements NewConstants { spell_two.setDescription("Target creature gets +2/-1 until end of turn."); spell_two.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell_two)); + //creature gets swampwalk + final SpellAbility spell_three = new Spell(card) { + private static final long serialVersionUID = -8455677074284271852L; + + @Override + public boolean canPlayAI() { + return false; + } + + @Override + public void resolve() { + final Card c = getTargetCard(); + + if (AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c) && !c.getKeyword().contains("Swampwalk")) { + c.addExtrinsicKeyword("Swampwalk"); + + Command until = new Command() { + private static final long serialVersionUID = 1452395016805444249L; + + public void execute() { + if (AllZone.GameAction.isCardInPlay(c)) { + c.removeExtrinsicKeyword("Swampwalk"); + } + } + };//Command + AllZone.EndOfTurn.addUntil(until); + }//if card in play? + }//resolve() + };//SpellAbility + spell_three.setDescription("Target creature gains swampwalk until end of turn."); + spell_three.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell_three)); + card.clearSpellAbility(); card.addSpellAbility(spell_one); card.addSpellAbility(spell_two); + card.addSpellAbility(spell_three); }//*************** END ************ END **************************