✦ 随机地牢
同一个副本,每一场走的路都不一样。 起点房出发 → 打完一间房间,出口出现两三扇门 → 选一扇走进去 → 战斗、精英、宝藏、商店、休息处、事件……每层最后是首领 → 打完选一张祝福,带着它往下一层走。
副本的 config.yml 写上 type: roguelike,这个副本就变成随机地牢。它不再是一张固定的地图,而是一堆房间:rooms/ 底下每个文件夹一间,每间有自己的地图、怪物组和脚本。每一场开始时,插件照楼层规则把房间随机串起来。
选门前进
房间清除后出口出现 1~3 扇门,门上显示房间种类(也可以显示成「? 未知」)。走进门、点门上的字或点聊天按钮投票,可以设成全队投票(票多者胜)、队长决定或第一个投票的人决定。
祝福卡
首领、精英打完从三张里选一张:加伤害、减伤、吸血、暴击、荆棘、加血上限、药水效果……同一张可以叠好几层,一直带到这场结束,离开副本自动移除。
魂晶与商店
杀怪、清除房间、打完一层都拿魂晶,在商店买回复药水、祝福、额外生命、重抽券;价格随楼层上涨,偶尔特价。也能卖用服务器金钱或门票付款的商品。
有限层 / 无限层
「挑战 3 层」打倒最后一层的首领就通关;「无限深渊」一直往下打到团灭,每 5 层出现撤退之门,可以带着奖励安全离开,冲最高层数排行榜。
越往下越强
每层怪物的血量、伤害、数量、MythicMobs 等级照公式成长,精英房、首领再额外加强(MythicMobs 的怪默认只加等级与数量);血量超过服务器上限的部分自动换算成「耐打」,无限层也不会爆数字。
一样的编辑模式
/cd admin edit 副本 打开房间清单,点一间进去盖地图、摆点位;房间的种类、权重、出现楼层在菜单里直接切换。一般副本的脚本、怪物组、触发写法全部照用。
一场随机地牢怎么跑
/cd join 副本 ─▶ 检查条件、收门票 ─▶ 贴好起点房 ─▶ 传送进场 ─▶ before.yml ─▶ 倒数 ─▶ start.yml
│
▼
起点房(一进来就算清除)─▶ 出口出现第 1 层的第一扇门
│
▼
┌─────────────────────────── 第 N 层 ───────────────────────────┐
│ 第 1 间(只有一扇门)─▶ 清除 ─▶ 选门(2~3 扇)─▶ 第 2 间 ─▶ 清除 ─▶ 选门 ─▶ … │
│ 战斗 / 精英 / 宝藏 / 商店 / 休息处 / 事件(精英打完也会选祝福) │
│ ─▶ 最后一间:首领房 │
└──────────────────────────────────────────────────────────────┘
│ 首领打完:层奖励、魂晶、全队补满血、选一张祝福
▼
下一层的门 ─▶ 第 N+1 层 ─▶ …
│
▼
有限层:打完最后一层的首领 = 通关 无限层:打到团灭,或走进「撤退之门」带着奖励离开
│
▼
end.yml 结算、发奖励 ─▶ 结算菜单 ─▶ 送回原处
- 每一层要走几间、门后面会出现什么种类、每种最多几次,都写在 floors.yml。
- 选门、选祝福、换房间的时候是「和平阶段」:这时候倒下不扣生命、马上复活;房间清除时等待复活的队友也会立刻站起来。
- 下一间房间在背景就先贴好了,走进门几乎不用等(见 全局设置)。
房间种类
| 种类 | 门上显示 | 进去之后 | 什么时候算清除(默认) |
|---|---|---|---|
start 起点 | — | 开场就在这里,只会有一间 | 一进来就算 |
combat 战斗 | ⚔ 战斗 | 打怪 | 房间的怪物组全部打完 |
elite 精英 | ☠ 精英 | 更强的怪(额外倍率、发光),打完选祝福 | 怪物组全部打完 |
boss 首领 | ♛ 首领 | 每层最后一间,打完这层就结束 | 怪物组全部打完 |
reward 宝藏 | ✦ 宝藏 | 右键宝箱领魂晶,再选一张祝福(选项里至少一张稀有以上) | 一进来就算(门马上出现) |
shop 商店 | ⚖ 商店 | 右键商人或 /cd shop 买东西 | 一进来就算 |
rest 休息处 | ♨ 休息处 | 右键营火:回复 / 淬炼祝福 / 净化诅咒 | 一进来就算 |
event 事件 | ? 事件 | 右键祭坛做出选择(以血换力、花魂晶赌运气……) | 每个人都选完(或时间到) |
每种房间的设置见 房间 room.yml。
有限层与无限层
难度模式(modes:)各自决定要打几层,排行榜和记录也照模式分开:
modes:
normal:
name: "&a挑战 3 层"
floors: 3
endless:
name: "&5无限深渊"
floors: infinite
lives: 3
有限层(floors: 3) | 无限层(floors: infinite) | |
|---|---|---|
| 怎么赢 | 打完最后一层的首领 = 通关 | 走进撤退之门(每 retreat-every 层出现一次)= 撤退成功 |
| 怎么输 | 团灭、时间到、所有人离开、脚本 fail = 挑战失败 | 任何失败(团灭、时间到、所有人离开、脚本 fail)= 挑战结束(记下打到第几层) |
| 评价 | 和一般副本一样照通关时间(ranks) | 照打完的层数(ranks-by-floor) |
| 排行榜 | 通关时间榜 + 层数记录 | 层数排行榜(/cd top、PlaceholderAPI) |
floors.yml 的 last: | 套用在最后一层 | 不会用到 |
时间只算真正在房间里的时间:选祝福、换房间的时间不算进去。
需要什么
- FastAsyncWorldEdit:房间要在背景线程贴上,随机地牢必须装 FAWE。只有 WorldEdit 时,就算主配置
paste.allow-main-thread: true也不能开始随机地牢;一般副本默认同样会拒绝,要改成true才会在主线程硬贴。 - 其余和一般副本一样:MythicMobs、PlaceholderAPI、Vault、云界面 CloudUI 都是选用。
房间里的怪物组、触发组、任务组、脚本组、宝箱组写法完全和一般副本相同。差别只有一个:在随机地牢里,clear(以及 win、complete、end)代表「这间房清除」,不是整场通关;要直接结算整场用 rogue finish。见 脚本。