跳到主要内容

动作:结束副本

用脚本判定这一场通关或失败。通关、失败之后会发生什么(执行 end.yml、发奖励、结算时间、送玩家回去)见 通关组与奖励。 每个动作的格式说明见 怎么看这几页动作说明。

结束时会依序:

  1. 移除场上所有副本怪物,停掉所有任务组,取消所有还在等待的 delay(其他脚本的后续都不会再执行);
  2. 播放通关 / 失败音效,执行 end.yml 的 clear 或 fail;
  3. 通关时发奖励、记录评价,结算时间内还可以打开宝箱;时间到了把玩家送回原处。

这三个动作都会让它所在的这一串到此为止,写在后面的行不会执行($end 带 delay 时除外)。

clear 通关​

别名:win、complete

立刻判定通关。

简写:clear

完整写法:$clear{}

没有参数。对象:不看 @对象。

monster.yml
霜烬守卫:
end:
- "message &6王座宝箱的寒冰融化了,结算时间内记得打开!"
- "delay 2"
- "clear"
trigger.yml
逃出古殿:
type: enter
region: 出口
players: all
once: true
script:
- "title &a成功逃出!"
- "clear"
monster.yml
# 王和护卫都要打完才通关
霜烬守卫:
end:
- "if {group:冰霜护卫:state} == done -> clear"
冰霜护卫:
end:
- "if {group:霜烬守卫:state} == done -> clear"

注意:

  • 怪物组最后一波打完时,会先把这一组标记为「打完」再执行 end,所以在 end 里判断 {group:自己:state} == done 是成立的。
  • 已经通关或失败之后再执行 clear、fail 不会有任何效果。

fail 失败​

别名:lose

立刻判定失败。

简写:fail [原因]

完整写法:$fail{reason=原因}

参数必填说明
第 1 个起的整段 / reason(或 text)否失败原因,可以用变量。会显示在内建的失败提示里,end.yml 的 fail 可以用 {reason} 读出来。不写 = 默认的「挑战失败」文字

对象:不看 @对象。

trigger.yml
长老倒下:
type: mob-death
mob: ElderGuard
once: true
script:
- "fail &c长老被击倒了,护送失败"
task.yml
限时守护:
auto-start: true
timeline:
180:
- "if {group:祭坛守护:state} != done -> fail &c没能在 3 分钟内守住祭坛"
end.yml
fail:
- "message &c挑战失败:{reason}"
- "message &7本次存活时间 {elapsed}"

注意:副本有时间限制(time-limit)、全队倒下、所有人离开时会自动判定失败,不用自己写。

end 结束(DungeonPlus)​

DungeonPlus 的 $end,用一个动作决定通关或失败,还能先发一段消息、延迟几秒再结束。新写的副本直接用 clear、fail 更清楚。

简写:end / end clear / end fail [原因] / end 文字

DungeonPlus 写法:$end{type=title;text=&a挑战成功,&7即将返回主城;reward=true;delay=3} @dungeon

简写的参数:

参数必填说明
第 1 个否类型:clear、win、complete、success = 通关;fail、failure、lose = 失败。不写 = 通关。第一个词不是这几个时,整段都当成文字显示,并判定通关
第 2 个起的整段否失败时的原因(通关时不使用)

完整写法的参数:

参数必填说明
reward否true(默认)= 通关,发奖励;false = 判定失败
end-type否COMPLETE = 通关;FAILURE、ALL_DEATH、LEADER_LEAVE、UNKNOWN = 失败。写了 end-type 时以它为准,reward 不看
text否结束前先对副本里所有人发的文字
type否text(默认,聊天栏)/ title(text 里用英文逗号分开主标题和副标题)
delay否几秒后才结束,时间写法同 delay

对象:不看 @对象。

monster.yml
霜烬守卫:
end:
- "$end{type=title;text=&6挑战成功,&7即将返回主城;reward=true;delay=3} @dungeon"
trigger.yml
放弃挑战:
type: interact
point: 投降石碑
script:
- "$end{type=text;text=&c{self} 敲响了投降钟……;end-type=FAILURE} @dungeon"
trigger.yml
护送失败:
type: mob-death
mob: ElderGuard
script:
- "end fail &c长老被击倒了"

注意:

  • 带 delay 时这一行不会卡住后面的行,后面的动作会继续执行;时间到了才结束。在这段时间内副本若已经因为其他原因结束,就不会再结束一次。
  • 本插件只有「通关」和「失败」两种结束。DungeonPlus 的 reward=false(结束但不发奖励)在这里会算失败。
  • 完整写法判定失败时,失败原因是默认文字;想自订原因,用 fail 原因。
  • 简写只有第一个词是上面列出的类型时才当成类型;其他文字(例如 end &6恭喜通关)会整段显示出来,并判定通关。