跳至主要內容

建立自訂增援

在 Boss 的 powers 清單加入增援項目,即可在戰鬥中召喚其他自訂 Boss。

建立自訂 Boss 的步驟:​

  1. 建立你的主 Boss,它會召喚你的自訂 Boss
  2. 建立一個作為增援的自訂 Boss。請記住,自訂 Boss 可以比原版怪物更強,但也可以更弱。
  3. 在設定檔中加入正確的增援設定行

建立增援設定行​

假設你有一個格式如下的自訂 Boss:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua

而你想要為它加入增援。以下是其中一種增援可能的樣子:

- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

要讓它生效,將它加入 powers 列表中:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

增援現在已加入到 Boss 實體中。然而,如你所見,這裡有好幾個你可以自訂的選項。讓我們來逐一說明。

所有自訂增援選項​

提示:你也可以使用 EliteScript 來召喚增援,更多相關說明請參閱此處。

summonType​

這是必填欄位。它設定增援應於何時生成。

鍵值預設值
summonType特殊 [1]無(必填)
範例
summonType: ON_HIT

特殊 [1]​

鍵說明
ONCE每次符合條件的玩家攻擊都嘗試一批增援,直到機率判定成功。攻擊要求見下文。
ON_HIT每次符合條件的玩家攻擊都根據 chance 嘗試一批增援。
ON_COMBAT_ENTER當 Boss 進入戰鬥時生成增援 (1)
ON_COMBAT_ENTER_PLACE_CRYSTAL特殊:這專門用於在 Boss 進入戰鬥時為龍戰放置終界水晶 (1)
ON_DEATH當 Boss 死亡時生成增援
GLOBAL在 Boss 的生成生命週期內,立即並每隔 10 秒安排 amount 個增援,無須進入戰鬥。每個增援用 customSpawn 選擇 Boss 世界中的玩家和位置。一旦追蹤的全域數量達到該世界玩家數的 30 倍,批次中的每個召喚都會被略過,因此數量不會超過該上限。必須設定 customSpawn。

(1) 受到玩家傷害、對玩家造成傷害或取得玩家目標都可能觸發進入戰鬥。退出後再次進入戰鬥可再次觸發這類增援;它們不是 ONCE 項目。

ONCE 記錄目前解析出的項目狀態,不涵蓋整場多階段戰鬥。重新解析能力的階段切換會建立新項目。一批增援進入生成嘗試後,即使生成遭到阻止,也可能消耗 ONCE;它不保證出現存活的增援。


filename​

這是必填欄位,因為它設定應生成哪個增援。唯一不必填寫此欄位的例外情況,是使用 summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 設定時,因為終界水晶並非菁英。

鍵值預設值
filename檔名無
範例
filename: test_boss.yml

重要: filename 必須參照 custombosses 中現有的 Boss 檔案。無效參照會阻止增援生成,並在主控台輸出警告。沒有 filename 的項目(水晶項目除外)、chance 不是有限數值的項目,或 location 不是三個有限數值的項目,每次建立 Boss 時都會被捨棄,並輸出指出該 Boss 檔案的 Invalid reinforcement 警告。


最低可行性

summonType: SUMMON_TYPE 與 filename: filename.yml 兩者本身就足以建立一個自訂增援。以下範例示範了這點。

注意: 鍵不分大小寫,summonType 與 SUMMONTYPE 都有效。ON_HIT 等列舉值必須使用上文所示的完整大寫形式;檔名必須符合參照的定義。

範例
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

然而,如果你想要或需要更複雜的功能,請繼續閱讀下方,看看你還能用這些選項做些什麼。


chance​

此選填欄位為整批增援設定一次機率判定。適用於 ONCE、ON_HIT、ON_COMBAT_ENTER 和 ON_DEATH,不適用於 GLOBAL 或 ON_COMBAT_ENTER_PLACE_CRYSTAL。ONCE 判定失敗後仍可在下次符合條件的攻擊中重試。

鍵值預設值
chance雙精度浮點數1.0
範例
chance: 0.5

代表有 50% 的機率生成自訂增援。

chance 應使用 0.0 到 1.0 之間的有限數值。對於 ON_HIT 和尚未消耗的 ONCE,玩家傷害事件必須未被取消,Boss 必須有存活實體且 AI 啟用,能力未被抑制,事件傷害必須至少為 3。每次符合條件的攻擊獨立判定一次,結果作用於整批增援。

受擊增援與冷卻

ON_HIT 和 ONCE 略過能力及 Boss 全域冷卻,包括 EliteScript 的 Cooldowns.global 和 Lua 的 cooldowns.set_global(...)。上述攻擊要求仍然適用。請透過 chance 和 amount 調整重複召喚。

調查不會生成的增援

開啟 /em debug 並攻擊 Boss。[CustomSummon] 訊息會顯示攻擊遭拒、機率失敗、計算位置以及一般生成是否產生存活實體。區域型增援會安排稍後初始化。能力抑制目前只顯示一般的條件拒絕訊息,不會單獨說明抑制原因。關閉 debug 後這些訊息也會關閉。


location​

location: x,y,z 是一個選填的設定欄位,讓管理員能夠以方塊為單位偏移增援的位置。以下是關於此選項你需要知道的關鍵概念:

偏移位置是相對的。 這表示 location: 0,10,0 會在 Boss 正上方 10 格處生成一個 Boss,而不是在世界座標 0,10,0 處。

相對位置對於區域型 Boss 而言有所不同。 區域型 Boss 永遠會以其生成點作為相對位置的原點,這表示如果你知道 Boss 生成點在哪裡並數好方塊,你就能讓增援 Boss 在特定位置生成。世界縛者(Binder of Worlds)的巢穴就依賴這點,無論龍 Boss 在哪裡,都能在極為精確的方塊位置生成挑戰塔 Boss。

如果你把距離量錯,Boss 就會生成在方塊內部。

鍵值預設值
location字串無
範例
location: 0,10,0

對於非區域型自訂 Boss,會在 Boss 正上方精確 10 格處生成增援,無論 Boss 在哪裡。

對於區域型自訂 Boss,會在區域型 Boss 生成點正上方精確 10 格處生成增援,無論 Boss 在哪裡。

重要提示:這對於 summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 而言是特別必填的欄位!


lightningRod​

僅用於 summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL。只要 Boss 和水晶有效,就立即並每隔五秒啟動一次攻擊。每次攻擊顯示約三秒警告粒子,然後生成閃電和向下飛行的爆炸火球。目標使用 -15 到 14 的 X/Z 偏移,維持水晶高度,不會投影到地面。水晶會被標記為菁英水晶並作為增援追蹤,不繼承生物戰鬥目標。

它不能與其他自訂增援搭配使用,因為那些增援的此類能力應該依賴 powers 來實現。

鍵值預設值
lightningRod布林值false
範例
lightningRod: false

inheritAggro​

這是一個選填的設定欄位,會讓自訂增援繼承 Boss 的威脅值(threat)。

複製召喚者的威脅表,讓增援能選擇其威脅最高的目標。威脅也包含治療和嘲諷,並非單純的傷害排名。傷害紀錄和獎勵貢獻不會複製。

鍵值預設值
inheritAggro布林值false
範例
inheritAggro: false

amount​

設定成功批次中的自訂 Boss 數量。請使用正整數。水晶類型始終每項放置一個水晶,忽略 amount。

鍵值預設值
amount整數1
範例
amount: 1

spawnNearby​

這是一個選填的設定欄位,用來設定自訂增援是否應在附近生成,而非生成在 Boss 身上或特定的相對位置。

圍繞計算位置選擇 -15 至 14 的整數 X/Z 偏移,最多嘗試 30 次,起點包含 location 偏移。每次從該 Y 向上搜尋,直到世界建築高度上限下方兩格為止,尋找不可穿過的方塊上方兩格空氣。全部失敗後使用原計算位置。此輔助搜尋不使用 Custom Spawn 的玩家距離、亮度或世界篩選,但一般 Boss 生成保護仍然適用。

鍵值預設值
spawnNearby布林值false
範例
spawnNearby: false

inheritLevel​

這是一個選填的設定欄位,用來設定自訂增援是否應繼承其所增援的自訂 Boss 的等級。

鍵值預設值
inheritLevel布林值false
範例
inheritLevel: false

customSpawn​

這是一個僅用於全域增援的設定欄位。它使用自訂生成設定來設定增援能夠在哪裡生成。

使用自訂生成點中的地表、亮度、高度和位置檢查,包括其中的生態域篩選,以及該指南所述的時間等待行為。全域增援直接從召喚者生成世界中的所有玩家選擇,略過一般流程的資料載入、ValidWorlds.yml、validWorlds、validWorldEnvironments、實例和怪物生成遊戲規則檢查。全域流程使用 filename、amount 和 customSpawn,不套用 chance、location、spawnNearby、inheritAggro 或 inheritLevel。

鍵值預設值
customSpawn檔名無
範例
customSpawn: normal_surface_spawn.yml

difficultyID​

將增援限制在特定的實例副本難度。接受名稱、數字 ID 或它們的清單;參見難度比對。

鍵值預設值
difficultyID字串 或字串清單無

若 Boss 關聯了有啟用中難度的實例副本,且篩選器不符合,整個增援項目會在解析前被捨棄。明確設為空白或無效的篩選器不符合任何難度。省略該鍵即可不限制項目。在未關聯副本的實例或實例之外,此篩選器沒有作用。

範例
- summonType: ON_COMBAT_ENTER
filename: elite_add.yml
difficultyID:
- hard
- mythic

組合出一個大型增援​

讓我們使用前述大部分欄位來建立一個範例增援:

- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true

這會達成以下效果:

  • 建立一個自訂增援
  • 自訂增援會在自訂 Boss 進入戰鬥時生成(summonType: ON_COMBAT_ENTER)
  • 召喚出的自訂增援會是來自 test_boss.yml 的那個(filename: test_boss.yml)
  • 增援使用 spawnNearby 中說明的地面搜尋,本例以 Boss 為中心(spawnNearby: true)。
  • 增援複製召喚者的威脅表來選擇目標(inheritAggro: true)。
  • 無論 test_boss.yml 中的設定為何,自訂增援都會與其所增援的自訂 Boss 擁有相同的等級(inheritLevel: true)
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

這會達成以下效果:

  • 建立一個自訂增援
  • 自訂增援會是一個終界水晶,它會在戰鬥開始時被放置下來(summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL)
  • 水晶會在附近的 X/Z 偏移位置重複生成延遲閃電和火球攻擊(lightningRod: true)。
# Example: Boss that spawns revenge minions on death
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true

這會達成以下效果:

  • 建立一個自訂增援
  • 自訂增援會在 Boss 死亡時生成(summonType: ON_DEATH)
  • 召喚出的自訂增援會是來自 revenge_minion.yml 的那個(filename: revenge_minion.yml)
  • 會生成三個增援(amount: 3)
  • 增援以死亡位置為中心搜尋附近地面(spawnNearby: true)。

現在將這套用到自訂 Boss 上:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

完成了!以下還有幾個提示:

  • 這些欄位可以用任何順序設定,不過建議永遠把 summonType 放在最前面!
  • 新內容請使用本文的 YAML 映射項目,不要使用舊的 summon: 或 summonable: 字串格式。這些字串仍可載入:EliteMobs 會在記憶體中轉換它們,並保留 Boss 檔案的原樣。欄位缺漏、為空或重複的舊式字串會被捨棄並顯示警告。