跳到主要内容

动作:怪物

这一页的动作负责叫出怪物组、单独生成怪物、清怪和发光。怪物组本身怎么写(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

对象:不看 @对象。

start.yml
script:
- "monstergroup 前厅卫兵"
monster.yml
前厅卫兵:
mobs:
- "minecraft:zombie 3"
- "minecraft:skeleton 2"
end:
- "obstacle open 大门"
- "monstergroup 左翼守卫 右翼守卫"
- "monstergroup 精英巡逻 10"
monster.yml
# 王活着的时候,小怪一批打完 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 = 全部怪物组

对象:不看 @对象。

trigger.yml
重新挑战:
type: interact
point: 挑战石碑
script:
- "remove-monstergroup 试炼守卫"
- "monstergroup 试炼守卫"
script.yml
重置所有关卡:
- "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。

对象:不看 @对象。

trigger.yml
踩到陷阱:
type: enter
region: 陷阱区
once: true
script:
- "title &c陷阱!||&7冰霜流浪者从地底爬出"
- "mob minecraft:stray 陷阱区 3 spread=2"
script.yml
狂暴:
- "title &4守卫狂暴了||&7小心它的攻击"
- "mob FrostWisp 王座 4 5 spread=4 scattered=0.5"
monster.yml
# 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 或显示名称(不含颜色)。不写 = 清掉副本里所有怪

对象:不看 @对象。

monster.yml
霜烬守卫:
end:
- "killmobs"
- "message &a守卫倒下,残余的怪物也随之消散。"
trigger.yml
净化祭坛:
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 = 取消发光

对象:不看 @对象。

script.yml
狂暴:
- "title &4守卫狂暴了||&7小心它的攻击"
- "glow 霜烬守卫"
task.yml
# 前厅卫兵的 start 里写「task start 提示残怪」:开打 60 秒后只剩 3 只以下就让它们发光
提示残怪:
auto-start: false
timeline:
60:
- "if {group:前厅卫兵:alive} <= 3 -> glow 前厅卫兵"
trigger.yml
关闭发光:
type: interact
point: 熄灯拉杆
script:
- "glow 前厅卫兵 false"

注意:

  • 只影响现在场上的怪,之后才生成的怪不会自动发光。想让一个组的怪一出来就发光,在 monster.yml 那一组写 glowing: true; 只让某几只发光,在那一行怪物后面加 glow(见 怪物组)。
  • glow all(或只写 glow)让副本里所有怪发光,glow all false 全部取消。
  • 写的怪物组还没开始(或名称不存在)时,这一行什么都不做,控制台会提示。