[Skill Parity] 陨石 (Meteor) 落地地面残留火焰燃烧持续时间过短,且未实装火焰缩小熄灭衰减动画 (瞬间猝灭) #437
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?
问题描述 (Bug Description)
在当前游戏中,法师技能 陨石 (Meteor, 技能 ID 56) 落地爆炸后,在地面上残留铺开的火焰持续燃烧区域存在以下两处与原版不符的严重缺陷:
地面火焰燃烧持续时间过短:
src/game/skills.ts与src/scene/act-scene.ts中,地面火焰持续时间硬编码为30 + (slvl - 1) * 15ticks。在 1 级技能下,火焰仅仅持续 30 帧 (1.2 秒)。缺少火焰缩小熄灭的过渡动画,瞬间断崖式消失:
12..36帧的稳定大火循环后,一旦ttl <= 0,投射物便直接从引擎与渲染树中剔除。原版 1.13c 地面真理 (Diablo II 1.13c Ground Truth Invariants)
1. 持续时间规范 (
Skills.txt&Missiles.txt)meteorfire(Missiles.txt ID 240)。Missiles.txt中:Range: 90(基础持续时间为 90 帧 / 3.6 秒,而不是 30 帧)。LevRange: 15(每级增加 15 帧 / 0.6 秒)。Range公式:90 + (slvl - 1) \times 15。即使在 1 级,地面火焰也至少维持 3.6 秒的燃烧时间。2. 火焰动画结构与消散机制 (
groundFireMedium.dc6/Missiles.txt)groundFireMedium(共 37 帧):AnimLen: 37,SubLoop: 1,SubStart: 12,SubStop: 36。缺陷代码定位 (Root Cause Analysis)
持续时间硬编码错误:
src/game/skills.ts(行 4231-4232):src/scene/act-scene.ts(行 4336):30严重缩水(原版基准为90帧)。缺少衰减生命周期状态机与渲染过渡:
src/scene/act-scene.ts(行 4333-4339):elapsed到达后始终在12..36帧全盛大火状态循环。当shot.ttl <= 0时被立即销毁,缺少dying/extinguishing状态以及缩小/渐隐逻辑。修复建议 (Proposed Fix)
meteorfire的基准持续时间从 30 帧修正为 90 帧:const fireDuration = projectile.fireDuration ?? (90 + (slvl - 1) * 15)。ttl归零后转入衰减消亡阶段):scale(从 1.0 渐变至 0.2)与opacity(从 1.0 渐变至 0.0)线性衰减,杜绝突兀硬断。