From 82539365a8591596f2f864ca8bd9dbfa90c38599 Mon Sep 17 00:00:00 2001 From: NovaRain Date: Mon, 21 Jun 2021 06:09:32 +0800 Subject: [PATCH] Fixed the algorithm for sorting the quest list (#397) --- sfall/QuestList.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sfall/QuestList.cpp b/sfall/QuestList.cpp index 36a3f359..26fe7842 100644 --- a/sfall/QuestList.cpp +++ b/sfall/QuestList.cpp @@ -441,8 +441,15 @@ static void __fastcall QuestListSort(QuestData* questList, size_t numElements) { QuestData* tmpList = new QuestData[numElements]; std::memcpy(tmpList, questList, numElements * sizeof(QuestData)); - long locStart = 1500; // number from which the locations starting + long locStart = 1500; // message number from which the locations starting size_t leftStart = 0; + long locLast = 0; + + for (size_t i = 0; i < numElements; i++) { + long loc = tmpList[i].location; + if (locStart > loc) locStart = loc; + if (loc > locLast) locLast = loc; + } for (size_t i = 0; i < numElements;) { for (size_t j = leftStart; j < numElements; j++) { @@ -457,7 +464,7 @@ static void __fastcall QuestListSort(QuestData* questList, size_t numElements) { tmpList[j].location = 0; } } - locStart++; + if (++locStart > locLast) break; } delete[] tmpList; }