[TODO] 动画系统:实现完整 1.13c EIAS 攻击速度公式 #144
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
动画系统首版(
feat/animation-system)的动画速度仅使用AnimData.D2的基础animationSpeed:等价实现:每 tick 给 8.8 定点累加器加
animationSpeed,frameIndex = acc >> 8。首版的
ActorAnimator.tick(speedScale)已预留speedScale入参(8.8 定点,256 = 1×),但调用方目前恒传 256。缺失的部分
装备上的 IAS(Increased Attack Speed)词条目前在视觉与实际攻速上都不生效。完整 1.13c 攻速链路需要:
Weapons.txt第 20 列speed,已由src/game/weapons.ts解析。EIAS = floor(120 × IAS / (120 + IAS))—— IAS 的递减收益。animationSpeed_effective = base × (256 + EIAS − WSM) / 256,并下限钳制(1.13c 有每动作的最小帧数下限,需从 D2Common 反编译确认精确钳制点)。MonStats.txt/MonUMod.txt。实现注意
ActorAnimator.tick()内部对(index, next]区间逐帧扫描帧事件,因此 IAS 加速导致单 tick 跨多帧时不会漏掉命中帧(code=1 ATTACK / code=2 MISSILE)。这一性质必须在本 issue 落地后由单测继续保证。验收