Browse Source

Don't validate creation flags on gold

cpp20-using-enum
staphen 3 years ago committed by Anders Jenbo
parent
commit
a151219b9b
  1. 3
      Source/pack.cpp
  2. 12
      test/pack_test.cpp

3
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)

12
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;

Loading…
Cancel
Save