From a522a27e204692ba0028957d6c2523cca92afe70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Wed, 3 Sep 2025 01:46:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(fight):=20=E4=BF=AE=E5=A4=8D=E9=A2=84?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=95=88=E6=9E=9C=E6=89=A7=E8=A1=8C=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将预处理效果的执行方式从直接调用 Exec 方法改为遍历 Effects 切片 - 通过遍历每个效果并调用其 Exec 方法,确保所有预处理效果都能正确执行 - 此修改解决了可能存在的逻辑错误,保证了战斗系统的公平性和准确性 --- logic/service/fight/fight.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/logic/service/fight/fight.go b/logic/service/fight/fight.go index c00097fb..94fa40c2 100644 --- a/logic/service/fight/fight.go +++ b/logic/service/fight/fight.go @@ -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)