建立自訂增援
在 Boss 的 powers 清單加入增援項目,即可在戰鬥中召喚其他自訂 Boss。
建立自訂 Boss 的步驟:
- 建立你的主 Boss,它會召喚你的自訂 Boss
- 建立一個作為增援的自訂 Boss。請記住,自訂 Boss 可以比原版怪物更強,但也可以更弱。
- 在設定檔中加入正確的增援設定行
建立增援設定行
假設你有一個格式如下的自訂 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 檔案的原樣。欄位缺漏、為空或重複的舊式字串會被捨棄並顯示警告。