package controller import ( "blazing/common/data/xmlres" "blazing/common/socket/errorcode" "blazing/logic/service/fight" "blazing/logic/service/fight/info" "blazing/logic/service/pet" "blazing/logic/service/player" "github.com/jinzhu/copier" ) // PetEVDiy 自定义分配宠物努力值(EV) // data: 包含宠物捕获时间和EV分配数据的输入信息 // c: 当前玩家对象 // 返回: 分配结果和错误码 func (h Controller) PetELV(data *pet.C2S_PET_EVOLVTION, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { _, currentPet, found := c.FindPet(data.CacthTime) if !found { return nil, errorcode.ErrorCodes.Err10401 } flag := xmlres.PetMAP[int(currentPet.ID)].EvolvFlag if flag == 0 { return nil, errorcode.ErrorCodes.ErrPokemonNotEvolveReady } evinfo := xmlres.EVOLVMAP[flag].Branches[data.Index-1] if c.Service.Item.CheakItem(uint32(evinfo.EvolvItem)) < uint32(evinfo.EvolvItemCount) { return nil, errorcode.ErrorCodes.ErrInsufficientItemsMulti } if evinfo.EvolvItem != 0 { c.Service.Item.UPDATE(uint32(evinfo.EvolvItem), -evinfo.EvolvItemCount) } currentPet.ID = uint32(xmlres.EVOLVMAP[flag].Branches[data.Index-1].MonTo) currentPet.Update(true) currentPet.CalculatePetPane(false) currentPet.Update(true) updateOutbound := &info.PetUpdateOutboundInfo{} var petUpdateInfo info.UpdatePropInfo copier.Copy(&petUpdateInfo, currentPet) updateOutbound.Data = append(updateOutbound.Data, petUpdateInfo) c.SendPackCmd(2508, updateOutbound) //准备包由各自发,因为协议不一样 return nil, -1 }