259 lines
12 KiB
TypeScript
259 lines
12 KiB
TypeScript
import { BuffAttr } from "./SkillSet"
|
||
|
||
// 天赋品质枚举
|
||
export enum TalentQuality {
|
||
BLUE = 3, // 蓝色品质
|
||
PURPLE = 4, // 紫色品质
|
||
}
|
||
|
||
// 天赋类型枚举
|
||
export enum TalentType {
|
||
ATK = 1, // 攻击力
|
||
CRITICAL = 2, // 暴击率
|
||
CRITICAL_DMG = 3, // 暴击伤害
|
||
DODGE = 4, // 闪避
|
||
ATTACK_COUNT = 5, // 攻击次数
|
||
HP = 6, // 生命值
|
||
DEF = 7, // 免伤
|
||
PUNCTURE = 8, // 普通攻击穿透
|
||
ATK_CD = 9, // 攻击加速
|
||
SKILL_CD = 10, // 技能加速
|
||
FROST_RATIO = 11, // 冰冻概率
|
||
KNOCKBACK = 12, // 击退概率
|
||
STUN_RATTO = 13, // 击晕概率
|
||
REFLECT = 14, // 反伤
|
||
LIFESTEAL = 15, // 吸血
|
||
}
|
||
|
||
// 天赋配置接口
|
||
export interface TalentConfig {
|
||
uuid: number;
|
||
name: string;
|
||
path: string;
|
||
type: TalentType;
|
||
quality: TalentQuality;
|
||
buffType: BuffAttr;
|
||
value: number;
|
||
info: string;
|
||
icon?: string;
|
||
}
|
||
|
||
// 天赋列表配置
|
||
export const TalentList: { [key: number]: TalentConfig } = {
|
||
// ==================== 蓝色品质天赋 ====================
|
||
1001: {uuid:1001,name:"攻击强化",path:"3063",type:TalentType.ATK,quality:TalentQuality.BLUE,buffType:BuffAttr.ATK,value:30,info:"攻击力+30%"},
|
||
1002: {uuid:1002,name:"暴击强化",path:"3063",type:TalentType.CRITICAL,quality:TalentQuality.BLUE,buffType:BuffAttr.CRITICAL,value:15,info:"暴击率+15%"},
|
||
1003: {uuid:1003,name:"暴击伤害强化",path:"3063",type:TalentType.CRITICAL_DMG,quality:TalentQuality.BLUE,buffType:BuffAttr.CRITICAL_DMG,value:30,info:"暴击伤害+30%"},
|
||
1004: {uuid:1004,name:"闪避强化",path:"3063",type:TalentType.DODGE,quality:TalentQuality.BLUE,buffType:BuffAttr.DODGE,value:9,info:"闪避率+9%"},
|
||
1005: {uuid:1005,name:"多重攻击",path:"3063",type:TalentType.ATTACK_COUNT,quality:TalentQuality.BLUE,buffType:BuffAttr.DEBUFF_COUNT,value:1,info:"攻击次数+1,伤害减60%"},
|
||
1006: {uuid:1006,name:"生命强化",path:"3063",type:TalentType.HP,quality:TalentQuality.BLUE,buffType:BuffAttr.HP,value:60,info:"生命值+60%"},
|
||
1007: {uuid:1007,name:"免伤强化",path:"3063",type:TalentType.DEF,quality:TalentQuality.BLUE,buffType:BuffAttr.DEF,value:9,info:"免伤+9%"},
|
||
1008: {uuid:1008,name:"穿透强化",path:"3063",type:TalentType.PUNCTURE,quality:TalentQuality.BLUE,buffType:BuffAttr.PUNCTURE,value:1,info:"普通攻击穿透+1"},
|
||
1009: {uuid:1009,name:"攻击加速",path:"3063",type:TalentType.ATK_CD,quality:TalentQuality.BLUE,buffType:BuffAttr.ATK_CD,value:24,info:"攻击速度+24%"},
|
||
1010: {uuid:1010,name:"技能加速",path:"3063",type:TalentType.SKILL_CD,quality:TalentQuality.BLUE,buffType:BuffAttr.SKILL_CD,value:24,info:"技能冷却缩减+24%"},
|
||
1011: {uuid:1011,name:"冰冻强化",path:"3063",type:TalentType.FROST_RATIO,quality:TalentQuality.BLUE,buffType:BuffAttr.FROST_RATIO,value:6,info:"冰冻概率+6%"},
|
||
1012: {uuid:1012,name:"击退强化",path:"3063",type:TalentType.KNOCKBACK,quality:TalentQuality.BLUE,buffType:BuffAttr.KNOCKBACK,value:6,info:"击退概率+6%"},
|
||
1013: {uuid:1013,name:"击晕强化",path:"3063",type:TalentType.STUN_RATTO,quality:TalentQuality.BLUE,buffType:BuffAttr.STUN_RATTO,value:6,info:"击晕概率+6%"},
|
||
1014: {uuid:1014,name:"反伤强化",path:"3063",type:TalentType.REFLECT,quality:TalentQuality.BLUE,buffType:BuffAttr.REFLECT,value:12,info:"反伤+12%"},
|
||
1015: {uuid:1015,name:"吸血强化",path:"3063",type:TalentType.LIFESTEAL,quality:TalentQuality.BLUE,buffType:BuffAttr.POWER_UP,value:12,info:"吸血+12%"},
|
||
|
||
// ==================== 紫色品质天赋 ====================
|
||
2001: {uuid:2001,name:"攻击大师",path:"3063",type:TalentType.ATK,quality:TalentQuality.PURPLE,buffType:BuffAttr.ATK,value:50,info:"攻击力+50%"},
|
||
2002: {uuid:2002,name:"暴击大师",path:"3063",type:TalentType.CRITICAL,quality:TalentQuality.PURPLE,buffType:BuffAttr.CRITICAL,value:25,info:"暴击率+25%"},
|
||
2003: {uuid:2003,name:"暴击伤害大师",path:"3063",type:TalentType.CRITICAL_DMG,quality:TalentQuality.PURPLE,buffType:BuffAttr.CRITICAL_DMG,value:50,info:"暴击伤害+50%"},
|
||
2004: {uuid:2004,name:"闪避大师",path:"3063",type:TalentType.DODGE,quality:TalentQuality.PURPLE,buffType:BuffAttr.DODGE,value:15,info:"闪避率+15%"},
|
||
2005: {uuid:2005,name:"多重攻击大师",path:"3063",type:TalentType.ATTACK_COUNT,quality:TalentQuality.PURPLE,buffType:BuffAttr.DEBUFF_COUNT,value:1,info:"攻击次数+1,伤害减40%"},
|
||
2006: {uuid:2006,name:"生命大师",path:"3063",type:TalentType.HP,quality:TalentQuality.PURPLE,buffType:BuffAttr.HP,value:100,info:"生命值+100%"},
|
||
2007: {uuid:2007,name:"免伤大师",path:"3063",type:TalentType.DEF,quality:TalentQuality.PURPLE,buffType:BuffAttr.DEF,value:15,info:"免伤+15%"},
|
||
2008: {uuid:2008,name:"穿透大师",path:"3063",type:TalentType.PUNCTURE,quality:TalentQuality.PURPLE,buffType:BuffAttr.PUNCTURE,value:1,info:"普通攻击穿透+1"},
|
||
2009: {uuid:2009,name:"攻击加速大师",path:"3063",type:TalentType.ATK_CD,quality:TalentQuality.PURPLE,buffType:BuffAttr.ATK_CD,value:40,info:"攻击速度+40%"},
|
||
2010: {uuid:2010,name:"技能加速大师",path:"3063",type:TalentType.SKILL_CD,quality:TalentQuality.PURPLE,buffType:BuffAttr.SKILL_CD,value:40,info:"技能冷却缩减+40%"},
|
||
2011: {uuid:2011,name:"冰冻大师",path:"3063",type:TalentType.FROST_RATIO,quality:TalentQuality.PURPLE,buffType:BuffAttr.FROST_RATIO,value:10,info:"冰冻概率+10%"},
|
||
2012: {uuid:2012,name:"击退大师",path:"3063",type:TalentType.KNOCKBACK,quality:TalentQuality.PURPLE,buffType:BuffAttr.KNOCKBACK,value:10,info:"击退概率+10%"},
|
||
2013: {uuid:2013,name:"击晕大师",path:"3063",type:TalentType.STUN_RATTO,quality:TalentQuality.PURPLE,buffType:BuffAttr.STUN_RATTO,value:10,info:"击晕概率+10%"},
|
||
2014: {uuid:2014,name:"反伤大师",path:"3063",type:TalentType.REFLECT,quality:TalentQuality.PURPLE,buffType:BuffAttr.REFLECT,value:20,info:"反伤+20%"},
|
||
2015: {uuid:2015,name:"吸血大师",path:"3063",type:TalentType.LIFESTEAL,quality:TalentQuality.PURPLE,buffType:BuffAttr.POWER_UP,value:20,info:"吸血+20%"},
|
||
};
|
||
|
||
// 获取天赋配置
|
||
export const getTalentConfig = (uuid: number): TalentConfig | null => {
|
||
return TalentList[uuid] || null;
|
||
};
|
||
|
||
// 获取指定品质的所有天赋
|
||
export const getTalentsByQuality = (quality: TalentQuality): TalentConfig[] => {
|
||
return Object.values(TalentList).filter(talent => talent.quality === quality);
|
||
};
|
||
|
||
// 获取指定类型的所有天赋
|
||
export const getTalentsByType = (type: TalentType): TalentConfig[] => {
|
||
return Object.values(TalentList).filter(talent => talent.type === type);
|
||
};
|
||
|
||
// 获取所有蓝色品质天赋
|
||
export const getBlueTalents = (): TalentConfig[] => {
|
||
return getTalentsByQuality(TalentQuality.BLUE);
|
||
};
|
||
|
||
// 获取所有紫色品质天赋
|
||
export const getPurpleTalents = (): TalentConfig[] => {
|
||
return getTalentsByQuality(TalentQuality.PURPLE);
|
||
};
|
||
|
||
// 天赋流派配置
|
||
export const TalentBuilds = {
|
||
// 攻击系流派
|
||
HIGH_ATK_SPEED: {
|
||
name: "高攻高速流",
|
||
description: "4个高攻 + 2个高攻速",
|
||
talents: [1001, 1001, 1001, 1001, 1009, 1009],
|
||
blueTalents: [1001, 1001, 1001, 1001, 1009, 1009],
|
||
purpleTalents: [2001, 2001, 2001, 2001, 2009, 2009]
|
||
},
|
||
|
||
HIGH_ATK_CRIT: {
|
||
name: "高攻高暴击流",
|
||
description: "4个高攻 + 2个高暴击",
|
||
talents: [1001, 1001, 1001, 1001, 1002, 1002],
|
||
blueTalents: [1001, 1001, 1001, 1001, 1002, 1002],
|
||
purpleTalents: [2001, 2001, 2001, 2001, 2002, 2002]
|
||
},
|
||
|
||
CRIT_BUILD: {
|
||
name: "暴击流",
|
||
description: "4个暴击 + 2个暴击加成 (100%暴击率)",
|
||
talents: [1002, 1002, 1002, 1002, 1003, 1003],
|
||
blueTalents: [1002, 1002, 1002, 1002, 1003, 1003],
|
||
purpleTalents: [2002, 2002, 2002, 2002, 2003, 2003]
|
||
},
|
||
|
||
MULTI_ATTACK: {
|
||
name: "多段攻击流",
|
||
description: "4个攻击次数+1 + 2个攻击加速 (高频低伤)",
|
||
talents: [1005, 1005, 1005, 1005, 1009, 1009],
|
||
blueTalents: [1005, 1005, 1005, 1005, 1009, 1009],
|
||
purpleTalents: [2005, 2005, 2005, 2005, 2009, 2009]
|
||
},
|
||
|
||
// 防御系流派
|
||
TANK_BUILD: {
|
||
name: "坦克流",
|
||
description: "4个HP + 2个免伤 (超高生存)",
|
||
talents: [1006, 1006, 1006, 1006, 1007, 1007],
|
||
blueTalents: [1006, 1006, 1006, 1006, 1007, 1007],
|
||
purpleTalents: [2006, 2006, 2006, 2006, 2007, 2007]
|
||
},
|
||
|
||
DODGE_BUILD: {
|
||
name: "闪避流",
|
||
description: "4个闪避 + 2个HP (60%闪避率)",
|
||
talents: [1004, 1004, 1004, 1004, 1006, 1006],
|
||
blueTalents: [1004, 1004, 1004, 1004, 1006, 1006],
|
||
purpleTalents: [2004, 2004, 2004, 2004, 2006, 2006]
|
||
},
|
||
|
||
REFLECT_BUILD: {
|
||
name: "反伤流",
|
||
description: "4个反伤 + 2个HP (80%反伤)",
|
||
talents: [1014, 1014, 1014, 1014, 1006, 1006],
|
||
blueTalents: [1014, 1014, 1014, 1014, 1006, 1006],
|
||
purpleTalents: [2014, 2014, 2014, 2014, 2006, 2006]
|
||
},
|
||
|
||
LIFESTEAL_BUILD: {
|
||
name: "吸血流",
|
||
description: "4个吸血 + 2个攻击 (80%吸血)",
|
||
talents: [1015, 1015, 1015, 1015, 1001, 1001],
|
||
blueTalents: [1015, 1015, 1015, 1015, 1001, 1001],
|
||
purpleTalents: [2015, 2015, 2015, 2015, 2001, 2001]
|
||
},
|
||
|
||
// 控制系流派
|
||
FROST_CONTROL: {
|
||
name: "冰冻控制流",
|
||
description: "4个冰冻概率 + 2个技能加速 (40%冰冻率)",
|
||
talents: [1011, 1011, 1011, 1011, 1010, 1010],
|
||
blueTalents: [1011, 1011, 1011, 1011, 1010, 1010],
|
||
purpleTalents: [2011, 2011, 2011, 2011, 2010, 2010]
|
||
},
|
||
|
||
KNOCKBACK_CONTROL: {
|
||
name: "击退控制流",
|
||
description: "4个击退概率 + 2个攻击加速 (40%击退率)",
|
||
talents: [1012, 1012, 1012, 1012, 1009, 1009],
|
||
blueTalents: [1012, 1012, 1012, 1012, 1009, 1009],
|
||
purpleTalents: [2012, 2012, 2012, 2012, 2009, 2009]
|
||
},
|
||
|
||
STUN_CONTROL: {
|
||
name: "击晕控制流",
|
||
description: "4个击晕概率 + 2个攻击 (40%击晕率)",
|
||
talents: [1013, 1013, 1013, 1013, 1001, 1001],
|
||
blueTalents: [1013, 1013, 1013, 1013, 1001, 1001],
|
||
purpleTalents: [2013, 2013, 2013, 2013, 2001, 2001]
|
||
},
|
||
|
||
// 技能系流派
|
||
SKILL_BUILD: {
|
||
name: "技能流",
|
||
description: "4个技能加速 + 2个攻击 (160%技能加速)",
|
||
talents: [1010, 1010, 1010, 1010, 1001, 1001],
|
||
blueTalents: [1010, 1010, 1010, 1010, 1001, 1001],
|
||
purpleTalents: [2010, 2010, 2010, 2010, 2001, 2001]
|
||
},
|
||
|
||
// 混合流派
|
||
BALANCED_BUILD: {
|
||
name: "攻防平衡流",
|
||
description: "2个攻击 + 2个HP + 2个免伤",
|
||
talents: [1001, 1001, 1006, 1006, 1007, 1007],
|
||
blueTalents: [1001, 1001, 1006, 1006, 1007, 1007],
|
||
purpleTalents: [2001, 2001, 2006, 2006, 2007, 2007]
|
||
},
|
||
|
||
SPEED_BUILD: {
|
||
name: "速度流",
|
||
description: "4个攻击加速 + 2个技能加速 (全方位加速)",
|
||
talents: [1009, 1009, 1009, 1009, 1010, 1010],
|
||
blueTalents: [1009, 1009, 1009, 1009, 1010, 1010],
|
||
purpleTalents: [2009, 2009, 2009, 2009, 2010, 2010]
|
||
},
|
||
|
||
PENETRATION_CRIT: {
|
||
name: "穿透暴击流",
|
||
description: "2个穿透 + 2个暴击 + 2个暴击加成",
|
||
talents: [1008, 1008, 1002, 1002, 1003, 1003],
|
||
blueTalents: [1008, 1008, 1002, 1002, 1003, 1003],
|
||
purpleTalents: [2008, 2008, 2002, 2002, 2003, 2003]
|
||
},
|
||
|
||
SURVIVAL_DPS: {
|
||
name: "生存输出流",
|
||
description: "2个攻击 + 2个吸血 + 2个闪避",
|
||
talents: [1001, 1001, 1015, 1015, 1004, 1004],
|
||
blueTalents: [1001, 1001, 1015, 1015, 1004, 1004],
|
||
purpleTalents: [2001, 2001, 2015, 2015, 2004, 2004]
|
||
}
|
||
};
|
||
|
||
// 获取推荐天赋流派
|
||
export const getRecommendedBuilds = () => {
|
||
return Object.values(TalentBuilds);
|
||
};
|
||
|
||
// 获取指定流派的天赋配置
|
||
export const getBuildTalents = (buildName: string): number[] => {
|
||
const build = TalentBuilds[buildName as keyof typeof TalentBuilds];
|
||
return build ? build.talents : [];
|
||
};
|
||
|
||
// 天赋系统配置
|
||
export const TalentSystemConfig = {
|
||
maxTalents: 6, // 玩家最多拥有6个天赋
|
||
blueQualityMultiplier: 0.6, // 蓝色品质为基础值的60%(降低40%)
|
||
purpleQualityMultiplier: 1.0, // 紫色品质为基础值(最高品质)
|
||
talentCost: {
|
||
[TalentQuality.BLUE]: 1, // 蓝色天赋消耗1点
|
||
[TalentQuality.PURPLE]: 2 // 紫色天赋消耗2点
|
||
}
|
||
}; |