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 }