Jelajahi Sumber

"The Hero ... claimed at least 1 victory."

janiii 15 tahun lalu
induk
melakukan
d174f69917

+ 15 - 6
L2_GameServer/java/com/l2jserver/gameserver/model/olympiad/Olympiad.java

@@ -84,18 +84,18 @@ public class Olympiad
 			+ "olympiad_points = ?, competitions_done = ?, competitions_won = ?, competitions_lost = ?, competitions_drawn = ? WHERE charId = ?";
 	private static final String OLYMPIAD_GET_HEROS = "SELECT olympiad_nobles.charId, 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";
+			+ "AND olympiad_nobles.class_id = ? AND olympiad_nobles.competitions_done >= 9 AND olympiad_nobles.competitions_won > 0 "
+			+ "ORDER BY olympiad_nobles.olympiad_points DESC, olympiad_nobles.competitions_done DESC, olympiad_nobles.competitions_won DESC";
 	private static final String GET_ALL_CLASSIFIED_NOBLESS = "SELECT charId from olympiad_nobles_eom "
-			+ "WHERE competitions_done >= 9 ORDER BY olympiad_points DESC, competitions_done DESC";
+			+ "WHERE competitions_done >= 9 ORDER BY olympiad_points DESC, competitions_done DESC, competitions_won DESC";
 	private static final String GET_EACH_CLASS_LEADER = "SELECT characters.char_name from olympiad_nobles_eom, characters "
 			+ "WHERE characters.charId = olympiad_nobles_eom.charId AND olympiad_nobles_eom.class_id = ? "
 			+ "AND olympiad_nobles_eom.competitions_done >= 9 "
-			+ "ORDER BY olympiad_nobles_eom.olympiad_points DESC, olympiad_nobles_eom.competitions_done DESC LIMIT 10";
+			+ "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 = "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 LIMIT 10";
+			+ "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";
@@ -1339,6 +1339,8 @@ public class Olympiad
 					int hero2Points = hero2.getInteger(POINTS);
 					int hero1Comps = hero1.getInteger(COMP_DONE);
 					int hero2Comps = hero2.getInteger(COMP_DONE);
+					int hero1Wins = hero1.getInteger(COMP_WON);
+					int hero2Wins = hero2.getInteger(COMP_WON);
 					
 					if (hero1Points > hero2Points)
 						winner = hero1;
@@ -1348,8 +1350,15 @@ public class Olympiad
 					{
 						if (hero1Comps > hero2Comps)
 							winner = hero1;
-						else
+						else if (hero2Comps > hero1Comps)
 							winner = hero2;
+						else
+						{
+							if (hero1Wins > hero2Wins)
+								winner = hero1;
+							else
+								winner = hero2;
+						}
 					}
 					
 					hero.set(CLASS_ID, winner.getInteger(CLASS_ID));