Files
pixelheros/assets/script/Design3.md
panw 785b92d2ba fix(天赋系统): 修复天赋计数配置失效和key混用问题
- 在TalComp.addTal中正确使用tConf.count作为初始计数,避免写死为1导致计数型天赋失效
- 统一使用Attrs枚举作为key,解决TalEffet和Attrs混用导致的天赋效果读取失败问题
2025-12-31 09:14:20 +08:00

132 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 技能系统优化建议Design3
目标:在尽量少改代码的前提下,把技能的“可配置性、可扩展性、可组合性”拉起来,让新增技能与 build 更容易产出差异。
## 一、先修复会直接抹平 build 的关键问题(优先级最高)
1) 攻速/技速对 CD 生效
- 问题HeroSkills.resetCD 先按 AS/SS 计算 cd但随后又覆盖回 cd_max导致 AS/SS 永远不影响技能循环。
- 结果:攻速流、技速流、触发流的 build 直接被抹平。
2) 统一百分比/概率单位体系
- 现状:
- 概率判定使用 0100checkChance
- add_hp/add_mp 的百分比逻辑按 01value * HP_MAX
- 配置层TDLevelOptions、TalSet同时出现 0.14 表示 14% 的写法。
- 建议:所有“概率/百分比”统一用 0100 的“百分比点数”,显示与逻辑一致。
3) 天赋 count 配置生效 + 天赋 key 统一
- 问题:
- **Count 容易失效**:如果 `TalComp.addTal` 中把 `count` 写死为 `1`,配置表 `talConf.count` 就会被忽略。例如“下 5 次暴击”的天赋会退化为“下 1 次暴击”。
- 校验点:`this.Tals[uuid].count` 必须来自 `tConf.count`,而不是常量。
- **Key 混用导致逻辑断裂**
- 写入方:`TalComp` 使用 `TalEffet` 枚举值写入(如 `TalEffet.DMG_RED = 10`)。
- 读取方:`HeroAtkSystem` 使用 `Attrs` 枚举值读取(如 `Attrs.DMG_RED = 24`)。
- 结果:天赋效果写入了错误的 Key如 Key 10 对应 `Attrs.AP`),导致真正的伤害减免逻辑(读 Key 24读不到数据天赋完全失效。
- 建议:
- 废弃 `TalEffet` 中的 Key 定义,统一使用 `Attrs` 枚举作为 Key。
-`TalComp.addTal` 中读取 `tConf.count` 写入 `talent.count`,并保证所有“次数型天赋”的消耗端也使用同一套 Key。
## 二、把 SkillSet 变成“少字段但强表达”的可配置系统
当前 SkillConfig 字段很多但真正稳定生效的只有少数ap/map/DType/RType/EType/speed/dis/hit/cd/cost/sp_name
建议把技能配置分成两层:
- 核心战斗字段(必须生效):
- 伤害ap/map + DType
- 弹道RType + speed + dis
- 命中hit穿透次数
- 生命周期EType建议只保留 animationEnd/collision 两类,其他先不让配)
- 扩展字段(等系统补齐后开放):
- 多目标t_num/hit_num
- DOThitcd + timeEnd
- buff/debuffbuffs/neAttrs + chance
- 前摇/结束动画ready/EAnm/DAnm
做法:短期不改字段也可以,但在设计上约束“哪些字段可用、哪些字段暂不承诺”。
## 三、用“技能变体SkillID 替换)”快速放大组合数(最划算)
你现在每个英雄主动技能数量少(技能+大招),想提高 build 兴趣,不要一口气做几十个新技能。
建议:每个技能做 24 个“配置变体”,通过替换 s_uuid 实现。
示例:
- 火球(基础) -> 爆裂火球(碰撞盒更大) -> 穿透火球hit 更高) -> 集束火球(低伤多发)
- 风刃(基础) -> 远程风刃dis 更长) -> 快速风刃speed 更高hit 较低) -> 重刃map 更高speed 更低)
收益:
- 不依赖 t_num/hit_num/buffs/neAttrs 等未落地字段。
- 组合数近似按“技能变体数 × 天赋组合 × 强化路径”指数增长。
## 四、把天赋从“加数值”升级为“改机制”(触发器 + 处理器)
现状TriType 很全,但实际只在 ATK/SKILL/MAX 更新触发DMG/HPL/LUP 等缺来源。
建议的最小升级:
1) 先把触发源补齐:
- DMG受伤时更新
- LUP升级时更新
- HPL/HPA血量变化达到阈值更新
- DEAD击杀/死亡时更新
2) 天赋效果以“机制改造”为主:
- 下一次技能额外释放一次
- 下一次必暴/必定击退
- 技能变体替换(把 s_uuid 换成强化版本)
- 元素转化(把 DType 从 ATK 改成 FIRE 等,形成元素 build
这样即使每局只拿 4 个天赋,组合也会很丰富。
## 五、给技能增加“关键词Tag”让天赋可泛化中期目标
建议新增 tags概念层
- Projectile / Melee / AoE / Beam
- Element: Fire/Ice/Wind/Phys
- Utility: Control/Sustain/Burst/Clear
天赋用 tags 做筛选:
- “所有 Projectile 分裂 +1”
- “所有 Fire 技能命中后额外一次伤害(或改成更大碰撞体)”
- “所有 AoE 范围 +20%”
收益一个天赋能作用多个技能build 会自然爆炸。
## 六、让技能表现更稳定的工程建议(减少体验噪音)
1) 明确技能销毁策略
- 推荐只支持:
- animationEnd动画结束销毁
- collision碰撞触发销毁或 hit 次数耗尽销毁)
2) 统一命中次数规则
- 只保留一个概念pierce命中次数上限
- 技能用 hit 表达基础穿透,角色属性用 PUNCTURE 叠加。
3) 技能范围命中逻辑选择一种实现并固定
- 方案A完全靠碰撞体推荐少代码
- 方案B施法阶段选目标t_num/hit_num但必须补齐对应系统否则不要给策划配。
## 七、推荐落地顺序(两周内能看到 build 明显变丰富)
1) 修复CD 计算、单位体系、天赋 count/key
2) 新增:每个主技能 23 个变体SkillID 替换)
3) 补齐DMG/LUP/HPL 等触发源,让天赋真正“可构筑”
4) 扩展tags + 泛化天赋