From bf2325e2efd7012d824540e5d6ea3f46ff6674dd Mon Sep 17 00:00:00 2001 From: xinian Date: Sat, 7 Mar 2026 15:15:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E5=8F=8A=E5=AE=A0=E7=89=A9=E6=80=A7=E5=88=AB?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logic/service/fight/effect/effect_413.go | 37 ++++++++++++++++ logic/service/fight/effect/effect_426.go | 43 +++++++++++++++++++ logic/service/fight/effect/effect_82.go | 32 ++++++++++++++ .../fight/effect/effect_power_doblue.go | 2 +- modules/player/model/pet.go | 2 +- 5 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 logic/service/fight/effect/effect_413.go create mode 100644 logic/service/fight/effect/effect_426.go create mode 100644 logic/service/fight/effect/effect_82.go diff --git a/logic/service/fight/effect/effect_413.go b/logic/service/fight/effect/effect_413.go new file mode 100644 index 00000000..6d96887d --- /dev/null +++ b/logic/service/fight/effect/effect_413.go @@ -0,0 +1,37 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +func init() { + + input.InitEffect(input.EffectType.Skill, 413, &Effect413{ + EffectNode: node.EffectNode{}, + }) + +} + +type Effect413 struct { + node.EffectNode +} + +func (e *Effect413) OnSkill() bool { + var isprop bool + for _, v := range e.Ctx().Opp.Prop { + if v > 0 { + isprop = true + } + } + + if isprop { + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ + Type: info.DamageType.Fixed, + Damage: e.Ctx().Opp.CurrentPet.GetHP().Div(e.Args()[0]), + }) + } + + return true +} diff --git a/logic/service/fight/effect/effect_426.go b/logic/service/fight/effect/effect_426.go new file mode 100644 index 00000000..2015c61f --- /dev/null +++ b/logic/service/fight/effect/effect_426.go @@ -0,0 +1,43 @@ +package effect + +import ( + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +func init() { + t := &Effect426{ + EffectNode: node.EffectNode{}, + } + + input.InitEffect(input.EffectType.Skill, 426, t) + +} + +type Effect426 struct { + node.EffectNode +} + +// 默认添加回合 +func (e *Effect426) SetArgs(t *input.Input, a ...int) { + + e.EffectNode.SetArgs(t, a...) + e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) + +} + +func (e *Effect426) SkillHit_ex() bool { + + //fmt.Println(e.Ctx().SkillEntity) + if e.Ctx().SkillEntity == nil { + return true + } + success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) + if !success { + return true + } + + e.Ctx().SkillEntity.SetMiss() + + return true +} diff --git a/logic/service/fight/effect/effect_82.go b/logic/service/fight/effect/effect_82.go new file mode 100644 index 00000000..7bba9c99 --- /dev/null +++ b/logic/service/fight/effect/effect_82.go @@ -0,0 +1,32 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" + + "github.com/alpacahq/alpacadecimal" +) + +func init() { + input.InitEffect(input.EffectType.Skill, 82, &Effect82{}) + +} + +type Effect82 struct { + node.EffectNode + can bool +} + +func (e *Effect82) Damage_Mul(t *info.DamageZone) bool { + if t.Type != info.DamageType.Red { + return true + } + if e.Ctx().Opp.CurrentPet.Info.Gender == 1 { + t.Damage = t.Damage.Mul(alpacadecimal.NewFromInt(2)) + } + if e.Ctx().Opp.CurrentPet.Info.Gender == 2 { + t.Damage = t.Damage.Div(alpacadecimal.NewFromInt(2)) + } + return true +} diff --git a/logic/service/fight/effect/effect_power_doblue.go b/logic/service/fight/effect/effect_power_doblue.go index a364030d..30b7705e 100644 --- a/logic/service/fight/effect/effect_power_doblue.go +++ b/logic/service/fight/effect/effect_power_doblue.go @@ -70,7 +70,7 @@ func init() { registerStatusFunc(102, func(i, o *input.Input) bool { return o.StatEffect_Exist(info.PetStatus.Paralysis) }) - + initskill(129, &Effect129{}) registerStatusFunc(132, func(i, o *input.Input) bool { return i.CurrentPet.Info.Hp < o.CurrentPet.Info.Hp }) diff --git a/modules/player/model/pet.go b/modules/player/model/pet.go index 49a34c18..a1708b3f 100644 --- a/modules/player/model/pet.go +++ b/modules/player/model/pet.go @@ -53,7 +53,7 @@ type PetInfo struct { // 名字:默认为全0,补齐到16字节(固定长度 → [16]byte) Name string `struc:"[16]byte" json:"Name,omitempty"` - Gender int `struc:"uint16" fieldDesc:"性别" ` + Gender int `struc:"uint16" fieldDesc:"性别" ` //0:无性别,1:雄性, 2:雌性 //generation Generation uint16 `fieldDesc:"世代" `