From add2101129fd257a63dfd61c6e7c459bdaa2f67a Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 13 Apr 2017 20:00:31 +0000 Subject: [PATCH] Fixed starting olympiad games. --- .../model/olympiad/OlympiadGameNormal.java | 28 +++++++++++++++---- .../model/olympiad/OlympiadGameNormal.java | 28 +++++++++++++++---- 2 files changed, 46 insertions(+), 10 deletions(-) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 90b064c140..33ba98a243 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -68,24 +68,27 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { return null; } - final List list = new ArrayList<>(set.size()); int playerOneObjectId = 0; + int playerTwoObjectId = 0; L2PcInstance playerOne = null; L2PcInstance playerTwo = null; - while (list.size() > 1) + while (set.size() > 1) { - playerOneObjectId = list.remove(Rnd.nextInt(list.size())); + playerOneObjectId = getRandomPlayerId(set); + set.remove(playerOneObjectId); playerOne = L2World.getInstance().getPlayer(playerOneObjectId); if ((playerOne == null) || !playerOne.isOnline()) { continue; } - playerTwo = L2World.getInstance().getPlayer(list.remove(Rnd.nextInt(list.size()))); + playerTwoObjectId = getRandomPlayerId(set); + set.remove(playerTwoObjectId); + playerTwo = L2World.getInstance().getPlayer(playerTwoObjectId); if ((playerTwo == null) || !playerTwo.isOnline()) { - list.add(playerOneObjectId); + set.add(playerOneObjectId); continue; } @@ -98,6 +101,21 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame return null; } + private static int getRandomPlayerId(Set set) + { + final int rnd = Rnd.nextInt(set.size()); + int counter = 0; + for (int id : set) + { + if (counter == rnd) + { + return id; + } + counter++; + } + return 0; + } + @Override public final boolean containsParticipant(int playerId) { diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 90b064c140..33ba98a243 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -68,24 +68,27 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { return null; } - final List list = new ArrayList<>(set.size()); int playerOneObjectId = 0; + int playerTwoObjectId = 0; L2PcInstance playerOne = null; L2PcInstance playerTwo = null; - while (list.size() > 1) + while (set.size() > 1) { - playerOneObjectId = list.remove(Rnd.nextInt(list.size())); + playerOneObjectId = getRandomPlayerId(set); + set.remove(playerOneObjectId); playerOne = L2World.getInstance().getPlayer(playerOneObjectId); if ((playerOne == null) || !playerOne.isOnline()) { continue; } - playerTwo = L2World.getInstance().getPlayer(list.remove(Rnd.nextInt(list.size()))); + playerTwoObjectId = getRandomPlayerId(set); + set.remove(playerTwoObjectId); + playerTwo = L2World.getInstance().getPlayer(playerTwoObjectId); if ((playerTwo == null) || !playerTwo.isOnline()) { - list.add(playerOneObjectId); + set.add(playerOneObjectId); continue; } @@ -98,6 +101,21 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame return null; } + private static int getRandomPlayerId(Set set) + { + final int rnd = Rnd.nextInt(set.size()); + int counter = 0; + for (int id : set) + { + if (counter == rnd) + { + return id; + } + counter++; + } + return 0; + } + @Override public final boolean containsParticipant(int playerId) {