refactor(hero): 重构英雄数值系统,支持品质系数与12级职业属性加成
1. 调整英雄最大等级为99,实现近似无限升级 2. 新增防御属性加成系统,补充def_bonus相关配置与计算 3. 引入英雄品质系数机制,相邻品质基础属性相差5% 4. 新增12级职业属性专项加成:坦克加防、战士辅助加血、输出加攻 5. 更新英雄设计文档与配置示例,统一数值计算逻辑 6. 重构成长计算函数,支持防御属性成长与加成
This commit is contained in:
@@ -54,7 +54,7 @@ import { MissSkillsComp } from "./MissSkillsComp";
|
||||
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 { HeroInfo, HType, resolveTriggerByLv, resolveFieldByLv, resolveReviveByLv, resolveSkillOverrides, calcGrowBonus, getHeroQualityCoef, getEffectiveStats, HERO_LV12_SPECIAL_LV, HERO_LV12_BASE_LV, HERO_LV12_SPECIAL_ATTR } from "../common/config/heroSet";
|
||||
import { applyTalentBonuses } from "../common/config/TalentSet";
|
||||
import { HeroViewComp } from "../hero/HeroViewComp";
|
||||
import { FacSet, FightSet } from "../common/config/GameSet";
|
||||
@@ -2151,9 +2151,10 @@ export class MissionCardComp extends CCComp {
|
||||
const hpRate = model.hp_max > 0 ? model.hp / model.hp_max : 1;
|
||||
model.lv = nextLv;
|
||||
|
||||
// 同步 base 快照(与 Hero.load 同公式:固定基础值,成长由 grow_type 指数递增提供)
|
||||
const base_ap = hero.ap;
|
||||
const base_hp = hero.hp;
|
||||
// 同步 base 快照(与 Hero.load 同公式:固定基础值 × 品质系数,成长由 grow_type 线性递增提供)
|
||||
const qualityCoef = getHeroQualityCoef(hero.card_lv ?? 1);
|
||||
const base_ap = Math.round(hero.ap * qualityCoef);
|
||||
const base_hp = Math.round(hero.hp * qualityCoef);
|
||||
model.base_ap = base_ap;
|
||||
model.base_hp = base_hp;
|
||||
|
||||
@@ -2166,7 +2167,7 @@ export class MissionCardComp extends CCComp {
|
||||
model.hp_max = base_hp;
|
||||
}
|
||||
|
||||
// 按 ≤nextLv 累加:成长类型每级递增 + hp_bonus/ap_bonus 一次性奖励(沿用 Hero.load 的加法区规则)
|
||||
// 按 ≤nextLv 累加:成长类型每级递增 + hp/ap/def_bonus 一次性奖励(沿用 Hero.load 的加法区规则)
|
||||
const grow = calcGrowBonus(hero, nextLv);
|
||||
model.hp_max += grow.hp;
|
||||
model.ap += grow.ap;
|
||||
@@ -2184,7 +2185,20 @@ export class MissionCardComp extends CCComp {
|
||||
// 天赋加成层(与 Hero.load 对齐):先重置天赋可能修改的字段,避免升级重算时重复叠加
|
||||
// Why: ap/hp_max 已由上方公式从 base 重算(天然幂等),但 defense 与概率类字段是累加语义,必须先归零再注入
|
||||
if (model.fac === FacSet.HERO) {
|
||||
model.defense = hero.def;
|
||||
// defense 从品质系数后的基础值重算,叠加 def 成长 + def_bonus + lv12 专项,幂等
|
||||
let base_def = Math.round(hero.def * qualityCoef) + grow.def;
|
||||
if (model.def_bonus) {
|
||||
for (const e of model.def_bonus) { if (e.lv <= nextLv) base_def += e.value; }
|
||||
}
|
||||
// lv12 职业属性专项:达到 12 级时按职业对单项基础属性 +50%(基数为 lv11 有效值)
|
||||
if (nextLv >= HERO_LV12_SPECIAL_LV && model.role !== undefined) {
|
||||
const lv11 = getEffectiveStats(hero, HERO_LV12_BASE_LV);
|
||||
const attr = HERO_LV12_SPECIAL_ATTR[model.role];
|
||||
if (attr === "def") base_def += Math.round(lv11.def * 0.5);
|
||||
else if (attr === "hp") model.hp_max += Math.round(lv11.hp * 0.5);
|
||||
else if (attr === "ap") model.ap += Math.round(lv11.ap * 0.5);
|
||||
}
|
||||
model.defense = base_def;
|
||||
model.critical = 0;
|
||||
model.critical_damage = 0;
|
||||
model.stun_chance = 0;
|
||||
|
||||
Reference in New Issue
Block a user