玩法机制
ProcGen 管时机(封门、刷波、清房),具体效果用本体脚本或其它插件实现。
- 出生在起点房
- 进战斗房封门,刷第 1 波
- 清完一波,间隔
wave-delay(默认 2 秒)刷下一波 - 最后一波清完开门
- 商店、宝藏、休息房进入即通过
- Boss 房清完结算
- 封门:
seal-material(默认铁栏),seal-combat-doors: false关闭 - 波次:
mobs、mobs-wave-2……,每波后执行scripts.on_wave - 怪物等级:
mob-level,范围如"1-3"每波随机 - 刷怪预兆:
spawn-telegraph,刷怪前冒粒子、响音效 - 词缀:按概率抽取,见房间词缀
精英房:必带词缀,怪等级 +2(elite.level-bonus)。
Boss 房:清完结算。默认参与词缀抽取,modifiers.include-boss: false 关闭。
事件房和手动清房
Section titled “事件房和手动清房”manual-clear: true进门封门,怪清完也不开门,直到脚本调用:
action.procgen_clear_room('@trigger')有刷怪点就照常刷怪,没有就是纯机关房。
拉杆开门:房间 yml
type: eventmanual-clear: trueinteracts: - "5,1,5: 开门拉杆"interacts.yml 里拉杆的脚本加 action.procgen_clear_room('@trigger')。
二选一:放一个 NPC,每个选项最后都调用 procgen_clear_room。同一 NPC 在不同房间对话进度独立;要限制每房一次,用 npc_scope 拼变量名:
var k = 'choice_' + getVar('npc_scope');if (!getVar(k)) { setVar(k, true); action.heal('@trigger'); action.procgen_clear_room('@trigger');}challenges: timed: chance: 0.25 # 限时清剿出现概率 seconds: 60 encore: true # 连战加赏 reward: 稀有礼包 # rewards.yml 奖励包- 限时清剿:按时清完额外发奖,超时不影响通关
- 连战加赏:清房后潜行右键宝箱再打一轮,赢了额外发奖。每房一次,宝箱已被领取则不可用。Boss 房、手动清房、无刷怪点或无宝箱的房间不参与
跳波、强制清房、怪物异常消失不算成功。默认都关闭。
| 项目 | 分数 | 计算 |
|---|---|---|
| 探索 | 50 | 清房数 ÷ 总房数 × 50 |
| 生存 | 30 | 每死一次 -10 |
| 速度 | 20 | 不超过「房间数 × 标准秒数」满分,两倍时为 0 |
≥90 S,≥75 A,≥60 B,其余 C。评级写入变量 procgen_grade。
grading: par-seconds-per-room: 90 # 默认 60 scripts: S: - "action.grant_reward('@all', '稀有礼包')"任何 QueDP 脚本都可用,作用于触发者所在房间(延迟执行也不会错房):
| 动作 | 中文 | 作用 |
|---|---|---|
action.procgen_clear_room('@trigger') | procgen清房 | 通过房间:开门、记进度、跑 on_clear,Boss 房结算 |
action.procgen_open_doors('@trigger') | procgen开门 | 只开门 |
action.procgen_seal_doors('@trigger') | procgen封门 | 封门 |
action.procgen_next_wave('@trigger') | procgen下一波 | 立即刷下一波,没有则清房 |
action.procgen_reinforce('@trigger') | procgen援军 | 追加一批当前波的怪,Boss 房无效 |
由本体 config.yml 的 revive 控制,建议原地复活:
revive: auto: at: in_place掉虚空死亡时自动改到起点房复活。