技能系统:实装圣骑士与德鲁伊光环类技能(Aura Engine, Periodic Pulses, Ground Overlays & 1.13c Combat Parity) #397

Closed
opened 2026-09-23 08:03:19 +00:00 by troytt · 1 comment
Owner

背景与现状说明 (Background & Problem Analysis)

暗黑破坏神 II (v1.13c) 中,光环(Aura)是圣骑士(Paladin)的核心机制与战斗基石,同时涵盖德鲁伊(Druid)的灵体召唤物光环(橡木智者、狼獾之心、荆棘之灵)以及金怪属性词条(Aura Enchanted)。

目前在 diablo2-web 项目中:

  1. 沙盒与公式计算已有基础:src/game/engine/aura-scanner.ts 与 src/game/skills/registry.ts 实现了部分基于 Skills.txt 的数学公式评估和 arena 沙盒内的离散脉冲验证;
  2. 主引擎运行时缺失常驻光环驱动:主游戏引擎(src/game/engine.ts)与角色状态机(src/game/character.ts)尚未接入光环系统。光环技能目前仅作为一次性施法处理或未激活;
  3. 缺少右键槽位与常驻激活机制:在原版中,光环属于右键常驻技能,激活后持续运作且不消耗施法前后摇与法力(除祈祷 Prayer 在受伤时消耗外);
  4. 缺少脚下原版动态光环动画渲染:Overlay.txt 中定义的脚下多层环状动画(PreDraw === true,如狂热 AuraFanatic、圣火、神圣冰冻、神圣冲击、信念等)尚未与主画面渲染器(renderer.ts / unit-sprites.ts)联动,角色与怪物脚下无光环显示;
  5. 周期性脉冲与范围结算未打通:原版每 50 帧(2.0 秒)执行一次的范围友军增益(Buff)、敌方削弱(Debuff)以及范围元素伤害(Radial Damage)未在主游戏世界循环中运行;
  6. 目标过滤与视觉适配缺失:城镇与野外环境差异、友军广播范围、敌我区分、光环在不同目标脚下的专属特效与抑制规则尚未明确定义与实装。

本 Issue 旨在完整规划并驱动光环类技能的正式实装,确保其严格符合 Diablo II v1.13c 原版二进制反编译规范(D2Common.dll / D2Game.dll)与 MPQ 数据表。


涵盖技能清单 (Scope of Aura Skills - v1.13c)

1. 圣骑士攻击光环 (Offensive Auras - 10 个)

技能 ID 英文名称 中文名称 原版函数 状态与效果定义
#098 Might 力量 srvdofunc=65 aurastate=might,大幅增加队伍物理伤害(item_maxdamage_percent)
#102 Holy Fire 圣火 srvdofunc=66 aurastate=holyfire,自身附加火焰伤害,每 2 秒向半径内敌人发射火焰伤害脉冲
#103 Thorns 荆棘 / 刺针 srvdofunc=65 aurastate=thorns,受到近战物理攻击时将伤害以百分比反弹给攻击者
#108 Blessed Aim 祝福瞄准 srvdofunc=65 aurastate=blessedaim,提升友军攻击命中率(AR %)
#113 Concentration 专注 srvdofunc=65 aurastate=concentration,提升队伍物理伤害,提供 20% 几率不被打断,对祝福之锤(Blessed Hammer)提供 50% 效能增伤
#114 Holy Freeze 神圣冰冻 srvdofunc=66 aurastate=holyfreeze,自身附加冰冷伤害,每 2 秒向敌人发射冰冷脉冲,无视冰抗附带范围减速(item_slow)
#118 Holy Shock 神圣冲击 srvdofunc=66 aurastate=holyshock,自身附加巨额闪电伤害(1~MaxDmg),每 2 秒发射强力闪电脉冲
#119 Sanctuary 庇护所 srvdofunc=66 aurastate=sanctuary,击退不死生物,对其造成周期魔法伤害,且物理攻击将其物免强制归零(Set Undead PhysRes to 0%)
#122 Fanaticism 狂热 srvdofunc=65 aurastate=fanaticism,提升攻击速度(EIAS)、攻击准确率(AR%),自身获得全额物理增伤,队友获得半额增伤
#123 Conviction 信念 / 审判 srvdofunc=66 aurastate=conviction,削弱敌方防御百分比与火/冰/电三系元素抗性,对免疫怪物以 1/5 惩罚效率执行破免

2. 圣骑士防御光环 (Defensive Auras - 10 个)

技能 ID 英文名称 中文名称 原版函数 状态与效果定义
#099 Prayer 祈祷 srvdofunc=65 aurastate=prayer,每 2 秒治疗范围内友军生命,治疗时扣除法力
#100 Resist Fire 抵抗火焰 srvdofunc=65 aurastate=resistfire,提升友军火抗;加点时提供隐藏被动最大火抗加成
#104 Defiance 反抗 srvdofunc=65 aurastate=defiance,大幅提升友军总防御百分比(item_armor_percent)
#105 Resist Cold 抵抗冰冷 srvdofunc=65 aurastate=resistcold,提升友军冰抗;加点时提供隐藏被动最大冰抗加成
#109 Cleansing 净化 srvdofunc=65 aurastate=cleansing,加速毒素消退与诅咒持续时间缩短(curse_duration_reduction)
#110 Resist Lightning 抵抗闪电 srvdofunc=65 aurastate=resistlightning,提升友军电抗;加点时提供隐藏被动最大电抗加成
#115 Vigor 精力 / 活力 srvdofunc=65 aurastate=vigor,大幅提升友军跑步与行走速度、奔跑耐力及耐力回复速度
#120 Meditation 冥思 srvdofunc=65 aurastate=meditation,极大提升法力回复速度百分比(Mana Recovery Rate %)
#124 Redemption 救赎 srvdofunc=81 aurastate=redemption,周期扫描视野内未被消耗的怪物尸体,超度灵魂并百分比恢复角色生命与法力
#125 Salvation 救助 srvdofunc=65 aurastate=salvation,同时大幅提升友军火/冰/电三系元素全抗

3. 德鲁伊灵体光环 (Druid Spirit Minion Auras - 3 个)

  • #298 橡木智者 (Oak Sage):图腾随从广播光环,提供巨额生命上限百分比加成(maxhp_percent)。
  • #297 狼獾之心 (Heart of Wolverine):图腾随从广播光环,提供物理攻击增伤与命中率加成。
  • #296 荆棘之灵 (Spirit of Barbs):图腾随从广播反伤光环。

目标选择与环境/视觉效果适配规则 (Target Filtering & Visual Parity Rules)

为确保与原版 1.13c 二进制行为绝对对齐,光环在不同环境、不同阵营单位之间的判定和视觉表现必须严格遵循以下三层规则:

1. 城镇与野外环境判定及友军目标广播 (Town vs Wilderness & Friendly Filter)

  • 城镇环境(In-Town / isTown === true):
    • 自身生效原则:所有防御光环(如反抗 Defiance、祈祷 Prayer、抵抗火焰/冰冷/闪电、精力 Vigor、冥思 Meditation、救助 Salvation 等)以及力量、专注等增益光环,在城镇中仅对施法者自身有效,严禁向城镇内的其他玩家、雇佣兵、城镇 NPC 或随从广播属性加成。
    • 视觉适配:城镇内仅施法者自身脚下显示光环环形地圈,周围友军/随从脚下不显示任何光环效果。
    • 敌对抑制:城镇内自动挂起所有伤害脉冲与敌对削弱逻辑。
  • 野外战斗环境(Wilderness / isTown === false):
    • 完整友军覆盖:友军增益类光环一旦在野外激活,其作用范围(aurarange)内将实时无缝广播并加成给全部合法友方实体:
      1. 自身(Player Self)
      2. 玩家专属雇佣兵(Player Mercenary / Hireling)
      3. 组队队伍队友(Party Members)
      4. 队友的雇佣兵(Party Mercenaries)
      5. 友军全量召唤物与随从(Friendly Minions & Summons,包含骷髅、石魔、复活怪、影子、���武神、野灵、狼群与灰熊等)。
    • 视觉适配:所有受到增益广播的友军单位(自身、雇佣兵、队友及其召唤物),脚下均同步渲染对应光环状态的微缩/标准脚下光斑与持续 Buff 特效。

2. 信念/审判光环的自身与敌方非对称机制 (Conviction Asymmetry & Enemy Ground Aura)

  • 施法者自身(Self):
    • 视觉保留:圣骑士自身脚下播放 Conviction 绿色光环动画。
    • 属性免疫:绝不减少自身任何抗性与防御(施法者自身抗性与防御属性保持 100% 正常,无任何负面状态)。
  • 敌对目标(Enemies in Wilderness):
    • 属性削弱:野外作用半径内的全部存活怪物/敌对实体,被挂载 auratgtstate = conviction,实时大幅削减其防御百分比(-Defense %)及火/冰/电三系元素全抗(-Fire/Cold/Lightning Resistances %),若怪物为免疫怪,则按 1/5 惩罚执行破免判定。
    • 专属视觉特效(脚下显示光环):受到信念影响的敌方怪物脚下,必须渲染专属的 Conviction 绿色针状环形光环地圈(Overlay.txt 中的 Conviction Target Overlay,标志性的敌方脚下绿色旋转锯齿光环),清晰指示其已被破防削弱。

3. 神圣冰冻/元素伤害光环的敌方视觉与状态适配 (Holy Freeze Visual Rules)

  • 神圣冰冻 (Holy Freeze, #114):
    • 施法者自身(Self):圣骑士自身脚下正常渲染青白色冰霜脉冲环形光环(Overlay.txt 中的 Holy Freeze Aura Overlay)。
    • 敌对目标(Enemies in Wilderness):
      • 真实生效:在野外对敌对目标完全起效,每 2 秒造成神圣冰冷脉冲伤害,并强行施加不可被冰免完全阻挡的减速效果(item_slow,令怪物移动与攻击帧率显著减缓)。
      • 敌方脚下光环严禁显示:敌方目标脚下绝不显示光环地圈!敌方受影响时仅展现身体被冰冻的青蓝色材质变色(Blue Chill/Freeze Tint 调色板渲染)或轻微的周身霜屑粒子,保持原版清爽的视觉呈现,杜绝出现敌方脚下套冰霜光圈的伪造特效。
  • 其他元素攻击光环与庇护所:
    • 圣火 (Holy Fire, #102) & 神圣冲击 (Holy Shock, #118):光环环形地圈仅在释放者脚下渲染;受到脉冲波及的敌方单位仅在其中心播放短暂受击闪烁与伤害反馈,脚下无光环。
    • 庇护所 (Sanctuary, #119):释放者脚下显示白色旋转光轮;范围内不死生物受到击退与魔法伤害,脚下无光环。

核心架构与实装方案 (Architecture & Implementation Plan)

1. 角色技能槽位与光环常驻生命周期 (Skill Slot & Aura Lifecycle)

  • 右键光环槽位与状态激活:在技能快捷栏与主控面板(ControlBar)支持将光环配置在右键技能槽。当玩家选择右键为光环技能时,立即自动唤醒并激活该光环,不占用施法动作与攻击前后摇。
  • 无缝切换与注销:当玩家切换右键为其他技能或其他光环时,优雅注销旧光环的 ActiveAuraSource,清除对应的光环状态与地面特效,并激活新光环。
  • 多光环共存规则:支持自身光环、雇佣兵/随从光环(如米山力量光环、橡木智者光环)与装备赋予光环在 StatList 中的无缝叠加与等级裁决(相同光环仅高等级生效)。

2. 周期性扫描与脉冲引擎 (Periodic Pulse Engine - 1.13c Parity)

  • 挂载至主游戏世界 Tick:在 src/game/engine.ts 的 update() 循环中集成 AuraScanner.tick(currentTick, allies, enemies, corpses)。
  • 脉冲周期:严格依据 perdelay / auradelay(标准为 50 帧,即 2.0 秒一次脉冲)。
  • 作用半径计算:依据 aurarange / aurarangecalc 与 slvl 动态计算半径,转换为等距像素距离进行范围判定。
  • 状态持续时间平滑:光环给予的状态持续帧数设置为 perdelay + 10(如 60 帧)���消除脉冲间歇导致的 Buff 闪烁与跳帧。

3. 脚下动态光环层渲染 (PreDraw Ground Overlay Rendering)

  • Overlay.txt 贴图映射:解析并映射光环对应的脚下 DCC/DC6 动画(如 AuraFanatic.dcc、holyshock.dcc、might.dcc 等)。
  • 地面渲染通道 (PreDraw === true):在 src/render/renderer.ts 中,于地表地貌/地表阴影之上、角色主体精灵之下建立光环渲染通道。
  • 动态坐标追踪与自发光混合:光环精灵以角色/受影响目标的足底锚点为中心,随角色移动平滑跟随,采用透明或自发光混合(Additive Blending),还原经典原版视觉。
  • 敌方专属特效精准区分:精准根据光环类型决定是否在敌方脚下绘制地圈(例如:信念绘制脚下绿色尖刺环;而神圣冰冻仅进行身体 Chill 变色,严禁在敌方脚下绘制地圈)。

4. 战斗管线与属性加成全面打通 (Combat Pipeline Integration)

  • 实时属性加成:角色与友军随从的普攻和技能直接结算当前激活光环的属性加成(力量/狂热增伤、反抗提升防御、狂热/活力攻速与移速加成等)。
  • 元素攻击附魔:圣火、神圣冰冻、神圣冲击在普攻/技能命中时,根据技能等级将附加的元素伤害精准融入 SUnitDmg 伤害计算。
  • 脉冲伤害与怪物受击:攻击型光环每 2 秒的脉冲伤害对范围内所有存活敌人结算伤害,触发怪物受击反馈与浮动伤害数字。
  • 救赎超度尸体:救赎光环脉冲扫描场景中已消灭怪物的实体尸体,触发灵魂上升动画并为玩家补满生命与法力。

5. 原版音效集成 (Audio SFX)

  • 触发光环开启专属音效(AuraTurnOn)以及各类光环脉冲音效(神圣冲击电击声、神圣冰冻冰爆声、救赎回血音效等)。

验收标准 (Acceptance Criteria)

  • 1.13c 数值与公式单测:所有 20 个圣骑士光环与 3 个德鲁伊灵体光环在 slvl 1, 10, 20 的加成数值、法力消耗、作用半径、脉冲频率单元测试 100% 通过。
  • 城镇与野外环境目标选择准确性:
    • 反抗(Defiance)等防御光环在城镇内激活时,严格仅对自己生效,不影响雇佣兵、队友及召唤物;
    • 进入野外后,反抗光环自动扩展作用到玩家雇佣兵、队友、队友雇佣兵及所有召唤物(骷髅、随从等)。
  • 信念(Conviction)非对称性与视觉效果验证:
    • 激活信念时,施法者脚下有光环视觉,但自身抗性与防御保持不变(0 负面削减);
    • 野外敌方怪物受到信念减益(-Def%, -Res%),且受到影响的怪物脚下清晰显示 Conviction 专属绿色尖刺光环地圈。
  • 神圣冰冻(Holy Freeze)视觉抑制与减速验证:
    • 激活神圣冰冻后,野外怪物受到减速与冰冷脉冲伤害;
    • 敌方怪物脚下不显示任何环形光环地圈,仅显示冰冷受冻材质变色(Blue Tint)。
  • 常驻光环槽位与热键切换:玩家可通过技能面板或快捷键将光环配置到右键,选中后自动处于常驻激活状态,走动、拾取、左键普攻与施法期间光环持续生效。
  • 脚下光环特效视觉对齐:激活光环后,角色脚下正确渲染原版 1.13c 动态环形光环动画,移动时流畅跟随,无黑边无白框。
  • 零代码破坏与类型安全:npm run typecheck 与全量测试套件(npm test)100% 保持全绿。
## 背景与现状说明 (Background & Problem Analysis) 暗黑破坏神 II (v1.13c) 中,光环(Aura)是圣骑士(Paladin)的核心机制与战斗基石,同时涵盖德鲁伊(Druid)的灵体召唤物光环(橡木智者、狼獾之心、荆棘之灵)以及金怪属性词条(Aura Enchanted)。 目前在 `diablo2-web` 项目中: 1. **沙盒与公式计算已有基础**:`src/game/engine/aura-scanner.ts` 与 `src/game/skills/registry.ts` 实现了部分基于 `Skills.txt` 的数学公式评估和 arena 沙盒内的离散脉冲验证; 2. **主引擎运行时缺失常驻光环驱动**:主游戏引擎(`src/game/engine.ts`)与角色状态机(`src/game/character.ts`)尚未接入光环系统。光环技能目前仅作为一次性施法处理或未激活; 3. **缺少右键槽位与常驻激活机制**:在原版中,光环属于右键常驻技能,激活后持续运作且不消耗施法前后摇与法力(除祈祷 Prayer 在受伤时消耗外); 4. **缺少脚下原版动态光环动画渲染**:`Overlay.txt` 中定义的脚下多层环状动画(`PreDraw === true`,如狂热 `AuraFanatic`、圣火、神圣冰冻、神圣冲击、信念等)尚未与主画面渲染器(`renderer.ts` / `unit-sprites.ts`)联动,角色与怪物脚下无光环显示; 5. **周期性脉冲与范围结算未打通**:原版每 50 帧(2.0 秒)执行一次的范围友军增益(Buff)、敌方削弱(Debuff)以及范围元素伤害(Radial Damage)未在主游戏世界循环中运行; 6. **目标过滤与视觉适配缺失**:城镇与野外环境差异、友军广播范围、敌我区分、光环在不同目标脚下的专属特效与抑制规则尚未明确定义与实装。 本 Issue 旨在完整规划并驱动光环类技能的正式实装,确保其严格符合 Diablo II v1.13c 原版二进制反编译规范(`D2Common.dll` / `D2Game.dll`)与 MPQ 数据表。 --- ## 涵盖技能清单 (Scope of Aura Skills - v1.13c) ### 1. 圣骑士攻击光环 (Offensive Auras - 10 个) | 技能 ID | 英文名称 | 中文名称 | 原版函数 | 状态与效果定义 | |---|---|---|---|---| | **#098** | **Might** | 力量 | `srvdofunc=65` | `aurastate=might`,大幅增加队伍物理伤害(`item_maxdamage_percent`) | | **#102** | **Holy Fire** | 圣火 | `srvdofunc=66` | `aurastate=holyfire`,自身附加火焰伤害,每 2 秒向半径内敌人发射火焰伤害脉冲 | | **#103** | **Thorns** | 荆棘 / 刺针 | `srvdofunc=65` | `aurastate=thorns`,受到近战物理攻击时将伤害以百分比反弹给攻击者 | | **#108** | **Blessed Aim** | 祝福瞄准 | `srvdofunc=65` | `aurastate=blessedaim`,提升友军攻击命中率(AR %) | | **#113** | **Concentration** | 专注 | `srvdofunc=65` | `aurastate=concentration`,提升队伍物理伤害,提供 20% 几率不被打断,对祝福之锤(Blessed Hammer)提供 50% 效能增伤 | | **#114** | **Holy Freeze** | 神圣冰冻 | `srvdofunc=66` | `aurastate=holyfreeze`,自身附加冰冷伤害,每 2 秒向敌人发射冰冷脉冲,无视冰抗附带范围减速(`item_slow`) | | **#118** | **Holy Shock** | 神圣冲击 | `srvdofunc=66` | `aurastate=holyshock`,自身附加巨额闪电伤害(1~MaxDmg),每 2 秒发射强力闪电脉冲 | | **#119** | **Sanctuary** | 庇护所 | `srvdofunc=66` | `aurastate=sanctuary`,击退不死生物,对其造成周期魔法伤害,且物理攻击将其物免强制归零(Set Undead PhysRes to 0%) | | **#122** | **Fanaticism** | 狂热 | `srvdofunc=65` | `aurastate=fanaticism`,提升攻击速度(EIAS)、攻击准确率(AR%),自身获得全额物理增伤,队友获得半额增伤 | | **#123** | **Conviction** | 信念 / 审判 | `srvdofunc=66` | `aurastate=conviction`,削弱敌方防御百分比与火/冰/电三系元素抗性,对免疫怪物以 1/5 惩罚效率执行破免 | ### 2. 圣骑士防御光环 (Defensive Auras - 10 个) | 技能 ID | 英文名称 | 中文名称 | 原版函数 | 状态与效果定义 | |---|---|---|---|---| | **#099** | **Prayer** | 祈祷 | `srvdofunc=65` | `aurastate=prayer`,每 2 秒治疗范围内友军生命,治疗时扣除法力 | | **#100** | **Resist Fire** | 抵抗火焰 | `srvdofunc=65` | `aurastate=resistfire`,提升友军火抗;加点时提供隐藏被动最大火抗加成 | | **#104** | **Defiance** | 反抗 | `srvdofunc=65` | `aurastate=defiance`,大幅提升友军总防御百分比(`item_armor_percent`) | | **#105** | **Resist Cold** | 抵抗冰冷 | `srvdofunc=65` | `aurastate=resistcold`,提升友军冰抗;加点时提供隐藏被动最大冰抗加成 | | **#109** | **Cleansing** | 净化 | `srvdofunc=65` | `aurastate=cleansing`,加速毒素消退与诅咒持续时间缩短(`curse_duration_reduction`) | | **#110** | **Resist Lightning** | 抵抗闪电 | `srvdofunc=65` | `aurastate=resistlightning`,提升友军电抗;加点时提供隐藏被动最大电抗加成 | | **#115** | **Vigor** | 精力 / 活力 | `srvdofunc=65` | `aurastate=vigor`,大幅提升友军跑步与行走速度、奔跑耐力及耐力回复速度 | | **#120** | **Meditation** | 冥思 | `srvdofunc=65` | `aurastate=meditation`,极大提升法力回复速度百分比(Mana Recovery Rate %) | | **#124** | **Redemption** | 救赎 | `srvdofunc=81` | `aurastate=redemption`,周期扫描视野内未被消耗的怪物尸体,超度灵魂并百分比恢复角色生命与法力 | | **#125** | **Salvation** | 救助 | `srvdofunc=65` | `aurastate=salvation`,同时大幅提升友军火/冰/电三系元素全抗 | ### 3. 德鲁伊灵体光环 (Druid Spirit Minion Auras - 3 个) - **#298 橡木智者 (Oak Sage)**:图腾随从广播光环,提供巨额生命上限百分比加成(`maxhp_percent`)。 - **#297 狼獾之心 (Heart of Wolverine)**:图腾随从广播光环,提供物理攻击增伤与命中率加成。 - **#296 荆棘之灵 (Spirit of Barbs)**:图腾随从广播反伤光环。 --- ## 目标选择与环境/视觉效果适配规则 (Target Filtering & Visual Parity Rules) 为确保与原版 1.13c 二进制行为绝对对齐,光环在不同环境、不同阵营单位之间的判定和视觉表现必须严格遵循以下三层规则: ### 1. 城镇与野外环境判定及友军目标广播 (Town vs Wilderness & Friendly Filter) - **城镇环境(In-Town / `isTown === true`)**: - **自身生效原则**:所有防御光环(如反抗 Defiance、祈祷 Prayer、抵抗火焰/冰冷/闪电、精力 Vigor、冥思 Meditation、救助 Salvation 等)以及力量、专注等增益光环,**在城镇中仅对施法者自身有效**,严禁向城镇内的其他玩家、雇佣兵、城镇 NPC 或随从广播属性加成。 - **视觉适配**:城镇内仅施法者自身脚下显示光环环形地圈,周围友军/随从脚下不显示任何光环效果。 - **敌对抑制**:城镇内自动挂起所有伤害脉冲与敌对削弱逻辑。 - **野外战斗环境(Wilderness / `isTown === false`)**: - **完整友军覆盖**:友军增益类光环一旦在野外激活,其作用范围(`aurarange`)内将实时无缝广播并加成给全部合法友方实体: 1. 自身(Player Self) 2. 玩家专属雇佣兵(Player Mercenary / Hireling) 3. 组队队伍队友(Party Members) 4. 队友的雇佣兵(Party Mercenaries) 5. 友军全量召唤物与随从(Friendly Minions & Summons,包含骷髅、石魔、复活怪、影子、���武神、野灵、狼群与灰熊等)。 - **视觉适配**:所有受到增益广播的友军单位(自身、雇佣兵、队友及其召唤物),脚下均同步渲染对应光环状态的微缩/标准脚下光斑与持续 Buff 特效。 ### 2. 信念/审判光环的自身与敌方非对称机制 (Conviction Asymmetry & Enemy Ground Aura) - **施法者自身(Self)**: - **视觉保留**:圣骑士自身脚下播放 Conviction 绿色光环动画。 - **属性免疫**:**绝不减少自身任何抗性与防御**(施法者自身抗性与防御属性保持 100% 正常,无任何负面状态)。 - **敌对目标(Enemies in Wilderness)**: - **属性削弱**:野外作用半径内的全部存活怪物/敌对实体,被挂载 `auratgtstate = conviction`,实时大幅削减其防御百分比(-Defense %)及火/冰/电三系元素全抗(-Fire/Cold/Lightning Resistances %),若怪物为免疫怪,则按 1/5 惩罚执行破免判定。 - **专属视觉特效(脚下显示光环)**:**受到信念影响的敌方怪物脚下,必须渲染专属的 Conviction 绿色针状环形光环地圈**(`Overlay.txt` 中的 Conviction Target Overlay,标志性的敌方脚下绿色旋转锯齿光环),清晰指示其已被破防削弱。 ### 3. 神圣冰冻/元素伤害光环的敌方视觉与状态适配 (Holy Freeze Visual Rules) - **神圣冰冻 (Holy Freeze, #114)**: - **施法者自身(Self)**:圣骑士自身脚下正常渲染青白色冰霜脉冲环形光环(`Overlay.txt` 中的 Holy Freeze Aura Overlay)。 - **敌对目标(Enemies in Wilderness)**: - **真实生效**:在野外对敌对目标完全起效,每 2 秒造成神圣冰冷脉冲伤害,并强行施加不可被冰免完全阻挡的减速效果(`item_slow`,令怪物移动与攻击帧率显著减缓)。 - **敌方脚下光环严禁显示**:**敌方目标脚下绝不显示光环地圈**!敌方受影响时仅展现身体被冰冻的青蓝色材质变色(Blue Chill/Freeze Tint 调色板渲染)或轻微的周身霜屑粒子,保持原版清爽的视觉呈现,杜绝出现敌方脚下套冰霜光圈的伪造特效。 - **其他元素攻击光环与庇护所**: - **圣火 (Holy Fire, #102) & 神圣冲击 (Holy Shock, #118)**:光环环形地圈仅在释放者脚下渲染;受到脉冲波及的敌方单位仅在其中心播放短暂受击闪烁与伤害反馈,脚下无光环。 - **庇护所 (Sanctuary, #119)**:释放者脚下显示白色旋转光轮;范围内不死生物受到击退与魔法伤害,脚下无光环。 --- ## 核心架构与实装方案 (Architecture & Implementation Plan) ### 1. 角色技能槽位与光环常驻生命周期 (Skill Slot & Aura Lifecycle) - **右键光环槽位与状态激活**:在技能快捷栏与主控面板(`ControlBar`)支持将光环配置在右键技能槽。当玩家选择右键为光环技能时,立即自动唤醒并激活该光环,不占用施法动作与攻击前后摇。 - **无缝切换与注销**:当玩家切换右键为其他技能或其他光环时,优雅注销旧光环的 `ActiveAuraSource`,清除对应的光环状态与地面特效,并激活新光环。 - **多光环共存规则**:支持自身光环、雇佣兵/随从光环(如米山力量光环、橡木智者光环)与装备赋予光环在 `StatList` 中的无缝叠加与等级裁决(相同光环仅高等级生效)。 ### 2. 周期性扫描与脉冲引擎 (Periodic Pulse Engine - 1.13c Parity) - **挂载至主游戏世界 Tick**:在 `src/game/engine.ts` 的 `update()` 循环中集成 `AuraScanner.tick(currentTick, allies, enemies, corpses)`。 - **脉冲周期**:严格依据 `perdelay` / `auradelay`(标准为 50 帧,即 2.0 秒一次脉冲)。 - **作用半径计算**:依据 `aurarange` / `aurarangecalc` 与 `slvl` 动态计算半径,转换为等距像素距离进行范围判定。 - **状态持续时间平滑**:光环给予的状态持续帧数设置为 `perdelay + 10`(如 60 帧)���消除脉冲间歇导致的 Buff 闪烁与跳帧。 ### 3. 脚下动态光环层渲染 (PreDraw Ground Overlay Rendering) - **`Overlay.txt` 贴图映射**:解析并映射光环对应的脚下 DCC/DC6 动画(如 `AuraFanatic.dcc`、`holyshock.dcc`、`might.dcc` 等)。 - **地面渲染通道 (`PreDraw === true`)**:在 `src/render/renderer.ts` 中,于地表地貌/地表阴影之上、角色主体精灵之下建立光环渲染通道。 - **动态坐标追踪与自发光混合**:光环精灵以角色/受影响目标的足底锚点为中心,随角色移动平滑跟随,采用透明或自发光混合(Additive Blending),还原经典原版视觉。 - **敌方专属特效精准区分**:精准根据光环类型决定是否在敌方脚下绘制地圈(例如:信念绘制脚下绿色尖刺环;而神圣冰冻仅进行身体 Chill 变色,严禁在敌方脚下绘制地圈)。 ### 4. 战斗管线与属性加成全面打通 (Combat Pipeline Integration) - **实时属性加成**:角色与友军随从的普攻和技能直接结算当前激活光环的属性加成(力量/狂热增伤、反抗提升防御、狂热/活力攻速与移速加成等)。 - **元素攻击附魔**:圣火、神圣冰冻、神圣冲击在普攻/技能命中时,根据技能等级将附加的元素伤害精准融入 `SUnitDmg` 伤害计算。 - **脉冲伤害与怪物受击**:攻击型光环每 2 秒的脉冲伤害对范围内所有存活敌人结算伤害,触发怪物受击反馈与浮动伤害数字。 - **救赎超度尸体**:救赎光环脉冲扫描场景中已消灭怪物的实体尸体,触发灵魂上升动画并为玩家补满生命与法力。 ### 5. 原版音效集成 (Audio SFX) - 触发光环开启专属音效(`AuraTurnOn`)以及各类光环脉冲音效(神圣冲击电击声、神圣冰冻冰爆声、救赎回血音效等)。 --- ## 验收标准 (Acceptance Criteria) - [ ] **1.13c 数值与公式单测**:所有 20 个圣骑士光环与 3 个德鲁伊灵体光环在 `slvl` 1, 10, 20 的加成数值、法力消耗、作用半径、脉冲频率单元测试 100% 通过。 - [ ] **城镇与野外环境目标选择准确性**: - 反抗(Defiance)等防御光环在城镇内激活时,严格仅对自己生效,不影响雇佣兵、队友及召唤物; - 进入野外后,反抗光环自动扩展作用到玩家雇佣兵、队友、队友雇佣兵及所有召唤物(骷髅、随从等)。 - [ ] **信念(Conviction)非对称性与视觉效果验证**: - 激活信念时,施法者脚下有光环视觉,但自身抗性与防御保持不变(0 负面削减); - 野外敌方怪物受到信念减益(-Def%, -Res%),且受到影响的怪物脚下清晰显示 Conviction 专属绿色尖刺光环地圈。 - [ ] **神圣冰冻(Holy Freeze)视觉抑制与减速验证**: - 激活神圣冰冻后,野外怪物受到减速与冰冷脉冲伤害; - 敌方怪物脚下**不显示任何环形光环地圈**,仅显示冰冷受冻材质变色(Blue Tint)。 - [ ] **常驻光环槽位与热键切换**:玩家可通过技能面板或快捷键将光环配置到右键,选中后自动处于常驻激活状态,走动、拾取、左键普攻与施法期间光环持续生效。 - [ ] **脚下光环特效视觉对齐**:激活光环后,角色脚下正确渲染原版 1.13c 动态环形光环动画,移动时流畅跟随,无黑边无白框。 - [ ] **零代码破坏与类型安全**:`npm run typecheck` 与全量测试套件(`npm test`)100% 保持全绿。
Author
Owner

📋 需求补充:光环目标选择逻辑与视觉效果差异化适配 (Target Filtering & Visual Parity Rules)

根据 Master 指示,已将目标选择规则与视觉表现细化规范追加至 Issue 规范正文中,重点保证以下行为的 1.13c 原版一致性:

  1. 城镇与野外环境差异化目标选择:

    • 反抗(Defiance)等防御/增益光环在城镇(In-Town)时严格只对自己有效,不广播给周围其他实体;
    • 在**野外(Wilderness)**时,自动扩展广播给自身雇佣兵、队伍队友、队友雇佣兵以及所有友方召唤物(骷髅、石魔、随从等)。
  2. 信念 / 审判(Conviction)的自身与敌方非对称性:

    • 对自身(Self):仅显示脚下绿色光环动画,绝不减少自身任何抗性与防御;
    • 对野外敌方(Enemies):在野外范围内对敌对目标生效(削减防御与抗性),并且敌方脚下必须显示专属的 Conviction 绿色尖刺光环地圈。
  3. 神圣冰冻(Holy Freeze)的视觉抑制与减速:

    • 对野外敌方(Enemies):造成冰冷脉冲伤害与减速效果(item_slow);
    • 视觉铁律:严禁在敌方脚下显示任何环形光环地圈,敌方仅展现冰冷材质变色(Blue Freeze Tint),避免产生非原版的视觉污染。
### 📋 需求补充:光环目标选择逻辑与视觉效果差异化适配 (Target Filtering & Visual Parity Rules) 根据 Master 指示,已将目标选择规则与视觉表现细化规范追加至 Issue 规范正文中,重点保证以下行为的 1.13c 原版一致性: 1. **城镇与野外环境差异化目标选择**: - **反抗(Defiance)等防御/增益光环**在**城镇(In-Town)**时严格**只对自己有效**,不广播给周围其他实体; - 在**野外(Wilderness)**时,自动扩展广播给自身雇佣兵、队伍队友、队友雇佣兵以及所有友方召唤物(骷髅、石魔、随从等)。 2. **信念 / 审判(Conviction)的自身与敌方非对称性**: - **对自身(Self)**:仅显示脚下绿色光环动画,**绝不减少自身任何抗性与防御**; - **对野外敌方(Enemies)**:在野外范围内对敌对目标生效(削减防御与抗性),并且**敌方脚下必须显示专属的 Conviction 绿色尖刺光环地圈**。 3. **神圣冰冻(Holy Freeze)的视觉抑制与减速**: - **对野外敌方(Enemies)**:造成冰冷脉冲伤害与减速效果(`item_slow`); - **视觉铁律**:**严禁在敌方脚下显示任何环形光环地圈**,敌方仅展现冰冷材质变色(Blue Freeze Tint),避免产生非原版的视觉污染。
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#397
No description provided.