From bdcbd837e4017a7437848ffec26bdd6109f034e2 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 1 Sep 2016 19:04:17 +0000 Subject: [PATCH] Order NPC QuestLink list by QuestId. --- L2J_Mobius_Underground/dist/game/config/General.ini | 4 ++++ .../scripts/handlers/bypasshandlers/QuestLink.java | 13 +++++++++++++ .../java/com/l2jmobius/Config.java | 2 ++ 3 files changed, 19 insertions(+) diff --git a/L2J_Mobius_Underground/dist/game/config/General.ini b/L2J_Mobius_Underground/dist/game/config/General.ini index dcdc9bb4da..3676cc6a74 100644 --- a/L2J_Mobius_Underground/dist/game/config/General.ini +++ b/L2J_Mobius_Underground/dist/game/config/General.ini @@ -260,6 +260,10 @@ SaveDroppedItemInterval = 60 # Default: False ClearDroppedItemTable = False +# Order NPC QuestLink list by QuestId. +# Retail: False (but ugly) +OrderQuestListByQuestId = True + # Delete invalid quest from players. # Default: False AutoDeleteInvalidQuestData = False diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java index 3c6bbe10d5..9df72a773e 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java @@ -17,9 +17,12 @@ package handlers.bypasshandlers; import java.util.Collection; +import java.util.Map; import java.util.Set; +import java.util.TreeMap; import java.util.stream.Collectors; +import com.l2jmobius.Config; import com.l2jmobius.gameserver.handler.IBypassHandler; import com.l2jmobius.gameserver.instancemanager.QuestManager; import com.l2jmobius.gameserver.model.actor.L2Character; @@ -94,6 +97,16 @@ public class QuestLink implements IBypassHandler .collect(Collectors.toSet()); //@formatter:on + if (Config.ORDER_QUEST_LIST_BY_QUESTID) + { + final Map orderedQuests = new TreeMap<>(); // Use TreeMap to order quests + for (Quest q : quests) + { + orderedQuests.put(q.getId(), q); + } + quests = orderedQuests.values(); + } + for (Quest quest : quests) { final QuestState qs = player.getQuestState(quest.getScriptName()); diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/Config.java b/L2J_Mobius_Underground/java/com/l2jmobius/Config.java index 277491a166..4615032002 100644 --- a/L2J_Mobius_Underground/java/com/l2jmobius/Config.java +++ b/L2J_Mobius_Underground/java/com/l2jmobius/Config.java @@ -424,6 +424,7 @@ public final class Config public static boolean EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD; public static int SAVE_DROPPED_ITEM_INTERVAL; public static boolean CLEAR_DROPPED_ITEM_TABLE; + public static boolean ORDER_QUEST_LIST_BY_QUESTID; public static boolean AUTODELETE_INVALID_QUEST_DATA; public static boolean ENABLE_STORY_QUEST_BUFF_REWARD; public static boolean PRECISE_DROP_CALCULATION; @@ -1644,6 +1645,7 @@ public final class Config EMPTY_DROPPED_ITEM_TABLE_AFTER_LOAD = General.getBoolean("EmptyDroppedItemTableAfterLoad", false); SAVE_DROPPED_ITEM_INTERVAL = General.getInt("SaveDroppedItemInterval", 60) * 60000; CLEAR_DROPPED_ITEM_TABLE = General.getBoolean("ClearDroppedItemTable", false); + ORDER_QUEST_LIST_BY_QUESTID = General.getBoolean("OrderQuestListByQuestId", true); AUTODELETE_INVALID_QUEST_DATA = General.getBoolean("AutoDeleteInvalidQuestData", false); ENABLE_STORY_QUEST_BUFF_REWARD = General.getBoolean("StoryQuestRewardBuff", true); MULTIPLE_ITEM_DROP = General.getBoolean("MultipleItemDrop", true);