动作:怪物
这一页的动作负责叫出怪物组、单独生成怪物、清怪和发光。怪物组本身怎么写(mobs、waves、condition、start、end)见 怪物组。
每个动作的格式说明见 怎么看这几页动作说明。
怪物可以是 MythicMobs 的怪物 ID(例如 SkeletonKing),也可以是原版怪(写 minecraft:zombie)。
写了 minecraft: 一定生成原版怪,即使 MythicMobs 里有同名的怪也一样。
monstergroup 怪物组
别名:group、mobgroup
叫出、停止、清掉或重置 monster.yml 里的怪物组。
简写:monstergroup [操作] 怪物组 [怪物组2 …] [延迟秒数]
DungeonPlus 写法:$monstergroup{group=前厅卫兵;repeat=true;delay=3} @dungeon
| 参数 | 必填 | 说明 |
|---|---|---|
第 1 个 / operation | 否 | 不写 = start。可以写的操作见下表 |
第 1 个(或操作后面)起 / group(或 name) | 是 | 怪物组名称。多个用空格或英文逗号分开,例如 monstergroup 左翼 右翼 |
最后一个数字 / delay | 否 | 几秒后才执行。简写时最后一个词是数字就当成延迟(要有组名在前面),例如 monstergroup 增援 5;时间写法同 delay(1.5、20t、1m) |
repeat | 否 | 默认 true。false = 这个组已经打完时不再叫第二次 |
操作:
| 操作 | 效果 |
|---|---|
start(默认) | 叫出怪物组,从第一波开始 |
stop | 停止这个组(不再检查条件、不出下一波),已经生成的怪留着 |
kill | 停止这个组,并移除这个组生成的怪 |
reset(或 forget) | 忘掉这个组的进度(状态回到「没开始」),已经生成的怪留着。之后可以重新叫出,即使 repeat: false |
对象:不看 @对象。
script:
- "monstergroup 前厅卫兵"
前厅卫兵:
mobs:
- "minecraft:zombie 3"
- "minecraft:skeleton 2"
end:
- "obstacle open 大门"
- "monstergroup 左翼守卫 右翼守卫"
- "monstergroup 精英巡逻 10"
# 王活着的时候,小怪一批打完 3 秒后再来一批
亡灵潮:
mobs:
- "minecraft:zombie 4"
end:
- "if {group:亡灵领主:state} == running -> monstergroup 亡灵潮 3"
亡灵领主:
mobs:
- "UndeadLord 1 20 王座 boss"
start:
- "monstergroup 亡灵潮"
end:
- "monstergroup kill 亡灵潮"
- "clear"
注意:
- 正在进行的怪物组再叫一次不会有任何效果(不会重 复出怪)。
- 已经打完的怪物组,要这一行的
repeat和monster.yml里这一组的repeat都是 true(两个默认都是 true)才会重新开始; 任一边写false就不会再叫出来。想无视repeat: false重来一次,先monstergroup reset 组名(或remove-monstergroup)。 - 用
stop停掉的组可以再start,会从第一波重新开始。 - 带延迟时这一行不会等,马上执行下一行;延迟到了才叫出怪物组。副本在这之前结束的话就不会叫出。
- 只有副本进行中(或开场倒数、
before.yml期间)才能叫出怪物组;通关、失败之后写的monstergroup不会生效。 - 名称写错(
monster.yml里没有)时控制台会提示。 - 判断怪物组状态:条件
group 组名 done,变量{group:组名:state},见 条件判断 和 变量与占位符。
remove-monstergroup 重置怪物组
DungeonPlus 1.4.2 的脚本。忘掉怪物组的进度,让它可以重新叫出。效果与 monstergroup reset 相同。
简写:remove-monstergroup 怪物组 [怪物组2 …] / remove-monstergroup all
DungeonPlus 写法:$remove-monstergroup{group=ALL} @dungeon
| 参数 | 必填 | 说 明 |
|---|---|---|
第 1 个起 / group(或 name) | 是 | 怪物组名称,多个用空格或英文逗号分开;all = 全部怪物组 |
对象:不看 @对象。
重新挑战:
type: interact
point: 挑战石碑
script:
- "remove-monstergroup 试炼守卫"
- "monstergroup 试炼守卫"
重置所有关卡:
- "killmobs"
- "remove-monstergroup all"
- "monstergroup 前厅卫兵"
注意:只清掉「进度」,不会清怪。场上的怪要一起清掉,前面加 killmobs 或用 monstergroup kill。
mob 生成怪物
别名:spawn
在某个位置直接生成怪物。适合机关、陷阱、Boss 召唤小怪这类不需要完整怪物组的场合。
简写:mob 怪物 位置 [数量] [等级]
DungeonPlus 写法:$mob{plugin=MythicMobs;name=SkeletonKing;location=王座;amount=1;level=10;scattered=1} @dungeon
| 参数 | 必填 | 说明 |
|---|---|---|
第 1 个 / name(或 mob) | 是 | MythicMobs 怪物 ID,或原版 minecraft:zombie |
第 2 个 / location(或 point、at) | 是 | 生成位置,写法见 位置的写法 |
第 3 个 / amount | 否 | 数量,默认 1 |
第 4 个 / level | 否 | MythicMobs 等级,默认 1(原版怪没有等级)。实际等级还会加上 config.yml 的每人加等级与难度模式的等级 |
spread | 否 | 每只在生成位置附近随机散开的半径(格),默认 0 = 不散开 |
scattered(或 interval) | 否 | 每只之间间隔几秒,默认 0 = 同时生成 |
chance | 否 | 生成机率(%),默认 100。没中时这一行整个跳过 |
boss | 否 | true = 当成 Boss,王条会显示它的血量 |
yaw pitch | 否 | 只在完整写法里有效:怪物面向 |
plugin | 否 | DungeonPlus 的 参数,本插件会自动判断,写了会忽略 |
简写同样可以夹带上面这些名称,例如 mob minecraft:stray 陷阱区 4 spread=3 chance=50。
对象:不看 @对象。
踩到陷阱:
type: enter
region: 陷阱区
once: true
script:
- "title &c陷阱!||&7冰霜流浪者从地底爬出"
- "mob minecraft:stray 陷阱区 3 spread=2"
狂暴:
- "title &4守卫狂暴了||&7小心它的攻击"
- "mob FrostWisp 王座 4 5 spread=4 scattered=0.5"
# DungeonPlus 写法:怪物写在 monster 里,生出来的怪算这一组
暗影伏兵:
monster:
- "$mob{plugin=MythicMobs;name=ShadowRogue;location=12,65,30;amount=4;scattered=1} @dungeon"
注意:
- 算不算怪物组的怪:在怪物组的
start、monster(以及它们呼叫的脚本组)里生成的怪属于那个组,要打完才算这一波过关; 在触发组、任务组里生成的怪不属于任何组,但仍然是副本的怪:会算进击杀数、会被killmobs清掉、副本结束时会移除。 - 位置是每只各挑一次:写区域名称时,每只怪各自在区域里随机挑一个位置;同名点位有好几个时,每只各自随机挑其中一个点。
所以
mob minecraft:stray 陷阱区 4会把 4 只散在整个陷阱区里。写单一点位时全部生在那个点,要散开加spread。 - 怪物 ID 写错时控制台会提示「无法生成怪物」。场上副本怪物超过
config.yml的max-mobs(默认 150)时,超过的部分不会生成。 - 人数缩放(血量、攻击)和难度模式的倍率一样会套用。
- DungeonPlus 的
level默认是 0,本插件默认是 1。
killmobs 清除怪物
别名:clear-mobs
把副本里的怪直接移除(不是杀死)。
简写:killmobs [怪物]
完整写法:$killmobs{mob=minecraft:stray}
| 参数 | 必填 | 说明 |
|---|---|---|
第 1 个 / mob(或 name) | 否 | 只清这种怪:怪物 ID 或显示名称(不含颜色)。不写 = 清掉副本里所有怪 |
对象:不看 @对象。
霜烬守卫:
end:
- "killmobs"
- "message &a守卫倒下,残余的怪物也随之消散。"
净化祭坛:
type: interact
point: 净化祭坛
once: true
script:
- "killmobs FrostWisp"
- "message &b{self} 净化了所有冰灵。"
注意:
- 移除的怪没有掉落物、不算击杀,也不会触发
kill、mob-death这类触发组。 - 被移除的怪如果属于正在进行的怪物组,这一波的「全部击杀」(没写
condition时的默认条件)会因为场上没怪而直接算过关。 只想停掉某个组又不想让它过关,改用monstergroup kill 组名。 - 只有副本自己生成的怪会被清掉,地图上其他实体不受影响。
glow 发光
让某个怪物组的怪发光(透过墙看得到轮廓),方便玩家找到最后几只。
简写:glow [怪物组] [false]
完整写法:$glow{group=霜烬守卫;value=false}
| 参数 | 必填 | 说明 |
|---|---|---|
第 1 个 / group(或 name) | 否 | 怪物组名称;写 all 或不写 = 副本里所有怪 |
第 2 个 / value | 否 | 不写或 true = 发光;false = 取消发光 |
对象:不看 @对象。
狂暴:
- "title &4守卫狂暴了||&7小心它的攻击"
- "glow 霜烬守卫"
# 前厅卫兵的 start 里写「task start 提示残怪」:开打 60 秒后只剩 3 只以下就让它们发光
提示残怪:
auto-start: false
timeline:
60:
- "if {group:前厅卫兵:alive} <= 3 -> glow 前厅卫兵"
关闭发光:
type: interact
point: 熄灯拉杆
script:
- "glow 前厅卫兵 false"
注意:
- 只影响现在场上的怪,之后才生成的怪不会自动发光。想让一个组的怪一出来就发光,在
monster.yml那一组写glowing: true; 只让某几只发光,在那一行怪物后面加glow(见 怪物组)。 glow all(或只写glow)让副本里所有怪发光,glow all false全部取消。- 写的怪物组还没开始(或名称不存在)时,这一行什么都不做,控制台会提示。