diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index 0cceb03a..3747f82f 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -196,10 +196,6 @@ export function mergeSkillParams(config: SkillConfig, overrides?: SkillOverrides }; } -export const SkillUpList = { - 1001: { ap: 0, hit_count: 0, buff_ap: 0, buff_hp: 0, bck: 0, frz: 0, stun: 0, crt: 0, num: 0 } -} - /****** * * 射箭类技能 带暴击属性 diff --git a/assets/script/game/hero/SCastSystem.ts b/assets/script/game/hero/SCastSystem.ts index 1bcf3898..fc1a4688 100644 --- a/assets/script/game/hero/SCastSystem.ts +++ b/assets/script/game/hero/SCastSystem.ts @@ -2,7 +2,7 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec import { Vec3, Prefab, instantiate, tween, Node } from "cc"; import { HeroAttrsComp } from "./HeroAttrsComp"; import { HeroViewComp } from "./HeroViewComp"; -import { DTType, RType, SkillConfig, SkillKind, SkillSet, SkillUpList, TGroup, SkillOverrides, mergeSkillParams } from "../common/config/SkillSet"; +import { DTType, RType, SkillConfig, SkillKind, SkillSet, TGroup, SkillOverrides, mergeSkillParams } from "../common/config/SkillSet"; import { Skill } from "../skill/Skill"; import { smc } from "../common/SingletonModuleComp"; import { HeroDisVal, HeroInfo, HType } from "../common/config/heroSet"; @@ -90,9 +90,8 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate targetEids = this.collectFriendlyTargetEids(FacSet.HERO, undefined, true); // 获取所有英雄阵营的目标 } - const sUp = SkillUpList[s_uuid] ? SkillUpList[s_uuid] : SkillUpList[1001]; - // 优先读 overrides.num(技能卡差异化多发),兜底 SkillUpList.num,限制在 [0, 2] - const cNum = Math.min(2, Math.max(0, Math.floor(overrides?.num ?? sUp.num ?? 0))); + // 多发次数由 overrides.num 提供(技能卡差异化多发),限制在 [0, 2] + const cNum = Math.min(2, Math.max(0, Math.floor(overrides?.num ?? 0))); const castTimes = 1 + cNum; // 构造一个模拟的 HeroAttrsComp 用于数值计算,只包含基础卡牌伤害计算所需的属性 @@ -274,9 +273,8 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate } } - const sUp = SkillUpList[s_uuid] ? SkillUpList[s_uuid] : SkillUpList[1001]; - // 优先读 overrides.num(技能卡差异化多发),兜底 SkillUpList.num,限制在 [0, 2] - const cNum = Math.min(2, Math.max(0, Math.floor(overrides?.num ?? sUp.num ?? 0))); + // 多发次数由 overrides.num 提供(技能卡差异化多发),限制在 [0, 2] + const cNum = Math.min(2, Math.max(0, Math.floor(overrides?.num ?? 0))); const castTimes = 1 + cNum; let val = "" if (castTimes > 1) { @@ -345,9 +343,8 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate const skillLv = castPlan.skillLv; const overrides = castPlan.overrides; let config = SkillSet[s_uuid]; - const sUp = SkillUpList[s_uuid] ? SkillUpList[s_uuid] : SkillUpList[1001]; - // 优先读 overrides.num(技能卡差异化多发),兜底 SkillUpList.num,限制在 [0, 2] - const cNum = Math.min(2, Math.max(0, Math.floor(overrides?.num ?? sUp.num ?? 0))); + // 多发次数由 overrides.num 提供(技能卡差异化多发),限制在 [0, 2] + const cNum = Math.min(2, Math.max(0, Math.floor(overrides?.num ?? 0))); if (!config) return; config = mergeSkillParams(config, overrides); @@ -448,19 +445,19 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate */ private applyFriendlySkillEffects(_s_uuid: number, _skillLv: number, config: SkillConfig, _heroView: HeroViewComp, _cAttrsComp: HeroAttrsComp, targets: HeroViewComp[], _targetPos: Vec3 | null, isCardSkill: boolean = false) { const kind = config.kind ?? SkillKind.Support; - const sUp = SkillUpList[_s_uuid] ?? SkillUpList[1001]; - const sAp = config.ap + sUp.ap * _skillLv; - const sHit = config.hit_count + sUp.hit_count * _skillLv; + // 技能成长数值已由 SkillConfig/SkillOverrides 提供,无需再叠加 SkillUpList + const sAp = config.ap; + const sHit = config.hit_count; const applyTargets = kind === SkillKind.Heal ? this.pickHealTargetsByMostMissingHp(targets, sHit) : this.pickRandomFriendlyTargets(targets, sHit); for (const target of applyTargets) { - this.applyActualFriendlyEffect(target, kind, sAp, _cAttrsComp, config, sUp, _skillLv); + this.applyActualFriendlyEffect(target, kind, sAp, _cAttrsComp, config, _skillLv); } } - private applyActualFriendlyEffect(target: HeroViewComp, kind: SkillKind, sAp: number, _cAttrsComp: HeroAttrsComp, config: SkillConfig, sUp: any, _skillLv: number = 1) { + private applyActualFriendlyEffect(target: HeroViewComp, kind: SkillKind, sAp: number, _cAttrsComp: HeroAttrsComp, config: SkillConfig, _skillLv: number = 1) { if (!target.ent) return; const model = target.ent.get(HeroAttrsComp); if (!model || model.is_dead) return; @@ -482,8 +479,7 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate const addShield = Math.max(0, Math.floor(sAp)); model.add_shield(addShield); } else if (kind === SkillKind.Gold) { - const baseGold = config.gold ?? config.ap; - const addGold = baseGold + (sUp.ap * _skillLv); + const addGold = config.gold ?? config.ap; if (addGold > 0) { MissionEconomy.addCoin(addGold); } @@ -507,16 +503,8 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate return; } - const baseValue = config.ap; - let upgradeValue = 0; - - // 根据 buff 类型选择对应的升级加成 - if (config.buff_type === Attrs.ap) upgradeValue = sUp.buff_ap || 0; - else if (config.buff_type === Attrs.hp_max) upgradeValue = sUp.buff_hp || 0; - else if (config.buff_type === Attrs.critical) upgradeValue = sUp.crt || 0; - // 如果后续有冰冻、击晕等,在这里加上对应的 sUp 字段即可,如 sUp.frz / sUp.stun - - const totalBuffValue = baseValue + upgradeValue; + // 永久 buff 的数值直接取 config.ap(已由 SkillConfig/SkillOverrides 提供最终值) + const totalBuffValue = config.ap; switch (config.buff_type) { case Attrs.ap: diff --git a/assets/script/game/skill/Skill.ts b/assets/script/game/skill/Skill.ts index 368745f0..e41f14b5 100644 --- a/assets/script/game/skill/Skill.ts +++ b/assets/script/game/skill/Skill.ts @@ -1,6 +1,6 @@ import { BoxCollider2D, instantiate, Node, Prefab, v3, Vec3, NodePool } from "cc"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; -import { EType, SkillSet, SkillUpList, SkillOverrides, mergeSkillParams } from "../common/config/SkillSet"; +import { EType, SkillSet, SkillOverrides, mergeSkillParams } from "../common/config/SkillSet"; import { oops } from "db://oops-framework/core/Oops"; import { HeroAttrsComp } from "../hero/HeroAttrsComp"; import { Attrs } from "../common/config/HeroAttrs"; @@ -203,13 +203,13 @@ export class Skill extends ecs.Entity { sDataCom.group = caster.box_group sDataCom.casterEid = caster.ent.eid sDataCom.Attrs = {}; - const SUp = SkillUpList[s_uuid] ? SkillUpList[s_uuid] : SkillUpList[1001]; - const sCrt = (config.crt ?? 0) + (SUp.crt * skill_lv); - const sFrz = (config.frz ?? 0) + (SUp.frz * skill_lv); - const sStun = (config.stun ?? 0) + (SUp.stun * skill_lv); - const sBck = (config.bck ?? 0) + (SUp.bck * skill_lv); - const sAp = config.ap + (SUp.ap * skill_lv); - const sHit = config.hit_count + (SUp.hit_count * skill_lv); + // 技能成长数值已由 SkillConfig/SkillOverrides 提供(crt/frz/stun/bck/ap/hit_count),无需再叠加 SkillUpList + const sCrt = config.crt ?? 0; + const sFrz = config.frz ?? 0; + const sStun = config.stun ?? 0; + const sBck = config.bck ?? 0; + const sAp = config.ap; + const sHit = config.hit_count; sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.getFinalAp() * sAp / 100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100,不然会出现ap为90%变0 sDataCom.Attrs[Attrs.critical] = cAttrsComp.getFinalCritical() + sCrt; sDataCom.Attrs[Attrs.critical_damage] = cAttrsComp.getFinalCritDamage();