动作:结束副本
用脚本判定这一场通关或失败。通关、失败之后会发生什么(执行 end.yml、发奖励、结算时间、送玩家回去)见 通关组与奖励。
每个动作的格式说明见 怎么看这几页动作说明。
结束时会依序:
- 移除场上所有副本怪物,停掉所有任务组,取消所有还在等待的
delay(其他脚本的后续都不会再执行); - 播放通关 / 失败音效,执行
end.yml的clear或fail; - 通关时发奖励、记录评价,结算时间内还可以打开宝箱;时间到了把玩家送回原处。
这三个动作都会让它所在的这一串到此为止,写在 后面的行不会执行($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恭喜通关)会整段显示出来,并判定通关。