全武器逐定义就绪度审计与执行优先级

本批调整

新增可重复运行的 CLI 审计,不再只在一行日志里记录“1,053/1,419”。每个原武器定义都列出当前构造状态、实际首个阻塞、原索引属性及独立冷缓存构造结果。

本批没有放宽处理器保护,也没有把更多武器标成已经完成。新增的是权威缺口清单及回归门,用于把后续工作直接落到阻止武器完成的功能上。

命令:

text
dotnet run --project core_sim.cli -- weapon-readiness-audit

输出 build/weapon_readiness.json。

当前实际结果

状态数量
原 WEAPON 定义1,419
可通过原构造路径1,053
被处理器/上下文门阻挡319
缺基础定义或创建等级47
已准入但实际冷构造失败0

“可构造”不等于战斗、画面或完整世界一致;报告明确不提供 all_weapons_complete 标志。

与既有共享 warm cache 普查不同,本审计为每个定义重新建立空词缀模板缓存及 seed=23 的 RNG,实际调用 MaterializeNative,再校验成长与 literal 来源。不会因为较早的武器已经热过模板而跳过后续定义的冷构造路径。

报告记录全部输入文件和相关构造代码 SHA256。输入或代码改变后,回归要求重新生成报告。

首个实际阻塞分布

首个阻塞定义数含义
TYPE20188CAST SKILL ON STRIKE FROM TARGET
TYPE5253TRANSFER DAMAGE,当前样本主要为持续伤害
TYPE10725BURN
TYPE20423CAST SKILL ON KILL AT TARGET
TYPE10822POISON
NG+ 等级上下文22原等级匹配上下文尚未接入
TYPE10921SHOCK
TYPE7918FLEE EFFECT
TYPE10616FREEZE
TYPE15211CAST SKILL ON STRIKE
TYPE749CAST SKILL
TYPE805TURN ALIGNMENT
TYPE604MISSILE REFLECT
TYPE1771EXPLODE ON DEATH
TYPE1831CAST SKILL ON DEATH FROM EFFECT OWNER

以上合计 319。每行是当前准入器返回的第一个真实阻塞,不代表该武器只有这一处缺口。实现 TYPE52 后不能直接宣称新增 53 件全部完成,必须重新审计并运行各自实际构造/战斗。

关键例子:

  • GREATAXE_U02:UNIQUE_TL2_DAMAGEOVERTIME2 → TYPE52。
  • GREATAXE_U04:UNIQUE_PROC_BLOODWASH_10 → TYPE201。
  • GREATAXE_U07:UNIQUE_DIRECT_BURN_PERCENT_05 → TYPE107。

47 个基础定义缺口不能混同

逐条与原 item_index 对照:

  • 46 条不在生成目录内,多数为 BASE 原型/模板。
  • 唯一仍在索引生成目录、但缺基础数据的条目是 STAVES/STAFF_N00(Inert Staff),原 RARITY=0,且文件及 BASEFILE 链没有 LEVEL。
  • in_spawn_catalog 只说明索引收录,不证明满足实际随机生成条件或正常可获得。

这组 47 条与旧视觉审计里的缺 mesh 条目不是同一个集合,不能将 MON_HAMMER_DWARF01 的模型缺失问题错移到这里。

所有条目仍保留在 1,419 全清单中,没有靠删模板或禁生成记录制造“全覆盖”。最终验收需区分可实例化武器、需要上下文的条目、模板和明确的原数据边界。

后续顺序

接下来优先执行:

  1. TYPE52 的目标挂载、持续伤害结算及到期/叠加语义,连同存档重放和真实 HIT 接线。
  2. 依赖持续效果的 FREEZE/BURN/POISON/SHOCK,按原类型各自的挂载/触发和词缀路径实现。
  3. 大批攻击型 proc(201/204/152/74 等),复用已有概率、注册、目标归属及几何内核,补缺的技能执行和真实世界输入。
  4. NG+ 上下文、FLEE/TURN ALIGNMENT、反射、尸体/死亡触发和剩余特殊条目。
  5. 原模型/声音/粒子及男女角色的逐武器运行验收。

资源与世界底层仍然需要完成,但以实际武器缺口为依据安排,不默认把每个原 Ogre 内部实现继续展开成下一批唯一目标。

持续伤害取证入口已从旧 Wiki 与 IDA定位:

  • 562590 挂载分派中的 TYPE52 入口 563D52。
  • 7AF0B0/7B21E0 的目标复制逻辑已经在 TransferEffects 中实现,不能重新发明随机次数。
  • 566DD0 的 52/7/124 汇流只设置一个标记,不是实际 DoT 扣血公式;不能把那里当作伤害 tick 实现。
  • 元素类型在 tick 中触发对应状态词缀,不可简单等同于固定每秒伤害。

这些只作为下一项实现的已核实导航,不代表本批已完成 DoT 或元素状态。

本批资源清理核查

同时补读了 5757F0 的成功与异常清理证据:

  • 成功路径:填充顶点/面、更新 bounds/法线、释放 Block、倒序析构名称数组、释放数组存储,然后通过临时 ResourcePtr 移除并归还 mesh 引用。
  • MSVC unwind state 7 清理名称数组,state 6 清理 MeshPtr,state 9 清理临时 ResourcePtr。
  • Block 的显式 free 在成功路径;不能仅凭名称数组有 unwind 就假定所有原始缓冲区异常时也被相同释放。

本批没有实现或宣称验证完这整条资源租约流程,仍保留前一篇的边界。原数据几何后端并不拥有真实 Ogre MeshPtr,正式实例与资源后端的完整验收仍要完成。

验证与文件

  • core_sim.cli/WeaponReadinessAudit.cs。
  • core_sim.cli/Program.cs 新增 weapon-readiness-audit。
  • tests/test_weapon_readiness_audit.py。
  • build/weapon_readiness.json。
  • build/weapon_readiness_python.log、weapon_readiness_godot.log。

逐武器审计完成,1,419 条无遗漏;所有通过准入门的定义均实际调用了构造器。6 项新审计回归及相关全套回归共 282 项通过。Godot C# 构建零警告、零错误;原核心断言数量仍为 1,451,本批没有增加战斗支持门。

main 原地工作,未提交、未 attach 原游戏、未改正式场景或 UI,快照 v29 未改。默认存档 SHA256 保持: 9840fe858b6e311c73f8c2d4ed49912d59d71365f6278392811730e012d32a7f

全武器目标继续,构造报告和全部测试绿灯均不替代最终实机/战斗/视觉验收。