From f739006170826717c6850e74a91a1658ae974c09 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 05:22:00 +0000 Subject: [PATCH] - Added Yavimaya Elder. --- res/cards.txt | 6 +++ src/forge/CardFactory_Creatures.java | 68 ++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/res/cards.txt b/res/cards.txt index 15d5819d849..17b54454240 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,9 @@ +Yavimaya Elder +1 G G +Creature Human Druid +When Yavimaya Elder is put into a graveyard from the battlefield, you may search your library for up to two basic land cards, reveal them, and put them into your hand. If you do, shuffle your library. +2/1 + Scavenger Drake 3 B Creature Drake diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index 9ae51315363..ac58dc04f47 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -20631,6 +20631,74 @@ public class CardFactory_Creatures { }//*************** END ************ END ************************** + if (cardName.equals("Yavimaya Elder")) + { + final SpellAbility ability = new Ability(card, "2") { + @Override + public boolean canPlay() { + return AllZone.GameAction.isCardInPlay(card) + && !AllZone.Stack.getSourceCards().contains(card);//in play and not already activated(Sac cost problems) + } + + @Override + public boolean canPlayAI() { + return (AllZone.Computer_Hand.size() < 3) && (AllZone.Computer_Library.size() > 0) + && MyRandom.random.nextBoolean(); + } + + @Override + public void resolve() { + //if (card.getController().equals(Constant.Player.Computer)) + //for now, sac happens during resolution: + AllZone.GameAction.sacrifice(getSourceCard()); + AllZone.GameAction.drawCard(card.getController()); + } + }; + ability.setDescription("2, Sacrifice " + card.getName() + ": Draw a card."); + ability.setStackDescription(card.getName() + " - Draw a card."); + + final Command destroy = new Command() + { + private static final long serialVersionUID = -5552202665064265632L; + + public void execute() + { + AllZone.GameAction.searchLibraryTwoBasicLand(card.getController(), Constant.Zone.Hand, false, Constant.Zone.Hand, false); + } + }; + + /* + Input runtime = new Input() { + + private static final long serialVersionUID = -4361362367624073190L; + boolean once = true; + + @Override + public void showMessage() { + //this is necessary in order not to have a StackOverflowException + //because this updates a card, it creates a circular loop of observers + if(once) { + once = false; + stopSetNext(new Input_PayManaCost(ability)); + AllZone.GameAction.sacrifice(card); + + + //AllZone.Stack.add(ability); + //stop(); + } + }//showMessage() + }; + + ability.setBeforePayMana(runtime); + */ + + card.addSpellAbility(ability); + card.addDestroyCommand(destroy); + + } + //*************** END ************ END ************************** + + // Cards with Cycling abilities // -1 means keyword "Cycling" not found if(shouldCycle(card) != -1) {