You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/docs/方案-英雄经验升级.md

44 lines
2.0 KiB

# 方案:英雄等级上限与经验升级
> **已废弃(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` 数组逐级消耗,满级后经验不再涨、等级不再变。
- 一塔最后一刀拿击杀经验;其它打过该怪的塔拿助攻经验。