From 01aa211d5a5bbd1ae2aedca3e5900115e5253c70 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 05:22:47 +0000 Subject: [PATCH] Added RevealYouChoose method to spDiscard. --- src/forge/CardFactory.java | 66 +++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 3b1f9f0012b..5cda422fdb0 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -585,7 +585,71 @@ public class CardFactory implements NewConstants { { AllZone.GameAction.discardHand(discardingPlayer); } - + else if (DiscardMethod.startsWith("RevealYouChoose")) + { + PlayerZone pzH = AllZone.getZone(Constant.Zone.Hand, discardingPlayer); + if (pzH.size() != 0) + { + CardList dPHand = new CardList(pzH.getCards()); + CardList dPChHand = new CardList(dPHand.toArray()); + + if (DiscardMethod.contains("/")) // Restrict card choices + { + int dot = DiscardMethod.indexOf("/"); + String dV = DiscardMethod.substring(dot + 1); + String dValid[] = dV.split(","); + + dPChHand = dPHand.getValidCards(dValid); + } + + if (card.getController().equals(Constant.Player.Computer)) + { + //AI + for (int i=0; i 0) + { + CardList dChoices = new CardList(); + + if (DiscardMethod.contains("Creature") && !DiscardMethod.contains("nonCreature")) + dChoices.add(CardFactoryUtil.AI_getBestCreature(dPChHand)); + + CardListUtil.sortByTextLen(dPChHand); + dChoices.add(dPChHand.get(0)); + + CardListUtil.sortCMC(dPChHand); + dChoices.add(dPChHand.get(0)); + + Card dC = dChoices.get(CardUtil.getRandomIndex(dChoices)); + dPChHand.remove(dC); + + CardList dCs = new CardList(); + dCs.add(dC); + AllZone.Display.getChoiceOptional("Computer has chosen", dCs.toArray()); + + AllZone.GameAction.discard(dC); + } + } + } + else + { + //human + AllZone.Display.getChoiceOptional("Revealed computer hand", dPHand.toArray()); + + for (int i=0; i 0) + { + Card dC = AllZone.Display.getChoice("Choose a card to be discarded", dPChHand.toArray()); + + dPChHand.remove(dC); + AllZone.GameAction.discard(dC); + } + } + } + } + } + if (!Drawback[0].equals("none")) { CardFactoryUtil.doDrawBack(Drawback[0], nCards, card.getController(), AllZone.GameAction.getOpponent(card.getController()), discardingPlayer, card, card);