[Skill Parity] 火球 (Fire Ball) 命中后缺失范围爆炸视觉与轰炸效果 (爆炸素材误配为火弹微弱火星 & 爆炸半径偏小) #440
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)
在当前游戏中,法师技能 火球 (Fire Ball, 技能 ID 47) 命中敌人或障碍物后,完全没有原版标志性的大型球形烈焰轰炸爆炸效果:
原版 1.13c 地面真理 (Diablo II 1.13c Ground Truth Invariants)
在 1.13c
Missiles.txt中,火弹与火球的爆炸投射物存在明确的分级与本质区别:火弹 (Fire Bolt, ID 58):
ExplosionMissile: fireexplode(ID 29)CelFile: FireArrowExplode2,尺寸仅 78×70 像素,共 12 帧,仅为单体命中后的火星消散。火球 (Fire Ball, ID 62):
ExplosionMissile: explodingarrowexp(ID 42)CelFile: ExpArrowExplode,尺寸高达 208×174 像素,共 16 帧,带声效explosion_medium_1。meteorexplode采用同一套ExpArrowExplode高清爆炸素材!)。sHitPar1: 4(服务器端爆炸伤害半径 = 4 个子瓦片 = 80 像素 / 2 码)。cHitPar1: 3(客户端视觉爆炸半径 = 3 个子瓦片)。pCltHitFunc: 1/pSrvHitFunc: 1:在命中目标、撞击障碍物或到达终点时均产生范围轰炸。缺陷代码定位与根因分析 (Root Cause Analysis)
爆炸投射物配置错误导致视觉严重缩水:
src/game/skills.ts(第 565-585 行): 此处错误地将火球的爆炸投射物指定成了fireexplode(FireArrowExplode2,78×70),而非原版的explodingarrowexp/ExpArrowExplode(208×174)。src/scene/act-scene.ts(第 6404-6410 行) 中: 未将explodingarrowexp别名映射到现有的meteorexplode(即已打包好的 16 帧ExpArrowExplode图集),导致即使改名也会 fallback 到火弹的fireexplode。爆炸范围与伤害硬编码:
src/scene/act-scene.ts(第 2140-2147 行):src/game/engine.ts中硬编码造成 10 点伤害,未产生完整的火球爆炸。修复建议 (Proposed Fix)
src/game/skills.ts中将fireball.explosionMissile修正为explodingarrowexp;src/render/missiles-meta.ts和act-scene.ts中,将explodingarrowexp作为别名直接映射至现有的ExpArrowExplode(meteorexplode) 素材:sHitPar1: 4,将火球爆炸范围从 48 像素调整为 80 像素 (4 个 Sub-tile)。calculateSkillDamage(47, slvl)动态计算火球基础伤害与火弹/陨石协同加成。