简介
在本页面中,你会看到各种使用 EliteScript 和 网页应用 创建的自定义 Boss 能力示例。这些简单直白的示例展示了如何利用多个动作以及其他功能来打造独特的 Boss 能力。
此外,每个示例都配有可视化演示,方便你理解脚本在游戏中的实际运行效果。
欢迎随意复制任何示例,并把它们用在你自己的地下城或世界中。
EliteScript(.yml)仍然完全受支持,本页面中的每个示例都使用它。但它已不再是唯一的选择:能力也可以用 Lua 编写,而现在 EliteMobs 自带的几乎所有能力都使用 Lua。关于两种格式的对比,请参见 创建能力。
potionEffectType 的取值使用 Minecraft 现代的命名空间名称——SLOWNESS、INSTANT_HEALTH、NAUSEA——而不是旧版 Bukkit 的写法(SLOW、HEAL、CONFUSION)。旧名称仍可通过一个已弃用的回退机制解析,但自带能力使用的是现代名称,也只有现代名称才保证长期可用。
能力示例
Slam Down
这段脚本会让 Boss 传送到对它造成伤害的玩家上方 8 格处,然后砸向地面。随后,它会对 Boss 周围 3 格内的所有玩家施加缓慢药水效果,并在屏幕上显示 3 秒的“Stunned”消息。
展开示例
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 秒内对该区域施加粒子效果和推力。
推力动作每游戏刻都会把玩家稍稍向上推,营造出玩家在区域内不断弹跳的错觉。
展开示例
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 游戏刻)后自动消失。
展开示例
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 游戏刻)。
展开示例
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 游戏刻)内完成 360 度的偏航旋转。
所有脚本都设置了粒子效果,并会对任何被射线墙击中的玩家施加持续 5 秒(100 游戏刻)的 VISUAL_FREEZE 动作。
展开示例
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