跳至主要內容

建立世界 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。

鍵值預設值
isRegionalBoss布林值false
範例
isRegionalBoss: true

spawnLocations​

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

載入含有 isRegionalBoss: true 的 Boss 設定後,由擁有 elitemobs.place.admin 的玩家執行。每次使用都會為同一個 Boss 新增一個放置位置。指令將位置置於方塊中心,再向上尋找可通行的地方。請確認空間足以容納 Boss。

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

鍵值預設值
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,yaw,pitch:unixTimeStamp。此 Boss 在 elitemobs_sewer_maze 世界生成,x = -70.17178578884845,y = 168.2,z = -173.17112099568718,yaw = -271.24023,pitch = 64.19999。

時間戳記以 Unix 紀元以來的毫秒數儲存重生期限,重新啟動後仍保留。查看時請使用支援毫秒的轉換工具。

若要移除儲存的期限,請先停止伺服器,再刪除含冒號的 :unixTimeStamp 後綴。條目變成 world,x,y,z,yaw,pitch。執行中的外掛會定期儲存放置資訊,可能覆蓋手動編輯。沒有期限的 Boss 會在世界與區塊允許生成時還原,不發送生成公告。


spawnCooldown​

設定死亡或逾時後到下一次生成嘗試的間隔,以分鐘計。0 安排立即嘗試,負數停用排程重生。世界和區塊必須可用,才會出現實體。巡邏 Boss 還需要處於會更新實體的位置。

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

鍵值預設值
spawnCooldown整數0
範例
spawnCooldown: 20

timeout​

設定從生成到逃脫的時間,以分鐘計,而非從戰鬥開始計時。小於 1 時停用。區域 Boss 在區塊、世界載入或伺服器重新啟動後還原時,會重新開始完整計時,不儲存絕對期限。階段切換保留目前遭遇戰的計時器。

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

鍵值預設值
timeout整數0
範例
timeout: 60

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


leashRadius​

設定放置位置周圍的返回邊界。使用原生尋路時,相容的生物在半徑的一半開始柔性返回,強制返回使用完整半徑。如果無法抵達目的地,Boss 可能被傳送。終界龍不使用這些原生返回目標。沒有原生尋路時,每 3 秒檢查並送回超出完整半徑的 Boss;這個替代方式只適用於至少為 1 的半徑。原生返回完成時,只有在 MobCombatSettings.yml 中啟用 regenerateCustomBossHealthOnCombatEnd(預設為 true)的情況下,Boss 才會回復至滿血。

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

鍵值預設值
leashRadius雙精度浮點數0(停用)
範例
leashRadius: 30

escapeMessage​

設定 Boss 因逾時逃脫時,發送給其所在世界玩家的訊息。需要非空訊息及至少為 1 的 announcementPriority。優先級為 3 或以上時,也透過已設定的 Discord 整合發送。逃脫會移除 Boss 並開始重生等待;若 removeAfterDeath: true,則永久刪除該放置位置。

鍵值預設值
escapeMessage字串無
範例
escapeMessage: "&cThe World Boss has escaped!"

announcementPriority​

控制公告與玩家追蹤資格。必須設定訊息。追蹤也需要 MobCombatSettings.yml 的 showCustomBossLocation;locationMessage 為選填。

等級行為
0無生成、逃脫公告或追蹤;已設定的死亡訊息仍可能發送給攻擊者
1已設定的生成、死亡、逃脫訊息,以及啟用後的 /em 追蹤
2與第 1 級完全相同(沒有額外行為)
3第 1 級 + Discord 通知(若已設定)

生成公告遵循 events.yml 的 announcementBroadcastWorldOnly。正優先級的死亡公告發送至全服,且需要 MobCombatSettings.yml 中的 doCustomEliteMobsDeathMessages。逃脫公告僅發往 Boss 所在世界。還原的 Boss 可以被追蹤而不重複生成公告。請明確設定優先級;新增訊息不會自動改變預設值 0。

鍵值預設值
announcementPriority整數0
範例
announcementPriority: 3

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


isPersistent​

保存 Boss 以便在區塊卸載後還原。卸載期間會移除實際實體,在相關區塊載入時還原。這不會保持區塊載入,也不會讓 Boss 繼續戰鬥。

已放置的區域 Boss 會透過自身生命週期啟用持久化,不依賴一般自訂 Boss 的這項設定。

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

鍵值預設值
isPersistent布林值false
範例
isPersistent: true

removeAfterDeath​

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

預設的 false 會在死亡或逾時後安排等待 spawnCooldown 再生成,負數則不安排。

設為 true 時,死亡或逾時都會從生成位置清單永久刪除該 Boss 的放置紀錄。

鍵值預設值
removeAfterDeath布林值false
範例
removeAfterDeath: true

過渡方塊(Transitive Blocks)​

過渡方塊透過 onSpawnBlockStates 和 onRemoveBlockStates 設定,分別儲存下文所述 ON_SPAWN 和 ON_REMOVE 狀態的方塊變更。

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

鍵值預設值
onSpawnBlockStates參閱詳細說明無
鍵值預設值
onRemoveBlockStates參閱詳細說明無
詳細說明

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

編輯器需要由擁有 elitemobs.transitiveblocks 的玩家使用。記錄時只放置一個該區域 Boss;同一設定有多個放置位置時會被拒絕。階段設定可使用所屬的區域 Boss。儲存的是方塊資料,不含容器物品或其他方塊實體內容,也不會隨 Boss 的 yaw 旋轉。


如果你已經製作了一個大型的過渡方塊區域,但現在需要移動 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 在生成或重生時套用儲存的方塊。ON_REMOVE 在死亡、擊殺指令,以及進入下一階段、取代方塊設定之前套用。逾時、滿血造成的階段重設、重新載入與關服不會套用擊敗後的狀態。

記錄時右鍵點擊方塊,儲存其目前狀態;左鍵則在該位置儲存空氣。這些點擊會被取消,因此只選取狀態,不會放置或破壞方塊。每個位置只會儲存一次:用另一個按鍵點擊已儲存的位置,會將它從選取中移除。在 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 的區域選取相同)來選取方塊,而非逐一選取方塊。

以左鍵選一個角點,右鍵選對角點,再次執行指令儲存區域。兩個角點都必須位於 Boss 所在世界,而且儲存時你必須站在該世界中。否則 EliteMobs 會拒絕儲存並顯示訊息,同時保留你的選取。區域中的方塊會取代同一位置上已選取的方塊。

config.yml 的 defaultTransitiveBlockLimiter 預設為 500,但目前只發出警告,仍會儲存過大的選取範圍。請自行保持範圍小。套用狀態會載入目標區塊,並在同一 tick 修改全部方塊,大範圍可能造成卡頓。

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

載入已儲存的狀態,再加入選取區域的目前方塊狀態。角點選取與大小警告和 registerArea 相同。

/em transitiveBlocks cancel

捨棄尚未儲存的選取。不會還原世界中的實際建築變更,也不會還原已存入 Boss 設定的修改。


設計大型區域 Boss 戰的建議​

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

  2. 設定生命值時考慮上限。 生命值受伺服器目前的 settings.attribute.maxHealth.max 限制,通常是 2048。healthMultiplier: 10.0 的 Boss 在 33 級達到上限。繼續升級會改變戰鬥計算,卻不增加生命值。組合高倍率與高 level 前,請參閱 healthMultiplier。

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

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

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


完整世界 Boss 範例​

此範例組合主要設定。請替換世界與座標,並確認列出的 powers 與自訂物品已啟用。競技場的方塊變更應在遊戲內記錄;這裡的單一方塊只示範格式。

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

# World Boss specific settings
isRegionalBoss: true
isPersistent: true

# Spawn settings
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60

# Combat boundaries
leashRadius: 30
timeout: 20

# Messages and announcements
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2

# Arena modification
onSpawnBlockStates:
- 0,0,0/minecraft:barrier
onRemoveBlockStates:
- 0,0,0/minecraft:air

# Boss features
powers:
- zombie_friends.lua
- ground_pound.lua
uniqueLootList:
- filename=magmaguys_toothpick.yml:chance=1.0

這個 Boss 會:

  • 死亡或逾時 60 分鐘後安排生成,世界與區塊可用時出現
  • 若未被擊敗,則從生成或還原起 20 分鐘後逃脫
  • 在聊天欄中公告生成/死亡/逃脫,並允許玩家追蹤
  • 在區塊重新載入時還原
  • 在生成與死亡時改造競技場方塊
  • 在被擊敗時掉落獨特戰利品
升級前檢查生命值上限

在預設上限下,範例的 30 級與 healthMultiplier: 10.0 對應 1400 生命值,33 級達到 2048。基礎生命值在乘倍率前先限制一次,乘後的結果再次限制。因此,基礎生命值已達上限後,降低倍率也無法恢復隨等級成長的生命值。請參閱 healthMultiplier。