feat(hero/skill): add skill level override resolution logic
1. 新增resolveSkillOverrides工具函数实现技能等级分档覆盖逻辑 2. 为所有英雄/怪物技能模块添加运行时overrides分档处理 3. 扩展技能描述系统以展示分档后的技能等级 4. 新增技能分档配置类型定义与注释
This commit is contained in:
@@ -316,7 +316,18 @@ export interface HSkillInfo {
|
||||
lv: number; // 技能等级
|
||||
cd: number; // 技能cd
|
||||
ccd: number; // 占位当前cd,用于cd计时
|
||||
overrides?: SkillOverrides; // 角色专属参数覆盖
|
||||
overrides?: SkillOverrides; // 角色专属参数覆盖(全等级生效,作为底)
|
||||
lv_entries?: LvSkillEntry[]; // 按英雄等级分档(按 lv 升序,运行时取 ≤英雄等级 的最大档)
|
||||
}
|
||||
|
||||
/**
|
||||
* 普攻技能分档配置:达到 lv 级英雄时此档 overrides 生效(与基础 overrides 浅合并,档位优先)。
|
||||
* s_lv 标注此档对应的技能等级(SkillLv 枚举),便于面板显示"技能Lv.x"。
|
||||
*/
|
||||
export interface LvSkillEntry {
|
||||
lv: number; // 达到该英雄等级时此档生效
|
||||
s_lv?: SkillLv; // 此档对应的技能等级(标注用)
|
||||
overrides: SkillOverrides; // 此档注入的效果
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -974,6 +985,21 @@ export function resolveTriggerByLv(grouped: TriggerGrouped | undefined, lv: numb
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析普攻技能在目标英雄等级下的有效 overrides。
|
||||
* 取 lv_entries 中 ≤hero_lv 的最大档,与基础 overrides 浅合并(档位字段优先)。
|
||||
* Why: 普攻技能与触发技能对齐"英雄等级驱动成长"语义,且下游读取 skills[uuid].overrides 无需感知分档。
|
||||
*/
|
||||
export function resolveSkillOverrides(skill: HSkillInfo, hero_lv: number): SkillOverrides | undefined {
|
||||
if (!skill.lv_entries || skill.lv_entries.length === 0) return skill.overrides;
|
||||
let pick: LvSkillEntry | undefined;
|
||||
for (const e of skill.lv_entries) {
|
||||
if (e.lv <= hero_lv && (!pick || e.lv > pick.lv)) pick = e;
|
||||
}
|
||||
if (!pick) return skill.overrides;
|
||||
return { ...skill.overrides, ...pick.overrides };
|
||||
}
|
||||
|
||||
/** 解析驻场光环在目标等级下的有效词条列表(取 ≤lv 的最大档) */
|
||||
export function resolveFieldByLv(field: LvFieldEntry[] | undefined, lv: number): FieldEntry[] {
|
||||
if (!field || field.length === 0) return [];
|
||||
|
||||
Reference in New Issue
Block a user