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