From 76f13efa5214a2c4587de0e17a6f8b2e92fecbf1 Mon Sep 17 00:00:00 2001 From: WinterSolstice8 <60417494+wintersolstice8@users.noreply.github.com> Date: Sun, 12 May 2024 13:34:57 -0600 Subject: [PATCH] [core] Make dedicated GetFish function for fishing --- src/map/utils/fishingutils.cpp | 14 +++++++++++++- src/map/utils/fishingutils.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/map/utils/fishingutils.cpp b/src/map/utils/fishingutils.cpp index 517dfdc7107..d3c38d036d8 100644 --- a/src/map/utils/fishingutils.cpp +++ b/src/map/utils/fishingutils.cpp @@ -1496,7 +1496,7 @@ namespace fishingutils if (PChar->getStorage(LOC_INVENTORY)->GetFreeSlotsCount() != 0) { - CItemFish* Fish = dynamic_cast(itemutils::GetItem(FishID)); + CItemFish* Fish = GetFish(FishID); if (Fish == nullptr) { @@ -2885,6 +2885,18 @@ namespace fishingutils } } + CItemFish* GetFish(uint16 itemid) + { + CItem* PItem = itemutils::GetItemPointer(itemid); + + if (PItem && FishList[itemid]) + { + // CItemFish constructor uses `const CItem&` input so this is ok + return new CItemFish(*PItem); + } + return nullptr; + } + /************************************************************************ * * * INITIALIZATION * diff --git a/src/map/utils/fishingutils.h b/src/map/utils/fishingutils.h index 8b5c68b06dd..13628a3224b 100644 --- a/src/map/utils/fishingutils.h +++ b/src/map/utils/fishingutils.h @@ -1005,6 +1005,7 @@ namespace fishingutils fishresponse_t* FishingCheck(CCharEntity* PChar, uint8 fishingSkill, rod_t* rod, bait_t* bait, fishingarea_t* area); catchresponse_t* ReelCheck(CCharEntity* PChar, fishresponse_t* response, rod_t* rod); void FishingAction(CCharEntity* PChar, FISHACTION action, uint16 stamina, uint32 special); + CItemFish* GetFish(uint16 itemid); // creates a `new` CItemFish if possible // Initialization void LoadFishingMessages();