From d069e89aa01caa5af3a6fdf414a7f15adc940d0e Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 05:08:35 +0000 Subject: [PATCH] - Added Undiscovered Paradise - Fixed issue with Gemstone Mine being used consecutively (should only be able to tap if it's untapped) --- res/card-pictures.txt | 1 + res/cards.txt | 10 ++++++++++ res/rare.txt | 1 + src/forge/Ability_Mana.java | 15 +++++++++++++++ src/forge/Card.java | 9 +++++++++ src/forge/CardFactory_Lands.java | 13 ++++++++----- src/forge/Input_Untap.java | 6 +++++- 7 files changed, 49 insertions(+), 6 deletions(-) diff --git a/res/card-pictures.txt b/res/card-pictures.txt index c131d28fb31..4fcd163b503 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 +undiscovered_paradise.jpg http://www.wizards.com/global/images/magic/general/undiscovered_paradise.jpg hagra_crocodile.jpg http://www.wizards.com/global/images/magic/general/hagra_crocodile.jpg ancient_runes.jpg http://www.wizards.com/global/images/magic/general/ancient_runes.jpg vivid_crag.jpg http://www.wizards.com/global/images/magic/general/vivid_crag.jpg diff --git a/res/cards.txt b/res/cards.txt index 0a3e527558b..c337e2babbd 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,13 @@ +Undiscovered Paradise +no cost +Land +Whenever you tap CARDNAME for mana, return it to it's owner's hand during the controller's next untap phase. +tap: add W +tap: add B +tap: add U +tap: add R +tap: add G + Ancient Runes 2 R Enchantment diff --git a/res/rare.txt b/res/rare.txt index 8a17c8c6af2..0a9159b1e84 100644 --- a/res/rare.txt +++ b/res/rare.txt @@ -842,6 +842,7 @@ Undead Gladiator Underground River Underground Sea Undermine +Undiscovered Paradise Undying Beast Uril, the Miststalker Ursapine diff --git a/src/forge/Ability_Mana.java b/src/forge/Ability_Mana.java index a54824eb7ff..330c2112d8e 100644 --- a/src/forge/Ability_Mana.java +++ b/src/forge/Ability_Mana.java @@ -108,6 +108,21 @@ abstract public class Ability_Mana extends SpellAbility implements java.io.Seria } }); } + + if (sourceCard.getName().equals("Undiscovered Paradise")) + { + final Card crd = sourceCard; + runcommands.add(new Command() { + private static final long serialVersionUID = 1365329719980281985L; + + public void execute() + { + // The computer can now use this card. A version of the + // line of code below was added to ComputerUtil.payManaCost() + crd.setBounceAtUntap(true); + } + }); + } if(isBasic())//lowers memory usage drastically { diff --git a/src/forge/Card.java b/src/forge/Card.java index 5c22f4a74be..4571f264d29 100644 --- a/src/forge/Card.java +++ b/src/forge/Card.java @@ -60,6 +60,7 @@ public class Card extends MyObservable { private boolean kicked = false; private boolean reflectedLand = false; private boolean levelUp = false; + private boolean bounceAtUntap = false; private boolean firstStrike = false; private boolean doubleStrike = false; @@ -262,6 +263,14 @@ public class Card extends MyObservable { this.sacrificeAtEOT = sacrificeAtEOT; } + public boolean getBounceAtUntap() { + return bounceAtUntap; + } + + public void setBounceAtUntap(boolean bounce) { + this.bounceAtUntap = bounce; + } + public boolean hasFirstStrike() { return firstStrike || getKeyword().contains("First Strike"); } diff --git a/src/forge/CardFactory_Lands.java b/src/forge/CardFactory_Lands.java index 061304f54f8..41c7cb03bac 100644 --- a/src/forge/CardFactory_Lands.java +++ b/src/forge/CardFactory_Lands.java @@ -343,15 +343,18 @@ class CardFactory_Lands { @Override public void showMessage() { - mine.choices_made[0] = Input_PayManaCostUtil.getShortColorString(AllZone.Display.getChoiceOptional( - "Select a Color", Constant.Color.onlyColors)); - if (mine.choices_made[0] != null){ - AllZone.Stack.add(mine); + if (card.isUntapped()) + { + mine.choices_made[0] = Input_PayManaCostUtil.getShortColorString(AllZone.Display.getChoiceOptional( + "Select a Color", Constant.Color.onlyColors)); + if (mine.choices_made[0] != null){ + AllZone.Stack.add(mine); + } } stop(); } }); - + card.addSpellAbility(mine); mine.setDescription("Gemstone Mine - tap, remove a mining counter: Add one mana of any color to your mana pool"); mine.setStackDescription("Gemstone Mine - tap, remove a mining counter: Add one mana of any color to your mana pool"); diff --git a/src/forge/Input_Untap.java b/src/forge/Input_Untap.java index 28c49270d05..c420a998097 100644 --- a/src/forge/Input_Untap.java +++ b/src/forge/Input_Untap.java @@ -93,7 +93,11 @@ public class Input_Untap extends Input { }); for(Card c : list) { - if(c.getKeyword().contains("You may choose not to untap CARDNAME during your untap step.")) { + if (c.getBounceAtUntap() && c.getName().contains("Undiscovered Paradise") ) + { + AllZone.GameAction.moveToHand(c); + } + else if(c.getKeyword().contains("You may choose not to untap CARDNAME during your untap step.")) { if(c.isTapped()) { if(c.getController().equals(Constant.Player.Human)) { String[] choices = {"Yes", "No"};