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