From 9f7fd836268db1270bd686ff005d193c9f7b1705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Wed, 15 Apr 2026 22:42:56 +0800 Subject: [PATCH] 1 --- logic/controller/pet_bag.go | 13 +++---------- logic/controller/pet_manage.go | 5 ++--- modules/player/service/pet.go | 8 ++++++-- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/logic/controller/pet_bag.go b/logic/controller/pet_bag.go index d59efcd0f..fffdecb1e 100644 --- a/logic/controller/pet_bag.go +++ b/logic/controller/pet_bag.go @@ -19,20 +19,13 @@ func (h Controller) SavePetBagOrder( return nil, 0 } -// PetRetrieveFromWarehouse 领回仓库精灵 +// PetRetrieveFromWarehouse 从放生仓库领回精灵 func (h Controller) PetRetrieveFromWarehouse( data *PET_RETRIEVE, player *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { - if _, ok := player.FindPetBagSlot(data.CatchTime); ok { - return nil, 0 + if !player.Service.Pet.UpdateFree(data.CatchTime, 1, 0) { + return nil, errorcode.ErrorCodes.ErrPokemonIDMismatch } - petInfo := player.Service.Pet.PetInfoOneByCatchTime(data.CatchTime) - if petInfo == nil { - return nil, 0 - } - - player.AddPetToAvailableBag(petInfo.Data) - return nil, 0 } diff --git a/logic/controller/pet_manage.go b/logic/controller/pet_manage.go index 1aad93ff5..2ad02e05e 100644 --- a/logic/controller/pet_manage.go +++ b/logic/controller/pet_manage.go @@ -48,9 +48,8 @@ func (h Controller) PetReleaseToWarehouse( if inBag || inBackup || freeForbidden == 1 { return nil, errorcode.ErrorCodes.ErrCannotReleaseNonWarehouse } - - if !player.Service.Pet.UpdateFree(data.CatchTime, 1) { - return nil, errorcode.ErrorCodes.ErrSystemError + if !player.Service.Pet.UpdateFree(data.CatchTime, 0, 1) { + return nil, errorcode.ErrorCodes.ErrCannotReleaseNonWarehouse } return nil, 0 diff --git a/modules/player/service/pet.go b/modules/player/service/pet.go index 36799a608..d88e61de9 100644 --- a/modules/player/service/pet.go +++ b/modules/player/service/pet.go @@ -76,8 +76,12 @@ func (s *PetService) PetCount(flag int) int { return ret } -func (s *PetService) UpdateFree(catchTime, free uint32) bool { - res, err := s.dbm(s.Model).Where("catch_time", catchTime).Data("free", free).Update() +func (s *PetService) UpdateFree(catchTime, fromFree, toFree uint32) bool { + res, err := s.dbm(s.Model). + Where("catch_time", catchTime). + Where("free", fromFree). + Data("free", toFree). + Update() if err != nil { return false }