From 84768e34061be5838a01757e9fadeaec79c2df45 Mon Sep 17 00:00:00 2001 From: xinian Date: Mon, 23 Feb 2026 07:30:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=82=AB=E5=BD=A9?= =?UTF-8?q?=E7=A2=8E=E7=89=87=E9=81=93=E5=85=B7=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=B9=B6=E4=BC=98=E5=8C=96=E9=97=AA=E5=85=89=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改道具处理逻辑,新增炫彩碎片道具(300212)的使用功能 优化宠物闪光信息存储方式,改为直接赋值而非追加 --- logic/controller/item_use.go | 27 +++++++++++++++++++++++---- logic/service/item/petuse.go | 1 + modules/player/model/pet.go | 4 ++-- 3 files changed, 26 insertions(+), 6 deletions(-) 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} } }