跳到主要内容

房间 room.yml

rooms/<房间>/room.yml 是一间房的设置。用 /cd admin rogue room-add 或编辑模式「新增房间」建立的房间都会带一份有注释的 room.yml。

rooms/combat_hall/room.yml
type: combat # start 起点 / combat 战斗 / elite 精英 / boss 首领 / reward 宝藏 / shop 商店 / rest 休息处 / event 事件
name: "&c深渊大厅" # 进房间的标题(不写 = 种类名称)
icon: { material: BONE } # 门上的物品(不写 = config.yml roguelike.types 的默认)
weight: 10 # 同种类的房间之间谁比较常出现
floors: all # 第几层会出现:1-3 / 4+ / all
max-per-run: 0 # 每场最多出现几次(0 = 不限)
spawn: spawn # 入口点(编辑模式的床)
exit: exit # 出口点(门出现在这里;要指定每扇门就另外放 exit1 exit2 exit3)
door: "" # 清除时自动打开的障碍名称
clear-when: groups # groups / mobs / script / enter / event(不写 = 依种类)
clear-groups: [] # groups 模式要等哪些怪物组(空 = 这间房 monster.yml 的全部怪物组)
enter-delay: 2s # 不写 = config.yml 的 roguelike.enter-delay
draft: default # default 照 cards.yml 的 draft.when / true 清除后选祝福 / false 不选
scaling: { health: 1.0, damage: 1.0, level: 0, amount: 1.0 } # 这间房的怪额外倍率
environment: {} # 只覆盖有写的,例如 { time: 18000, weather: clear, border: 16, effects: [] }
rules: {} # 以副本 config.yml 的 rules 为基础覆盖
# max-mobs: 80
# chest-mode: personal
# interact-hint: true

种类 type​

写法中文也可以写默认清除条件说明
start起点、起始enter开场的房间。只有 config.yml 的 roguelike.start-room 那一间是起点,它的种类一定当成 start;其他房间写 start 没有意义
combat战斗groups一般的战斗
elite精英groups怪物套上 floors.yml 的 scaling.elite 倍率(MythicMobs 的怪在 mythic: level 时不套用);cards.yml 的 draft.when 有 elite 时打完选祝福
boss首领、王groups每层的最后一间,由楼层规则安排,不会出现在一般的门后面
reward宝藏、奖励(或 treasure)enter见 宝藏房
shop商店enter见 商店房
rest休息、休息处、营火enter见 休息处
event事件、祭坛有选项 = event,没有 = enter见 事件房

没有 room.yml 的房间当成权重 10、每层都会出现的战斗房(后台会提示)。

通用设置​

键默认说明
name种类名称进房间的大标题、计分板的 {room_name};门上要显示房名请开 door.show-room-name
icon种类的物品门上方飘着的物品(物品名称或物品区块)
weight10同种类的房间之间的权重;0 = 不会出现在门后面
floorsall第几层会出现:1-3、4+、all(全部)、2(只有第 2 层)
max-per-run0每场最多出现几次,0 = 不限
spawnspawn入口点的名称:传送进来的位置,也是这间房的存档点(复活、团灭重来、掉线重连都回到这里)
exitexit出口点的名称,门出现在这里,见 门出现在哪里
door空清除时自动打开的障碍(编辑模式的铁栏杆工具);脚本也可以 room door open / room door close
clear-when依种类什么时候算清除,见 清除条件
clear-groups空clear-when: groups 时要等哪些怪物组;空 = 这间房自己的全部怪物组
enter-delayroguelike.enter-delay传送进来之后几秒才开始出怪、执行这间房的 start.yml
draftdefault清除后要不要选祝福:default 照 cards.yml 的 draft.when;true 一定选;false 不选
scaling全部 1、等级 0这间房的怪额外倍率:health、damage、amount(倍率)与 level(加几级),叠在楼层成长上。MythicMobs 的怪在 scaling.mythic: level(默认)时只吃 level 与 amount
environment副本的环境只覆盖有写的:time、weather、gamemode、effects、border
rules副本的 rules以副本的规则为基础覆盖,写法见 副本规则
max-mobs副本的 max-mobs这间房同时最多几只被追踪的怪
chest-mode副本的 chest-mode地图上的箱子:vanilla / personal / explore
interact-hint副本的设置互动点上方的提示

players、party、lives、ticket、requirements、modes、scoreboard、bossbar、sounds、notify、ranks、variables、time-limit、countdown、roguelike…… 这些只能写在副本的 config.yml;写在 room.yml 会提示并忽略。

清除条件 clear-when​

值什么时候算清除
groups要等的怪物组(clear-groups,没写 = 这间房 monster.yml 的全部怪物组)都打完,而且场上没有剩下的怪
mobs场上的怪全死了、没有正在进行的怪物组(一直没出过怪的话,开始 5 秒后也算)
script只有脚本执行 room clear(或 clear)才算
enter一进来就算(门马上出现)
event事件房的选择做完
一波接一波

groups 模式会等「全部」要等的怪物组打完,所以第二波、第三波不用写 auto-start:在上一组的 end 写 monstergroup start 第二波 就好。注意每一组都要会被叫出来(自动开始,或有脚本叫它),否则房间永远不会清除,validate 会提醒。

房间清除时依序发生:

  1. 剩下的怪全部移除(enter 除外),door 的障碍打开;
  2. 执行房间 end.yml 的 clear:,每位队员各发一份 rewards.clear;
  3. 每人拿到 roguelike.currency.room-clear 的魂晶,有「清除房间回血」祝福的人回血;
  4. 等复活的人站起来(revive-on-room-clear)、room-clear 触发、祝福的 on-room-clear;
  5. 这一层的最后一间 → 这一层打完;要选祝福 → 先选祝福再出现门;否则 → 门马上出现。

脚本里的 clear、win、complete、end 在随机地牢都代表「这间房清除」;/cd admin instance clear <编号> 也是。

门出现在哪里​

房间清除后,下一步的门出现在出口:

  • exit1、exit2、exit3 点位的数量不少于这一次的门数:第 1、2、3 扇门各自出现在那里;
  • 不够的话(例如只放了 exit1、exit2,却出现 3 扇门),或只有 exit:以 exit 为中心(没有 exit 时以 exit1 为中心),往它朝向的左右两侧排开,每扇间隔 3 格;
  • 都没有:门出现在入口前方 3 格(validate 会提醒你补出口)。

要分别摆每扇门的话,门数上限是几扇就放几个 exit1exit3。名称是 room.yml 的 exit 后面加 13:exit: door 时要放 door1~door3。

每扇门 = 全息字(种类、房名或「???」、票数)+ 飘着的物品 + 一圈粒子,样子由 config.yml 的 roguelike.types 决定。

宝藏房 reward​

rooms/treasure/room.yml
type: reward
name: "&6遗忘的宝库"
reward:
point: chest # 宝箱的点位;空白 = 进房间直接领
coins: 20-35 # 每人拿多少魂晶(范围)
draft: true # 领完选一张祝福
draft-rarity: rare # 那次选祝福至少一张这个稀有度以上
effects: {} # 额外效果(和商店商品的写法一样,例如 { heal: 30 })
键默认说明
pointchest右键这个点位的方块(或它上方的提示字)领奖励,每人每次进房领一次;空白 = 一进房间大家直接领
coins20-35每人拿多少魂晶(会算祝福的魂晶加成)
drafttrue领完再选一张祝福(个人选,不会挡住门)
draft-rarityrare那次选项里至少一张这个稀有度以上;空白 = 不保证
effects无额外效果,写法见 效果区块

还没领的人每 10 秒会在动作栏收到提醒。房间里另外用 loot.yml 摆的宝箱照常能开,每次进这间房都会重新抽。

商店房 shop​

rooms/shop/room.yml
type: shop
name: "&a深渊商人"
shop:
npc: shop # 商人站的点位
entity: minecraft:wandering_trader
display: "&e深渊商人 &7(右键)"
goods: [] # 只卖这些商品 ID(空 = shop.yml 全部)
键默认说明
npcshop商人出现的点位名称(编辑模式的指南针点位或村民蛋 NPC 工具都可以)
entityminecraft:wandering_trader商人的实体种类
display&e商人 &7(右键)商人头上的名字
goods空这间店只卖 shop.yml 里的这些商品 ID;空 = 全部商品都可能出现

右键商人、点进房间时聊天栏的按钮、或输入 /cd shop 打开商店。商品、价格、刷新见 商店 shop.yml。

休息处 rest​

rooms/rest/room.yml
type: rest
name: "&b林间营火"
rest:
point: campfire
picks: 1 # 每人可以选几次
options: {} # 空 = 内置:回复 / 淬炼 / 净化
键默认说明
pointcampfire右键这个点位的方块(或提示字)打开选项
picks1每人每次进房可以选几项
options内置三项选项清单,写法同 事件房的选项;空 = 下面三项

内置选项:

选项效果
heal 回复生命回满,倒下的队友也会站起来(heal: 100、revive-dead: true)
temper 淬炼选一张祝福 +1 层(upgrade: 1)
cleanse 净化选一张诅咒 −1 层(remove-curse: 1,没有诅咒时不能选)

事件房 event​

rooms/altar/room.yml
type: event
name: "&5染血祭坛"
event:
point: altar
picker: each # each 每人各选 / leader 队长决定 / vote 全队投票
title: "&5染血祭坛"
text: ["&7祭坛上刻着:", "&7「以血换力,以金换运」"]
timeout: 60s # 时间到还没选的人 = default: true 的选项
options:
blood:
name: "&c以血换力"
icon: { material: REDSTONE }
description: ["&7失去 30% 生命", "&7获得一张稀有以上的祝福"]
actions: ["rogue damage 30% @self"]
card: "random:rare+"
gold:
name: "&e以金换运"
icon: { material: GOLD_NUGGET }
cost: 25
description: ["&7花费 &d◆ 25", "&750% 史诗祝福 / 50% 诅咒"]
actions:
- if: "chance 50"
then: ["card give random:epic @self"]
else: ["card give random:curse @self"]
leave:
name: "&7转身离开"
icon: { material: OAK_DOOR }
description: ["&7什么都不做"]
default: true
键默认说明
pointaltar右键这个点位的方块(或提示字)打开选项;空白 = 进房间就打开
pickereacheach(每人)每人各选一次;leader(队长)队长选,效果套用到在场的每个人;vote(投票)全队投票,票多者胜、平手看队长
title / text空菜单的标题与说明文字
timeout60s时间到还没选的人自动选 default: true 的选项(没有就最后一个)
options空选项;没有选项时这间房一进来就算清除

每个在场的人都选完(或时间到)事件才算完成;clear-when 没写时,这时候房间清除、门出现。每次有人选择,全队都会看到「XXX 选择了……」。

选项的写法​

休息处与事件房的选项都是 <选项ID>: { ... }:

键说明
name / icon / description显示的名称、物品、说明
cost选这项要花多少魂晶。休息处的选项都可以收费;事件房只有 picker: each 能收费,leader / vote 写了会提示并忽略
requires条件清单(脚本条件写法,对象 = 选的人),不符合时显示成锁住,例如 ["{curses} >= 1"]
defaulttrue = 时间到时自动选这一项
效果heal、revive-dead、card、rerolls、upgrade、remove-curse、coins、lives、items、bound、actions,写法见 效果区块

选项与宝藏房的效果脚本只在这间房里有效(离开房间时还没跑完的 delay 会停掉)。

房间自己的脚本​

  • start.yml 的 script::进房间、enter-delay 之后执行一次。
  • end.yml 的 clear::房间清除时执行;rewards.clear:每位队员各发一份。
  • trigger.yml:只在这间房有效的触发,除了一般副本的种类,还可以用 room-enter、room-clear、card-pick、shop-buy,见 触发种类。
  • 房间里叫得到根目录 monster.yml 的怪物组(例如首领半血时 monstergroup start adds),出怪点用这间房地图上的同名点位。