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 2323f9f6fd7..b03c0cc9079 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 @@ -934,24 +934,27 @@ public class HumanPlayer extends PlayerImpl { if (object != null) { Zone zone = game.getState().getZone(object.getId()); if (zone != null) { + // look at card or try to cast/activate abilities + Player actingPlayer = null; + LinkedHashMap useableAbilities = null; + if (playerId.equals(game.getPriorityPlayerId())) { + actingPlayer = this; + } else if (getPlayersUnderYourControl().contains(game.getPriorityPlayerId())) { + actingPlayer = game.getPlayer(game.getPriorityPlayerId()); + } + if (actingPlayer != null) { + useableAbilities = actingPlayer.getUseableActivatedAbilities(object, zone, game); + } + if (object instanceof Card && ((Card) object).isFaceDown(game) - && lookAtFaceDownCard((Card) object, game)) { + && lookAtFaceDownCard((Card) object, game, useableAbilities == null ? 0 : useableAbilities.size())) { result = true; } else { - Player actingPlayer = null; - if (playerId.equals(game.getPriorityPlayerId())) { - actingPlayer = this; - } else if (getPlayersUnderYourControl().contains(game.getPriorityPlayerId())) { - actingPlayer = game.getPlayer(game.getPriorityPlayerId()); - } - if (actingPlayer != null) { - LinkedHashMap useableAbilities = actingPlayer.getUseableActivatedAbilities(object, zone, game); - if (useableAbilities != null - && !useableAbilities.isEmpty()) { - activateAbility(useableAbilities, object, game); - result = true; - } + if (useableAbilities != null + && !useableAbilities.isEmpty()) { + activateAbility(useableAbilities, object, game); + result = true; } } } diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index 4398a3bfeed..18c40b0c9bc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -2864,8 +2864,8 @@ public class TestPlayer implements Player { } @Override - public boolean lookAtFaceDownCard(Card card, Game game) { - return computerPlayer.lookAtFaceDownCard(card, game); + public boolean lookAtFaceDownCard(Card card, Game game, int abilitiesToActivate) { + return computerPlayer.lookAtFaceDownCard(card, game, abilitiesToActivate); } @Override diff --git a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java index 056854fb9e9..6fe462512fe 100644 --- a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java +++ b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java @@ -1092,7 +1092,7 @@ public class PlayerStub implements Player { } @Override - public boolean lookAtFaceDownCard(Card card, Game game) { + public boolean lookAtFaceDownCard(Card card, Game game, int abilitiesToActivate) { return false; } diff --git a/Mage/src/main/java/mage/players/Player.java b/Mage/src/main/java/mage/players/Player.java index f06f2821fe0..6e5c31dc3bb 100644 --- a/Mage/src/main/java/mage/players/Player.java +++ b/Mage/src/main/java/mage/players/Player.java @@ -654,9 +654,10 @@ public interface Player extends MageItem, Copyable { * * @param card * @param game + * @param abilitiesToActivate extra info about abilities that can be activated on NO option * @return player looked at the card */ - boolean lookAtFaceDownCard(Card card, Game game); + boolean lookAtFaceDownCard(Card card, Game game, int abilitiesToActivate); /** * Set seconds left to play the game. diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 1cc18ae2aba..ee6ac479b7a 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -3458,10 +3458,13 @@ public abstract class PlayerImpl implements Player, Serializable { } @Override - public boolean lookAtFaceDownCard(Card card, Game game - ) { + public boolean lookAtFaceDownCard(Card card, Game game, int abilitiesToActivate) { if (null != game.getContinuousEffects().asThough(card.getId(), AsThoughEffectType.LOOK_AT_FACE_DOWN, card.getSpellAbility(), this.getId(), game)) { - if (chooseUse(Outcome.Benefit, "Look at that card?", null, game)) { + // two modes: look at card or not to look and activate other abilities + String lookMessage = abilitiesToActivate > 0 ? "Look at that card (it's have " + abilitiesToActivate + " abilities to activate)?" : "Look at that card?"; + String lookYes = "Yes, look at card"; + String lookNo = abilitiesToActivate > 0 ? "No, activate ability" : "No"; + if (chooseUse(Outcome.Benefit, lookMessage, "", lookYes, lookNo, null, game)) { Cards cards = new CardsImpl(card); this.lookAtCards(getName() + " - " + sdf.format(System.currentTimeMillis()), cards, game); return true;