From f2dfc63cd64a30fb8feb4e6fd95a3c5040692235 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 09:45:19 +0000 Subject: [PATCH] 1)add LastDrawn as a valid discard target in Ability_Cost 2)add Jandor's Ring (from original base Alpha) --- .gitattributes | 1 + res/cardsfolder/jandors_ring.txt | 9 +++++++++ src/forge/Ability_Cost.java | 3 +++ src/forge/Cost_Payment.java | 12 ++++++++++++ src/forge/Input_Untap.java | 1 + src/forge/Player.java | 22 +++++++++++++++++++++- 6 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 res/cardsfolder/jandors_ring.txt diff --git a/.gitattributes b/.gitattributes index f8e69630287..185a9ae5430 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2199,6 +2199,7 @@ res/cardsfolder/jade_statue.txt -text svneol=native#text/plain res/cardsfolder/jagwasp_swarm.txt -text svneol=native#text/plain res/cardsfolder/jalum_tome.txt -text svneol=native#text/plain res/cardsfolder/jamuraan_lion.txt -text svneol=native#text/plain +res/cardsfolder/jandors_ring.txt -text svneol=native#text/plain res/cardsfolder/jandors_saddlebags.txt -text svneol=native#text/plain res/cardsfolder/jasmine_boreal.txt -text svneol=native#text/plain res/cardsfolder/jayemdae_tome.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/jandors_ring.txt b/res/cardsfolder/jandors_ring.txt new file mode 100644 index 00000000000..7ea8617f030 --- /dev/null +++ b/res/cardsfolder/jandors_ring.txt @@ -0,0 +1,9 @@ +Name:Jandor's Ring +ManaCost:6 +Types:Artifact +Text:no text +K:abDrawCards 2 T Discard<1/LastDrawn>:1:Draw a card.:Jandor's Ring - Draw a card. +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/jandors_ring.jpg +End + \ No newline at end of file diff --git a/src/forge/Ability_Cost.java b/src/forge/Ability_Cost.java index d712006d7df..6418f41f136 100644 --- a/src/forge/Ability_Cost.java +++ b/src/forge/Ability_Cost.java @@ -382,6 +382,9 @@ public class Ability_Cost { else if (discardType.equals("Hand")){ cost.append(" your hand"); } + else if(discardType.equals("LastDrawn")) { + cost.append("last drawn card"); + } else{ cost.append(discardAmount); if (!discardType.equals("Any") && !discardType.equals("Random")){ diff --git a/src/forge/Cost_Payment.java b/src/forge/Cost_Payment.java index 10804b52c07..a80bdd4e1d3 100644 --- a/src/forge/Cost_Payment.java +++ b/src/forge/Cost_Payment.java @@ -121,6 +121,11 @@ public class Cost_Payment { else if (discType.equals("Hand")){ // this will always work } + else if(discType.equals("LastDrawn")) { + Card c = card.getController().getLastDrawnCard(); + CardList hand = AllZoneUtil.getPlayerHand(card.getController()); + return hand.contains(c); + } else{ if (!discType.equals("Any") && !discType.equals("Random")){ String validType[] = discType.split(","); @@ -260,6 +265,13 @@ public class Cost_Payment { AllZone.GameAction.discardHand(card.getController(), ability); payDiscard = true; } + else if( discType.equals("LastDrawn") ) { + if(handList.contains(card.getController().getLastDrawnCard())) { + AllZone.GameAction.discard(card.getController().getLastDrawnCard(), ability); + payDiscard = true; + } + + } else{ if (discType.equals("Random")){ AllZone.GameAction.discardRandom(card.getController(), discAmount, ability); diff --git a/src/forge/Input_Untap.java b/src/forge/Input_Untap.java index 6e916c02f37..3e9bc09097c 100644 --- a/src/forge/Input_Untap.java +++ b/src/forge/Input_Untap.java @@ -25,6 +25,7 @@ public class Input_Untap extends Input { CardList lands = AllZoneUtil.getPlayerLandsInPlay(player); lands = lands.filter(AllZoneUtil.untapped); player.setNumPowerSurgeLands(lands.size()); + player.resetLastDrawnCard(); if(!AllZoneUtil.isCardInPlay("Stasis")) doUntap(); diff --git a/src/forge/Player.java b/src/forge/Player.java index 56054f49132..0c123c39219 100644 --- a/src/forge/Player.java +++ b/src/forge/Player.java @@ -14,6 +14,8 @@ public abstract class Player extends MyObservable{ protected int assignedDamage; protected int numPowerSurgeLands; + protected Card lastDrawnCard; + public Player(String myName) { this(myName, 20, 0); } @@ -23,6 +25,7 @@ public abstract class Player extends MyObservable{ life = myLife; poisonCounters = myPoisonCounters; assignedDamage = 0; + lastDrawnCard = null; } public String getName() { @@ -271,6 +274,7 @@ public abstract class Player extends MyObservable{ Card c = library.get(0); library.remove(0); hand.add(c); + setLastDrawnCard(c); GameActionUtil.executeDrawCardTriggeredEffects(this); } @@ -379,8 +383,24 @@ public abstract class Player extends MyObservable{ return numPowerSurgeLands; } - public void setNumPowerSurgeLands(int n) { + public int setNumPowerSurgeLands(int n) { numPowerSurgeLands = n; + return numPowerSurgeLands; + } + + public Card getLastDrawnCard() { + return lastDrawnCard; + } + + public Card setLastDrawnCard(Card c) { + lastDrawnCard = c; + return lastDrawnCard; + } + + public Card resetLastDrawnCard() { + Card old = lastDrawnCard; + lastDrawnCard = null; + return old; } ////////////////////////////////