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?
问题背景与缺陷表现 (Background & Defect Analysis)
在当前客户端实战(
src/scene/act-scene.ts)中,法师 6 级冰系核心控制技能 冰霜新星 (Frost Nova, Skill ID: 44) 存在严重的机制降级与动画缺失缺陷:src/scene/act-scene.ts中,skillId === 44被一段早期的几何距离占位代码(Math.hypot <= 240)直接拦截并return true,导致施法逻辑根本无法进入标准投射物引擎管线。ELen迟缓减速持续时间(8.0 秒 + 1.0 秒/级)与暴风雪/冰封球协同伤害加成,同时强加了 10 ticks 冷却(原版 Frost Nova 冷却为 0)。暴雪 1.13c 原版权威数据与底层机制基准 (Blizzard 1.13c Ground Truth Invariants)
根据 Diablo II v1.13c 官方数据表(
Skills.txt、Missiles.txt)及逆向汇编规范:1.
Skills.txt(Row 44: Frost Nova vs Row 48: Nova)sor/ Lv 6sor/ Lv 12srvdofunc = 22,cltdofunc = 25srvdofunc = 22,cltdofunc = 25srvmissilea/b/c = "frostnova"srvmissilea/b/c = "nova"ice_cast_2light_cast_10帧(无冷却延迟)0帧(无冷却延迟)cold/7(基数除以 2)ltng/8(基数除以 1)4/8(1 级为 2-4)1/20(1 级为 1-20)4, 6, 8, 10, 126, 7, 8, 9, 105, 7, 9, 11, 138, 9, 10, 11, 12ELen)200帧 (8.0s) +25帧/级 (+1.0s/级)(Blizzard.blvl + Frozen Orb.blvl) * 10%2.
Missiles.txt(Row 119: frostnova)FrostNova(已完全烘焙入图集public/missiles/frostnova.png,16 方向,14 帧/方向,AnimLen 14)Vel = 24(速度 600 px/s),Range = 14(扩散距离 336 像素)NextHit = 1,NextDelay = 4(确保单只怪物在 4 帧内不会被同一波环形投射物重复伤害)TravelSound = "sorceress_frostnova"缺陷根因深度剖析 (Root Cause Analysis)
根因 1:
src/scene/act-scene.ts早期分支粗暴拦截并短路 (Line 1339–1354)在
act-scene.ts的castSkill主逻辑中:这一硬编码分支直接跳过了投射物调度逻辑,导致游戏世界中根本没有生成任何投射物实体!
根因 2:未接入通用 Nova 环形投射物生成系统 (Line 2001–2012 与 2153–2173)
新星(Nova #48)与剧毒新星(Poison Nova #92)在投射物装配表中配置了:
随后在 2153 行由环形发射器以 2:1 等轴测地面长宽比(
ISO_GROUND_ASPECT_RATIO = 0.5)向 360 度发射 64 颗真实投射物:而
skillId === 44在投射物配置表中完全缺席!根因 3:
CANONICAL_113C_MISSILES缺失frostnova规范记录在
src/game/skills.ts中,CANONICAL_113C_MISSILES常量表未包含frostnova,导致通过getMissileTxtData('frostnova')查询时回退到默认 20 速度的未定义占位。修复方案与任务规划 (Remediation Plan)
src/scene/act-scene.ts中的占位短路逻辑 (Line 1339–1354):if (skillId === 44)强行 return 的死代码,将调度流交给标准投射物生成器。frostnova(对齐 Nova #48):missileType = 'frostnova';isNova = true,multiCount = 64;speed = 600px/s,range = 336px(ttl = 14ticks);damage = calculateSkillDamage(44, slvl, synergies);statusEffect = 'chill',statusDuration = 200 + (slvl - 1) * 25帧(8.0s + 1.0s/级);player.cooldown = 0(对齐 1.13c 0 延迟规范)。src/game/skills.ts补齐CANONICAL_113C_MISSILES['frostnova']:id: 119, vel: 24, range: 14, celFile: 'FrostNova', animLen: 14, animSpeed: 16, nextHit: 1, nextDelay: 4等权威字段。loadMissileArtMap正常加载frostnova图集,并通过drawMissileProjectile在 2:1 等轴测展开时正确依方向播放 14 帧冰环波纹动画。tests/skills/sor/skill-044-frost-nova.test.ts,增加对 64 束环形投射物发射、NextDelay=4 防重复判定、减速持续时间等级增长以及无 CD 连发的端到端单测。