diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 7ba3fae85f0..2c969192745 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -1998,7 +1998,7 @@ public final class GamePanel extends javax.swing.JPanel { } } if (event.getEventName().equals("action-consumed")) { - dialog.hideDialog(); + dialog.removeDialog(); } } }; @@ -2017,24 +2017,31 @@ public final class GamePanel extends javax.swing.JPanel { switch (e.getActionCommand()) { case CMD_AUTO_ORDER_FIRST: session.sendPlayerAction(TRIGGER_AUTO_ORDER_ABILITY_FIRST, gameId, abilityId); + session.sendPlayerUUID(gameId, abilityId); break; case CMD_AUTO_ORDER_LAST: session.sendPlayerAction(TRIGGER_AUTO_ORDER_ABILITY_LAST, gameId, abilityId); + session.sendPlayerUUID(gameId, null); // Don't use this but refresh the displayed abilities break; case CMD_AUTO_ORDER_NAME_FIRST: if (abilityRuleText != null) { session.sendPlayerAction(TRIGGER_AUTO_ORDER_NAME_FIRST, gameId, abilityRuleText); + session.sendPlayerUUID(gameId, abilityId); } break; case CMD_AUTO_ORDER_NAME_LAST: if (abilityRuleText != null) { session.sendPlayerAction(TRIGGER_AUTO_ORDER_NAME_LAST, gameId, abilityRuleText); + session.sendPlayerUUID(gameId, null); // Don't use this but refresh the displayed abilities } break; case CMD_AUTO_ORDER_RESET_ALL: session.sendPlayerAction(TRIGGER_AUTO_ORDER_RESET_ALL, gameId, null); break; } + for (ShowCardsDialog dialog : pickTarget) { + dialog.removeDialog(); + } } private void initPopupMenuTriggerOrder() { 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 0b4c9a24328..0c25eaffc78 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 @@ -685,35 +685,34 @@ public class HumanPlayer extends PlayerImpl { @Override public TriggeredAbility chooseTriggeredAbility(List abilities, Game game) { - // try to set trigger auto order - List abilitiesWithNoOrderSet = new ArrayList<>(); - TriggeredAbility abilityOrderLast = null; - for (TriggeredAbility ability : abilities) { - if (triggerAutoOrderAbilityFirst.contains(ability.getOriginalId())) { - return ability; - } - if (triggerAutoOrderNameFirst.contains(ability.getRule())) { - return ability; - } - if (triggerAutoOrderAbilityLast.contains(ability.getOriginalId())) { - abilityOrderLast = ability; - continue; - } - if (triggerAutoOrderNameLast.contains(ability.getRule())) { - abilityOrderLast = ability; - continue; - } - abilitiesWithNoOrderSet.add(ability); - } - if (abilitiesWithNoOrderSet.isEmpty()) { - return abilityOrderLast; - } - if (abilitiesWithNoOrderSet.size() == 1) { - return abilitiesWithNoOrderSet.iterator().next(); - } - - updateGameStatePriority("chooseTriggeredAbility", game); while (!abort) { + // try to set trigger auto order + List abilitiesWithNoOrderSet = new ArrayList<>(); + TriggeredAbility abilityOrderLast = null; + for (TriggeredAbility ability : abilities) { + if (triggerAutoOrderAbilityFirst.contains(ability.getOriginalId())) { + return ability; + } + if (triggerAutoOrderNameFirst.contains(ability.getRule())) { + return ability; + } + if (triggerAutoOrderAbilityLast.contains(ability.getOriginalId())) { + abilityOrderLast = ability; + continue; + } + if (triggerAutoOrderNameLast.contains(ability.getRule())) { + abilityOrderLast = ability; + continue; + } + abilitiesWithNoOrderSet.add(ability); + } + if (abilitiesWithNoOrderSet.isEmpty()) { + return abilityOrderLast; + } + if (abilitiesWithNoOrderSet.size() == 1) { + return abilitiesWithNoOrderSet.iterator().next(); + } + updateGameStatePriority("chooseTriggeredAbility", game); game.fireSelectTargetTriggeredAbilityEvent(playerId, "Pick triggered ability (goes to the stack first)", abilitiesWithNoOrderSet); waitForResponse(game); if (response.getUUID() != null) {