feat: 完成英雄配置编辑器全流程功能开发

本次提交实现了完整的英雄配置管理系统:
1.  新增服务器端英雄数据持久化接口,支持读取和保存英雄配置
2.  重构前端英雄编辑器UI,替换侧边栏为下拉选择器适配移动端
3.  统一调整前端页面样式,压缩间距适配更多内容
4.  修复Tooltip组件显示逻辑,优化技能飘字效果
5.  导入CSV英雄配置数据,补全全职业技能配置
6.  调整多个英雄预制体的尺寸和位置参数
7.  生成完整的英雄配置导出文件hexport.ts
This commit is contained in:
pan
2026-09-03 16:47:49 +08:00
parent 6a09ae2954
commit 87f771edd1
16 changed files with 1248 additions and 330 deletions

View File

@@ -250,7 +250,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -40.433,
"y": -35.436,
"z": 0
},
"_lrot": {
@@ -290,8 +290,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 191.9,
"height": 192
"width": 160,
"height": 159.9
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -715,7 +715,7 @@
"value": {
"__type__": "cc.Vec3",
"x": 0,
"y": 80,
"y": 98.998,
"z": 0
}
},

View File

@@ -250,7 +250,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -88.321,
"y": -36.511,
"z": 0
},
"_lrot": {
@@ -290,8 +290,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 384,
"height": 384
"width": 160,
"height": 159.9
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -715,7 +715,7 @@
"value": {
"__type__": "cc.Vec3",
"x": 0,
"y": 80,
"y": 103.036,
"z": 0
}
},
@@ -1134,7 +1134,6 @@
},
"fileId": "fdklpBwCBM/qJ4WFlQF3kT",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": [
{
"__id__": 44

View File

@@ -250,7 +250,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -84.432,
"y": -33.26,
"z": 0
},
"_lrot": {
@@ -290,8 +290,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 384,
"height": 384
"width": 160,
"height": 160
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -712,7 +712,7 @@
"value": {
"__type__": "cc.Vec3",
"x": 0,
"y": 80,
"y": 102.61,
"z": 0
}
},

View File

@@ -250,7 +250,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -57.035,
"y": -30.603,
"z": 0
},
"_lrot": {
@@ -290,8 +290,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 256,
"height": 256
"width": 160,
"height": 160
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -715,7 +715,7 @@
"value": {
"__type__": "cc.Vec3",
"x": 0,
"y": 80,
"y": 96.295,
"z": 0
}
},

View File

@@ -250,7 +250,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -57.266,
"y": -35.12,
"z": 0
},
"_lrot": {
@@ -290,8 +290,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 256,
"height": 256
"width": 160,
"height": 160
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -712,7 +712,7 @@
"value": {
"__type__": "cc.Vec3",
"x": 0,
"y": 80,
"y": 117.666,
"z": 0
}
},

View File

@@ -250,7 +250,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -53.96,
"y": -32.613,
"z": 0
},
"_lrot": {
@@ -290,8 +290,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 256,
"height": 256
"width": 160,
"height": 160
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -712,7 +712,7 @@
"value": {
"__type__": "cc.Vec3",
"x": 0,
"y": 264.684,
"y": 135.884,
"z": 0
}
},

View File

@@ -465,265 +465,196 @@ export interface LvBonusEntry {
// @hero-setup:region-begin
export const HeroInfo: Record<number, heroInfo> = {
// ========== 几何王国复刻英雄(5001~5009,依据 英雄设计指引.md) ==========
// 5001 紫电魔女 — atking 麻痹 + 大招 6203 大能量波(击退/麻痹)+ 攻击光环(深渊女王复刻)
5001: {
uuid: 5001, name: "紫电魔女", path: "hm1", fac: FacSet.HERO, rarity: 4, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: HERO_ROLE_BASE[HRole.Mage].hp - 5, ap: HERO_ROLE_BASE[HRole.Mage].ap + 10, def: HERO_ROLE_BASE[HRole.Mage].def,
uuid: 5001, name: "叠甲骑士", path: "hk1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Tank, role: HRole.Tank, hp: HERO_ROLE_BASE[HRole.Tank].hp + 20, ap: HERO_ROLE_BASE[HRole.Tank].ap, def: HERO_ROLE_BASE[HRole.Tank].def + 10,
skills: {
// 普攻:紫魔球底座 + overrides 注入麻痹
6010: { uuid: 6010, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { ap: 100, para: 30 }, desc: "掷出紫魔球,对{target}造成攻击力{ap}%伤害,{para}%概率麻痹目标" },
// 大招:大能量波,独立 cd,按英雄等级分档成长
6203: {
uuid: 6203, name: "能量波", lv: 1, cd: 8, ccd: 0,
overrides: { ap: 250, bck: 30, para: 40, summon_count: 1 },
desc: "释放能量波,对{target}造成攻击力{ap}%伤害,击退{bck},{para}%概率麻痹",
6004: {
uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { "ap": 100 }, desc: "挥剑对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { ap: 250, bck: 60, para: 40, summon_count: 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { ap: 300, bck: 90, timed_buff_id: 7005, para: 50, summon_count: 2 }, desc: "释放能量波,对{target}造成攻击力{ap}%伤害,击退{bck},{para}%概率麻痹,额外释放1次,并使目标中毒(每0.5秒受到{buff_value}点毒伤,持续{dur}秒)" },
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "ap": 120 } },
],
},
},
atking: {
6010: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "雷霆万钧", t_num: 3, overrides: { para: 100 }, desc: "释放紫魔球轰击{target},{para}%概率麻痹目标" },
],
},
field: [
{ lv: 6, uuids: [{ uuid: 7002, value: 0.15, name: "深渊威压" }] },
],
info: "",
},
// 5002 刀刀暴击 — atking 暴击 + 大招 6100 光闪(出血/多段)+ 暴击/暴伤双光环(剑圣复刻)
5002: {
uuid: 5002, name: "刀刀暴击", path: "hk2", fac: FacSet.HERO, rarity: 5, lv: 1, type: HType.Melee, grow_type: HGrowType.Warrior, role: HRole.Warrior, hp: HERO_ROLE_BASE[HRole.Warrior].hp, ap: HERO_ROLE_BASE[HRole.Warrior].ap + 15, def: HERO_ROLE_BASE[HRole.Warrior].def,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, desc: "挥刀对{target}造成攻击力{ap}%伤害" },
// 大招:光闪,独立 cd,按英雄等级分档成长
6100: {
uuid: 6100, name: "光闪", lv: 1, cd: 8, ccd: 0,
overrides: { ap: 150 },
desc: "斩出光闪,对{target}造成攻击力{ap}%伤害",
6301: {
uuid: 6301, name: "魔法盾", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 30, "summon_count": 1 }, desc: "{target}获得生命最大值{ap}%的护盾",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { ap: 150, timed_buff_id: 7007 }, desc: "斩出光闪,对{target}造成攻击力{ap}%伤害,并使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { ap: 180, hit_count: 8, num: 1 }, desc: "斩出光闪,对{target}连击{hit_count}次,每次造成攻击力{ap}%伤害,并双发{num}次" },
],
},
},
atking: {
6004: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "致命节奏", t_num: 3, overrides: { crt: 30 }, desc: "释放斩击,{crt}%概率造成暴击" },
],
},
field: [
{ lv: 6, uuids: [{ uuid: 7004, value: 0.12, name: "剑刃风暴" }, { uuid: 7005, value: 0.2, name: "斩魂利刃" }] },
],
info: "",
},
// 5003 格挡反杀 — fstart 剑气 + atked 护盾 + 大招 6103 闪电斩(减攻)(剑豪复刻)
5003: {
uuid: 5003, name: "格挡反杀", path: "hk4", fac: FacSet.HERO, rarity: 4, lv: 1, type: HType.Melee, grow_type: HGrowType.Warrior, role: HRole.Warrior, hp: HERO_ROLE_BASE[HRole.Warrior].hp + 10, ap: HERO_ROLE_BASE[HRole.Warrior].ap + 5, def: HERO_ROLE_BASE[HRole.Warrior].def + 5,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, desc: "挥刀对{target}造成攻击力{ap}%伤害" },
// 大招:闪电斩,独立 cd,按英雄等级分档成长
6103: {
uuid: 6103, name: "闪电斩", lv: 1, cd: 8, ccd: 0,
overrides: { ap: 150, para: 40, summon_count: 1 },
desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害,{para}%概率麻痹",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { ap: 150, timed_buff_id: 7006, para: 40, summon_count: 1 }, desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害,{para}%概率麻痹,并使目标攻击力{buff_value}%(持续{dur}秒)" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { ap: 180, timed_buff_id: 7006, buff_value: -15, para: 50, summon_count: 2 } },
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "ap": 60, "summon_count": 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 120, "summon_count": 2 } },
],
},
},
atked: {
6301: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "罗生门", t_num: 4, overrides: { TGroup: TGroup.Self, ap: 2 }, desc: "{target}获得{ap}次格挡护盾" },
{ lv: 4, s_lv: SkillLv.Lv1, name: "全体圣盾", t_num: 3, overrides: { "TGroup": null, "ap": 10, "summon_count": 1 }, desc: "全队获得本英雄生命最大值{ap}%的护盾" },
],
},
fstart: {
6200: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "三十六烦恼凤", t_num: 1, overrides: { ap: 500 }, desc: "入场释放剑气,对{target}造成攻击力{ap}%伤害" },
],
},
field: [
{ lv: 6, uuids: [{ uuid: 7018, value: 1, name: "剑心通明" }] },
],
info: "",
},
// 5004 冻住不谢 — atking 冰冻 + 大招 6203 大能量波(冰冻链)+ 击晕光环(巫妖王复刻)
5004: {
uuid: 5004, name: "冻住不谢", path: "hm2", fac: FacSet.HERO, rarity: 4, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: HERO_ROLE_BASE[HRole.Mage].hp, ap: HERO_ROLE_BASE[HRole.Mage].ap + 5, def: HERO_ROLE_BASE[HRole.Mage].def + 5,
// 5002 易伤剑仙 — CSV导入:击退压场+易伤放大;复刻酒仙
5002: {
uuid: 5002, name: "易伤剑仙", path: "hk3", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Warrior, role: HRole.Warrior, hp: HERO_ROLE_BASE[HRole.Warrior].hp + 5, ap: HERO_ROLE_BASE[HRole.Warrior].ap + 20, def: HERO_ROLE_BASE[HRole.Warrior].def + 5,
skills: {
6009: { uuid: 6009, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, desc: "射出寒冰珠,对{target}造成攻击力{ap}%伤害" },
// 大招:大能量波,独立 cd,按英雄等级分档成长
6203: {
uuid: 6203, name: "能量波", lv: 1, cd: 8, ccd: 0,
overrides: { ap: 150, summon_count: 1 },
desc: "释放能量波,对{target}造成攻击力{ap}%伤害",
6004: {
uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { "ap": 100 }, desc: "挥拳对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { ap: 150, frz: 15, summon_count: 1 }, desc: "释放能量波,对{target}造成攻击力{ap}%伤害,{frz}%概率冰冻" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { ap: 180, frz: 30, hit_count: 8, summon_count: 2 }, desc: "释放能量波,对{target}造成攻击力{ap}%伤害,{frz}%概率冰冻,命中{hit_count}次" },
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "ap": 120 } },
],
},
},
atking: {
6009: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "霜寒之触", t_num: 3, overrides: { timed_buff_id: 7003 }, desc: "释放寒气,冰冻{target}{dur}秒" },
],
},
field: [
{ lv: 6, uuids: [{ uuid: 7003, value: 0.1, name: "寒霜震慑" }] },
],
info: "",
},
// 5005 叠甲骑士 — 护盾大招 + fstart 防御 + dead 治疗 + revive 回光返照(黑暗骑士复刻)
5005: {
uuid: 5005, name: "叠甲骑士", path: "hk1", fac: FacSet.HERO, rarity: 5, lv: 1, type: HType.Melee, grow_type: HGrowType.Tank, role: HRole.Tank, hp: HERO_ROLE_BASE[HRole.Tank].hp + 20, ap: HERO_ROLE_BASE[HRole.Tank].ap, def: HERO_ROLE_BASE[HRole.Tank].def + 10,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, desc: "挥剑对{target}造成攻击力{ap}%伤害" },
// 大招位辅助技能:护盾,按英雄等级分档成长(护盾层数)
6301: {
uuid: 6301, name: "叠甲", lv: 1, cd: 8, ccd: 0,
overrides: { TGroup: TGroup.Self, ap: 3, summon_count: 1 },
desc: "{target}获得{ap}次格挡护盾",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { TGroup: TGroup.Self, ap: 5, summon_count: 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { TGroup: TGroup.Self, ap: 6, summon_count: 2 } },
],
},
},
atked: {
6004: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "反击减攻", t_num: 4, overrides: { timed_buff_id: 7006 }, desc: "反击使攻击者攻击力{buff_value}%,持续{dur}秒" },
],
},
fstart: {
6412: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "铁壁壁垒", t_num: 1, overrides: { TGroup: TGroup.Team, ap: 50 }, desc: "{target}防御提升{ap}点" },
],
},
dead: {
6302: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "死亡缠绕", t_num: 1, overrides: { TGroup: TGroup.Ally, ap: 200 }, desc: "死亡时为{target}回复攻击力{ap}%生命" },
],
},
field: [
{ lv: 6, uuids: [{ uuid: 7007, value: 0.15, name: "不灭之躯" }, { uuid: 7019, value: 1, name: "百战不殆" }] },
],
info: "",
},
// 5006 光明奶爸 — 治疗大招 + atking 自疗 + fstart 防御 + 生命光环(光明骑士复刻)
5006: {
uuid: 5006, name: "光明奶爸", path: "hh1", fac: FacSet.HERO, rarity: 4, lv: 1, type: HType.Long, grow_type: HGrowType.Support, role: HRole.Support, hp: HERO_ROLE_BASE[HRole.Support].hp + 15, ap: HERO_ROLE_BASE[HRole.Support].ap, def: HERO_ROLE_BASE[HRole.Support].def + 10,
skills: {
6012: { uuid: 6012, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal].cd, ccd: 0, desc: "投掷药瓶,对{target}造成攻击力{ap}%伤害" },
// 大招:治疗,独立 cd,按英雄等级分档成长
6302: {
uuid: 6302, name: "治疗", lv: 1, cd: 8, ccd: 0,
overrides: { TGroup: TGroup.Team, ap: 300, summon_count: 1 },
desc: "为{target}回复攻击力{ap}%生命",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { TGroup: TGroup.Team, ap: 400, summon_count: 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { TGroup: TGroup.Team, ap: 450, summon_count: 2 } },
],
},
},
atking: {
6302: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "圣洁之锤", t_num: 3, overrides: { TGroup: TGroup.Self, ap: 100 }, desc: "释放圣光,为{target}回复攻击力{ap}%生命" },
],
},
fstart: {
6412: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "圣光庇佑", t_num: 1, overrides: { TGroup: TGroup.Team, ap: 30 }, desc: "{target}防御提升{ap}点" },
],
},
field: [
{ lv: 6, uuids: [{ uuid: 7007, value: 0.15, name: "圣光祝福" }] },
],
info: "",
},
// 5007 微醺战神 — atking 击退 + 大招 6101 气斩(易伤),lv9 属性补偿(酒仙复刻)
5007: {
uuid: 5007, name: "微醺战神", path: "hk3", fac: FacSet.HERO, rarity: 3, lv: 1, type: HType.Melee, grow_type: HGrowType.Tank, role: HRole.Tank, hp: HERO_ROLE_BASE[HRole.Tank].hp + 15, ap: HERO_ROLE_BASE[HRole.Tank].ap + 5, def: HERO_ROLE_BASE[HRole.Tank].def + 10,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, desc: "挥拳对{target}造成攻击力{ap}%伤害" },
// 大招:气斩,独立 cd,按英雄等级分档成长
6101: {
uuid: 6101, name: "气斩", lv: 1, cd: 8, ccd: 0,
overrides: { ap: 150, summon_count: 1 },
desc: "斩出气刃,对{target}造成攻击力{ap}%伤害",
uuid: 6101, name: "气斩", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 150, "timed_buff_id": 7002, "summon_count": 1 }, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,并使目标易伤(受到伤害加深,持续{dur}秒)",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { ap: 150, timed_buff_id: 7002, summon_count: 1 }, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,并使目标易伤(受到伤害加深,持续{dur}秒)" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { ap: 180, bck: 60, timed_buff_id: 7002, buff_value: 20, summon_count: 2 }, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,击退{bck},并使目标易伤(持续{dur}秒)" },
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "buff_value": 20, "summon_count": 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 180, "bck": 60, "buff_value": 40, "summon_count": 2 }, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,击退{bck},并使目标易伤(持续{dur}秒)" },
],
},
},
atking: {
6004: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "雷霆一击", t_num: 3, overrides: { bck: 40 }, desc: "重击{target},击退{bck}" },
{ lv: 4, s_lv: SkillLv.Lv1, name: "奋力一击", t_num: 3, overrides: { "ap": 300 }, desc: "每三次攻击后立即打击{target},造成攻击力{ap}%伤害" },
],
},
info: "",
},
// 5008 眩晕暴击哥 — atking 暴击 + 大招 6104 开山斧(击晕)+ 暴伤光环(齐天大圣复刻)
5008: {
uuid: 5008, name: "眩晕暴击哥", path: "hk5", fac: FacSet.HERO, rarity: 5, lv: 1, type: HType.Melee, grow_type: HGrowType.Warrior, role: HRole.Warrior, hp: HERO_ROLE_BASE[HRole.Warrior].hp + 5, ap: HERO_ROLE_BASE[HRole.Warrior].ap + 20, def: HERO_ROLE_BASE[HRole.Warrior].def,
// 5003 眩晕暴击哥 — CSV导入:高爆发+击晕收割;复刻齐天大圣
5003: {
uuid: 5003, name: "眩晕暴击哥", path: "hk5", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Warrior, role: HRole.Warrior, hp: HERO_ROLE_BASE[HRole.Warrior].hp + 5, ap: HERO_ROLE_BASE[HRole.Warrior].ap + 20, def: HERO_ROLE_BASE[HRole.Warrior].def + 5,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, desc: "挥斧对{target}造成攻击力{ap}%伤害" },
// 大招:开山斧,独立 cd,按英雄等级分档成长
6004: {
uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { "ap": 100 }, desc: "挥斧对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "stun": 10 }, desc: "挥斧对{target}造成攻击力{ap}%伤害,{stun}%概率击晕" },
],
},
6104: {
uuid: 6104, name: "开山斧", lv: 1, cd: 8, ccd: 0,
overrides: { ap: 300, summon_count: 1 },
desc: "劈出开山斧,对{target}造成攻击力{ap}%伤害",
uuid: 6104, name: "开山斧", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 300, "stun": 100, "summon_count": 1 }, desc: "劈出开山斧,对{target}造成攻击力{ap}%伤害,必定击晕",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { ap: 300, stun: 20, summon_count: 1 }, desc: "劈出开山斧,对{target}造成攻击力{ap}%伤害,{stun}%概率击晕" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { ap: 350, stun: 35, hit_count: 8, summon_count: 2 }, desc: "劈出开山斧,对{target}造成攻击力{ap}%伤害,{stun}%概率击晕,命中{hit_count}次" },
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "ap": 450, "stun": 100, "summon_count": 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 450, "stun": 100, "summon_count": 2 } },
],
},
},
atking: {
6004: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "火眼金睛", t_num: 3, overrides: { crt: 25 }, desc: "释放斩击,{crt}%概率造成暴击" },
],
},
field: [
{ lv: 6, uuids: [{ uuid: 7005, value: 0.25, name: "大圣神威" }] },
{ lv: 4, uuids: [{ uuid: 7005, value: 0.25, name: "大圣神威" }] },
],
info: "",
},
// 5009 铁壳斧弟 — atked 叠防 + atking 自疗 + 大招 6101 气斩,lv9 属性补偿(斧小王复刻)
5009: {
uuid: 5009, name: "铁壳斧弟", path: "hc1", fac: FacSet.HERO, rarity: 3, lv: 1, type: HType.Melee, grow_type: HGrowType.Tank, role: HRole.Tank, hp: HERO_ROLE_BASE[HRole.Tank].hp + 10, ap: HERO_ROLE_BASE[HRole.Tank].ap + 5, def: HERO_ROLE_BASE[HRole.Tank].def + 15,
// 5004 刀刀暴击 — CSV导入:暴击/暴伤双光环乘区;复刻剑圣
5004: {
uuid: 5004, name: "刀刀暴击", path: "hc1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Mid, grow_type: HGrowType.Assassin, role: HRole.Assassin, hp: HERO_ROLE_BASE[HRole.Assassin].hp, ap: HERO_ROLE_BASE[HRole.Assassin].ap + 30, def: HERO_ROLE_BASE[HRole.Assassin].def,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, desc: "挥斧对{target}造成攻击力{ap}%伤害" },
// 大招:气斩,独立 cd,按英雄等级分档成长
6101: {
uuid: 6101, name: "气斩", lv: 1, cd: 8, ccd: 0,
overrides: { ap: 150, summon_count: 1 },
desc: "斩出气刃,对{target}造成攻击力{ap}%伤害",
6002: {
uuid: 6002, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast].cd, ccd: 0, overrides: { "ap": 100 }, desc: "挥刀对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: { ap: 180, summon_count: 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { ap: 200, summon_count: 2 } },
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "crt": 10 }, desc: "挥刀对{target}造成攻击力{ap}%伤害,{crt}%概率暴击" },
],
},
6100: {
uuid: 6100, name: "光闪", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 150, "summon_count": 1 }, desc: "斩出光闪,对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "ap": 250, "summon_count": 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 350, "summon_count": 2 } },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7004, value: 0.12, name: "剑刃风暴" }, { uuid: 7005, value: 0.2, name: "斩魂利刃" }] },
],
info: "",
},
// 5005 出血贼 — CSV导入:入场先手+受击格挡;复刻剑豪
5005: {
uuid: 5005, name: "出血贼", path: "hc2", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Mid, grow_type: HGrowType.Assassin, role: HRole.Assassin, hp: HERO_ROLE_BASE[HRole.Assassin].hp, ap: HERO_ROLE_BASE[HRole.Assassin].ap + 30, def: HERO_ROLE_BASE[HRole.Assassin].def,
skills: {
6002: {
uuid: 6002, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast].cd, ccd: 0, overrides: { "ap": 100 }, desc: "挥刀对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "timed_buff_id": 7007, "buff_value": 30, "buff_chance": 30 }, desc: "挥刀对{target}造成攻击力{ap}%伤害,{buff_chance}%概率使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)" },
],
},
6103: {
uuid: 6103, name: "闪电斩", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 150, "summon_count": 1 }, desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "ap": 250, "timed_buff_id": 7007, "summon_count": 1 }, desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害,并使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 350, "para": 50, "timed_buff_id": 7007, "buff_value": 60, "summon_count": 2 }, desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害,{para}%概率麻痹,并使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)" },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7018, value: 1, name: "连击光环" }] },
],
info: "",
},
// 5006 冻箭哥 — CSV导入:多重单体箭,带冰冻
5006: {
uuid: 5006, name: "冻箭哥", path: "ha1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Archer, role: HRole.Archer, hp: HERO_ROLE_BASE[HRole.Archer].hp, ap: HERO_ROLE_BASE[HRole.Archer].ap + 30, def: HERO_ROLE_BASE[HRole.Archer].def,
skills: {
6006: {
uuid: 6006, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal].cd, ccd: 0, overrides: { "ap": 100 }, desc: "射出箭矢,对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "bck": 10 }, desc: "射出箭矢,对{target}造成攻击力{ap}%伤害,击退{bck}" },
],
},
6150: {
uuid: 6150, name: "万箭齐发·冰", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 150, "frz": 30, "summon_count": 1 }, desc: "万箭齐发,对{target}造成攻击力{ap}%伤害,{frz}%概率冰冻",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "ap": 200, "frz": 50, "summon_count": 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 250, "frz": 70, "summon_count": 2 } },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7006, value: 0.15 }] },
],
info: "",
},
// 5007 击退火女 — CSV导入:群体击退/麻痹压场;复刻深渊女王
5007: {
uuid: 5007, name: "击退火女", path: "hm1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: HERO_ROLE_BASE[HRole.Mage].hp - 5, ap: HERO_ROLE_BASE[HRole.Mage].ap + 10, def: HERO_ROLE_BASE[HRole.Mage].def,
skills: {
6010: {
uuid: 6010, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: { "ap": 100, "bck": 30 }, desc: "掷出紫魔球,对{target}造成攻击力{ap}%伤害,击退{bck}",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "bck": 40 } },
],
},
6200: {
uuid: 6200, name: "火焰喷射", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 250, "bck": 100, "summon_count": 1 }, desc: "喷出烈焰风暴,对{target}造成攻击力{ap}%伤害,击退{bck}",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "ap": 350, "bck": 100, "summon_count": 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 450, "bck": 100, "summon_count": 2 } },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7002, value: 0.15, name: "深渊威压" }] },
],
info: "",
},
// 5008 团疗奶爸 — CSV导入:全体治疗续航+自身护盾
5008: {
uuid: 5008, name: "团疗奶爸", path: "hh1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Support, role: HRole.Support, hp: HERO_ROLE_BASE[HRole.Support].hp + 10, ap: HERO_ROLE_BASE[HRole.Support].ap + 20, def: HERO_ROLE_BASE[HRole.Support].def,
skills: {
6011: {
uuid: 6011, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal].cd, ccd: 0, overrides: { "ap": 100 }, desc: "挥杖对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: { "bck": 10 }, desc: "挥杖对{target}造成攻击力{ap}%伤害,击退{bck}" },
],
},
6302: {
uuid: 6302, name: "治疗", lv: 1, cd: 8, ccd: 0, overrides: { "ap": 300, "summon_count": 1 }, desc: "为{target}回复攻击力{ap}%生命",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: { "ap": 400, "summon_count": 1 } },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: { "ap": 450, "summon_count": 2 } },
],
},
},
atking: {
6302: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "嗜血战斧", t_num: 4, overrides: { TGroup: TGroup.Self, ap: 120 }, desc: "释放嗜血斩击,为{target}回复攻击力{ap}%生命" },
],
},
atked: {
// 坚硬皮肤:借 6513 防御爆发底座注入 7023 防御强化(+50%,可无限叠层)
6513: [
{ lv: 6, s_lv: SkillLv.Lv1, name: "坚硬皮肤", t_num: 2, overrides: { TGroup: TGroup.Self, timed_buff_id: 7023, buff_duration: 10 }, desc: "{target}防御提升{buff_value}%,持续{dur}秒" },
6301: [
{ lv: 4, s_lv: SkillLv.Lv1, name: "圣愈之盾", t_num: 3, overrides: { "ap": 30, "summon_count": 1 }, desc: "{target}获得生命最大值{ap}%的护盾" },
],
},
info: "",
},
/*
*=============怪物配置列表================
* 怪物与英雄采用同一套设定体系:基础值 = HERO_ROLE_BASE[role],品质(rarity)

View File

@@ -1,36 +1,185 @@
/**
* 英雄配置导出文件 - 由英雄配置编辑器生成
* 生成时间: 2026-09-02T14:08:56.660Z
* 生成时间: 2026-09-03T07:48:48.642Z
* 使用方式: import { HexportHeroInfo } from "./hexport" 后合并进 HeroInfo
*/
import { v3 } from "cc"
import { FacSet } from "./GameSet"
import { TGroup } from "./SkillSet"
import { SkillLv, HType, HGrowType, HRole, HERO_ROLE_BASE, AtkSpeedSet, AtkSpeedLv, heroInfo } from "./heroSet"
export const HexportHeroInfo: Record<number, heroInfo> = {
// 5001 待定 —
// 5001 叠甲骑士 — CSV导入:自身护盾+全体护盾
5001: {
uuid: 5001, name: "待定", path: "hk1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Tank, role: HRole.Tank, hp: HERO_ROLE_BASE[HRole.Tank].hp, ap: HERO_ROLE_BASE[HRole.Tank].ap, def: HERO_ROLE_BASE[HRole.Tank].def + 10,
uuid: 5001, name: "叠甲骑士", path: "hk1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Tank, role: HRole.Tank, hp: HERO_ROLE_BASE[HRole.Tank].hp + 20, ap: HERO_ROLE_BASE[HRole.Tank].ap, def: HERO_ROLE_BASE[HRole.Tank].def + 10,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal].cd, ccd: 0 },
6301: { uuid: 6301, name: "魔法护盾", lv: 1, cd: 8, ccd: 0, overrides: {"summon_count":1},
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: {"ap":100}, desc: "挥剑对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 9, s_lv: SkillLv.Lv2, overrides: {"ap":100} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":200} },
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"ap":120} },
],
},
6301: { uuid: 6301, name: "魔法盾", lv: 1, cd: 8, ccd: 0, overrides: {"ap":30,"summon_count":1}, desc: "{target}获得生命最大值{ap}%的护盾",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":60,"summon_count":1} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":120,"summon_count":2} },
],
},
},
atked: {
6513: [
{ lv: 6, s_lv: SkillLv.Lv1, t_num: 3, overrides: {"ap":10,"bck":10} },
6301: [
{ lv: 4, s_lv: SkillLv.Lv1, name: "全体圣盾", t_num: 3, overrides: {"TGroup":null,"ap":10,"summon_count":1}, desc: "全队获得本英雄生命最大值{ap}%的护盾" },
],
},
info: "",
},
// 5002 —
// 5002 易伤剑仙 — CSV导入:击退压场+易伤放大;复刻酒仙
5002: {
uuid: 5002, name: "", path: "", fac: FacSet.HERO, rarity: 4, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: HERO_ROLE_BASE[HRole.Mage].hp, ap: HERO_ROLE_BASE[HRole.Mage].ap, def: HERO_ROLE_BASE[HRole.Mage].def,
uuid: 5002, name: "易伤剑仙", path: "hk3", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Warrior, role: HRole.Warrior, hp: HERO_ROLE_BASE[HRole.Warrior].hp + 5, ap: HERO_ROLE_BASE[HRole.Warrior].ap + 20, def: HERO_ROLE_BASE[HRole.Warrior].def + 5,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: {"ap":100}, desc: "挥拳对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"ap":120} },
],
},
6101: { uuid: 6101, name: "气斩", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"timed_buff_id":7002,"summon_count":1}, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,并使目标易伤(受到伤害加深,持续{dur}秒)",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"buff_value":20,"summon_count":1} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":180,"bck":60,"buff_value":40,"summon_count":2}, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,击退{bck},并使目标易伤(持续{dur}秒)" },
],
},
},
atking: {
6004: [
{ lv: 4, s_lv: SkillLv.Lv1, name: "奋力一击", t_num: 3, overrides: {"ap":300}, desc: "每三次攻击后立即打击{target},造成攻击力{ap}%伤害" },
],
},
info: "",
},
// 5003 眩晕暴击哥 — CSV导入:高爆发+击晕收割;复刻齐天大圣
5003: {
uuid: 5003, name: "眩晕暴击哥", path: "hk5", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Melee, grow_type: HGrowType.Warrior, role: HRole.Warrior, hp: HERO_ROLE_BASE[HRole.Warrior].hp + 5, ap: HERO_ROLE_BASE[HRole.Warrior].ap + 20, def: HERO_ROLE_BASE[HRole.Warrior].def + 5,
skills: {
6004: { uuid: 6004, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: {"ap":100}, desc: "挥斧对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"stun":10}, desc: "挥斧对{target}造成攻击力{ap}%伤害,{stun}%概率击晕" },
],
},
6104: { uuid: 6104, name: "开山斧", lv: 1, cd: 8, ccd: 0, overrides: {"ap":300,"stun":100,"summon_count":1}, desc: "劈出开山斧,对{target}造成攻击力{ap}%伤害,必定击晕",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":450,"stun":100,"summon_count":1} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":450,"stun":100,"summon_count":2} },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7005, value: 0.25, name: "大圣神威" }] },
],
info: "",
},
// 5004 刀刀暴击 — CSV导入:暴击/暴伤双光环乘区;复刻剑圣
5004: {
uuid: 5004, name: "刀刀暴击", path: "hc1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Mid, grow_type: HGrowType.Assassin, role: HRole.Assassin, hp: HERO_ROLE_BASE[HRole.Assassin].hp, ap: HERO_ROLE_BASE[HRole.Assassin].ap + 30, def: HERO_ROLE_BASE[HRole.Assassin].def,
skills: {
6002: { uuid: 6002, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast].cd, ccd: 0, overrides: {"ap":100}, desc: "挥刀对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"crt":10}, desc: "挥刀对{target}造成攻击力{ap}%伤害,{crt}%概率暴击" },
],
},
6100: { uuid: 6100, name: "光闪", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"summon_count":1}, desc: "斩出光闪,对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":250,"summon_count":1} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":350,"summon_count":2} },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7004, value: 0.12, name: "剑刃风暴" }, { uuid: 7005, value: 0.2, name: "斩魂利刃" }] },
],
info: "",
},
// 5005 出血贼 — CSV导入:入场先手+受击格挡;复刻剑豪
5005: {
uuid: 5005, name: "出血贼", path: "hc2", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Mid, grow_type: HGrowType.Assassin, role: HRole.Assassin, hp: HERO_ROLE_BASE[HRole.Assassin].hp, ap: HERO_ROLE_BASE[HRole.Assassin].ap + 30, def: HERO_ROLE_BASE[HRole.Assassin].def,
skills: {
6002: { uuid: 6002, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Fast].cd, ccd: 0, overrides: {"ap":100}, desc: "挥刀对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"timed_buff_id":7007,"buff_value":30,"buff_chance":30}, desc: "挥刀对{target}造成攻击力{ap}%伤害,{buff_chance}%概率使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)" },
],
},
6103: { uuid: 6103, name: "闪电斩", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"summon_count":1}, desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":250,"timed_buff_id":7007,"summon_count":1}, desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害,并使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":350,"para":50,"timed_buff_id":7007,"buff_value":60,"summon_count":2}, desc: "召唤落雷斩击{target},造成攻击力{ap}%伤害,{para}%概率麻痹,并使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)" },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7018, value: 1, name: "连击光环" }] },
],
info: "",
},
// 5006 冻箭哥 — CSV导入:多重单体箭,带冰冻
5006: {
uuid: 5006, name: "冻箭哥", path: "ha1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Archer, role: HRole.Archer, hp: HERO_ROLE_BASE[HRole.Archer].hp, ap: HERO_ROLE_BASE[HRole.Archer].ap + 30, def: HERO_ROLE_BASE[HRole.Archer].def,
skills: {
6006: { uuid: 6006, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal].cd, ccd: 0, overrides: {"ap":100}, desc: "射出箭矢,对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"bck":10}, desc: "射出箭矢,对{target}造成攻击力{ap}%伤害,击退{bck}" },
],
},
6150: { uuid: 6150, name: "万箭齐发·冰", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"frz":30,"summon_count":1}, desc: "万箭齐发,对{target}造成攻击力{ap}%伤害,{frz}%概率冰冻",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":200,"frz":50,"summon_count":1} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":250,"frz":70,"summon_count":2} },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7006, value: 0.15 }] },
],
info: "",
},
// 5007 击退火女 — CSV导入:群体击退/麻痹压场;复刻深渊女王
5007: {
uuid: 5007, name: "击退火女", path: "hm1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Mage, role: HRole.Mage, hp: HERO_ROLE_BASE[HRole.Mage].hp - 5, ap: HERO_ROLE_BASE[HRole.Mage].ap + 10, def: HERO_ROLE_BASE[HRole.Mage].def,
skills: {
6010: { uuid: 6010, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Slow].cd, ccd: 0, overrides: {"ap":100,"bck":30}, desc: "掷出紫魔球,对{target}造成攻击力{ap}%伤害,击退{bck}",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"bck":40} },
],
},
6200: { uuid: 6200, name: "火焰喷射", lv: 1, cd: 8, ccd: 0, overrides: {"ap":250,"bck":100,"summon_count":1}, desc: "喷出烈焰风暴,对{target}造成攻击力{ap}%伤害,击退{bck}",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":350,"bck":100,"summon_count":1} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":450,"bck":100,"summon_count":2} },
],
},
},
field: [
{ lv: 4, uuids: [{ uuid: 7002, value: 0.15, name: "深渊威压" }] },
],
info: "",
},
// 5008 团疗奶爸 — CSV导入:全体治疗续航+自身护盾
5008: {
uuid: 5008, name: "团疗奶爸", path: "hh1", fac: FacSet.HERO, rarity: 1, lv: 1, type: HType.Long, grow_type: HGrowType.Support, role: HRole.Support, hp: HERO_ROLE_BASE[HRole.Support].hp + 10, ap: HERO_ROLE_BASE[HRole.Support].ap + 20, def: HERO_ROLE_BASE[HRole.Support].def,
skills: {
6011: { uuid: 6011, lv: 1, cd: AtkSpeedSet[AtkSpeedLv.Normal].cd, ccd: 0, overrides: {"ap":100}, desc: "挥杖对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"bck":10}, desc: "挥杖对{target}造成攻击力{ap}%伤害,击退{bck}" },
],
},
6302: { uuid: 6302, name: "治疗", lv: 1, cd: 8, ccd: 0, overrides: {"ap":300,"summon_count":1}, desc: "为{target}回复攻击力{ap}%生命",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":400,"summon_count":1} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":450,"summon_count":2} },
],
},
},
atking: {
6301: [
{ lv: 4, s_lv: SkillLv.Lv1, name: "圣愈之盾", t_num: 3, overrides: {"ap":30,"summon_count":1}, desc: "{target}获得生命最大值{ap}%的护盾" },
],
},
info: "",
},

View File

@@ -1,5 +1,5 @@
字段,5005,5007,5008,5002,5003,5006,5001,5006
英雄名称,叠甲骑士,微醺战神,眩晕暴击哥,刀刀暴击,出血贼,待定射手,紫电魔女,光明奶爸
字段,5005,5007,5008,5002,5003,5010,5001,5006
英雄名称,叠甲骑士,易伤剑仙,眩晕暴击哥,刀刀暴击,出血贼,冻箭哥,击退火女,团疗奶爸
简化说明,自身护盾+全体护盾,击退压场+易伤放大;复刻酒仙,高爆发+击晕收割;复刻齐天大圣,暴击/暴伤双光环乘区;复刻剑圣,入场先手+受击格挡;复刻剑豪,多重单体箭,带冰冻,群体击退/麻痹压场;复刻深渊女王,全体治疗续航+自身护盾
rarity,1,1,1,1,1,1,1,1
类型,tank,warrior,warrior,assassin,assassin,archer,mage,support
@@ -7,16 +7,16 @@ rarity,1,1,1,1,1,1,1,1
ap,tank+0,warrior+20,warrior+20,assassin+30,assassin+30,archer+30,mage+10,support+20
hp,tank+20,warrior+5,warrior+5,assassin+0,assassin+0,archer,mage-5,support+10
def,tank+10,warrior+5,warrior+5,assassin+0,assassin+0,archer,mage+0,support
skill[0]_lv1,6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;快速;crt30),6004 攻击(ap100;快速,6006 射击(ap100;快速,6010 紫魔球(ap100;bck30;慢速1.20s),6004 攻击(ap100;慢速1.20s)
skill[0]_lv2,ap120,ap120,stun10,crt10,附加30%出血7004buff_chance30,bck10,bck10,bck10
skill[0]_lv1,6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s),6004 攻击(ap100;快速;,6004 攻击(ap100;快速,6006 射击(ap100;快速,6010 紫魔球(ap100;慢速1.20s),6004 攻击(ap100;慢速1.20s)
skill[0]_lv2,ap120,ap120,stun10,crt10,附加30%出血7007buff_chance30,bck10,bck10,bck10
skill[1]_lv1,6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾,6101 气斩(ap150;summon1附加易伤7002),6104 开山斧(ap300;stun100 击晕),6100 光闪(ap150;,6103 闪电斩ap150,6150 万箭齐发冰(ap150%;frz30),6200 火焰喷射(ap250;bck100),6302 治疗(团队恢复ap300%
skill[1]_lv8,ap:60;summon1:获得生命最大值60%的护盾,ap150;summon1;附加易伤7002buff_value20,ap450;stun100 击晕;,ap250,ap250;附加出血7004,ap200%;frz50,6200 火焰喷射(ap350;bck100),团队回复ap400%
skill[1]_lv16,ap:120;summon1:获得生命最大值120%的护盾,ap180;bck60;summon2;易伤buff_value40,ap450;stun100 击晕;;summon2,ap350,ap350;para50;summon2;出血强化7004 buff_value2,ap250%;frz70,6200 火焰喷射(ap450;bck100),团队回复ap450%
skill[1]_lv8,ap:60;summon1:获得生命最大值60%的护盾,ap150;summon1;附加易伤7002buff_value20,ap450;stun100 击晕;,ap250,ap250;附加出血7007,ap200%;frz50,6200 火焰喷射(ap350;bck100),团队回复ap400%
skill[1]_lv16,ap:120;summon1:获得生命最大值120%的护盾,ap180;bck60;summon2;易伤buff_value40,ap450;stun100 击晕;;summon2,ap350,ap350;para50;summon2;出血强化7007 buff_value2,ap250%;frz70,6200 火焰喷射(ap450;bck100),团队回复ap450%
atking[0]_lv4,无,6004 奋力一击(t_num3;ap300;慢速1.20s):每三次攻击后立即打击敌人,对敌人造成300%伤害,无,无,无,无,无,6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾
atked[0]_lv4,6301 魔法盾(ap:10;team,summon1):全队获得本英雄生命最大值10%的护盾,无,无,无,无,无,无,无
fstart[0]_lv4,无,无,无,无,无,无,无,无
dead[0]_lv4,无,无,无,无,无,无,无,无
field[0]_lv4,无,无,7005 暴伤光环0.25(大圣神威),7004 暴击光环0.12(剑刃风暴)+7005 暴伤光环0.20(斩魂利刃),7018 击晕光环value1(剑心通明),7006 攻速光环0.15,7002 攻击光环0.15(深渊威压),无
field[0]_lv4,无,无,7005 暴伤光环0.25,7004 暴击光环0.12+7005 暴伤光环0.20,7018 攻击强化value1(连击光环),7006 攻速光环0.15,7002 攻击光环0.15,无
revive[0]_lv1,无,无,无,无,无,无,无,无
revive[0]_lv8,无,无,无,无,无,无,无,无
revive[0]_lv16,无,无,无,无,无,无,无,无
1 字段 5005 5007 5008 5002 5003 5010 5001 5006 5006
2 英雄名称 叠甲骑士 微醺战神 易伤剑仙 眩晕暴击哥 刀刀暴击 出血贼 冻箭哥 紫电魔女 击退火女 光明奶爸 待定射手 团疗奶爸
3 简化说明 自身护盾+全体护盾 击退压场+易伤放大;复刻酒仙 高爆发+击晕收割;复刻齐天大圣 暴击/暴伤双光环乘区;复刻剑圣 入场先手+受击格挡;复刻剑豪 多重单体箭,带冰冻 群体击退/麻痹压场;复刻深渊女王 全体治疗续航+自身护盾 多重单体箭,带冰冻 全体治疗续航+自身护盾
4 rarity 1 1 1 1 1 1 1 1 1
5 类型 tank warrior warrior assassin assassin archer mage support archer support
7 ap tank+0 warrior+20 warrior+20 assassin+30 assassin+30 archer+30 mage+10 support+20 archer+30 support+20
8 hp tank+20 warrior+5 warrior+5 assassin+0 assassin+0 archer mage-5 support+10 archer support+10
9 def tank+10 warrior+5 warrior+5 assassin+0 assassin+0 archer mage+0 support archer support
10 skill[0]_lv1 6004 攻击(ap100;慢速1.20s) 6004 攻击(ap100;慢速1.20s) 6004 攻击(ap100;慢速1.20s) 6004 攻击(ap100;快速;crt30) 6004 攻击(ap100;快速; 6004 攻击(ap100;快速 6006 射击(ap100;快速 6010 紫魔球(ap100;bck30;慢速1.20s) 6010 紫魔球(ap100;慢速1.20s) 6004 攻击(ap100;慢速1.20s) 6006 射击(ap100;快速 6004 攻击(ap100;慢速1.20s)
11 skill[0]_lv2 ap120 ap120 stun10 crt10 附加30%出血7004buff_chance30 附加30%出血7007buff_chance30 bck10 bck10 bck10 bck10
12 skill[1]_lv1 6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾 6101 气斩(ap150;summon1附加易伤7002) 6104 开山斧(ap300;stun100 击晕) 6100 光闪(ap150; 6103 闪电斩ap150 6150 万箭齐发冰(ap150%;frz30) 6200 火焰喷射(ap250;bck100) 6302 治疗(团队恢复ap300% 6150 万箭齐发冰(ap150%;frz30) 6302 治疗(团队恢复ap300%
13 skill[1]_lv8 ap:60;summon1:获得生命最大值60%的护盾 ap150;summon1;附加易伤7002buff_value20 ap450;stun100 击晕; ap250 ap250;附加出血7004 ap250;附加出血7007 ap200%;frz50 6200 火焰喷射(ap350;bck100) 团队回复ap400% ap200%;frz50 团队回复ap400%
14 skill[1]_lv16 ap:120;summon1:获得生命最大值120%的护盾 ap180;bck60;summon2;易伤buff_value40 ap450;stun100 击晕;;summon2 ap350 ap350;para50;summon2;出血强化7004 buff_value2 ap350;para50;summon2;出血强化7007 buff_value2 ap250%;frz70 6200 火焰喷射(ap450;bck100) 团队回复ap450% ap250%;frz70 团队回复ap450%
15 atking[0]_lv4 无 6004 奋力一击(t_num3;ap300;慢速1.20s):每三次攻击后立即打击敌人,对敌人造成300%伤害 无 无 无 无 无 6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾 无 6301 魔法盾(ap:30;summon1):获得生命最大值30%的护盾
16 atked[0]_lv4 6301 魔法盾(ap:10;team,summon1):全队获得本英雄生命最大值10%的护盾 无 无 无 无 无 无 无 无
17 fstart[0]_lv4 无 无 无 无 无 无 无 无 无
18 dead[0]_lv4 无 无 无 无 无 无 无 无 无
19 field[0]_lv4 无 无 7005 暴伤光环0.25(大圣神威) 7005 暴伤光环0.25 7004 暴击光环0.12(剑刃风暴)+7005 暴伤光环0.20(斩魂利刃) 7004 暴击光环0.12+7005 暴伤光环0.20 7018 击晕光环value1(剑心通明) 7018 攻击强化value1(连击光环) 7006 攻速光环0.15 7002 攻击光环0.15(深渊威压) 7002 攻击光环0.15 无 7006 攻速光环0.15 无
20 revive[0]_lv1 无 无 无 无 无 无 无 无 无
21 revive[0]_lv8 无 无 无 无 无 无 无 无 无
22 revive[0]_lv16 无 无 无 无 无 无 无 无 无

View File

@@ -123,7 +123,8 @@ export class TooltipCom extends CCComp {
const skillConfig = SkillSet[this.s_uuid];
const skillName = skillConfig ? skillConfig.name : "";
this.setupLabel("skill", "name", skillName + this.value);
// this.node.setPosition(v3(this.node.position.x, currentY));
// 技能喊话基于 load 传入位置再抬高 50,避免遮挡角色
this.node.setPosition(v3(this.node.position.x, this.node.position.y + 50));
this.node.setSiblingIndex(topSiblingIndex);
// 根据触发类型激活对应的背景标识(追击/反击/起手/生息/亡语/复活)
this.setupTriggerBg(this.triggerType);
@@ -151,7 +152,7 @@ export class TooltipCom extends CCComp {
case TooltipTypes.shield: // 护盾减免
this.node.setPosition(v3(this.node.position.x + offsetX, currentY));
this.node.setSiblingIndex(topSiblingIndex);
this.setupLabel("add_life", "hp", "减免");
this.setupLabel("add_life", "hp", "0");
isHeal = true;
break;
}

770
put/server/data/heroes.json Normal file
View File

@@ -0,0 +1,770 @@
{
"heroes": [
{
"uuid": 5001,
"name": "叠甲骑士",
"comment": "CSV导入:自身护盾+全体护盾",
"path": "hk1",
"rarity": 1,
"roleKey": "Tank",
"growKey": "Tank",
"typeKey": "Melee",
"statBase": {
"hp": 20,
"ap": 0,
"def": 10
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6004,
"name": "",
"cd": 1.2,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Slow].cd",
"overrides": {
"ap": 100
},
"desc": "挥剑对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"ap": 120
},
"desc": ""
}
]
},
{
"uuid": 6301,
"name": "魔法盾",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 30,
"summon_count": 1
},
"desc": "{target}获得生命最大值{ap}%的护盾",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"ap": 60,
"summon_count": 1
},
"desc": ""
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 120,
"summon_count": 2
},
"desc": ""
}
]
}
],
"atking": {},
"atked": {
"6301": [
{
"lv": 4,
"s_lv": 1,
"name": "全体圣盾",
"t_num": 3,
"overrides": {
"TGroup": null,
"ap": 10,
"summon_count": 1
},
"desc": "全队获得本英雄生命最大值{ap}%的护盾"
}
]
},
"fstart": {},
"dead": {},
"field": [],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
},
{
"uuid": 5002,
"name": "易伤剑仙",
"comment": "CSV导入:击退压场+易伤放大;复刻酒仙",
"path": "hk3",
"rarity": 1,
"roleKey": "Warrior",
"growKey": "Warrior",
"typeKey": "Melee",
"statBase": {
"hp": 5,
"ap": 20,
"def": 5
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6004,
"name": "",
"cd": 1.2,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Slow].cd",
"overrides": {
"ap": 100
},
"desc": "挥拳对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"ap": 120
},
"desc": ""
}
]
},
{
"uuid": 6101,
"name": "气斩",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 150,
"timed_buff_id": 7002,
"summon_count": 1
},
"desc": "斩出气刃,对{target}造成攻击力{ap}%伤害,并使目标易伤(受到伤害加深,持续{dur}秒)",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"buff_value": 20,
"summon_count": 1
},
"desc": ""
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 180,
"bck": 60,
"buff_value": 40,
"summon_count": 2
},
"desc": "斩出气刃,对{target}造成攻击力{ap}%伤害,击退{bck},并使目标易伤(持续{dur}秒)"
}
]
}
],
"atking": {
"6004": [
{
"lv": 4,
"s_lv": 1,
"name": "奋力一击",
"t_num": 3,
"overrides": {
"ap": 300
},
"desc": "每三次攻击后立即打击{target},造成攻击力{ap}%伤害"
}
]
},
"atked": {},
"fstart": {},
"dead": {},
"field": [],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
},
{
"uuid": 5003,
"name": "眩晕暴击哥",
"comment": "CSV导入:高爆发+击晕收割;复刻齐天大圣",
"path": "hk5",
"rarity": 1,
"roleKey": "Warrior",
"growKey": "Warrior",
"typeKey": "Melee",
"statBase": {
"hp": 5,
"ap": 20,
"def": 5
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6004,
"name": "",
"cd": 1.2,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Slow].cd",
"overrides": {
"ap": 100
},
"desc": "挥斧对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"stun": 10
},
"desc": "挥斧对{target}造成攻击力{ap}%伤害,{stun}%概率击晕"
}
]
},
{
"uuid": 6104,
"name": "开山斧",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 300,
"stun": 100,
"summon_count": 1
},
"desc": "劈出开山斧,对{target}造成攻击力{ap}%伤害,必定击晕",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"ap": 450,
"stun": 100,
"summon_count": 1
},
"desc": ""
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 450,
"stun": 100,
"summon_count": 2
},
"desc": ""
}
]
}
],
"atking": {},
"atked": {},
"fstart": {},
"dead": {},
"field": [
{
"lv": 4,
"uuids": [
{
"uuid": 7005,
"value": 0.25,
"name": "大圣神威"
}
],
"desc": ""
}
],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
},
{
"uuid": 5004,
"name": "刀刀暴击",
"comment": "CSV导入:暴击/暴伤双光环乘区;复刻剑圣",
"path": "hc1",
"rarity": 1,
"roleKey": "Assassin",
"growKey": "Assassin",
"typeKey": "Mid",
"statBase": {
"hp": 0,
"ap": 30,
"def": 0
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6002,
"name": "",
"cd": 0.9,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Fast].cd",
"overrides": {
"ap": 100
},
"desc": "挥刀对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"crt": 10
},
"desc": "挥刀对{target}造成攻击力{ap}%伤害,{crt}%概率暴击"
}
]
},
{
"uuid": 6100,
"name": "光闪",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 150,
"summon_count": 1
},
"desc": "斩出光闪,对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"ap": 250,
"summon_count": 1
},
"desc": ""
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 350,
"summon_count": 2
},
"desc": ""
}
]
}
],
"atking": {},
"atked": {},
"fstart": {},
"dead": {},
"field": [
{
"lv": 4,
"uuids": [
{
"uuid": 7004,
"value": 0.12,
"name": "剑刃风暴"
},
{
"uuid": 7005,
"value": 0.2,
"name": "斩魂利刃"
}
],
"desc": ""
}
],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
},
{
"uuid": 5005,
"name": "出血贼",
"comment": "CSV导入:入场先手+受击格挡;复刻剑豪",
"path": "hc2",
"rarity": 1,
"roleKey": "Assassin",
"growKey": "Assassin",
"typeKey": "Mid",
"statBase": {
"hp": 0,
"ap": 30,
"def": 0
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6002,
"name": "",
"cd": 0.9,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Fast].cd",
"overrides": {
"ap": 100
},
"desc": "挥刀对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"timed_buff_id": 7007,
"buff_value": 30,
"buff_chance": 30
},
"desc": "挥刀对{target}造成攻击力{ap}%伤害,{buff_chance}%概率使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)"
}
]
},
{
"uuid": 6103,
"name": "闪电斩",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 150,
"summon_count": 1
},
"desc": "召唤落雷斩击{target},造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"ap": 250,
"timed_buff_id": 7007,
"summon_count": 1
},
"desc": "召唤落雷斩击{target},造成攻击力{ap}%伤害,并使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)"
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 350,
"para": 50,
"timed_buff_id": 7007,
"buff_value": 60,
"summon_count": 2
},
"desc": "召唤落雷斩击{target},造成攻击力{ap}%伤害,{para}%概率麻痹,并使目标出血(每0.5秒受到{buff_value}点伤害,持续{dur}秒)"
}
]
}
],
"atking": {},
"atked": {},
"fstart": {},
"dead": {},
"field": [
{
"lv": 4,
"uuids": [
{
"uuid": 7018,
"value": 1,
"name": "连击光环"
}
],
"desc": ""
}
],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
},
{
"uuid": 5006,
"name": "冻箭哥",
"comment": "CSV导入:多重单体箭,带冰冻",
"path": "ha1",
"rarity": 1,
"roleKey": "Archer",
"growKey": "Archer",
"typeKey": "Long",
"statBase": {
"hp": 0,
"ap": 30,
"def": 0
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6006,
"name": "",
"cd": 1.05,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Normal].cd",
"overrides": {
"ap": 100
},
"desc": "射出箭矢,对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"bck": 10
},
"desc": "射出箭矢,对{target}造成攻击力{ap}%伤害,击退{bck}"
}
]
},
{
"uuid": 6150,
"name": "万箭齐发·冰",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 150,
"frz": 30,
"summon_count": 1
},
"desc": "万箭齐发,对{target}造成攻击力{ap}%伤害,{frz}%概率冰冻",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"ap": 200,
"frz": 50,
"summon_count": 1
},
"desc": ""
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 250,
"frz": 70,
"summon_count": 2
},
"desc": ""
}
]
}
],
"atking": {},
"atked": {},
"fstart": {},
"dead": {},
"field": [
{
"lv": 4,
"uuids": [
{
"uuid": 7006,
"value": 0.15,
"name": ""
}
],
"desc": ""
}
],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
},
{
"uuid": 5007,
"name": "击退火女",
"comment": "CSV导入:群体击退/麻痹压场;复刻深渊女王",
"path": "hm1",
"rarity": 1,
"roleKey": "Mage",
"growKey": "Mage",
"typeKey": "Long",
"statBase": {
"hp": -5,
"ap": 10,
"def": 0
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6010,
"name": "",
"cd": 1.2,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Slow].cd",
"overrides": {
"ap": 100,
"bck": 30
},
"desc": "掷出紫魔球,对{target}造成攻击力{ap}%伤害,击退{bck}",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"bck": 40
},
"desc": ""
}
]
},
{
"uuid": 6200,
"name": "火焰喷射",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 250,
"bck": 100,
"summon_count": 1
},
"desc": "喷出烈焰风暴,对{target}造成攻击力{ap}%伤害,击退{bck}",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"ap": 350,
"bck": 100,
"summon_count": 1
},
"desc": ""
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 450,
"bck": 100,
"summon_count": 2
},
"desc": ""
}
]
}
],
"atking": {},
"atked": {},
"fstart": {},
"dead": {},
"field": [
{
"lv": 4,
"uuids": [
{
"uuid": 7002,
"value": 0.15,
"name": "深渊威压"
}
],
"desc": ""
}
],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
},
{
"uuid": 5008,
"name": "团疗奶爸",
"comment": "CSV导入:全体治疗续航+自身护盾",
"path": "hh1",
"rarity": 1,
"roleKey": "Support",
"growKey": "Support",
"typeKey": "Long",
"statBase": {
"hp": 10,
"ap": 20,
"def": 0
},
"dis": null,
"speed": null,
"skills": [
{
"uuid": 6011,
"name": "",
"cd": 1.05,
"cdExpr": "AtkSpeedSet[AtkSpeedLv.Normal].cd",
"overrides": {
"ap": 100
},
"desc": "挥杖对{target}造成攻击力{ap}%伤害",
"lv_entries": [
{
"lv": 2,
"s_lv": 2,
"overrides": {
"bck": 10
},
"desc": "挥杖对{target}造成攻击力{ap}%伤害,击退{bck}"
}
]
},
{
"uuid": 6302,
"name": "治疗",
"cd": 8,
"cdExpr": null,
"overrides": {
"ap": 300,
"summon_count": 1
},
"desc": "为{target}回复攻击力{ap}%生命",
"lv_entries": [
{
"lv": 8,
"s_lv": 2,
"overrides": {
"ap": 400,
"summon_count": 1
},
"desc": ""
},
{
"lv": 16,
"s_lv": 3,
"overrides": {
"ap": 450,
"summon_count": 2
},
"desc": ""
}
]
}
],
"atking": {
"6301": [
{
"lv": 4,
"s_lv": 1,
"name": "圣愈之盾",
"t_num": 3,
"overrides": {
"ap": 30,
"summon_count": 1
},
"desc": "{target}获得生命最大值{ap}%的护盾"
}
]
},
"atked": {},
"fstart": {},
"dead": {},
"field": [],
"revive": [],
"ap_bonus": [],
"hp_bonus": [],
"def_bonus": [],
"info": ""
}
]
}

View File

@@ -9,6 +9,8 @@ const __dirname = path.dirname(url.fileURLToPath(import.meta.url))
const PROJECT_ROOT = path.resolve(__dirname, '..', '..')
const CONFIG_DIR = path.join(PROJECT_ROOT, 'assets/script/game/common/config')
const EXPORT_PATH = path.join(CONFIG_DIR, 'hexport.ts')
const DATA_DIR = path.join(__dirname, 'data')
const HEROES_PATH = path.join(DATA_DIR, 'heroes.json')
const app = express()
app.use(cors())
@@ -73,6 +75,36 @@ app.post('/api/refresh', async (_req, res) => {
}
})
/** 英雄数据持久化:GET 读取(无文件时返回空列表) */
app.get('/api/heroes', (_req, res) => {
try {
if (!fs.existsSync(HEROES_PATH)) return res.json({ heroes: [] })
res.json(JSON.parse(fs.readFileSync(HEROES_PATH, 'utf8')))
} catch (e) {
res.status(500).json({ error: String(e?.message || e) })
}
})
/** 英雄数据持久化:POST 全量覆盖保存 */
app.post('/api/heroes', (req, res) => {
const heroes = req.body?.heroes
if (!Array.isArray(heroes)) {
return res.status(400).json({ error: 'heroes 必须为数组' })
}
try {
fs.mkdirSync(DATA_DIR, { recursive: true })
fs.writeFileSync(HEROES_PATH, JSON.stringify({ heroes }, null, 2), 'utf8')
res.json({ ok: true, path: HEROES_PATH, count: heroes.length })
} catch (e) {
res.status(500).json({ error: String(e?.message || e) })
}
})
/** 序列化 overrides:TGroup 以字符串存储(如 "Team"),导出时还原为枚举表达式 TGroup.Team */
function serializeOverrides(o) {
return JSON.stringify(o).replace(/"TGroup":\s*"(\w+)"/g, '"TGroup": TGroup.$1')
}
/** 生成 hexport.ts 内容 */
function renderHeroTs(heroes) {
const nl = '\n'
@@ -84,6 +116,7 @@ function renderHeroTs(heroes) {
out += ` */${nl}`
out += `import { v3 } from "cc"${nl}`
out += `import { FacSet } from "./GameSet"${nl}`
out += `import { TGroup } from "./SkillSet"${nl}`
out += `import { SkillLv, HType, HGrowType, HRole, HERO_ROLE_BASE, AtkSpeedSet, AtkSpeedLv, heroInfo } from "./heroSet"${nl}`
out += nl
out += `export const HexportHeroInfo: Record<number, heroInfo> = {${nl}`
@@ -120,7 +153,7 @@ function renderSingleHero(h) {
parts.push(`lv: 1`)
parts.push(`cd: ${sk.cdExpr || sk.cd}`)
parts.push(`ccd: 0`)
if (sk.overrides && Object.keys(sk.overrides).length) parts.push(`overrides: ${JSON.stringify(sk.overrides)}`)
if (sk.overrides && Object.keys(sk.overrides).length) parts.push(`overrides: ${serializeOverrides(sk.overrides)}`)
if (sk.desc) parts.push(`desc: ${JSON.stringify(sk.desc)}`)
if (sk.lv_entries?.length) {
push(` ${sk.uuid}: { ${parts.join(', ')},`)
@@ -128,7 +161,7 @@ function renderSingleHero(h) {
for (const e of sk.lv_entries) {
const eparts = [`lv: ${e.lv}`]
if (e.s_lv) eparts.push(`s_lv: SkillLv.Lv${e.s_lv}`)
if (e.overrides && Object.keys(e.overrides).length) eparts.push(`overrides: ${JSON.stringify(e.overrides)}`)
if (e.overrides && Object.keys(e.overrides).length) eparts.push(`overrides: ${serializeOverrides(e.overrides)}`)
if (e.desc) eparts.push(`desc: ${JSON.stringify(e.desc)}`)
push(` { ${eparts.join(', ')} },`)
}
@@ -153,7 +186,7 @@ function renderSingleHero(h) {
if (e.s_lv) eparts.push(`s_lv: SkillLv.Lv${e.s_lv}`)
if (e.name) eparts.push(`name: ${JSON.stringify(e.name)}`)
eparts.push(`t_num: ${e.t_num}`)
if (e.overrides && Object.keys(e.overrides).length) eparts.push(`overrides: ${JSON.stringify(e.overrides)}`)
if (e.overrides && Object.keys(e.overrides).length) eparts.push(`overrides: ${serializeOverrides(e.overrides)}`)
if (e.desc) eparts.push(`desc: ${JSON.stringify(e.desc)}`)
push(` { ${eparts.join(', ')} },`)
}

View File

@@ -4,32 +4,28 @@
<h1>英雄配置编辑器</h1>
<div class="actions">
<el-button size="small" @click="refreshMeta" :loading="loadingMeta">刷新配置数据</el-button>
<el-button size="small" type="success" @click="doSave" :disabled="!heroes.length">保存到服务器</el-button>
<el-button size="small" type="warning" @click="doExport" :disabled="!heroes.length">导出 hexport.ts</el-button>
</div>
</header>
<div class="hero-main">
<aside class="hero-sidebar">
<div class="side-head">
<span>英雄列表 ({{ heroes.length }})</span>
<el-button size="small" type="primary" text @click="addHero">+ 新增</el-button>
</div>
<div class="hero-list">
<div
v-for="(h, i) in heroes"
:key="i"
class="hero-item"
:class="{ active: i === activeIdx }"
@click="activeIdx = i"
<!-- 英雄选择工具栏:下拉选择,适配手机竖屏 -->
<div class="hero-toolbar">
<el-select
v-model="activeIdx"
class="hero-select"
:placeholder="`选择英雄(共 ${heroes.length} 个)`"
filterable
:disabled="!heroes.length"
>
<div>
<div>{{ h.uuid }} {{ h.name || '(未命名)' }}</div>
<div class="meta">{{ roleLabel(h.roleKey) }} · {{ typeLabel(h.typeKey) }} · ★{{ h.rarity }}</div>
<el-option v-for="(h, i) in heroes" :key="i" :label="`${h.uuid} ${h.name || '(未命名)'}`" :value="i">
<span>{{ h.uuid }} {{ h.name || '(未命名)' }}</span>
<span class="hero-option-meta">{{ roleLabel(h.roleKey) }} · {{ typeLabel(h.typeKey) }} · ★{{ h.rarity }}</span>
</el-option>
</el-select>
<el-button type="primary" @click="addHero">+ 新增</el-button>
<el-button type="danger" plain :disabled="activeIdx < 0" @click="removeHero(activeIdx)">删当前</el-button>
</div>
<el-button type="danger" size="small" text @click.stop="removeHero(i)">删</el-button>
</div>
<div v-if="!heroes.length" class="empty">点击右上角"新增"创建英雄</div>
</div>
</aside>
<section class="hero-editor" v-if="current">
<!-- 基础属性 -->
<div class="panel">
@@ -256,6 +252,27 @@ function addUltSkill() {
current.value.skills[1] = sk
}
async function loadHeroes() {
try {
const r = await api.fetchHeroes()
if (Array.isArray(r.heroes) && r.heroes.length) {
heroes.value = r.heroes
activeIdx.value = 0
}
} catch (e) {
ElMessage.error('加载英雄数据失败: ' + (e?.response?.data?.error || e.message))
}
}
async function doSave() {
try {
const r = await api.saveHeroes(heroes.value)
ElMessage.success(`已保存 ${r.count} 个英雄 → ${r.path}`)
} catch (e) {
ElMessage.error('保存失败: ' + (e?.response?.data?.error || e.message))
}
}
async function doExport() {
try {
await ElMessageBox.confirm(
@@ -272,5 +289,8 @@ async function doExport() {
}
}
onMounted(loadMeta)
onMounted(() => {
loadMeta()
loadHeroes()
})
</script>

View File

@@ -3,6 +3,8 @@ import axios from 'axios'
export const api = {
meta: () => axios.get('/api/meta').then((r) => r.data),
refresh: () => axios.post('/api/refresh').then((r) => r.data),
fetchHeroes: () => axios.get('/api/heroes').then((r) => r.data),
saveHeroes: (heroes) => axios.post('/api/heroes', { heroes }).then((r) => r.data),
exportHeroes: (heroes) => axios.post('/api/export', { heroes }).then((r) => r.data),
fetchExport: () => axios.get('/api/export', { responseType: 'text' }).then((r) => r.data),
}

View File

@@ -35,10 +35,10 @@ export const ATK_SPEEDS = [
export const ROLE_ATK_SKILL = {
Tank: [6004],
Warrior: [6004],
Assassin: [6001, 6002, 6003],
Archer: [6006, 6007, 6008],
Assassin: [6001, 6002, 6003, 6004],
Archer: [6004, 6006, 6007, 6008],
Mage: [6009, 6010, 6011, 6012],
Support: [6009, 6010, 6011, 6012],
Support: [6004, 6009, 6010, 6011, 6012],
}
// 按职业映射大招底座

View File

@@ -14,8 +14,27 @@ body {
font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif;
background: var(--bg);
color: var(--text);
/* 编辑页全局缩小字号,同屏容纳更多字段 */
font-size: 12px;
}
/* Element Plus 表单控件整体缩小一档(默认 14px → 12px) */
.hero-app .el-input__wrapper,
.hero-app .el-select__wrapper,
.hero-app .el-textarea__inner,
.hero-app .el-form-item__label {
font-size: 12px;
}
/* 行间距压缩:表单项下边距 + 行高收紧 */
.hero-app .el-form-item { margin-bottom: 8px; line-height: 1.2; }
.hero-app .el-form-item__label { line-height: 1.2; padding-bottom: 2px; }
.hero-app .el-button { font-size: 12px; height: 26px; padding: 8px 10px; }
.hero-app .el-button--small { height: 22px; padding: 5px 8px; }
.hero-app .el-input__inner { --el-input-height: 26px; }
.hero-app .el-tabs__item { font-size: 12px; height: 30px; }
.hero-app .el-tabs__header { margin-bottom: 8px; }
.hero-app .el-tabs__nav-wrap::after { height: 1px; }
.hero-app {
height: 100%;
display: flex;
@@ -31,49 +50,32 @@ body {
justify-content: space-between;
box-shadow: 0 2px 8px rgba(74, 144, 226, 0.25);
}
.hero-header h1 { font-size: 18px; margin: 0; font-weight: 600; }
.hero-header h1 { font-size: 15px; margin: 0; font-weight: 600; }
.hero-header .actions { display: flex; gap: 8px; }
.hero-main {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
.hero-sidebar {
width: 260px;
/* 英雄选择工具栏:下拉选择替代侧边栏列表,适配手机竖屏 */
.hero-toolbar {
display: flex;
gap: 8px;
align-items: center;
padding: 10px 14px;
background: var(--panel);
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
}
.hero-sidebar .side-head {
padding: 12px 14px;
font-weight: 600;
color: var(--text);
border-bottom: 1px solid var(--border);
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
}
.hero-list {
flex: 1;
overflow-y: auto;
padding: 6px;
.hero-toolbar .hero-select { flex: 1; min-width: 0; }
.hero-option-meta {
float: right;
font-size: 11px;
color: var(--text-light);
}
.hero-item {
padding: 10px 12px;
border-radius: 6px;
cursor: pointer;
margin-bottom: 4px;
display: flex;
justify-content: space-between;
align-items: center;
transition: background 0.15s;
}
.hero-item:hover { background: #eef5ff; }
.hero-item.active { background: #d6e8ff; color: var(--brand); font-weight: 600; }
.hero-item .meta { font-size: 12px; color: var(--text-light); }
.hero-editor {
flex: 1;
@@ -84,14 +86,14 @@ body {
.panel {
background: var(--panel);
border-radius: 8px;
padding: 16px;
margin-bottom: 14px;
padding: 10px 12px;
margin-bottom: 10px;
border: 1px solid var(--border);
box-shadow: 0 1px 3px rgba(46, 91, 160, 0.05);
}
.panel h3 {
margin: 0 0 12px;
font-size: 14px;
margin: 0 0 8px;
font-size: 13px;
color: var(--brand);
border-left: 3px solid var(--brand);
padding-left: 8px;
@@ -100,7 +102,7 @@ body {
.form-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 10px 18px;
gap: 4px 14px;
}
.muted { color: var(--text-light); font-size: 12px; }
@@ -132,6 +134,17 @@ body {
padding: 60px 0;
}
@media (max-width: 900px) {
.hero-sidebar { width: 200px; }
/* 手机竖屏适配:头部按钮换行、表单单列、编辑区全宽滚动 */
@media (max-width: 600px) {
.hero-header {
flex-wrap: wrap;
gap: 8px;
padding: 10px 12px;
}
.hero-header .actions { flex-wrap: wrap; }
.hero-editor { padding: 12px 12px 40px; }
.hero-toolbar { padding: 8px 10px; }
.hero-toolbar .el-button { margin-left: 0; }
.form-grid { grid-template-columns: 1fr; }
.override-grid { grid-template-columns: 1fr; }
}