feat: 新增天赋系统,实现局外天赋养成与战斗属性加成

- 新增天赋配置表与相关枚举、数据结构
- 新增全局单例的天赋数据管理接口,支持升级、重置、点数管理
- 新增天赋属性加成结算逻辑,支持全局天赋与职业专精天赋
- 新增治疗强化、buff强化属性与对应天赋支持
- 新增天赋更新事件,同步UI与战斗数据
- 在英雄加载、升级流程中接入天赋加成计算
This commit is contained in:
panFD
2026-08-24 22:58:27 +08:00
parent 61e33ff754
commit 2fc085c3aa
9 changed files with 416 additions and 3 deletions

View File

@@ -58,6 +58,7 @@ import { oops } from "db://oops-framework/core/Oops";
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
import { smc } from "../common/SingletonModuleComp";
import { HeroInfo, HType, resolveTriggerByLv, resolveFieldByLv, resolveReviveByLv, resolveSkillOverrides, calcGrowBonus } from "../common/config/heroSet";
import { applyTalentBonuses } from "../common/config/TalentSet";
import { HeroViewComp } from "../hero/HeroViewComp";
import { FacSet, FightSet } from "../common/config/GameSet";
import { MissionEconomy } from "./MissionEconomy";
@@ -2183,6 +2184,21 @@ export class MissionCardComp extends CCComp {
model.ap += apExtra;
}
// 天赋加成层(与 Hero.load 对齐):先重置天赋可能修改的字段,避免升级重算时重复叠加
// Why: ap/hp_max 已由上方公式从 base 重算(天然幂等),但 defense 与概率类字段是累加语义,必须先归零再注入
if (model.fac === FacSet.HERO) {
model.defense = hero.def;
model.critical = 0;
model.stun_chance = 0;
model.freeze_chance = 0;
model.wfuny = 0;
model.puncture_chance = 0;
model.knockback_distance = 0;
model.heal_power = 0;
model.buff_power = 0;
applyTalentBonuses(model, smc.getTalentLevels(), model.role);
}
// 血量按当前血线比例映射到新上限,保留升级前战斗状态
model.hp = Math.max(1, Math.floor(model.hp_max * Math.max(0, Math.min(1, hpRate))));