2025-09-21 17:01:31 +00:00
|
|
|
package player
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"blazing/common/data/xmlres"
|
2025-10-18 23:58:19 +08:00
|
|
|
"blazing/common/utils"
|
2025-11-19 16:11:02 +08:00
|
|
|
"blazing/logic/service/common"
|
2025-09-26 13:33:55 +08:00
|
|
|
"blazing/logic/service/fight/info"
|
|
|
|
|
|
2025-09-21 17:01:31 +00:00
|
|
|
"blazing/modules/blazing/model"
|
2025-09-26 13:33:55 +08:00
|
|
|
|
|
|
|
|
"github.com/jinzhu/copier"
|
2025-09-21 17:01:31 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 主函数实现
|
|
|
|
|
// 添加经验
|
2025-10-14 01:26:59 +08:00
|
|
|
// 禁止发包
|
2025-11-01 00:40:19 +08:00
|
|
|
func (p *Player) AddPetExp(petinfo *model.PetInfo, addExp uint32) {
|
2025-10-18 23:58:19 +08:00
|
|
|
addExp = utils.Min(addExp, p.Info.ExpPool)
|
2025-09-26 13:33:55 +08:00
|
|
|
originalLevel := petinfo.Level
|
2025-10-18 23:58:19 +08:00
|
|
|
Exp := petinfo.Exp + addExp
|
2025-11-25 16:36:55 +08:00
|
|
|
|
2025-11-25 12:29:50 +08:00
|
|
|
petinfo.Update_EXP()
|
2025-11-25 16:36:55 +08:00
|
|
|
petinfo.Update()
|
2025-10-17 23:09:26 +00:00
|
|
|
p.Info.ExpPool -= addExp //减去已使用的经验
|
2025-10-18 23:58:19 +08:00
|
|
|
for Exp >= petinfo.NextLvExp {
|
2025-10-17 23:09:26 +00:00
|
|
|
petinfo.Level++
|
2025-11-25 12:29:50 +08:00
|
|
|
petinfo.Update_EXP()
|
2025-11-25 16:36:55 +08:00
|
|
|
petinfo.Update()
|
2025-10-18 23:58:19 +08:00
|
|
|
Exp -= petinfo.LvExp
|
2025-10-17 23:09:26 +00:00
|
|
|
if originalLevel < 100 && petinfo.Level == 100 { //升到100了
|
2025-10-18 23:58:19 +08:00
|
|
|
p.Info.ExpPool += Exp //减去已使用的经验
|
|
|
|
|
Exp = 0
|
2025-10-17 23:09:26 +00:00
|
|
|
break //停止升级
|
|
|
|
|
}
|
2025-09-22 15:47:07 +00:00
|
|
|
|
2025-09-21 17:01:31 +00:00
|
|
|
}
|
2025-10-17 21:40:51 +00:00
|
|
|
|
2025-10-18 23:58:19 +08:00
|
|
|
petinfo.Exp = Exp
|
2025-09-21 17:01:31 +00:00
|
|
|
// 重新计算面板
|
2025-09-26 13:33:55 +08:00
|
|
|
if originalLevel != petinfo.Level {
|
2025-12-11 14:34:56 +00:00
|
|
|
petinfo.CalculatePetPane(false)
|
2025-10-18 23:58:19 +08:00
|
|
|
|
|
|
|
|
petinfo.Cure()
|
2025-12-12 19:10:09 +00:00
|
|
|
p.Info.PetMaxLevel = utils.Max(petinfo.Level, p.Info.PetMaxLevel)
|
2025-09-22 13:30:16 +00:00
|
|
|
}
|
2025-09-21 17:01:31 +00:00
|
|
|
|
|
|
|
|
// 处理技能学习
|
2025-11-23 23:38:03 +00:00
|
|
|
canLearnSkillList := utils.LastFourElements(petinfo.GetLevelRangeCanLearningSkills(originalLevel, petinfo.Level), 4) //获取最后四个技能,如果不足,那就取全部技能
|
2025-09-21 17:01:31 +00:00
|
|
|
|
2025-10-27 01:11:31 +08:00
|
|
|
for i := 0; i < 4; i++ {
|
2025-09-21 17:01:31 +00:00
|
|
|
|
2025-10-27 01:11:31 +08:00
|
|
|
if len(canLearnSkillList) != 0 {
|
|
|
|
|
skid := canLearnSkillList[len(canLearnSkillList)-1]
|
|
|
|
|
petinfo.SkillList = append(petinfo.SkillList, model.SkillInfo{
|
2025-10-26 20:56:03 +08:00
|
|
|
|
2025-10-27 01:11:31 +08:00
|
|
|
ID: skid,
|
|
|
|
|
PP: uint32(xmlres.SkillMap[int(skid)].MaxPP),
|
|
|
|
|
})
|
2025-09-21 17:01:31 +00:00
|
|
|
|
2025-10-27 01:11:31 +08:00
|
|
|
canLearnSkillList = canLearnSkillList[:len(canLearnSkillList)-1]
|
2025-09-21 17:01:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2025-12-05 10:04:23 +00:00
|
|
|
if len(petinfo.SkillList) > 4 {
|
|
|
|
|
petinfo.SkillList = petinfo.SkillList[:4] //归正到4
|
|
|
|
|
}
|
2025-11-01 00:40:19 +08:00
|
|
|
|
2025-11-19 16:11:02 +08:00
|
|
|
t1 := common.NewTomeeHeader(2508, p.Info.UserID)
|
2025-11-01 00:40:19 +08:00
|
|
|
rrr := &info.PetUpdateOutboundInfo{}
|
|
|
|
|
|
|
|
|
|
var petinfwo info.UpdatePropInfo
|
|
|
|
|
|
|
|
|
|
copier.Copy(&petinfwo, petinfo)
|
|
|
|
|
rrr.Data = append(rrr.Data, petinfwo)
|
|
|
|
|
p.SendPack(t1.Pack(rrr)) //准备包由各自发,因为协议不一样
|
|
|
|
|
// 发送经验更新消息
|
|
|
|
|
//player.SendMessage(generatePetUpdateInfo(petEntity, originalExp+addExp-exp, addition))
|
|
|
|
|
|
2025-09-21 17:01:31 +00:00
|
|
|
// // 发送技能更新消息
|
|
|
|
|
// updateSkillInfo := UpdateSkillInfo{
|
|
|
|
|
// PetCatchTime: petEntity.captureTime,
|
|
|
|
|
// ActiveSkillNum: activeSkillNum,
|
|
|
|
|
// UnActiveSkillNum: unActiveSkillNum,
|
|
|
|
|
// SkillArray: canLearnSkillList,
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// player.SendMessage(UpdateSkillOutboundInfo{
|
|
|
|
|
// InfoArray: []UpdateSkillInfo{updateSkillInfo},
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
|
|
// return exp
|
2025-10-13 19:46:19 +08:00
|
|
|
|
2025-09-21 17:01:31 +00:00
|
|
|
}
|