Package client.inventory


package client.inventory
角色背包與裝備子系統:道具、裝備、寵物的資料模型與持久化。

道具的基底為 Item,裝備 Equip 繼承其上並承載屬性、潛能、卷軸強化等資料; 寵物為 MaplePet。同一型別的道具集中於 MapleInventory 容器(依 MapleInventoryType 區分裝備/消耗/設置/其他/現金等格),其本身為 Iterable<Item>

裝備的附掛物件包含 MapleRing(戒指)、MapleMount(騎乘)、 MapleAndroid(機器人),數值加成定義於 EquipAdditions; 武器類別與各式旗標由 MapleWeaponTypeItemFlagSocketFlagMapleImp 等列舉描述。

持久化方面,ItemLoader 依資料表組(背包/倉庫/現金商城/僱傭商人/快遞/MTS) 從資料庫載入及寫回道具與裝備,MapleInventoryIdentifier 產生道具唯一序號; 寵物指令與飢餓值由 PetDataFactory 讀取 WZ 資料供應。

本子系統僅為資料模型;道具的增刪改、移動、合併等實際操作由 MapleInventoryManipulator 驅動,道具的靜態屬性查詢則來自 MapleItemInformationProvider

  • Class
    Description
    確定性離線單元測試:CustomDataCodec 的 JSON 編解碼,以及 Equip 自訂屬性 API (setCustom / getCustom / getCustomMap / copy / get/setCustomJson)的行為。
    可裝備道具的資料模型,繼承自 Item 並附帶全套裝備屬性。
     
    裝備附加屬性類型的列舉,對應 WZ 資料中裝備的特殊加成鍵名。
     
    確定性離線單元測試:Equip 的「原始素值(誕生之初)」系統 originStats (markOriginStats / recaptureOriginStats / restoreOriginStats=回到原始狀態 / hasOriginStats / getOriginStats / get・setOriginStatsJson / copy)。
    背包操作發生非預期錯誤時拋出的非受檢例外。
    背包道具的基礎資料模型,所有道具類型的共同基底。
    道具旗標位元欄位的列舉定義,對應用戶端協定中的 flag 短整數。
    道具持久化的存取策略列舉,封裝各種道具來源(角色背包、帳號倉庫、現金商城等)的資料庫表名與鍵欄位。
    安卓(Android)裝備的執行期資料模型,負責持久化與地圖上的移動狀態。
     
     
    Imp(精靈伴侶)道具的資料模型,目前尚未啟用。
     
    單一背包分頁(如裝備、消耗、設置、其他、楓點)的記憶體容器。
    全伺服器唯一道具識別碼(uniqueid)的單例產生器。
    背包分頁類型的列舉,對應用戶端協定中的背包類型編號。
    騎乘坐騎(Mount)的執行期狀態模型,持有等級、經驗與疲勞度。
    寵物道具的執行期資料模型,持有寵物狀態、位置與技能旗標。
     
    配對戒指(結婚戒指、好友戒指等)的資料模型,記錄雙方的戒指 ID 與角色關聯。
     
    武器類型的列舉,定義各類武器的傷害乘數與基礎熟練度。
     
    寵物靜態資料的工廠類別,自 WZ 檔案快取寵物指令與飢餓速率。