feat(hero&config): 完善英雄配置与护盾技能逻辑

新增英雄配置表及元数据,更新配置文档说明,修复护盾技能计算逻辑,调整技能基础参数与描述
This commit is contained in:
pan
2026-09-03 10:56:21 +08:00
parent a2dc40997c
commit 421f31fecf
5 changed files with 114 additions and 22 deletions

View File

@@ -320,7 +320,7 @@ export const SkillSet: Record<number, SkillConfig> = {
6202: {
uuid: 6202, name: "大毒气", sp_name: "maxm4", icon: "Stat_Mana", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "max1",
DTType: DTType.single, ap: 100, hit_count: 2, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
RType: RType.linear, EType: EType.collision, bezier_start_y: 20, bezier_mid_y: 140, bezier_arc: 1.05,info: "一个大毒气弹",
RType: RType.linear, EType: EType.collision, bezier_start_y: 20, bezier_mid_y: 140, bezier_arc: 1.05, info: "一个大毒气弹",
},
6203: {
uuid: 6203, name: "大能量波", sp_name: "maxm5", icon: "Stat_Mana", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "max1",
@@ -330,14 +330,14 @@ export const SkillSet: Record<number, SkillConfig> = {
6204: {
uuid: 6204, name: "大毒气弹", sp_name: "maxm6", icon: "Stat_Mana", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "max1",
DTType: DTType.single, ap: 100, hit_count: 2, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
RType: RType.linear, EType: EType.collision, bezier_start_y: 20, bezier_mid_y: 140, bezier_arc: 1.05,info: "一个大毒气弹",
RType: RType.linear, EType: EType.collision, bezier_start_y: 20, bezier_mid_y: 140, bezier_arc: 1.05, info: "一个大毒气弹",
},
//============================= ====== 辅助技能 回合技能 ====== ==========================
6301: {
uuid: 6301, name: "护盾", sp_name: "buff_wind", icon: "Stat_Defense", TGroup: TGroup.Self, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Shield, ap: 3, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, info: "护盾动画",
DTType: DTType.single, kind: SkillKind.Shield, ap: 30, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, info: "获得施法者最大生命30%的护盾",
},
6302: {
uuid: 6302, name: "治疗", sp_name: "buff_wind", icon: "Stat_Hp_01", TGroup: TGroup.Team, readyAnm: "up_green", endAnm: "", act: "atk",
@@ -372,8 +372,8 @@ export const SkillSet: Record<number, SkillConfig> = {
},
6406: {
uuid: 6406, name: "击退强化", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退距离限时提升, 持续5秒",
DTType: DTType.single, kind: SkillKind.Support, ap: 10, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, info: "全体友方击退距离永久提升10%",
},
6407: {
uuid: 6407, name: "距推强化", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
@@ -395,8 +395,8 @@ export const SkillSet: Record<number, SkillConfig> = {
*/
6410: {
uuid: 6410, name: "冰冻强化", sp_name: "buff_wind", icon: "Stat_Freeze", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.freeze_chance, timed_buff_id: 7021, info: "全体友方冰冻概率限时提升, 持续5秒",
DTType: DTType.single, kind: SkillKind.Support, ap: 5, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.freeze_chance, info: "全体友方冰冻概率永久提升5%",
},
6411: {
uuid: 6411, name: "穿透伤害强化", sp_name: "buff_wind", icon: "Stat_Tripleshot", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",

View File

@@ -22,7 +22,6 @@
> - **support / mage → 远程**(普攻 6009\~6012,大招 6200 / 6201 / 6202\~6204)
>
> 辅助技能(6301 护盾 / 6302 治疗 / 6412 防御强化 / 6501 复活)不受形态约束,任意形态可用;作大招(skills[1])时同样按 lv1/lv9/lv16 走 `lv_entries` 分档强化。
## 说明模板
```
@@ -33,25 +32,26 @@ rarity:4 // 品质 1~5,仅决定 lv1 初始基础属性(AP/HP/D
ap:tank+5 // 职业基础值 + 手动偏移
hp:tank-10
def:tank+10
skill[0]:普攻(6001 飞剑,ap100)
skill[0]_lv1:普攻(6001 飞剑,ap100)
skill[0]_lv2:普攻强化档(lv_entries 覆写 ap/弹道/附加效果)
skill[1]_lv1:大招初始档
skill[1]_lv9:大招强化档(lv_entries)
skill[1]_lv16:大招终段强化档(lv_entries)
atking[0]_lv6:攻击触发(t_num 模拟概率,1=每次 3≈33% 4≈25%)
atked[0]_lv6:无
fstart[0]_lv6:无
dead[0]_lv6:无
field[0]_lv6:驻场光环(无品质门槛,所有英雄均可配置)
revive[0]_lv1:无(与 skills[1] 互斥二选一;配置时与大招同走 lv1/lv9/lv16 三档)
revive[0]_lv9:无
atking[0]_lv4:攻击触发(t_num 模拟概率,1=每次 3≈33% 4≈25%)
atked[0]_lv4:无
fstart[0]_lv4:无
dead[0]_lv4:无
field[0]_lv4:驻场光环(无品质门槛,所有英雄均可配置)
revive[0]_lv1:无(与 skills[1] 互斥二选一;配置时与大招同走 lv1/lv8/lv16 三档)
revive[0]_lv8:无
revive[0]_lv16:无
简化说明:原作缺失机制的替代方案(如有)
```
**通用约束**:
- 等级节奏:lv1 激活 skills[0]/skills[1];lv6 解锁 atking/atked/fstart/dead/field 触发技能(触发类技能统一 lv6 激活,各触发槽最多 1 个,无品质门槛);大招(skills[1])lv9/lv16 走 `lv_entries` 分档提升;lv12 按职业对单项基础属性 +50%(基数取 lv11 当前等级有效值:坦克→def、战士/辅助→hp、刺客/射手/法师→ap)
- **revive 与大招互斥**:`revive[0]` 与 `skills[1]` 只能二选一;配置 revive 的英雄不走大招体系,revive 采用与大招相同的 3 级成长机制(lv1/lv9/lv16 走 `lv_entries` 分档强化)
- 等级节奏:lv1 激活 skills[0]/skills[1];lv2 解锁 skills[0] 普攻强化档(`lv_entries` 覆写 ap/弹道/附加效果);lv4 解锁 atking/atked/fstart/dead/field 触发技能(触发类技能统一 lv4 激活,各触发槽最多 1 个,无品质门槛);大招(skills[1])lv9/lv16 走 `lv_entries` 分档提升;lv12 按职业对单项基础属性 +50%(基数取 lv11 当前等级有效值:坦克→def、战士/辅助→hp、刺客/射手/法师→ap)
- **revive 与大招互斥**:`revive[0]` 与 `skills[1]` 只能二选一;配置 revive 的英雄不走大招体系,revive 采用与大招相同的 3 级成长机制(lv1/lv8/lv16 走 `lv_entries` 分档强化)
- **品质(rarity)仅影响 lv1 初始基础属性**:相邻品质 AP/HP/DEF 相差 5%(系数 1+0.05×(rarity-1)),不再决定 uuid 段位、光环/技能解锁、属性补偿等任何机制;其余配置参数完全一致
- 能力只能从能力池(BuffList 7001\~7024 / FieldSkillSet 7001\~7020 / SkillSet 底座)引用 + `overrides` 数值覆盖,**禁止新增同义底座**
@@ -76,11 +76,12 @@ revive[0]_lv16:无
## 配置检查清单
- [ ] `skills` 引用的 uuid 在 SkillSet 中存在,`overrides.ap` 显式写出
- [ ] 普攻(`skills[0]`)lv1 激活,lv2 走 `lv_entries` 覆写强化(ap/弹道/附加效果),不改动 SkillSet 底座
- [ ] 大招(`skills[1]`)覆写 `summon_count`:lv1=1、lv9=1、lv16=2,通过 `lv_entries` 逐级覆写,不改动 SkillSet 底座
- [ ] `timed_buff_id` 指向 BuffList 已存在条目(能力池 2.1/2.2 内)
- [ ] debuff/buff 只通过 `overrides` 注入,未改动 SkillSet/BuffList 底座
- [ ] `atking`/`atked`/`fstart`/`dead`/`field` 按 s\_uuid 分组、按 lv 升序,触发类技能统一 lv6 激活(无品质门槛,field 光环任意品质可配)
- [ ] `revive[0]` 与 `skills[1]` 二选一(互斥);配置 revive 时按 lv1/lv9/lv16 走 `lv_entries` 3 级成长,与大招同机制
- [ ] `atking`/`atked`/`fstart`/`dead`/`field` 按 s\_uuid 分组、按 lv 升序,触发类技能统一 lv4 激活(无品质门槛,field 光环任意品质可配)
- [ ] `revive[0]` 与 `skills[1]` 二选一(互斥);配置 revive 时按 lv1/lv8/lv16 走 `lv_entries` 3 级成长,与大招同机制
- [ ] lv12:按职业注入单项属性 +50%(坦克 def、战士/辅助 hp、刺客/射手/法师 ap),基数取 lv11 有效值
- [ ] 品质(rarity)仅影响 lv1 初始 AP/HP/DEF(相邻差 5%,运行时品质系数统一乘,配置保持裸值),不影响 uuid 段位/光环/技能解锁/属性补偿
- [ ] `t_num` 概率模拟符合预期(1=每次,3≈33%,4≈25%)

View File

@@ -0,0 +1,79 @@
字段,5005,5007,5008,5001,5002,5003,5004,5006
英雄名称,叠甲骑士,微醺战神,眩晕暴击哥,紫电魔女,刀刀暴击,格挡反杀,冻住不谢,光明奶爸
简化说明,自身护盾+全体护盾,击退压场+易伤放大;复刻酒仙,高爆发+击晕收割;复刻齐天大圣,群体击退/麻痹压场;复刻深渊女王,暴击/暴伤双光环乘区;复刻剑圣,入场先手+受击格挡;复刻剑豪,冰冻链控制;复刻巫妖王,全体治疗续航+自身护盾
rarity,5,3,5,4,5,4,4,4
类型,tank,warrior,warrior,mage,assassin,warrior,mage,support
形态,近战,近战,近战,远程,近战,近战,远程,远程
ap,tank+0,warrior+20,warrior+20,mage+10,assassin+30,warrior+5,mage+5,support+10
hp,tank+20,warrior+5,warrior+5,mage-5,warrior+0,warrior+10,mage+0,support+10
def,tank+10,warrior+5,warrior+5,mage+0,warrior+0,warrior+5,mage+5,support+10
skill[0],6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s),6010 紫魔球(ap100;bck30;慢速1.20s),6004 攻击(ap100;快速;crt30),6004 攻击(ap100;慢速1.20s),6009 蓝魔球(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s)
skill[1]_lv1,6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾,6101 气斩(ap150;summon1附加易伤7002),6104 开山斧(ap300;stun100 击晕),6200 火焰喷射(ap250;bck50),6100 光闪(ap150;summon1),6103 闪电斩(ap150;para40 麻痹;summon1),6203 能量波(ap150;summon1),6302 治疗(团队回复ap300%;summon1)
skill[1]_lv8,ap:60;summon1:获得生命最大值60%的护盾,ap150;summon1;附加易伤7002buff_value20,ap450;stun100 击晕;,6200 火焰喷射(ap350;bck60),ap250,ap150;para40;summon1;附加减攻7006,ap150;frz15 冰冻;summon1,团队回复ap400%;summon1
skill[1]_lv16,ap:120;summon1:获得生命最大值120%的护盾,ap180;bck60;summon2;易伤buff_value40,ap450;stun100 击晕;;summon2,6200 火焰喷射(ap450;bck70),ap350,ap180;para50;summon2;减攻buff_value-15,ap180;frz30;hit_count8;summon2,团队回复ap450%;summon1
atking[0]_lv4,无,6004 奋力一击(t_num3;ap300;慢速1.20s):每三次攻击后立即打击敌人,对敌人造成300%伤害,无,无,无,无,6009 霜寒之触(t_num3;冰冻7003),
atked[0]_lv4,6301 魔法盾(ap:10;team,summon1):全队获得本英雄生命最大值10%的护盾,无,无,无,无,6301 罗生门(t_num4;自身格挡2次),无,6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾
fstart[0]_lv4,无,无,无,无,无,6200 三十六烦恼凤(t_num1;ap500 入场剑气),无,无
dead[0]_lv4,无,无,无,无,无,无,无,无
field[0]_lv4,无,无,7005 暴伤光环0.25(大圣神威),7002 攻击光环0.15(深渊威压),7004 暴击光环0.12(剑刃风暴)+7005 暴伤光环0.20(斩魂利刃),7018 击晕光环value1(剑心通明),7003 击晕光环0.10(寒霜震慑),无
revive[0]_lv1,无,无,无,无,无,无,无,无
revive[0]_lv8,无,无,无,无,无,无,无,无
revive[0]_lv16,无,无,无,无,无,无,无,无
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
1 字段 5005 5007 5008 5001 5002 5003 5004 5006
2 英雄名称 叠甲骑士 微醺战神 眩晕暴击哥 紫电魔女 刀刀暴击 格挡反杀 冻住不谢 光明奶爸
3 简化说明 自身护盾+全体护盾 击退压场+易伤放大;复刻酒仙 高爆发+击晕收割;复刻齐天大圣 群体击退/麻痹压场;复刻深渊女王 暴击/暴伤双光环乘区;复刻剑圣 入场先手+受击格挡;复刻剑豪 冰冻链控制;复刻巫妖王 全体治疗续航+自身护盾
4 rarity 5 3 5 4 5 4 4 4
5 类型 tank warrior warrior mage assassin warrior mage support
6 形态 近战 近战 近战 远程 近战 近战 远程 远程
7 ap tank+0 warrior+20 warrior+20 mage+10 assassin+30 warrior+5 mage+5 support+10
8 hp tank+20 warrior+5 warrior+5 mage-5 warrior+0 warrior+10 mage+0 support+10
9 def tank+10 warrior+5 warrior+5 mage+0 warrior+0 warrior+5 mage+5 support+10
10 skill[0] 6004 攻击(ap100;慢速1.20s) 6004 攻击(ap100;慢速1.20s) 6004 攻击(ap100;慢速1.20s) 6010 紫魔球(ap100;bck30;慢速1.20s) 6004 攻击(ap100;快速;crt30) 6004 攻击(ap100;慢速1.20s) 6009 蓝魔球(ap100;慢速1.20s) 6004 攻击(ap100;慢速1.20s)
11 skill[1]_lv1 6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾 6101 气斩(ap150;summon1附加易伤7002) 6104 开山斧(ap300;stun100 击晕) 6200 火焰喷射(ap250;bck50) 6100 光闪(ap150;summon1) 6103 闪电斩(ap150;para40 麻痹;summon1) 6203 能量波(ap150;summon1) 6302 治疗(团队回复ap300%;summon1)
12 skill[1]_lv8 ap:60;summon1:获得生命最大值60%的护盾 ap150;summon1;附加易伤7002buff_value20 ap450;stun100 击晕; 6200 火焰喷射(ap350;bck60) ap250 ap150;para40;summon1;附加减攻7006 ap150;frz15 冰冻;summon1 团队回复ap400%;summon1
13 skill[1]_lv16 ap:120;summon1:获得生命最大值120%的护盾 ap180;bck60;summon2;易伤buff_value40 ap450;stun100 击晕;;summon2 6200 火焰喷射(ap450;bck70) ap350 ap180;para50;summon2;减攻buff_value-15 ap180;frz30;hit_count8;summon2 团队回复ap450%;summon1
14 atking[0]_lv4 无 6004 奋力一击(t_num3;ap300;慢速1.20s):每三次攻击后立即打击敌人,对敌人造成300%伤害 无 无 无 无 6009 霜寒之触(t_num3;冰冻7003)
15 atked[0]_lv4 6301 魔法盾(ap:10;team,summon1):全队获得本英雄生命最大值10%的护盾 无 无 无 无 6301 罗生门(t_num4;自身格挡2次) 无 6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾
16 fstart[0]_lv4 无 无 无 无 无 6200 三十六烦恼凤(t_num1;ap500 入场剑气) 无 无
17 dead[0]_lv4 无 无 无 无 无 无 无 无
18 field[0]_lv4 无 无 7005 暴伤光环0.25(大圣神威) 7002 攻击光环0.15(深渊威压) 7004 暴击光环0.12(剑刃风暴)+7005 暴伤光环0.20(斩魂利刃) 7018 击晕光环value1(剑心通明) 7003 击晕光环0.10(寒霜震慑) 无
19 revive[0]_lv1 无 无 无 无 无 无 无 无
20 revive[0]_lv8 无 无 无 无 无 无 无 无
21 revive[0]_lv16 无 无 无 无 无 无 无 无
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

View File

@@ -0,0 +1,11 @@
{
"ver": "1.0.1",
"importer": "text",
"imported": true,
"uuid": "1e59dbdf-2e95-4e95-bef5-61b959770d1b",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@@ -537,7 +537,8 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
smc.vmdata.scores.heal_total += addHp;
}
} else if (kind === SkillKind.Shield && sAp !== 0) {
const addShield = Math.max(0, Math.floor(sAp));
// 护盾值 = ap% × 施法者最终最大生命(getFinalHpMax 含驻场光环与计时 buff 加成)
const addShield = Math.max(0, Math.floor(_cAttrsComp.getFinalHpMax() * sAp / 100));
model.add_shield(addShield);
}