Package server.quest


package server.quest
任務系統:任務定義模型與其開始/完成的需求(requirement)與動作(action)。

核心為 MapleQuest——全伺服器共用的任務登錄表(以 questid 為鍵), 每個任務持有開始/完成兩組 MapleQuestRequirement 前置條件與兩組 MapleQuestAction 結算動作,並快取組隊任務資訊與相關怪物對照表。

MapleQuestRequirement(型別由 MapleQuestRequirementType 列舉)描述接受/完成任務的條件, 例如等級上下限、道具、怪物擊殺數、職業、技能、人氣、特性數值等; MapleQuestAction(型別由 MapleQuestActionType 列舉)描述結算給予的回饋, 例如經驗值、楓幣、道具、技能、SP 與特性經驗等,並透過 server.MapleInventoryManipulatorserver.MapleItemInformationProvider 實際發放道具。

任務資料於開服時自 wz_quest* 系列資料表載入。MemRS 是極簡的記憶體列游標: 將各子表整批讀入後在記憶體依鍵分組重播,藉此消除 MapleQuest.initQuests() 原本的 N+1 查詢瓶頸, 而逐欄解析邏輯維持不變。執行期角色的任務進度狀態則由 client.MapleQuestStatus 承載, 腳本化任務的開始/完成另經 scripting.NPCScriptManager 驅動。

  • Class
    Description
    任務系統的核心資料模型,代表一個完整的楓之谷任務定義(接取條件、完成條件與獎勵動作)。
     
    任務動作的資料模型,代表接取或完成任務時對角色施加的單一獎勵或副作用。
     
    任務動作的種類枚舉,對應 WZ 資料中 act.img 各動作節點的名稱與數字代碼。
    任務前置條件的資料模型,代表接取或完成任務時需滿足的單一條件項目。
    任務前置條件的種類枚舉,對應 WZ 資料中 check.img 各條件節點的名稱與數字代碼。
    極簡「記憶體列游標」(In-Memory Result cursor)。
    某資料表全表內容,依鍵欄分組後可逐鍵發出獨立游標(每次 MemRS.Grouped.rows(int) 都是全新游標)。