# 方案:英雄等级上限与经验升级 > **已废弃(2026-10-13)**:战斗内塔经验升级(`TowerExpHost`)已从代码移除;等级仍由合成与主动 buff 直接改盘。下文仅作历史参考。 > 状态:已落地(2026-09-03) ## 1. 等级上限 - 上限读 `Hero.level_limit`,经 `WeaponComposeConfigProvider.getMaxWeaponLevel`。 - 拖动合成、封神榜/授仙箓、经验升级、棋盘降级回升,一律 `min(上限, 新等级)`,禁止突破。 - `level_limit` 缺失或 ≤0:`warn` 后按 1,不静默当成无上限。 ## 2. 经验升级 - `Hero.exp[i]`:从等级 `i+1` 升到 `i+2` 所需经验。例:哪吒 `10,35,75,130` 对应 1→2 … 4→5。 - `exp` 为空(基础字刀枪棍弓等)不能靠经验升级,仍可拖字合成。 - 仅**已部署且有塔装载**的攻击单位吃经验;背包未上场的字不吃。 - 经验可结余,循环升级直到不够或已达上限。 ## 3. 击杀 / 助攻 | 条件 | 经验 | |------|------| | 该英雄任意伤害打出致命一击 | `Monster.exp` | | 对该怪造成过伤害但未拿击杀 | 常量表 id=9(`ConstNumType.AssistExp`,`para`) | - 伤害来源以 `DamageDealt.caster` 为准(普攻、技能、毒、火龙、哪吒冲锋等)。 - 无塔装载的召唤物/机制体不记击杀或助攻。 - 怪物表 id 由 `UnitMetaComp.unitDefId` 解析。 ## 4. 实现 | 模块 | 职责 | |------|------| | `TowerExpHost` | 伤害归属、杀/助加经验、连升 | | `MergeSession.applyBattleBuffUnitLevelUp` | 写 tile / composition.level,受上限截断 | | `setupTowerCombat` | 升级后重建战斗数值与技能 | | `DeploySync` | `MapUpgraded` 后对账等级与 HeroActor | ## 5. 验收 - 悟能/悟净/木吒等 `level_limit=3` 的英雄,任意升级方式不能到 4。 - 悟空等上限 5 的英雄经验按 `exp` 数组逐级消耗,满级后经验不再涨、等级不再变。 - 一塔最后一刀拿击杀经验;其它打过该怪的塔拿助攻经验。