词缀系统(affixes.yml)
词缀(Affix) 是秘境的 强化修饰:激活时按层数随机注入若干个,改写这座秘境的刷怪 / 环境 / 规则 / 战利品。本页拆解 affixes.yml 的全部字段、11 种 effect.type、危险预算约束,并列出内置 13 个词缀。
🔑 架构红线:QR 不算 stat / 属性。词缀让「怪变强」=刷怪时给怪附 level,由 MythicMobs 自己缩放 stat;玩家属性委托属性插件;QR 只做数量 / 环境 / 规则 / 战利品编排。
1. 一个词缀长什么样
文件:plugins/QinhRuins/affixes.yml,顶层 affixes: 下每个 key 是一个词缀 id。
yaml
affixes:
elite-swarm: # 词缀 id(激活时按层 roll)
name: "&c精英成群" # 显示名(&颜色码;进 Bossbar / 钥石 Lore / 激活播报)
lore: ["&7刷怪数量 +50%"] # 说明行(玩家可见的词缀描述)
category: MOB # 分类:MOB | PLAYER | ENV | LOOT(仅语义标签,便于归类)
group: mob-count # 互斥分组:同 group 的词缀一次只出一个(可省略=不互斥)
danger: 30 # 危险值(吃难度预算)
reward: 30 # 奖励值(与 danger 一起决定加权抽中概率)
min-tier: 2 # 最低层数门槛(低于此层不会被 roll 到)
# max-tier: 999 # 最高层数门槛(可选,默认 999)
effect:
type: mob-count-mult # 效果类型(见第 2 节,共 11 种)
params: { mult: 1.5 } # 该类型的参数字段速查
| 字段 | 含义 | 默认 |
|---|---|---|
name | 显示名(& 颜色码);缺省用 id | id |
lore | 玩家可见说明行(列表) | 空 |
category | MOB/PLAYER/ENV/LOOT,语义标签 | MOB |
group | 同组互斥分组名;省略=不参与互斥 | 无 |
danger | 危险值,受层数 danger-budget 约束 | 10 |
reward | 奖励值;danger+reward 决定加权权重 | 10 |
min-tier / max-tier | 出现的层数区间 | 1 / 999 |
effect.type | 效果类型(11 种之一) | 空(无效果) |
抽中权重 =
danger + reward:又危险又肥的词缀更容易被抽中。danger:0的纯肥词缀(贪婪 / 鎏金 / 秘藏)不吃预算,靠reward撑权重。
2. effect.type 全 11 种
affixes.yml 顶部注释即为权威说明。逐一对照:
type | 作用 | 参数 / 字段 |
|---|---|---|
mob-level-bonus | 刷怪 level +bonus(MM 自己缩放 stat,QR 不改数值) | params: { bonus: <整数> } |
mob-count-mult | 刷怪数量 ×mult(QR 编排数量,非 stat) | params: { mult: <倍数> } |
player-status | 给范围内玩家挂原版药水效果(持续刷新) | params: { 效果名: 等级 },可多条 |
no-heal | 禁疗规则:取消范围内一切回血 | params: {} |
time-limit | 限时(秒);多个取最短 | params: { seconds: <秒> } |
loot-quantity-mult | 净化掉落数量 ×mult(与 loot-bonus 叠乘) | params: { mult: <倍数> } |
unique-chance-mult | 战利品表里 unique:true 条目权重 ×mult | params: { mult: <倍数> } |
currency-mult | 净化货币奖励 ×mult(走 CoreLib 经济桥) | params: { mult: <倍数> } |
broadcast | 激活时全服播报 | message: "..."(支持 {ruin}/{tier}) |
command | 激活时对在场玩家执行命令 | commands: [ ... ](支持 {player}/{tier}) |
script | JS 脚本自定义逻辑 | script: "qinhruins:文件.js:函数" |
要点:
player-status的 params 键是原版药水效果名(如SLOWNESS/WEAKNESS/DARKNESS/MINING_FATIGUE),值是等级(0= I 级),可写多条。效果每秒刷新,玩家在秘境范围内持续承受。- 同类型词缀可叠加:多个
mob-count-mult倍率连乘、多个mob-level-bonus求和、多个time-limit取最短。 command词缀用 yaml 直接写,控制台身份执行;script词缀引流到开发者脚本页:逻辑写在scripts/*.js,QR 经 CoreLib 的 GraalJS 调用。详见 词缀脚本(JS)。
command / script 词缀示例
yaml
# 命令词缀({player}=玩家名 {tier}=层数)
blood-ritual:
name: "&4血祭"
danger: 25
reward: 20
min-tier: 3
effect:
type: command
commands:
- "effect give {player} minecraft:wither 200 0"
- "mm mobs spawn EliteBoss 1 {player}"
# JS 脚本词缀(逻辑在 scripts/affix_example.js)
scripted-trial:
name: "&c血之考验"
danger: 25
reward: 20
min-tier: 3
effect:
type: script
script: "qinhruins:affix_example.js:onActivate"3. 危险预算
激活时 QR 按层 roll 出 affix-count(见 秘境与钥石 §3)个词缀,受两条约束:
- 危险预算(danger-budget):所有被选词缀的
danger之和不得超过该层预算(tiers.danger-budget,默认40 + tier*10)。这防低层地狱叠加——T1 预算 50,凑不齐「禁疗(45)+限时(30)+怪潮(45)」这种重型组合,得爬到高层预算够了才可能凑齐。- 首个词缀始终保底:第一个词缀无视预算强制选入,保证每个秘境至少有一个词缀。
danger-budget写≤0(或"0")= 不限预算。
- 同组互斥(group):被选中一个词缀后,其同
group的其它词缀全部从池中剔除。例如选了「精英成群」,「怪潮」就不会再出现(同属mob-count组)。
抽签是加权随机:候选词缀按
danger+reward加权抽取,再校验预算与互斥。min-tier/max-tier不满足的词缀根本不进候选池。
4. 互斥分组一览
内置词缀的两个互斥组:
| group | 互斥成员 | 含义 |
|---|---|---|
mob-count | 精英成群 / 怪潮 | 刷怪数量类,一次只出一个 |
mob-level | 百战 / 霸主 | 怪等级类,一次只出一个 |
🖼️ [图片占位] 秘境 Bossbar 顶部并排显示多个词缀名(如「霸主 时之沙 鎏金」),玩家一眼看清本层修饰 · 建议
assets/affix-bossbar.png
需要新的互斥关系,给词缀配同一个 group 字符串即可(名字随便取,同名即互斥)。
5. 内置 13 个词缀
| id | 名称 | 分类 | group | danger / reward | min-tier | 效果 |
|---|---|---|---|---|---|---|
elite-swarm | 精英成群 | MOB | mob-count | 30 / 30 | 2 | 刷怪数量 ×1.5 |
horde | 怪潮 | MOB | mob-count | 45 / 45 | 5 | 刷怪数量 ×2.0 |
veteran | 百战 | MOB | mob-level | 25 / 20 | 1 | 怪等级 +2 |
overlord | 霸主 | MOB | mob-level | 40 / 35 | 4 | 怪等级 +5 |
oppression | 重压 | PLAYER | — | 20 / 15 | 1 | 缓慢 I + 挖掘疲劳 I |
enfeeble | 虚弱诅咒 | PLAYER | — | 25 / 20 | 2 | 虚弱 I |
eternal-night | 永夜 | ENV | — | 20 / 18 | 1 | 黑暗(DARKNESS) |
brittle-ward | 脆弱结界 | PLAYER | — | 45 / 40 | 5 | 禁用一切治疗(no-heal) |
sands-of-time | 时之沙 | ENV | — | 30 / 30 | 3 | 限时 5 分钟(300s) |
greed | 贪婪 | LOOT | — | 0 / 50 | 1 | 战利品数量 ×2.5 |
golden-touch | 鎏金 | LOOT | — | 0 / 45 | 1 | 货币掉落 ×3.0 |
hidden-trove | 秘藏 | LOOT | — | 0 / 60 | 3 | 独占物品掉率 ×3.0 |
herald | 秘境降临 | ENV | — | 0 / 5 | 1 | 激活时全服播报 |
affixes.yml里还附了blood-ritual(command)与scripted-trial(script)两个注释掉的示例,去掉#即可启用。
6. 改完别忘记
- 编辑
affixes.yml后/qr reload生效。 - LOOT 类词缀(贪婪 / 鎏金 / 秘藏)依赖净化战利品表与经济插件配置,配套见 战利品系统 与 秘境与钥石 §5。
- 词缀如何被 roll、危险预算如何随层放宽 → 回看 秘境与钥石。