diff --git a/logic/controller/item_use.go b/logic/controller/item_use.go index 5c615a300..5771b64de 100644 --- a/logic/controller/item_use.go +++ b/logic/controller/item_use.go @@ -1,6 +1,8 @@ package controller import ( + element "blazing/common/data/Element" + "blazing/common/data/xmlres" "blazing/common/socket/errorcode" "blazing/logic/service/fight" "blazing/logic/service/item" @@ -13,8 +15,6 @@ import ( const ( // ItemDefaultLeftTime 道具默认剩余时间(毫秒) ItemDefaultLeftTime = 360000 - // ItemNeuronID 神经元道具ID - ItemNeuronID = 300036 ) // GetUserItemList 获取用户道具列表 @@ -54,11 +54,15 @@ func (h Controller) UsePetItemOutOfFight(data *item.C2S_USE_PET_ITEM_OUT_OF_FIGH } var errcode errorcode.ErrorCode - if data.ItemID == ItemNeuronID { + switch data.ItemID { + case 300036: errcode = h.handleNeuronItem(currentPet, c) - } else { + case 300212: + errcode = h.handlexuancaiItem(currentPet, c) + default: errcode = h.handleRegularPetItem(uint32(data.ItemID), currentPet) } + if errcode != 0 { return nil, errcode } @@ -91,6 +95,21 @@ func (h Controller) handleNeuronItem(currentPet *model.PetInfo, c *player.Player return 0 } +// 炫彩碎片 处理神300212 +func (h Controller) handlexuancaiItem(currentPet *model.PetInfo, c *player.Player) errorcode.ErrorCode { + r, _ := element.Calculator.GetCombination(int(currentPet.ID)) + if r.Secondary != nil { + return errorcode.ErrorCodes.ErrItemUnusable + } + items := c.Service.Item.CheakItem(uint32(xmlres.PetMAP[int(currentPet.ID)].Type) + 400686) + if items <= 0 { + return errorcode.ErrorCodes.ErrInsufficientItems + } + c.Service.Item.UPDATE(uint32(items), -100) + currentPet.FixShiny() + return 0 +} + // handleRegularPetItem 处理普通宠物道具 func (h Controller) handleRegularPetItem(itemID uint32, currentPet *model.PetInfo) errorcode.ErrorCode { handler := item.PetItemRegistry.GetHandler(itemID) diff --git a/logic/service/item/petuse.go b/logic/service/item/petuse.go index 596ea0fbb..6e51de39d 100644 --- a/logic/service/item/petuse.go +++ b/logic/service/item/petuse.go @@ -227,4 +227,5 @@ func init() { onpet.SkinID = 0 return true }) + } diff --git a/modules/player/model/pet.go b/modules/player/model/pet.go index 61b7dc442..6863b801c 100644 --- a/modules/player/model/pet.go +++ b/modules/player/model/pet.go @@ -219,7 +219,7 @@ func (pet *PetInfo) FixShiny() { co := service.NewShinyService().RandShiny(pet.ID) if co != nil { - pet.ShinyInfo = append(pet.ShinyInfo, *co) + pet.ShinyInfo = []data.GlowFilter{*co} } } @@ -229,7 +229,7 @@ func (pet *PetInfo) RandomByWeightShiny() { co := service.NewShinyService().RandomByWeightShiny(pet.ID) if co != nil { - pet.ShinyInfo = append(pet.ShinyInfo, *co) + pet.ShinyInfo = []data.GlowFilter{*co} } }