592 lines
16 KiB
TypeScript
592 lines
16 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;
|
||
type: TalentType;
|
||
quality: TalentQuality;
|
||
buffType: BuffAttr;
|
||
value: number;
|
||
cost: number;
|
||
maxLevel: number;
|
||
description: string;
|
||
icon?: string;
|
||
}
|
||
|
||
// 天赋列表配置
|
||
export const TalentList: { [key: number]: TalentConfig } = {
|
||
// ==================== 蓝色品质天赋 ====================
|
||
|
||
// 攻击系
|
||
1001: {
|
||
uuid: 1001,
|
||
name: "攻击强化",
|
||
type: TalentType.ATK,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.ATK,
|
||
value: 50,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "攻击力+50%"
|
||
},
|
||
|
||
1002: {
|
||
uuid: 1002,
|
||
name: "暴击强化",
|
||
type: TalentType.CRITICAL,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.CRITICAL,
|
||
value: 25,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "暴击率+25%"
|
||
},
|
||
|
||
1003: {
|
||
uuid: 1003,
|
||
name: "暴击伤害强化",
|
||
type: TalentType.CRITICAL_DMG,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.CRITICAL_DMG,
|
||
value: 50,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "暴击伤害+50%"
|
||
},
|
||
|
||
1004: {
|
||
uuid: 1004,
|
||
name: "闪避强化",
|
||
type: TalentType.DODGE,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.DODGE,
|
||
value: 15,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "闪避率+15%"
|
||
},
|
||
|
||
1005: {
|
||
uuid: 1005,
|
||
name: "多重攻击",
|
||
type: TalentType.ATTACK_COUNT,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.DEBUFF_COUNT, // 使用debuff_count来表示攻击次数
|
||
value: 1,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "攻击次数+1,伤害减40%"
|
||
},
|
||
|
||
1006: {
|
||
uuid: 1006,
|
||
name: "生命强化",
|
||
type: TalentType.HP,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.HP,
|
||
value: 100,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "生命值+100%"
|
||
},
|
||
|
||
1007: {
|
||
uuid: 1007,
|
||
name: "免伤强化",
|
||
type: TalentType.DEF,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.DEF,
|
||
value: 15,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "免伤+15%"
|
||
},
|
||
|
||
1008: {
|
||
uuid: 1008,
|
||
name: "穿透强化",
|
||
type: TalentType.PUNCTURE,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.PUNCTURE,
|
||
value: 1,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "普通攻击穿透+1"
|
||
},
|
||
|
||
1009: {
|
||
uuid: 1009,
|
||
name: "攻击加速",
|
||
type: TalentType.ATK_CD,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.ATK_CD,
|
||
value: 40,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "攻击速度+40%"
|
||
},
|
||
|
||
1010: {
|
||
uuid: 1010,
|
||
name: "技能加速",
|
||
type: TalentType.SKILL_CD,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.SKILL_CD,
|
||
value: 40,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "技能冷却缩减+40%"
|
||
},
|
||
|
||
1011: {
|
||
uuid: 1011,
|
||
name: "冰冻强化",
|
||
type: TalentType.FROST_RATIO,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.FROST_RATIO,
|
||
value: 10,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "冰冻概率+10%"
|
||
},
|
||
|
||
1012: {
|
||
uuid: 1012,
|
||
name: "击退强化",
|
||
type: TalentType.KNOCKBACK,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.KNOCKBACK,
|
||
value: 10,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "击退概率+10%"
|
||
},
|
||
|
||
1013: {
|
||
uuid: 1013,
|
||
name: "击晕强化",
|
||
type: TalentType.STUN_RATTO,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.STUN_RATTO,
|
||
value: 10,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "击晕概率+10%"
|
||
},
|
||
|
||
1014: {
|
||
uuid: 1014,
|
||
name: "反伤强化",
|
||
type: TalentType.REFLECT,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.REFLECT,
|
||
value: 20,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "反伤+20%"
|
||
},
|
||
|
||
1015: {
|
||
uuid: 1015,
|
||
name: "吸血强化",
|
||
type: TalentType.LIFESTEAL,
|
||
quality: TalentQuality.BLUE,
|
||
buffType: BuffAttr.POWER_UP, // 使用power_up来表示吸血效果
|
||
value: 20,
|
||
cost: 1,
|
||
maxLevel: 1,
|
||
description: "吸血+20%"
|
||
},
|
||
|
||
// ==================== 紫色品质天赋 ====================
|
||
// 紫色品质比蓝色品质强15%
|
||
|
||
2001: {
|
||
uuid: 2001,
|
||
name: "攻击大师",
|
||
type: TalentType.ATK,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.ATK,
|
||
value: 57, // 50 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "攻击力+57%"
|
||
},
|
||
|
||
2002: {
|
||
uuid: 2002,
|
||
name: "暴击大师",
|
||
type: TalentType.CRITICAL,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.CRITICAL,
|
||
value: 29, // 25 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "暴击率+29%"
|
||
},
|
||
|
||
2003: {
|
||
uuid: 2003,
|
||
name: "暴击伤害大师",
|
||
type: TalentType.CRITICAL_DMG,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.CRITICAL_DMG,
|
||
value: 57, // 50 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "暴击伤害+57%"
|
||
},
|
||
|
||
2004: {
|
||
uuid: 2004,
|
||
name: "闪避大师",
|
||
type: TalentType.DODGE,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.DODGE,
|
||
value: 17, // 15 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "闪避率+17%"
|
||
},
|
||
|
||
2005: {
|
||
uuid: 2005,
|
||
name: "多重攻击大师",
|
||
type: TalentType.ATTACK_COUNT,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.DEBUFF_COUNT,
|
||
value: 1,
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "攻击次数+1,伤害减35%" // 伤害减幅也相应减少
|
||
},
|
||
|
||
2006: {
|
||
uuid: 2006,
|
||
name: "生命大师",
|
||
type: TalentType.HP,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.HP,
|
||
value: 115, // 100 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "生命值+115%"
|
||
},
|
||
|
||
2007: {
|
||
uuid: 2007,
|
||
name: "免伤大师",
|
||
type: TalentType.DEF,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.DEF,
|
||
value: 17, // 15 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "免伤+17%"
|
||
},
|
||
|
||
2008: {
|
||
uuid: 2008,
|
||
name: "穿透大师",
|
||
type: TalentType.PUNCTURE,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.PUNCTURE,
|
||
value: 1,
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "普通攻击穿透+1,伤害不减"
|
||
},
|
||
|
||
2009: {
|
||
uuid: 2009,
|
||
name: "攻击加速大师",
|
||
type: TalentType.ATK_CD,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.ATK_CD,
|
||
value: 46, // 40 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "攻击速度+46%"
|
||
},
|
||
|
||
2010: {
|
||
uuid: 2010,
|
||
name: "技能加速大师",
|
||
type: TalentType.SKILL_CD,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.SKILL_CD,
|
||
value: 46, // 40 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "技能冷却缩减+46%"
|
||
},
|
||
|
||
2011: {
|
||
uuid: 2011,
|
||
name: "冰冻大师",
|
||
type: TalentType.FROST_RATIO,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.FROST_RATIO,
|
||
value: 12, // 10 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "冰冻概率+12%"
|
||
},
|
||
|
||
2012: {
|
||
uuid: 2012,
|
||
name: "击退大师",
|
||
type: TalentType.KNOCKBACK,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.KNOCKBACK,
|
||
value: 12, // 10 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "击退概率+12%"
|
||
},
|
||
|
||
2013: {
|
||
uuid: 2013,
|
||
name: "击晕大师",
|
||
type: TalentType.STUN_RATTO,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.STUN_RATTO,
|
||
value: 12, // 10 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "击晕概率+12%"
|
||
},
|
||
|
||
2014: {
|
||
uuid: 2014,
|
||
name: "反伤大师",
|
||
type: TalentType.REFLECT,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.REFLECT,
|
||
value: 23, // 20 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "反伤+23%"
|
||
},
|
||
|
||
2015: {
|
||
uuid: 2015,
|
||
name: "吸血大师",
|
||
type: TalentType.LIFESTEAL,
|
||
quality: TalentQuality.PURPLE,
|
||
buffType: BuffAttr.POWER_UP,
|
||
value: 23, // 20 * 1.15
|
||
cost: 2,
|
||
maxLevel: 1,
|
||
description: "吸血+23%"
|
||
},
|
||
};
|
||
|
||
// 获取天赋配置
|
||
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: 1.0, // 蓝色品质基础倍率
|
||
purpleQualityMultiplier: 1.15, // 紫色品质比蓝色强15%
|
||
talentCost: {
|
||
[TalentQuality.BLUE]: 1, // 蓝色天赋消耗1点
|
||
[TalentQuality.PURPLE]: 2 // 紫色天赋消耗2点
|
||
}
|
||
}; |