refactor(hero): 重构技能触发与属性系统,使用运行时解析缓存

1. 重构英雄属性组件,将静态配置与运行时缓存分离,新增runtime_前缀的运行时解析字段
2. 移除旧的evolve进化配置处理逻辑,改为通过等级解析器动态获取当前等级生效的技能与属性
3. 统一怪物与英雄的技能触发逻辑,均使用运行时缓存字段
4. 更新测试模式配置结构,适配新的分组+等级数组配置格式
5. 优化技能描述生成逻辑,支持新的等级配置结构
This commit is contained in:
pan
2026-08-04 16:46:59 +08:00
parent d0971ff72c
commit 57c7934571
10 changed files with 561 additions and 489 deletions

View File

@@ -1,6 +1,5 @@
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { FacSet } from "../common/config/GameSet";
import { HeroInfo } from "../common/config/heroSet";
import { FieldSkillSet, FieldSkillType } from "../common/config/SkillSet";
import { HeroAttrsComp } from "./HeroAttrsComp";
import { SkillBoxComp } from "../map/SkillBoxComp";
@@ -19,12 +18,11 @@ export class FieldSkillHelper {
let total = 0;
// 1. 统计英雄带来的驻场技能加成
// 读 model.field运行时优先使用 evolve 覆盖后的驻场配置,未升级时回退到 heroInfo 基础配置
// 读 model.runtime_field已按当前等级 resolve 的 uuid 列表)
ecs.query(ecs.allOf(HeroAttrsComp)).forEach((entity: ecs.Entity) => {
const model = entity.get(HeroAttrsComp);
if (!model || model.is_dead || model.fac !== FacSet.HERO) return;
const heroConfig = HeroInfo[model.hero_uuid];
const fields = model.field ?? heroConfig?.field;
const fields = model.runtime_field;
if (fields) {
for (const skillUuid of fields) {
const skillConfig = FieldSkillSet[skillUuid];