From 1b456f3b5f1113b469916b6b6fc53d19e40cce94 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 10:20:47 +0000 Subject: [PATCH] restrict Sylvan Library to cards drawn this turn. --- src/forge/Card.java | 9 +++++++++ src/forge/GameActionUtil.java | 7 +++---- src/forge/Phase.java | 4 ++++ src/forge/Player.java | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/forge/Card.java b/src/forge/Card.java index c338cf03441..d710636b0c1 100644 --- a/src/forge/Card.java +++ b/src/forge/Card.java @@ -46,6 +46,7 @@ public class Card extends MyObservable { private HashMap assignedDamageHashMap = new HashMap(); private boolean unCastable; + private boolean drawnThisTurn = false; private boolean tapped; private boolean sickness = true; //summoning sickness private boolean token = false; @@ -648,6 +649,14 @@ public class Card extends MyObservable { topCardName = s; } + public void setDrawnThisTurn(boolean b) { + drawnThisTurn = b; + } + + public boolean getDrawnThisTurn() { + return drawnThisTurn; + } + public String getReflectableMana() { return reflectableMana; } diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 9c6a2cb3dbf..15c85ecd605 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -169,7 +169,7 @@ public class GameActionUtil { draw_Font_of_Mythos(player); draw_Overbeing_of_Myth(player); draw_Mana_Vault(player); - draw_Sylvan_Library(); + draw_Sylvan_Library(player); AllZone.Stack.unfreezeStack(); } @@ -9732,14 +9732,13 @@ public class GameActionUtil { player.drawCards(list.size()); }// Spiteful_Visions() - private static void draw_Sylvan_Library() { + private static void draw_Sylvan_Library(final Player player) { /* * At the beginning of your draw step, you may draw two additional * cards. If you do, choose two cards in your hand drawn this turn. * For each of those cards, pay 4 life or put the card on top of * your library. */ - final Player player = AllZone.Phase.getPlayerTurn(); final CardList cards = AllZoneUtil.getPlayerCardsInPlay(player, "Sylvan Library"); for(final Card source:cards) { @@ -9767,7 +9766,7 @@ public class GameActionUtil { @Override public void selectCard(Card card, PlayerZone zone) { - if(zone.is(Constant.Zone.Hand)) { + if(zone.is(Constant.Zone.Hand) && true == card.getDrawnThisTurn()) { ///////////////////////////////////////// if (GameActionUtil.showYesNoDialog(source, cardQuestion)) { player.payLife(4); diff --git a/src/forge/Phase.java b/src/forge/Phase.java index 1e1a1d4d754..f342a7105a9 100644 --- a/src/forge/Phase.java +++ b/src/forge/Phase.java @@ -272,6 +272,10 @@ public class Phase extends MyObservable else if(phase.equals(Constant.Phase.Cleanup)){ AllZone.EndOfTurn.executeUntil(); + CardList cHand = AllZoneUtil.getPlayerHand(AllZone.ComputerPlayer); + CardList hHand = AllZoneUtil.getPlayerHand(AllZone.HumanPlayer); + for(Card c:cHand) c.setDrawnThisTurn(false); + for(Card c:hHand) c.setDrawnThisTurn(false); } resetPriority(); diff --git a/src/forge/Player.java b/src/forge/Player.java index 22ff1fc6363..53bd790d0b0 100644 --- a/src/forge/Player.java +++ b/src/forge/Player.java @@ -303,6 +303,7 @@ public abstract class Player extends MyObservable{ library.remove(0); hand.add(c); setLastDrawnCard(c); + c.setDrawnThisTurn(true); GameActionUtil.executeDrawCardTriggeredEffects(this); }