From 07adaa06ab61f3fc5ba953f2e1e830c7fc931584 Mon Sep 17 00:00:00 2001
From: Jeff <jeff@delmarus.com>
Date: Mon, 25 Mar 2019 11:02:37 -0500
Subject: [PATCH] - Fixed #5654

---
 .../common/PlayersAttackedThisTurnWatcher.java    | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java
index 9587c7001d..09d584dead 100644
--- a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java
+++ b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java
@@ -27,11 +27,11 @@ public class PlayersAttackedThisTurnWatcher extends Watcher {
         super(watcher);
 
         for (Map.Entry<UUID, PlayerList> entry : watcher.playersAttackedThisTurn.entrySet()) {
-            this.playersAttackedThisTurn.put(entry.getKey(), entry.getValue());
+            this.playersAttackedThisTurn.putIfAbsent(entry.getKey(), entry.getValue());
         }
 
         for (Map.Entry<UUID, PlayerList> entry : watcher.opponentsAttackedThisTurn.entrySet()) {
-            this.opponentsAttackedThisTurn.put(entry.getKey(), entry.getValue());
+            this.opponentsAttackedThisTurn.putIfAbsent(entry.getKey(), entry.getValue());
         }
     }
 
@@ -55,10 +55,11 @@ public class PlayersAttackedThisTurnWatcher extends Watcher {
                 playersAttacked = new PlayerList();
             }
             UUID playerDefender = game.getCombat().getDefendingPlayerId(event.getSourceId(), game);
-            if (playerDefender != null) {
+            if (playerDefender != null
+                    && !playersAttacked.contains(playerDefender)) {
                 playersAttacked.add(playerDefender);
             }
-            playersAttackedThisTurn.put(event.getPlayerId(), playersAttacked);
+            playersAttackedThisTurn.putIfAbsent(event.getPlayerId(), playersAttacked);
 
             // opponents
             PlayerList opponentsAttacked = opponentsAttackedThisTurn.get(event.getPlayerId());
@@ -66,10 +67,12 @@ public class PlayersAttackedThisTurnWatcher extends Watcher {
                 opponentsAttacked = new PlayerList();
             }
             UUID opponentDefender = game.getCombat().getDefendingPlayerId(event.getSourceId(), game);
-            if (opponentDefender != null && game.getOpponents(event.getPlayerId()).contains(opponentDefender)) {
+            if (opponentDefender != null
+                    && game.getOpponents(event.getPlayerId()).contains(opponentDefender)
+                    && !opponentsAttacked.contains(opponentDefender)) {
                 opponentsAttacked.add(opponentDefender);
             }
-            opponentsAttackedThisTurn.put(event.getPlayerId(), opponentsAttacked);
+            opponentsAttackedThisTurn.putIfAbsent(event.getPlayerId(), opponentsAttacked);
         }
     }