From 48f1560cb86cfa4dd210d35f594d1758507cd309 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 6 Apr 2013 00:04:21 +0200 Subject: [PATCH] Added new AsThoughtEffectType to reveal face down cards (not a perfect solution I know, but better as using the cast type. If someone has a better idea to handle this, I'm open). --- .../src/mage/player/human/HumanPlayer.java | 5 +++++ .../src/main/java/mage/server/TableController.java | 1 + Mage/src/mage/Constants.java | 3 ++- Mage/src/mage/players/Player.java | 6 ++++++ Mage/src/mage/players/PlayerImpl.java | 9 +++++++++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index f0d8098dcfe..c6745ff0b20 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -426,6 +426,9 @@ public class HumanPlayer extends PlayerImpl { if (object != null) { Zone zone = game.getState().getZone(object.getId()); if (zone != null) { + if (object instanceof Card && ((Card) object).isFaceDown()) { + revealFaceDownCard((Card) object, game); + } LinkedHashMap useableAbilities = getUseableActivatedAbilities(object, zone, game); if (useableAbilities != null && useableAbilities.size() > 0) { activateAbility(useableAbilities, game); @@ -838,4 +841,6 @@ public class HumanPlayer extends PlayerImpl { log.debug("Setting game priority to " + getId() + " [" + methodName + "]"); game.getState().setPriorityPlayerId(getId()); } + + } diff --git a/Mage.Server/src/main/java/mage/server/TableController.java b/Mage.Server/src/main/java/mage/server/TableController.java index 870cb3e9cb9..edf40e765db 100644 --- a/Mage.Server/src/main/java/mage/server/TableController.java +++ b/Mage.Server/src/main/java/mage/server/TableController.java @@ -93,6 +93,7 @@ public class TableController { match = GameFactory.getInstance().createMatch(options.getGameType(), options); if (userId != null) { User user = UserManager.getInstance().getUser(userId); + // TODO: Handle if user == null controllerName = user.getName(); } else { diff --git a/Mage/src/mage/Constants.java b/Mage/src/mage/Constants.java index ef3a0f195a8..f13055ae3e7 100644 --- a/Mage/src/mage/Constants.java +++ b/Mage/src/mage/Constants.java @@ -186,7 +186,8 @@ public final class Constants { TARGET, PAY, DAMAGE, - HEXPROOF + HEXPROOF, + REVEAL_FACE_DOWN } public enum Duration { diff --git a/Mage/src/mage/players/Player.java b/Mage/src/mage/players/Player.java index 4a051882179..6d714ff6192 100644 --- a/Mage/src/mage/players/Player.java +++ b/Mage/src/mage/players/Player.java @@ -271,4 +271,10 @@ public interface Player extends MageItem, Copyable { void becomesActivePlayer(); int getTurns(); + + /** + * asThough effect to reveal faceDown cards + * + */ + void revealFaceDownCard(Card card, Game game); } diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index 164f5f0accd..5a2b3dd742c 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -1629,4 +1629,13 @@ public abstract class PlayerImpl> implements Player, Ser } setStoredBookmark(-1); } + + + @Override + public void revealFaceDownCard(Card card, Game game) { + if (game.getContinuousEffects().asThough(card.getId(), AsThoughEffectType.REVEAL_FACE_DOWN, game)) { + Cards cards = new CardsImpl(card); + this.revealCards(name, cards, game); + } + } }