restrict Sylvan Library to cards drawn this turn.

This commit is contained in:
jendave
2011-08-06 10:20:47 +00:00
parent 33e6dc377d
commit 1b456f3b5f
4 changed files with 17 additions and 4 deletions

View File

@@ -46,6 +46,7 @@ public class Card extends MyObservable {
private HashMap<Card, Integer> assignedDamageHashMap = new HashMap<Card, Integer>();
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;
}

View File

@@ -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);

View File

@@ -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();

View File

@@ -303,6 +303,7 @@ public abstract class Player extends MyObservable{
library.remove(0);
hand.add(c);
setLastDrawnCard(c);
c.setDrawnThisTurn(true);
GameActionUtil.executeDrawCardTriggeredEffects(this);
}