fix: 修复宠物升级经验显示与动态结算
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
@@ -532,18 +532,20 @@ func (petinfo *PetInfo) Update(isup bool) {
|
||||
if evolveCount >= maxEvolveTimes {
|
||||
break
|
||||
}
|
||||
// 进化完成后,统一更新经验(原逻辑保留)
|
||||
petinfo.LvExp = petinfo.NextLvExp
|
||||
// 获取当前宠物形态的配置
|
||||
basic, ok := xmlres.PetMAP[int(petinfo.ID)]
|
||||
// 配置不存在,直接退出循环
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
petinfo.NextLvExp = calculateExperience(petinfo.Level, basic.GetBasic())
|
||||
if !isup {
|
||||
petinfo.LvExp = calculatePreviousLevelExperience(petinfo.Level, basic.GetBasic())
|
||||
petinfo.NextLvExp = calculateExperience(petinfo.Level, basic.GetBasic())
|
||||
return
|
||||
}
|
||||
// 升级时保留上一等级需求,供经验结算使用。
|
||||
petinfo.LvExp = petinfo.NextLvExp
|
||||
petinfo.NextLvExp = calculateExperience(petinfo.Level, basic.GetBasic())
|
||||
// 检查是否满足进化条件
|
||||
canEvolve := basic.EvolvesTo != 0 && // 有明确的进化目标
|
||||
int(petinfo.Level) >= basic.EvolvingLv && // 等级达到进化要求
|
||||
@@ -561,6 +563,13 @@ func (petinfo *PetInfo) Update(isup bool) {
|
||||
|
||||
}
|
||||
|
||||
func calculatePreviousLevelExperience(level uint32, baseValue uint32) int64 {
|
||||
if level <= 1 {
|
||||
return 0
|
||||
}
|
||||
return calculateExperience(level-1, baseValue)
|
||||
}
|
||||
|
||||
// calculateExperience 计算指定等级和种族值所需的经验值
|
||||
// level: 当前等级
|
||||
// baseValue: 种族值
|
||||
|
||||
Reference in New Issue
Block a user