fix(fight): 修复预处理效果执行方式

- 将预处理效果的执行方式从直接调用 Exec 方法改为遍历 Effects 切片
- 通过遍历每个效果并调用其 Exec 方法,确保所有预处理效果都能正确执行
- 此修改解决了可能存在的逻辑错误,保证了战斗系统的公平性和准确性
This commit is contained in:
2025-09-03 01:46:55 +08:00
parent a148946eb0
commit a522a27e20

View File

@@ -77,9 +77,12 @@ func NewFight(i *info.NoteReadyToFightInfo, plays *socket.Player) {
//物理和特殊,百分比和固定伤害也算,真实伤害不分类别,故直接扣血就行,不需要计算
if t.Category() == info.Category.PHYSICAL || t.Category() == info.Category.SPECIAL {
c.Effects.Exec(func(e info.Effect) bool {
return e.PreDamage() //执行预处理效果
})
for _, v := range c.Effects {
v.Exec(func(e info.Effect) bool {
return e.PreDamage() //执行预处理效果
})
}
// Apply pre-damage effects for pet sources
// battle.applyEffects(context, EffectTrigger.PreDamage)