Package server.life
package server.life
場景生命實體子系統:怪物與 NPC 的資料模型、生成資料、怪物資訊工廠與生命工廠。
所有可載入的場景生命體共同繼承 AbstractLoadedMapleLife(再上溯至
server.maps.AnimatedMapleMapObject):戰鬥用的 MapleMonster、對話用的
MapleNPC 與玩家化身 PlayerNPC。怪物的靜態屬性由 MapleMonsterStats
描述,並可在執行期以 ChangeableStats 或 OverrideMonsterStats 覆寫;
放逐效果由 BanishInfo 承載,屬性相剋則以 Element 與
ElementalEffectiveness 表示。
怪物技能與攻擊資訊為 MobSkill、MobAttackInfo,由 MobSkillFactory
從 WZ 資料載入。掉落表以 MonsterDropEntry 與 MonsterGlobalDropEntry 表示,
怪物死亡回呼介面為 MonsterListener。場景刷怪由抽象 Spawns 及其實作
SpawnPoint、SpawnPointAreaBoss 驅動。
MapleLifeFactory 是建立 MapleMonster/MapleNPC 實例的入口,
MapleMonsterInformationProvider 則提供掉落表與怪物名稱等查詢;兩者皆讀取
provider 的 WZ 資料。本 package 與 MapleMap 場景系統、
怪物擊殺/掉落流程(server.maps.MapleMonsterKillManager)緊密協作。
-
ClassDescription地圖上所有「已從 WZ 載入」生物(怪物與 NPC)的抽象基底類別。怪物擊殺後強制傳送(放逐)玩家的目的地資訊值物件。依場景規則動態計算後的怪物可變數值,繼承
OverrideMonsterStats以複寫基礎 HP/MP/EXP。楓之谷中的元素屬性列舉,用於描述技能與怪物的元素類型。怪物對特定元素屬性的相剋效果列舉,以傷害倍率表達。從 WZ 資料建立怪物與 NPC 實例的靜態工廠,是server.life套件的主要入口。地圖上「活的」怪物實體,封裝其執行期狀態、傷害結算與死亡處理。怪物掉寶資訊的單例提供者,負責從資料庫載入並快取每隻怪物的掉落表。從 WZ 資料解析後的怪物靜態數值快取,描述一種怪物的完整設定。地圖上的 NPC 實體,繼承AbstractLoadedMapleLife並實作地圖物件生命週期介面。怪物單次攻擊行為的詳細設定值物件,對應 WZattack[N]/info節點。怪物技能的執行時期資料模型,持有技能屬性並負責效果套用。怪物技能的單例工廠,負責從資料庫載入並快取所有MobSkill實例。單一怪物掉落項目的資料持有類別,記錄特定怪物掉落表的一筆設定。跨怪物全域掉落項目的資料持有類別,代表適用於所有(或特定大陸)怪物的掉落設定。怪物生命週期事件的監聽器介面,供出怪點追蹤怪物死亡並安排下次重生。怪物數值覆寫容器,允許在特定情境下取代 WZ 原始 HP、MP 與 EXP 設定。以玩家外觀呈現的特殊 NPC,將角色的髮型、臉型、膚色、裝備與寵物鏡像到遊戲地圖上。一般怪物出怪點,持有位置、重生計時與嘉年華設定,並負責實際生成MapleMonster。區域 Boss 的出怪點,在三個候選位置之一隨機生成 Boss,並以AtomicBoolean確保同時只有一隻存活。出怪點的抽象基底類別,定義所有出怪邏輯必須實作的合約。