Files
heros/assets/script/game/common/config/ExpSet.ts
2025-10-28 23:48:04 +08:00

122 lines
3.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 英雄升级经验配置表
* ExpConf[lv] 返回从当前等级到下一级所需的经验值
* 1-30级:初始值20,每级提升约20%
* 31-100级:每级在前一级基础上+1000
*/
export const ExpConf: number[] = [
// Lv1-10
0,20, 24, 29, 35, 42, 50, 60, 72, 86, 103,
// Lv11-20
124, 149, 179, 215, 258, 310, 372, 446, 535, 642,
// Lv21-30
770, 924, 1109, 1331, 1597, 1916, 2299, 2759, 3311, 4000,
// Lv31-40
5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000,
// Lv41-50
15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000,
// Lv51-60
25000, 26000, 27000, 28000, 29000, 30000, 31000, 32000, 33000, 34000,
// Lv61-70
35000, 36000, 37000, 38000, 39000, 40000, 41000, 42000, 43000, 44000,
// Lv71-80
45000, 46000, 47000, 48000, 49000, 50000, 51000, 52000, 53000, 54000,
// Lv81-90
55000, 56000, 57000, 58000, 59000, 60000, 61000, 62000, 63000, 64000,
// Lv91-100
65000, 66000, 67000, 68000, 69000, 70000, 71000, 72000, 73000, 74000
];
/**
* 怪物击杀经验配置表
* MonExp[lv] 返回该等级怪物提供的经验值
*
* 设计规则:
* - 1-10级: 5个怪物 = ExpConf[lv-1],即 MonExp[lv] = ExpConf[lv-1] / 5
* - 11-20级: 10个怪物 = ExpConf[lv-1],即 MonExp[lv] = ExpConf[lv-1] / 10
* - 21-30级: 15个怪物 = ExpConf[lv-1],即 MonExp[lv] = ExpConf[lv-1] / 15
* - 31级及以上: 固定为30级的经验值即 MonExp[lv] = MonExp[30]
*
* 索引说明MonExp[1] 表示1级怪物的经验值
*/
export const MonExp: number[] = [
// Lv0-10
0, 4, 5, 6, 7, 8, 10, 12, 14, 17, 21,
// Lv11-20
12, 15, 18, 22, 26, 31, 37, 45, 54, 64,
// Lv21-30
51, 62, 74, 89, 106, 128, 153, 184, 221, 267,
// Lv31-40
267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
// Lv41-50
267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
// Lv51-60
267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
// Lv61-70
267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
// Lv71-80
267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
// Lv81-90
267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
// Lv91-100
267, 267, 267, 267, 267, 267, 267, 267, 267, 267
];
/**
* 等级属性成长系数配置
* 用于计算角色/怪物升级时各属性的增长值
*
* 计算公式:
* - 当前等级属性 = 基础属性 × (1 + 等级 × 成长系数)
* 例如10级角色HP = 基础HP × (1 + 10 × 0.08) = 基础HP × 1.8
*/
export const LevelAttrGrowthConfig = {
/** 生命值成长系数每级增长8% */
hp: 0.08,
/** 魔法值成长系数每级增长6% */
mp: 0.06,
/** 攻击力成长系数每级增长5% */
ap: 0.05,
/** 防御力成长系数每级增长4% */
def: 0.04
};
/**
* 根据等级计算属性值
* @param baseValue 基础属性值
* @param level 当前等级
* @param growthRate 成长系数
* @returns 计算后的属性值(向下取整)
*/
export function calculateAttrByLevel(baseValue: number, level: number, growthRate: number): number {
return Math.floor(baseValue * (1 + level * growthRate));
}
/**
* 根据等级计算所有属性
* @param baseHP 基础生命值
* @param baseMP 基础魔法值
* @param baseAP 基础攻击力
* @param baseDEF 基础防御力
* @param level 当前等级
* @returns 包含所有计算后属性的对象
*/
export function calculateAllAttrsByLevel(
baseHP: number,
baseMP: number,
baseAP: number,
baseDEF: number,
level: number
): { hp: number; mp: number; ap: number; def: number } {
return {
hp: calculateAttrByLevel(baseHP, level, LevelAttrGrowthConfig.hp),
mp: calculateAttrByLevel(baseMP, level, LevelAttrGrowthConfig.mp),
ap: calculateAttrByLevel(baseAP, level, LevelAttrGrowthConfig.ap),
def: calculateAttrByLevel(baseDEF, level, LevelAttrGrowthConfig.def)
};
}