建立世界Boss
世界Boss 有時也被稱為區域型 Boss(Regional Boss)。
它們是什麼?
世界Boss 是設定為在特定位置、以特定延遲生成的自訂 Boss。這些也是在地城中使用的 Boss。不過在本章節中,我們會特別討論製作用於地城之外的世界Boss。
它們的用途是什麼?
世界Boss 讓玩家能夠面對一個固定的挑戰,同時知道戰利品會很豐厚。
我需要什麼才能製作一個世界Boss?
- 一個地點。建議設置一個 Boss 房間,由於 Minecraft 的仇恨範圍,半徑約 15 格(直徑 30 格)為佳。此外,請確保地形透過 WorldGuard 區域受到保護(這樣玩家就不能建造陷阱),並確保地形無法被利用於戰鬥。
- 一個重生時間。重生計時器至關重要。我不建議設定少於 30 分鐘的重生計時器,否則 Boss 的重生就不太像是一個事件了。1 小時是相當不錯的時間,但你也可能會想讓 Boss 每天重生一次,甚至每週重生一次。
- 一個逃脫時間。重生時間越長,逃脫時間就應該越長。同時也要考量到逃脫時間應該夠長,讓玩家能夠從容地挑戰 Boss。如果你不想讓玩家以自殺式攻擊把 Boss 磨死,逃脫計時器就很重要。這並非強制,如果你想製作大規模的、長達一週重生的 Boss,甚至不建議使用。
- 一個自訂 Boss。世界Boss 其實就是具有自訂生成規則的自訂 Boss。請務必選擇對團隊規模戰鬥相容性良好的 powers。
- 有趣的戰利品。世界Boss 的最大吸引力,除了挑戰本身之外,就是戰利品。請確保玩家能從中獲得他們在其他地方根本無法取得的東西。
- 一個主題。一個優秀的區域型 Boss 應該要有主題,搭配符合主題的地點與符合主題的戰利品。
用於世界Boss 的自訂 Boss 設定選項:
這些設定會加入到一般的自訂 Boss 設定檔中。關於這些設定的詳盡 Wiki 頁面可在此處找到。
isRegionalBoss
設定該 Boss 是否為區域型 Boss。區域型 Boss 是世界Boss 的另一個名稱,因此你會想把它設定為 true。
| Key | Values | Default |
|---|---|---|
isRegionalBoss | 布林值 | false |
範例
isRegionalBoss: true
spawnLocations
生成位置應在遊戲內使用 /em place boss <filename.yml> 指令來設定。
雖然可以手動從設定檔中加入位置,但我不建議嘗試這麼做,因為實在太容易出錯了。
| Key | Values | Default |
|---|---|---|
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 使用較長的重生時間!
| Key | Values | Default |
|---|---|---|
spawnCooldown | 整數 | 0 |
範例
spawnCooldown: 20
timeout
設定 Boss 在自動逃脫/消失之前保持活躍的時間,以分鐘計。設定為 0 時,Boss 永遠不會逾時。
注意:這應該夠長,讓玩家能夠從容地完成戰鬥。
| Key | Values | Default |
|---|---|---|
timeout | 整數 | 0 |
範例
timeout: 60
設定 Boss 在 60 分鐘後若未被擊敗就逃脫。
leashRadius
設定世界Boss 從 spawnLocation 起算、在被傳送回其生成點之前所能到達的半徑。這可防止玩家把 Boss 拖到更容易與其戰鬥的位置。
注意:請盡量避免製作需要短於 20 格牽引(leash)的戰鬥區域,因為這會讓戰鬥體驗變差。
| Key | Values | Default |
|---|---|---|
leashRadius | 雙精度浮點數 | 無 |
範例
leashRadius: 30
escapeMessage
設定當 Boss 因逾時而逃脫時向玩家廣播的訊息。會與 timeout 及 announcementPriority 設定搭配運作。
| Key | Values | Default |
|---|---|---|
escapeMessage | 字串 | 無 |
範例
escapeMessage: "&cThe World Boss has escaped!"
announcementPriority
設定 Boss 生成/死亡/逃脫公告的優先順序等級。數值越高會顯示越多公告,並啟用額外功能。
| 等級 | 行為 |
|---|---|
0 | 靜默(無公告、無追蹤) |
1 | 僅聊天訊息(生成/死亡/逃脫公告) |
2 | 第 1 級 + 玩家可透過 /em 選單追蹤 |
3 | 第 2 級 + Discord 通知(若已設定) |
| Key | Values | Default |
|---|---|---|
announcementPriority | 整數 | 0 |
範例
announcementPriority: 3
設定 Boss 在聊天欄與 Discord 中公告,並允許玩家追蹤它。
isPersistent
控制 Boss 是否能在區塊卸載時存活。所有世界Boss 都應設定為 true,以防止它們在區塊卸載時消失。
注意:太多持久性 Boss(數百個)可能會導致效能問題。
| Key | Values | Default |
|---|---|---|
isPersistent | 布林值 | false |
範例
isPersistent: true
removeAfterDeath
決定世界Boss 在被擊敗後是否永久移除。對於一次性的事件 Boss 或不應重生的特殊遭遇戰很有用。
當為 false(預設)時,Boss 會在 spawnCooldown 期間過後重生。
當為 true 時,Boss 會從生成位置列表中永久刪除。
| Key | Values | Default |
|---|---|---|
removeAfterDeath | 布林值 | false |
範例
removeAfterDeath: true
過渡方塊(Transitive Blocks)
也稱為 onSpawnBlockStates 與 onRemoveBlockStates。
這些數值讓區域型 Boss 能夠在進入戰鬥時生成方塊,並在被移除時移除這些方塊,亦即當它們因逾時而逃脫或死亡時。
這就是你能讓 Boss 開啟或關閉門/區域的方式,如果搭配階段型 Boss 使用,甚至能在戰鬥中改造競技場!
| Key | Values | Default |
|---|---|---|
onSpawnBlockStates | 參閱詳細說明 | 無 |
| Key | Values | Default |
|---|---|---|
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 戰的專業提示
-
真正思考你的自訂 Boss 上的 powers 如何互補。你不會希望你的 Boss 大部分時間都停在原地,因為它正在施放某個技能,因為那實際上會讓戰鬥變得很簡單。除非你正在設計某種非常特定的東西,否則你也不會希望 Boss 全是遠程攻擊而沒有近戰 powers,或是反過來。試玩測試很重要。
-
生命值 —— 要很多。如果你希望人們真的會組隊來與 Boss 戰鬥,那麼那個生命值倍率大概應該穩穩地設在 10。
-
傷害 —— 別太多。EliteMobs 預設就已經極度致命,而 powers 往往致命程度呈指數級增長。與其把傷害衝破天際,不如考慮使用 powers 來讓 Boss 打得更痛。
-
漏洞,無處不在。請格外確保地形無法被利用。把 Boss 放在一個封閉的房間裡,以防止人們試圖從遠處狙擊它。箭矢無敵 power 對於許多世界Boss 而言大概極為重要,因為 Minecraft 怪物無法應付從好幾個區塊外被狙擊,所以如果你想允許弓箭攻擊,請確保弓不會被利用。
-
了解外掛。擊敗 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 分鐘後若未被擊敗就逃脫
- 在聊天欄中公告生成/死亡/逃脫,並允許玩家追蹤
- 在區塊卸載時存活
- 在生成與死亡時改造競技場方塊
- 在被擊敗時掉落獨特戰利品