簡介
在本頁中,你會看到各式各樣以 EliteScript 與 WebApp 製作的自訂 Boss 能力範例。這些簡單明瞭的範例示範了如何運用多個動作與其他特性來打造獨特的 Boss 能力。
此外,每個範例都附有視覺示範,好讓你更容易理解該腳本在遊戲中如何運作。
歡迎自由複製任何範例,並在你自己的地城或世界中使用它們。
EliteScript(.yml)仍受到完整支援,本頁的每個範例使用的都是它。它不再是唯一選項:能力也可以用 Lua 撰寫,而現在 EliteMobs 隨附的幾乎每個能力都採用 Lua。兩種格式的比較請參閱建立能力。
potionEffectType 的值使用的是 Minecraft 現代的具命名空間名稱 —— SLOWNESS、INSTANT_HEALTH、NAUSEA —— 而不是舊式的 Bukkit 拼法(SLOW、HEAL、CONFUSION)。舊名稱仍可透過一個已棄用的後備路徑解析,但隨附能力使用的是現代名稱,那也是保證能持續運作的那一個。
能力範例
砸落 (Slam Down)
此腳本會讓 Boss 傳送到對它造成傷害的玩家上方 8 格處,然後砸向地面。之後,它會對 Boss 周圍 3 格內的所有玩家套用緩速藥水效果,並在螢幕上顯示訊息「Stunned」3 秒。
展開範例
eliteScript:
SlamDown:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: TELEPORT
FinalTarget:
targetType: DIRECT_TARGET
offset: 0,8,0
Target:
targetType: SELF
- action: PUSH
vValue: 0,-5,0
Target:
targetType: SELF
wait: 15
- action: POTION_EFFECT
potionEffectType: SLOWNESS
amplifier: 3
duration: 60
Target:
targetType: NEARBY_PLAYERS
range: 3
wait: 20
- action: TITLE_MESSAGE
subtitle: "Stunned!"
duration: 40
fadeIn: 10
fadeOut: 10
Target:
targetType: NEARBY_PLAYERS
range: 3
wait: 20
Cooldowns:
local: 180
global: 80
推開 (Push Away)
此腳本會在 Boss 周圍產生一個 4 格的穹頂。接著,它會在區域邊界啟動一個持續一秒的粒子效果,然後由另一個動作把該區域內的所有玩家推開。由於推力設定了偏移量,玩家會被稍微向上推。最後,該腳本會向區域內的所有玩家發送一則訊息。
展開範例
eliteScript:
PushAway:
Events:
- EliteMobDamagedEvent
Zone:
shape: DOME
radius: 4
borderRadius: 3
Target:
targetType: SELF
track: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_BORDER
track: true
repeatEvery: 5
times: 4
- action: PUSH
Target:
targetType: ZONE_FULL
track: true
RelativeVector:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: ACTION_TARGET
normalize: true
multiplier: 1.0
offset: 0,0.2,0
repeatEvery: 1
times: 20
- action: MESSAGE
sValue: "&cCool boss!: &fBE GONE!"
Target:
targetType: ZONE_FULL
repeatEvery: 10
times: 2
Cooldowns:
local: 140
global: 80
箭雨 (Arrow Rain)
製作一個腳本,會在傷害該怪物的玩家周圍地面上畫一個圓圈,同時在螢幕上顯示訊息,要玩家移出圓圈。接著在 2 秒後,它會從上方 10 格處朝同一位置向下射出箭矢。
展開範例
eliteScript:
MakeCircle:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 5
borderRadius: 4
height: 1
Target:
targetType: DIRECT_TARGET
track: false
Actions:
- action: SPAWN_PARTICLE
Target:
targetType: ZONE_BORDER
track: false
coverage: 1.0
repeatEvery: 5
times: 8
particles:
- particle: FLAME
- action: TITLE_MESSAGE
Target:
targetType: DIRECT_TARGET
fadeOut: 10
duration: 20
fadeIn: 10
subtitle: Move out of the zone!
- action: RUN_SCRIPT
scripts:
- "ArrowRain"
Cooldowns:
local: 160
global: 80
ArrowRain:
Zone:
shape: CYLINDER
radius: 5
borderRadius: 4
height: 1
Target:
targetType: DIRECT_TARGET
track: false
offset: 0,10,0
Actions:
- action: SUMMON_ENTITY
wait: 40
sValue: ARROW
Target:
targetType: ZONE_FULL
track: false
vValue: 0,-1,0
repeatEvery: 10
times: 4
火焰光環 (Fire Aura)
這會建立一個腳本,使用圓柱區域在 Boss 周圍生成粒子,持續 6 秒。同時 Boss 也會被賦予標籤 FireOn,為期 6 秒。
如果玩家在該標籤生效期間攻擊 Boss,玩家就會被點燃 1 秒。這是使用條件達成的:只有在 Boss 帶有對應的標籤 FireOn 時,SetOnFire 腳本才能執行。
展開範例
eliteScript:
Visual:
Events:
- PlayerDamagedByEliteMobEvent
Zone:
shape: CYLINDER
radius: 2
height: 3
Target:
targetType: SELF
track: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: FLAME
Target:
targetType: ZONE_FULL
track: true
coverage: 1.0
repeatEvery: 5
times: 24
- action: TAG
tags:
- "FireOn"
duration: 120
Target:
targetType: SELF
Cooldowns:
local: 180
global: 80
SetOnFire:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_ON_FIRE
duration: 20
Target:
targetType: DIRECT_TARGET
Conditions:
Target:
targetType: SELF
conditionType: BLOCKING
hasTags:
- "FireOn"
毒線 (Poison Lines)
此腳本會建立兩個以 Boss 為中心的長方體區域。Boss 的 AI 會被關閉 2 秒。這兩個長方體區域的設定方式會讓它們在地面上形成一個加號。
接著該腳本會在這些區域內產生雲粒子 2 秒,然後產生煙霧粒子並對這些區域套用中毒藥水效果 3 秒。
展開範例
eliteScript:
PoisonLine1:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CUBOID
x: 20
y: 1
z: 2
Target:
targetType: SELF
track: false
Actions:
- action: SET_MOB_AI
bValue: false
duration: 40
Target:
targetType: SELF
scripts:
- "PoisonLine2"
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 1
repeatEvery: 5
times: 8
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
coverage: 1
wait: 40
repeatEvery: 5
times: 12
- action: POTION_EFFECT
potionEffectType: POISON
amplifier: 4
duration: 50
Target:
targetType: ZONE_FULL
wait: 40
repeatEvery: 5
times: 12
Cooldowns:
local: 200
global: 80
PoisonLine2:
Zone:
shape: CUBOID
x: 2
y: 1
z: 20
Target:
targetType: SELF
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 1
repeatEvery: 5
times: 8
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
coverage: 1
wait: 40
repeatEvery: 5
times: 12
- action: POTION_EFFECT
potionEffectType: POISON
amplifier: 4
duration: 50
Target:
targetType: ZONE_FULL
wait: 40
repeatEvery: 5
times: 12
彈跳 (Bounce)
此腳本會建立一個以 Boss 為中心、半徑 10 格的圓柱區域,然後對該區域套用粒子效果與推力,持續 10 秒。
推力動作每個 tick 都會把玩家稍微往上推,製造出玩家在區域內四處彈跳的錯覺。
展開範例
eliteScript:
Bounce:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 10
height: 2
Target:
targetType: SELF
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: EXPLOSION_NORMAL
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 0.2
- action: PUSH
vValue: 0,0.4,0
Target:
targetType: ZONE_FULL
repeatEvery: 1
times: 200
Cooldowns:
local: 220
global: 80
召喚 (Summon)
此腳本會建立一個以傷害 Boss 的玩家為中心的圓柱區域(由於套用了偏移量,該區域位於玩家上方 6 格處)。此外,它還會在該玩家的螢幕上顯示一則訊息。
延遲 2 秒後,增援會生成到指定的區域中。不過,由於我們使用了 coverage,只有部分區域會被增援佔據。如果玩家沒能消滅所有增援,它們會在 20 秒(400 tick)後自動消失。
展開範例
eliteScript:
Summon:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 3
height: 1
Target:
targetType: DIRECT_TARGET
offset: 0,6,0
Actions:
- action: SUMMON_REINFORCEMENT
sValue: "fc_boss.yml"
duration: 400
Target:
targetType: ZONE_FULL
coverage: 0.2
wait: 40
- action: TITLE_MESSAGE
subtitle: "Friends! Help!!!"
duration: 30
fadeIn: 10
fadeOut: 10
Target:
targetType: DIRECT_TARGET
Cooldowns:
local: 333
global: 80
藥水區域 (Potion Zones)
此腳本會在玩家傷害 Boss 時啟動。接著它會執行 PotionZoneBad 或 PotionZoneGood 其中一個腳本。
在 PotionZoneBad 腳本中,會在距離 Boss 20 格內的附近玩家周圍產生一個圓柱區域。它會以指定的覆蓋率產生雲粒子與大型煙霧粒子效果、施加凋零藥水效果,並向附近玩家送出一則訊息。
在 PotionZoneGood 腳本中,會在距離 Boss 20 格內的玩家周圍產生一個圓柱區域。這個腳本的粒子效果是反過來的。此腳本套用的是治療藥水效果而非凋零,並會向附近玩家送出一則訊息。
展開範例
eliteScript:
Trigger:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: RUN_SCRIPT
scripts:
- "PotionZoneBad"
- "PotionZoneGood"
onlyRunOneScript: true
Cooldowns:
local: 110
global: 80
PotionZoneBad:
Zone:
shape: CYLINDER
height: 2
radius: 5
Target:
targetType: NEARBY_PLAYERS
range: 20
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
repeatEvery: 10
times: 4
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_LARGE
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
wait: 40
repeatEvery: 10
times: 6
- action: POTION_EFFECT
potionEffectType: WITHER
amplifier: 3
duration: 80
Target:
targetType: ZONE_FULL
track: false
wait: 40
repeatEvery: 10
times: 6
- action: MESSAGE
sValue: "&cCool boss!: &fFeel the burn!"
Target:
targetType: NEARBY_PLAYERS
range: 20
PotionZoneGood:
Zone:
shape: CYLINDER
height: 2
radius: 5
Target:
targetType: NEARBY_PLAYERS
range: 20
track: false
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_LARGE
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
repeatEvery: 10
times: 4
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 0.3
track: false
wait: 40
repeatEvery: 10
times: 6
- action: POTION_EFFECT
potionEffectType: INSTANT_HEALTH
amplifier: 1
duration: 80
Target:
targetType: ZONE_FULL
track: false
wait: 40
repeatEvery: 10
times: 6
- action: MESSAGE
sValue: "&cCool boss!: &fFeel the... Wait, this is the wrong one."
Target:
targetType: NEARBY_PLAYERS
range: 20
致盲波 (Blind Waves)
此腳本會發動兩道地面射線波,從 Boss 出發,分別朝 X 軸的正向與負向投射。
我們使用 offset 參數來決定射線的長度與大小,具體來說是透過定義 Z 值。此外,我們透過設定 X 值來指定波的傳播方向。(這只是在說明這個特定腳本如何使用這些值,你不必把自己的做得跟這一模一樣)
雖然可以調整 Y 值來增加射線波的高度,但我們把它保持在 0,好讓玩家有跳過射線的選項。
參數 animationDuration 決定射線波從目標移動到最終目標所需的時間。降低這個值會讓射線更快,也更難閃避。
接著會套用粒子與藥水效果。未能閃避或跳過射線波的玩家會失明 5 秒(100 tick)。
展開範例
eliteScript:
Blind:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: TRANSLATING_RAY
Target:
targetType: SELF
offset: 0,0,5
track: false
FinalTarget:
targetType: SELF
offset: 10,0,5
track: false
Target2:
targetType: SELF
offset: 0,0,-5
track: false
FinalTarget2:
targetType: SELF
offset: 10,0,-5
track: false
animationDuration: 100
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
repeatEvery: 5
times: 20
- action: POTION_EFFECT
potionEffectType: BLINDNESS
amplifier: 5
duration: 100
Target:
targetType: ZONE_FULL
track: true
repeatEvery: 1
times: 100
scripts: "Blind2"
Cooldowns:
local: 200
global: 80
Blind2:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: TRANSLATING_RAY
Target:
targetType: SELF
offset: 0,0,5
track: false
FinalTarget:
targetType: SELF
offset: -10,0,5
track: false
Target2:
targetType: SELF
offset: 0,0,-5
track: false
FinalTarget2:
targetType: SELF
offset: -10,0,-5
track: false
animationDuration: 100
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
repeatEvery: 5
times: 20
- action: POTION_EFFECT
potionEffectType: BLINDNESS
amplifier: 5
duration: 100
Target:
targetType: ZONE_FULL
track: true
repeatEvery: 1
times: 100
冰凍之牆 (Freeze Wall)
此腳本會建立 3 道以 Boss 為中心的旋轉射線。我們需要 3 道不同的旋轉射線,是因為我們無法定義射線高度,所以改用多個腳本與 offset 讓射線在高度上疊加,使它們看起來像單一一道旋轉的牆。
這 3 個腳本的區域完全相同,只有 offset 不一樣。它們被設定為從 Boss 起算長度 6 格,並在 10 秒(200 tick)內完成 360 度的 yaw 旋轉。
所有腳本都設定了粒子效果,並會對任何被射線牆擊中的玩家套用 VISUAL_FREEZE 動作 5 秒(100 tick)。
展開範例
eliteScript:
Trigger:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: RUN_SCRIPT
scripts:
- "FreezeWall"
- "FreezeWall2"
- "FreezeWall3"
Cooldowns:
local: 300
global: 80
FreezeWall:
Zone:
shape: ROTATING_RAY
Target:
targetType: SELF
track: false
Target2:
targetType: SELF
offset: 6,0,0
track: false
yawRotation: 360
animationDuration: 200
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SNOWFLAKE
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
- action: VISUAL_FREEZE
duration: 100
Target:
targetType: ZONE_FULL
track: false
repeatEvery: 1
times: 200
FreezeWall2:
Zone:
shape: ROTATING_RAY
Target:
targetType: SELF
track: false
offset: 0,1,0
Target2:
targetType: SELF
track: false
offset: 6,1,0
yawRotation: 360
animationDuration: 200
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SNOWFLAKE
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
- action: VISUAL_FREEZE
duration: 100
Target:
targetType: ZONE_FULL
track: false
repeatEvery: 1
times: 200
FreezeWall3:
Zone:
shape: ROTATING_RAY
Target:
targetType: SELF
track: false
offset: 0,2,0
Target2:
targetType: SELF
track: false
offset: 6,2,0
yawRotation: 360
animationDuration: 200
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SNOWFLAKE
repeatEvery: 10
times: 20
Target:
targetType: ZONE_FULL
track: false
coverage: 1.0
- action: VISUAL_FREEZE
duration: 100
Target:
targetType: ZONE_FULL
track: false
repeatEvery: 1
times: 200