refactor: 替换天赋系统为驻场英雄技能系统
1. 删除已废弃的TalentSet天赋配置文件 2. 重构英雄属性计算逻辑,改为使用驻场技能加成 3. 更新卡牌购买、刷新费用和出售收益的加成逻辑 4. 统一技能配置格式,修复代码格式问题 5. 新增驻场技能类型与配置,兼容原有天赋效果
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user