From 31c7687036376cf744264f53d4580d2ce0bd8f8a Mon Sep 17 00:00:00 2001 From: 1 <1@72wo.cn> Date: Fri, 17 Oct 2025 21:38:24 +0000 Subject: [PATCH] =?UTF-8?q?```refactor(pet):=20=E6=8F=90=E5=8F=96=E5=AE=A0?= =?UTF-8?q?=E7=89=A9=E5=9F=BA=E7=A1=80=E5=B1=9E=E6=80=A7=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=88=B0GetBasic=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=8F=E9=AA=8C=E8=AE=A1=E7=AE=97=E6=B5=81?= =?UTF-8?q?=E7=A8=8B```?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/data/xmlres/pet.go | 9 +++++++++ logic/service/player/pet.go | 27 +++++++++++++-------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/common/data/xmlres/pet.go b/common/data/xmlres/pet.go index 188d9705..5b9e282e 100644 --- a/common/data/xmlres/pet.go +++ b/common/data/xmlres/pet.go @@ -45,6 +45,15 @@ type PetInfo struct { LearnableMoves LearnableMoves `xml:"LearnableMoves"` // 可学习的技能 } + +func (basic *PetInfo) GetBasic() uint32 { +return basic.Atk + + basic.Def + + basic.SpAtk + + basic.SpDef + + basic.Spd + + uint32(basic.HP) +} // Monsters 表示所有怪物的集合 type Monsters struct { XMLName xml.Name `xml:"Monsters"` diff --git a/logic/service/player/pet.go b/logic/service/player/pet.go index 53e609c1..16760a75 100644 --- a/logic/service/player/pet.go +++ b/logic/service/player/pet.go @@ -37,24 +37,19 @@ func calculateExperience(level uint32, baseValue uint32) uint32 { func (p *Player) AddPetExp(petinfo *model.PetInfo, addExp uint32, bro bool) { originalLevel := petinfo.Level + basic := xmlres.PetMAP[int(petinfo.ID)] for { - basic := xmlres.PetMAP[int(petinfo.ID)] - ba := basic.Atk + - basic.Def + - basic.SpAtk + - basic.SpDef + - basic.Spd + - uint32(basic.HP) - needExp := calculateExperience(petinfo.Level, ba) + + needExp := calculateExperience(petinfo.Level, basic.GetBasic()) needExp -= petinfo.Exp if addExp >= needExp { + basic := xmlres.PetMAP[int(petinfo.ID)] addExp -= needExp p.Info.ExpPool -= needExp //减去已使用的经验 petinfo.Level++ - + petinfo.Exp = 0 if originalLevel < 100 && petinfo.Level == 100 { //升到100了 - petinfo.Cure() - petinfo.NextLvExp = calculateExperience(petinfo.Level, ba) + break //停止升级 } @@ -69,13 +64,17 @@ func (p *Player) AddPetExp(petinfo *model.PetInfo, addExp uint32, bro bool) { } else { p.Info.ExpPool -= addExp //减去已使用的经验 - petinfo.Exp = addExp //零头添到这里 - petinfo.NextLvExp = calculateExperience(petinfo.Level, ba) + petinfo.Exp += addExp //零头添到这里 + break } } - + petinfo.NextLvExp = calculateExperience(petinfo.Level, basic.GetBasic()) + //治疗 + if petinfo.Level != originalLevel { + petinfo.Cure() + } //petinfo.Exp = addExp petinfo.LvExp = petinfo.NextLvExp - petinfo.Exp