feat(hero): 新增驻场光环系统与配置
1. 为英雄属性组件添加Field触发类型字段,支持存储驻场光环UUID列表 2. 扩展英雄进化配置,支持覆盖驻场光环配置 3. 优化FieldSkillHelper,优先使用进化后的驻场光环配置 4. 新增占卜师战前强攻限时Buff与援护弓手、占卜师、治愈牧师的6级进化驻场光环配置 5. 补充对应英雄的技能描述与进化逻辑注释
This commit is contained in:
@@ -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 秒",
|
||||
},
|
||||
};
|
||||
|
||||
@@ -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→12,5级 hit_count 1→2(2英雄环境=全队);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→12,5级起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/10s),6级追加暴击驻场光环
|
||||
// 通过 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/10s);6级起全队暴击率+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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 };
|
||||
|
||||
// ==================== 特殊属性 ====================
|
||||
|
||||
Reference in New Issue
Block a user