diff --git a/res/cards.txt b/res/cards.txt index ad8980f87a9..388250ffcd1 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,8 @@ +Rampant Growth +1 G +Sorcery +no text + Kor Firewalker W W Creature Kor Soldier diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index ed149cad049..7c5806c2298 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -17620,6 +17620,83 @@ public class CardFactory implements NewConstants { card.addSpellAbility(spell); } //*************** END ************ END ************************** + //*************** START *********** START ************************** + else if(cardName.equals("Rampant Growth")) { + SpellAbility spell = new Spell(card) { + + private static final long serialVersionUID = -6598323179507468746L; + + @Override + public void resolve() { + String player = card.getController(); + + if(player.equals(Constant.Player.Human)) humanResolve(); + else computerResolve(); + } + + public void computerResolve() { + CardList land = new CardList(AllZone.Computer_Library.getCards()); + land = land.getType("Basic"); + + //just to make the computer a little less predictable + land.shuffle(); + + //3 branches: 1-no land in deck, 2-one land in deck, 3-two or more land in deck + if(land.size() != 0) { + //branch 2 - at least 1 land in library + Card tapped = land.remove(0); + tapped.tap(); + + AllZone.Computer_Play.add(tapped); + AllZone.Computer_Library.remove(tapped); + + //branch 3 + if(land.size() != 0) { + Card toHand = land.remove(0); + AllZone.Computer_Hand.add(toHand); + AllZone.Computer_Library.remove(toHand); + } + } + }//computerResolve() + + public void humanResolve() { + PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController()); + PlayerZone library = AllZone.getZone(Constant.Zone.Library, card.getController()); + + CardList list = new CardList(library.getCards()); + list = list.getType("Basic"); + + //3 branches: 1-no land in deck, 2-one land in deck, 3-two or more land in deck + + //branch 1 + if(list.size() == 0) return; + + //branch 2 + Object o = AllZone.Display.getChoiceOptional("Put into play tapped", list.toArray()); + if(o != null) { + Card c = (Card) o; + c.tap(); + list.remove(c); + + library.remove(c); + play.add(c); + + AllZone.GameAction.shuffle(card.getController()); + }//if + }//resolve() + + public boolean canPlayAI() + { + PlayerZone library = AllZone.getZone(Constant.Zone.Library, Constant.Player.Computer); + CardList list = new CardList(library.getCards()); + list = list.getType("Basic"); + return list.size() > 0; + } + };//SpellAbility + card.clearSpellAbility(); + card.addSpellAbility(spell); + }//*************** END ************ END ************************** + // Cards with Cycling abilities // -1 means keyword "Cycling" not found if(hasKeyword(card, "Cycling") != -1) {