diff --git a/core/src/cz/nic/tablexia/model/game/UserTrophy.java b/core/src/cz/nic/tablexia/model/game/UserTrophy.java
index c30fc380885572c1a55f75ccc1d8c7d4239ffe3f..e09600dfc32915530eb0fb5319a23a8b55c2f15d 100644
--- a/core/src/cz/nic/tablexia/model/game/UserTrophy.java
+++ b/core/src/cz/nic/tablexia/model/game/UserTrophy.java
@@ -198,15 +198,32 @@ public class UserTrophy {
             } catch (SQLException e) {
                 Log.err(UserTrophy.class, "Cannot select game with user_id: " + user.getId() + ", difficulty: " + trophyDef.getLimit(), e);
             }
-            Set<Integer> gamesPlayed = new HashSet<Integer>();
+
+            if(games.size() < GameDefinition.values().length) return false;
+            int[] sixConsecutiveGames = new int[GameDefinition.values().length];
 
             for (Game game : games) {
-                if (GameDAO.getGameResult(game).getStarCount() == AbstractTablexiaGame.GameResult.THREE_STAR.getStarCount()
-                    && !gamesPlayed.contains(game.getGameNumber())) {
-                    gamesPlayed.add(game.getGameNumber());
-                    if (gamesPlayed.size() == GameDefinition.values().length) return true;
-                } else {
-                    gamesPlayed.clear();
+                boolean duplicateFound = false;
+
+                //shifting games in array
+                for (int i = 0; i < sixConsecutiveGames.length - 1; i++) {
+                    sixConsecutiveGames[i] = sixConsecutiveGames[i + 1];
+                }
+                sixConsecutiveGames[sixConsecutiveGames.length - 1] = game.getGameNumber();
+
+                //if array sixConsecutiveGames has minimum number of games loaded, we can try achieve a trophy
+                if(games.indexOf(game) + 1 >= GameDefinition.values().length) {
+                    for (int i = 0; i < sixConsecutiveGames.length; i++) {
+                        for (int j = i + 1; j < sixConsecutiveGames.length; j++) {
+                            if (sixConsecutiveGames[i] == sixConsecutiveGames[j] ||
+                                    GameDAO.getGameResult(game).getStarCount() != AbstractTablexiaGame.GameResult.THREE_STAR.getStarCount()) {
+                                duplicateFound = true;
+                                break;
+                            }
+                        }
+                        if (duplicateFound) break;
+                    }
+                    if (!duplicateFound) return true;
                 }
             }
             return false;