Class MapleMonsterInformationProvider
java.lang.Object
server.life.MapleMonsterInformationProvider
怪物掉寶資訊的單例提供者,負責從資料庫載入並快取每隻怪物的掉落表。
主要職責:
load()— 啟動時從drop_data/drop_data_global資料表批次載入個別掉落(MonsterDropEntry)與全域掉落(MonsterGlobalDropEntry)。addExtra()— 補充 WZMonsterBook.img的 reward 節點、 怪物圖鑑道具,以及移除資料庫中不存在於MapleItemInformationProvider的無效道具。addMeso— 依怪物等級與 Boss 標記計算金幣掉落條目。clearDrops()— 支援 GM 指令!reloaddrops,清除並重新載入所有掉落資料。
DatabaseConnection 存取資料庫;
掉落表在擊殺流程由 MapleMonsterKillManager 透過此類別查詢後執行道具投擲。-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddExtra()voidaddMeso(MapleMonsterStats mons, ArrayList<MonsterDropEntry> ret) intchanceLogic(int itemId) voidbooleancontains(ArrayList<MonsterDropEntry> e, int toAdd) 取得所有怪物 id → 名稱對照表(首次呼叫時自 WZString.wz/Mob.img延遲載入並快取)。getDrops()voidload()retrieveDrop(int monsterId) void啟動「活動限定掉落」的時間邊界自動偵測排程。
-
Constructor Details
-
MapleMonsterInformationProvider
public MapleMonsterInformationProvider()
-
-
Method Details
-
getInstance
-
getGlobalDrop
-
load
public void load() -
retrieveDrop
-
addExtra
public void addExtra() -
addMeso
-
clearDrops
public void clearDrops() -
startEventDropScheduler
public void startEventDropScheduler()啟動「活動限定掉落」的時間邊界自動偵測排程。由
server.Start於開服流程(掉落資料載入完畢、Timer.WorldTimer已啟動後)呼叫一次。 之後每分鐘檢查一次:若任一活動限定掉落(MonsterGlobalDropEntry.eventOnly)的開始或結束時間自上次檢查以來 已被跨越,即自動重新載入掉落資料(等同 GM 指令!reloaddrops的全域掉落部分),讓活動掉落即時生效或失效。注意:掉落是否生效的「真值來源」是擊殺當下對
MonsterGlobalDropEntry.isActiveAt(long)的即時判定 (零延遲),本排程的重載主要用於與資料庫重新同步(撿拾活動期間的手動編輯)並留下日誌,屬輔助性質。 -
contains
-
chanceLogic
public int chanceLogic(int itemId) -
getAllMonsters
-
getDrops
-