diff --git a/Source/pack.cpp b/Source/pack.cpp index 626fcad5e..42a9735fd 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)); else if ((creationFlags & CF_USEFUL) == CF_UPER15) diff --git a/test/pack_test.cpp b/test/pack_test.cpp index e24872687..7ddf83db7 100644 --- a/test/pack_test.cpp +++ b/test/pack_test.cpp @@ -1282,7 +1282,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; @@ -1300,7 +1300,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; @@ -1320,7 +1320,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; @@ -1341,7 +1341,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; @@ -1366,7 +1366,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; @@ -1387,7 +1387,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;