去掉skillcom处理 buff skill只负责动画运行和碰撞伤害

This commit is contained in:
2025-08-12 10:31:01 +08:00
parent ca8bbd397b
commit 1273ec6e99
13 changed files with 166 additions and 443 deletions

View File

@@ -2,7 +2,7 @@ import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/O
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { BoxSet, FacSet } from "../common/config/BoxSet";
import { HType } from "../common/config/heroSet";
import { SkillSet } from "../common/config/SkillSet";
import { BuffAttr, SkillSet } from "../common/config/SkillSet";
import { smc } from "../common/SingletonModuleComp";
import { HeroViewComp } from "../hero/HeroViewComp";
import { SkillCom } from "./SkillCom";
@@ -86,79 +86,34 @@ export class Skill extends ecs.Entity {
return;
}
// 获取计算后的属性数据
let ap_data = this.get_ap(caster,dmg,uuid)
// 只设置必要的运行时属性,配置信息通过 SkillSet[uuid] 访问
Object.assign(SComp, {
// 核心标识
s_uuid: uuid,
// 位置和施法者信息
startPos: startPos,
targetPos: targetPos,
caster: caster,
group: caster.box_group,
fac: caster.fac,
// 计算后的战斗数据
ap: ap_data.ap,
caster_crit: ap_data.crit,
caster_crit_d: ap_data.crit_d,
puncture: ap_data.puncture,
puncture_damage: ap_data.puncture_damage,
burn_count: ap_data.burn_count,
burn_value: ap_data.burn_value,
stun_time: ap_data.stun_time,
stun_ratto: ap_data.stun_ratto,
frost_time: ap_data.frost_time,
frost_ratto: ap_data.frost_ratto,
// 技能数值
ap: caster.Attrs[BuffAttr.AP],
caster_crit: caster.Attrs[BuffAttr.CRITICAL],
caster_crit_d: caster.Attrs[BuffAttr.CRITICAL_DMG],
puncture: caster.Attrs[BuffAttr.PUNCTURE],
puncture_damage: caster.Attrs[BuffAttr.PUNCTURE_DMG],
burn_count: caster.Attrs[BuffAttr.BURN_COUNT],
burn_value: caster.Attrs[BuffAttr.BURN_VALUE],
stun_time: caster.Attrs[BuffAttr.STUN_TIME],
stun_ratio: caster.Attrs[BuffAttr.STUN_RATIO],
frost_time: caster.Attrs[BuffAttr.FROST_TIME],
frost_ratio: caster.Attrs[BuffAttr.FROST_RATIO],
debuff_up: caster.Attrs[BuffAttr.DEBUFF_UP],
debuff_value: caster.Attrs[BuffAttr.DEBUFF_VALUE],
debuff_count: caster.Attrs[BuffAttr.DEBUFF_COUNT],
});
this.add(SComp);
}
get_ap(view:HeroViewComp,dmg:number=0,uuid:number=0){
let ap=0
let crit=0
let crit_d=0
let buffap=1
let puncture=0
let puncture_damage=0
let burn_count=0
let burn_value=0
let stun_time=0
let stun_ratto=0
let frost_time=0
let frost_ratto=0
// 汇总DEBUFF_DECD并处理count值
let BUFF_ATK = 0
let DEBUFF_DEATK = 0
if(view.BUFF_ATKS.length>0){
for (let i = view.BUFF_ATKS.length - 1; i >= 0; i--) {
BUFF_ATK += view.BUFF_ATKS[i].value;
// 不再在这里减少duration改为在update中按时间减少
}
}
if(view.DEBUFF_DEATKS.length>0) {
for (let i = view.DEBUFF_DEATKS.length - 1; i >= 0; i--) {
DEBUFF_DEATK += view.DEBUFF_DEATKS[i].value;
// 不再在这里减少duration改为在update中按时间减少
}
}
let BUFF_AP=(100-DEBUFF_DEATK+BUFF_ATK+dmg)/100 //buff区 总加成
puncture =view.puncture
puncture_damage=view.puncture_damage
ap=view.ap*buffap*BUFF_AP*SkillSet[uuid].ap/100
crit=view.crit
crit_d=view.crit_d
burn_count=view.burn_count
burn_value=view.burn_value
stun_time=view.stun_time
stun_ratto=view.stun_ratto
frost_time=view.frost_time
frost_ratto=view.frost_ratto
return {ap,crit,crit_d,puncture,puncture_damage,burn_count,burn_value,stun_time,stun_ratto,frost_time,frost_ratto}
}
}