普通命中自动死亡奖励:XP、声望与成长事务
2026-09-19。本批把已验证的直接死亡奖励发送顺序接入实际 CombatState.Attack:由普通致死 HIT 自动调用 XP/声望接收器,不再需要另发奖励命令。这里只覆盖当前已表达的直接死亡路径,不是整个原版 onDeath 或所有武器完成。
顺序与状态所有权
沿用已取证的 53DD35/NativeDirectDeathRewards:
- 在工作副本上准备当前已支持的 DIE 成长、击杀 proc。
- 用扣血后的生命状态和成长后的装备效果查询 XP/声望加成。
- 读取 victim 当前 XP 池,调用经验接收器;再读当前 fame 池,调用声望接收器。
- 清空当前两池;所有校验通过才统一提交 HP、RNG、装备成长、proc、进度和技能点。
奖励始终读 RewardPools,而非不可变的 InitialRewards。PlayerSkillBook 真正发生变化后,由 Godot bridge 发出已有 SkillTreeChanged 通知;Godot 不另行计算或补发奖励。
ProgressionTransaction 可读暂存单位和装备,但提交只写真实单位。快照仍为 v34,没有新增需要持久化的字段。
同次成长的取整修复
仅把未来装备汇总写入 Stats 不够:旧的 EffectStatQuery 仍读取当前背包装备,来源校验不一致后会退回原始合计,漏掉装备 passive manager 的 ValueCeil/分桶取整。
现在查询支持按 InstanceId 读取暂存装备副本,不提前改背包,也不以新总和代替效果列表。
隔离协调器夹具在 DIE 中加入 raw=1.25/ceil=2 的 XP 加成、raw=2.25/ceil=3 的 fame 加成,奖励池各1000。在当前原版等级差图表下:
- 修复前 XP=1012、fame=1023。
- 正确装备查询 XP=1019、fame=1030。
XP 不是1020的原因是仍遵守已验证的 f32 0.01 常量与等级差乘法截断。该夹具用于证明事务顺序和来源查询,不是声称原版存在这件测试装备或这些成长词缀。
在声望升阶末尾故意缺失技能点图表,已确认先前准备的 HP、RNG、XP、奖励池、物品成长均不提交。成功后保留原装备对象身份。
明确的未完成状态
命中结果新增 reward_status:
| 状态 | 含义 |
|---|---|
| none | 本次无死亡奖励 |
| settled | 当前已表达的直接死亡奖励事务完成 |
| service_unbound | 未绑定奖励图表服务 |
| legacy_reward_state_unknown | 旧状态缺当前池/进度/定义GUID/冠军标志,不猜补 |
| secondary_death_source_pending | 存在非直接目标死亡或多死亡,尚未统一确定奖励归属 |
TYPE80 改写死亡来源尚未接好时明确拒绝。settled 只描述这里的奖励事务,不能等同于完整 54E3F0 死亡事件、任务、掉落或视觉链完成。
持续伤害致死继续保留 periodic_death_context_missing。原版持续死亡是先奖励/清池/通知,再 Die,与这里顺序不同,不复用成同一种死亡回调。
XP 累积已接入;XP 达阈值后的角色升级不是本批完成项。声望升阶已增加技能点,但原升阶粒子仍未在此补齐。
实际场景验证
tl2_direct_reward_world_probe.gd 继承已有隔离回血 proc 探针,在实际 ECHO PASS 主场景通过正式装备和原动画 HIT 击杀:
- 武器 2HMACE/GREATHAMMER_U03,原命中和原 proc 概率路径。
- 结果 reward_status=settled,经验=4、击杀数=1。
- 当前 XP/fame 池均为0,保存重放保持一次结算。
- 同次击杀回血、持续回复、到期清理和重放仍通过。
这是 headless 实际场景/节点与数值回归,不是像素对拍;地图、HP和种子使用隔离夹具。没有读取后改写默认玩家存档。
后续
本批最终验证:1586条核心断言、309项相关Python回归通过,Godot构建零警告零错误;coresimlint与git diff --check通过。
扩大回归时,旧 combat_native_probe 的步枪测试暴露缺少方向/难度上下文。新增显式 AttackWithHandAndControl 桥接入口,并让夹具提供一单位前方、普通难度;原无上下文接口仍拒绝,新增断言确认拒绝不改HP/效果/RNG。未通过关闭控制效果来让测试变绿,修复后8项桥接相关测试及上述309项回归均通过。
继续接持续伤害的正式死亡协调器:保留来源清理重取值、奖励接收人与死亡来源分离、控制效果共同顺序以及任务/掉落消费者。TYPE52 的构造准入没有因本批而放开。
当前1419个武器定义仍为:1053可构造、319处理/上下文阻塞、47基础定义缺口、0意外构造失败。构造可用不等于战斗与表现完整。
验证产物位于 build/direct_progression_core.log、direct_progression_build.log、direct_progression_python.log、direct_progression_audit.log 和 build/direct_reward_world/run.log。main原地修改,未提交;默认 warp_autosave.json SHA256 保持 9840fe858b6e311c73f8c2d4ed49912d59d71365f6278392811730e012d32a7f。