Package server.quest
package server.quest
任務系統:任務定義模型與其開始/完成的需求(requirement)與動作(action)。
核心為 MapleQuest——全伺服器共用的任務登錄表(以 questid 為鍵),
每個任務持有開始/完成兩組 MapleQuestRequirement 前置條件與兩組
MapleQuestAction 結算動作,並快取組隊任務資訊與相關怪物對照表。
MapleQuestRequirement(型別由 MapleQuestRequirementType 列舉)描述接受/完成任務的條件,
例如等級上下限、道具、怪物擊殺數、職業、技能、人氣、特性數值等;
MapleQuestAction(型別由 MapleQuestActionType 列舉)描述結算給予的回饋,
例如經驗值、楓幣、道具、技能、SP 與特性經驗等,並透過 server.MapleInventoryManipulator 與
server.MapleItemInformationProvider 實際發放道具。
任務資料於開服時自 wz_quest* 系列資料表載入。MemRS 是極簡的記憶體列游標:
將各子表整批讀入後在記憶體依鍵分組重播,藉此消除 MapleQuest.initQuests() 原本的 N+1 查詢瓶頸,
而逐欄解析邏輯維持不變。執行期角色的任務進度狀態則由 client.MapleQuestStatus 承載,
腳本化任務的開始/完成另經 scripting.NPCScriptManager 驅動。
-
ClassDescription任務系統的核心資料模型,代表一個完整的楓之谷任務定義(接取條件、完成條件與獎勵動作)。任務動作的資料模型,代表接取或完成任務時對角色施加的單一獎勵或副作用。任務動作的種類枚舉,對應 WZ 資料中
act.img各動作節點的名稱與數字代碼。任務前置條件的資料模型,代表接取或完成任務時需滿足的單一條件項目。任務前置條件的種類枚舉,對應 WZ 資料中check.img各條件節點的名稱與數字代碼。極簡「記憶體列游標」(In-Memory Result cursor)。某資料表全表內容,依鍵欄分組後可逐鍵發出獨立游標(每次MemRS.Grouped.rows(int)都是全新游標)。