跳至主要內容

建立 BOSS 階段

BOSS 階段是自訂 BOSS 的一項子機制。這些階段背後的系統極為靈活且強大,因此需要有專屬的說明,以確保你能善用這項功能。

BOSS 階段如何運作?

可以使用以下設定格式,為 EliteMobs 中的任何自訂 BOSS 加入 BOSS 階段:

phases:
- phase_2_boss.yml:0.X
- phase_3_boss.yml:0.Y

註:你最初生成的那個 BOSS(其中包含列出所有其他階段的 phases: 條目)就是第 1 階段的 BOSS。第 1 階段的 BOSS 檔案不應在它自己的 phases: 條目中列出它自己。

這項機制背後的基本用意是讓管理員能在戰鬥中改變自訂 BOSS 的屬性。透過使用上述設定格式,你能在各階段之間完全更換設定檔,意思是你可以改變 99.99% 的屬性——例如能力、傷害倍率、血量倍率、實體類型、偽裝、所穿戴的護甲……

為了達成這點,EliteMobs 會在戰鬥中刪除你的 BOSS,並立即以下一階段的版本取代它。這背後的過程是瞬間完成的,因此通常相當無縫——除非你刻意想要做得華麗一些。BOSS 在轉換後會獲得 1 秒的戰鬥寬限期,以確保視覺效果順暢。

範例

以這個範例階段 BOSS 為例:

檔案:phase_1_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: STRAY
powers:
- attack_gravity.yml
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

檔案:phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml

檔案:phase_3_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: WITHER_SKELETON
powers:
- arrow_rain.yml

這就構成了一個有效的階段 BOSS。如果你生成 phase_1_boss.yml,它會生成一隻擁有上述屬性的流髑(Stray)。當它被打到血量剩下 60% 時,它會立即在同一位置被 phase_2_boss.yml 所構成的自訂 BOSS 取代,因為設定檔指明了 - phase_2_boss.yml:0.60(phase_2_boss.yml 是該自訂 BOSS 的檔名,0.60 是 60% 血量)。請注意,第 2 階段的 BOSS 會以 60% 的血量生成,因為那正是它切換到該階段的時機。 該 BOSS 將擁有 phase_2_boss.yml 檔案上所列的能力。一旦第 2 階段的 BOSS 被打到血量剩下 30%,它就會生成為第 3 階段所設定的 BOSS。請注意,第 3 階段的能力與先前的能力毫無關聯——你可以在各階段之間完全更換能力,就像幾乎所有其他屬性一樣。

進階

繼承的機制

以下是一份在各階段之間不會改變的事項清單:

  • 鏈中的第一個階段 BOSS 決定該 BOSS 會經歷哪些階段,意思是你不應該為階段中的其他 BOSS 加上 phases 條目。

  • 威脅值表 / 傷害表維持不變,意思是戰利品分配與進階仇恨系統不會受到階段切換的影響

  • 切換階段是依據已損失的血量百分比,而這個百分比在各階段之間會被保留。這表示如果你的 BOSS 被設定為在 50% 血量時進入第 2 階段,那麼出現來取代第 1 階段 BOSS 的那個 BOSS 仍會是 50% 血量。這也表示每個階段可以有完全不同的血量數值而不會造成問題。

  • 如果階段 BOSS 透過預設的脫離戰鬥血量回復系統被治療回滿血,它們會回到第 1 階段

  • 同時也是區域 BOSS 的階段 BOSS,在所有階段間共用相同的牽引繩半徑與逾時機制,並會在重生計時器結束後以第 1 階段 BOSS 的身分重生。重生冷卻時間與其他區域 BOSS 設定一律取自第 1 階段 BOSS 的設定。

階段專屬生成位置

預設情況下,BOSS 在切換階段時會停留在它們目前的位置。然而,你可以使用 phaseSpawnLocation 設定,讓 BOSS 在進入某個階段時傳送到特定位置:

檔案:phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml
phaseSpawnLocation: world_name,100,64,100,0,0

你也可以讓 BOSS 在保持於同一世界的情況下傳送:

phaseSpawnLocation: same_as_boss,100,64,100,0,0

這對於打造戲劇性的階段轉換很有用,讓 BOSS 傳送到不同的競技場或位置。

警告

以下是一份運作方式可能起初讓人感到反直覺的機制清單:

  • 如果階段 BOSS 在任何階段中被擊殺,它會掉落該階段的戰利品。這表示如果有人設法太快擊殺階段 BOSS(一擊秒殺),它其實會死亡並掉落為該 BOSS 檔案所設定的戰利品,而那不一定是最終階段。你可以透過將戰利品表設定為此階段 BOSS 所有 BOSS 檔案皆相同來解決這個問題,或確保你的階段 BOSS 擁有足夠的 HP,達到不可能僅靠幾下攻擊就將它們擊殺的程度。或者,你也可以為能夠跳過階段的人準備特殊的戰利品表。

  • 由於階段 BOSS 實際上會在戰鬥中導致自訂 BOSS 生成,它們在生成時會執行其完整的生成程序。因此,在生成訊息與生成時執行的指令方面要小心。此外,階段 BOSS 在切換階段時並不會死亡,它們只是被換成別的東西。這表示在死亡時執行的指令只會為最後一個階段 BOSS 執行,或在玩家設法以足夠傷害跳過某個階段時執行。在生成時執行的指令可用來掛接階段切換。*註:*當 BOSS 因回復到滿血而重置為第 1 階段時,不會發送生成訊息。然而,在戰鬥中轉換到第 2、第 3 階段等時,生成訊息被發送,區域 BOSS 在冷卻後重生時也會發送。

  • 階段 BOSS 在各階段之間可以帶有坐騎或不再帶有坐騎。如果階段 BOSS 在坐騎死亡前就被擊殺,坐騎會延續到下一階段。如果 BOSS 回復至滿血,坐騎會被刪除且 BOSS 會變成無坐騎,除非它被設定為在第 1 階段騎乘某個實體。

  • 由於各階段之間會生成新的自訂 BOSS,一次性生成機制會在各階段之間以及滿血回復時重置。

訣竅與技巧

  • 你可以利用裝備與實體類型能在整場戰鬥中改變這點,讓 BOSS 在戰鬥過程中看起來越來越(或越來越不)危險

  • 雖然可行,但除非心中有特定的設計目標,否則階段 BOSS 擁有的能力最好不要在各階段之間變化得太劇烈,因為玩家更可能享受一場在整場戰鬥中感覺自然的進展。

  • 你可以使用 onSpawn 指令在各階段之間執行指令

  • 你可以使用 song 設定選項為每個階段設定不同的音樂。當 BOSS 進入新階段時,音樂會自動轉換。

  • 階段可用來讓 BOSS 在近戰與遠程模式之間切換,反之亦然

  • 階段 BOSS 是為了打造擁有大量 HP 的強硬 BOSS 而設計的。它們通常最適合作為副本的最終 BOSS 遭遇戰或大型世界 BOSS。

  • 在設計遭遇戰時,請記住增援怪有可能不會在各階段之間被玩家擊殺。

  • BOSS 可以有任意數量的階段,但階段越多,它們就需要越多血量才能讓每個階段都有意義。

API 整合

對於外掛開發者:當 BOSS 在各階段之間切換時,EliteMobs 會觸發 ElitePhaseSwitchEvent 事件。此事件可用來在階段轉換期間建立自訂行為或效果:

@EventHandler
public void onPhaseSwitch(ElitePhaseSwitchEvent event) {
CustomBossEntity boss = event.getCustomBossEntity();
PhaseBossEntity phaseBoss = event.getPhaseBossEntity();
// Your custom logic here
}