快捷栏与技能槽原版 1.13c 机制复刻:冷却中红色遮罩、光环技能黄色标识、充能技能数字显示、被动技能禁入快捷栏 #382
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?
问题背景与需求概述
目前在客户端中,底部控制条的左右技能槽(Left/Right Skill Slot)以及快捷技能选择展开菜单(Skill Select Speedbar,位于
src/ui/hotkeys.ts与src/ui/hud-manager.ts)存在以下偏离暗黑破坏神 2(Diablo II v1.13c)原版规则的问题:原版 Diablo II v1.13c 核心机制规范(Ground Truth)
1. 施法延迟与 CD 状态红色遮罩(Casting Delay & Red Overlay)
Skills.txt中delay字段(单位为 ticks/frames,25 fps)定义。施放延迟技能后触发全局/共享施法冷却(如暴风雪 45 ticks / 1.8s,冰封球 25 ticks / 1.0s,陨石 30 ticks / 1.2s)。player.cooldown > 0)内,受到 Casting Delay 限制的所有技能在左右快捷槽及展开的选择菜单中,图标表面覆盖半透明红色滤镜/遮罩(如rgba(220, 20, 20, 0.5)),并呈现暗红不可用状态。2. 光环技能规范(Aura Skills - Golden / Yellow Styling)
Skills.txt中的aura = 1(如力量 Might、神圣之火 Holy Fire、狂热 Fanaticism、圣王灵气等)。leftUsable必须严格为false,仅能在右键(Right Slot)装备并生效。#ffd700/#ffe46b)或光晕底框,与普通的瞬发施法技能明显区分。3. 充能类技能数字徽标(Charged Skills & Remaining Charges)
item_charged_skill(包含level、currentCharges、maxCharges)。font8,带 1px 黑色投影)渲染当前剩余充能次数(例如20或20/20)。currentCharges === 0)时,图标呈红色不可用状态,提示玩家前往营地铁匠处修理充能。4. 被动技能彻底禁入快捷栏(Passive Skills Exclusion)
Skills.txt中的passive = 1。passiveStat/passiveCalc),严禁出现在getAvailableSkillsForSide()、SkillHotkeysHud.availableSkills以及任何左右按键选择菜单中。改造与验收标准
drawSkillButton改造(src/ui/hotkeys.ts):isCoolingDown: boolean:为true时在技能图标上方绘制红色滤镜(ctx.fillStyle = 'rgba(200, 20, 20, 0.45)',并填充图标区域)。isAura: boolean:为true时使用明亮金黄色高光边框(#ffd700,2px)或专属金色光环标识。charges?: { current: number; max: number }:有充能时在右下角渲染数字徽章。src/ui/hud-manager.ts&src/scene/act-scene.ts):player.cooldown实时同步至SkillHotkeysHud。Skills.txt的passive === 1全局过滤掉所有被动技能,确保 Speedbar 弹窗仅展示合法的可主动施放技能与光环技能。getAvailableSkillsForSide的单元测试,确保无被动技能渗漏。