``refactor(pet): 提取宠物基础属性计算逻辑到GetBasic方法,优化经验计算流程``
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user