diff --git a/Source/pack.cpp b/Source/pack.cpp index 74af8abaa..04168b78e 100644 --- a/Source/pack.cpp +++ b/Source/pack.cpp @@ -178,7 +178,8 @@ bool UnPackNetItem(const Player &player, const ItemNetPack &packedItem, Item &it uint16_t creationFlags = SDL_SwapLE16(packedItem.item.wCI); uint32_t dwBuff = SDL_SwapLE16(packedItem.item.dwBuff); - ValidateField(creationFlags, IsCreationFlagComboValid(creationFlags)); + if (idx != IDI_GOLD) + ValidateField(creationFlags, IsCreationFlagComboValid(creationFlags)); if ((creationFlags & CF_TOWN) != 0) ValidateField(creationFlags, IsTownItemValid(creationFlags, player)); else if ((creationFlags & CF_USEFUL) == CF_UPER15) diff --git a/test/pack_test.cpp b/test/pack_test.cpp index 882b61ec3..3cc70c4a9 100644 --- a/test/pack_test.cpp +++ b/test/pack_test.cpp @@ -1275,7 +1275,7 @@ TEST_F(NetPackTest, UnPackNetPlayer_invalid_pregenItemFlags) for (Item &item : MyPlayer->InvList) { if (item.isEmpty()) continue; - if (item.IDidx == IDI_EAR) + if (IsAnyOf(item.IDidx, IDI_GOLD, IDI_EAR)) continue; uint16_t createInfo = item._iCreateInfo; item._iCreateInfo |= CF_PREGEN; @@ -1293,7 +1293,7 @@ TEST_F(NetPackTest, UnPackNetPlayer_invalid_usefulItemFlags) for (Item &item : MyPlayer->InvList) { if (item.isEmpty()) continue; - if (item.IDidx == IDI_EAR) + if (IsAnyOf(item.IDidx, IDI_GOLD, IDI_EAR)) continue; if ((item._iCreateInfo & CF_USEFUL) != CF_USEFUL) continue; @@ -1313,7 +1313,7 @@ TEST_F(NetPackTest, UnPackNetPlayer_invalid_townItemFlags) for (Item &item : MyPlayer->InvList) { if (item.isEmpty()) continue; - if (item.IDidx == IDI_EAR) + if (IsAnyOf(item.IDidx, IDI_GOLD, IDI_EAR)) continue; if ((item._iCreateInfo & CF_TOWN) == 0) continue; @@ -1334,7 +1334,7 @@ TEST_F(NetPackTest, UnPackNetPlayer_invalid_townItemLevel) for (Item &item : MyPlayer->InvBody) { if (item.isEmpty()) continue; - if (item.IDidx == IDI_EAR) + if (IsAnyOf(item.IDidx, IDI_GOLD, IDI_EAR)) continue; if ((item._iCreateInfo & CF_TOWN) == 0) continue; @@ -1359,7 +1359,7 @@ TEST_F(NetPackTest, UnPackNetPlayer_invalid_uniqueMonsterItemLevel) for (Item &item : MyPlayer->InvList) { if (item.isEmpty()) continue; - if (item.IDidx == IDI_EAR) + if (IsAnyOf(item.IDidx, IDI_GOLD, IDI_EAR)) continue; if ((item._iCreateInfo & CF_USEFUL) != CF_UPER15) continue; @@ -1380,7 +1380,7 @@ TEST_F(NetPackTest, UnPackNetPlayer_invalid_monsterItemLevel) for (Item &item : MyPlayer->InvBody) { if (item.isEmpty()) continue; - if (item.IDidx == IDI_EAR) + if (IsAnyOf(item.IDidx, IDI_GOLD, IDI_EAR)) continue; if ((item._iCreateInfo & CF_TOWN) != 0) continue;