refactor(skill): 重构大招CD配置体系,统一档位管理

1. 新增大招CD档位配置ULT_CDS/ULT_CD_MAP,与普攻档位分离
2. 为职业默认值添加大招CD档配置,支持按职业类型适配
3. 改造技能编辑器与英雄向导,支持选择大招CD档位
4. 批量更新现有英雄数据与配置文件,统一使用档位化CD配置
5. 补充文档说明,规范大招CD配置规则
This commit is contained in:
panFD
2026-09-14 23:00:06 +08:00
parent 8c8810bb7e
commit 93dc59a616
8 changed files with 187 additions and 118 deletions

View File

@@ -47,7 +47,7 @@ export enum FightSet {
/** 英雄属性随等级成长的倍率(ap/hp = base * MULTIPLIER^(lv-1)) */
HERO_LV_MULTIPLIER = 2,
// BACK_RANG=30,//后退范围
BACK_RANG = 20,//后退范围
BACK_RANG = 30,//后退范围
FiIGHT_TIME = 30,//战斗时间
FROST_TIME = 3,//冰冻时间
STUN_TIME = 1,//击晕时间(短控:施加瞬间 CD 削减,期间 CD 停止增长)

View File

@@ -1,4 +1,4 @@
import { v3 } from "cc"
import { v3 } from "cc"
import { BoxSet, FacSet, FightSet } from "./GameSet"
import { SkillOverrides, TGroup, SkillSet, FieldSkillSet, SkillConfig, SkillKind, FieldSkillConfig, FieldSkillType, mergeSkillParams } from "./SkillSet"
import { BuffList, BuffConfig, ModOp } from "./BuffSet"
@@ -58,6 +58,30 @@ export const AtkSpeedSet = {
[AtkSpeedLv.VerySlow]: { name: "极慢", cd: 1.50 },
};
/**
* 英雄大招(skills[1])CD 分级配置(5 档,与 AtkSpeedLv 五档结构对齐)。
* 分档规则:VeryFast=单体爆发/高频压制,Normal=群体伤害/控制,VerySlow=全体增益/治疗/护盾,
* Fast/Slow 为中间档,供同类技能内细分释放节奏。
* Why: 大招 CD 曾 18/19 英雄统一 8s,场上大招齐发成"脉冲",玩家难以感知单次大招释放;
* 按技能效果类型分档交错 CD(6~10s),形成持续鼓点节奏,拉开"高频小爆发 vs 稀有大回报"的感知差。
* TODO: CD 档位与数值联动补偿(短 CD 单次数值下调、长 CD 上调)待观察实战强度后统一调整。
*/
export enum UltCdLv {
VeryFast = 1, // 单体爆发/高频压制
Fast = 2, // 频繁压制(中间档)
Normal = 3, // 群体伤害/控制
Slow = 4, // 中度团队增益(中间档)
VerySlow = 5, // 全体增益/治疗/护盾
}
export const UltCdSet = {
[UltCdLv.VeryFast]: { name: "极频", cd: 6 },
[UltCdLv.Fast]: { name: "高频", cd: 7 },
[UltCdLv.Normal]: { name: "标准", cd: 8 },
[UltCdLv.Slow]: { name: "低频", cd: 9 },
[UltCdLv.VerySlow]: { name: "稀有", cd: 10 },
};
export const HeroPos = {
0: { pos: v3(-320, BoxSet.GAME_LINE, 0) },
1: { pos: v3(0, BoxSet.GAME_LINE, 0) },
@@ -553,7 +577,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"ap":120}, desc: "普通攻击 造成 120% 伤害" },
],
},
6301: { uuid: 6301, name: "魔法盾", lv: 1, cd: 10, ccd: 0, overrides: {"ap":30}, desc: "{target}获得生命最大值{ap}%的护盾",
6301: { uuid: 6301, name: "魔法盾", lv: 1, cd: UltCdSet[UltCdLv.VerySlow].cd, ccd: 0, overrides: {"ap":30}, desc: "{target}获得生命最大值{ap}%的护盾",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":60}, desc: "{target}获得生命最大值{ap}%的护盾" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":120}, desc: "{target}获得生命最大值{ap}%的护盾" },
@@ -579,7 +603,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"ap":120}, desc: "普通攻击造成 120% 攻击伤害" },
],
},
6101: { uuid: 6101, name: "气斩", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"timed_debuff_id":7002,"icon":"Stat_AttackSpeed_02"}, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,并使目标易伤(受到伤害加深,持续{dur}秒)",
6101: { uuid: 6101, name: "气斩", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":150,"timed_debuff_id":7002,"icon":"Stat_AttackSpeed_02"}, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,并使目标易伤(受到伤害加深,持续{dur}秒)",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"buff_value":20} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":180,"bck":60,"buff_value":40}, desc: "斩出气刃,对{target}造成攻击力{ap}%伤害,击退{bck},并使目标易伤(持续{dur}秒)" },
@@ -605,7 +629,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"stun":10}, desc: "普通攻击有{stun}%概率击晕敌人" },
],
},
6104: { uuid: 6104, name: "开山斧", lv: 1, cd: 8, ccd: 0, overrides: {"ap":300,"stun":100}, desc: "劈出开山斧,对{target}造成攻击力{ap}%伤害,必定击晕",
6104: { uuid: 6104, name: "开山斧", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":300,"stun":100}, desc: "劈出开山斧,对{target}造成攻击力{ap}%伤害,必定击晕",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":450,"stun":100} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":450,"stun":100} },
@@ -629,7 +653,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"crt":10}, desc: "普通攻击有{crt}%概率暴击" },
],
},
6100: { uuid: 6100, name: "光闪", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150}, desc: "斩出光闪,对{target}造成攻击力{ap}%伤害",
6100: { uuid: 6100, name: "光闪", lv: 1, cd: UltCdSet[UltCdLv.VeryFast].cd, ccd: 0, overrides: {"ap":150}, desc: "斩出光闪,对{target}造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":250} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":350} },
@@ -653,7 +677,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"timed_debuff_id":7007,"debuff_value":30,"debuff_chance":30}, desc: "普通攻击有{debuff_chance}%概率使目标出血(每0.5秒受到{debuff_value}点伤害,持续{dur}秒)" },
],
},
6103: { uuid: 6103, name: "闪电斩", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150}, desc: "高速斩击{target},造成攻击力{ap}%伤害",
6103: { uuid: 6103, name: "闪电斩", lv: 1, cd: UltCdSet[UltCdLv.VeryFast].cd, ccd: 0, overrides: {"ap":150}, desc: "高速斩击{target},造成攻击力{ap}%伤害",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":250,"timed_debuff_id":7007,"debuff_value":40}, desc: "高速斩击{target},造成攻击力{ap}%,并使目标出血(每0.5秒受到{debuff_value}点伤害,持续{dur}秒)" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":350,"timed_debuff_id":7007,"debuff_value":60}, desc: "高速斩击{target},造成攻击力{ap}%,附带 50% 概率麻痹,并使目标出血(每0.5秒受到{debuff_value}点伤害,持续{dur}秒)" },
@@ -677,7 +701,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"frz":10}, desc: "普通攻击有{frz}%概率 冰冻敌人" },
],
},
6150: { uuid: 6150, name: "万箭齐发·冰", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"frz":30,"icon":"Stat_AttackRangeIncrease_02"}, desc: "万箭齐发,对{target}造成攻击力{ap}%伤害,{frz}%概率冰冻",
6150: { uuid: 6150, name: "万箭齐发·冰", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":150,"frz":30,"icon":"Stat_AttackRangeIncrease_02"}, desc: "万箭齐发,对{target}造成攻击力{ap}%伤害,{frz}%概率冰冻",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":200,"frz":50} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":250,"frz":70} },
@@ -701,7 +725,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"bck_chance":20}, desc: "普通攻击有{bck_chance}%概率击退敌人" },
],
},
6200: { uuid: 6200, name: "火焰喷射", lv: 1, cd: 8, ccd: 0, overrides: {"ap":250,"bck":100}, desc: "喷出烈焰风暴,对{target}造成攻击力{ap}%伤害,击退{bck}",
6200: { uuid: 6200, name: "火焰喷射", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":250,"bck":100}, desc: "喷出烈焰风暴,对{target}造成攻击力{ap}%伤害,击退{bck}",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":350,"bck":100} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":450,"bck":100,"summon_count":2} },
@@ -725,7 +749,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"ap":120}, desc: "普通攻击造成 120% 攻击伤害" },
],
},
6302: { uuid: 6302, name: "治疗", lv: 1, cd: 8, ccd: 0, overrides: {"ap":30}, desc: "为{target}回复攻击力{ap}%生命",
6302: { uuid: 6302, name: "治疗", lv: 1, cd: UltCdSet[UltCdLv.VerySlow].cd, ccd: 0, overrides: {"ap":30}, desc: "为{target}回复攻击力{ap}%生命",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":40} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":50} },
@@ -751,7 +775,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"proc_skill":{"s_uuid":6502,"chance":10,"overrides":{"ap":5,"TGroup": TGroup.Self}}}, desc: "普通攻击有 10% 的概率为自己释放回春(5 秒恢复生命值的{ap}%)" },
],
},
6102: { uuid: 6102, lv: 1, cd: 8, ccd: 0, overrides: {"ap":250,"bck":30},
6102: { uuid: 6102, lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":250,"bck":30},
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":300,"bck":50} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":350,"bck":70} },
@@ -777,7 +801,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"ap":100,"bck_chance":10} },
],
},
6151: { uuid: 6151, lv: 1, cd: 8, ccd: 0, overrides: {"ap":70,"summon_count":5,"bck_chance":100},
6151: { uuid: 6151, lv: 1, cd: UltCdSet[UltCdLv.VeryFast].cd, ccd: 0, overrides: {"ap":70,"summon_count":5,"bck_chance":100},
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":80,"summon_count":5,"bck_chance":100} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"bck_chance":100,"ap":100,"summon_count":6} },
@@ -803,7 +827,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"proc_skill":{"s_uuid":6502,"chance":10,"overrides":{"ap":5}}}, desc: "普攻有 10% 概率,对自己释放回春(5 秒回复5% 生命)" },
],
},
6517: { uuid: 6517, name: "生命爆发", lv: 1, cd: 8, ccd: 0, overrides: {"buff_value":30,"buff_duration":10}, desc: "全体友方最大生命值提升{buff_value}%,持续{dur}秒",
6517: { uuid: 6517, name: "生命爆发", lv: 1, cd: UltCdSet[UltCdLv.VerySlow].cd, ccd: 0, overrides: {"buff_value":30,"buff_duration":10}, desc: "全体友方最大生命值提升{buff_value}%,持续{dur}秒",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"buff_value":40,"buff_duration":10}, desc: "全体友方最大生命值提升{buff_value}%,持续{dur}秒" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"buff_value":50,"buff_duration":15}, desc: "全体友方最大生命值提升{buff_value}%,持续{dur}秒" },
@@ -829,7 +853,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"proc_skill":{"s_uuid":6507,"chance":10,"overrides":{"buff_value":30,"TGroup": TGroup.Self}}} },
],
},
6201: { uuid: 6201, name: "飓风", lv: 1, cd: 8, ccd: 0, overrides: {"ap":100,"summon_count":2,"proc_skill":{"s_uuid":6507,"chance":20,"overrides":{"buff_value":20}}}, desc: "召唤 {summon_count} 道飓风攻击前方敌人,每道飓风造成 {ap}%伤害,每道飓风释放时有<color=#3CE66E>20</color>% 概率增加全体队友<color=#3CE66E>20</color>% 攻速",
6201: { uuid: 6201, name: "飓风", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":100,"summon_count":2,"proc_skill":{"s_uuid":6507,"chance":20,"overrides":{"buff_value":20}}}, desc: "召唤 {summon_count} 道飓风攻击前方敌人,每道飓风造成 {ap}%伤害,每道飓风释放时有<color=#3CE66E>20</color>% 概率增加全体队友<color=#3CE66E>20</color>% 攻速",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":100,"summon_count":3,"proc_skill":{"s_uuid":6507,"chance":20,"overrides":{"buff_value":20}}}, desc: "召唤 {summon_count} 道飓风攻击前方敌人,每道飓风造成 {ap}%伤害,每道飓风释放时有<color=#3CE66E>20</color>% 概率增加全体队友<color=#3CE66E>20</color>% 攻速" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":100,"summon_count":4,"proc_skill":{"s_uuid":6507,"chance":20,"overrides":{"buff_value":20}}}, desc: "召唤 {summon_count} 道飓风攻击前方敌人,每道飓风造成 {ap}%伤害,每道飓风释放时有<color=#3CE66E>20</color>% 概率增加全体队友<color=#3CE66E>20</color>% 攻速" },
@@ -853,7 +877,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"timed_buff_id":7029,"buff_value":10,"buff_chance":20} },
],
},
6515: { uuid: 6515, name: "荆棘护盾", lv: 1, cd: 8, ccd: 0, overrides: {"buff_value":20,"TGroup": TGroup.Ally,"hit_count":3,"buff_duration":5},
6515: { uuid: 6515, name: "荆棘护盾", lv: 1, cd: UltCdSet[UltCdLv.VerySlow].cd, ccd: 0, overrides: {"buff_value":20,"TGroup": TGroup.Ally,"hit_count":3,"buff_duration":5},
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"buff_value":25,"TGroup": TGroup.Ally,"hit_count":3,"buff_duration":10} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"buff_value":30,"buff_duration":10,"hit_count":3,"TGroup": TGroup.Ally} },
@@ -879,7 +903,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"timed_buff_id":7030,"buff_value":10,"buff_chance":20} },
],
},
6100: { uuid: 6100, name: "寒冰斩", lv: 1, cd: 8, ccd: 0, overrides: {"ap":200,"timed_buff_id":7030,"buff_value":50},
6100: { uuid: 6100, name: "寒冰斩", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":200,"timed_buff_id":7030,"buff_value":50},
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":250,"timed_buff_id":7030,"buff_value":50} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":350,"timed_buff_id":7030,"buff_value":80} },
@@ -903,7 +927,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"timed_debuff_id":7005,"debuff_value":30,"debuff_chance":30}, desc: "普通攻击有{debuff_chance}%概率使目标中毒(每0.5秒受到{debuff_value}点伤害,持续{dur}秒)" },
],
},
6150: { uuid: 6150, name: "万箭齐发·毒", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"timed_debuff_id":7005,"debuff_value":30,"debuff_chance":50,"icon":"4-Apply-Poison"}, desc: "毒箭如雨,对{target}造成攻击力{ap}%伤害,{debuff_chance}%概率使目标中毒(每0.5秒受到{debuff_value}点伤害,持续{dur}秒)",
6150: { uuid: 6150, name: "万箭齐发·毒", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":150,"timed_debuff_id":7005,"debuff_value":30,"debuff_chance":50,"icon":"4-Apply-Poison"}, desc: "毒箭如雨,对{target}造成攻击力{ap}%伤害,{debuff_chance}%概率使目标中毒(每0.5秒受到{debuff_value}点伤害,持续{dur}秒)",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":200,"buff_value":40,"buff_chance":60} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":250,"buff_value":60,"buff_chance":80,"hit_count":2}, desc: "毒箭如雨,对{target}造成攻击力{ap}%伤害,{buff_chance}%概率使目标中毒(每0.5秒受到{buff_value}点伤害,持续{dur}秒),每支箭可命中{hit_count}个目标" },
@@ -932,7 +956,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"crt":20,"proc_skill":{"s_uuid":6007,"chance":20,"overrides":{"crt":100}}}, desc: "普通攻击暴击率提升{crt}%,并有概率触发连射追箭(必定暴击)" },
],
},
6151: { uuid: 6151, name: "裂空箭雨", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"crt":30,"summon_count":5}, desc: "箭雨倾泻,对{target}造成攻击力{ap}%伤害,{crt}%概率暴击",
6151: { uuid: 6151, name: "裂空箭雨", lv: 1, cd: UltCdSet[UltCdLv.VeryFast].cd, ccd: 0, overrides: {"ap":150,"crt":30,"summon_count":5}, desc: "箭雨倾泻,对{target}造成攻击力{ap}%伤害,{crt}%概率暴击",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":200,"crt":50} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":250,"crt":70,"summon_count":6,"hit_count":2}, desc: "箭雨倾泻,对{target}造成攻击力{ap}%伤害,{crt}%概率暴击,每支箭可命中{hit_count}个目标" },
@@ -961,7 +985,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"timed_debuff_id":7008,"debuff_chance":30}, desc: "普通攻击有{debuff_chance}%概率使目标破甲(防御降低,持续{dur}秒)" },
],
},
6203: { uuid: 6203, name: "碎甲能量波", lv: 1, cd: 8, ccd: 0, overrides: {"ap":150,"timed_debuff_id":7008}, desc: "释放碎甲能量波,对{target}造成攻击力{ap}%伤害,并使目标破甲(防御降低,持续{dur}秒)",
6203: { uuid: 6203, name: "碎甲能量波", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":150,"timed_debuff_id":7008}, desc: "释放碎甲能量波,对{target}造成攻击力{ap}%伤害,并使目标破甲(防御降低,持续{dur}秒)",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":200} },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":250,"buff_value":-70}, desc: "释放碎甲能量波,对{target}造成攻击力{ap}%伤害,并使目标破甲加深(防御大幅降低,持续{dur}秒)" },
@@ -990,7 +1014,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"para":15}, desc: "普通攻击有{para}%概率麻痹敌人,减缓其技能冷却恢复" },
],
},
6203: { uuid: 6203, name: "雷霆裂空", lv: 1, cd: 8, ccd: 0, overrides: {"ap":200,"para":40}, desc: "释放雷霆裂空波,对{target}造成攻击力{ap}%伤害,{para}%概率麻痹敌人",
6203: { uuid: 6203, name: "雷霆裂空", lv: 1, cd: UltCdSet[UltCdLv.Normal].cd, ccd: 0, overrides: {"ap":200,"para":40}, desc: "释放雷霆裂空波,对{target}造成攻击力{ap}%伤害,{para}%概率麻痹敌人",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":250,"para":60}, desc: "释放雷霆裂空波,对{target}造成攻击力{ap}%伤害,{para}%概率麻痹敌人" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":300,"para":80,"hit_count":3}, desc: "释放雷霆裂空波,对{target}造成攻击力{ap}%伤害,可多次命中,{para}%概率麻痹敌人" },
@@ -1019,7 +1043,7 @@ export const HeroInfo: Record<number, heroInfo> = {
{ lv: 2, s_lv: SkillLv.Lv2, overrides: {"proc_skill":{"s_uuid":6516,"chance":20,"overrides":{"timed_buff_id":7028,"buff_value":10}}}, desc: "普通攻击概率凝聚荆棘护体(受击时反弹{buff_value}%所受伤害,持续{dur}秒)" },
],
},
6301: { uuid: 6301, name: "奥术圣壁", lv: 1, cd: 8, ccd: 0, overrides: {"TGroup": TGroup.Ally,"ap":20,"timed_buff_id":7027,"buff_value":10}, desc: "为全体友方施加生命最大值{ap}%的护盾,并附加荆棘(受击时反弹{buff_value}点伤害,持续{dur}秒)",
6301: { uuid: 6301, name: "奥术圣壁", lv: 1, cd: UltCdSet[UltCdLv.VerySlow].cd, ccd: 0, overrides: {"TGroup": TGroup.Ally,"ap":20,"timed_buff_id":7027,"buff_value":10}, desc: "为全体友方施加生命最大值{ap}%的护盾,并附加荆棘(受击时反弹{buff_value}点伤害,持续{dur}秒)",
lv_entries: [
{ lv: 8, s_lv: SkillLv.Lv2, overrides: {"ap":30,"buff_value":15}, desc: "为全体友方施加生命最大值{ap}%的护盾,并附加荆棘(受击时反弹{buff_value}点伤害,持续{dur}秒)" },
{ lv: 16, s_lv: SkillLv.Lv3, overrides: {"ap":40,"buff_value":20}, desc: "为全体友方施加生命最大值{ap}%的护盾,并附加荆棘(受击时反弹{buff_value}点伤害,持续{dur}秒)" },

View File

@@ -5,7 +5,7 @@
"name": "叠甲骑士",
"comment": "CSV导入:自身护盾+全体护盾",
"path": "hk1",
"rarity": 1,
"rarity": 3,
"roleKey": "Tank",
"growKey": "Tank",
"typeKey": "Melee",
@@ -40,8 +40,8 @@
{
"uuid": 6301,
"name": "魔法盾",
"cd": 8,
"cdExpr": null,
"cd": 10,
"cdExpr": "UltCdSet[UltCdLv.VerySlow].cd",
"overrides": {
"ap": 30
},
@@ -97,14 +97,15 @@
"name": "钢铁壁垒",
"icon": "46-Iron-Clad"
}
]
],
"fend": {}
},
{
"uuid": 5002,
"name": "易伤剑仙",
"comment": "CSV导入:击退压场+易伤放大;复刻酒仙",
"path": "hk3",
"rarity": 1,
"rarity": 3,
"roleKey": "Warrior",
"growKey": "Warrior",
"typeKey": "Melee",
@@ -140,7 +141,7 @@
"uuid": 6101,
"name": "气斩",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 150,
"timed_debuff_id": 7002,
@@ -199,14 +200,15 @@
"name": "不屈战意",
"icon": "29-Endure"
}
]
],
"fend": {}
},
{
"uuid": 5003,
"name": "眩晕暴击哥",
"comment": "CSV导入:高爆发+击晕收割;复刻齐天大圣",
"path": "hk5",
"rarity": 1,
"rarity": 3,
"roleKey": "Warrior",
"growKey": "Warrior",
"typeKey": "Melee",
@@ -242,7 +244,7 @@
"uuid": 6104,
"name": "开山斧",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 300,
"stun": 100
@@ -298,14 +300,15 @@
"name": "不屈战意",
"icon": "29-Endure"
}
]
],
"fend": {}
},
{
"uuid": 5004,
"name": "刀刀暴击",
"comment": "CSV导入:暴击/暴伤双光环乘区;复刻剑圣",
"path": "hc1",
"rarity": 1,
"rarity": 3,
"roleKey": "Assassin",
"growKey": "Assassin",
"typeKey": "Mid",
@@ -340,8 +343,8 @@
{
"uuid": 6100,
"name": "光闪",
"cd": 8,
"cdExpr": null,
"cd": 6,
"cdExpr": "UltCdSet[UltCdLv.VeryFast].cd",
"overrides": {
"ap": 150
},
@@ -399,14 +402,15 @@
"name": "致命本能",
"icon": "36-Guardian-Stance"
}
]
],
"fend": {}
},
{
"uuid": 5005,
"name": "出血贼",
"comment": "CSV导入:入场先手+受击格挡;复刻剑豪",
"path": "hc2",
"rarity": 1,
"rarity": 3,
"roleKey": "Assassin",
"growKey": "Assassin",
"typeKey": "Mid",
@@ -443,8 +447,8 @@
{
"uuid": 6103,
"name": "闪电斩",
"cd": 8,
"cdExpr": null,
"cd": 6,
"cdExpr": "UltCdSet[UltCdLv.VeryFast].cd",
"overrides": {
"ap": 150
},
@@ -501,14 +505,15 @@
"name": "致命本能",
"icon": "36-Guardian-Stance"
}
]
],
"fend": {}
},
{
"uuid": 5006,
"name": "冻箭哥",
"comment": "CSV导入:多重单体箭,带冰冻",
"path": "ha1",
"rarity": 1,
"rarity": 3,
"roleKey": "Archer",
"growKey": "Archer",
"typeKey": "Long",
@@ -544,7 +549,7 @@
"uuid": 6150,
"name": "万箭齐发·冰",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 150,
"frz": 30,
@@ -601,14 +606,15 @@
"name": "鹰眼锁定",
"icon": "27-Hawkeye"
}
]
],
"fend": {}
},
{
"uuid": 5007,
"name": "击退火女",
"comment": "CSV导入:群体击退/麻痹压场;复刻深渊女王",
"path": "hm1",
"rarity": 1,
"rarity": 3,
"roleKey": "Mage",
"growKey": "Mage",
"typeKey": "Long",
@@ -644,7 +650,7 @@
"uuid": 6200,
"name": "火焰喷射",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 250,
"bck": 100
@@ -701,14 +707,15 @@
"name": "奥术共鸣",
"icon": "100-Enchant-Magic"
}
]
],
"fend": {}
},
{
"uuid": 5008,
"name": "团疗奶爸",
"comment": "CSV导入:全体治疗续航+自身护盾",
"path": "hh1",
"rarity": 1,
"rarity": 3,
"roleKey": "Support",
"growKey": "Support",
"typeKey": "Long",
@@ -743,8 +750,8 @@
{
"uuid": 6302,
"name": "治疗",
"cd": 8,
"cdExpr": null,
"cd": 10,
"cdExpr": "UltCdSet[UltCdLv.VerySlow].cd",
"overrides": {
"ap": 30
},
@@ -798,14 +805,15 @@
"name": "守护之心",
"icon": "29-Endure"
}
]
],
"fend": {}
},
{
"uuid": 5009,
"name": "甲虫领主",
"comment": "",
"path": "hk2",
"rarity": 2,
"rarity": 3,
"roleKey": "Tank",
"growKey": "Tank",
"typeKey": "Melee",
@@ -846,7 +854,7 @@
"uuid": 6102,
"name": "",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 250,
"bck": 30
@@ -902,7 +910,8 @@
"name": "钢铁壁垒",
"icon": "46-Iron-Clad"
}
]
],
"fend": {}
},
{
"uuid": 5010,
@@ -943,8 +952,8 @@
{
"uuid": 6151,
"name": "",
"cd": 8,
"cdExpr": null,
"cd": 6,
"cdExpr": "UltCdSet[UltCdLv.VeryFast].cd",
"overrides": {
"ap": 70,
"summon_count": 5,
@@ -1004,7 +1013,8 @@
"name": "鹰眼锁定",
"icon": "27-Hawkeye"
}
]
],
"fend": {}
},
{
"uuid": 5011,
@@ -1050,8 +1060,8 @@
{
"uuid": 6517,
"name": "生命爆发",
"cd": 8,
"cdExpr": null,
"cd": 10,
"cdExpr": "UltCdSet[UltCdLv.VerySlow].cd",
"overrides": {
"buff_value": 30,
"buff_duration": 10
@@ -1109,7 +1119,8 @@
"name": "钢铁壁垒",
"icon": "46-Iron-Clad"
}
]
],
"fend": {}
},
{
"uuid": 5012,
@@ -1157,7 +1168,7 @@
"uuid": 6201,
"name": "飓风",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 100,
"summon_count": 2,
@@ -1233,7 +1244,8 @@
"name": "奥术共鸣",
"icon": "100-Enchant-Magic"
}
]
],
"fend": {}
},
{
"uuid": 5013,
@@ -1275,8 +1287,8 @@
{
"uuid": 6515,
"name": "荆棘护盾",
"cd": 8,
"cdExpr": null,
"cd": 10,
"cdExpr": "UltCdSet[UltCdLv.VerySlow].cd",
"overrides": {
"buff_value": 20,
"TGroup": "Ally",
@@ -1338,7 +1350,8 @@
"name": "守护之心",
"icon": "29-Endure"
}
]
],
"fend": {}
},
{
"uuid": 5014,
@@ -1383,7 +1396,7 @@
"uuid": 6100,
"name": "寒冰斩",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 200,
"timed_buff_id": 7030,
@@ -1441,14 +1454,15 @@
"name": "不屈战意",
"icon": "29-Endure"
}
]
],
"fend": {}
},
{
"uuid": 5015,
"name": "毒箭猎手",
"comment": "毒伤持续流:普攻淬毒叠层+毒雨铺DoT+攻击光环喂养毒伤",
"path": "ha3",
"rarity": 2,
"rarity": 3,
"roleKey": "Archer",
"growKey": "Archer",
"typeKey": "Long",
@@ -1488,7 +1502,7 @@
"uuid": 6150,
"name": "万箭齐发·毒",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 150,
"timed_debuff_id": 7005,
@@ -1565,7 +1579,8 @@
"name": "剧毒淬炼",
"icon": "27-Hawkeye"
}
]
],
"fend": {}
},
{
"uuid": 5016,
@@ -1616,8 +1631,8 @@
{
"uuid": 6151,
"name": "裂空箭雨",
"cd": 8,
"cdExpr": null,
"cd": 6,
"cdExpr": "UltCdSet[UltCdLv.VeryFast].cd",
"overrides": {
"ap": 150,
"crt": 30,
@@ -1688,7 +1703,8 @@
"name": "猎杀直觉",
"icon": "27-Hawkeye"
}
]
],
"fend": {}
},
{
"uuid": 5017,
@@ -1734,7 +1750,7 @@
"uuid": 6203,
"name": "碎甲能量波",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 150,
"timed_debuff_id": 7008
@@ -1802,7 +1818,8 @@
"name": "奥术共鸣",
"icon": "100-Enchant-Magic"
}
]
],
"fend": {}
},
{
"uuid": 5018,
@@ -1847,7 +1864,7 @@
"uuid": 6203,
"name": "雷霆裂空",
"cd": 8,
"cdExpr": null,
"cdExpr": "UltCdSet[UltCdLv.Normal].cd",
"overrides": {
"ap": 200,
"para": 40
@@ -1918,7 +1935,8 @@
"name": "奥术共鸣",
"icon": "100-Enchant-Magic"
}
]
],
"fend": {}
},
{
"uuid": 5019,
@@ -1969,8 +1987,8 @@
{
"uuid": 6301,
"name": "奥术圣壁",
"cd": 8,
"cdExpr": null,
"cd": 10,
"cdExpr": "UltCdSet[UltCdLv.VerySlow].cd",
"overrides": {
"TGroup": "Ally",
"ap": 20,
@@ -2042,7 +2060,8 @@
"name": "守护之心",
"icon": "29-Endure"
}
]
],
"fend": {}
}
]
}

View File

@@ -59,7 +59,7 @@
**大招 skills[1]**
- `uuid` ∈ `ROLE_ULT_SKILL[roleKey]`;辅助类底座(`SUPPORT_ULT` 列表)任意职业可作大招;
- `cd: 8`、`cdExpr: null`;
- `cdExpr` = `"UltCdSet[UltCdLv.<Tier>].cd"`(Tier ∈ VeryFast/Fast/Normal/Slow/VerySlow),`cd` 填对应数值(6/7/8/9/10);按技能效果类型选档:单体爆发=VeryFast、群体伤害/控制=Normal、全体增益/治疗/护盾=VerySlow,Fast/Slow 为中间细分档;
- `lv_entries` 两档:`{lv:8, s_lv:2, ...}`、`{lv:16, s_lv:3, ...}`。
**通用**
@@ -173,7 +173,8 @@
- 引用不存在的技能/光环/buff uuid 或 `path` → 编译或运行期才爆;
- 写独立 `revive` 字段 → 已废弃,复活走 dead 组;
- 触发技/光环解锁写 lv6、大招档位写 lv9 → 现行惯例 lv4 / lv8+lv16;
- 普攻用数值 cd 而不给 `cdExpr` → 丢失攻速档位语义(编辑器攻速下拉失效);
- 普攻/大招用数值 cd 而不给 `cdExpr` → 丢失档位语义(编辑器档位下拉失效,导出 heroSet.ts 变裸数字);
- 大招误用 `AtkSpeedSet` 作 `cdExpr` → 普攻档(0.75~1.5s)与大招档(6~10s)是两套体系,大招必须走 `UltCdSet`;
- 档位 overrides 全量复制基础档 → 浅合并下冗余且后续改基础值不生效;
- desc 与 overrides 数值脱节 → desc 模板只写 `{ap}` 等占位符,不要硬编码数字;
- 对敌技能 debuff 误用 `timed_buff_id` → buff 缺省挂施法者自身,会把减益挂到自己身上;应改用 `timed_debuff_id`(详见 §6.1);

View File

@@ -226,6 +226,7 @@ import { api } from './api'
import {
HERO_ROLES, GROW_TYPES, H_TYPES,
ROLE_ATK_SKILL, ROLE_ULT_SKILL, SUPPORT_ULT,
ROLE_DEFAULTS, ULT_CD_MAP,
defaultSkill,
} from './constants'
import SkillEditor from './components/SkillEditor.vue'
@@ -458,9 +459,10 @@ function addUltSkill() {
const first = ultSkillOptions.value[0]
if (!first) return ElMessage.warning('当前职业无可用大招底座')
const sk = defaultSkill(first.uuid)
// 大招提供 lv8(SkillLv.Lv2)/lv16(SkillLv.Lv3) 档位,不默认注入 summon_count
sk.cd = 8
sk.cdExpr = null
// 大招 CD 按职业默认档生成(UltCdSet 档位),提供 lv8(SkillLv.Lv2)/lv16(SkillLv.Lv3) 档位,不默认注入 summon_count
const ultCdConf = ULT_CD_MAP[ROLE_DEFAULTS[current.value.roleKey]?.ultCd] || ULT_CD_MAP.Normal
sk.cd = ultCdConf.cd
sk.cdExpr = ultCdConf.cdExpr
sk.overrides = {}
sk.lv_entries = [
{ lv: 8, s_lv: 2, overrides: {}, desc: '' },

View File

@@ -69,8 +69,13 @@
<el-option v-for="uuid in ultSkillOptions" :key="uuid" :label="`${uuid} ${skillName(uuid)}`" :value="uuid" />
</el-select>
</el-form-item>
<el-form-item label="大招CD档">
<el-select v-model="form.ultCd">
<el-option v-for="s in ULT_CDS" :key="s.key" :label="s.label" :value="s.key" />
</el-select>
</el-form-item>
</div>
<div class="muted" style="font-size: 11px">普攻自动按攻速档生成 cd/cdExpr + lv2 档(ap120);大招自动 cd:8 + lv8/lv16 档</div>
<div class="muted" style="font-size: 11px">普攻自动按攻速档生成 cd/cdExpr + lv2 档(ap120);大招自动按CD档生成 cd/cdExpr + lv8/lv16 档</div>
</div>
<div class="panel">
@@ -115,7 +120,7 @@
<script setup>
import { ref, computed } from 'vue'
import {
HERO_ROLES, H_TYPES, ATK_SPEEDS, ATK_SPEED_MAP,
HERO_ROLES, H_TYPES, ATK_SPEEDS, ATK_SPEED_MAP, ULT_CDS, ULT_CD_MAP,
ROLE_DEFAULTS, TRIGGER_GROUPS,
ROLE_ATK_SKILL, ROLE_ULT_SKILL, SUPPORT_ULT,
defaultHero,
@@ -141,6 +146,7 @@ function emptyForm() {
rarity: 4,
typeKey: 'Melee',
atkSpeed: 'Normal',
ultCd: 'Normal',
statBase: { hp: 0, ap: 0, def: 0 },
path: '',
atkUuid: null,
@@ -166,11 +172,12 @@ function presetTriggerLabel(p) {
function onRoleChange(roleKey) {
form.value.roleKey = roleKey
// 职业默认值:形态/攻速/稀有度/三维偏移(用户可微调)
// 职业默认值:形态/攻速/大招CD档/稀有度/三维偏移(用户可微调)
const d = ROLE_DEFAULTS[roleKey]
if (d) {
form.value.typeKey = d.typeKey
form.value.atkSpeed = d.atkSpeed
form.value.ultCd = d.ultCd || 'Normal'
form.value.rarity = d.rarity
form.value.statBase = { ...d.statBase }
}
@@ -209,12 +216,13 @@ function confirm() {
desc: '',
lv_entries: [{ lv: 2, s_lv: 2, overrides: { ap: 120 }, desc: '' }],
}
// 大招:cd:8 + lv8/lv16 档(对齐 addUltSkill 惯例)
// 大招:cd/cdExpr 按大招CD档生成;lv8/lv16 档(对齐 addUltSkill 惯例)
const ultCdConf = ULT_CD_MAP[f.ultCd] || ULT_CD_MAP.Normal
hero.skills[1] = {
uuid: f.ultUuid,
name: '',
cd: 8,
cdExpr: null,
cd: ultCdConf.cd,
cdExpr: ultCdConf.cdExpr,
overrides: {},
desc: '',
lv_entries: [

View File

@@ -12,9 +12,9 @@
<el-form-item label="显示名">
<el-input v-model="skill.name" placeholder="对外展示名(可选)" />
</el-form-item>
<el-form-item label="攻速档位">
<el-select v-model="cdSpeedKey" @change="onSpeedChange">
<el-option v-for="s in ATK_SPEEDS" :key="s.key" :label="s.label" :value="s.key" />
<el-form-item :label="isUlt ? '大招CD档位' : '攻速档位'">
<el-select v-model="cdTierKey" @change="onTierChange">
<el-option v-for="s in (isUlt ? ULT_CDS : ATK_SPEEDS)" :key="s.key" :label="s.label" :value="s.key" />
</el-select>
</el-form-item>
<el-form-item label="CD(秒)">
@@ -64,7 +64,7 @@
<script setup>
import { computed } from 'vue'
import { ATK_SPEEDS } from '../constants'
import { ATK_SPEEDS, ATK_SPEED_MAP, ULT_CDS, ULT_CD_MAP } from '../constants'
import OverrideEditor from './OverrideEditor.vue'
const props = defineProps({
@@ -89,27 +89,24 @@ if (props.basicLv2) {
}
}
const cdSpeedKey = refFromCd(props.skill)
function refFromCd(skill) {
// 简单映射回攻速档
return computed({
get() {
const found = ATK_SPEEDS.find((s) => Math.abs(cdOf(s.key) - skill.cd) < 0.001)
return found?.key || 'Normal'
},
set() {},
})
// 档位配置:大招(isUlt)走 UltCdSet 档(6~10s),普攻走 AtkSpeedSet 档(0.75~1.5s),两档数值不重叠可按 cd 反查
function tierConf(key) {
return (props.isUlt ? ULT_CD_MAP : ATK_SPEED_MAP)[key]
}
function cdOf(key) {
const map = { VeryFast: 0.75, Fast: 0.9, Normal: 1.05, Slow: 1.2, VerySlow: 1.5 }
return map[key] ?? 1.05
}
const cdTierKey = computed({
get() {
const list = props.isUlt ? ULT_CDS : ATK_SPEEDS
const found = list.find((s) => Math.abs(tierConf(s.key).cd - props.skill.cd) < 0.001)
return found?.key || 'Normal'
},
set() {},
})
function onSpeedChange(key) {
props.skill.cd = cdOf(key)
props.skill.cdExpr = `AtkSpeedSet[AtkSpeedLv.${key}].cd`
function onTierChange(key) {
const conf = tierConf(key)
props.skill.cd = conf.cd
props.skill.cdExpr = conf.cdExpr
}
function onCdManual() {
props.skill.cdExpr = null

View File

@@ -31,6 +31,15 @@ export const ATK_SPEEDS = [
{ key: 'VerySlow', label: '极慢(1.50s)', value: 5 },
]
// 大招 CD 档位(与 heroSet.ts UltCdSet 对齐):按技能效果类型分档交错释放节奏
export const ULT_CDS = [
{ key: 'VeryFast', label: '极频(6s) 单体爆发', value: 1 },
{ key: 'Fast', label: '高频(7s) 频繁压制', value: 2 },
{ key: 'Normal', label: '标准(8s) 群体伤害/控制', value: 3 },
{ key: 'Slow', label: '低频(9s) 中度团队增益', value: 4 },
{ key: 'VerySlow', label: '稀有(10s) 全体增益/治疗/护盾', value: 5 },
]
// 按职业映射普攻底座
export const ROLE_ATK_SKILL = {
Tank: [6004],
@@ -54,15 +63,15 @@ export const ROLE_ULT_SKILL = {
// 辅助类技能(任意职业可用作大招)
export const SUPPORT_ULT = [6301, 6302, 6407, 6412, 6413, 6414, 6415, 6416, 6501, 6514, 6515, 6516, 6517, 6518, 6519]
// 职业默认值(新建英雄向导用):形态/攻速/稀有度/三维偏移
// 职业默认值(新建英雄向导用):形态/攻速/大招CD档/稀有度/三维偏移
// 数值取自现有英雄样本中位数,向导内可手动微调
export const ROLE_DEFAULTS = {
Tank: { typeKey: 'Melee', atkSpeed: 'Slow', rarity: 4, statBase: { hp: 20, ap: 0, def: 10 } },
Warrior: { typeKey: 'Melee', atkSpeed: 'Slow', rarity: 4, statBase: { hp: 5, ap: 20, def: 5 } },
Assassin: { typeKey: 'Mid', atkSpeed: 'Fast', rarity: 4, statBase: { hp: 0, ap: 30, def: 0 } },
Archer: { typeKey: 'Long', atkSpeed: 'Normal', rarity: 4, statBase: { hp: 0, ap: 30, def: 0 } },
Mage: { typeKey: 'Long', atkSpeed: 'Slow', rarity: 4, statBase: { hp: -5, ap: 10, def: 0 } },
Support: { typeKey: 'Long', atkSpeed: 'Normal', rarity: 4, statBase: { hp: 10, ap: 20, def: 0 } },
Tank: { typeKey: 'Melee', atkSpeed: 'Slow', ultCd: 'VerySlow', rarity: 4, statBase: { hp: 20, ap: 0, def: 10 } },
Warrior: { typeKey: 'Melee', atkSpeed: 'Slow', ultCd: 'Normal', rarity: 4, statBase: { hp: 5, ap: 20, def: 5 } },
Assassin: { typeKey: 'Mid', atkSpeed: 'Fast', ultCd: 'VeryFast', rarity: 4, statBase: { hp: 0, ap: 30, def: 0 } },
Archer: { typeKey: 'Long', atkSpeed: 'Normal', ultCd: 'Normal', rarity: 4, statBase: { hp: 0, ap: 30, def: 0 } },
Mage: { typeKey: 'Long', atkSpeed: 'Slow', ultCd: 'Normal', rarity: 4, statBase: { hp: -5, ap: 10, def: 0 } },
Support: { typeKey: 'Long', atkSpeed: 'Normal', ultCd: 'VerySlow', rarity: 4, statBase: { hp: 10, ap: 20, def: 0 } },
}
// 攻速档 → cd 数值 / cdExpr 表达式 映射(向导生成普攻用)
@@ -74,6 +83,15 @@ export const ATK_SPEED_MAP = {
VerySlow: { cd: 1.5, cdExpr: 'AtkSpeedSet[AtkSpeedLv.VerySlow].cd' },
}
// 大招 CD 档 → cd 数值 / cdExpr 表达式 映射(向导/技能编辑器生成大招用,与 ULT_CDS 同源)
export const ULT_CD_MAP = {
VeryFast: { cd: 6, cdExpr: 'UltCdSet[UltCdLv.VeryFast].cd' },
Fast: { cd: 7, cdExpr: 'UltCdSet[UltCdLv.Fast].cd' },
Normal: { cd: 8, cdExpr: 'UltCdSet[UltCdLv.Normal].cd' },
Slow: { cd: 9, cdExpr: 'UltCdSet[UltCdLv.Slow].cd' },
VerySlow: { cd: 10, cdExpr: 'UltCdSet[UltCdLv.VerySlow].cd' },
}
// 触发组 key 列表(向导/模板管理共用)
export const TRIGGER_GROUPS = [
{ key: 'atking', label: 'atking 攻击后' },