refactor(talents): 重构天赋数值与消耗配置结构

- 将 TalentInfo 中的 `valuePerLevel` 和 `getValue` 方法替换为显式的 `values` 数组
- 将全局的 `costPerLevel` 数组替换为每个天赋独立的 `costs` 数组
- 更新 TalentsComp 逻辑以使用新的配置结构
This commit is contained in:
panw
2026-04-28 14:45:37 +08:00
parent 3b93ffdd7e
commit fb3b9054dd
2 changed files with 31 additions and 31 deletions

View File

@@ -14,10 +14,10 @@ export interface TalentInfo {
desc: string;
/** 最大等级 */
maxLevel: number;
/** 每级提升的数值 */
valuePerLevel: number;
/** 获取指定等级下的实际加成数值 */
getValue: (level: number) => number;
/** 每一级的加成数值从第1级到最大级 */
values: number[];
/** 升到每一级所需的消耗点数从第1级到最大级 */
costs: number[];
}
export const TalentConfig = {
@@ -28,80 +28,77 @@ export const TalentConfig = {
{ maxLevel: 30, expPerLevel: 200 }
],
// 天赋升级消耗点数 (第1级到第5级消耗)
costPerLevel: [1, 1, 2, 2, 3],
// 天赋列表
talents: [
{
id: 1, name: "攻击强化", icon: "⚔️",
desc: "所有英雄 ATK +{value}%",
maxLevel: 5,
valuePerLevel: 3,
getValue: (level: number) => level * 3
values: [3, 6, 9, 12, 15],
costs: [1, 1, 2, 2, 3]
},
{
id: 2, name: "生命强化", icon: "❤️",
desc: "所有英雄 HP +{value}%",
maxLevel: 5,
valuePerLevel: 5,
getValue: (level: number) => level * 5
values: [5, 10, 15, 20, 25],
costs: [1, 1, 2, 2, 3]
},
{
id: 3, name: "暴击强化", icon: "🔥",
desc: "所有英雄暴击率 +{value}%",
maxLevel: 5,
valuePerLevel: 2,
getValue: (level: number) => level * 2
values: [2, 4, 6, 8, 10],
costs: [1, 1, 2, 2, 3]
},
{
id: 4, name: "风怒强化", icon: "⚡",
desc: "所有英雄风怒率 +{value}%",
maxLevel: 5,
valuePerLevel: 2,
getValue: (level: number) => level * 2
values: [2, 4, 6, 8, 10],
costs: [1, 1, 2, 2, 3]
},
{
id: 5, name: "冰冻强化", icon: "❄️",
desc: "所有英雄冰冻率 +{value}%",
maxLevel: 5,
valuePerLevel: 2,
getValue: (level: number) => level * 2
values: [2, 4, 6, 8, 10],
costs: [1, 1, 2, 2, 3]
},
{
id: 6, name: "穿刺强化", icon: "🗡️",
desc: "所有英雄穿刺 +{value}",
maxLevel: 5,
valuePerLevel: 0.2,
getValue: (level: number) => Number((level * 0.2).toFixed(1))
values: [0.2, 0.4, 0.6, 0.8, 1.0],
costs: [1, 1, 2, 2, 3]
},
{
id: 7, name: "护盾强化", icon: "🛡️",
desc: "所有护盾效果 +{value}%",
maxLevel: 5,
valuePerLevel: 5,
getValue: (level: number) => level * 5
values: [5, 10, 15, 20, 25],
costs: [1, 1, 2, 2, 3]
},
{
id: 8, name: "采购优惠", icon: "🛒",
desc: "购买英雄 -{value}金",
maxLevel: 5,
valuePerLevel: 1,
getValue: (level: number) => level * 1
values: [1, 2, 3, 4, 5],
costs: [1, 1, 2, 2, 3]
},
{
id: 9, name: "刷新优惠", icon: "🔄",
desc: "刷新重抽 -{value}金",
maxLevel: 5,
valuePerLevel: 0.5,
getValue: (level: number) => Number((level * 0.5).toFixed(1))
values: [0.5, 1.0, 1.5, 2.0, 2.5],
costs: [1, 1, 2, 2, 3]
},
{
id: 10, name: "出售补贴", icon: "💰",
desc: "出售英雄返还 +{value}%金币",
maxLevel: 5,
valuePerLevel: 10,
getValue: (level: number) => level * 10
values: [10, 20, 30, 40, 50],
costs: [1, 1, 2, 2, 3]
}
] as TalentInfo[]
};