Browse Source

Fix for Soulhound olympiad rank. Thx Gnacik

Gigiikun 15 years ago
parent
commit
1cfea423c1

+ 22 - 13
L2_GameServer/java/com/l2jserver/gameserver/model/olympiad/Olympiad.java

@@ -95,7 +95,16 @@ public class Olympiad
 	private static final String GET_EACH_CLASS_LEADER_CURRENT = "SELECT characters.char_name from olympiad_nobles, characters "
 			+ "WHERE characters.charId = olympiad_nobles.charId AND olympiad_nobles.class_id = ? "
 			+ "AND olympiad_nobles.competitions_done >= 9 "
+			+ "ORDER BY olympiad_nobles.olympiad_points DESC, olympiad_nobles.competitions_done DESC, olympiad_nobles.competitions_won DESC LIMIT 10";	
+	private static final String GET_EACH_CLASS_LEADER_SOULHOUND = "SELECT characters.char_name from olympiad_nobles_eom, characters "
+			+ "WHERE characters.charId = olympiad_nobles_eom.charId AND (olympiad_nobles_eom.class_id = ? OR olympiad_nobles_eom.class_id = 133) "
+			+ "AND olympiad_nobles_eom.competitions_done >= 9 "
+			+ "ORDER BY olympiad_nobles_eom.olympiad_points DESC, olympiad_nobles_eom.competitions_done DESC, olympiad_nobles_eom.competitions_won DESC LIMIT 10";
+	private static final String GET_EACH_CLASS_LEADER_CURRENT_SOULHOUND = "SELECT characters.char_name from olympiad_nobles, characters "
+			+ "WHERE characters.charId = olympiad_nobles.charId AND (olympiad_nobles.class_id = ? OR olympiad_nobles.class_id = 133) "
+			+ "AND olympiad_nobles.competitions_done >= 9 "
 			+ "ORDER BY olympiad_nobles.olympiad_points DESC, olympiad_nobles.competitions_done DESC, olympiad_nobles.competitions_won DESC LIMIT 10";
+
 	private static final String OLYMPIAD_DELETE_ALL = "TRUNCATE olympiad_nobles";
 	private static final String OLYMPIAD_MONTH_CLEAR = "TRUNCATE olympiad_nobles_eom";
 	private static final String OLYMPIAD_MONTH_CREATE = "INSERT INTO olympiad_nobles_eom SELECT * FROM olympiad_nobles";
@@ -1405,9 +1414,19 @@ public class Olympiad
 			PreparedStatement statement;
 			ResultSet rset;
 			if (Config.ALT_OLY_SHOW_MONTHLY_WINNERS)
-				statement = con.prepareStatement(GET_EACH_CLASS_LEADER);
+			{
+				if(classId == 132)
+					statement = con.prepareStatement(GET_EACH_CLASS_LEADER_SOULHOUND);
+				else
+					statement = con.prepareStatement(GET_EACH_CLASS_LEADER);
+			}
 			else
-				statement = con.prepareStatement(GET_EACH_CLASS_LEADER_CURRENT);
+			{
+				if(classId == 132)
+					statement = con.prepareStatement(GET_EACH_CLASS_LEADER_CURRENT_SOULHOUND);
+				else
+					statement = con.prepareStatement(GET_EACH_CLASS_LEADER_CURRENT);
+			}
 			statement.setInt(1, classId);
 			rset = statement.executeQuery();
 			
@@ -1415,17 +1434,7 @@ public class Olympiad
 			{
 				names.add(rset.getString(CHAR_NAME));
 			}
-			
-			if (classId == 132) // Male & Female SoulHounds are ranked together
-			{
-				statement.setInt(1, 133);
-				rset = statement.executeQuery();
-				while (rset.next())
-				{
-					names.add(rset.getString(CHAR_NAME));
-				}
-			}
-			
+
 			statement.close();
 			rset.close();