武器导弹反射运行时
原版语义
MISSILE REFLECT(效果 TYPE60)不是“受到伤害后把数值弹回去”,而是导弹接触阶段、普通命中结算之前的一次所有权和轨迹改写。
原版关键链路:
0x523CF0扫描目标身上的 TYPE60,聚合chance与DMGPCT。- 总几率不大于 0 时直接失败,不消耗 RNG。
- 否则执行
RandBetween(0, 100)闭区间整数判定;仅当roll <= chance时成功。 - 返回伤害倍率
DMGPCT / 100。 0x6E5740在普通导弹命中前消费结果:原目标不受本次伤害,导弹交换发射者/目标弱引用,保存倍率,并以接触法线反射运动向量。
向量公式为:
text
v' = v - 2 * dot(v, n) * n其中 n 是导弹到达目标时的碰撞法线。
RNG 契约
- 无有效 TYPE60 几率:0 次 RNG advance。
- 有效判定:一次 Fused
RandBetween,消耗 2 次 MWC advance。 - 不完整或未知的
DMGPCT数据:fail closed,不把未知倍率当作 100%。
当前迁移实现
武器构造器只放行形状完整的被动 ALWAYS TYPE60,并保存 chance 与 DMGPCT 槽位。CoreSim 负责唯一的随机判定;Godot 只消费已经提交的结果,不自行重掷。
导弹宿主在普通命中前查询反射。成功时:
- 本次接触不调用伤害结算;
- 原目标成为新的发射者,原发射者成为新目标;
- 后续伤害乘以已解析的
DMGPCT / 100; - 重置飞行距离并按接触法线反射方向;
- 返回命中进入正常玩家受击、死亡、掉落和仇恨链路。
已开放 4 把原版武器:CROSSBOW_U02C、FIST_U05B、LEGENDARY2_SWORD05、SWORD_U03C。当前全量武器可构造数为 1171 / 1419。
尚未声称完成的边界
0x548850的 TYPE61MISSILE REFLECT VISUAL会生成原版反射视觉;对应ArrowTrailReflect材质/纹理尚未独立复原。- 当前 Godot 宿主覆盖已接入的非追踪直线怪物导弹,不能外推为所有导弹家族、制导方式和碰撞体均已完成。
- TYPE201/204 的范围程序与召唤程序仍需要通用空间查询、可保存时钟和单位工厂,不能借由 TYPE60 的完成状态放行。