From 2d187e44744b5aad34f24d58c02965e1c777dc5c Mon Sep 17 00:00:00 2001 From: 1 <1@72wo.cn> Date: Wed, 24 Sep 2025 22:20:59 +0000 Subject: [PATCH] =?UTF-8?q?refactor(fight/effect):=20=E5=AE=9E=E7=8E=B0Eff?= =?UTF-8?q?ect9=E7=9A=84BeforeSkill=E9=80=BB=E8=BE=91=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9EMin=E6=B3=9B=E5=9E=8B=E5=87=BD=E6=95=B0=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=95=88=E6=9E=9C=E5=8F=A0=E5=8A=A0=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/utils/tomap.go | 7 +++++++ logic/service/fight/effect/effect_9.go | 20 +++++++++++++++++++- logic/service/fight/effect/effect_damage.go | 3 +++ logic/service/fight/input/nodemanger.go | 6 +++++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/common/utils/tomap.go b/common/utils/tomap.go index eb131f0d..9c15f8e0 100644 --- a/common/utils/tomap.go +++ b/common/utils/tomap.go @@ -35,3 +35,10 @@ func Max[T Number](a, b T) T { } return b } +// Max 泛型函数:接收两个同类型的 Number 参数,返回最大值 +func Min[T Number](a, b T) T { + if a < b { + return a + } + return b +} diff --git a/logic/service/fight/effect/effect_9.go b/logic/service/fight/effect/effect_9.go index edeffddc..5a98d6e7 100644 --- a/logic/service/fight/effect/effect_9.go +++ b/logic/service/fight/effect/effect_9.go @@ -1,6 +1,8 @@ package effect import ( + "blazing/common/utils" + "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" ) @@ -18,6 +20,22 @@ func init() { type Effect9 struct { node.EffectNode - skillid int //记录使用的技能 ,如果技能变了就删除effect + Skillid int //记录使用的技能 ,如果技能变了就删除effect UseSkillCount int //技能使用了多少次,切换后置0 } + +func (e *Effect9) BeforeSkill(opp *input.Input, skill *info.SkillEntity) { + if e.Skillid != 0 && skill.ID != e.Skillid { + e.NotALive() + e.UseSkillCount = 0 + return + + } + e.Skillid = skill.ID + add := e.EffectNode.SideEffectArgs[0] * e.UseSkillCount + + skill.Power += utils.Min(add, e.EffectNode.SideEffectArgs[1]) + + e.UseSkillCount++ + +} diff --git a/logic/service/fight/effect/effect_damage.go b/logic/service/fight/effect/effect_damage.go index a854b051..17e7ac68 100644 --- a/logic/service/fight/effect/effect_damage.go +++ b/logic/service/fight/effect/effect_damage.go @@ -48,6 +48,9 @@ func (e *Effect0) OnSkill(opp *input.Input, skill *info.SkillEntity) { }) e.Stack(e.Stack() * 2) + if e.MaxStack != 0 && e.Stack() > e.MaxStack { //限制最大伤害 + e.Stack(e.MaxStack) + } } } diff --git a/logic/service/fight/input/nodemanger.go b/logic/service/fight/input/nodemanger.go index 44ca3948..cfe9e984 100644 --- a/logic/service/fight/input/nodemanger.go +++ b/logic/service/fight/input/nodemanger.go @@ -112,12 +112,16 @@ func (c *Input) AddEffect(e *EffectID) { //TODO 先激活 // 如果已有同 ID 的效果,尝试叠加 - _, ok := c.Effects.Load(e.ID) + eff, ok := c.Effects.Load(e.ID) if !ok { // 否则新加入 c.Effects.Store(e.ID, e.Effect) return } + if !eff.Alive() { //如果不存活 + c.Effects.Store(e.ID, e.Effect) + return + } c.Effects.Range(func(key int, value Effect) bool { if e.ID == key {