From ed9f229635b0ccd45669328177d46b0c89e500cb Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 04:53:26 +0000 Subject: [PATCH] Added Oracle of Mul Daya --- res/card-pictures.txt | 1 + res/cards.txt | 7 +++++ src/forge/CardFactoryUtil.java | 6 ++-- src/forge/CardFactory_Creatures.java | 42 ++++++++++++++++++++++++- src/forge/PlayerZone_ComesIntoPlay.java | 6 ++++ 5 files changed, 59 insertions(+), 3 deletions(-) diff --git a/res/card-pictures.txt b/res/card-pictures.txt index d5b22823664..4c8447de2cc 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 +oracle_of_mul_daya.jpg http://www.wizards.com/global/images/magic/general/oracle_of_mul_daya.jpg roiling_terrain.jpg http://www.wizards.com/global/images/magic/general/roiling_terrain.jpg tectonic_edge.jpg http://www.wizards.com/global/images/magic/general/tectonic_edge.jpg evolving_wilds.jpg http://www.wizards.com/global/images/magic/general/evolving_wilds.jpg diff --git a/res/cards.txt b/res/cards.txt index ec421147dba..ab24754a6cb 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,10 @@ +Oracle of Mul Daya +3 G +Creature Elf Shaman +You may play an additional land on each of your turns. You may play the top card of your library if it's a land card. +2/2 +Play with the top card of your library revealed. + Roiling Terrain 2 R R Sorcery diff --git a/src/forge/CardFactoryUtil.java b/src/forge/CardFactoryUtil.java index d38fb8f547c..7ac50fac2a2 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/CardFactoryUtil.java @@ -216,7 +216,8 @@ public class CardFactoryUtil { {"Phyrexian Battleflies", Integer.valueOf(2)}, {"Pit Imp", Integer.valueOf(2)}, {"Roterothopter", Integer.valueOf(2)}, {"Vampire Bats", Integer.valueOf(2)}, - {"Fire-Belly Changeling", Integer.valueOf(2)}, {"Azusa, Lost but Seeking", Integer.valueOf(2)}}; + {"Fire-Belly Changeling", Integer.valueOf(2)}, {"Azusa, Lost but Seeking", Integer.valueOf(2)}, + {"Oracle of Mul Daya", Integer.valueOf(1)}}; public static boolean canUseAbility(Card card) { int found = -1; @@ -3686,13 +3687,14 @@ public class CardFactoryUtil { list = list.filter(new CardListFilter() { public boolean addCard(Card c) { return c.getName().equals("Exploration") || c.getName().equals("Azusa, Lost but Seeking") - || c.getName().equals("Fastbond"); + || c.getName().equals("Fastbond") || c.getName().equals("Oracle of Mul Daya"); } }); for(Card var:list) { if(var.getName().equals("Exploration")) count++; else if(var.getName().equals("Azusa, Lost but Seeking")) count = count + 2; + else if(var.getName().equals("Oracle of Mul Daya")) count = count + 1; else if(var.getName().equals("Fastbond")) count = 100; } diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index 92fb588e3bc..0ab416c72cc 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -2412,7 +2412,47 @@ public class CardFactory_Creatures { }; card.addComesIntoPlayCommand(intoPlay); }//*************** END ************ END ************************** - + + //*************** START *********** START ************************** + else if(cardName.equals("Oracle of Mul Daya")) { + final SpellAbility ability = new Ability(card, "0") { + private static final long serialVersionUID = 2902408812353813L; + + @Override + public void resolve() { + CardList library = new CardList(AllZone.getZone(Constant.Zone.Library, card.getController()).getCards()); + if(library.size() > 0) { + if(library.get(0).getType().contains("Land")) { + PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController()); + AllZone.GameAction.moveTo(play, library.get(0)); + if(card.getController() == Constant.Player.Human) { + AllZone.GameInfo.addHumanCanPlayNumberOfLands(-1); + AllZone.GameInfo.setHumanPlayedFirstLandThisTurn(true); + } + else { + AllZone.GameInfo.addComputerCanPlayNumberOfLands(-1); + AllZone.GameInfo.setComputerPlayedFirstLandThisTurn(true); + } + } + } + }//resolve() + + @Override + public boolean canPlay() { + CardList library = new CardList(AllZone.getZone(Constant.Zone.Library, card.getController()).getCards()); + if(library.size() == 0) return false; + PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController()); + int PlayLand = 0; + if(card.getController() == Constant.Player.Human) PlayLand = AllZone.GameInfo.getHumanCanPlayNumberOfLands(); + else PlayLand = AllZone.GameInfo.getComputerCanPlayNumberOfLands(); + + return (AllZone.GameAction.isCardInZone(card, play) && library.get(0).getType().contains("Land") && PlayLand > 0) + && (AllZone.Stack.size() == 0) && AllZone.GameAction.getLastPlayerToDraw() == card.getController(); + } + }; + ability.setStackDescription(card.getController() + " - plays land from top of library."); + card.addSpellAbility(ability); + }//*************** END ************ END ************************** //*************** START *********** START ************************** else if(cardName.equals("Highway Robber") || cardName.equals("Dakmor Ghoul")) { diff --git a/src/forge/PlayerZone_ComesIntoPlay.java b/src/forge/PlayerZone_ComesIntoPlay.java index 6cf0e0816c3..b54413aeacd 100644 --- a/src/forge/PlayerZone_ComesIntoPlay.java +++ b/src/forge/PlayerZone_ComesIntoPlay.java @@ -35,6 +35,9 @@ public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone { } else if(c.getName().equals("Azusa, Lost but Seeking")) { if(c.getController().equals(Constant.Player.Human)) AllZone.GameInfo.addHumanCanPlayNumberOfLands(2); else AllZone.GameInfo.addComputerCanPlayNumberOfLands(2); + } else if(c.getName().equals("Oracle of Mul Daya")) { + if(c.getController().equals(Constant.Player.Human)) AllZone.GameInfo.addHumanCanPlayNumberOfLands(1); + else AllZone.GameInfo.addComputerCanPlayNumberOfLands(1); } else if(c.getName().equals("Fastbond")) { if(c.getController().equals(Constant.Player.Human)) AllZone.GameInfo.addHumanCanPlayNumberOfLands(100); else AllZone.GameInfo.addComputerCanPlayNumberOfLands(100); @@ -237,6 +240,9 @@ public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone { } else if(c.getName().equals("Azusa, Lost but Seeking")) { if(c.getController().equals(Constant.Player.Human)) AllZone.GameInfo.addHumanCanPlayNumberOfLands(-2); else AllZone.GameInfo.addComputerCanPlayNumberOfLands(-2); + } else if(c.getName().equals("Oracle of Mul Daya")) { + if(c.getController().equals(Constant.Player.Human)) AllZone.GameInfo.addHumanCanPlayNumberOfLands(-1); + else AllZone.GameInfo.addComputerCanPlayNumberOfLands(-1); } else if(c.getName().equals("Fastbond")) { if(c.getController().equals(Constant.Player.Human)) AllZone.GameInfo.addHumanCanPlayNumberOfLands(-100); else AllZone.GameInfo.addComputerCanPlayNumberOfLands(-100);