Files
pixelheros/assets/script/todo.md
walkpan 83e3f14bc7 docs: 添加技能系统优化设计方案文档
添加 Design2.md 和 Design3.md 详细设计方案文档,包含技能系统优化建议和扩展设计
更新 todo.md 记录当前系统存在的关键问题
2025-12-30 22:40:44 +08:00

5.0 KiB
Raw Blame History

  1. [待评估] HeroAttrsComp 架构问题:数据层与表现层耦合

    • 位置assets/script/game/hero/HeroAttrsComp.ts 的 add_hp、add_mp

    • 问题:属性组件中直接通过 this.ent.get(HeroViewComp) 更新视图, 数据层与表现层强耦合,不利于复用(例如无头战斗逻辑)。

    • TODO后续根据整体架构再决定是否重构方向预留如下

      • 移除 HeroAttrsComp 中对 HeroViewComp 的直接依赖,仅维护数值;
      • 使用事件或 System 把 hp/mp 变更同步给视图组件;
    • 保证 HeroAttrsComp 只处理战斗数值逻辑,不直接操作表现层。

  2. [问题] SkillSet 目标组枚举命名与注释语义不一致

    • 位置assets/script/game/common/config/SkillSet.ts 的 TGroup
    • 现状Ally/Team 的注释与字面含义相反,容易导致配置选错目标阵营。
  3. [问题] SkillSet 多字段“配置存在但运行时未生效”,易造成误配

    • 位置assets/script/game/common/config/SkillSet.ts + assets/script/game/skill/SkillView.ts
    • 现状t_num/hit_num/hitcd/ready/EAnm/DAnm/buffs/neAttrs 等字段当前链路中基本未进入核心逻辑hit_num 的范围命中逻辑在 SkillView 中被注释。
    • 风险:策划以为有效,实际上无效果。
  4. [问题] EType 定义的结束类型 > 实际支持的结束类型

    • 位置assets/script/game/common/config/SkillSet.ts + assets/script/game/skill/SMoveComp.ts + assets/script/game/skill/SkillView.ts
    • 现状distanceEnd/countEnd 等缺少对应实现SkillView 仅处理 animationEndSMoveSystem 仅在 timeEnd/collision 才销毁。
    • 风险:配置为 distanceEnd/countEnd 可能导致技能不销毁或销毁时机不符合预期。
  5. [问题] “穿透/命中次数”概念重复且实现偏一边

    • 位置assets/script/game/common/config/HeroAttrs.ts + assets/script/game/common/config/SkillSet.ts + assets/script/game/skill/SkillView.ts
    • 现状PIERCE/PUNCTURE 两套概念并存,技能销毁只看 (Skill.hit + Attrs.PUNCTURE)t_num/hit_num 不参与。
  6. [问题] TalSet 的 count 配置未生效

    • 位置assets/script/game/common/config/TalSet.ts + assets/script/game/hero/TalComp.ts
    • 现状talConf 中配置了 count但 TalComp.addTal() 固定把 count 设为 1。
    • 风险如“触发后下10次必爆”等配置实际表现会被压缩为 1 次。
  7. [问题] 天赋触发源不完整:大量 triType 永远不会触发

    • 位置assets/script/game/hero/SACastSystem.ts + assets/script/game/hero/HeroAtkSystem.ts
    • 现状:当前只对 ATK/SKILL/MAX 调用 updateCurDMG/LUP/HPL/HPA/DEAD/INIT 等缺少累计来源。
  8. [问题] TalEffet 执行分支不完整

    • 位置assets/script/game/hero/TalComp.ts
    • 现状TalEffet.SHIELD/THORNS 等枚举存在,但 doTriggerTal 未覆盖或未完整实现。
  9. [问题] 百分比/概率“单位体系”混乱0-1 与 0-100 混用)

    • 位置assets/script/game/hero/HeroAtkSystem.ts + assets/script/game/hero/HeroAttrsComp.ts + assets/script/game/common/config/TalSet.ts + assets/script/game/common/config/TDLevelOptions.ts
    • 现状:战斗概率判定使用 0-100add_hp/add_mp 的百分比却按 0-1 乘上限;强化池与天赋表里同时出现 0.14 表示 14% 这种写法。
    • 风险:显示/描述与实际生效严重偏差(例如显示 +14%,实际可能只加 0.14 或反过来直接回满)。
  10. [问题] TDLevelOptions 强化池当前未接入实际流程

  • 位置assets/script/game/common/config/TDLevelOptions.ts
  • 现状getNormalBuffs/getTalentBuffs 在代码中未被引用,属于孤岛配置。
  1. [问题] 强化池常规等级选项集合恒定
  • 位置assets/script/game/common/config/TDLevelOptions.ts
  • 现状:多数等级池子只有 4 条且默认抽 4 个,实际仅随机排序,没有“随机性”。
  1. [问题] 上限规则仅写在 note 文本,未强制 clamp
  • 位置assets/script/game/hero/HeroAttrsComp.ts + assets/script/game/common/config/TDLevelOptions.ts
  • 现状clamp 只限制 CRITICAL/DODGE/HITSTUN_CHANCE/FREEZE_CHANCE/LIFESTEAL 等未做强制上限。
  1. [严重问题] 攻速/技速对 CD 不生效
  • 位置assets/script/game/hero/HeroSkills.ts
  • 现状resetCD 里按 AS/SS 计算了 cd但随后又把 cd 覆盖回 cd_max。
  • 风险:攻速/技速体系失效,强化与天赋相关数值无法体现。
  1. [严重问题] 计数型天赋 key 与属性枚举不一致,导致天赋效果读取失败
  • 位置assets/script/game/hero/TalComp.ts + assets/script/game/hero/HeroAtkSystem.ts
  • 现状TalComp 写入使用 TalEffet.DMG_RED(等)HeroAtkSystem 读取却用 Attrs.DMG_RED/Attrs.THORNS。
  • 风险:减伤/反伤等计数型天赋永远不生效或表现异常。
  1. [问题] 多处存在 “|| 0 + xxx” 的运算优先级坑
  • 位置assets/script/game/hero/HeroAtkSystem.ts
  • 现状:会在属性非 0 时吞掉天赋增量(或相反),导致数值叠加不符合预期。