refactor: 替换天赋系统为驻场英雄技能系统

1.  删除已废弃的TalentSet天赋配置文件
2.  重构英雄属性计算逻辑,改为使用驻场技能加成
3.  更新卡牌购买、刷新费用和出售收益的加成逻辑
4.  统一技能配置格式,修复代码格式问题
5.  新增驻场技能类型与配置,兼容原有天赋效果
This commit is contained in:
pan
2026-06-03 10:19:52 +08:00
parent 612bcee5a1
commit f00b9496e2
6 changed files with 213 additions and 243 deletions

View File

@@ -225,7 +225,7 @@ export class HeroAttrsComp extends ecs.Comp {
}
/** 将驻场配置值统一换算成百分比数值,兼容 0.2 和 20 两种写法。 */
private getFieldPercentValue(type: FieldSkillType): number {
public static getFieldPercentValue(type: FieldSkillType): number {
const rawValue = FieldSkillHelper.getFieldSkillTotalValue(type);
if (Math.abs(rawValue) <= HeroAttrsComp.percentRateThreshold) {
return rawValue * 100;
@@ -236,30 +236,49 @@ export class HeroAttrsComp extends ecs.Comp {
/** 英雄实时暴击率 = 基础暴击率 + 驻场暴击率。 */
public getRuntimeCritical(): number {
if (this.fac !== FacSet.HERO) return this.critical;
return this.critical + this.getFieldPercentValue(FieldSkillType.HeroCrit);
return this.critical + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroCrit);
}
/** 英雄实时冰冻率 = 基础冰冻率 + 驻场冰冻率。 */
public getRuntimeFreezeChance(): number {
if (this.fac !== FacSet.HERO) return this.freeze_chance;
return this.freeze_chance + this.getFieldPercentValue(FieldSkillType.HeroFrost);
return this.freeze_chance + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroFrost);
}
/** 英雄实时穿透概率 = 基础穿透概率。 */
/** 英雄实时风怒概率 = 基础风怒 + 驻场风怒。 */
public getRuntimeWindFury(): number {
if (this.fac !== FacSet.HERO) return this.wfuny;
return this.wfuny + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroWindFury);
}
/** 英雄实时穿透概率 = 基础穿透 + 驻场穿透。 */
public getRuntimePunctureChance(): number {
return this.puncture_chance;
if (this.fac !== FacSet.HERO) return this.puncture_chance;
return this.puncture_chance + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroPuncture);
}
/** 英雄实时暴击伤害 = 基础额外暴伤 + 驻场暴伤。 */
public getRuntimeCritDamageBonus(): number {
if (this.fac !== FacSet.HERO) return this.crit_damage;
return this.crit_damage + this.getFieldPercentValue(FieldSkillType.HeroCritDamage);
return this.crit_damage + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroCritDamage);
}
/** 攻速加成通过缩短普通攻击技能 CD 生效,正值越高,攻击越快。 */
public getRuntimeAttackSpeedBonus(): number {
if (this.fac !== FacSet.HERO) return 0;
return this.getFieldPercentValue(FieldSkillType.HeroSpeed);
return HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroSpeed);
}
/** 英雄实时攻击力 = 基础攻击 × (1 + 驻场攻击百分比)。 */
public getRuntimeAp(baseAp: number): number {
if (this.fac !== FacSet.HERO) return baseAp;
return baseAp * (1 + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroAtk) / 100);
}
/** 英雄实时最大生命 = 基础生命 × (1 + 驻场生命百分比)。 */
public getRuntimeHp(baseHp: number): number {
if (this.fac !== FacSet.HERO) return baseHp;
return baseHp * (1 + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroHp) / 100);
}
/** 根据攻速加成换算实际攻击间隔,避免直接改写配置里的基础 CD。 */
@@ -369,13 +388,6 @@ export class HeroAttrsComp extends ecs.Comp {
this.dirty_hp = false;
this.dirty_shield = false;
}
/** 获取指定天赋的加成数值 —— 天赋系统已移除,方法保留为空 stub 防止编译错误 */
public static getTalentValue(_talentId: number): number {
return 0;
}
}
@ecs.register('HeroBuffSystem')