diff --git a/assets/resources/game/heros/mb1.prefab b/assets/resources/game/heros/mb1.prefab index 629eff64..e618d74d 100644 --- a/assets/resources/game/heros/mb1.prefab +++ b/assets/resources/game/heros/mb1.prefab @@ -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 } }, diff --git a/assets/resources/game/heros/mb2.prefab b/assets/resources/game/heros/mb2.prefab index edaaf231..94a2a241 100644 --- a/assets/resources/game/heros/mb2.prefab +++ b/assets/resources/game/heros/mb2.prefab @@ -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 diff --git a/assets/resources/game/heros/mb3.prefab b/assets/resources/game/heros/mb3.prefab index 434a9725..dc5b4b8b 100644 --- a/assets/resources/game/heros/mb3.prefab +++ b/assets/resources/game/heros/mb3.prefab @@ -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 } }, diff --git a/assets/resources/game/heros/mb4.prefab b/assets/resources/game/heros/mb4.prefab index 93dbe84e..8ecb0421 100644 --- a/assets/resources/game/heros/mb4.prefab +++ b/assets/resources/game/heros/mb4.prefab @@ -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 } }, diff --git a/assets/resources/game/heros/mb5.prefab b/assets/resources/game/heros/mb5.prefab index 1960498e..2c2c30c3 100644 --- a/assets/resources/game/heros/mb5.prefab +++ b/assets/resources/game/heros/mb5.prefab @@ -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 } }, diff --git a/assets/resources/game/heros/mb6.prefab b/assets/resources/game/heros/mb6.prefab index 906fc54c..8f96bb18 100644 --- a/assets/resources/game/heros/mb6.prefab +++ b/assets/resources/game/heros/mb6.prefab @@ -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 } }, diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index 5f21e9f4..bfdc8f44 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -465,265 +465,196 @@ export interface LvBonusEntry { // @hero-setup:region-begin export const HeroInfo: Record = { - // ========== 几何王国复刻英雄(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) diff --git a/assets/script/game/common/config/hexport.ts b/assets/script/game/common/config/hexport.ts index 621e910e..3caf503c 100644 --- a/assets/script/game/common/config/hexport.ts +++ b/assets/script/game/common/config/hexport.ts @@ -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 = { - // 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: "", }, diff --git a/assets/script/game/common/config/英雄设计表.csv b/assets/script/game/common/config/英雄设计表.csv index 626945e0..f336a3f9 100644 --- a/assets/script/game/common/config/英雄设计表.csv +++ b/assets/script/game/common/config/英雄设计表.csv @@ -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,无,无,无,无,无,无,无,无 diff --git a/assets/script/game/skill/TooltipCom.ts b/assets/script/game/skill/TooltipCom.ts index 676371d3..5437f77a 100644 --- a/assets/script/game/skill/TooltipCom.ts +++ b/assets/script/game/skill/TooltipCom.ts @@ -1,4 +1,4 @@ -import { _decorator, Collider2D, Contact2DType, v3, IPhysics2DContact, Vec3, tween, Label, resources, SpriteFrame, Sprite, UIOpacity, Color, math, Tween,Node } from "cc"; +import { _decorator, Collider2D, Contact2DType, v3, IPhysics2DContact, Vec3, tween, Label, resources, SpriteFrame, Sprite, UIOpacity, Color, math, Tween, Node } from "cc"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { SkillSet } from "../common/config/SkillSet"; @@ -22,7 +22,7 @@ export class TooltipCom extends CCComp { dead_bg: Node = null; @property(Node) revive_bg: Node = null; - + stype: number = 1; // 1:减少生命值,2:增加生命值,3:技能图标 value: string = ""; s_uuid: number = 1001; @@ -31,7 +31,7 @@ export class TooltipCom extends CCComp { triggerType: string = ""; /** DoT 飘字需激活的 debuff 图标节点名(loss_life/hp/debuff 下的子节点,如 FireDamage);空串=普通伤害 */ debuffIcon: string = ""; - + // 动画参数配置 private readonly popDuration = 0.15; private readonly driftDuration = 0.5; @@ -59,13 +59,13 @@ export class TooltipCom extends CCComp { this._uiOpacity = this.node.addComponent(UIOpacity); } this._uiOpacity.opacity = 255; - + // 检测父节点翻转 let sx = 1; if (this.node.parent && this.node.parent.scale.x < 0) { sx = -1; } - + // 🔥 关键修复:停止当前节点和 UIOpacity 上的所有缓动 Tween.stopAllByTarget(this.node); if (this._uiOpacity) { @@ -82,12 +82,12 @@ export class TooltipCom extends CCComp { let scaleMax = 1.5; let isCrit = false; let isHeal = false; - + // 初始随机偏移,防止完全重叠 const offsetX = (Math.random() - 0.5) * 40; - + // 设置极高的渲染层级,防止被怪物遮挡 - const topSiblingIndex = 9999; + const topSiblingIndex = 9999; // 临时变量,存储当前Y坐标,方便统一处理。增加60的Y轴基础偏移,防止伤害飘字等遮挡血条 let currentY = this.node.position.y + 60; @@ -122,8 +122,9 @@ export class TooltipCom extends CCComp { case TooltipTypes.skill: 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)); + this.setupLabel("skill", "name", skillName + this.value); + // 技能喊话基于 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; } @@ -210,7 +211,7 @@ export class TooltipCom extends CCComp { playAnimation(scaleMax: number, isCrit: boolean, isHeal: boolean, sx: number = 1) { // 随机 X 轴偏移 (防止重叠) - const randomX = (Math.random() - 0.5) * 60; + const randomX = (Math.random() - 0.5) * 60; const moveY = 80; const t = tween(this.node); diff --git a/put/server/data/heroes.json b/put/server/data/heroes.json new file mode 100644 index 00000000..79ec5705 --- /dev/null +++ b/put/server/data/heroes.json @@ -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": "" + } + ] +} \ No newline at end of file diff --git a/put/server/index.js b/put/server/index.js index 9d5bf54d..c2d6745e 100644 --- a/put/server/index.js +++ b/put/server/index.js @@ -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 = {${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(', ')} },`) } diff --git a/put/web/src/App.vue b/put/web/src/App.vue index 0fa47199..481bd49c 100644 --- a/put/web/src/App.vue +++ b/put/web/src/App.vue @@ -4,32 +4,28 @@

英雄配置编辑器

刷新配置数据 + 保存到服务器 导出 hexport.ts
- + +
+ + + {{ h.uuid }} {{ h.name || '(未命名)' }} + {{ roleLabel(h.roleKey) }} · {{ typeLabel(h.typeKey) }} · ★{{ h.rarity }} + + + + 新增 + 删当前 +
@@ -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() +}) diff --git a/put/web/src/api.js b/put/web/src/api.js index 5b83cab0..c2ae4cff 100644 --- a/put/web/src/api.js +++ b/put/web/src/api.js @@ -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), } diff --git a/put/web/src/constants.js b/put/web/src/constants.js index e5ede170..099987d3 100644 --- a/put/web/src/constants.js +++ b/put/web/src/constants.js @@ -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], } // 按职业映射大招底座 diff --git a/put/web/src/style.css b/put/web/src/style.css index 335ebdf5..c97e8ee8 100644 --- a/put/web/src/style.css +++ b/put/web/src/style.css @@ -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; } }