跳转到内容

玩法机制

ProcGen 管时机(封门、刷波、清房),具体效果用本体脚本或其它插件实现。

  1. 出生在起点房
  2. 进战斗房封门,刷第 1 波
  3. 清完一波,间隔 wave-delay(默认 2 秒)刷下一波
  4. 最后一波清完开门
  5. 商店、宝藏、休息房进入即通过
  6. 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 关闭。

manual-clear: true

进门封门,怪清完也不开门,直到脚本调用:

action.procgen_clear_room('@trigger')

有刷怪点就照常刷怪,没有就是纯机关房。

拉杆开门:房间 yml

type: event
manual-clear: true
interacts:
- "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

掉虚空死亡时自动改到起点房复活。