From 36985295e95cafef92734f4b079ff52dfe2083ee Mon Sep 17 00:00:00 2001 From: staphen Date: Sun, 4 Sep 2022 18:19:58 -0400 Subject: [PATCH] Clean up calls to RecreateItem() in msg.cpp --- Source/msg.cpp | 174 +++++++++++++------------------------------------ 1 file changed, 46 insertions(+), 128 deletions(-) diff --git a/Source/msg.cpp b/Source/msg.cpp index af6a63c33..aa9483ecb 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -845,6 +845,48 @@ bool IsPItemValid(const TCmdPItem &message) return IsItemAvailable(message.def.wIndx); } +void RecreateItem(const Player &player, const TItem &messageItem, Item &item) +{ + RecreateItem(player, item, messageItem.wIndx, messageItem.wCI, messageItem.dwSeed, messageItem.wValue, (messageItem.dwBuff & CF_HELLFIRE) != 0); + if (messageItem.bId != 0) + item._iIdentified = true; + item._iDurability = messageItem.bDur; + item._iMaxDur = messageItem.bMDur; + item._iCharges = messageItem.bCh; + item._iMaxCharges = messageItem.bMCh; + item._iPLToHit = messageItem.wToHit; + item._iMaxDam = messageItem.wMaxDam; + item._iMinStr = messageItem.bMinStr; + item._iMinMag = messageItem.bMinMag; + item._iMinDex = messageItem.bMinDex; + item._iAC = messageItem.bAC; + item.dwBuff = messageItem.dwBuff; +} + +void RecreateItem(const Player &player, const TCmdGItem &message, Item &item) +{ + if (message.def.wIndx == IDI_EAR) + RecreateEar(item, message.ear.wCI, message.ear.dwSeed, message.ear.bCursval, message.ear.heroname); + else + RecreateItem(player, message.item, item); +} + +void RecreateItem(const Player &player, const TCmdPItem &message, Item &item) +{ + if (message.def.wIndx == IDI_EAR) + RecreateEar(item, message.ear.wCI, message.ear.dwSeed, message.ear.bCursval, message.ear.heroname); + else + RecreateItem(player, message.item, item); +} + +void RecreateItem(const Player &player, const TCmdChItem &message, Item &item) +{ + if (message.def.wIndx == IDI_EAR) + RecreateEar(item, message.ear.wCI, message.ear.dwSeed, message.ear.bCursval, message.ear.heroname); + else + RecreateItem(player, message.item, item); +} + size_t OnRequestGetItem(const TCmd *pCmd, Player &player) { const auto &message = *reinterpret_cast(pCmd); @@ -1835,39 +1877,7 @@ size_t OnChangePlayerItems(const TCmd *pCmd, size_t pnum) } else if (&player != MyPlayer && IsItemAvailable(message.def.wIndx)) { Item &item = player.InvBody[message.bLoc]; item = {}; - - if (message.def.wIndx == IDI_EAR) { - RecreateEar( - item, - message.ear.wCI, - message.ear.dwSeed, - message.ear.bCursval, - message.ear.heroname); - } else { - RecreateItem( - player, - item, - message.item.wIndx, - message.item.wCI, - message.item.dwSeed, - message.item.wValue, - (message.item.dwBuff & CF_HELLFIRE) != 0); - - if (message.item.bId != 0) - item._iIdentified = true; - item._iDurability = message.item.bDur; - item._iMaxDur = message.item.bMDur; - item._iCharges = message.item.bCh; - item._iMaxCharges = message.item.bMCh; - item._iPLToHit = message.item.wToHit; - item._iMaxDam = message.item.wMaxDam; - item._iMinStr = message.item.bMinStr; - item._iMinMag = message.item.bMinMag; - item._iMinDex = message.item.bMinDex; - item._iAC = message.item.bAC; - item.dwBuff = message.item.dwBuff; - } - + RecreateItem(player, message, item); CheckInvSwap(player, bodyLocation); } @@ -1903,39 +1913,7 @@ size_t OnChangeInventoryItems(const TCmd *pCmd, int pnum) SendPacket(pnum, &message, sizeof(message)); } else if (&player != MyPlayer && IsItemAvailable(message.def.wIndx)) { Item item {}; - - if (message.def.wIndx == IDI_EAR) { - RecreateEar( - item, - message.ear.wCI, - message.ear.dwSeed, - message.ear.bCursval, - message.ear.heroname); - } else { - RecreateItem( - player, - item, - message.item.wIndx, - message.item.wCI, - message.item.dwSeed, - message.item.wValue, - (message.item.dwBuff & CF_HELLFIRE) != 0); - - if (message.item.bId != 0) - item._iIdentified = true; - item._iDurability = message.item.bDur; - item._iMaxDur = message.item.bMDur; - item._iCharges = message.item.bCh; - item._iMaxCharges = message.item.bMCh; - item._iPLToHit = message.item.wToHit; - item._iMaxDam = message.item.wMaxDam; - item._iMinStr = message.item.bMinStr; - item._iMinMag = message.item.bMinMag; - item._iMinDex = message.item.bMinDex; - item._iAC = message.item.bAC; - item.dwBuff = message.item.dwBuff; - } - + RecreateItem(player, message, item); CheckInvSwap(player, item, message.bLoc); } @@ -1969,38 +1947,7 @@ size_t OnChangeBeltItems(const TCmd *pCmd, int pnum) } else if (&player != MyPlayer && IsItemAvailable(message.def.wIndx)) { Item &item = player.SpdList[message.bLoc]; item = {}; - - if (message.def.wIndx == IDI_EAR) { - RecreateEar( - item, - message.ear.wCI, - message.ear.dwSeed, - message.ear.bCursval, - message.ear.heroname); - } else { - RecreateItem( - player, - item, - message.item.wIndx, - message.item.wCI, - message.item.dwSeed, - message.item.wValue, - (message.item.dwBuff & CF_HELLFIRE) != 0); - - if (message.item.bId != 0) - item._iIdentified = true; - item._iDurability = message.item.bDur; - item._iMaxDur = message.item.bMDur; - item._iCharges = message.item.bCh; - item._iMaxCharges = message.item.bMCh; - item._iPLToHit = message.item.wToHit; - item._iMaxDam = message.item.wMaxDam; - item._iMinStr = message.item.bMinStr; - item._iMinMag = message.item.bMinMag; - item._iMinDex = message.item.bMinDex; - item._iAC = message.item.bAC; - item.dwBuff = message.item.dwBuff; - } + RecreateItem(player, message, item); } return sizeof(message); @@ -2791,37 +2738,8 @@ void DeltaLoadLevel() if (deltaLevel.item[i].bCmd == TCmdPItem::DroppedItem) { int ii = AllocateItem(); auto &item = Items[ii]; + RecreateItem(*MyPlayer, deltaLevel.item[i], item); - if (deltaLevel.item[i].def.wIndx == IDI_EAR) { - RecreateEar( - item, - deltaLevel.item[i].ear.wCI, - deltaLevel.item[i].ear.dwSeed, - deltaLevel.item[i].ear.bCursval, - deltaLevel.item[i].ear.heroname); - } else { - RecreateItem( - *MyPlayer, - item, - deltaLevel.item[i].item.wIndx, - deltaLevel.item[i].item.wCI, - deltaLevel.item[i].item.dwSeed, - deltaLevel.item[i].item.wValue, - (deltaLevel.item[i].item.dwBuff & CF_HELLFIRE) != 0); - if (deltaLevel.item[i].item.bId != 0) - item._iIdentified = true; - item._iDurability = deltaLevel.item[i].item.bDur; - item._iMaxDur = deltaLevel.item[i].item.bMDur; - item._iCharges = deltaLevel.item[i].item.bCh; - item._iMaxCharges = deltaLevel.item[i].item.bMCh; - item._iPLToHit = deltaLevel.item[i].item.wToHit; - item._iMaxDam = deltaLevel.item[i].item.wMaxDam; - item._iMinStr = deltaLevel.item[i].item.bMinStr; - item._iMinMag = deltaLevel.item[i].item.bMinMag; - item._iMinDex = deltaLevel.item[i].item.bMinDex; - item._iAC = deltaLevel.item[i].item.bAC; - item.dwBuff = deltaLevel.item[i].item.dwBuff; - } int x = deltaLevel.item[i].x; int y = deltaLevel.item[i].y; item.position = GetItemPosition({ x, y });