Skip to content

词缀系统(affixes.yml)

所属:服主指南总览 · 上游:秘境与钥石 · 相关:战利品系统 · 词缀脚本(JS)

词缀(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显示名(& 颜色码);缺省用 idid
lore玩家可见说明行(列表)
categoryMOB/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 条目权重 ×multparams: { mult: <倍数> }
currency-mult净化货币奖励 ×mult(走 CoreLib 经济桥)params: { mult: <倍数> }
broadcast激活时全服播报message: "..."(支持 {ruin}/{tier}
command激活时对在场玩家执行命令commands: [ ... ](支持 {player}/{tier}
scriptJS 脚本自定义逻辑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)个词缀,受两条约束:

  1. 危险预算(danger-budget):所有被选词缀的 danger 之和不得超过该层预算(tiers.danger-budget,默认 40 + tier*10)。这防低层地狱叠加——T1 预算 50,凑不齐「禁疗(45)+限时(30)+怪潮(45)」这种重型组合,得爬到高层预算够了才可能凑齐。
    • 首个词缀始终保底:第一个词缀无视预算强制选入,保证每个秘境至少有一个词缀。
    • danger-budget≤0(或 "0")= 不限预算
  2. 同组互斥(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名称分类groupdanger / rewardmin-tier效果
elite-swarm精英成群MOBmob-count30 / 302刷怪数量 ×1.5
horde怪潮MOBmob-count45 / 455刷怪数量 ×2.0
veteran百战MOBmob-level25 / 201怪等级 +2
overlord霸主MOBmob-level40 / 354怪等级 +5
oppression重压PLAYER20 / 151缓慢 I + 挖掘疲劳 I
enfeeble虚弱诅咒PLAYER25 / 202虚弱 I
eternal-night永夜ENV20 / 181黑暗(DARKNESS)
brittle-ward脆弱结界PLAYER45 / 405禁用一切治疗(no-heal)
sands-of-time时之沙ENV30 / 303限时 5 分钟(300s)
greed贪婪LOOT0 / 501战利品数量 ×2.5
golden-touch鎏金LOOT0 / 451货币掉落 ×3.0
hidden-trove秘藏LOOT0 / 603独占物品掉率 ×3.0
herald秘境降临ENV0 / 51激活时全服播报

affixes.yml 里还附了 blood-ritual(command)与 scripted-trial(script)两个注释掉的示例,去掉 # 即可启用。


6. 改完别忘记

  • 编辑 affixes.yml/qr reload 生效。
  • LOOT 类词缀(贪婪 / 鎏金 / 秘藏)依赖净化战利品表与经济插件配置,配套见 战利品系统秘境与钥石 §5
  • 词缀如何被 roll、危险预算如何随层放宽 → 回看 秘境与钥石

下一步