122 lines
3.9 KiB
TypeScript
122 lines
3.9 KiB
TypeScript
/**
|
||
* 英雄升级经验配置表
|
||
* 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)
|
||
};
|
||
}
|
||
|