当前奖励池生命周期与直接死亡交接
后续:XP接收、等级修正与主从转发已补XP接收核,正式状态与死亡事务仍在接线范围内。
接续出生奖励计算。本批增加独立当前池状态和交接核心,未声称正式战斗中的奖励接收器/致死事务已经接完。
当前值不是出生值
NativeRewardPoolSnapshot 分别保存可空的XP/fame:null是未知,0是已知零。不能用 InitialRewards 填补未知或已经消耗的当前值。
- 普通重算55D3EB:重算前当前XP为0,跳过DAT读取和经验计算。
- 重算前XP非0,重读DAT XP后继续计算;新读到0也仍进入41E440,不重新套新建实例的跳过门。
- 普通重算保留fame;首次冠军化重写XP/fame,已有冠军标志则不重写。
- 53BE74的复活相关写入只清XP,不能据此推导fame也应清零;完整复活门不属于本批交接核。
普通伤害死亡的奖励交接
原53DD35..53DDA3在上游门和来源选择之后:
text
死亡回调(source)
if source存在:
经验回调(source, 重新读当前XP)
声望回调(source, 重新读当前fame)
清XP和fame死亡回调可改写两池,XP回调可改写fame,必须读取回调后的值。有来源时才在这段末尾清池;来源为空则只调用死亡,不额外读取/清池。
持续死亡的顺序则是奖励、清池、事件通知、死亡。两者不能用同一套固定次序替代。
事务边界和验证
NativeRewardPoolTransaction 是暂存工作副本,整个外层准备成功后才发布快照;它不能回滚任意外部I/O。持续死亡核测试也已改用这个工作池。
64组原53DD35机器码交接对照,包含回调修改池、有无来源和零/负奖励,顺序与结果一致。死亡和奖励虚函数是明确边界,没有以此声称验证完整伤害/XP成长/onDeath处理器。
1534条核心断言、315项相关Python回归、Godot C#构建和架构lint通过;普通重算零门、冠军化门、未知字段和失败不发布也有回归。
正式当前池维护、实际XP/fame接收器及完整致死事务仍待接入。TYPE52准入未开放,武器构造仍1053/1419。