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.
44 lines
2.0 KiB
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` 数组逐级消耗,满级后经验不再涨、等级不再变。
|
|
- 一塔最后一刀拿击杀经验;其它打过该怪的塔拿助攻经验。
|
|
|