跳至主要內容

建立世界Boss

世界Boss 有時也被稱為區域型 Boss(Regional Boss)。

它們是什麼?

世界Boss 是設定為在特定位置、以特定延遲生成的自訂 Boss。這些也是在地城中使用的 Boss。不過在本章節中,我們會特別討論製作用於地城之外的世界Boss。

它們的用途是什麼?

世界Boss 讓玩家能夠面對一個固定的挑戰,同時知道戰利品會很豐厚。

我需要什麼才能製作一個世界Boss?

  1. 一個地點。建議設置一個 Boss 房間,由於 Minecraft 的仇恨範圍,半徑約 15 格(直徑 30 格)為佳。此外,請確保地形透過 WorldGuard 區域受到保護(這樣玩家就不能建造陷阱),並確保地形無法被利用於戰鬥。
  2. 一個重生時間。重生計時器至關重要。我不建議設定少於 30 分鐘的重生計時器,否則 Boss 的重生就不太像是一個事件了。1 小時是相當不錯的時間,但你也可能會想讓 Boss 每天重生一次,甚至每週重生一次。
  3. 一個逃脫時間。重生時間越長,逃脫時間就應該越長。同時也要考量到逃脫時間應該夠長,讓玩家能夠從容地挑戰 Boss。如果你不想讓玩家以自殺式攻擊把 Boss 磨死,逃脫計時器就很重要。這並非強制,如果你想製作大規模的、長達一週重生的 Boss,甚至不建議使用。
  4. 一個自訂 Boss。世界Boss 其實就是具有自訂生成規則的自訂 Boss。請務必選擇對團隊規模戰鬥相容性良好的 powers。
  5. 有趣的戰利品。世界Boss 的最大吸引力,除了挑戰本身之外,就是戰利品。請確保玩家能從中獲得他們在其他地方根本無法取得的東西。
  6. 一個主題。一個優秀的區域型 Boss 應該要有主題,搭配符合主題的地點與符合主題的戰利品。

用於世界Boss 的自訂 Boss 設定選項:

這些設定會加入到一般的自訂 Boss 設定檔中。關於這些設定的詳盡 Wiki 頁面可在此處找到


isRegionalBoss

設定該 Boss 是否為區域型 Boss。區域型 Boss 是世界Boss 的另一個名稱,因此你會想把它設定為 true

KeyValuesDefault
isRegionalBoss布林值false
範例
isRegionalBoss: true

spawnLocations

生成位置應在遊戲內使用 /em place boss <filename.yml> 指令來設定。

雖然可以手動從設定檔中加入位置,但我不建議嘗試這麼做,因為實在太容易出錯了。

KeyValuesDefault
spawnLocations字串列表
範例

設定檔中的位置(適用於進階使用者)。區域型 Boss 的設定檔會將該區域型 Boss 的所有實例存放在單一檔案中,方式是儲存多個生成位置以及重生計時器。

實際上,這表示這個條目:

spawnLocations:
- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931
- elitemobs_sewer_maze,-135.02262355317436,168.2,-153.28849346821508,-98.53906,60.750263:1609026066482
- elitemobs_sewer_maze,-70.43846307626053,168.2,-174.13499832314378,-271.24023,64.19999:1610710886530
- elitemobs_sewer_maze,-130.39762674971664,168.2,-171.67396911490718,-47.532227,51.900173:1609026066482
- elitemobs_sewer_maze,-117.12782160766056,162.2,-166.40989416757444,-71.37402,-1.4997427:1610710974882
- elitemobs_sewer_maze,-105.13138759611667,168.2,-169.85898023126538,-124.34766,41.24988:1610710945331
- elitemobs_sewer_maze,-106.21847515732084,169.2,-152.3609257554766,-170.86523,21.450315:1610537606222

包含 7 個不同的區域型 Boss,位於不同位置,並具有不同的重生計時器。

讓我們來逐一拆解細節,看看第一個區域型 Boss:

- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931

由於這遵循 world,x,y,z,pitch,yaw:unixTimeStamp 的格式,該 Boss 生成在一個名為 elitemobs_sewer_maze 的世界中,位於 x = -70.17178578884845,y = 168.2,z = -173.17112099568718,pitch = -271.24023,yaw = 64.19999

unix 時間戳記以 unix 時間儲存了 Boss 將重生的時間。這用於跨重新啟動保存重生時間。如果你想知道那對應到什麼時間,你可以在網路上找到無數的 unix 時間轉真實時間的轉換工具。

如果你希望某個特定的 Boss 在重新載入或重新啟動後就重生,你只需要刪除 :unixTimeStamp 部分(包含冒號),讓條目看起來像這樣:world,x,y,z,pitch,yaw


spawnCooldown

設定 Boss 重生所需的時間,以分鐘計。

注意:建議大型 Boss 使用較長的重生時間!

KeyValuesDefault
spawnCooldown整數0
範例
spawnCooldown: 20

timeout

設定 Boss 在自動逃脫/消失之前保持活躍的時間,以分鐘計。設定為 0 時,Boss 永遠不會逾時。

注意:這應該夠長,讓玩家能夠從容地完成戰鬥。

KeyValuesDefault
timeout整數0
範例
timeout: 60

設定 Boss 在 60 分鐘後若未被擊敗就逃脫。


leashRadius

設定世界Boss 從 spawnLocation 起算、在被傳送回其生成點之前所能到達的半徑。這可防止玩家把 Boss 拖到更容易與其戰鬥的位置。

注意:請盡量避免製作需要短於 20 格牽引(leash)的戰鬥區域,因為這會讓戰鬥體驗變差。

KeyValuesDefault
leashRadius雙精度浮點數
範例
leashRadius: 30

escapeMessage

設定當 Boss 因逾時而逃脫時向玩家廣播的訊息。會與 timeout 及 announcementPriority 設定搭配運作。

KeyValuesDefault
escapeMessage字串
範例
escapeMessage: "&cThe World Boss has escaped!"

announcementPriority

設定 Boss 生成/死亡/逃脫公告的優先順序等級。數值越高會顯示越多公告,並啟用額外功能。

等級行為
0靜默(無公告、無追蹤)
1僅聊天訊息(生成/死亡/逃脫公告)
2第 1 級 + 玩家可透過 /em 選單追蹤
3第 2 級 + Discord 通知(若已設定)
KeyValuesDefault
announcementPriority整數0
範例
announcementPriority: 3

設定 Boss 在聊天欄與 Discord 中公告,並允許玩家追蹤它。


isPersistent

控制 Boss 是否能在區塊卸載時存活。所有世界Boss 都應設定為 true,以防止它們在區塊卸載時消失。

注意:太多持久性 Boss(數百個)可能會導致效能問題。

KeyValuesDefault
isPersistent布林值false
範例
isPersistent: true

removeAfterDeath

決定世界Boss 在被擊敗後是否永久移除。對於一次性的事件 Boss 或不應重生的特殊遭遇戰很有用。

當為 false(預設)時,Boss 會在 spawnCooldown 期間過後重生。 當為 true 時,Boss 會從生成位置列表中永久刪除。

KeyValuesDefault
removeAfterDeath布林值false
範例
removeAfterDeath: true

過渡方塊(Transitive Blocks)

也稱為 onSpawnBlockStatesonRemoveBlockStates

這些數值讓區域型 Boss 能夠在進入戰鬥時生成方塊,並在被移除時移除這些方塊,亦即當它們因逾時而逃脫或死亡時。

這就是你能讓 Boss 開啟或關閉門/區域的方式,如果搭配階段型 Boss 使用,甚至能在戰鬥中改造競技場!

KeyValuesDefault
onSpawnBlockStates參閱詳細說明
KeyValuesDefault
onRemoveBlockStates參閱詳細說明
詳細說明

所有方塊都是相對於生成位置的。在開始設定任何方塊之前,請確保你已確定最終的生成位置。


如果你已經製作了一個大型的過渡方塊區域,但現在需要移動 Boss,又不想重做過渡方塊,那麼你可以使用 EliteScript 的傳送(Teleport)動作,在 Boss 生成後將它移動到正確的位置。但請記住,你必須相應地調整你的牽引(leash)。

由於設定方塊的複雜性,不建議你手動進行。你應該使用以下指令來完成:

  • /em transitiveBlocks register <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks edit <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks registerArea <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks editArea <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks cancel

讓我們來逐一拆解。

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

最基本的指令。這是一個開關,你執行一次以開始,再執行一次以提交。和所有其他指令一樣,你選擇要將這些方塊設定為在 ON_SPAWN(生成時)或 ON_REMOVE(移除時)狀態下被修改。

如果註冊的是 ON_SPAWN,這會在 Boss 生成或重生時修改方塊。如果註冊的是 ON_REMOVE,這會在 Boss 死亡或使用自訂 Boss 逾時機制逾時時修改方塊。

要註冊方塊,只需在此設定開啟時放置或移除你想修改的方塊即可。

/em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

如果你想修改已設定的方塊,可以使用此指令。運作方式與 /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE> 非常類似。

/em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE> 一樣,這讓你能夠註冊方塊,但它允許透過選取兩個對角頂點(與 worldedit/worldguard 的區域選取相同)來選取方塊,而非逐一選取方塊。

基於安全考量,區域選取有 500 格的上限(預設值,可透過 config.yml 中的 defaultTransitiveBlockLimiter 修改)。請記住,每個方塊都在同一刻被修改,因此如果你修改大量地形,在執行這些修改時你很可能會開始看到嚴重的延遲尖峰。

/em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

運作方式與 /em transitiveBlocks edit 相同,但用於區域。可用於超越區域的 500(預設)格註冊上限。

/em transitiveBlocks cancel

在任何時候,如果在註冊方塊時出錯,你可以執行此指令來取消註冊。它會還原你在該次編輯/註冊中所開始註冊的任何變更。


製作優秀大型區域型 Boss 戰的專業提示

  1. 真正思考你的自訂 Boss 上的 powers 如何互補。你不會希望你的 Boss 大部分時間都停在原地,因為它正在施放某個技能,因為那實際上會讓戰鬥變得很簡單。除非你正在設計某種非常特定的東西,否則你也不會希望 Boss 全是遠程攻擊而沒有近戰 powers,或是反過來。試玩測試很重要。

  2. 生命值 —— 要很多。如果你希望人們真的會組隊來與 Boss 戰鬥,那麼那個生命值倍率大概應該穩穩地設在 10。

  3. 傷害 —— 別太多。EliteMobs 預設就已經極度致命,而 powers 往往致命程度呈指數級增長。與其把傷害衝破天際,不如考慮使用 powers 來讓 Boss 打得更痛。

  4. 漏洞,無處不在。請格外確保地形無法被利用。把 Boss 放在一個封閉的房間裡,以防止人們試圖從遠處狙擊它。箭矢無敵 power 對於許多世界Boss 而言大概極為重要,因為 Minecraft 怪物無法應付從好幾個區塊外被狙擊,所以如果你想允許弓箭攻擊,請確保弓不會被利用。

  5. 了解外掛。擊敗 EliteMobs 有許多小技巧,例如某些 powers 可以用盾牌格擋來反制,而其他的則應該透過閃避,甚至暫時遠離 Boss 來反制。你越了解 powers 如何運作以及如何反制,你所製作的 Boss 就會越好。


完整世界Boss 範例

以下是一個使用本指南涵蓋的所有設定的完整世界Boss 設定範例:

isEnabled: true
entityType: ZOMBIE
name: "&cThe Zombie King"
level: 50
healthMultiplier: 10.0
damageMultiplier: 2.0

# 世界Boss 專屬設定
isRegionalBoss: true
isPersistent: true

# 生成設定
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60

# 戰鬥邊界
leashRadius: 30
timeout: 20

# 訊息與公告
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2

# 競技場改造
onSpawnBlockStates:
- 0,0,0,BARRIER
onRemoveBlockStates:
- 0,0,0,AIR

# Boss 功能
powers:
- zombie_reinforcements.yml
- ground_pound.yml
uniqueLootList:
- magmaguys_toothpick.yml

這個 Boss 會:

  • 在被擊敗後每 60 分鐘於指定位置生成
  • 在 20 分鐘後若未被擊敗就逃脫
  • 在聊天欄中公告生成/死亡/逃脫,並允許玩家追蹤
  • 在區塊卸載時存活
  • 在生成與死亡時改造競技場方塊
  • 在被擊敗時掉落獨特戰利品