From f6570c7e40c60c238b689023ce6315e0abd1dfb7 Mon Sep 17 00:00:00 2001 From: xinian Date: Sun, 8 Mar 2026 16:04:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=8F=90=E5=8F=96=E6=95=88?= =?UTF-8?q?=E6=9E=9C493=E5=92=8C497=E5=88=B0=E7=8B=AC=E7=AB=8B=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logic/service/fight/effect/493.go | 39 +++++++++++++++ logic/service/fight/effect/497.go | 49 +++++++++++++++++++ logic/service/fight/effect/back.go1 | 76 ----------------------------- modules/player/service/egg.go | 2 +- 4 files changed, 89 insertions(+), 77 deletions(-) create mode 100644 logic/service/fight/effect/493.go create mode 100644 logic/service/fight/effect/497.go diff --git a/logic/service/fight/effect/493.go b/logic/service/fight/effect/493.go new file mode 100644 index 000000000..2b32c5aa7 --- /dev/null +++ b/logic/service/fight/effect/493.go @@ -0,0 +1,39 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +// 493 - m回合内若对手使用攻击技能则自身下n回合必定暴击 +type Effect493 struct { + node.EffectNode + can bool +} + +func (e *Effect493) Skill_Use_ex() bool { + if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Category() != info.Category.STATUS { + e.can = true + } + + return true +} +func (e *Effect493) SkillHit() bool { + if !e.can { + return true + } + + e.Ctx().SkillEntity.CritRate = 16 + + return true +} +func (e *Effect493) SetArgs(t *input.Input, a ...int) { + e.EffectNode.SetArgs(t, a...) + + e.EffectNode.Duration(a[0]) // 持续m回合 +} +func init() { + input.InitEffect(input.EffectType.Skill, 493, &Effect493{}) + +} diff --git a/logic/service/fight/effect/497.go b/logic/service/fight/effect/497.go new file mode 100644 index 000000000..b2251eca8 --- /dev/null +++ b/logic/service/fight/effect/497.go @@ -0,0 +1,49 @@ +package effect + +import ( + "blazing/common/utils" + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" + + "github.com/alpacahq/alpacadecimal" +) + +// 497 - 附加m点固定伤害,每次使用额外附加n点,最高k点,遇到天敌时效果翻倍 +type Effect497 struct { + node.EffectNode + Skillid int //记录使用的技能 ,如果技能变了就删除effect + UseSkillCount int //技能使用了多少次,切换后置0 +} + +func (e *Effect497) OnSkill() bool { + if e.Skillid != 0 && e.Ctx().SkillEntity.ID != e.Skillid { + e.Alive(false) + e.UseSkillCount = 0 + return true + + } + e.Skillid = e.Ctx().SkillEntity.ID + add := e.EffectNode.SideEffectArgs[0] + e.EffectNode.SideEffectArgs[1]*e.UseSkillCount + add = utils.Min(add, e.EffectNode.SideEffectArgs[2]) + // 附加固定伤害 + damageZone := &info.DamageZone{ + Type: info.DamageType.Fixed, + Damage: alpacadecimal.NewFromInt(int64(add)), + } + e.Ctx().Opp.Damage(e.Ctx().Our, damageZone) + + return true +} + +func (e *Effect497) SetArgs(t *input.Input, a ...int) { + e.EffectNode.SetArgs(t, a...) + +} +func init() { + t := &Effect497{} + t.Duration(-1) //次数类无限回合 + t.CanStack(true) //后续的不会顶掉这个效果 + input.InitEffect(input.EffectType.Skill, 497, t) + +} diff --git a/logic/service/fight/effect/back.go1 b/logic/service/fight/effect/back.go1 index a85a89f11..b66c8fe68 100644 --- a/logic/service/fight/effect/back.go1 +++ b/logic/service/fight/effect/back.go1 @@ -1,7 +1,6 @@ package effect import ( - element "blazing/common/data/Element" "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" @@ -1060,56 +1059,6 @@ func (e *Effect521) OnSkill() bool { return true } -// 497 - 附加m点固定伤害,每次使用额外附加n点,最高k点,遇到天敌时效果翻倍 -type Effect497 struct { - node.EffectNode - stackedDamage int - maxExtraDamage int -} - -func (e *Effect497) SkillHit_ex() bool { - // 基础伤害 - baseDamage := alpacadecimal.NewFromInt(int64(e.Args()[0].IntPart())) - - // 额外伤害 - extraDamage := alpacadecimal.NewFromInt(int64(e.stackedDamage)) - - // 总伤害 - totalDamage := baseDamage.Add(extraDamage) - - // 检查是否遇到天敌 - if e.isDisadvantageousMatch() { - // 遇到天敌,效果翻倍 - totalDamage = totalDamage.Mul(alpacadecimal.NewFromInt(2)) - } - - // 附加固定伤害 - damageZone := &info.DamageZone{ - Type: info.DamageType.Fixed, - Damage: totalDamage, - } - e.Ctx().Opp.Damage(e.Ctx().Our, damageZone) - - // 更新叠加伤害 - e.stackedDamage += int(e.Args()[1].IntPart()) - if e.stackedDamage > e.maxExtraDamage { - e.stackedDamage = e.maxExtraDamage - } - - return true -} - -func (e *Effect497) isDisadvantageousMatch() bool { - // 检查是否遇到天敌 - return e.Ctx().Our.CurrentPet.Type == element.ElementTypeFire && - e.Ctx().Opp.CurrentPet.Type == element.ElementTypeWater -} - -func (e *Effect497) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.maxExtraDamage = a[2] // 最高k点 -} - // 412 - 若自身体力小于1/n,则每次攻击不消耗PP值 type Effect412 struct { node.EffectNode @@ -1212,28 +1161,3 @@ func (e *Effect506) OnSkill() bool { return true } - -// 493 - m回合内若对手使用攻击技能则自身下n回合必定暴击 -type Effect493 struct { - node.EffectNode - critDuration int -} - -func (e *Effect493) Skill_Use_ex() bool { - if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Category() != info.Category.STATUS { - // 对手使用了攻击技能,设置下n回合必定暴击 - critEffect := e.Ctx().Our.InitEffect(input.EffectType.Status, int(info.PetStatus.MustCrit)) - if critEffect != nil { - critEffect.Duration(e.critDuration) // n回合 - e.Ctx().Our.AddEffect(e.Ctx().Our, critEffect) - } - } - - return true -} - -func (e *Effect493) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.critDuration = a[1] // n回合 - e.EffectNode.Duration(a[0]) // 持续m回合 -} diff --git a/modules/player/service/egg.go b/modules/player/service/egg.go index 7ccd7278d..ee80e2b22 100644 --- a/modules/player/service/egg.go +++ b/modules/player/service/egg.go @@ -26,7 +26,7 @@ func NewEggService(id uint32) *EggService { } func (s *EggService) Get() (out *model.Egg) { - s.dbm_fix(s.Model).Scan(&out) + s.dbm(s.Model).Scan(&out) if out != nil { BreedLeftTime := int64(out.Data.StartTime+out.CurEgg.EggID*uint32(time.Hour/1000000000)) - (time.Now().Unix()) if cool.Config.ServerInfo.IsVip != 0 {