feat(talent): 重构天赋系统为三阶结构并实现全新UI

1.  重构天赋系统为一阶基础/二阶专精/三阶超强三阶结构,移除前置天赋要求改为阶位累计点数解锁
2.  新增阶位解锁校验逻辑与天赋点投入统计
3.  重做天赋UI为三阶Tab页签+迷你升级卡样式,支持状态展示与一键升级
4.  补充新的天赋配置与属性加成,更新天赋系统文档
5.  修复属性计算问题,新增暴击伤害与穿刺伤害加成支持
This commit is contained in:
pan
2026-08-25 16:29:11 +08:00
parent ac6fc21fb6
commit df519fdc4e
12 changed files with 3595 additions and 1165 deletions

View File

@@ -9,7 +9,7 @@ import { GameScoreStats } from "./config/HeroAttrs";
import { mLogger } from "./Logger";
import { gameDataSync } from "./GameDataSync";
import { HERO_UPGRADE_NEED_FRAGMENTS } from "./config/GameSet";
import { TalentSet, getTalentUpgradeCost } from "./config/TalentSet";
import { TalentSet, getTalentUpgradeCost, isTalentTierUnlocked } from "./config/TalentSet";
/**
* 用远程数据覆盖本地数据(统一方法)
@@ -418,7 +418,7 @@ export class SingletonModuleComp extends ecs.Comp {
/**
* 消耗天赋点升级天赋(升级即激活,下一局生效)
* @param uuid 天赋 uuid
* @returns 是否升级成功(天赋不存在/已满级/前置未满足/点数不足时返回 false)
* @returns 是否升级成功(天赋不存在/已满级/阶位未解锁/点数不足时返回 false)
*/
upgradeTalent(uuid: number): boolean {
const cfg = TalentSet[uuid];
@@ -426,12 +426,8 @@ export class SingletonModuleComp extends ecs.Comp {
if (!this.data.talents) this.data.talents = {};
const curLv = this.getTalentLv(uuid);
if (curLv >= cfg.max_lv) return false;
// 专精天赋的前置要求:前置天赋等级不足则禁止升级
if (cfg.requires) {
for (const req of cfg.requires) {
if (this.getTalentLv(req.uuid) < req.lv) return false;
}
}
// 阶位解锁:二/三阶天赋要求前一阶累计投入点数达标(一阶恒解锁)
if (!isTalentTierUnlocked(this.data.talents, cfg.tier)) return false;
const cost = getTalentUpgradeCost(curLv);
if (cost < 0 || this.getTalentPoints() < cost) return false;
this.data.talent_points -= cost;