技能系統
EliteMobs 使用以技能為基礎的進程系統,玩家透過與精英怪戰鬥來提升等級。玩家發展的並非單一的全域等級,而是各自獨立的武器技能與一項盔甲技能,這些技能共同決定他們的整體實力。
共有 11 種技能類型:
| 技能 | 武器 | 備註 |
|---|---|---|
| Swords | 任何 _SWORD | |
| Axes | 任何 _AXE | |
| Bows | BOW | |
| Crossbows | CROSSBOW | |
| Tridents | TRIDENT | |
| Hoes (Scythes) | 任何 _HOE | |
| Maces | MACE | 需要 Minecraft 1.21+ |
| Spears | 任何 _SPEAR | 需要 Minecraft 1.21.11+(搭配資源包) |
| 法杖 | experimental_arcane_staff | |
| 魔棒 | experimental_arcane_wand | |
| Armor | 頭盔、胸甲、護腿、靴子 | 被動提升 |
技能透過使用對應的武器擊殺精英怪來提升。你的戰鬥等級(由你的技能計算而來)決定了你能存取哪些內容、能裝備哪些裝備,以及在你周圍生成何種難度的怪物。
技能如何提升
當你擊殺一隻精英怪時,你會依據該怪物的等級賺取經驗值。經驗值的分配方式如下:
- 武器 XP 按傷害貢獻分配給命中或發射投射物時記錄的技能。怪物死亡時切換武器不會改變 XP 的歸屬。
- 護甲 XP 自動按你分得 XP 的 1/3 倍率獲得。使用多種武器時,護甲技能可能高於某個單獨的武器技能。
- 團隊戰鬥: 當多名玩家對同一隻精英造成傷害時,經驗值會依據每位玩家的傷害貢獻按比例分配。如果你造成了 60% 的傷害,你就賺取基礎經驗值的 60%。
怪物提供的基礎經驗值
擊殺一隻怪物所賺取的基礎經驗值為:
mob_xp = mob_level ^ 2
| 怪物等級 | 賺取的經驗值 |
|---|---|
| 1 | 1 |
| 10 | 100 |
| 25 | 625 |
| 50 | 2,500 |
| 100 | 10,000 |
Boss 經驗值倍率
更強悍的怪物價值更高。上述基礎經驗值會乘上一個由該怪物 healthMultiplier 與 damageMultiplier 推導出的係數:
bossXPMultiplier = healthMultiplier^0.6 * (1 + (damageMultiplier - 1) * 0.15)
生命值部分使用次線性指數(0.6),讓較長的戰鬥有更高報酬,同時避免高生命值 Boss 變得不成比例地適合刷取。傷害部分則被大幅抑制,因為即使傷害小幅提升也會大幅拉高難度,而線性報酬會推使玩家去挑戰自殺式目標。
| healthMultiplier | damageMultiplier | 經驗值倍率 |
|---|---|---|
| 1.0 | 1.0 | 1.00x |
| 3.0(小 Boss) | 1.2 | 1.99x |
| 7.0(Boss) | 1.4 | 3.41x |
| 40.0(世界 Boss) | 1.5 | 9.83x |
擊殺時完整的運算順序為:有效怪物等級(在下述反濫用上限之後)→ 基礎經驗值 → Boss 倍率 → 依傷害貢獻分配 → 武器經驗值與盔甲經驗值。
反濫用防護
以下三項全都設定於 AntiExploit.yml,並在 enableFarmingProtection 為 false 時完全略過。完整設定表請參閱刷怪防護。
- 低等級怪物(依技能而定): 每項武器/盔甲技能只有在怪物等級至多低於該特定技能等級
farmingProtectionLevelDifference(預設15)級時才會獲得經驗值。此檢查使用的是個別技能等級,而非你的戰鬥等級,並且在調整型戰鬥下會被完全略過,因為那時怪物已被正規化到玩家身上,「等級太低」毫無意義。 - 高等級怪物: 技能經驗值使用的有效獎勵等級上限為
combat_level + farmingProtectionLevelDifference(預設15)。同一上限也適用於自然精英怪的戰利品;自訂 Boss 的戰利品不使用此刷怪防護等級上限。獲得經驗值的其他資格條件仍然生效。 - 自然精英刷怪上限: 自然(非自訂 Boss)精英擊殺會在一個長度為
farmingProtectionMinutes(預設30)的滾動視窗中被計數。在該視窗內超過farmingProtectionKills(預設20)次擊殺,會讓你被鎖定自然精英獎勵一整個視窗。鎖定開始時你會在聊天中收到通知,解除時也會再收到一則。自訂 Boss 不受此限。
經驗值進程
從目前等級提升到下一級所需的經驗值遵循此公式:
等級 1-100:
xp_to_next_level = 8.5 * current_level ^ 3
等級 100 以上(軟上限):
xp_to_next_level = 8.5 * current_level ^ 3 * (1 + ((current_level - 100) ^ 2 / 100))
軟上限倍率在等級 100 時為 1.0(無額外懲罰),並以二次方成長。到了等級 150,倍率達到 26 倍,使後續進程變得極為困難。
每級經驗值表
下表顯示從某個給定等級提升到下一級所需的經驗值,以及大約需要擊殺多少同等級怪物才能達成(武器技能,非盔甲):
| 等級 | 升至下一級所需經驗值 | 擊殺同等級怪物數量 |
|---|---|---|
| 10 | 8,500 | 85 |
| 25 | 132,812 | 213 |
| 50 | 1,062,500 | 425 |
| 75 | 3,585,937 | 638 |
| 100 | 8,500,000 | 850 |
盔甲以武器 1/3 的速率賺取經驗值,因此與上表的數字相比,提升盔甲大約需要 3 倍的擊殺數。在等級 50 時,這表示光是盔甲就需要約 1,275 次同等級擊殺。
戰鬥等級
你的戰鬥等級是衡量你實力的整體指標。其計算方式為:
combat_level = (highest_weapon_skill + second_highest_weapon_skill + armor_skill) / 3
結果會向下取整(整數除法)。
戰鬥等級決定:
- 在你周圍生成的精英怪等級
- 你能裝備的裝備(裝備等級必須等於或低於你對應的技能等級)
- 你能存取哪些地下城與實例化內容
- 經驗值與戰利品的資格(反濫用檢查使用戰鬥等級)
戰鬥等級顯示
你的戰鬥等級會以漂浮在你頭頂上方的數字顯示,其他玩家也能看見。這使用基於封包的文字顯示,並會在你的技能改變時自動更新。顯示格式可自訂(預設:Combat Lv. X)。
經驗值條
當你賺取技能經驗值時,會出現一條帶動畫的 Boss 血條,顯示你朝下一級的進度。此血條具有:
- 隨經驗值獲得而緩緩攀升的流暢動畫
- 每種技能類型不同的顏色(例如劍為紅色、弓為綠色、盔甲為藍色)
- 升級時的特殊粒子與音效
- 閒置 5 秒後自動隱藏
裝備限制
EliteMobs 裝備有與技能系統綁定的等級需求。若要裝備一件精英物品,你對應該武器或盔甲類型的技能等級必須等於或高於該物品的等級。
例外: 等級 20 或以下的物品,任何人都能裝備,不受技能等級限制。這確保新玩家能自由使用前期裝備,而不會被擋在門外。
如果你試圖裝備一件超過你技能等級的物品,你會收到一則警告訊息,且該物品將不提供任何精英加成。
技能獎勵
隨著你提升技能,你會分四個階層解鎖特殊的戰鬥能力。每個階層解鎖的是該技能的一組獎勵,而非單一個:
| 階層 | 解鎖等級 |
|---|---|
| 1 | 等級 10 |
| 2 | 等級 25 |
| 3 | 等級 50 |
| 4 | 等級 75 |
解鎖某個階層並不會給你一個欄位。你每種武器或盔甲類型一次最多可擁有 3 個啟用中的獎勵,從你已解鎖的所有獎勵中挑選。技能獎勵可透過 /em 選單,或前往冒險者公會中的技能獎勵 NPC 來管理。
skillbonuses/*.yml 檔案控制顯示名稱、說明、解鎖階層、獎勵類型、選單圖示及 lore 範本,也控制部分平衡數值。當某個獎勵讀取其設定時,外掛會使用 baseValue、scalingPerLevel、procChance、cooldownSeconds、maxStacks 和 stackBonus。不讀取這些設定項目的獎勵則使用程式碼中的固定常數。各獎勵具體從設定中讀取哪些值,請參閱技能獎勵。
關於全部 84 個獎勵的完整列表及其作用,請參閱技能獎勵。
通知與 UI
技能系統提供多種形式的回饋:
- 升級: 每次升級時的標題訊息、挑戰完成音效,以及不死圖騰粒子爆發。
- 里程碑: 只有當玩家達到里程碑等級(每第 5 級:5、10、15、……)時才會發送全伺服器廣播。一般升級不會廣播。此廣播可在
dungeons.yml中關閉。 - 戰鬥等級顯示: 漂浮在你頭頂的數字,其他玩家可見。升級時自動更新。
- 經驗值條: 戰鬥期間顯示技能經驗值進度的動畫 Boss 血條。
- 經驗值獲得訊息: 選用的每次擊殺經驗值訊息(預設停用,因為可能造成洗版)。
上述大部分項目在 skills.yml 中設定;里程碑升級廣播及其訊息則位於 dungeons.yml。
管理員指令
| 指令 | 權限 | 說明 |
|---|---|---|
/em skill check <player> | elitemobs.skill.check | 查看玩家的技能等級、經驗值進度與百分比 |
/em skill set <player> <skillType> <level> | elitemobs.skill.admin | 將特定技能設為某個給定等級 |
/em skill setAll <player> <level> | elitemobs.skill.admin | 將所有技能設為相同等級 |
/em debug combat start | elitemobs.admin | 開始自動化戰鬥系統測試 |
/em debug combat test <type> | elitemobs.admin | 測試特定武器類型(例如劍、弓) |
/em debug combat results | elitemobs.admin | 查看上一次戰鬥測試的結果 |
/em debug combat cancel | elitemobs.admin | 取消進行中的戰鬥測試 |
/em skill set 的 skillType 參數接受:ARMOR、SWORDS、AXES、BOWS、CROSSBOWS、TRIDENTS、HOES、MACES、SPEARS, STAVES, WANDS。
伺服器設定
技能系統在 skills.yml 中設定。主要設定如下:
| 設定 | 預設 | 說明 |
|---|---|---|
skillSystemEnabled | true | 啟用或停用整個技能系統 |
armorSkillHealthBonusEnabled | true | 盔甲技能是否給予額外的最大生命值(等級每高於 1 級 +1 顆心) |
scalePlayerHealthDisplayToVanilla | false | 保留 EliteMobs 的最大 HP,但在視覺上將玩家 HUD 縮放回原版的 10 顆心 |
forceDefaultHealthWhenArmorSkillHealthBonusDisabled | false | 當盔甲生命值加成停用時,於玩家加入時強制其回到原版 20 點最大生命值 |
skillWorldExclusions | (空) | 技能系統不作用的世界名稱列表。位於這些世界的玩家不會獲得技能經驗值、盔甲生命值加成、經驗值條或戰鬥等級顯示。對於希望所有人平等的活動世界很有用。比對不分大小寫 |
skillsMenuTitle | &5&lYour Skills | 技能選單標題 |
showCombatLevelDisplay | true | 在玩家上方顯示戰鬥等級數字 |
showXPBar | true | 在戰鬥期間顯示動畫經驗值進度條 |
skillBarTitleFormat | &6$skillName &7Lv.$level$xpText | 經驗值條標題格式 |
skillLevelUpTitleFormat | &e&l✦ $skillName LEVEL UP! &7→ &eLv.$level &e&l✦ | 升級 Boss 血條標題格式 |
combatLevelFormat | &6&lCombat Lv. $level | 戰鬥等級顯示格式 |
如需完整的設定參考,請參閱 EliteMobs 設定頁面。
實驗性戰鬥
目前建置包含獨立的實驗性職業系統。plugins/EliteMobs/Experimental Combat.yml 中的 enabled 預設為 true;設為 false 並重新載入 EliteMobs 可停用模組。實驗期間職業定義與平衡值固定在外掛中。舊伺服器套用本節前,應檢查已安裝版本及產生的設定。
/em class 開啟職業資料,/em class info <class> 查看形態說明,/em class select <class> 選擇已解鎖形態。這些玩家指令需要 elitemobs.command。基礎職業為 paladin、berserker、ranger、cleric、spellcaster。Spellcaster 需要相容的 FreeMinecraftModels 及其內建法杖和魔棒,內容不可用時保持鎖定。法杖與魔棒使用已註冊物品身分;普通木棒、長矛或烈焰桿不會自動變成魔法武器。
/em class input java_hotbar_layer 使用 F 後按 1/2/3 觸發 Mobility、Signature、Utility。/em class input focus_item 選擇替代的 Focus 物品操作,/em class focus 領取該物品。EliteMobs 戰鬥內容中預設啟用職業操作。allowClassAbilitiesOutsideEliteMobsWorlds 預設為 true,允許玩家在其他區域潛行時連按兩次 F,為目前工作階段啟用操作。
模組啟用時,GUILD_GREETER 開啟 Guild Training;停用時開啟武器技能加成選擇選單。職業成長獨立於武器和護甲成長;不帶武器身分的職業技能傷害不會獲得武器 XP。