[Skill 56] 陨石 (Meteor) 1.13c 原版机制与高阶投射物复现规范 #401
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?
[Skill 56] 陨石 (Meteor) 1.13c 原版机制与高阶投射物复现规范
1. 原版底层数据溯源 (Ground Truth Analysis)
1.1
Skills.txt核心参数 (Row 56 — Meteor)skill/IdMeteor/56srvdofunc/cltdofunc28/28SKILLS_SrvDo28, VA 0x6FC63FA0)srvmissileameteorcenterdelay30mana/lvlmana/manashift34/1/7\text{ManaCost}(\text{slvl}) = 34 + (\text{slvl} - 1)(slvl 1: 34, slvl 10: 43, slvl 20: 53)castoverlayfire_cast_2FireCast2.dcc, 16 帧, Trans: 3, RGB: 255, 178, 64)stsound/dosoundsorceress_cast_fire/sorceress_meteorParam1(calc1: ln12)6Param3/Param430/1530 + (\text{slvl} - 1) \times 15刻 (slvl 1: 30 刻/1.2s, slvl 10: 165 刻/6.6s, slvl 20: 315 刻/12.6s)HitShift82^8 = 256)EMin/EMax80/100EMinLev[23, 39, 79, 81, 83]EMaxLev[25, 41, 81, 83, 85]EDmgSymPerCalc(skill('Fire Bolt'.blvl)+skill('Fire Ball'.blvl))*par8ApplyMastery1+30% + (\text{slvl}_{\text{FM}}-1) \times 7%)1.2
Missiles.txt级联投射物族群体系pSrvDoFuncpSrvHitFuncRange)Vel)CelFile)Trans)meteorcenterMeteorTargetIndicatormeteorMeteormeteortailMeteorTailmeteorexplodeExpArrowExplodeLoopAnim: 0)meteorfire30+15(s-1))groundFireMedium1.3
D2Game.dll18 坐标点地火阵列真值 (0x6FD1C918&0x6FD1C8D0)在
MISSMODE_CreateMeteor_MoltenBoulderSubmissiles(VA0x6FC5CEC0) 中,原地火海生成严格读取两张 18 项int16_t偏移表:COLLIDE_WALL | COLLIDE_BLANK阻挡,则跳过生成该团地火。[4, 5, 6, 6, 6],HitShift: 3(2^3 = 8精度单位)\text{DPS} = \text{RawDamage} \times \frac{25 \times 8}{256} = \text{RawDamage} \times 0.781252. 离线资产烘焙与零运行时 MPQ (Zero Runtime MPQ Invariant)
Meteor.dcc: 核心火球 (12 帧, 22x22px, Trans: 1)MeteorTail.dcc: 火焰拖尾 (12 帧, 77x125px, Trans: 1)MeteorTargetIndicator.dcc: 地面光环 (17 帧, 112x74px, Trans: 1, 2:1 椭圆)ExpArrowExplode.dcc: 爆裂火球 (16 帧, 208x174px, Trans: 1, LoopAnim: 0)groundFireMedium.dcc: 残余火海 (37 帧, 66x136px, Trans: 1, SubLoop 12..36)groundFireSmall.dcc: 外围小地火 (37 帧, 66x89px, Trans: 1)if (Math.max(r, g, b) <= 4) alpha = 0; else alpha = Math.min(255, Math.round(((m - 4) / 56) * 255));ctx.globalCompositeOperation = 'lighter') 呈现纯净魔法质感,无任何黑斑黑框。3. 7 维全覆盖验证验收清单 (Acceptance Criteria)
[Skill 56] 陨石 (Meteor) 1.13c 原版全量复现与主分支合并交付报告
1. 提交与合并集成信息 (Integrated Commits)
96eee67 feat(skills): implement Skill #056 Meteor with 1.13c ground truth parity (Ref #401)84c7730 fix(skills): implement falling meteor dual sprite trajectory, frame indexing, exact tick-60 detonation, and wall collisionmain,并成功推送到origin/main(39de193..84c7730)。.worktrees/skill-meteor已完全移除,特性分支feat/skill-56-meteor已删除。2. 1.13c 原版机制与底层真值复现细节 (Diablo II v1.13c Parity)
Skills.txtRow 56):STATE_SKILLDELAY。34 + (\text{slvl} - 1)(slvl 1: 34, slvl 10: 43, slvl 20: 53)。fire_cast_2(FireCast2.dcc, 16 帧, Trans: 3)。Missiles.txt100 (meteor) 与 102 (meteortail):Z(t) = \text{remainingTicks} \times 25,X(t) = -\text{remainingTicks} \times 15。blendMode: "additive"(Trans: 1) 渲染纯净魔法火焰。meteorcenter(ID 101) 倒计时 60 刻,前 59 刻为无害瞄准阶段 (isHarmlessEmitter),第 60 刻准时触发爆炸。[23, 39, 79, 81, 83]/[25, 41, 81, 83, 85]与火弹/火球 +5%/硬点数协同及火焰支配乘算加成。ISO_GROUND_ASPECT_RATIO = 0.5进行 2:1 椭圆距离判定。D2Game.dll 0x6FD1C918&0x6FD1C8D0):meteorfire(ID 240) 残余地火阵列。30 + (\text{slvl} - 1) \times 15刻。SubLoop 12..36)。HitShift = 3,地狱火 +3%/点协同,NextDelay = 0支持多堆火海独立重叠杀伤。meteor,meteortail,meteorcenter,meteorexplode,meteorfire,firemedium,firesmall均烘焙为 32-bit RGBA PNG 图集及 JSON 元数据。3. 全维度自动化验证结果 (Verification Evidence)
npm run typecheck(tsc --noEmit) -> 0 errors, Exit code 0。tests/skills/sor/skill-056-meteor.test.ts,tests/meteor-stress.test.ts,tests/meteor-adversarial-stress.test.ts):tests/skills/sor/):4. 交付与结项确认 (Conclusion)
origin/main。