仪式系统
基本信息
| 属性 | 值 |
|---|---|
| 仪式总数 | 36(详见 仪式目录) |
| 注册表 | WayofTime.alchemicalWizardry.api.rituals.Rituals |
| 效果基类 | WayofTime.alchemicalWizardry.common.rituals.RitualEffect |
| 配置 | AWWayofTime.cfg 的 Ritual Blacklist 分类,36 个独立开关 |
与血之祭坛(altar)系统的区别
本模组有两套完全独立的配方系统,初学者极易混淆:
| 血之祭坛(altar) | 仪式(ritual) | |
|---|---|---|
| 载体方块 | 血之祭坛(1 个) | 仪式石结构(多个方块) |
| 配方表 | AltarRecipeRegistry(25 条) |
Rituals.ritualMap(36 条) |
| 消耗物 | 生命之源流体 | 仪式石充能 |
| 等级概念 | 祭坛等级 1–6 | 仪式 tier 1/2 |
| 配置文件 | Dungeon Loot Chances 等 |
Ritual Blacklist |
| 条目 | 血之祭坛配方 | 本条目 |
运行机制
- 玩家用仪式推测杖(
ItemRitualDiviner)定位已建成但未激活的仪式结构。推测杖有 2 个等级,由setMaxRuneDisplacement(stack, 1|2)设定(AlchemicalWizardry.java:814-817)。 - 仪式结构被识别后,其 ID 出现在主仪式石的 GUI 列表中。
- 玩家激活后,仪式按
lpCost扣除生命点,按tick逐 tick 消耗充能。 - 效果由该仪式对应的
RitualEffect子类实现。 - 若
AWWayofTime.cfg中对应Ritual Blacklist项为true,该仪式在postInit阶段被从注册表移除,玩家完全看不到也用不了。
仪式结构方块
构成仪式结构的 7 个方块(主仪式石、仪式石、不完善的仪式石、奥术基座、奥术基柱、稳定符印、附魔符印)见 仪式石系统。
ImperfectRitualStone(不完善的仪式石)是廉价填充块:源码把它与石板升级链(空白的石板 → 加强的石板 → 灌输石板 → 恶魔石板)放在同一设计语境下,对应「渐进式解锁」的仪式结构成本。
仪式效果类
RitualEffect 抽象基类位于 WayofTime.alchemicalWizardry.api.rituals.RitualEffect(注意不在 common.rituals 包内)。36 条 live 仪式对应 36 个位于 common/rituals/ 的 RitualEffect 子类。
common/rituals/ 下共有 38 个 RitualEffect* 子类文件,其中 2 个未注册:
| 类 | 状态 | 证据 |
|---|---|---|
RitualEffectApiaryOverclock |
注册被注释掉 | AlchemicalWizardry.java:4319(整行以 // 开头) |
RitualEffectAlphaPact |
从未被引用注册 | 全仓库仅 RitualEffectAlphaPact.java 自身出现该类名;语言文件中也没有任何以 AW0 开头的仪式名键与之对应 |
RitualEffectAlphaPact 是完全实现的类(120 行,含 spawnMoreDemons() 与 getNewStorage() 实现),依赖 common/rituals/LocalStorageAlphaPact 存储恶魔列表,但没有任何 Rituals.registerRitual 调用引用它,玩家无法获得该仪式。EntityMinorDemonGrunt.java:197 中的 stor instanceof LocalStorageAlphaPact 判断的是存储类而非该效果类,二者不可混为一谈。
以上 2 个属死代码,不计入 36 条仪式。
数值
| 数值名 | 来源 | 值 |
|---|---|---|
| 仪式总数 | initRituals() live 注册数 |
36 |
| 注释掉的注册 | AlchemicalWizardry.java:4319 |
1(RitualEffectApiaryOverclock) |
| 从未注册的已实现效果类 | RitualEffectAlphaPact |
1 |
common/rituals/ 下效果类总数 |
文件枚举 | 38(36 live + 2 dead) |
| 一级 / 二级 | tier 参数 | 27 / 9 |
| 黑名单配置项数 | blacklistRituals() 的 r() 调用 |
36,与仪式数一一对应 |