feat(hero): 新增驻场光环系统与配置

1. 为英雄属性组件添加Field触发类型字段,支持存储驻场光环UUID列表
2. 扩展英雄进化配置,支持覆盖驻场光环配置
3. 优化FieldSkillHelper,优先使用进化后的驻场光环配置
4. 新增占卜师战前强攻限时Buff与援护弓手、占卜师、治愈牧师的6级进化驻场光环配置
5. 补充对应英雄的技能描述与进化逻辑注释
This commit is contained in:
pan
2026-07-24 10:19:12 +08:00
parent 42d0959b05
commit db300bd302
5 changed files with 66 additions and 6 deletions

View File

@@ -74,4 +74,23 @@ export const BuffList: Record<number, BuffConfig> = {
is_control: true, control_kind: 'stun',
info: "击晕目标,无法行动",
},
// 占卜师战前攻击强化(限时版,三档成长:+30/5s → +60/7s → +90/10s
7111: {
id: 7111, name: "战前强攻", icon: "Stat_Attack_03",
category: BuffCategory.Buff, duration: 5, max_stack: 0,
modifiers: [{ attr: Attrs.ap, op: ModOp.Flat, value: 30 }],
info: "攻击力 +30持续 5 秒",
},
7112: {
id: 7112, name: "战前强攻", icon: "Stat_Attack_03",
category: BuffCategory.Buff, duration: 7, max_stack: 0,
modifiers: [{ attr: Attrs.ap, op: ModOp.Flat, value: 60 }],
info: "攻击力 +60持续 7 秒",
},
7113: {
id: 7113, name: "战前强攻", icon: "Stat_Attack_03",
category: BuffCategory.Buff, duration: 10, max_stack: 0,
modifiers: [{ attr: Attrs.ap, op: ModOp.Flat, value: 90 }],
info: "攻击力 +90持续 10 秒",
},
};

View File

@@ -196,6 +196,8 @@ export interface HeroEvolve {
dead?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
fstart?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
fend?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
/** 覆盖驻场光环FieldSkillSet uuid 列表,存活期间全局生效) */
field?: number[];
revive?: { s_uuid: number; r_num: number; upr: number };
/** 额外属性加成(在等级倍率基础上叠加) */
ap_bonus?: number;
@@ -312,7 +314,16 @@ export const HeroInfo: Record<number, heroInfo> = {
uuid: 5031, name: "援护弓手", path: "ha1", fac: FacSet.HERO, pool_lv: 1, lv: 1, type: HType.Long, hp: 143, ap: 40,
skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal2].cd, ccd: 0 } },
atking: [{ s_uuid: 6401, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 1, ap: 8 } }],
info: "每攻击5次为随机1名队友永久提升攻击力8点"
// 成长主线AP增益 8→10→125级 hit_count 1→22英雄环境=全队6级追加全队攻速光环
// 注意evolve.atking 为整体替换且逐级顺序应用高级别需写完整数组field 为驻场光环覆盖
evolve: {
2: { atking: [{ s_uuid: 6401, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 1, ap: 10 } }] },
3: { hp_bonus: 60 },
4: { atking: [{ s_uuid: 6401, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 1, ap: 12 } }] },
5: { atking: [{ s_uuid: 6401, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 2, ap: 12 } }] },
6: { field: [7006] },
},
info: "每攻击5次为随机队友永久提升攻击力8→10→125级起2名6级起全队攻击速度+10%"
},
// 5032: {
// uuid: 5032, name: "战术弓手", path: "ha2", fac: FacSet.HERO, pool_lv: 3, lv: 1, type: HType.Long, hp: 430, ap: 120,
@@ -378,8 +389,17 @@ export const HeroInfo: Record<number, heroInfo> = {
5051: {
uuid: 5051, name: "占卜师", path: "hm1", fac: FacSet.HERO, pool_lv: 1, lv: 1, type: HType.Long, hp: 143, ap: 40,
skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Mid3].cd, ccd: 0 } },
fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, ap: 15 } }],
info: "战斗开始时为全队永久提升攻击力15点"
// 战前计时 buff每波开始全队 AP 限时提升(+30/5s → +60/7s → +90/10s6级追加暴击驻场光环
// 通过 overrides.timed_buff_id 切换 BuffList 中的限时 buff 配置,走 buffManager 限时路径
fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7111 } }],
evolve: {
2: { hp_bonus: 80 },
3: { fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7112 } }] },
4: { hp_bonus: 80 },
5: { fstart: [{ s_uuid: 6401, t_num: 1, overrides: { TGroup: TGroup.Team, timed_buff_id: 7113 } }] },
6: { field: [7204] },
},
info: "战斗开始时全队攻击力限时提升(+30/5s→+60/7s→+90/10s6级起全队暴击率+20%(驻场)"
},
// 5052: {
// uuid: 5052, name: "护盾牧师", path: "hm2", fac: FacSet.HERO, pool_lv: 2, lv: 1, type: HType.Long, hp: 287, ap: 80,
@@ -432,7 +452,21 @@ export const HeroInfo: Record<number, heroInfo> = {
uuid: 5071, name: "治愈牧师", path: "hh1", fac: FacSet.HERO, pool_lv: 1, lv: 1, type: HType.Long, hp: 143, ap: 40,
skills: { 6001: { uuid: 6001, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal3].cd, ccd: 0 } },
atking: [{ s_uuid: 6302, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 200 } }],
info: "每攻击5次治疗全队200%AP"
// 成长主线:治疗量 200→250→300%5级 hit_count 1→2全队6级追加护盾 atking攻防一体
// 注意evolve.atking 为整体替换且逐级顺序应用,高级别需写完整数组
evolve: {
2: { atking: [{ s_uuid: 6302, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 250 } }] },
3: { hp_bonus: 80 },
4: { atking: [{ s_uuid: 6302, t_num: 5, overrides: { TGroup: TGroup.Team, ap: 300 } }] },
5: { atking: [{ s_uuid: 6302, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 2, ap: 300 } }] },
6: {
atking: [
{ s_uuid: 6302, t_num: 5, overrides: { TGroup: TGroup.Team, hit_count: 2, ap: 300 } },
{ s_uuid: 6301, t_num: 7, overrides: { TGroup: TGroup.Team, ap: 3 } },
]
},
},
info: "每攻击5次治疗最缺血队友200→300%5级起全队6级起每攻击7次为全队添加3层护盾"
},
// 5072: {
// uuid: 5072, name: "小金库", path: "hh2", fac: FacSet.HERO, pool_lv: 2, lv: 1, type: HType.Long, hp: 287, ap: 80,

View File

@@ -19,12 +19,14 @@ export class FieldSkillHelper {
let total = 0;
// 1. 统计英雄带来的驻场技能加成
// 读 model.field运行时优先使用 evolve 覆盖后的驻场配置,未升级时回退到 heroInfo 基础配置
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];
if (heroConfig && heroConfig.field) {
for (const skillUuid of heroConfig.field) {
const fields = model.field ?? heroConfig?.field;
if (fields) {
for (const skillUuid of fields) {
const skillConfig = FieldSkillSet[skillUuid];
if (skillConfig && skillConfig.type === type) {
total += skillConfig.value;

View File

@@ -133,6 +133,7 @@ export class Hero extends ecs.Entity {
model.fend = hero.fend;
model.atking = hero.atking;
model.atked = hero.atked;
model.field = hero.field;
model.revive = hero.revive;
// 基础属性按等级倍率初始化
@@ -186,6 +187,8 @@ export class Hero extends ecs.Entity {
if (evo.dead) model.dead = evo.dead;
if (evo.fstart) model.fstart = evo.fstart;
if (evo.fend) model.fend = evo.fend;
// 覆盖驻场光环(存活期间全局生效)
if (evo.field) model.field = evo.field;
if (evo.revive) model.revive = evo.revive;
// 额外属性加成
if (evo.ap_bonus) model.ap += evo.ap_bonus;

View File

@@ -44,6 +44,8 @@ export class HeroAttrsComp extends ecs.Comp {
[SkillTriggerType.FEnd]?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
[SkillTriggerType.Atking]?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
[SkillTriggerType.Atked]?: { s_uuid: number; t_num: number; overrides?: SkillOverrides }[];
/** 驻场光环FieldSkillSet uuid 列表,随 evolve 覆盖,存活期间全局生效) */
[SkillTriggerType.Field]?: number[];
[SkillTriggerType.Revive]?: { s_uuid: number, r_num: number, upr: number };
// ==================== 特殊属性 ====================