diff --git a/Source/control.cpp b/Source/control.cpp index c1eeefac5..f65206b46 100644 --- a/Source/control.cpp +++ b/Source/control.cpp @@ -429,19 +429,19 @@ int DrawDurIcon4Item(const Surface &out, Item &pItem, int x, int c) return x; if (c == 0) { switch (pItem._itype) { - case ITYPE_SWORD: + case ItemType::Sword: c = 2; break; - case ITYPE_AXE: + case ItemType::Axe: c = 6; break; - case ITYPE_BOW: + case ItemType::Bow: c = 7; break; - case ITYPE_MACE: + case ItemType::Mace: c = 5; break; - case ITYPE_STAFF: + case ItemType::Staff: c = 8; break; default: @@ -1314,7 +1314,7 @@ void DrawInfoBox(const Surface &out) InfoColor = UiFlags::ColorSilver; } else if (pcurs >= CURSOR_FIRSTITEM) { auto &myPlayer = Players[MyPlayerId]; - if (myPlayer.HoldItem._itype == ITYPE_GOLD) { + if (myPlayer.HoldItem._itype == ItemType::Gold) { int nGold = myPlayer.HoldItem._ivalue; strcpy(infostr, fmt::format(ngettext("{:d} gold piece", "{:d} gold pieces", nGold), nGold).c_str()); } else if (!myPlayer.HoldItem._iStatFlag) { diff --git a/Source/controls/plrctrls.cpp b/Source/controls/plrctrls.cpp index a2eb81c6b..89a66e09b 100644 --- a/Source/controls/plrctrls.cpp +++ b/Source/controls/plrctrls.cpp @@ -686,7 +686,7 @@ void InvMove(AxisDirection dir) } else if (Slot > SLOTXY_BELT_FIRST && Slot <= SLOTXY_BELT_LAST) { Slot -= 1; mousePos = BeltGetSlotCoord(Slot); - } else if (myPlayer.HoldItem._itype == ITYPE_RING) { + } else if (myPlayer.HoldItem._itype == ItemType::Ring) { Slot = SLOTXY_RING_LEFT; mousePos = InvGetEquipSlotCoord(INVLOC_RING_LEFT); } else if (myPlayer.HoldItem.isWeapon() || myPlayer.HoldItem.isShield()) { @@ -736,7 +736,7 @@ void InvMove(AxisDirection dir) } else if (Slot >= SLOTXY_BELT_FIRST && Slot < SLOTXY_BELT_LAST) { Slot += 1; mousePos = BeltGetSlotCoord(Slot); - } else if (myPlayer.HoldItem._itype == ITYPE_RING) { + } else if (myPlayer.HoldItem._itype == ItemType::Ring) { Slot = SLOTXY_RING_RIGHT; mousePos = InvGetEquipSlotCoord(INVLOC_RING_RIGHT); } else if (myPlayer.HoldItem.isWeapon() || myPlayer.HoldItem.isShield()) { @@ -781,7 +781,7 @@ void InvMove(AxisDirection dir) Slot -= INV_ROW_SLOT_SIZE; mousePos = InvGetSlotCoord(Slot); } else if (Slot >= SLOTXY_INV_FIRST) { - if (myPlayer.HoldItem._itype == ITYPE_RING) { + if (myPlayer.HoldItem._itype == ItemType::Ring) { if (Slot >= SLOTXY_INV_ROW1_FIRST && Slot <= SLOTXY_INV_ROW1_FIRST + (INV_ROW_SLOT_SIZE / 2) - 1) { Slot = SLOTXY_RING_LEFT; mousePos = InvGetEquipSlotCoord(INVLOC_RING_LEFT); @@ -801,7 +801,7 @@ void InvMove(AxisDirection dir) } else if (myPlayer.HoldItem.isArmor()) { Slot = SLOTXY_CHEST_FIRST; mousePos = InvGetEquipSlotCoord(INVLOC_CHEST); - } else if (myPlayer.HoldItem._itype == ITYPE_AMULET) { + } else if (myPlayer.HoldItem._itype == ItemType::Amulet) { Slot = SLOTXY_AMULET; mousePos = InvGetEquipSlotCoord(INVLOC_AMULET); } @@ -847,7 +847,7 @@ void InvMove(AxisDirection dir) } else if (Slot <= (SLOTXY_INV_ROW4_LAST - (icursSize28.height * INV_ROW_SLOT_SIZE))) { Slot += INV_ROW_SLOT_SIZE; mousePos = InvGetSlotCoord(Slot); - } else if (Slot <= SLOTXY_INV_LAST && myPlayer.HoldItem._itype == ITYPE_MISC && icursSize28 == Size { 1, 1 }) { // forcing only 1x1 misc items + } else if (Slot <= SLOTXY_INV_LAST && myPlayer.HoldItem._itype == ItemType::Misc && icursSize28 == Size { 1, 1 }) { // forcing only 1x1 misc items Slot += INV_ROW_SLOT_SIZE; if (Slot > SLOTXY_BELT_LAST) Slot = SLOTXY_BELT_LAST; @@ -1319,7 +1319,7 @@ void UseBeltItem(int type) if ((type == BLT_HEALING && (id == IMISC_HEAL || id == IMISC_FULLHEAL || (id == IMISC_SCROLL && spellId == SPL_HEAL))) || (type == BLT_MANA && (id == IMISC_MANA || id == IMISC_FULLMANA)) || id == IMISC_REJUV || id == IMISC_FULLREJUV) { - if (myPlayer.SpdList[i]._itype > -1) { + if (!myPlayer.SpdList[i].isEmpty()) { UseInvItem(MyPlayerId, INVITEM_BELT_FIRST + i); break; } diff --git a/Source/debug.cpp b/Source/debug.cpp index 5d0e00464..11a149c47 100644 --- a/Source/debug.cpp +++ b/Source/debug.cpp @@ -161,7 +161,7 @@ std::string DebugCmdTakeGoldCheat(const string_view parameter) if (itemId < 0) continue; - if (myPlayer.InvList[itemId]._itype != ITYPE_GOLD) + if (myPlayer.InvList[itemId]._itype != ItemType::Gold) continue; myPlayer.RemoveInvItem(itemId); diff --git a/Source/diablo.cpp b/Source/diablo.cpp index 7a31f5dfb..02b4bb76a 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -1478,7 +1478,7 @@ void InitKeymapActions() '1' + i, [i] { auto &myPlayer = Players[MyPlayerId]; - if (!myPlayer.SpdList[i].isEmpty() && myPlayer.SpdList[i]._itype != ITYPE_GOLD) { + if (!myPlayer.SpdList[i].isEmpty() && myPlayer.SpdList[i]._itype != ItemType::Gold) { UseInvItem(MyPlayerId, INVITEM_BELT_FIRST + i); } }, diff --git a/Source/inv.cpp b/Source/inv.cpp index 6cf415c48..df87ef663 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -208,7 +208,7 @@ bool FitsInBeltSlot(const Item &item) bool CanBePlacedOnBelt(const Item &item) { return FitsInBeltSlot(item) - && item._itype != ITYPE_GOLD + && item._itype != ItemType::Gold && item._iStatFlag && AllItemsList[item.IDidx].iUsable; } @@ -254,7 +254,7 @@ bool CanWield(Player &player, const Item &item) // Barbarian can wield two handed swords and maces in one hand, so we allow equiping any sword/mace as long as his occupied // hand has a shield (i.e. no dual wielding allowed) if (player._pClass == HeroClass::Barbarian) { - if (occupiedHand._itype == ITYPE_SHIELD && IsAnyOf(item._itype, ITYPE_SWORD, ITYPE_MACE)) + if (occupiedHand._itype == ItemType::Shield && IsAnyOf(item._itype, ItemType::Sword, ItemType::Mace)) return true; } @@ -262,10 +262,10 @@ bool CanWield(Player &player, const Item &item) // slot is another one-handed weapon. if (player._pClass == HeroClass::Bard) { bool occupiedHandIsOneHandedSwordOrMace = occupiedHand._iLoc == ILOC_ONEHAND - && IsAnyOf(occupiedHand._itype, ITYPE_SWORD, ITYPE_MACE); + && IsAnyOf(occupiedHand._itype, ItemType::Sword, ItemType::Mace); bool weaponToEquipIsOneHandedSwordOrMace = item._iLoc == ILOC_ONEHAND - && IsAnyOf(item._itype, ITYPE_SWORD, ITYPE_MACE); + && IsAnyOf(item._itype, ItemType::Sword, ItemType::Mace); if (occupiedHandIsOneHandedSwordOrMace && weaponToEquipIsOneHandedSwordOrMace) { return true; @@ -397,7 +397,7 @@ void CheckInvPaste(int pnum, Point cursorPosition) if (il == ILOC_ONEHAND && player.HoldItem._iLoc == ILOC_TWOHAND) { if (player._pClass == HeroClass::Barbarian - && IsAnyOf(player.HoldItem._itype, ITYPE_SWORD, ITYPE_MACE)) + && IsAnyOf(player.HoldItem._itype, ItemType::Sword, ItemType::Mace)) il = ILOC_ONEHAND; else il = ILOC_TWOHAND; @@ -410,7 +410,7 @@ void CheckInvPaste(int pnum, Point cursorPosition) done = false; if (!player.HoldItem._iStatFlag) done = false; - if (player.HoldItem._itype == ITYPE_GOLD) + if (player.HoldItem._itype == ItemType::Gold) done = false; } } @@ -419,11 +419,11 @@ void CheckInvPaste(int pnum, Point cursorPosition) if (il == ILOC_UNEQUIPABLE) { done = true; int ii = r - SLOTXY_INV_FIRST; - if (player.HoldItem._itype == ITYPE_GOLD) { + if (player.HoldItem._itype == ItemType::Gold) { if (player.InvGrid[ii] != 0) { int8_t iv = player.InvGrid[ii]; if (iv > 0) { - if (player.InvList[iv - 1]._itype != ITYPE_GOLD) { + if (player.InvList[iv - 1]._itype != ItemType::Gold) { it = iv; } } else { @@ -525,7 +525,7 @@ void CheckInvPaste(int pnum, Point cursorPosition) } if (player.InvBody[INVLOC_HAND_RIGHT].isEmpty()) { if ((player.InvBody[INVLOC_HAND_LEFT].isEmpty() || player.InvBody[INVLOC_HAND_LEFT]._iLoc != ILOC_TWOHAND) - || (player._pClass == HeroClass::Barbarian && (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SWORD || player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_MACE))) { + || (player._pClass == HeroClass::Barbarian && (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Sword || player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Mace))) { if ((player.InvBody[INVLOC_HAND_LEFT].isEmpty() || player.InvBody[INVLOC_HAND_LEFT]._iClass != player.HoldItem._iClass) || (player._pClass == HeroClass::Bard && player.InvBody[INVLOC_HAND_LEFT]._iClass == ICLASS_WEAPON && player.HoldItem._iClass == ICLASS_WEAPON)) { NetSendCmdChItem(false, INVLOC_HAND_RIGHT); @@ -555,7 +555,7 @@ void CheckInvPaste(int pnum, Point cursorPosition) case ILOC_TWOHAND: if (!player.InvBody[INVLOC_HAND_LEFT].isEmpty() && !player.InvBody[INVLOC_HAND_RIGHT].isEmpty()) { Item tempitem = player.HoldItem; - if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) + if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield) player.HoldItem = player.InvBody[INVLOC_HAND_RIGHT]; else player.HoldItem = player.InvBody[INVLOC_HAND_LEFT]; @@ -572,10 +572,10 @@ void CheckInvPaste(int pnum, Point cursorPosition) if (!done2h) return; - if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) - player.InvBody[INVLOC_HAND_RIGHT]._itype = ITYPE_NONE; + if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield) + player.InvBody[INVLOC_HAND_RIGHT]._itype = ItemType::None; else - player.InvBody[INVLOC_HAND_LEFT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_LEFT]._itype = ItemType::None; } NetSendCmdDelItem(false, INVLOC_HAND_RIGHT); @@ -591,7 +591,7 @@ void CheckInvPaste(int pnum, Point cursorPosition) } break; case ILOC_UNEQUIPABLE: - if (player.HoldItem._itype == ITYPE_GOLD && it == 0) { + if (player.HoldItem._itype == ItemType::Gold && it == 0) { int ii = r - SLOTXY_INV_FIRST; if (player.InvGrid[ii] > 0) { int invIndex = player.InvGrid[ii] - 1; @@ -626,10 +626,10 @@ void CheckInvPaste(int pnum, Point cursorPosition) it = player._pNumInv; } else { int invIndex = it - 1; - if (player.HoldItem._itype == ITYPE_GOLD) + if (player.HoldItem._itype == ItemType::Gold) player._pGold += player.HoldItem._ivalue; cn = SwapItem(&player.InvList[invIndex], &player.HoldItem); - if (player.HoldItem._itype == ITYPE_GOLD) + if (player.HoldItem._itype == ItemType::Gold) player._pGold = CalculateGold(player); for (auto &itemId : player.InvGrid) { if (itemId == it) @@ -653,7 +653,7 @@ void CheckInvPaste(int pnum, Point cursorPosition) player.SpdList[ii] = player.HoldItem; } else { cn = SwapItem(&player.SpdList[ii], &player.HoldItem); - if (player.HoldItem._itype == ITYPE_GOLD) + if (player.HoldItem._itype == ItemType::Gold) player._pGold = CalculateGold(player); } drawsbarflag = true; @@ -710,7 +710,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } Item &holdItem = player.HoldItem; - holdItem._itype = ITYPE_NONE; + holdItem._itype = ItemType::None; bool automaticallyMoved = false; bool automaticallyEquipped = false; @@ -726,7 +726,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) if (!automaticMove || automaticallyMoved) { NetSendCmdDelItem(false, INVLOC_HEAD); - headItem._itype = ITYPE_NONE; + headItem._itype = ItemType::None; } } @@ -740,7 +740,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) if (!automaticMove || automaticallyMoved) { NetSendCmdDelItem(false, INVLOC_RING_LEFT); - leftRingItem._itype = ITYPE_NONE; + leftRingItem._itype = ItemType::None; } } @@ -754,7 +754,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) if (!automaticMove || automaticallyMoved) { NetSendCmdDelItem(false, INVLOC_RING_RIGHT); - rightRingItem._itype = ITYPE_NONE; + rightRingItem._itype = ItemType::None; } } @@ -768,7 +768,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) if (!automaticMove || automaticallyMoved) { NetSendCmdDelItem(false, INVLOC_AMULET); - amuletItem._itype = ITYPE_NONE; + amuletItem._itype = ItemType::None; } } @@ -782,7 +782,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) if (!automaticMove || automaticallyMoved) { NetSendCmdDelItem(false, INVLOC_HAND_LEFT); - leftHandItem._itype = ITYPE_NONE; + leftHandItem._itype = ItemType::None; } } @@ -796,7 +796,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) if (!automaticMove || automaticallyMoved) { NetSendCmdDelItem(false, INVLOC_HAND_RIGHT); - rightHandItem._itype = ITYPE_NONE; + rightHandItem._itype = ItemType::None; } } @@ -810,7 +810,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) if (!automaticMove || automaticallyMoved) { NetSendCmdDelItem(false, INVLOC_CHEST); - chestItem._itype = ITYPE_NONE; + chestItem._itype = ItemType::None; } } @@ -844,14 +844,14 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } if (!automaticMove || automaticallyMoved) { - beltItem._itype = ITYPE_NONE; + beltItem._itype = ItemType::None; drawsbarflag = true; } } } if (!holdItem.isEmpty()) { - if (holdItem._itype == ITYPE_GOLD) { + if (holdItem._itype == ItemType::Gold) { player._pGold = CalculateGold(player); } @@ -874,7 +874,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } } - holdItem._itype = ITYPE_NONE; + holdItem._itype = ItemType::None; } else { NewCursor(holdItem._iCurs + CURSOR_FIRSTITEM); if (!IsHardwareCursor()) { @@ -991,7 +991,7 @@ void CleanupItems(Item *item, int ii) dItem[item->position.x][item->position.y] = 0; if (currlevel == 21 && item->position == CornerStone.position) { - CornerStone.item._itype = ITYPE_NONE; + CornerStone.item._itype = ItemType::None; CornerStone.item._iSelFlag = 0; CornerStone.item.position = { 0, 0 }; CornerStone.item._iAnimFlag = false; @@ -1163,7 +1163,7 @@ void DrawInv(const Surface &out) if (slot == INVLOC_HAND_LEFT) { if (myPlayer.InvBody[slot]._iLoc == ILOC_TWOHAND) { if (myPlayer._pClass != HeroClass::Barbarian - || IsNoneOf(myPlayer.InvBody[slot]._itype, ITYPE_SWORD, ITYPE_MACE)) { + || IsNoneOf(myPlayer.InvBody[slot]._itype, ItemType::Sword, ItemType::Mace)) { InvDrawSlotBack(out, GetPanelPosition(UiPanels::Inventory, slotPos[INVLOC_HAND_RIGHT]), { slotSize[INVLOC_HAND_RIGHT].width * InventorySlotSizeInPixels.width, slotSize[INVLOC_HAND_RIGHT].height * InventorySlotSizeInPixels.height }); LightTableIndex = 0; cel_transparency_active = true; @@ -1245,7 +1245,7 @@ void DrawInvBelt(const Surface &out) if (AllItemsList[myPlayer.SpdList[i].IDidx].iUsable && myPlayer.SpdList[i]._iStatFlag - && myPlayer.SpdList[i]._itype != ITYPE_GOLD) { + && myPlayer.SpdList[i]._itype != ItemType::Gold) { snprintf(tempstr, sizeof(tempstr) / sizeof(*tempstr), "%i", i + 1); DrawString(out, tempstr, { position - Displacement { 0, 12 }, InventorySlotSizeInPixels }, UiFlags::ColorSilver | UiFlags::AlignRight); } @@ -1410,7 +1410,7 @@ bool GoldAutoPlace(Player &player) bool done = false; for (int i = 0; i < player._pNumInv && !done; i++) { - if (player.InvList[i]._itype != ITYPE_GOLD) + if (player.InvList[i]._itype != ItemType::Gold) continue; if (player.InvList[i]._ivalue >= MaxGold) continue; @@ -1487,9 +1487,9 @@ void CheckInvSwap(Player &player, BYTE bLoc, int idx, uint16_t wCI, int seed, bo player.InvBody[bLoc] = player.HoldItem; if (bLoc == INVLOC_HAND_LEFT && player.HoldItem._iLoc == ILOC_TWOHAND) { - player.InvBody[INVLOC_HAND_RIGHT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_RIGHT]._itype = ItemType::None; } else if (bLoc == INVLOC_HAND_RIGHT && player.HoldItem._iLoc == ILOC_TWOHAND) { - player.InvBody[INVLOC_HAND_LEFT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_LEFT]._itype = ItemType::None; } } @@ -1499,7 +1499,7 @@ void CheckInvSwap(Player &player, BYTE bLoc, int idx, uint16_t wCI, int seed, bo void inv_update_rem_item(Player &player, BYTE iv) { if (iv < NUM_INVLOC) { - player.InvBody[iv]._itype = ITYPE_NONE; + player.InvBody[iv]._itype = ItemType::None; } CalcPlrInv(player, player._pmode != PM_DEATH); @@ -1556,7 +1556,7 @@ void InvGetItem(int pnum, Item *item, int ii) CheckBookLevel(player); CheckItemStats(player); bool cursorUpdated = false; - if (player.HoldItem._itype == ITYPE_GOLD && GoldAutoPlace(player)) + if (player.HoldItem._itype == ItemType::Gold && GoldAutoPlace(player)) cursorUpdated = true; CleanupItems(item, ii); pcursitem = -1; @@ -1588,7 +1588,7 @@ void AutoGetItem(int pnum, Item *item, int ii) CheckBookLevel(player); CheckItemStats(player); SetICursor(player.HoldItem._iCurs + CURSOR_FIRSTITEM); - if (player.HoldItem._itype == ITYPE_GOLD) { + if (player.HoldItem._itype == ItemType::Gold) { done = GoldAutoPlace(player); if (!done) { item->_ivalue = player.HoldItem._ivalue; @@ -1615,7 +1615,7 @@ void AutoGetItem(int pnum, Item *item, int ii) player.HoldItem = *item; RespawnItem(item, true); NetSendCmdPItem(true, CMD_RESPAWNITEM, item->position); - player.HoldItem._itype = ITYPE_NONE; + player.HoldItem._itype = ItemType::None; } int FindGetItem(int idx, uint16_t ci, int iseed) @@ -1860,7 +1860,7 @@ int8_t CheckInvHLight() } else if (r >= SLOTXY_HAND_RIGHT_FIRST && r <= SLOTXY_HAND_RIGHT_LAST) { pi = &myPlayer.InvBody[INVLOC_HAND_LEFT]; if (pi->isEmpty() || pi->_iLoc != ILOC_TWOHAND - || (myPlayer._pClass == HeroClass::Barbarian && IsAnyOf(myPlayer.InvBody[INVLOC_HAND_LEFT]._itype, ITYPE_SWORD, ITYPE_MACE))) { + || (myPlayer._pClass == HeroClass::Barbarian && IsAnyOf(myPlayer.InvBody[INVLOC_HAND_LEFT]._itype, ItemType::Sword, ItemType::Mace))) { rv = INVLOC_HAND_RIGHT; pi = &myPlayer.InvBody[rv]; } else { @@ -1888,7 +1888,7 @@ int8_t CheckInvHLight() if (pi->isEmpty()) return -1; - if (pi->_itype == ITYPE_GOLD) { + if (pi->_itype == ItemType::Gold) { int nGold = pi->_ivalue; strcpy(infostr, fmt::format(ngettext("{:d} gold piece", "{:d} gold pieces", nGold), nGold).c_str()); } else { @@ -2024,7 +2024,7 @@ bool UseInvItem(int pnum, int cii) return true; } - if (item->_iMiscId == IMISC_NONE && item->_itype == ITYPE_GOLD) { + if (item->_iMiscId == IMISC_NONE && item->_itype == ItemType::Gold) { StartGoldDrop(); return true; } @@ -2094,7 +2094,7 @@ int CalculateGold(Player &player) int gold = 0; for (int i = 0; i < player._pNumInv; i++) { - if (player.InvList[i]._itype == ITYPE_GOLD) + if (player.InvList[i]._itype == ItemType::Gold) gold += player.InvList[i]._ivalue; } diff --git a/Source/itemdat.cpp b/Source/itemdat.cpp index 8263f0b80..f62e29791 100644 --- a/Source/itemdat.cpp +++ b/Source/itemdat.cpp @@ -12,175 +12,175 @@ namespace devilution { /** Contains the data related to each item ID. */ ItemData AllItemsList[] = { // clang-format off -//_item_indexes iRnd, iClass, iLoc, iCurs, itype, iItemId, iName, iSName, iMinMLvl, iDurability, iMinDam, iMaxDam, iMinAC, iMaxAC, iMinStr, iMinMag, iMinDex, iFlags, iMiscId, iSpell, iUsable, iValue -/*IDI_GOLD */ { IDROP_REGULAR, ICLASS_GOLD, ILOC_UNEQUIPABLE, ICURS_GOLD, ITYPE_GOLD, UITYPE_NONE, N_("Gold"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, true, 0 }, -/*IDI_WARRIOR */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SHORT_SWORD, ITYPE_SWORD, UITYPE_NONE, N_("Short Sword"), nullptr, 2, 20, 2, 6, 0, 0, 18, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 50 }, -/*IDI_WARRSHLD */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_BUCKLER, ITYPE_SHIELD, UITYPE_NONE, N_("Buckler"), nullptr, 2, 10, 0, 0, 3, 3, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 50 }, -/*IDI_WARRCLUB */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_CLUB, ITYPE_MACE, UITYPE_SPIKCLUB, N_("Club"), nullptr, 1, 20, 1, 6, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, -/*IDI_ROGUE */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_BOW, ITYPE_BOW, UITYPE_NONE, N_("Short Bow"), nullptr, 1, 30, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 100 }, -/*IDI_SORCERER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ITYPE_STAFF, UITYPE_NONE, N_("Short Staff of Mana"), nullptr, 1, 25, 2, 4, 0, 0, 0, 20, 0, ISPL_NONE, IMISC_STAFF, SPL_MANA, false, 520 }, -/*IDI_CLEAVER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_CLEAVER, ITYPE_AXE, UITYPE_CLEAVER, N_("Cleaver"), nullptr, 10, 10, 4, 24, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 2000 }, -/*IDI_SKCROWN */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_HELM, ICURS_THE_UNDEAD_CROWN, ITYPE_HELM, UITYPE_SKCROWN, N_("The Undead Crown"), nullptr, 0, 50, 0, 0, 15, 15, 0, 0, 0, ISPL_RNDSTEALLIFE, IMISC_UNIQUE, SPL_NULL, false, 10000 }, -/*IDI_INFRARING */ { IDROP_NEVER, ICLASS_MISC, ILOC_RING, ICURS_EMPYREAN_BAND, ITYPE_RING, UITYPE_INFRARING, N_("Empyrean Band"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 8000 }, -/*IDI_ROCK */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_MAGIC_ROCK, ITYPE_MISC, UITYPE_NONE, N_("Magic Rock"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_OPTAMULET */ { IDROP_NEVER, ICLASS_MISC, ILOC_AMULET, ICURS_OPTIC_AMULET, ITYPE_AMULET, UITYPE_OPTAMULET, N_("Optic Amulet"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 5000 }, -/*IDI_TRING */ { IDROP_NEVER, ICLASS_MISC, ILOC_RING, ICURS_RING_OF_TRUTH, ITYPE_RING, UITYPE_TRING, N_("Ring of Truth"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 1000 }, -/*IDI_BANNER */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TAVERN_SIGN, ITYPE_MISC, UITYPE_NONE, N_("Tavern Sign"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_HARCREST */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_HELM, ICURS_HARLEQUIN_CREST, ITYPE_HELM, UITYPE_HARCREST, N_("Harlequin Crest"), nullptr, 0, 15, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 15 }, -/*IDI_STEELVEIL */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_HELM, ICURS_VIEL_OF_STEEL, ITYPE_HELM, UITYPE_STEELVEIL, N_("Veil of Steel"), nullptr, 0, 60, 0, 0, 18, 18, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 0 }, -/*IDI_GLDNELIX */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_GOLDEN_ELIXIR, ITYPE_MISC, UITYPE_ELIXIR, N_("Golden Elixir"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_ANVIL */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_ANVIL_OF_FURY, ITYPE_MISC, UITYPE_NONE, N_("Anvil of Fury"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_MUSHROOM */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BLACK_MUSHROOM, ITYPE_MISC, UITYPE_NONE, N_("Black Mushroom"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_BRAIN */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BRAIN, ITYPE_MISC, UITYPE_NONE, N_("Brain"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_FUNGALTM */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_FUNGAL_TOME, ITYPE_MISC, UITYPE_NONE, N_("Fungal Tome"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_SPECELIX */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SPECTRAL_ELIXIR, ITYPE_MISC, UITYPE_ELIXIR, N_("Spectral Elixir"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SPECELIX, SPL_NULL, false, 0 }, -/*IDI_BLDSTONE */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BLOOD_STONE, ITYPE_MISC, UITYPE_NONE, N_("Blood Stone"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_MAPOFDOOM */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_MAP_OF_THE_STARS, ITYPE_MISC, UITYPE_MAPOFDOOM, N_("Cathedral Map"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_MAPOFDOOM, SPL_NULL, true, 0 }, -/*IDI_EAR */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_EAR_SORCERER, ITYPE_MISC, UITYPE_NONE, N_("Heart"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_EAR, SPL_NULL, false, 0 }, -/*IDI_HEAL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_HEALING, ITYPE_MISC, UITYPE_NONE, N_("Potion of Healing"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_HEAL, SPL_NULL, true, 50 }, -/*IDI_MANA */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_MANA, ITYPE_MISC, UITYPE_NONE, N_("Potion of Mana"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_MANA, SPL_NULL, true, 50 }, -/*IDI_IDENTIFY */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Identify"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_IDENTIFY, true, 200 }, -/*IDI_PORTAL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Town Portal"), nullptr, 4, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_TOWN, true, 200 }, -/*IDI_ARMOFVAL */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_ARMOR, ICURS_ARKAINES_VALOR, ITYPE_MARMOR, UITYPE_ARMOFVAL, N_("Arkaine's Valor"), nullptr, 0, 40, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 0 }, -/*IDI_FULLHEAL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_HEALING, ITYPE_MISC, UITYPE_NONE, N_("Potion of Full Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLHEAL, SPL_NULL, true, 150 }, -/*IDI_FULLMANA */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_MANA, ITYPE_MISC, UITYPE_NONE, N_("Potion of Full Mana"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLMANA, SPL_NULL, true, 150 }, -/*IDI_GRISWOLD */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BROAD_SWORD, ITYPE_SWORD, UITYPE_GRISWOLD, N_("Griswold's Edge"), nullptr, 8, 50, 4, 12, 0, 0, 40, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 750 }, -/*IDI_LGTFORGE */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_ARMOR, ICURS_BOVINE, ITYPE_HARMOR, UITYPE_BOVINE, N_("Bovine Plate"), nullptr, 0, 40, 0, 0, 0, 0, 50, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 0 }, -/*IDI_LAZSTAFF */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_STAFF_OF_LAZARUS, ITYPE_MISC, UITYPE_LAZSTAFF, N_("Staff of Lazarus"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_RESURRECT */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Resurrect"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLLT, SPL_RESURRECT, true, 250 }, -/*IDI_OIL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ITYPE_MISC, UITYPE_NONE, N_("Blacksmith Oil"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILBSMTH, SPL_NULL, true, 100 }, -/*IDI_SHORTSTAFF */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ITYPE_STAFF, UITYPE_NONE, N_("Short Staff"), nullptr, 1, 25, 2, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, -/*IDI_BARDSWORD */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SHORT_SWORD, ITYPE_SWORD, UITYPE_NONE, N_("Sword"), nullptr, 2, 8, 1, 5, 0, 0, 15, 0, 20, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, -/*IDI_BARDDAGGER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_DAGGER, ITYPE_SWORD, UITYPE_NONE, N_("Dagger"), nullptr, 1, 16, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, -/*IDI_RUNEBOMB */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_RUNE_BOMB, ITYPE_MISC, UITYPE_NONE, N_("Rune Bomb"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_THEODORE */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_THEODORE, ITYPE_MISC, UITYPE_NONE, N_("Theodore"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_AURIC */ { IDROP_NEVER, ICLASS_MISC, ILOC_AMULET, ICURS_AURIC_AMULET, ITYPE_MISC, UITYPE_NONE, N_("Auric Amulet"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_AURIC, SPL_NULL, false, 100 }, -/*IDI_NOTE1 */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TORN_NOTE_1, ITYPE_MISC, UITYPE_NONE, N_("Torn Note 1"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_NOTE2 */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TORN_NOTE_2, ITYPE_MISC, UITYPE_NONE, N_("Torn Note 2"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_NOTE3 */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TORN_NOTE_3, ITYPE_MISC, UITYPE_NONE, N_("Torn Note 3"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_FULLNOTE */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_RECONSTRUCTED_NOTE, ITYPE_MISC, UITYPE_NONE, N_("Reconstructed Note"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NOTE, SPL_NULL, true, 0 }, -/*IDI_BROWNSUIT */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BROWN_SUIT, ITYPE_MISC, UITYPE_NONE, N_("Brown Suit"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/*IDI_GREYSUIT */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_GREY_SUIT, ITYPE_MISC, UITYPE_NONE, N_("Grey Suit"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_CAP, ITYPE_HELM, UITYPE_NONE, N_("Cap"), N_("Cap"), 1, 15, 0, 0, 1, 3, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 15 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_SKULL_CAP, ITYPE_HELM, UITYPE_SKULLCAP, N_("Skull Cap"), N_("Cap"), 4, 20, 0, 0, 2, 4, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 25 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_HELM, ITYPE_HELM, UITYPE_HELM, N_("Helm"), N_("Helm"), 8, 30, 0, 0, 4, 6, 25, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 40 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_FULL_HELM, ITYPE_HELM, UITYPE_NONE, N_("Full Helm"), N_("Helm"), 12, 35, 0, 0, 6, 8, 35, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 90 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_CROWN, ITYPE_HELM, UITYPE_CROWN, N_("Crown"), N_("Crown"), 16, 40, 0, 0, 8, 12, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_GREAT_HELM, ITYPE_HELM, UITYPE_GREATHELM, N_("Great Helm"), N_("Helm"), 20, 60, 0, 0, 10, 15, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 400 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_CAPE, ITYPE_LARMOR, UITYPE_CAPE, N_("Cape"), N_("Cape"), 1, 12, 0, 0, 1, 5, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 10 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_RAGS, ITYPE_LARMOR, UITYPE_RAGS, N_("Rags"), N_("Rags"), 1, 6, 0, 0, 2, 6, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 5 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_CLOAK, ITYPE_LARMOR, UITYPE_CLOAK, N_("Cloak"), N_("Cloak"), 2, 18, 0, 0, 3, 7, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 40 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_ROBE, ITYPE_LARMOR, UITYPE_ROBE, N_("Robe"), N_("Robe"), 3, 24, 0, 0, 4, 7, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 75 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_QUILTED_ARMOR, ITYPE_LARMOR, UITYPE_NONE, N_("Quilted Armor"), N_("Armor"), 4, 30, 0, 0, 7, 10, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_LEATHER_ARMOR, ITYPE_LARMOR, UITYPE_LEATHARMOR, N_("Leather Armor"), N_("Armor"), 6, 35, 0, 0, 10, 13, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 300 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_HARD_LEATHER_ARMOR, ITYPE_LARMOR, UITYPE_NONE, N_("Hard Leather Armor"), N_("Armor"), 7, 40, 0, 0, 11, 14, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 450 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_STUDDED_LEATHER_ARMOR, ITYPE_LARMOR, UITYPE_STUDARMOR, N_("Studded Leather Armor"), N_("Armor"), 9, 45, 0, 0, 15, 17, 20, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 700 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_RING_MAIL, ITYPE_MARMOR, UITYPE_NONE, N_("Ring Mail"), N_("Mail"), 11, 50, 0, 0, 17, 20, 25, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 900 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_CHAIN_MAIL, ITYPE_MARMOR, UITYPE_CHAINMAIL, N_("Chain Mail"), N_("Mail"), 13, 55, 0, 0, 18, 22, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1250 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_SCALE_MAIL, ITYPE_MARMOR, UITYPE_NONE, N_("Scale Mail"), N_("Mail"), 15, 60, 0, 0, 23, 28, 35, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2300 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_BREAST_PLATE, ITYPE_HARMOR, UITYPE_BREASTPLATE, N_("Breast Plate"), N_("Plate"), 16, 80, 0, 0, 20, 24, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2800 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_SPLINT_MAIL, ITYPE_MARMOR, UITYPE_NONE, N_("Splint Mail"), N_("Mail"), 17, 65, 0, 0, 30, 35, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 3250 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_FIELD_PLATE, ITYPE_HARMOR, UITYPE_PLATEMAIL, N_("Plate Mail"), N_("Plate"), 19, 75, 0, 0, 42, 50, 60, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 4600 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_FIELD_PLATE, ITYPE_HARMOR, UITYPE_NONE, N_("Field Plate"), N_("Plate"), 21, 80, 0, 0, 40, 45, 65, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 5800 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_GOTHIC_PLATE, ITYPE_HARMOR, UITYPE_NONE, N_("Gothic Plate"), N_("Plate"), 23, 100, 0, 0, 50, 60, 80, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 8000 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_FULL_PLATE_MAIL, ITYPE_HARMOR, UITYPE_FULLPLATE, N_("Full Plate Mail"), N_("Plate"), 25, 90, 0, 0, 60, 75, 90, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 6500 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_BUCKLER, ITYPE_SHIELD, UITYPE_BUCKLER, N_("Buckler"), N_("Shield"), 1, 16, 0, 0, 1, 5, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 30 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_SMALL_SHIELD, ITYPE_SHIELD, UITYPE_SMALLSHIELD, N_("Small Shield"), N_("Shield"), 5, 24, 0, 0, 3, 8, 25, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 90 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_LARGE_SHIELD, ITYPE_SHIELD, UITYPE_LARGESHIELD, N_("Large Shield"), N_("Shield"), 9, 32, 0, 0, 5, 10, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_KITE_SHIELD, ITYPE_SHIELD, UITYPE_KITESHIELD, N_("Kite Shield"), N_("Shield"), 14, 40, 0, 0, 8, 15, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 400 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_TOWER_SHIELD, ITYPE_SHIELD, UITYPE_GOTHSHIELD, N_("Tower Shield"), N_("Shield"), 20, 50, 0, 0, 12, 20, 60, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 850 }, -/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_GOTHIC_SHIELD, ITYPE_SHIELD, UITYPE_GOTHSHIELD, N_("Gothic Shield"), N_("Shield"), 23, 60, 0, 0, 14, 18, 80, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2300 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_HEALING, ITYPE_MISC, UITYPE_NONE, N_("Potion of Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_HEAL, SPL_NULL, true, 50 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_HEALING, ITYPE_MISC, UITYPE_NONE, N_("Potion of Full Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLHEAL, SPL_NULL, true, 150 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_MANA, ITYPE_MISC, UITYPE_NONE, N_("Potion of Mana"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_MANA, SPL_NULL, true, 50 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_MANA, ITYPE_MISC, UITYPE_NONE, N_("Potion of Full Mana"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLMANA, SPL_NULL, true, 150 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_REJUVENATION, ITYPE_MISC, UITYPE_NONE, N_("Potion of Rejuvenation"), nullptr, 3, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_REJUV, SPL_NULL, true, 120 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_REJUVENATION, ITYPE_MISC, UITYPE_NONE, N_("Potion of Full Rejuvenation"), nullptr, 7, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLREJUV, SPL_NULL, true, 600 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ITYPE_MISC, UITYPE_NONE, N_("Blacksmith Oil"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILBSMTH, SPL_NULL, true, 100 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ITYPE_MISC, UITYPE_NONE, N_("Oil of Accuracy"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILACC, SPL_NULL, true, 500 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ITYPE_MISC, UITYPE_NONE, N_("Oil of Sharpness"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILSHARP, SPL_NULL, true, 500 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ITYPE_MISC, UITYPE_NONE, N_("Oil"), nullptr, 10, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILOF, SPL_NULL, true, 0 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_STRENGTH, ITYPE_MISC, UITYPE_NONE, N_("Elixir of Strength"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXSTR, SPL_NULL, true, 5000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_MAGIC, ITYPE_MISC, UITYPE_NONE, N_("Elixir of Magic"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXMAG, SPL_NULL, true, 5000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_DEXTERITY, ITYPE_MISC, UITYPE_NONE, N_("Elixir of Dexterity"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXDEX, SPL_NULL, true, 5000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_VITALITY, ITYPE_MISC, UITYPE_NONE, N_("Elixir of Vitality"), nullptr, 20, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXVIT, SPL_NULL, true, 5000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_HEAL, true, 50 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Search"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_SEARCH, true, 50 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Lightning"), nullptr, 4, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLLT, SPL_LIGHTNING, true, 150 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Identify"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_IDENTIFY, true, 100 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Resurrect"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLLT, SPL_RESURRECT, true, 250 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Fire Wall"), nullptr, 4, 0, 0, 0, 0, 0, 0, 17, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FIREWALL, true, 400 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Inferno"), nullptr, 1, 0, 0, 0, 0, 0, 0, 19, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FLAME, true, 100 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Town Portal"), nullptr, 4, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_TOWN, true, 200 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Flash"), nullptr, 6, 0, 0, 0, 0, 0, 0, 21, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FLASH, true, 500 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Infravision"), nullptr, 8, 0, 0, 0, 0, 0, 0, 23, 0, ISPL_NONE, IMISC_SCROLL, SPL_INFRA, true, 600 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Phasing"), nullptr, 6, 0, 0, 0, 0, 0, 0, 25, 0, ISPL_NONE, IMISC_SCROLL, SPL_RNDTELEPORT, true, 200 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Mana Shield"), nullptr, 8, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_MANASHIELD, true, 1200 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Flame Wave"), nullptr, 10, 0, 0, 0, 0, 0, 0, 29, 0, ISPL_NONE, IMISC_SCROLLT, SPL_WAVE, true, 650 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Fireball"), nullptr, 8, 0, 0, 0, 0, 0, 0, 31, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FIREBALL, true, 300 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Stone Curse"), nullptr, 6, 0, 0, 0, 0, 0, 0, 33, 0, ISPL_NONE, IMISC_SCROLLT, SPL_STONE, true, 800 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Chain Lightning"), nullptr, 10, 0, 0, 0, 0, 0, 0, 35, 0, ISPL_NONE, IMISC_SCROLLT, SPL_CHAIN, true, 750 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Guardian"), nullptr, 12, 0, 0, 0, 0, 0, 0, 47, 0, ISPL_NONE, IMISC_SCROLLT, SPL_GUARDIAN, true, 950 }, -/* */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, "Non Item", nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Nova"), nullptr, 14, 0, 0, 0, 0, 0, 0, 57, 0, ISPL_NONE, IMISC_SCROLL, SPL_NOVA, true, 1300 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Golem"), nullptr, 10, 0, 0, 0, 0, 0, 0, 51, 0, ISPL_NONE, IMISC_SCROLLT, SPL_GOLEM, true, 1100 }, -/* */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, "Scroll of None", nullptr, 99, 0, 0, 0, 0, 0, 0, 61, 0, ISPL_NONE, IMISC_SCROLLT, SPL_NULL, true, 1000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Teleport"), nullptr, 14, 0, 0, 0, 0, 0, 0, 81, 0, ISPL_NONE, IMISC_SCROLL, SPL_TELEPORT, true, 3000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ITYPE_MISC, UITYPE_NONE, N_("Scroll of Apocalypse"), nullptr, 22, 0, 0, 0, 0, 0, 0, 117, 0, ISPL_NONE, IMISC_SCROLL, SPL_APOCA, true, 2000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ITYPE_MISC, UITYPE_NONE, N_("Book of "), nullptr, 2, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ITYPE_MISC, UITYPE_NONE, N_("Book of "), nullptr, 8, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ITYPE_MISC, UITYPE_NONE, N_("Book of "), nullptr, 14, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ITYPE_MISC, UITYPE_NONE, N_("Book of "), nullptr, 20, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_DAGGER, ITYPE_SWORD, UITYPE_DAGGER, N_("Dagger"), N_("Dagger"), 1, 16, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 60 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SHORT_SWORD, ITYPE_SWORD, UITYPE_NONE, N_("Short Sword"), N_("Sword"), 1, 24, 2, 6, 0, 0, 18, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 120 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_FALCHION, ITYPE_SWORD, UITYPE_FALCHION, N_("Falchion"), N_("Sword"), 2, 20, 4, 8, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 250 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SCIMITAR, ITYPE_SWORD, UITYPE_SCIMITAR, N_("Scimitar"), N_("Sword"), 4, 28, 3, 7, 0, 0, 23, 0, 23, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_CLAYMORE, ITYPE_SWORD, UITYPE_CLAYMORE, N_("Claymore"), N_("Sword"), 5, 36, 1, 12, 0, 0, 35, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 450 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BLADE, ITYPE_SWORD, UITYPE_NONE, N_("Blade"), N_("Blade"), 4, 30, 3, 8, 0, 0, 25, 0, 30, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 280 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SABRE, ITYPE_SWORD, UITYPE_SABRE, N_("Sabre"), N_("Sabre"), 1, 45, 1, 8, 0, 0, 17, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 170 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_LONG_SWORD, ITYPE_SWORD, UITYPE_LONGSWR, N_("Long Sword"), N_("Sword"), 6, 40, 2, 10, 0, 0, 30, 0, 30, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 350 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BROAD_SWORD, ITYPE_SWORD, UITYPE_BROADSWR, N_("Broad Sword"), N_("Sword"), 8, 50, 4, 12, 0, 0, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 750 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BASTARD_SWORD, ITYPE_SWORD, UITYPE_BASTARDSWR, N_("Bastard Sword"), N_("Sword"), 10, 60, 6, 15, 0, 0, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1000 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_TWO_HANDED_SWORD, ITYPE_SWORD, UITYPE_TWOHANDSWR, N_("Two-Handed Sword"), N_("Sword"), 14, 75, 8, 16, 0, 0, 65, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1800 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_GREAT_SWORD, ITYPE_SWORD, UITYPE_GREATSWR, N_("Great Sword"), N_("Sword"), 17, 100, 10, 20, 0, 0, 75, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 3000 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SMALL_AXE, ITYPE_AXE, UITYPE_SMALLAXE, N_("Small Axe"), N_("Axe"), 2, 24, 2, 10, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 150 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_AXE, ITYPE_AXE, UITYPE_NONE, N_("Axe"), N_("Axe"), 4, 32, 4, 12, 0, 0, 22, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 450 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LARGE_AXE, ITYPE_AXE, UITYPE_LARGEAXE, N_("Large Axe"), N_("Axe"), 6, 40, 6, 16, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 750 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_BROAD_AXE, ITYPE_AXE, UITYPE_BROADAXE, N_("Broad Axe"), N_("Axe"), 8, 50, 8, 20, 0, 0, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1000 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_BATTLE_AXE, ITYPE_AXE, UITYPE_BATTLEAXE, N_("Battle Axe"), N_("Axe"), 10, 60, 10, 25, 0, 0, 65, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1500 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_GREAT_AXE, ITYPE_AXE, UITYPE_GREATAXE, N_("Great Axe"), N_("Axe"), 12, 75, 12, 30, 0, 0, 80, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2500 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_MACE, ITYPE_MACE, UITYPE_MACE, N_("Mace"), N_("Mace"), 2, 32, 1, 8, 0, 0, 16, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_MORNING_STAR, ITYPE_MACE, UITYPE_MORNSTAR, N_("Morning Star"), N_("Mace"), 3, 40, 1, 10, 0, 0, 26, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 300 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_WAR_HAMMER, ITYPE_MACE, UITYPE_WARHAMMER, N_("War Hammer"), N_("Hammer"), 5, 50, 5, 9, 0, 0, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 600 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SPIKED_CLUB, ITYPE_MACE, UITYPE_SPIKCLUB, N_("Spiked Club"), N_("Club"), 4, 20, 3, 6, 0, 0, 18, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 225 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_CLUB, ITYPE_MACE, UITYPE_SPIKCLUB, N_("Club"), N_("Club"), 1, 20, 1, 6, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_FLAIL, ITYPE_MACE, UITYPE_FLAIL, N_("Flail"), N_("Flail"), 7, 36, 2, 12, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 500 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_MAUL, ITYPE_MACE, UITYPE_MAUL, N_("Maul"), N_("Maul"), 10, 50, 6, 20, 0, 0, 55, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 900 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_BOW, ITYPE_BOW, UITYPE_SHORTBOW, N_("Short Bow"), N_("Bow"), 1, 30, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 100 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_HUNTERS_BOW, ITYPE_BOW, UITYPE_HUNTBOW, N_("Hunter's Bow"), N_("Bow"), 3, 40, 2, 5, 0, 0, 20, 0, 35, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 350 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_HUNTERS_BOW, ITYPE_BOW, UITYPE_LONGBOW, N_("Long Bow"), N_("Bow"), 5, 35, 1, 6, 0, 0, 25, 0, 30, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 250 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_COMPOSITE_BOW, ITYPE_BOW, UITYPE_COMPBOW, N_("Composite Bow"), N_("Bow"), 7, 45, 3, 6, 0, 0, 25, 0, 40, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 600 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_BATTLE_BOW, ITYPE_BOW, UITYPE_NONE, N_("Short Battle Bow"), N_("Bow"), 9, 45, 3, 7, 0, 0, 30, 0, 50, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 750 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LONG_WAR_BOW, ITYPE_BOW, UITYPE_BATTLEBOW, N_("Long Battle Bow"), N_("Bow"), 11, 50, 1, 10, 0, 0, 30, 0, 60, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1000 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_WAR_BOW, ITYPE_BOW, UITYPE_NONE, N_("Short War Bow"), N_("Bow"), 15, 55, 4, 8, 0, 0, 35, 0, 70, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1500 }, -/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LONG_WAR_BOW, ITYPE_BOW, UITYPE_WARBOW, N_("Long War Bow"), N_("Bow"), 19, 60, 1, 14, 0, 0, 45, 0, 80, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2000 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ITYPE_STAFF, UITYPE_SHORTSTAFF, N_("Short Staff"), N_("Staff"), 1, 25, 2, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 30 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LONG_STAFF, ITYPE_STAFF, UITYPE_LONGSTAFF, N_("Long Staff"), N_("Staff"), 4, 35, 4, 8, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 100 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_COMPOSITE_STAFF, ITYPE_STAFF, UITYPE_COMPSTAFF, N_("Composite Staff"), N_("Staff"), 6, 45, 5, 10, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 500 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ITYPE_STAFF, UITYPE_QUARSTAFF, N_("Quarter Staff"), N_("Staff"), 9, 55, 6, 12, 0, 0, 20, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 1000 }, -/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_WAR_STAFF, ITYPE_STAFF, UITYPE_WARSTAFF, N_("War Staff"), N_("Staff"), 12, 75, 8, 16, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 1500 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_RING, ICURS_RING, ITYPE_RING, UITYPE_RING, N_("Ring"), N_("Ring"), 5, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RING, SPL_NULL, false, 1000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_RING, ICURS_RING, ITYPE_RING, UITYPE_RING, N_("Ring"), N_("Ring"), 10, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RING, SPL_NULL, false, 1000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_RING, ICURS_RING, ITYPE_RING, UITYPE_RING, N_("Ring"), N_("Ring"), 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RING, SPL_NULL, false, 1000 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_AMULET, ICURS_AMULET, ITYPE_AMULET, UITYPE_AMULET, N_("Amulet"), N_("Amulet"), 8, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_AMULET, SPL_NULL, false, 1200 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_AMULET, ICURS_AMULET, ITYPE_AMULET, UITYPE_AMULET, N_("Amulet"), N_("Amulet"), 16, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_AMULET, SPL_NULL, false, 1200 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_RUNE_OF_FIRE, ITYPE_MISC, UITYPE_NONE, N_("Rune of Fire"), N_("Rune"), 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RUNEF, SPL_NULL, true, 100 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_RUNE_OF_LIGHTNING, ITYPE_MISC, UITYPE_NONE, N_("Rune of Lightning"), N_("Rune"), 3, 0, 0, 0, 0, 0, 0, 13, 0, ISPL_NONE, IMISC_RUNEL, SPL_NULL, true, 200 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_GREATER_RUNE_OF_FIRE, ITYPE_MISC, UITYPE_NONE, N_("Greater Rune of Fire"), N_("Rune"), 7, 0, 0, 0, 0, 0, 0, 42, 0, ISPL_NONE, IMISC_GR_RUNEF, SPL_NULL, true, 400 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_GREATER_RUNE_OF_LIGHTNING, ITYPE_MISC, UITYPE_NONE, N_("Greater Rune of Lightning"), N_("Rune"), 7, 0, 0, 0, 0, 0, 0, 42, 0, ISPL_NONE, IMISC_GR_RUNEL, SPL_NULL, true, 500 }, -/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_RUNE_OF_STONE, ITYPE_MISC, UITYPE_NONE, N_("Rune of Stone"), N_("Rune"), 7, 0, 0, 0, 0, 0, 0, 25, 0, ISPL_NONE, IMISC_RUNES, SPL_NULL, true, 300 }, -/*IDI_SORCERER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ITYPE_STAFF, UITYPE_NONE, N_("Short Staff of Charged Bolt"), nullptr, 1, 25, 2, 4, 0, 0, 0, 20, 0, ISPL_NONE, IMISC_STAFF, SPL_CBOLT, false, 520 }, -/* */ { IDROP_NEVER, ICLASS_NONE, ILOC_INVALID, ICURS_POTION_OF_FULL_MANA, ITYPE_MISC, UITYPE_NONE, nullptr, nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +//_item_indexes iRnd, iClass, iLoc, iCurs, itype, iItemId, iName, iSName, iMinMLvl, iDurability, iMinDam, iMaxDam, iMinAC, iMaxAC, iMinStr, iMinMag, iMinDex, iFlags, iMiscId, iSpell, iUsable, iValue +/*IDI_GOLD */ { IDROP_REGULAR, ICLASS_GOLD, ILOC_UNEQUIPABLE, ICURS_GOLD, ItemType::Gold, UITYPE_NONE, N_("Gold"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, true, 0 }, +/*IDI_WARRIOR */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SHORT_SWORD, ItemType::Sword, UITYPE_NONE, N_("Short Sword"), nullptr, 2, 20, 2, 6, 0, 0, 18, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 50 }, +/*IDI_WARRSHLD */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_BUCKLER, ItemType::Shield, UITYPE_NONE, N_("Buckler"), nullptr, 2, 10, 0, 0, 3, 3, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 50 }, +/*IDI_WARRCLUB */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_CLUB, ItemType::Mace, UITYPE_SPIKCLUB, N_("Club"), nullptr, 1, 20, 1, 6, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, +/*IDI_ROGUE */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_BOW, ItemType::Bow, UITYPE_NONE, N_("Short Bow"), nullptr, 1, 30, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 100 }, +/*IDI_SORCERER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ItemType::Staff, UITYPE_NONE, N_("Short Staff of Mana"), nullptr, 1, 25, 2, 4, 0, 0, 0, 20, 0, ISPL_NONE, IMISC_STAFF, SPL_MANA, false, 520 }, +/*IDI_CLEAVER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_CLEAVER, ItemType::Axe, UITYPE_CLEAVER, N_("Cleaver"), nullptr, 10, 10, 4, 24, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 2000 }, +/*IDI_SKCROWN */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_HELM, ICURS_THE_UNDEAD_CROWN, ItemType::Helm, UITYPE_SKCROWN, N_("The Undead Crown"), nullptr, 0, 50, 0, 0, 15, 15, 0, 0, 0, ISPL_RNDSTEALLIFE, IMISC_UNIQUE, SPL_NULL, false, 10000 }, +/*IDI_INFRARING */ { IDROP_NEVER, ICLASS_MISC, ILOC_RING, ICURS_EMPYREAN_BAND, ItemType::Ring, UITYPE_INFRARING, N_("Empyrean Band"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 8000 }, +/*IDI_ROCK */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_MAGIC_ROCK, ItemType::Misc, UITYPE_NONE, N_("Magic Rock"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_OPTAMULET */ { IDROP_NEVER, ICLASS_MISC, ILOC_AMULET, ICURS_OPTIC_AMULET, ItemType::Amulet, UITYPE_OPTAMULET, N_("Optic Amulet"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 5000 }, +/*IDI_TRING */ { IDROP_NEVER, ICLASS_MISC, ILOC_RING, ICURS_RING_OF_TRUTH, ItemType::Ring, UITYPE_TRING, N_("Ring of Truth"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 1000 }, +/*IDI_BANNER */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TAVERN_SIGN, ItemType::Misc, UITYPE_NONE, N_("Tavern Sign"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_HARCREST */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_HELM, ICURS_HARLEQUIN_CREST, ItemType::Helm, UITYPE_HARCREST, N_("Harlequin Crest"), nullptr, 0, 15, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 15 }, +/*IDI_STEELVEIL */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_HELM, ICURS_VIEL_OF_STEEL, ItemType::Helm, UITYPE_STEELVEIL, N_("Veil of Steel"), nullptr, 0, 60, 0, 0, 18, 18, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 0 }, +/*IDI_GLDNELIX */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_GOLDEN_ELIXIR, ItemType::Misc, UITYPE_ELIXIR, N_("Golden Elixir"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_ANVIL */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_ANVIL_OF_FURY, ItemType::Misc, UITYPE_NONE, N_("Anvil of Fury"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_MUSHROOM */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BLACK_MUSHROOM, ItemType::Misc, UITYPE_NONE, N_("Black Mushroom"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_BRAIN */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BRAIN, ItemType::Misc, UITYPE_NONE, N_("Brain"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_FUNGALTM */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_FUNGAL_TOME, ItemType::Misc, UITYPE_NONE, N_("Fungal Tome"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_SPECELIX */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SPECTRAL_ELIXIR, ItemType::Misc, UITYPE_ELIXIR, N_("Spectral Elixir"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SPECELIX, SPL_NULL, false, 0 }, +/*IDI_BLDSTONE */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BLOOD_STONE, ItemType::Misc, UITYPE_NONE, N_("Blood Stone"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_MAPOFDOOM */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_MAP_OF_THE_STARS, ItemType::Misc, UITYPE_MAPOFDOOM, N_("Cathedral Map"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_MAPOFDOOM, SPL_NULL, true, 0 }, +/*IDI_EAR */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_EAR_SORCERER, ItemType::Misc, UITYPE_NONE, N_("Heart"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_EAR, SPL_NULL, false, 0 }, +/*IDI_HEAL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_HEALING, ItemType::Misc, UITYPE_NONE, N_("Potion of Healing"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_HEAL, SPL_NULL, true, 50 }, +/*IDI_MANA */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_MANA, ItemType::Misc, UITYPE_NONE, N_("Potion of Mana"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_MANA, SPL_NULL, true, 50 }, +/*IDI_IDENTIFY */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Identify"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_IDENTIFY, true, 200 }, +/*IDI_PORTAL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Town Portal"), nullptr, 4, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_TOWN, true, 200 }, +/*IDI_ARMOFVAL */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_ARMOR, ICURS_ARKAINES_VALOR, ItemType::MediumArmor, UITYPE_ARMOFVAL, N_("Arkaine's Valor"), nullptr, 0, 40, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 0 }, +/*IDI_FULLHEAL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_HEALING, ItemType::Misc, UITYPE_NONE, N_("Potion of Full Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLHEAL, SPL_NULL, true, 150 }, +/*IDI_FULLMANA */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_MANA, ItemType::Misc, UITYPE_NONE, N_("Potion of Full Mana"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLMANA, SPL_NULL, true, 150 }, +/*IDI_GRISWOLD */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BROAD_SWORD, ItemType::Sword, UITYPE_GRISWOLD, N_("Griswold's Edge"), nullptr, 8, 50, 4, 12, 0, 0, 40, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 750 }, +/*IDI_LGTFORGE */ { IDROP_NEVER, ICLASS_ARMOR, ILOC_ARMOR, ICURS_BOVINE, ItemType::HeavyArmor, UITYPE_BOVINE, N_("Bovine Plate"), nullptr, 0, 40, 0, 0, 0, 0, 50, 0, 0, ISPL_NONE, IMISC_UNIQUE, SPL_NULL, false, 0 }, +/*IDI_LAZSTAFF */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_STAFF_OF_LAZARUS, ItemType::Misc, UITYPE_LAZSTAFF, N_("Staff of Lazarus"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_RESURRECT */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Resurrect"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLLT, SPL_RESURRECT, true, 250 }, +/*IDI_OIL */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ItemType::Misc, UITYPE_NONE, N_("Blacksmith Oil"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILBSMTH, SPL_NULL, true, 100 }, +/*IDI_SHORTSTAFF */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ItemType::Staff, UITYPE_NONE, N_("Short Staff"), nullptr, 1, 25, 2, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, +/*IDI_BARDSWORD */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SHORT_SWORD, ItemType::Sword, UITYPE_NONE, N_("Sword"), nullptr, 2, 8, 1, 5, 0, 0, 15, 0, 20, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, +/*IDI_BARDDAGGER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_DAGGER, ItemType::Sword, UITYPE_NONE, N_("Dagger"), nullptr, 1, 16, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, +/*IDI_RUNEBOMB */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_RUNE_BOMB, ItemType::Misc, UITYPE_NONE, N_("Rune Bomb"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_THEODORE */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_THEODORE, ItemType::Misc, UITYPE_NONE, N_("Theodore"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_AURIC */ { IDROP_NEVER, ICLASS_MISC, ILOC_AMULET, ICURS_AURIC_AMULET, ItemType::Misc, UITYPE_NONE, N_("Auric Amulet"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_AURIC, SPL_NULL, false, 100 }, +/*IDI_NOTE1 */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TORN_NOTE_1, ItemType::Misc, UITYPE_NONE, N_("Torn Note 1"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_NOTE2 */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TORN_NOTE_2, ItemType::Misc, UITYPE_NONE, N_("Torn Note 2"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_NOTE3 */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_TORN_NOTE_3, ItemType::Misc, UITYPE_NONE, N_("Torn Note 3"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_FULLNOTE */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_RECONSTRUCTED_NOTE, ItemType::Misc, UITYPE_NONE, N_("Reconstructed Note"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NOTE, SPL_NULL, true, 0 }, +/*IDI_BROWNSUIT */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_BROWN_SUIT, ItemType::Misc, UITYPE_NONE, N_("Brown Suit"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/*IDI_GREYSUIT */ { IDROP_NEVER, ICLASS_QUEST, ILOC_UNEQUIPABLE, ICURS_GREY_SUIT, ItemType::Misc, UITYPE_NONE, N_("Grey Suit"), nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_CAP, ItemType::Helm, UITYPE_NONE, N_("Cap"), N_("Cap"), 1, 15, 0, 0, 1, 3, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 15 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_SKULL_CAP, ItemType::Helm, UITYPE_SKULLCAP, N_("Skull Cap"), N_("Cap"), 4, 20, 0, 0, 2, 4, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 25 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_HELM, ItemType::Helm, UITYPE_HELM, N_("Helm"), N_("Helm"), 8, 30, 0, 0, 4, 6, 25, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 40 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_FULL_HELM, ItemType::Helm, UITYPE_NONE, N_("Full Helm"), N_("Helm"), 12, 35, 0, 0, 6, 8, 35, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 90 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_CROWN, ItemType::Helm, UITYPE_CROWN, N_("Crown"), N_("Crown"), 16, 40, 0, 0, 8, 12, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_HELM, ICURS_GREAT_HELM, ItemType::Helm, UITYPE_GREATHELM, N_("Great Helm"), N_("Helm"), 20, 60, 0, 0, 10, 15, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 400 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_CAPE, ItemType::LightArmor, UITYPE_CAPE, N_("Cape"), N_("Cape"), 1, 12, 0, 0, 1, 5, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 10 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_RAGS, ItemType::LightArmor, UITYPE_RAGS, N_("Rags"), N_("Rags"), 1, 6, 0, 0, 2, 6, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 5 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_CLOAK, ItemType::LightArmor, UITYPE_CLOAK, N_("Cloak"), N_("Cloak"), 2, 18, 0, 0, 3, 7, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 40 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_ROBE, ItemType::LightArmor, UITYPE_ROBE, N_("Robe"), N_("Robe"), 3, 24, 0, 0, 4, 7, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 75 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_QUILTED_ARMOR, ItemType::LightArmor, UITYPE_NONE, N_("Quilted Armor"), N_("Armor"), 4, 30, 0, 0, 7, 10, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_LEATHER_ARMOR, ItemType::LightArmor, UITYPE_LEATHARMOR, N_("Leather Armor"), N_("Armor"), 6, 35, 0, 0, 10, 13, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 300 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_HARD_LEATHER_ARMOR, ItemType::LightArmor, UITYPE_NONE, N_("Hard Leather Armor"), N_("Armor"), 7, 40, 0, 0, 11, 14, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 450 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_STUDDED_LEATHER_ARMOR, ItemType::LightArmor, UITYPE_STUDARMOR, N_("Studded Leather Armor"), N_("Armor"), 9, 45, 0, 0, 15, 17, 20, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 700 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_RING_MAIL, ItemType::MediumArmor, UITYPE_NONE, N_("Ring Mail"), N_("Mail"), 11, 50, 0, 0, 17, 20, 25, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 900 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_CHAIN_MAIL, ItemType::MediumArmor, UITYPE_CHAINMAIL, N_("Chain Mail"), N_("Mail"), 13, 55, 0, 0, 18, 22, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1250 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_SCALE_MAIL, ItemType::MediumArmor, UITYPE_NONE, N_("Scale Mail"), N_("Mail"), 15, 60, 0, 0, 23, 28, 35, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2300 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_BREAST_PLATE, ItemType::HeavyArmor, UITYPE_BREASTPLATE, N_("Breast Plate"), N_("Plate"), 16, 80, 0, 0, 20, 24, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2800 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_SPLINT_MAIL, ItemType::MediumArmor, UITYPE_NONE, N_("Splint Mail"), N_("Mail"), 17, 65, 0, 0, 30, 35, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 3250 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_FIELD_PLATE, ItemType::HeavyArmor, UITYPE_PLATEMAIL, N_("Plate Mail"), N_("Plate"), 19, 75, 0, 0, 42, 50, 60, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 4600 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_FIELD_PLATE, ItemType::HeavyArmor, UITYPE_NONE, N_("Field Plate"), N_("Plate"), 21, 80, 0, 0, 40, 45, 65, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 5800 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_GOTHIC_PLATE, ItemType::HeavyArmor, UITYPE_NONE, N_("Gothic Plate"), N_("Plate"), 23, 100, 0, 0, 50, 60, 80, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 8000 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ARMOR, ICURS_FULL_PLATE_MAIL, ItemType::HeavyArmor, UITYPE_FULLPLATE, N_("Full Plate Mail"), N_("Plate"), 25, 90, 0, 0, 60, 75, 90, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 6500 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_BUCKLER, ItemType::Shield, UITYPE_BUCKLER, N_("Buckler"), N_("Shield"), 1, 16, 0, 0, 1, 5, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 30 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_SMALL_SHIELD, ItemType::Shield, UITYPE_SMALLSHIELD, N_("Small Shield"), N_("Shield"), 5, 24, 0, 0, 3, 8, 25, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 90 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_LARGE_SHIELD, ItemType::Shield, UITYPE_LARGESHIELD, N_("Large Shield"), N_("Shield"), 9, 32, 0, 0, 5, 10, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_KITE_SHIELD, ItemType::Shield, UITYPE_KITESHIELD, N_("Kite Shield"), N_("Shield"), 14, 40, 0, 0, 8, 15, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 400 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_TOWER_SHIELD, ItemType::Shield, UITYPE_GOTHSHIELD, N_("Tower Shield"), N_("Shield"), 20, 50, 0, 0, 12, 20, 60, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 850 }, +/* */ { IDROP_REGULAR, ICLASS_ARMOR, ILOC_ONEHAND, ICURS_GOTHIC_SHIELD, ItemType::Shield, UITYPE_GOTHSHIELD, N_("Gothic Shield"), N_("Shield"), 23, 60, 0, 0, 14, 18, 80, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2300 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_HEALING, ItemType::Misc, UITYPE_NONE, N_("Potion of Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_HEAL, SPL_NULL, true, 50 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_HEALING, ItemType::Misc, UITYPE_NONE, N_("Potion of Full Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLHEAL, SPL_NULL, true, 150 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_MANA, ItemType::Misc, UITYPE_NONE, N_("Potion of Mana"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_MANA, SPL_NULL, true, 50 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_MANA, ItemType::Misc, UITYPE_NONE, N_("Potion of Full Mana"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLMANA, SPL_NULL, true, 150 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_REJUVENATION, ItemType::Misc, UITYPE_NONE, N_("Potion of Rejuvenation"), nullptr, 3, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_REJUV, SPL_NULL, true, 120 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_POTION_OF_FULL_REJUVENATION, ItemType::Misc, UITYPE_NONE, N_("Potion of Full Rejuvenation"), nullptr, 7, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_FULLREJUV, SPL_NULL, true, 600 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ItemType::Misc, UITYPE_NONE, N_("Blacksmith Oil"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILBSMTH, SPL_NULL, true, 100 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ItemType::Misc, UITYPE_NONE, N_("Oil of Accuracy"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILACC, SPL_NULL, true, 500 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ItemType::Misc, UITYPE_NONE, N_("Oil of Sharpness"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILSHARP, SPL_NULL, true, 500 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_OIL, ItemType::Misc, UITYPE_NONE, N_("Oil"), nullptr, 10, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_OILOF, SPL_NULL, true, 0 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_STRENGTH, ItemType::Misc, UITYPE_NONE, N_("Elixir of Strength"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXSTR, SPL_NULL, true, 5000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_MAGIC, ItemType::Misc, UITYPE_NONE, N_("Elixir of Magic"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXMAG, SPL_NULL, true, 5000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_DEXTERITY, ItemType::Misc, UITYPE_NONE, N_("Elixir of Dexterity"), nullptr, 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXDEX, SPL_NULL, true, 5000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_ELIXIR_OF_VITALITY, ItemType::Misc, UITYPE_NONE, N_("Elixir of Vitality"), nullptr, 20, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_ELIXVIT, SPL_NULL, true, 5000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Healing"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_HEAL, true, 50 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Search"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_SEARCH, true, 50 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Lightning"), nullptr, 4, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLLT, SPL_LIGHTNING, true, 150 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Identify"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_IDENTIFY, true, 100 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Resurrect"), nullptr, 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLLT, SPL_RESURRECT, true, 250 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Fire Wall"), nullptr, 4, 0, 0, 0, 0, 0, 0, 17, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FIREWALL, true, 400 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Inferno"), nullptr, 1, 0, 0, 0, 0, 0, 0, 19, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FLAME, true, 100 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Town Portal"), nullptr, 4, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_TOWN, true, 200 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Flash"), nullptr, 6, 0, 0, 0, 0, 0, 0, 21, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FLASH, true, 500 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Infravision"), nullptr, 8, 0, 0, 0, 0, 0, 0, 23, 0, ISPL_NONE, IMISC_SCROLL, SPL_INFRA, true, 600 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Phasing"), nullptr, 6, 0, 0, 0, 0, 0, 0, 25, 0, ISPL_NONE, IMISC_SCROLL, SPL_RNDTELEPORT, true, 200 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Mana Shield"), nullptr, 8, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_SCROLL, SPL_MANASHIELD, true, 1200 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Flame Wave"), nullptr, 10, 0, 0, 0, 0, 0, 0, 29, 0, ISPL_NONE, IMISC_SCROLLT, SPL_WAVE, true, 650 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Fireball"), nullptr, 8, 0, 0, 0, 0, 0, 0, 31, 0, ISPL_NONE, IMISC_SCROLLT, SPL_FIREBALL, true, 300 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Stone Curse"), nullptr, 6, 0, 0, 0, 0, 0, 0, 33, 0, ISPL_NONE, IMISC_SCROLLT, SPL_STONE, true, 800 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Chain Lightning"), nullptr, 10, 0, 0, 0, 0, 0, 0, 35, 0, ISPL_NONE, IMISC_SCROLLT, SPL_CHAIN, true, 750 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Guardian"), nullptr, 12, 0, 0, 0, 0, 0, 0, 47, 0, ISPL_NONE, IMISC_SCROLLT, SPL_GUARDIAN, true, 950 }, +/* */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, "Non Item", nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Nova"), nullptr, 14, 0, 0, 0, 0, 0, 0, 57, 0, ISPL_NONE, IMISC_SCROLL, SPL_NOVA, true, 1300 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Golem"), nullptr, 10, 0, 0, 0, 0, 0, 0, 51, 0, ISPL_NONE, IMISC_SCROLLT, SPL_GOLEM, true, 1100 }, +/* */ { IDROP_NEVER, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, "Scroll of None", nullptr, 99, 0, 0, 0, 0, 0, 0, 61, 0, ISPL_NONE, IMISC_SCROLLT, SPL_NULL, true, 1000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Teleport"), nullptr, 14, 0, 0, 0, 0, 0, 0, 81, 0, ISPL_NONE, IMISC_SCROLL, SPL_TELEPORT, true, 3000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_SCROLL_OF, ItemType::Misc, UITYPE_NONE, N_("Scroll of Apocalypse"), nullptr, 22, 0, 0, 0, 0, 0, 0, 117, 0, ISPL_NONE, IMISC_SCROLL, SPL_APOCA, true, 2000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ItemType::Misc, UITYPE_NONE, N_("Book of "), nullptr, 2, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ItemType::Misc, UITYPE_NONE, N_("Book of "), nullptr, 8, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ItemType::Misc, UITYPE_NONE, N_("Book of "), nullptr, 14, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_BOOK_BLUE, ItemType::Misc, UITYPE_NONE, N_("Book of "), nullptr, 20, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_BOOK, SPL_NULL, true, 0 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_DAGGER, ItemType::Sword, UITYPE_DAGGER, N_("Dagger"), N_("Dagger"), 1, 16, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 60 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SHORT_SWORD, ItemType::Sword, UITYPE_NONE, N_("Short Sword"), N_("Sword"), 1, 24, 2, 6, 0, 0, 18, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 120 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_FALCHION, ItemType::Sword, UITYPE_FALCHION, N_("Falchion"), N_("Sword"), 2, 20, 4, 8, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 250 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SCIMITAR, ItemType::Sword, UITYPE_SCIMITAR, N_("Scimitar"), N_("Sword"), 4, 28, 3, 7, 0, 0, 23, 0, 23, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_CLAYMORE, ItemType::Sword, UITYPE_CLAYMORE, N_("Claymore"), N_("Sword"), 5, 36, 1, 12, 0, 0, 35, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 450 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BLADE, ItemType::Sword, UITYPE_NONE, N_("Blade"), N_("Blade"), 4, 30, 3, 8, 0, 0, 25, 0, 30, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 280 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SABRE, ItemType::Sword, UITYPE_SABRE, N_("Sabre"), N_("Sabre"), 1, 45, 1, 8, 0, 0, 17, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 170 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_LONG_SWORD, ItemType::Sword, UITYPE_LONGSWR, N_("Long Sword"), N_("Sword"), 6, 40, 2, 10, 0, 0, 30, 0, 30, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 350 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BROAD_SWORD, ItemType::Sword, UITYPE_BROADSWR, N_("Broad Sword"), N_("Sword"), 8, 50, 4, 12, 0, 0, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 750 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_BASTARD_SWORD, ItemType::Sword, UITYPE_BASTARDSWR, N_("Bastard Sword"), N_("Sword"), 10, 60, 6, 15, 0, 0, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1000 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_TWO_HANDED_SWORD, ItemType::Sword, UITYPE_TWOHANDSWR, N_("Two-Handed Sword"), N_("Sword"), 14, 75, 8, 16, 0, 0, 65, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1800 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_GREAT_SWORD, ItemType::Sword, UITYPE_GREATSWR, N_("Great Sword"), N_("Sword"), 17, 100, 10, 20, 0, 0, 75, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 3000 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SMALL_AXE, ItemType::Axe, UITYPE_SMALLAXE, N_("Small Axe"), N_("Axe"), 2, 24, 2, 10, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 150 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_AXE, ItemType::Axe, UITYPE_NONE, N_("Axe"), N_("Axe"), 4, 32, 4, 12, 0, 0, 22, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 450 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LARGE_AXE, ItemType::Axe, UITYPE_LARGEAXE, N_("Large Axe"), N_("Axe"), 6, 40, 6, 16, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 750 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_BROAD_AXE, ItemType::Axe, UITYPE_BROADAXE, N_("Broad Axe"), N_("Axe"), 8, 50, 8, 20, 0, 0, 50, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1000 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_BATTLE_AXE, ItemType::Axe, UITYPE_BATTLEAXE, N_("Battle Axe"), N_("Axe"), 10, 60, 10, 25, 0, 0, 65, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1500 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_GREAT_AXE, ItemType::Axe, UITYPE_GREATAXE, N_("Great Axe"), N_("Axe"), 12, 75, 12, 30, 0, 0, 80, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2500 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_MACE, ItemType::Mace, UITYPE_MACE, N_("Mace"), N_("Mace"), 2, 32, 1, 8, 0, 0, 16, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 200 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_MORNING_STAR, ItemType::Mace, UITYPE_MORNSTAR, N_("Morning Star"), N_("Mace"), 3, 40, 1, 10, 0, 0, 26, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 300 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_WAR_HAMMER, ItemType::Mace, UITYPE_WARHAMMER, N_("War Hammer"), N_("Hammer"), 5, 50, 5, 9, 0, 0, 40, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 600 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_SPIKED_CLUB, ItemType::Mace, UITYPE_SPIKCLUB, N_("Spiked Club"), N_("Club"), 4, 20, 3, 6, 0, 0, 18, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 225 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_CLUB, ItemType::Mace, UITYPE_SPIKCLUB, N_("Club"), N_("Club"), 1, 20, 1, 6, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 20 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_ONEHAND, ICURS_FLAIL, ItemType::Mace, UITYPE_FLAIL, N_("Flail"), N_("Flail"), 7, 36, 2, 12, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 500 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_MAUL, ItemType::Mace, UITYPE_MAUL, N_("Maul"), N_("Maul"), 10, 50, 6, 20, 0, 0, 55, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 900 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_BOW, ItemType::Bow, UITYPE_SHORTBOW, N_("Short Bow"), N_("Bow"), 1, 30, 1, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 100 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_HUNTERS_BOW, ItemType::Bow, UITYPE_HUNTBOW, N_("Hunter's Bow"), N_("Bow"), 3, 40, 2, 5, 0, 0, 20, 0, 35, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 350 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_HUNTERS_BOW, ItemType::Bow, UITYPE_LONGBOW, N_("Long Bow"), N_("Bow"), 5, 35, 1, 6, 0, 0, 25, 0, 30, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 250 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_COMPOSITE_BOW, ItemType::Bow, UITYPE_COMPBOW, N_("Composite Bow"), N_("Bow"), 7, 45, 3, 6, 0, 0, 25, 0, 40, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 600 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_BATTLE_BOW, ItemType::Bow, UITYPE_NONE, N_("Short Battle Bow"), N_("Bow"), 9, 45, 3, 7, 0, 0, 30, 0, 50, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 750 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LONG_WAR_BOW, ItemType::Bow, UITYPE_BATTLEBOW, N_("Long Battle Bow"), N_("Bow"), 11, 50, 1, 10, 0, 0, 30, 0, 60, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1000 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_WAR_BOW, ItemType::Bow, UITYPE_NONE, N_("Short War Bow"), N_("Bow"), 15, 55, 4, 8, 0, 0, 35, 0, 70, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 1500 }, +/* */ { IDROP_DOUBLE, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LONG_WAR_BOW, ItemType::Bow, UITYPE_WARBOW, N_("Long War Bow"), N_("Bow"), 19, 60, 1, 14, 0, 0, 45, 0, 80, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 2000 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ItemType::Staff, UITYPE_SHORTSTAFF, N_("Short Staff"), N_("Staff"), 1, 25, 2, 4, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 30 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_LONG_STAFF, ItemType::Staff, UITYPE_LONGSTAFF, N_("Long Staff"), N_("Staff"), 4, 35, 4, 8, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 100 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_COMPOSITE_STAFF, ItemType::Staff, UITYPE_COMPSTAFF, N_("Composite Staff"), N_("Staff"), 6, 45, 5, 10, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 500 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ItemType::Staff, UITYPE_QUARSTAFF, N_("Quarter Staff"), N_("Staff"), 9, 55, 6, 12, 0, 0, 20, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 1000 }, +/* */ { IDROP_REGULAR, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_WAR_STAFF, ItemType::Staff, UITYPE_WARSTAFF, N_("War Staff"), N_("Staff"), 12, 75, 8, 16, 0, 0, 30, 0, 0, ISPL_NONE, IMISC_STAFF, SPL_NULL, false, 1500 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_RING, ICURS_RING, ItemType::Ring, UITYPE_RING, N_("Ring"), N_("Ring"), 5, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RING, SPL_NULL, false, 1000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_RING, ICURS_RING, ItemType::Ring, UITYPE_RING, N_("Ring"), N_("Ring"), 10, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RING, SPL_NULL, false, 1000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_RING, ICURS_RING, ItemType::Ring, UITYPE_RING, N_("Ring"), N_("Ring"), 15, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RING, SPL_NULL, false, 1000 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_AMULET, ICURS_AMULET, ItemType::Amulet, UITYPE_AMULET, N_("Amulet"), N_("Amulet"), 8, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_AMULET, SPL_NULL, false, 1200 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_AMULET, ICURS_AMULET, ItemType::Amulet, UITYPE_AMULET, N_("Amulet"), N_("Amulet"), 16, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_AMULET, SPL_NULL, false, 1200 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_RUNE_OF_FIRE, ItemType::Misc, UITYPE_NONE, N_("Rune of Fire"), N_("Rune"), 1, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_RUNEF, SPL_NULL, true, 100 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_RUNE_OF_LIGHTNING, ItemType::Misc, UITYPE_NONE, N_("Rune of Lightning"), N_("Rune"), 3, 0, 0, 0, 0, 0, 0, 13, 0, ISPL_NONE, IMISC_RUNEL, SPL_NULL, true, 200 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_GREATER_RUNE_OF_FIRE, ItemType::Misc, UITYPE_NONE, N_("Greater Rune of Fire"), N_("Rune"), 7, 0, 0, 0, 0, 0, 0, 42, 0, ISPL_NONE, IMISC_GR_RUNEF, SPL_NULL, true, 400 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_GREATER_RUNE_OF_LIGHTNING, ItemType::Misc, UITYPE_NONE, N_("Greater Rune of Lightning"), N_("Rune"), 7, 0, 0, 0, 0, 0, 0, 42, 0, ISPL_NONE, IMISC_GR_RUNEL, SPL_NULL, true, 500 }, +/* */ { IDROP_REGULAR, ICLASS_MISC, ILOC_UNEQUIPABLE, ICURS_RUNE_OF_STONE, ItemType::Misc, UITYPE_NONE, N_("Rune of Stone"), N_("Rune"), 7, 0, 0, 0, 0, 0, 0, 25, 0, ISPL_NONE, IMISC_RUNES, SPL_NULL, true, 300 }, +/*IDI_SORCERER */ { IDROP_NEVER, ICLASS_WEAPON, ILOC_TWOHAND, ICURS_SHORT_STAFF, ItemType::Staff, UITYPE_NONE, N_("Short Staff of Charged Bolt"), nullptr, 1, 25, 2, 4, 0, 0, 0, 20, 0, ISPL_NONE, IMISC_STAFF, SPL_CBOLT, false, 520 }, +/* */ { IDROP_NEVER, ICLASS_NONE, ILOC_INVALID, ICURS_POTION_OF_FULL_MANA, ItemType::Misc, UITYPE_NONE, nullptr, nullptr, 0, 0, 0, 0, 0, 0, 0, 0, 0, ISPL_NONE, IMISC_NONE, SPL_NULL, false, 0 }, // clang-format on }; diff --git a/Source/itemdat.h b/Source/itemdat.h index 01ea63ed8..46c9fe757 100644 --- a/Source/itemdat.h +++ b/Source/itemdat.h @@ -222,22 +222,22 @@ enum item_cursor_graphic : uint8_t { // clang-format on }; -enum ItemType : int8_t { - ITYPE_MISC, - ITYPE_SWORD, - ITYPE_AXE, - ITYPE_BOW, - ITYPE_MACE, - ITYPE_SHIELD, - ITYPE_LARMOR, - ITYPE_HELM, - ITYPE_MARMOR, - ITYPE_HARMOR, - ITYPE_STAFF, - ITYPE_GOLD, - ITYPE_RING, - ITYPE_AMULET, - ITYPE_NONE = -1, +enum class ItemType : int8_t { + Misc, + Sword, + Axe, + Bow, + Mace, + Shield, + LightArmor, + Helm, + MediumArmor, + HeavyArmor, + Staff, + Gold, + Ring, + Amulet, + None = -1, }; enum unique_base_item : int8_t { diff --git a/Source/items.cpp b/Source/items.cpp index a114d7f61..08ae1c69c 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -574,7 +574,7 @@ void CalcPlrBookVals(Player &player) } for (int i = 0; i < player._pNumInv; i++) { - if (player.InvList[i]._itype == ITYPE_MISC && player.InvList[i]._iMiscId == IMISC_BOOK) { + if (player.InvList[i]._itype == ItemType::Misc && player.InvList[i]._iMiscId == IMISC_BOOK) { player.InvList[i]._iMinMag = spelldata[player.InvList[i]._iSpell].sMinInt; int8_t spellLevel = player._pSplLvl[player.InvList[i]._iSpell]; @@ -1372,36 +1372,36 @@ void GetItemBonus(Item &item, int minlvl, int maxlvl, bool onlygood, bool allows minlvl = 25; switch (item._itype) { - case ITYPE_SWORD: - case ITYPE_AXE: - case ITYPE_MACE: + case ItemType::Sword: + case ItemType::Axe: + case ItemType::Mace: GetItemPower(item, minlvl, maxlvl, PLT_WEAP, onlygood); break; - case ITYPE_BOW: + case ItemType::Bow: GetItemPower(item, minlvl, maxlvl, PLT_BOW, onlygood); break; - case ITYPE_SHIELD: + case ItemType::Shield: GetItemPower(item, minlvl, maxlvl, PLT_SHLD, onlygood); break; - case ITYPE_LARMOR: - case ITYPE_HELM: - case ITYPE_MARMOR: - case ITYPE_HARMOR: + case ItemType::LightArmor: + case ItemType::Helm: + case ItemType::MediumArmor: + case ItemType::HeavyArmor: GetItemPower(item, minlvl, maxlvl, PLT_ARMO, onlygood); break; - case ITYPE_STAFF: + case ItemType::Staff: if (allowspells) GetStaffSpell(item, maxlvl, onlygood); else GetItemPower(item, minlvl, maxlvl, PLT_STAFF, onlygood); break; - case ITYPE_RING: - case ITYPE_AMULET: + case ItemType::Ring: + case ItemType::Amulet: GetItemPower(item, minlvl, maxlvl, PLT_MISC, onlygood); break; - case ITYPE_NONE: - case ITYPE_MISC: - case ITYPE_GOLD: + case ItemType::None: + case ItemType::Misc: + case ItemType::Gold: break; } } @@ -1429,9 +1429,9 @@ int RndUItem(Monster *monster) if (2 * curlv < AllItemsList[i].iMinMLvl) okflag = false; } - if (AllItemsList[i].itype == ITYPE_MISC) + if (AllItemsList[i].itype == ItemType::Misc) okflag = false; - if (AllItemsList[i].itype == ITYPE_GOLD) + if (AllItemsList[i].itype == ItemType::Gold) okflag = false; if (AllItemsList[i].iMiscId == IMISC_BOOK) okflag = true; @@ -1753,7 +1753,7 @@ void RepairItem(Item &item, int lvl) } if (item._iMaxDur <= 0) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; return; } @@ -1762,7 +1762,7 @@ void RepairItem(Item &item, int lvl) rep += lvl + GenerateRnd(lvl); item._iMaxDur -= std::max(item._iMaxDur / (lvl + 9), 1); if (item._iMaxDur == 0) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; return; } } while (rep + item._iDurability < item._iMaxDur); @@ -1812,7 +1812,7 @@ bool ApplyOilToItem(Item &item, Player &player) if (item._iClass == ICLASS_ARMOR) { return false; } - if (item._itype == ITYPE_BOW) { + if (item._itype == ItemType::Bow) { return false; } break; @@ -2121,15 +2121,15 @@ void PrintItemInfo(Item &item) bool SmithItemOk(int i) { - if (AllItemsList[i].itype == ITYPE_MISC) + if (AllItemsList[i].itype == ItemType::Misc) return false; - if (AllItemsList[i].itype == ITYPE_GOLD) + if (AllItemsList[i].itype == ItemType::Gold) return false; - if (AllItemsList[i].itype == ITYPE_STAFF && (!gbIsHellfire || AllItemsList[i].iSpell != SPL_NULL)) + if (AllItemsList[i].itype == ItemType::Staff && (!gbIsHellfire || AllItemsList[i].iSpell != SPL_NULL)) return false; - if (AllItemsList[i].itype == ITYPE_RING) + if (AllItemsList[i].itype == ItemType::Ring) return false; - if (AllItemsList[i].itype == ITYPE_AMULET) + if (AllItemsList[i].itype == ItemType::Amulet) return false; return true; @@ -2188,19 +2188,19 @@ void SortVendor(Item *itemList) bool PremiumItemOk(int i) { - if (AllItemsList[i].itype == ITYPE_MISC) + if (AllItemsList[i].itype == ItemType::Misc) return false; - if (AllItemsList[i].itype == ITYPE_GOLD) + if (AllItemsList[i].itype == ItemType::Gold) return false; - if (!gbIsHellfire && AllItemsList[i].itype == ITYPE_STAFF) + if (!gbIsHellfire && AllItemsList[i].itype == ItemType::Staff) return false; if (gbIsMultiplayer) { if (AllItemsList[i].iMiscId == IMISC_OILOF) return false; - if (AllItemsList[i].itype == ITYPE_RING) + if (AllItemsList[i].itype == ItemType::Ring) return false; - if (AllItemsList[i].itype == ITYPE_AMULET) + if (AllItemsList[i].itype == ItemType::Amulet) return false; } @@ -2249,26 +2249,26 @@ void SpawnOnePremium(int i, int plvl, int playerId) } switch (Items[0]._itype) { - case ITYPE_LARMOR: - case ITYPE_MARMOR: - case ITYPE_HARMOR: { + case ItemType::LightArmor: + case ItemType::MediumArmor: + case ItemType::HeavyArmor: { const auto *const mostValuablePlayerArmor = player.GetMostValuableItem( [](const Item &item) { - return IsAnyOf(item._itype, ITYPE_LARMOR, ITYPE_MARMOR, ITYPE_HARMOR); + return IsAnyOf(item._itype, ItemType::LightArmor, ItemType::MediumArmor, ItemType::HeavyArmor); }); itemValue = mostValuablePlayerArmor == nullptr ? 0 : mostValuablePlayerArmor->_iIvalue; break; } - case ITYPE_SHIELD: - case ITYPE_AXE: - case ITYPE_BOW: - case ITYPE_MACE: - case ITYPE_SWORD: - case ITYPE_HELM: - case ITYPE_STAFF: - case ITYPE_RING: - case ITYPE_AMULET: { + case ItemType::Shield: + case ItemType::Axe: + case ItemType::Bow: + case ItemType::Mace: + case ItemType::Sword: + case ItemType::Helm: + case ItemType::Staff: + case ItemType::Ring: + case ItemType::Amulet: { const auto *const mostValuablePlayerItem = player.GetMostValuableItem( [](const Item &item) { return item._itype == Items[0]._itype; }); @@ -2299,7 +2299,7 @@ void SpawnOnePremium(int i, int plvl, int playerId) bool WitchItemOk(int i) { - if (IsNoneOf(AllItemsList[i].itype, ITYPE_MISC, ITYPE_STAFF)) + if (IsNoneOf(AllItemsList[i].itype, ItemType::Misc, ItemType::Staff)) return false; if (AllItemsList[i].iMiscId == IMISC_MANA) return false; @@ -2333,7 +2333,7 @@ int RndBoyItem(int lvl) bool HealerItemOk(int i) { - if (AllItemsList[i].itype != ITYPE_MISC) + if (AllItemsList[i].itype != ItemType::Misc) return false; if (AllItemsList[i].iMiscId == IMISC_SCROLL) @@ -2554,7 +2554,7 @@ BYTE GetOutlineColor(const Item &item, bool checkReq) { if (checkReq && !item._iStatFlag) return ICOL_RED; - if (item._itype == ITYPE_GOLD) + if (item._itype == ItemType::Gold) return ICOL_YELLOW; if (item._iMagical == ITEM_QUALITY_MAGIC) return ICOL_BLUE; @@ -2591,7 +2591,7 @@ void InitItems() for (int i = 0; i < MAXITEMS; i++) { auto &item = Items[i]; - item._itype = ITYPE_NONE; + item._itype = ItemType::None; item.position = { 0, 0 }; item._iAnimFlag = false; item._iSelFlag = 0; @@ -2717,11 +2717,11 @@ void CalcPlrItemVals(Player &player, bool loadgfx) mind = 1; maxd = 1; - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD && player.InvBody[INVLOC_HAND_LEFT]._iStatFlag) { + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Shield && player.InvBody[INVLOC_HAND_LEFT]._iStatFlag) { maxd = 3; } - if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD && player.InvBody[INVLOC_HAND_RIGHT]._iStatFlag) { + if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield && player.InvBody[INVLOC_HAND_RIGHT]._iStatFlag) { maxd = 3; } @@ -2769,8 +2769,8 @@ void CalcPlrItemVals(Player &player, bool loadgfx) if (player._pClass == HeroClass::Rogue) { player._pDamageMod = player._pLevel * (player._pStrength + player._pDexterity) / 200; } else if (player._pClass == HeroClass::Monk) { - if (player.InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_STAFF) { - if (player.InvBody[INVLOC_HAND_RIGHT]._itype != ITYPE_STAFF && (!player.InvBody[INVLOC_HAND_LEFT].isEmpty() || !player.InvBody[INVLOC_HAND_RIGHT].isEmpty())) { + if (player.InvBody[INVLOC_HAND_LEFT]._itype != ItemType::Staff) { + if (player.InvBody[INVLOC_HAND_RIGHT]._itype != ItemType::Staff && (!player.InvBody[INVLOC_HAND_LEFT].isEmpty() || !player.InvBody[INVLOC_HAND_RIGHT].isEmpty())) { player._pDamageMod = player._pLevel * (player._pStrength + player._pDexterity) / 300; } else { player._pDamageMod = player._pLevel * (player._pStrength + player._pDexterity) / 150; @@ -2779,31 +2779,31 @@ void CalcPlrItemVals(Player &player, bool loadgfx) player._pDamageMod = player._pLevel * (player._pStrength + player._pDexterity) / 150; } } else if (player._pClass == HeroClass::Bard) { - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SWORD || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SWORD) + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Sword || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Sword) player._pDamageMod = player._pLevel * (player._pStrength + player._pDexterity) / 150; - else if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_BOW || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_BOW) { + else if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Bow || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Bow) { player._pDamageMod = player._pLevel * (player._pStrength + player._pDexterity) / 250; } else { player._pDamageMod = player._pLevel * player._pStrength / 100; } } else if (player._pClass == HeroClass::Barbarian) { - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_AXE || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_AXE) { + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Axe || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Axe) { player._pDamageMod = player._pLevel * player._pStrength / 75; - } else if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_MACE || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_MACE) { + } else if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Mace || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Mace) { player._pDamageMod = player._pLevel * player._pStrength / 75; - } else if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_BOW || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_BOW) { + } else if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Bow || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Bow) { player._pDamageMod = player._pLevel * player._pStrength / 300; } else { player._pDamageMod = player._pLevel * player._pStrength / 100; } - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) { - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD) + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Shield || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield) { + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Shield) player._pIAC -= player.InvBody[INVLOC_HAND_LEFT]._iAC / 2; - else if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) + else if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield) player._pIAC -= player.InvBody[INVLOC_HAND_RIGHT]._iAC / 2; - } else if (IsNoneOf(player.InvBody[INVLOC_HAND_LEFT]._itype, ITYPE_STAFF, ITYPE_BOW) && IsNoneOf(player.InvBody[INVLOC_HAND_RIGHT]._itype, ITYPE_STAFF, ITYPE_BOW)) { + } else if (IsNoneOf(player.InvBody[INVLOC_HAND_LEFT]._itype, ItemType::Staff, ItemType::Bow) && IsNoneOf(player.InvBody[INVLOC_HAND_RIGHT]._itype, ItemType::Staff, ItemType::Bow)) { player._pDamageMod += player._pLevel * player._pVitality / 100; } player._pIAC += player._pLevel / 4; @@ -2880,11 +2880,11 @@ void CalcPlrItemVals(Player &player, bool loadgfx) player._pBlockFlag = false; if (player._pClass == HeroClass::Monk) { - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_STAFF && player.InvBody[INVLOC_HAND_LEFT]._iStatFlag) { + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Staff && player.InvBody[INVLOC_HAND_LEFT]._iStatFlag) { player._pBlockFlag = true; player._pIFlags |= ISPL_FASTBLOCK; } - if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_STAFF && player.InvBody[INVLOC_HAND_RIGHT]._iStatFlag) { + if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Staff && player.InvBody[INVLOC_HAND_RIGHT]._iStatFlag) { player._pBlockFlag = true; player._pIFlags |= ISPL_FASTBLOCK; } @@ -2896,7 +2896,7 @@ void CalcPlrItemVals(Player &player, bool loadgfx) player._pBlockFlag = true; } - ItemType weaponItemType = ItemType::ITYPE_NONE; + ItemType weaponItemType = ItemType::None; bool holdsShield = false; if (!player.InvBody[INVLOC_HAND_LEFT].isEmpty() && player.InvBody[INVLOC_HAND_LEFT]._iClass == ICLASS_WEAPON @@ -2910,30 +2910,30 @@ void CalcPlrItemVals(Player &player, bool loadgfx) weaponItemType = player.InvBody[INVLOC_HAND_RIGHT]._itype; } - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD && player.InvBody[INVLOC_HAND_LEFT]._iStatFlag) { + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Shield && player.InvBody[INVLOC_HAND_LEFT]._iStatFlag) { player._pBlockFlag = true; holdsShield = true; } - if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD && player.InvBody[INVLOC_HAND_RIGHT]._iStatFlag) { + if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield && player.InvBody[INVLOC_HAND_RIGHT]._iStatFlag) { player._pBlockFlag = true; holdsShield = true; } PlayerWeaponGraphic animWeaponId = holdsShield ? PlayerWeaponGraphic::UnarmedShield : PlayerWeaponGraphic::Unarmed; switch (weaponItemType) { - case ITYPE_SWORD: + case ItemType::Sword: animWeaponId = holdsShield ? PlayerWeaponGraphic::SwordShield : PlayerWeaponGraphic::Sword; break; - case ITYPE_AXE: + case ItemType::Axe: animWeaponId = PlayerWeaponGraphic::Axe; break; - case ITYPE_BOW: + case ItemType::Bow: animWeaponId = PlayerWeaponGraphic::Bow; break; - case ITYPE_MACE: + case ItemType::Mace: animWeaponId = holdsShield ? PlayerWeaponGraphic::MaceShield : PlayerWeaponGraphic::Mace; break; - case ITYPE_STAFF: + case ItemType::Staff: animWeaponId = PlayerWeaponGraphic::Staff; break; default: @@ -2941,11 +2941,11 @@ void CalcPlrItemVals(Player &player, bool loadgfx) } PlayerArmorGraphic animArmorId = PlayerArmorGraphic::Light; - if (player.InvBody[INVLOC_CHEST]._itype == ITYPE_HARMOR && player.InvBody[INVLOC_CHEST]._iStatFlag) { + if (player.InvBody[INVLOC_CHEST]._itype == ItemType::HeavyArmor && player.InvBody[INVLOC_CHEST]._iStatFlag) { if (player._pClass == HeroClass::Monk && player.InvBody[INVLOC_CHEST]._iMagical == ITEM_QUALITY_UNIQUE) player._pIAC += player._pLevel / 2; animArmorId = PlayerArmorGraphic::Heavy; - } else if (player.InvBody[INVLOC_CHEST]._itype == ITYPE_MARMOR && player.InvBody[INVLOC_CHEST]._iStatFlag) { + } else if (player.InvBody[INVLOC_CHEST]._itype == ItemType::MediumArmor && player.InvBody[INVLOC_CHEST]._iStatFlag) { if (player._pClass == HeroClass::Monk) { if (player.InvBody[INVLOC_CHEST]._iMagical == ITEM_QUALITY_UNIQUE) player._pIAC += player._pLevel * 2; @@ -3092,7 +3092,7 @@ void CreatePlrItems(int playerId) auto &player = Players[playerId]; for (auto &item : player.InvBody) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } // converting this to a for loop creates a `rep stosd` instruction, @@ -3100,13 +3100,13 @@ void CreatePlrItems(int playerId) memset(&player.InvGrid, 0, sizeof(player.InvGrid)); for (auto &item : player.InvList) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } player._pNumInv = 0; for (auto &item : player.SpdList) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } switch (player._pClass) { @@ -3297,7 +3297,7 @@ void GetItemAttrs(Item &item, int itemData, int lvl) if (gbIsHellfire && item._iMiscId == IMISC_OILOF) GetOilType(item, lvl); - if (item._itype != ITYPE_GOLD) + if (item._itype != ItemType::Gold) return; int rndv; @@ -3461,7 +3461,7 @@ void CreateTypeItem(Point position, bool onlygood, ItemType itemType, int imisc, int idx; int curlv = ItemsGetCurrlevel(); - if (itemType != ITYPE_GOLD) + if (itemType != ItemType::Gold) idx = RndTypeItems(itemType, imisc, curlv); else idx = IDI_GOLD; @@ -3572,7 +3572,7 @@ void CornerstoneLoad(Point position) return; } - CornerStone.item._itype = ITYPE_NONE; + CornerStone.item._itype = ItemType::None; CornerStone.activated = true; if (dItem[position.x][position.y] != 0) { int ii = dItem[position.x][position.y] - 1; @@ -3748,7 +3748,7 @@ void GetItemFrm(Item &item) void GetItemStr(Item &item) { - if (item._itype != ITYPE_GOLD) { + if (item._itype != ItemType::Gold) { if (item._iIdentified) strcpy(infostr, item._iIName); else @@ -3805,7 +3805,7 @@ void DoRecharge(Player &player, int cii) } else { pi = &player.InvBody[cii]; } - if (pi->_itype == ITYPE_STAFF && pi->_iSpell != SPL_NULL) { + if (pi->_itype == ItemType::Staff && pi->_iSpell != SPL_NULL) { int r = GetSpellBookLevel(pi->_iSpell); r = GenerateRnd(player._pLevel / r) + 1; RechargeItem(*pi, r); @@ -4227,7 +4227,7 @@ void PrintItemDur(Item *x) AddPanelString(tempstr); } } - if (IsAnyOf(x->_itype, ITYPE_RING, ITYPE_AMULET)) + if (IsAnyOf(x->_itype, ItemType::Ring, ItemType::Amulet)) AddPanelString(_("Not Identified")); PrintItemInfo(*x); } @@ -4464,7 +4464,7 @@ void SpawnSmith(int lvl) smithitem[i]._iStatFlag = StoreStatOk(smithitem[i]); } for (int i = iCnt; i < SMITH_ITEMS; i++) - smithitem[i]._itype = ITYPE_NONE; + smithitem[i]._itype = ItemType::None; SortVendor(smithitem + PinnedItemCount); Items[0] = holditem; @@ -4578,7 +4578,7 @@ void SpawnWitch(int lvl) } for (int i = iCnt; i < WITCH_ITEMS; i++) - witchitem[i]._itype = ITYPE_NONE; + witchitem[i]._itype = ItemType::None; SortVendor(witchitem + PinnedItemCount); } @@ -4620,29 +4620,29 @@ void SpawnBoy(int lvl) ivalue = 0; - int itemType = Items[0]._itype; + ItemType itemType = Items[0]._itype; switch (itemType) { - case ITYPE_LARMOR: - case ITYPE_MARMOR: - case ITYPE_HARMOR: { + case ItemType::LightArmor: + case ItemType::MediumArmor: + case ItemType::HeavyArmor: { const auto *const mostValuablePlayerArmor = myPlayer.GetMostValuableItem( [](const Item &item) { - return IsAnyOf(item._itype, ITYPE_LARMOR, ITYPE_MARMOR, ITYPE_HARMOR); + return IsAnyOf(item._itype, ItemType::LightArmor, ItemType::MediumArmor, ItemType::HeavyArmor); }); ivalue = mostValuablePlayerArmor == nullptr ? 0 : mostValuablePlayerArmor->_iIvalue; break; } - case ITYPE_SHIELD: - case ITYPE_AXE: - case ITYPE_BOW: - case ITYPE_MACE: - case ITYPE_SWORD: - case ITYPE_HELM: - case ITYPE_STAFF: - case ITYPE_RING: - case ITYPE_AMULET: { + case ItemType::Shield: + case ItemType::Axe: + case ItemType::Bow: + case ItemType::Mace: + case ItemType::Sword: + case ItemType::Helm: + case ItemType::Staff: + case ItemType::Ring: + case ItemType::Amulet: { const auto *const mostValuablePlayerItem = myPlayer.GetMostValuableItem( [itemType](const Item &item) { return item._itype == itemType; }); @@ -4657,27 +4657,27 @@ void SpawnBoy(int lvl) if (count < 200) { switch (pc) { case HeroClass::Warrior: - if (IsAnyOf(itemType, ITYPE_BOW, ITYPE_STAFF)) + if (IsAnyOf(itemType, ItemType::Bow, ItemType::Staff)) ivalue = INT_MAX; break; case HeroClass::Rogue: - if (IsAnyOf(itemType, ITYPE_SWORD, ITYPE_STAFF, ITYPE_AXE, ITYPE_MACE, ITYPE_SHIELD)) + if (IsAnyOf(itemType, ItemType::Sword, ItemType::Staff, ItemType::Axe, ItemType::Mace, ItemType::Shield)) ivalue = INT_MAX; break; case HeroClass::Sorcerer: - if (IsAnyOf(itemType, ITYPE_STAFF, ITYPE_AXE, ITYPE_BOW, ITYPE_MACE)) + if (IsAnyOf(itemType, ItemType::Staff, ItemType::Axe, ItemType::Bow, ItemType::Mace)) ivalue = INT_MAX; break; case HeroClass::Monk: - if (IsAnyOf(itemType, ITYPE_BOW, ITYPE_MARMOR, ITYPE_SHIELD, ITYPE_MACE)) + if (IsAnyOf(itemType, ItemType::Bow, ItemType::MediumArmor, ItemType::Shield, ItemType::Mace)) ivalue = INT_MAX; break; case HeroClass::Bard: - if (IsAnyOf(itemType, ITYPE_AXE, ITYPE_MACE, ITYPE_STAFF)) + if (IsAnyOf(itemType, ItemType::Axe, ItemType::Mace, ItemType::Staff)) ivalue = INT_MAX; break; case HeroClass::Barbarian: - if (IsAnyOf(itemType, ITYPE_BOW, ITYPE_STAFF)) + if (IsAnyOf(itemType, ItemType::Bow, ItemType::Staff)) ivalue = INT_MAX; break; } @@ -4739,7 +4739,7 @@ void SpawnHealer(int lvl) healitem[i]._iStatFlag = StoreStatOk(healitem[i]); } for (int i = nsi; i < 20; i++) { - healitem[i]._itype = ITYPE_NONE; + healitem[i]._itype = ItemType::None; } SortVendor(healitem + PinnedItemCount); } @@ -4773,7 +4773,7 @@ void CreateSpellBook(Point position, spell_id ispell, bool sendmsg, bool delta) } } - int idx = RndTypeItems(ITYPE_MISC, IMISC_BOOK, lvl); + int idx = RndTypeItems(ItemType::Misc, IMISC_BOOK, lvl); if (ActiveItemCount >= MAXITEMS) return; @@ -4802,13 +4802,13 @@ void CreateMagicArmor(Point position, ItemType itemType, int icurs, bool sendmsg void CreateAmulet(Point position, int lvl, bool sendmsg, bool delta) { - CreateMagicItem(position, lvl, ITYPE_AMULET, IMISC_AMULET, ICURS_AMULET, sendmsg, delta); + CreateMagicItem(position, lvl, ItemType::Amulet, IMISC_AMULET, ICURS_AMULET, sendmsg, delta); } void CreateMagicWeapon(Point position, ItemType itemType, int icurs, bool sendmsg, bool delta) { int imid = IMISC_NONE; - if (itemType == ITYPE_STAFF) + if (itemType == ItemType::Staff) imid = IMISC_STAFF; int curlv = ItemsGetCurrlevel(); diff --git a/Source/items.h b/Source/items.h index c51f35b3f..34e5277bd 100644 --- a/Source/items.h +++ b/Source/items.h @@ -248,7 +248,7 @@ struct Item { */ bool isEmpty() const { - return this->_itype == ITYPE_NONE; + return this->_itype == ItemType::None; } /** @@ -286,11 +286,11 @@ struct Item { } switch (this->_itype) { - case ITYPE_AXE: - case ITYPE_BOW: - case ITYPE_MACE: - case ITYPE_STAFF: - case ITYPE_SWORD: + case ItemType::Axe: + case ItemType::Bow: + case ItemType::Mace: + case ItemType::Staff: + case ItemType::Sword: return true; default: @@ -309,9 +309,9 @@ struct Item { } switch (this->_itype) { - case ITYPE_HARMOR: - case ITYPE_LARMOR: - case ITYPE_MARMOR: + case ItemType::HeavyArmor: + case ItemType::LightArmor: + case ItemType::MediumArmor: return true; default: @@ -325,7 +325,7 @@ struct Item { */ bool isHelm() const { - return !this->isEmpty() && this->_itype == ITYPE_HELM; + return !this->isEmpty() && this->_itype == ItemType::Helm; } /** @@ -334,7 +334,7 @@ struct Item { */ bool isShield() const { - return !this->isEmpty() && this->_itype == ITYPE_SHIELD; + return !this->isEmpty() && this->_itype == ItemType::Shield; } /** @@ -348,8 +348,8 @@ struct Item { } switch (this->_itype) { - case ITYPE_AMULET: - case ITYPE_RING: + case ItemType::Amulet: + case ItemType::Ring: return true; default: diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index 42dbe889c..83e5db553 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -880,16 +880,16 @@ void SaveItem(SaveHelper &file, const Item &item) idx = RemapItemIdxToDiablo(idx); if (gbIsSpawn) idx = RemapItemIdxToSpawn(idx); - int iType = item._itype; + ItemType iType = item._itype; if (idx == -1) { idx = _item_indexes::IDI_GOLD; - iType = ITYPE_NONE; + iType = ItemType::None; } file.WriteLE(item._iSeed); file.WriteLE(item._iCreateInfo); file.Skip(2); // Alignment - file.WriteLE(iType); + file.WriteLE(static_cast(iType)); file.WriteLE(item.position.x); file.WriteLE(item.position.y); file.WriteLE(item._iAnimFlag ? 1 : 0); @@ -1445,7 +1445,7 @@ void RemoveInvalidItem(Item &item) bool isInvalid = !IsItemAvailable(item.IDidx) || !IsUniqueAvailable(item._iUid); if (!gbIsHellfire) { - isInvalid = isInvalid || (item._itype == ITYPE_STAFF && GetSpellStaffLevel(item._iSpell) == -1); + isInvalid = isInvalid || (item._itype == ItemType::Staff && GetSpellStaffLevel(item._iSpell) == -1); isInvalid = isInvalid || (item._iMiscId == IMISC_BOOK && GetSpellBookLevel(item._iSpell) == -1); isInvalid = isInvalid || item._iDamAcFlags != 0; isInvalid = isInvalid || item._iPrePower > IDI_LASTDIABLO; @@ -1453,7 +1453,7 @@ void RemoveInvalidItem(Item &item) } if (isInvalid) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } } diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 8f15f8371..52e40b4d1 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1492,7 +1492,7 @@ void AddStealPotions(Missile &missile, Point /*dst*/, Direction /*midir*/) bool hasPlayedSFX = false; for (int si = 0; si < MAXBELTITEMS; si++) { int ii = -1; - if (player.SpdList[si]._itype == ITYPE_MISC) { + if (player.SpdList[si]._itype == ItemType::Misc) { if (GenerateRnd(2) == 0) continue; switch (player.SpdList[si]._iMiscId) { diff --git a/Source/monster.cpp b/Source/monster.cpp index 36f06069b..76290b938 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1083,7 +1083,7 @@ void DiabloDeath(Monster &diablo, bool sendmsg) void SpawnLoot(Monster &monster, bool sendmsg) { if (Quests[Q_GARBUD].IsAvailable() && monster._uniqtype - 1 == UMT_GARBUD) { - CreateTypeItem(monster.position.tile + Displacement { 1, 1 }, true, ITYPE_MACE, IMISC_NONE, true, false); + CreateTypeItem(monster.position.tile + Displacement { 1, 1 }, true, ItemType::Mace, IMISC_NONE, true, false); } else if (monster._uniqtype - 1 == UMT_DEFILER) { if (effect_is_playing(USFX_DEFILER8)) stream_stop(); @@ -1104,9 +1104,9 @@ void SpawnLoot(Monster &monster, bool sendmsg) stream_stop(); Quests[Q_NAKRUL]._qlog = false; UberDiabloMonsterIndex = -2; - CreateMagicWeapon(monster.position.tile, ITYPE_SWORD, ICURS_GREAT_SWORD, false, true); - CreateMagicWeapon(monster.position.tile, ITYPE_STAFF, ICURS_WAR_STAFF, false, true); - CreateMagicWeapon(monster.position.tile, ITYPE_BOW, ICURS_LONG_WAR_BOW, false, true); + CreateMagicWeapon(monster.position.tile, ItemType::Sword, ICURS_GREAT_SWORD, false, true); + CreateMagicWeapon(monster.position.tile, ItemType::Staff, ICURS_WAR_STAFF, false, true); + CreateMagicWeapon(monster.position.tile, ItemType::Bow, ICURS_LONG_WAR_BOW, false, true); CreateSpellBook(monster.position.tile, SPL_APOCA, false, true); } else if (monster.MType->mtype != MT_GOLEM) { SpawnItem(monster, monster.position.tile, sendmsg); @@ -1736,7 +1736,7 @@ bool MonsterTalk(Monster &monster) && (monster._mFlags & MFLAG_QUEST_COMPLETE) == 0) { Quests[Q_ZHAR]._qactive = QUEST_ACTIVE; Quests[Q_ZHAR]._qlog = true; - CreateTypeItem(monster.position.tile + Displacement { 1, 1 }, false, ITYPE_MISC, IMISC_BOOK, true, false); + CreateTypeItem(monster.position.tile + Displacement { 1, 1 }, false, ItemType::Misc, IMISC_BOOK, true, false); monster._mFlags |= MFLAG_QUEST_COMPLETE; } if (monster._uniqtype - 1 == UMT_SNOTSPIL) { diff --git a/Source/objects.cpp b/Source/objects.cpp index 6a9eea0ae..1e399ac52 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2451,17 +2451,17 @@ void OperateSlainHero(int pnum, int i) auto &player = Players[pnum]; if (player._pClass == HeroClass::Warrior) { - CreateMagicArmor(Objects[i].position, ITYPE_HARMOR, ICURS_BREAST_PLATE, false, true); + CreateMagicArmor(Objects[i].position, ItemType::HeavyArmor, ICURS_BREAST_PLATE, false, true); } else if (player._pClass == HeroClass::Rogue) { - CreateMagicWeapon(Objects[i].position, ITYPE_BOW, ICURS_LONG_WAR_BOW, false, true); + CreateMagicWeapon(Objects[i].position, ItemType::Bow, ICURS_LONG_WAR_BOW, false, true); } else if (player._pClass == HeroClass::Sorcerer) { CreateSpellBook(Objects[i].position, SPL_LIGHTNING, false, true); } else if (player._pClass == HeroClass::Monk) { - CreateMagicWeapon(Objects[i].position, ITYPE_STAFF, ICURS_WAR_STAFF, false, true); + CreateMagicWeapon(Objects[i].position, ItemType::Staff, ICURS_WAR_STAFF, false, true); } else if (player._pClass == HeroClass::Bard) { - CreateMagicWeapon(Objects[i].position, ITYPE_SWORD, ICURS_BASTARD_SWORD, false, true); + CreateMagicWeapon(Objects[i].position, ItemType::Sword, ICURS_BASTARD_SWORD, false, true); } else if (player._pClass == HeroClass::Barbarian) { - CreateMagicWeapon(Objects[i].position, ITYPE_AXE, ICURS_BATTLE_AXE, false, true); + CreateMagicWeapon(Objects[i].position, ItemType::Axe, ICURS_BATTLE_AXE, false, true); } Players[MyPlayerId].Say(HeroSpeech::RestInPeaceMyFriend); if (pnum == MyPlayerId) @@ -2673,20 +2673,20 @@ bool OperateShrineGloomy(int pnum) // Increment armor class by 2 and decrements max damage by 1. for (Item &item : PlayerItemsRange(player)) { switch (item._itype) { - case ITYPE_SWORD: - case ITYPE_AXE: - case ITYPE_BOW: - case ITYPE_MACE: - case ITYPE_STAFF: + case ItemType::Sword: + case ItemType::Axe: + case ItemType::Bow: + case ItemType::Mace: + case ItemType::Staff: item._iMaxDam--; if (item._iMaxDam < item._iMinDam) item._iMaxDam = item._iMinDam; break; - case ITYPE_SHIELD: - case ITYPE_HELM: - case ITYPE_LARMOR: - case ITYPE_MARMOR: - case ITYPE_HARMOR: + case ItemType::Shield: + case ItemType::Helm: + case ItemType::LightArmor: + case ItemType::MediumArmor: + case ItemType::HeavyArmor: item._iAC += 2; break; default: @@ -2708,18 +2708,18 @@ bool OperateShrineWeird(int pnum) auto &player = Players[pnum]; - if (!player.InvBody[INVLOC_HAND_LEFT].isEmpty() && player.InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_SHIELD) + if (!player.InvBody[INVLOC_HAND_LEFT].isEmpty() && player.InvBody[INVLOC_HAND_LEFT]._itype != ItemType::Shield) player.InvBody[INVLOC_HAND_LEFT]._iMaxDam++; - if (!player.InvBody[INVLOC_HAND_RIGHT].isEmpty() && player.InvBody[INVLOC_HAND_RIGHT]._itype != ITYPE_SHIELD) + if (!player.InvBody[INVLOC_HAND_RIGHT].isEmpty() && player.InvBody[INVLOC_HAND_RIGHT]._itype != ItemType::Shield) player.InvBody[INVLOC_HAND_RIGHT]._iMaxDam++; for (int j = 0; j < player._pNumInv; j++) { switch (player.InvList[j]._itype) { - case ITYPE_SWORD: - case ITYPE_AXE: - case ITYPE_BOW: - case ITYPE_MACE: - case ITYPE_STAFF: + case ItemType::Sword: + case ItemType::Axe: + case ItemType::Bow: + case ItemType::Mace: + case ItemType::Staff: player.InvList[j]._iMaxDam++; break; default: @@ -2767,15 +2767,15 @@ bool OperateShrineStone(int pnum) auto &player = Players[pnum]; for (auto &item : player.InvBody) { - if (item._itype == ITYPE_STAFF) + if (item._itype == ItemType::Staff) item._iCharges = item._iMaxCharges; } for (int j = 0; j < player._pNumInv; j++) { - if (player.InvList[j]._itype == ITYPE_STAFF) + if (player.InvList[j]._itype == ItemType::Staff) player.InvList[j]._iCharges = player.InvList[j]._iMaxCharges; } for (auto &item : player.SpdList) { - if (item._itype == ITYPE_STAFF) + if (item._itype == ItemType::Staff) item._iCharges = item._iMaxCharges; // belt items don't have charges? } @@ -2946,7 +2946,7 @@ bool OperateShrineEldritch(int pnum) auto &player = Players[pnum]; for (int j = 0; j < player._pNumInv; j++) { - if (player.InvList[j]._itype == ITYPE_MISC) { + if (player.InvList[j]._itype == ItemType::Misc) { if (player.InvList[j]._iMiscId == IMISC_HEAL || player.InvList[j]._iMiscId == IMISC_MANA) { SetPlrHandItem(player.HoldItem, ItemMiscIdIdx(IMISC_REJUV)); @@ -2964,7 +2964,7 @@ bool OperateShrineEldritch(int pnum) } } for (auto &item : player.SpdList) { - if (item._itype == ITYPE_MISC) { + if (item._itype == ItemType::Misc) { if (item._iMiscId == IMISC_HEAL || item._iMiscId == IMISC_MANA) { SetPlrHandItem(player.HoldItem, ItemMiscIdIdx(IMISC_REJUV)); @@ -3020,11 +3020,11 @@ bool OperateShrineDivine(int pnum, Point spawnPosition) auto &player = Players[pnum]; if (currlevel < 4) { - CreateTypeItem(spawnPosition, false, ITYPE_MISC, IMISC_FULLMANA, false, true); - CreateTypeItem(spawnPosition, false, ITYPE_MISC, IMISC_FULLHEAL, false, true); + CreateTypeItem(spawnPosition, false, ItemType::Misc, IMISC_FULLMANA, false, true); + CreateTypeItem(spawnPosition, false, ItemType::Misc, IMISC_FULLHEAL, false, true); } else { - CreateTypeItem(spawnPosition, false, ITYPE_MISC, IMISC_FULLREJUV, false, true); - CreateTypeItem(spawnPosition, false, ITYPE_MISC, IMISC_FULLREJUV, false, true); + CreateTypeItem(spawnPosition, false, ItemType::Misc, IMISC_FULLREJUV, false, true); + CreateTypeItem(spawnPosition, false, ItemType::Misc, IMISC_FULLREJUV, false, true); } player._pMana = player._pMaxMana; @@ -3725,9 +3725,9 @@ void OperateSkelBook(int pnum, int i, bool sendmsg) } SetRndSeed(Objects[i]._oRndSeed); if (GenerateRnd(5) != 0) - CreateTypeItem(Objects[i].position, false, ITYPE_MISC, IMISC_SCROLL, sendmsg, false); + CreateTypeItem(Objects[i].position, false, ItemType::Misc, IMISC_SCROLL, sendmsg, false); else - CreateTypeItem(Objects[i].position, false, ITYPE_MISC, IMISC_BOOK, sendmsg, false); + CreateTypeItem(Objects[i].position, false, ItemType::Misc, IMISC_BOOK, sendmsg, false); if (pnum == MyPlayerId) NetSendCmdParam1(false, CMD_OPERATEOBJ, i); } @@ -3746,7 +3746,7 @@ void OperateBookCase(int pnum, int i, bool sendmsg) return; } SetRndSeed(Objects[i]._oRndSeed); - CreateTypeItem(Objects[i].position, false, ITYPE_MISC, IMISC_BOOK, sendmsg, false); + CreateTypeItem(Objects[i].position, false, ItemType::Misc, IMISC_BOOK, sendmsg, false); if (Quests[Q_ZHAR].IsAvailable()) { auto &zhar = Monsters[MAX_PLRS]; @@ -3792,15 +3792,15 @@ void OperateArmorStand(int pnum, int i, bool sendmsg) SetRndSeed(Objects[i]._oRndSeed); bool uniqueRnd = (GenerateRnd(2) != 0); if (currlevel <= 5) { - CreateTypeItem(Objects[i].position, true, ITYPE_LARMOR, IMISC_NONE, sendmsg, false); + CreateTypeItem(Objects[i].position, true, ItemType::LightArmor, IMISC_NONE, sendmsg, false); } else if (currlevel >= 6 && currlevel <= 9) { - CreateTypeItem(Objects[i].position, uniqueRnd, ITYPE_MARMOR, IMISC_NONE, sendmsg, false); + CreateTypeItem(Objects[i].position, uniqueRnd, ItemType::MediumArmor, IMISC_NONE, sendmsg, false); } else if (currlevel >= 10 && currlevel <= 12) { - CreateTypeItem(Objects[i].position, false, ITYPE_HARMOR, IMISC_NONE, sendmsg, false); + CreateTypeItem(Objects[i].position, false, ItemType::HeavyArmor, IMISC_NONE, sendmsg, false); } else if (currlevel >= 13 && currlevel <= 16) { - CreateTypeItem(Objects[i].position, true, ITYPE_HARMOR, IMISC_NONE, sendmsg, false); + CreateTypeItem(Objects[i].position, true, ItemType::HeavyArmor, IMISC_NONE, sendmsg, false); } else if (currlevel >= 17) { - CreateTypeItem(Objects[i].position, true, ITYPE_HARMOR, IMISC_NONE, sendmsg, false); + CreateTypeItem(Objects[i].position, true, ItemType::HeavyArmor, IMISC_NONE, sendmsg, false); } if (pnum == MyPlayerId) NetSendCmdParam1(false, CMD_OPERATEOBJ, i); @@ -3970,7 +3970,7 @@ void OperateWeaponRack(int pnum, int i, bool sendmsg) return; SetRndSeed(Objects[i]._oRndSeed); - ItemType weaponType { PickRandomlyAmong({ ITYPE_SWORD, ITYPE_AXE, ITYPE_BOW, ITYPE_MACE }) }; + ItemType weaponType { PickRandomlyAmong({ ItemType::Sword, ItemType::Axe, ItemType::Bow, ItemType::Mace }) }; Objects[i]._oSelFlag = 0; Objects[i]._oAnimFrame++; diff --git a/Source/pack.cpp b/Source/pack.cpp index bebc5301d..694a746db 100644 --- a/Source/pack.cpp +++ b/Source/pack.cpp @@ -141,7 +141,7 @@ void UnPackItem(const ItemPack *is, Item *id, bool isHellfire) auto &item = Items[MAXITEMS]; auto idx = static_cast<_item_indexes>(SDL_SwapLE16(is->idx)); if (idx == IDI_NONE) { - id->_itype = ITYPE_NONE; + id->_itype = ItemType::None; return; } @@ -153,7 +153,7 @@ void UnPackItem(const ItemPack *is, Item *id, bool isHellfire) } if (!IsItemAvailable(idx)) { - id->_itype = ITYPE_NONE; + id->_itype = ItemType::None; return; } @@ -253,7 +253,7 @@ void UnPackPlayer(const PlayerPack *pPack, Player &player, bool netSync) if (&player == &Players[MyPlayerId]) { for (int i = 0; i < 20; i++) - witchitem[i]._itype = ITYPE_NONE; + witchitem[i]._itype = ItemType::None; } CalcPlrInv(player, false); diff --git a/Source/panels/charpanel.cpp b/Source/panels/charpanel.cpp index 14a645245..237624860 100644 --- a/Source/panels/charpanel.cpp +++ b/Source/panels/charpanel.cpp @@ -85,7 +85,7 @@ UiFlags GetMaxHealthColor() std::pair GetDamage() { int damageMod = MyPlayer->_pIBonusDamMod; - if (MyPlayer->InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_BOW && MyPlayer->_pClass != HeroClass::Rogue) { + if (MyPlayer->InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Bow && MyPlayer->_pClass != HeroClass::Rogue) { damageMod += MyPlayer->_pDamageMod / 2; } else { damageMod += MyPlayer->_pDamageMod; @@ -158,7 +158,7 @@ PanelEntry panelEntries[] = { { N_("Armor class"), { 253, 163 }, 57, 67, []() { return StyledText { GetValueColor(MyPlayer->_pIBonusAC), fmt::format("{:d}", MyPlayer->GetArmor()) }; } }, { N_("To hit"), { 253, 191 }, 57, 67, - []() { return StyledText { GetValueColor(MyPlayer->_pIBonusToHit), fmt::format("{:d}%", (MyPlayer->InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_BOW ? MyPlayer->GetRangedToHit() : MyPlayer->GetMeleeToHit())) }; } }, + []() { return StyledText { GetValueColor(MyPlayer->_pIBonusToHit), fmt::format("{:d}%", (MyPlayer->InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Bow ? MyPlayer->GetRangedToHit() : MyPlayer->GetMeleeToHit())) }; } }, { N_("Damage"), { 253, 219 }, 57, 67, []() { std::pair dmg = GetDamage(); diff --git a/Source/player.cpp b/Source/player.cpp index a835f647d..4eaa360b5 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -581,7 +581,7 @@ void RespawnDeadItem(Item *itm, Point target) Items[ii].position = target; RespawnItem(&Items[ii], true); - itm->_itype = ITYPE_NONE; + itm->_itype = ItemType::None; } void DeadItem(Player &player, Item *itm, Displacement direction) @@ -619,7 +619,7 @@ int DropGold(int pnum, int amount, bool skipFullStacks) for (int i = 0; i < player._pNumInv && amount > 0; i++) { auto &item = player.InvList[i]; - if (item._itype != ITYPE_GOLD || (skipFullStacks && item._ivalue == MaxGold)) + if (item._itype != ItemType::Gold || (skipFullStacks && item._ivalue == MaxGold)) continue; if (amount < item._ivalue) { @@ -773,7 +773,7 @@ bool WeaponDecay(Player &player, int ii) player.InvBody[ii]._iPLDam -= 5; if (player.InvBody[ii]._iPLDam <= -100) { NetSendCmdDelItem(true, ii); - player.InvBody[ii]._itype = ITYPE_NONE; + player.InvBody[ii]._itype = ItemType::None; CalcPlrInv(player, true); return true; } @@ -810,7 +810,7 @@ bool DamageWeapon(int pnum, int durrnd) player.InvBody[INVLOC_HAND_LEFT]._iDurability--; if (player.InvBody[INVLOC_HAND_LEFT]._iDurability <= 0) { NetSendCmdDelItem(true, INVLOC_HAND_LEFT); - player.InvBody[INVLOC_HAND_LEFT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_LEFT]._itype = ItemType::None; CalcPlrInv(player, true); return true; } @@ -824,13 +824,13 @@ bool DamageWeapon(int pnum, int durrnd) player.InvBody[INVLOC_HAND_RIGHT]._iDurability--; if (player.InvBody[INVLOC_HAND_RIGHT]._iDurability == 0) { NetSendCmdDelItem(true, INVLOC_HAND_RIGHT); - player.InvBody[INVLOC_HAND_RIGHT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_RIGHT]._itype = ItemType::None; CalcPlrInv(player, true); return true; } } - if (player.InvBody[INVLOC_HAND_LEFT].isEmpty() && player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) { + if (player.InvBody[INVLOC_HAND_LEFT].isEmpty() && player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield) { if (player.InvBody[INVLOC_HAND_RIGHT]._iDurability == DUR_INDESTRUCTIBLE) { return false; } @@ -838,13 +838,13 @@ bool DamageWeapon(int pnum, int durrnd) player.InvBody[INVLOC_HAND_RIGHT]._iDurability--; if (player.InvBody[INVLOC_HAND_RIGHT]._iDurability == 0) { NetSendCmdDelItem(true, INVLOC_HAND_RIGHT); - player.InvBody[INVLOC_HAND_RIGHT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_RIGHT]._itype = ItemType::None; CalcPlrInv(player, true); return true; } } - if (player.InvBody[INVLOC_HAND_RIGHT].isEmpty() && player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD) { + if (player.InvBody[INVLOC_HAND_RIGHT].isEmpty() && player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Shield) { if (player.InvBody[INVLOC_HAND_LEFT]._iDurability == DUR_INDESTRUCTIBLE) { return false; } @@ -852,7 +852,7 @@ bool DamageWeapon(int pnum, int durrnd) player.InvBody[INVLOC_HAND_LEFT]._iDurability--; if (player.InvBody[INVLOC_HAND_LEFT]._iDurability == 0) { NetSendCmdDelItem(true, INVLOC_HAND_LEFT); - player.InvBody[INVLOC_HAND_LEFT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_LEFT]._itype = ItemType::None; CalcPlrInv(player, true); return true; } @@ -934,26 +934,26 @@ bool PlrHitMonst(int pnum, int m) } } - int phanditype = ITYPE_NONE; - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SWORD || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SWORD) { - phanditype = ITYPE_SWORD; + ItemType phanditype = ItemType::None; + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Sword || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Sword) { + phanditype = ItemType::Sword; } - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_MACE || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_MACE) { - phanditype = ITYPE_MACE; + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Mace || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Mace) { + phanditype = ItemType::Mace; } switch (monster.MData->mMonstClass) { case MonsterClass::Undead: - if (phanditype == ITYPE_SWORD) { + if (phanditype == ItemType::Sword) { dam -= dam / 2; - } else if (phanditype == ITYPE_MACE) { + } else if (phanditype == ItemType::Mace) { dam += dam / 2; } break; case MonsterClass::Animal: - if (phanditype == ITYPE_MACE) { + if (phanditype == ItemType::Mace) { dam -= dam / 2; - } else if (phanditype == ITYPE_SWORD) { + } else if (phanditype == ItemType::Sword) { dam += dam / 2; } break; @@ -1223,16 +1223,16 @@ bool DoAttack(int pnum) didhit = PlrHitObj(pnum, dx, dy); } if ((player._pClass == HeroClass::Monk - && (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_STAFF || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_STAFF)) + && (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Staff || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Staff)) || (player._pClass == HeroClass::Bard - && player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SWORD && player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SWORD) + && player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Sword && player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Sword) || (player._pClass == HeroClass::Barbarian - && (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_AXE || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_AXE - || (((player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_MACE && player.InvBody[INVLOC_HAND_LEFT]._iLoc == ILOC_TWOHAND) - || (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_MACE && player.InvBody[INVLOC_HAND_RIGHT]._iLoc == ILOC_TWOHAND) - || (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SWORD && player.InvBody[INVLOC_HAND_LEFT]._iLoc == ILOC_TWOHAND) - || (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SWORD && player.InvBody[INVLOC_HAND_RIGHT]._iLoc == ILOC_TWOHAND)) - && !(player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD))))) { + && (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Axe || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Axe + || (((player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Mace && player.InvBody[INVLOC_HAND_LEFT]._iLoc == ILOC_TWOHAND) + || (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Mace && player.InvBody[INVLOC_HAND_RIGHT]._iLoc == ILOC_TWOHAND) + || (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Sword && player.InvBody[INVLOC_HAND_LEFT]._iLoc == ILOC_TWOHAND) + || (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Sword && player.InvBody[INVLOC_HAND_RIGHT]._iLoc == ILOC_TWOHAND)) + && !(player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Shield || player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield))))) { position = player.position.tile + Right(player._pdir); if (dMonster[position.x][position.y] != 0) { int m = abs(dMonster[position.x][position.y]) - 1; @@ -1350,7 +1350,7 @@ void ShieldDur(int pnum) } auto &player = Players[pnum]; - if (player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD) { + if (player.InvBody[INVLOC_HAND_LEFT]._itype == ItemType::Shield) { if (player.InvBody[INVLOC_HAND_LEFT]._iDurability == DUR_INDESTRUCTIBLE) { return; } @@ -1358,17 +1358,17 @@ void ShieldDur(int pnum) player.InvBody[INVLOC_HAND_LEFT]._iDurability--; if (player.InvBody[INVLOC_HAND_LEFT]._iDurability == 0) { NetSendCmdDelItem(true, INVLOC_HAND_LEFT); - player.InvBody[INVLOC_HAND_LEFT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_LEFT]._itype = ItemType::None; CalcPlrInv(player, true); } } - if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) { + if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ItemType::Shield) { if (player.InvBody[INVLOC_HAND_RIGHT]._iDurability != DUR_INDESTRUCTIBLE) { player.InvBody[INVLOC_HAND_RIGHT]._iDurability--; if (player.InvBody[INVLOC_HAND_RIGHT]._iDurability == 0) { NetSendCmdDelItem(true, INVLOC_HAND_RIGHT); - player.InvBody[INVLOC_HAND_RIGHT]._itype = ITYPE_NONE; + player.InvBody[INVLOC_HAND_RIGHT]._itype = ItemType::None; CalcPlrInv(player, true); } } @@ -1440,7 +1440,7 @@ void DamageArmor(int pnum) } else { NetSendCmdDelItem(true, INVLOC_HEAD); } - pi->_itype = ITYPE_NONE; + pi->_itype = ItemType::None; CalcPlrInv(player, true); } @@ -1904,7 +1904,7 @@ void ValidatePlayer() int gt = 0; for (int i = 0; i < myPlayer._pNumInv; i++) { - if (myPlayer.InvList[i]._itype == ITYPE_GOLD) { + if (myPlayer.InvList[i]._itype == ItemType::Gold) { int maxGold = GOLD_MAX_LIMIT; if (gbIsHellfire) { maxGold *= 2; @@ -2048,7 +2048,7 @@ bool Player::TryRemoveInvItemById(int item) void Player::RemoveSpdBarItem(int iv) { - SpdList[iv]._itype = ITYPE_NONE; + SpdList[iv]._itype = ItemType::None; CalcScrolls(); force_redraw = 255; @@ -3036,7 +3036,7 @@ StartPlayerKill(int pnum, int earflag) if (pnum != MyPlayerId && earflag == 0 && !diablolevel) { for (auto &item : player.InvBody) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } CalcPlrInv(player, false); } @@ -3106,7 +3106,7 @@ void StripTopGold(Player &player) Item tmpItem = player.HoldItem; for (int i = 0; i < player._pNumInv; i++) { - if (player.InvList[i]._itype == ITYPE_GOLD) { + if (player.InvList[i]._itype == ItemType::Gold) { if (player.InvList[i]._ivalue > MaxGold) { int val = player.InvList[i]._ivalue - MaxGold; player.InvList[i]._ivalue = MaxGold; diff --git a/Source/player.h b/Source/player.h index 10d780a08..fa89a23a9 100644 --- a/Source/player.h +++ b/Source/player.h @@ -549,7 +549,7 @@ struct Player { void ReadySpellFromEquipment(inv_body_loc bodyLocation) { auto &item = InvBody[bodyLocation]; - if (item._itype == ITYPE_STAFF && item._iSpell != SPL_NULL && item._iCharges > 0) { + if (item._itype == ItemType::Staff && item._iSpell != SPL_NULL && item._iCharges > 0) { _pRSpell = item._iSpell; _pRSplType = RSPLTYPE_CHARGES; force_redraw = 255; diff --git a/Source/qol/autopickup.cpp b/Source/qol/autopickup.cpp index 34ebf98ef..667873213 100644 --- a/Source/qol/autopickup.cpp +++ b/Source/qol/autopickup.cpp @@ -23,7 +23,7 @@ bool HasRoomForGold() // Main item cell. Potentially a gold pile so check it. auto item = Players[MyPlayerId].InvList[idx - 1]; - if (item._itype == ITYPE_GOLD && item._ivalue < MaxGold) + if (item._itype == ItemType::Gold && item._ivalue < MaxGold) return true; } @@ -49,7 +49,7 @@ void AutoGoldPickup(int pnum) if (dItem[tile.x][tile.y] != 0) { int itemIndex = dItem[tile.x][tile.y] - 1; auto &item = Items[itemIndex]; - if (item._itype == ITYPE_GOLD) { + if (item._itype == ItemType::Gold) { NetSendCmdGItem(true, CMD_REQUESTAGITEM, pnum, pnum, itemIndex); item._iRequest = true; PlaySFX(IS_IGRAB); diff --git a/Source/qol/itemlabels.cpp b/Source/qol/itemlabels.cpp index d6c68e624..73857394d 100644 --- a/Source/qol/itemlabels.cpp +++ b/Source/qol/itemlabels.cpp @@ -66,7 +66,7 @@ void AddItemToLabelQueue(int id, int x, int y) Item &item = Items[id]; const char *textOnGround; - if (item._itype == ITYPE_GOLD) { + if (item._itype == ItemType::Gold) { std::sprintf(tempstr, _("%i gold"), item._ivalue); textOnGround = tempstr; } else { diff --git a/Source/stores.cpp b/Source/stores.cpp index e9273712e..9936055e9 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -201,7 +201,7 @@ void PrintStoreItem(Item *x, int l, UiFlags flags) } else { strcat(sstr, _("Indestructible, ")); } - if (x->_itype == ITYPE_MISC) + if (x->_itype == ItemType::Misc) sstr[0] = '\0'; int8_t str = x->_iMinStr; uint8_t mag = x->_iMinMag; @@ -379,11 +379,11 @@ bool SmithSellOk(int i) if (pI->_iMiscId > IMISC_OILFIRST && pI->_iMiscId < IMISC_OILLAST) return true; - if (pI->_itype == ITYPE_MISC) + if (pI->_itype == ItemType::Misc) return false; - if (pI->_itype == ITYPE_GOLD) + if (pI->_itype == ItemType::Gold) return false; - if (pI->_itype == ITYPE_STAFF && (!gbIsHellfire || pI->_iSpell != SPL_NULL)) + if (pI->_itype == ItemType::Staff && (!gbIsHellfire || pI->_iSpell != SPL_NULL)) return false; if (pI->_iClass == ICLASS_QUEST) return false; @@ -428,7 +428,7 @@ void StartSmithSell() storenumh = 0; for (auto &item : storehold) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } const auto &myPlayer = Players[MyPlayerId]; @@ -502,9 +502,9 @@ bool SmithRepairOk(int i) if (myPlayer.InvList[i].isEmpty()) return false; - if (myPlayer.InvList[i]._itype == ITYPE_MISC) + if (myPlayer.InvList[i]._itype == ItemType::Misc) return false; - if (myPlayer.InvList[i]._itype == ITYPE_GOLD) + if (myPlayer.InvList[i]._itype == ItemType::Gold) return false; if (myPlayer.InvList[i]._iDurability == myPlayer.InvList[i]._iMaxDur) return false; @@ -519,7 +519,7 @@ void StartSmithRepair() storenumh = 0; for (auto &item : storehold) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } auto &myPlayer = Players[MyPlayerId]; @@ -678,13 +678,13 @@ bool WitchSellOk(int i) else pI = &Players[MyPlayerId].SpdList[-(i + 1)]; - if (pI->_itype == ITYPE_MISC) + if (pI->_itype == ItemType::Misc) rv = true; if (pI->_iMiscId > 29 && pI->_iMiscId < 41) rv = false; if (pI->_iClass == ICLASS_QUEST) rv = false; - if (pI->_itype == ITYPE_STAFF && (!gbIsHellfire || pI->_iSpell != SPL_NULL)) + if (pI->_itype == ItemType::Staff && (!gbIsHellfire || pI->_iSpell != SPL_NULL)) rv = true; if (pI->IDidx >= IDI_FIRSTQUEST && pI->IDidx <= IDI_LASTQUEST) rv = false; @@ -700,7 +700,7 @@ void StartWitchSell() storenumh = 0; for (auto &item : storehold) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } const auto &myPlayer = Players[MyPlayerId]; @@ -772,7 +772,7 @@ bool WitchRechargeOk(int i) { const auto &item = Players[MyPlayerId].InvList[i]; - if (item._itype == ITYPE_STAFF && item._iCharges != item._iMaxCharges) { + if (item._itype == ItemType::Staff && item._iCharges != item._iMaxCharges) { return true; } @@ -800,13 +800,13 @@ void StartWitchRecharge() storenumh = 0; for (auto &item : storehold) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } const auto &myPlayer = Players[MyPlayerId]; const auto &leftHand = myPlayer.InvBody[INVLOC_HAND_LEFT]; - if ((leftHand._itype == ITYPE_STAFF || leftHand._iMiscId == IMISC_UNIQUE) && leftHand._iCharges != leftHand._iMaxCharges) { + if ((leftHand._itype == ItemType::Staff || leftHand._iMiscId == IMISC_UNIQUE) && leftHand._iCharges != leftHand._iMaxCharges) { rechargeok = true; AddStoreHoldRecharge(leftHand, -1); } @@ -1085,7 +1085,7 @@ void StartStorytellerIdentify() storenumh = 0; for (auto &item : storehold) { - item._itype = ITYPE_NONE; + item._itype = ItemType::None; } auto &myPlayer = Players[MyPlayerId]; @@ -1312,12 +1312,12 @@ void SmithBuyItem() StoreAutoPlace(); int idx = stextvhold + ((stextlhold - stextup) / 4); if (idx == SMITH_ITEMS - 1) { - smithitem[SMITH_ITEMS - 1]._itype = ITYPE_NONE; + smithitem[SMITH_ITEMS - 1]._itype = ItemType::None; } else { for (; !smithitem[idx + 1].isEmpty(); idx++) { smithitem[idx] = smithitem[idx + 1]; } - smithitem[idx]._itype = ITYPE_NONE; + smithitem[idx]._itype = ItemType::None; } CalcPlrInv(myPlayer, true); } @@ -1377,7 +1377,7 @@ void SmithBuyPItem() } } - premiumitems[xx]._itype = ITYPE_NONE; + premiumitems[xx]._itype = ItemType::None; numpremium--; SpawnPremium(MyPlayerId); } @@ -1445,7 +1445,7 @@ bool StoreGoldFit(int idx) for (int i = 0; i < myPlayer._pNumInv; i++) { const auto &item = myPlayer.InvList[i]; - if (item._itype == ITYPE_GOLD && item._ivalue != MaxGold) { + if (item._itype == ItemType::Gold && item._ivalue != MaxGold) { if (cost + item._ivalue <= MaxGold) cost = 0; else @@ -1507,7 +1507,7 @@ void StoreSellItem() myPlayer._pGold += cost; for (int i = 0; i < myPlayer._pNumInv && cost > 0; i++) { auto &item = myPlayer.InvList[i]; - if (item._itype == ITYPE_GOLD && item._ivalue != MaxGold) { + if (item._itype == ItemType::Gold && item._ivalue != MaxGold) { if (cost + item._ivalue <= MaxGold) { item._ivalue += cost; cost = 0; @@ -1642,12 +1642,12 @@ void WitchBuyItem() if (idx >= 3) { if (idx == WITCH_ITEMS - 1) { - witchitem[WITCH_ITEMS - 1]._itype = ITYPE_NONE; + witchitem[WITCH_ITEMS - 1]._itype = ItemType::None; } else { for (; !witchitem[idx + 1].isEmpty(); idx++) { witchitem[idx] = witchitem[idx + 1]; } - witchitem[idx]._itype = ITYPE_NONE; + witchitem[idx]._itype = ItemType::None; } } @@ -1783,7 +1783,7 @@ void BoyBuyItem() auto &myPlayer = Players[MyPlayerId]; TakePlrsMoney(myPlayer.HoldItem._iIvalue); StoreAutoPlace(); - boyitem._itype = ITYPE_NONE; + boyitem._itype = ItemType::None; stextshold = STORE_BOY; CalcPlrInv(myPlayer, true); stextlhold = 12; @@ -1820,12 +1820,12 @@ void HealerBuyItem() } idx = stextvhold + ((stextlhold - stextup) / 4); if (idx == 19) { - healitem[19]._itype = ITYPE_NONE; + healitem[19]._itype = ItemType::None; } else { for (; !healitem[idx + 1].isEmpty(); idx++) { healitem[idx] = healitem[idx + 1]; } - healitem[idx]._itype = ITYPE_NONE; + healitem[idx]._itype = ItemType::None; } CalcPlrInv(myPlayer, true); } @@ -2139,7 +2139,7 @@ int TakeGold(Player &player, int cost, bool skipMaxPiles) { for (int i = 0; i < player._pNumInv; i++) { auto &item = player.InvList[i]; - if (item._itype != ITYPE_GOLD || (skipMaxPiles && item._ivalue == MaxGold)) + if (item._itype != ItemType::Gold || (skipMaxPiles && item._ivalue == MaxGold)) continue; if (cost < item._ivalue) { @@ -2211,9 +2211,9 @@ void InitStores() premiumlevel = 1; for (auto &premiumitem : premiumitems) - premiumitem._itype = ITYPE_NONE; + premiumitem._itype = ItemType::None; - boyitem._itype = ITYPE_NONE; + boyitem._itype = ItemType::None; boylevel = 0; } diff --git a/Source/themes.cpp b/Source/themes.cpp index 581b3e307..f0934408b 100644 --- a/Source/themes.cpp +++ b/Source/themes.cpp @@ -666,7 +666,7 @@ void Theme_Treasure(int t) int rv = GenerateRnd(treasrnd[leveltype - 1]); // BUGFIX: the `2*` in `2*GenerateRnd(treasrnd...) == 0` has no effect, should probably be `GenerateRnd(2*treasrnd...) == 0` if ((2 * GenerateRnd(treasrnd[leveltype - 1])) == 0) { - CreateTypeItem({ xp, yp }, false, ITYPE_GOLD, IMISC_NONE, false, true); + CreateTypeItem({ xp, yp }, false, ItemType::Gold, IMISC_NONE, false, true); ItemNoFlippy(); } if (rv == 0) { diff --git a/test/inv_test.cpp b/test/inv_test.cpp index 70516c44f..366523b6a 100644 --- a/test/inv_test.cpp +++ b/test/inv_test.cpp @@ -12,7 +12,7 @@ void set_up_scroll(Item &item, spell_id spell) pcurs = CURSOR_HAND; leveltype = DTYPE_CATACOMBS; Players[MyPlayerId]._pRSpell = static_cast(spell); - item._itype = ITYPE_MISC; + item._itype = ItemType::Misc; item._iMiscId = IMISC_SCROLL; item._iSpell = spell; } @@ -47,7 +47,7 @@ TEST(Inv, UseScroll_from_inventory_invalid_conditions) { // Empty the belt to prevent using a scroll from the belt for (int i = 0; i < MAXBELTITEMS; i++) { - Players[MyPlayerId].SpdList[i]._itype = ITYPE_NONE; + Players[MyPlayerId].SpdList[i]._itype = ItemType::None; } set_up_scroll(Players[MyPlayerId].InvList[2], SPL_FIREBOLT); @@ -67,7 +67,7 @@ TEST(Inv, UseScroll_from_inventory_invalid_conditions) EXPECT_FALSE(UseScroll()); set_up_scroll(Players[MyPlayerId].InvList[2], SPL_FIREBOLT); - Players[MyPlayerId].InvList[2]._itype = ITYPE_NONE; + Players[MyPlayerId].InvList[2]._itype = ItemType::None; EXPECT_FALSE(UseScroll()); } @@ -94,7 +94,7 @@ TEST(Inv, UseScroll_from_belt_invalid_conditions) EXPECT_FALSE(UseScroll()); set_up_scroll(Players[MyPlayerId].SpdList[2], SPL_FIREBOLT); - Players[MyPlayerId].SpdList[2]._itype = ITYPE_NONE; + Players[MyPlayerId].SpdList[2]._itype = ItemType::None; EXPECT_FALSE(UseScroll()); } @@ -103,10 +103,10 @@ TEST(Inv, CalculateGold) { Players[MyPlayerId]._pNumInv = 10; // Set up 4 slots of gold in the inventory - Players[MyPlayerId].InvList[1]._itype = ITYPE_GOLD; - Players[MyPlayerId].InvList[5]._itype = ITYPE_GOLD; - Players[MyPlayerId].InvList[2]._itype = ITYPE_GOLD; - Players[MyPlayerId].InvList[3]._itype = ITYPE_GOLD; + Players[MyPlayerId].InvList[1]._itype = ItemType::Gold; + Players[MyPlayerId].InvList[5]._itype = ItemType::Gold; + Players[MyPlayerId].InvList[2]._itype = ItemType::Gold; + Players[MyPlayerId].InvList[3]._itype = ItemType::Gold; // Set the gold amount to arbitrary values Players[MyPlayerId].InvList[1]._ivalue = 100; Players[MyPlayerId].InvList[5]._ivalue = 200; @@ -124,11 +124,11 @@ TEST(Inv, GoldAutoPlace) // Put gold into the inventory: // | 1000 | ... | ... - Players[MyPlayerId].InvList[0]._itype = ITYPE_GOLD; + Players[MyPlayerId].InvList[0]._itype = ItemType::Gold; Players[MyPlayerId].InvList[0]._ivalue = 1000; Players[MyPlayerId]._pNumInv = 1; // Put (max gold - 100) gold, which is 4900, into the player's hand - Players[MyPlayerId].HoldItem._itype = ITYPE_GOLD; + Players[MyPlayerId].HoldItem._itype = ItemType::Gold; Players[MyPlayerId].HoldItem._ivalue = GOLD_MAX_LIMIT - 100; GoldAutoPlace(Players[MyPlayerId]); @@ -147,7 +147,7 @@ TEST(Inv, RemoveInvItem) Players[MyPlayerId]._pNumInv = 1; Players[MyPlayerId].InvGrid[0] = 1; Players[MyPlayerId].InvGrid[1] = -1; - Players[MyPlayerId].InvList[0]._itype = ITYPE_MISC; + Players[MyPlayerId].InvList[0]._itype = ItemType::Misc; Players[MyPlayerId].RemoveInvItem(0); EXPECT_EQ(Players[MyPlayerId].InvGrid[0], 0); @@ -164,16 +164,16 @@ TEST(Inv, RemoveInvItem_other_item) Players[MyPlayerId]._pNumInv = 2; Players[MyPlayerId].InvGrid[0] = 1; Players[MyPlayerId].InvGrid[1] = -1; - Players[MyPlayerId].InvList[0]._itype = ITYPE_MISC; + Players[MyPlayerId].InvList[0]._itype = ItemType::Misc; Players[MyPlayerId].InvGrid[2] = 2; - Players[MyPlayerId].InvList[1]._itype = ITYPE_RING; + Players[MyPlayerId].InvList[1]._itype = ItemType::Ring; Players[MyPlayerId].RemoveInvItem(0); EXPECT_EQ(Players[MyPlayerId].InvGrid[0], 0); EXPECT_EQ(Players[MyPlayerId].InvGrid[1], 0); EXPECT_EQ(Players[MyPlayerId].InvGrid[2], 1); - EXPECT_EQ(Players[MyPlayerId].InvList[0]._itype, ITYPE_RING); + EXPECT_EQ(Players[MyPlayerId].InvList[0]._itype, ItemType::Ring); EXPECT_EQ(Players[MyPlayerId]._pNumInv, 1); } @@ -182,13 +182,13 @@ TEST(Inv, RemoveSpdBarItem) { // Clear the belt for (int i = 0; i < MAXBELTITEMS; i++) { - Players[MyPlayerId].SpdList[i]._itype = ITYPE_NONE; + Players[MyPlayerId].SpdList[i]._itype = ItemType::None; } // Put an item in the belt: | x | x | item | x | x | x | x | x | - Players[MyPlayerId].SpdList[3]._itype = ITYPE_MISC; + Players[MyPlayerId].SpdList[3]._itype = ItemType::Misc; Players[MyPlayerId].RemoveSpdBarItem(3); - EXPECT_EQ(Players[MyPlayerId].SpdList[3]._itype, ITYPE_NONE); + EXPECT_EQ(Players[MyPlayerId].SpdList[3]._itype, ItemType::None); } // Test removing a scroll from the inventory @@ -199,7 +199,7 @@ TEST(Inv, RemoveScroll_inventory) // Put a firebolt scroll into the inventory Players[MyPlayerId]._pNumInv = 1; Players[MyPlayerId]._pSpell = static_cast(SPL_FIREBOLT); - Players[MyPlayerId].InvList[0]._itype = ITYPE_MISC; + Players[MyPlayerId].InvList[0]._itype = ItemType::Misc; Players[MyPlayerId].InvList[0]._iMiscId = IMISC_SCROLL; Players[MyPlayerId].InvList[0]._iSpell = SPL_FIREBOLT; @@ -213,14 +213,14 @@ TEST(Inv, RemoveScroll_belt) { // Clear the belt for (int i = 0; i < MAXBELTITEMS; i++) { - Players[MyPlayerId].SpdList[i]._itype = ITYPE_NONE; + Players[MyPlayerId].SpdList[i]._itype = ItemType::None; } // Put a firebolt scroll into the belt Players[MyPlayerId]._pSpell = static_cast(SPL_FIREBOLT); - Players[MyPlayerId].SpdList[3]._itype = ITYPE_MISC; + Players[MyPlayerId].SpdList[3]._itype = ItemType::Misc; Players[MyPlayerId].SpdList[3]._iMiscId = IMISC_SCROLL; Players[MyPlayerId].SpdList[3]._iSpell = SPL_FIREBOLT; RemoveScroll(Players[MyPlayerId]); - EXPECT_EQ(Players[MyPlayerId].SpdList[3]._itype, ITYPE_NONE); + EXPECT_EQ(Players[MyPlayerId].SpdList[3]._itype, ItemType::None); } diff --git a/test/pack_test.cpp b/test/pack_test.cpp index ad4b9a8eb..3a192d420 100644 --- a/test/pack_test.cpp +++ b/test/pack_test.cpp @@ -43,7 +43,7 @@ static void ComparePackedItems(const ItemPack *item1, const ItemPack *item2) } typedef struct TestItemStruct { char _iIName[64]; - int _itype; + ItemType _itype; int _iClass; int _iCurs; int _iIvalue; @@ -231,98 +231,98 @@ const ItemPack PackedDiabloItems[] = { const TestItemStruct DiabloItems[] = { // clang-format off - //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); - { "Amber Great Helm of harmony", 7, 2, 98, 21100, 0, 0, 11, 8388608, 0, 0, 0, 0, 60, 60, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 59, 50, 0, 0, 53 }, - { "Cobalt Amulet of giants", 13, 3, 45, 26840, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 19, 0, 0, 0, 159 }, - { "Brutal Long Sword of gore", 1, 1, 60, 13119, 2, 10, 0, 0, 0, 0, 0, 0, 38, 40, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 2, 61, 30, 0, 30, 125 }, - { "Demonspike Coat", 9, 2, 151, 251175, 0, 0, 100, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 10, 0, 0, 0, 50, 0, 0, 0, 0, 0, -6, 0, 0, 78, 0, 0, 0, 0, -1, -1, 90, 0, 0, 70 }, - { "Steel Ring of the jaguar", 12, 3, 12, 10600, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 156 }, - { "Ring of the heavens", 12, 3, 12, 37552, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 27, 0, 0, 0, 156 }, - { "Ring of sorcery", 12, 3, 12, 10200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 21, 0, 0, 0, 158 }, - { "Tower Shield of the ages", 5, 2, 132, 4850, 0, 0, 18, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 37, 60, 0, 0, 75 }, - { "Sapphire Large Shield", 5, 2, 147, 21000, 0, 0, 7, 0, 0, 0, 0, 0, 12, 32, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, -1, 40, 0, 0, 73 }, - { "Scroll of Town Portal", 0, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, - { "Potion of Mana", 0, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, - { "Potion of Mana", 0, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 79 }, - { "Potion of Full Mana", 0, 3, 0, 150, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 30 }, - { "Potion of Healing", 0, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, - { "Potion of Full Healing", 0, 3, 35, 150, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 29 }, - { "Short Bow", 3, 1, 118, 100, 1, 4, 0, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 4 }, - { "Jade Great Helm of the wolf", 7, 2, 98, 22310, 0, 0, 14, 0, 0, 0, 0, 0, 56, 60, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 0, 2112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 31, 50, 0, 0, 53 }, - { "Steel Ring of accuracy", 12, 3, 12, 13400, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 156 }, - { "Blood Stone", 0, 5, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 21 }, - { "Ring of power", 12, 3, 12, 6400, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 19, 0, 0, 0, 156 }, - { "Gold Amulet of accuracy", 13, 3, 45, 20896, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 159 }, - { "Bastard Sword of the bat", 1, 1, 57, 10500, 6, 15, 0, 8192, 0, 0, 0, 0, 25, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 55, 50, 0, 0, 127 }, - { "Small Shield", 5, 2, 105, 90, 0, 0, 3, 0, 0, 0, 0, 0, 14, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 25, 0, 0, 72 }, - { "Breast Plate of giants", 9, 2, 153, 23250, 0, 0, 20, 0, 0, 0, 0, 0, 44, 80, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 19, 40, 0, 0, 65 }, - { "Scroll of Healing", 0, 3, 1, 50, 0, 0, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 91 }, - { "Potion of Rejuvenation", 0, 3, 37, 120, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 81 }, - { "Potion of Rejuvenation", 0, 3, 37, 120, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 81 }, - { "Potion of Full Rejuvenation", 0, 3, 33, 600, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 82 }, - { "Savage Composite Bow of perfection", 3, 1, 133, 23438, 3, 6, 0, 0, 0, 0, 0, 0, 45, 45, 117, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 25, 0, 40, 146 }, - { "Falchion", 1, 1, 62, 250, 4, 8, 0, 0, 0, 0, 0, 0, 10, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 30, 0, 0, 120 }, - { "Long Sword of vim", 1, 1, 60, 4400, 2, 10, 0, 0, 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 25, 30, 0, 30, 125 }, - { "Frog's Staff of Holy Bolt", 10, 1, 109, 1, 2, 4, 0, 0, 23, 31, 60, 60, 10, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, -1, 0, 20, 0, 151 }, - { "Short Staff of Charged Bolt", 10, 1, 109, 520, 2, 4, 0, 0, 23, 30, 9, 40, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 20, 0, 166 }, - { "Staff of Charged Bolt", 10, 1, 109, 1, 2, 4, 0, 0, 23, 30, 50, 50, 18, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 25, 0, 151 }, - { "Cap of the mind", 7, 2, 91, 1845, 0, 0, 2, 0, 0, 0, 0, 0, 12, 15, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 21, 0, 0, 0, 48 }, - { "Quilted Armor of protection", 6, 2, 129, 1200, 0, 0, 7, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, -1, 30, 0, 0, 0, 58 }, - { "Empyrean Band", 12, 3, 18, 8000, 0, 0, 0, 270532608, 27, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 8 }, - { "Optic Amulet", 13, 3, 44, 9750, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, -1, 2, 0, 3, 0, 0, 0, 0, -1, -1, 0, 0, 0, 10 }, - { "Ring of Truth", 12, 3, 10, 9100, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 640, 0, -1, 0, 0, 4, 0, 0, 0, 0, -1, -1, 0, 0, 0, 11 }, - { "Harlequin Crest", 7, 2, 81, 4000, 0, 0, -3, 0, 27, 0, 0, 0, 15, 15, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 448, 448, 0, -1, 0, 0, 5, 0, 0, 0, 0, -1, -1, 0, 0, 0, 13 }, - { "Veil of Steel", 7, 2, 85, 63800, 0, 0, 18, 0, 27, 0, 0, 0, 60, 60, 0, 0, 60, 15, 0, 0, 15, 50, 50, 50, -1920, 0, 0, 0, -2, 0, 6, 0, 0, 0, 0, -1, -1, 0, 0, 0, 14 }, - { "Arkaine's Valor", 8, 2, 157, 42000, 0, 0, 25, 8388608, 27, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, -3, 0, 0, 7, 0, 0, 0, 0, -1, -1, 0, 0, 0, 28 }, - { "Griswold's Edge", 1, 1, 61, 42000, 4, 12, 0, 264208, 27, 0, 0, 0, 42, 44, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 1280, -1280, 0, 0, 0, 0, 8, 1, 10, 0, 0, -1, -1, 40, 0, 0, 31 }, - { "War Staff of haste", 10, 1, 124, 40000, 8, 16, 0, 1048576, 23, 0, 0, 0, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 58, 30, 0, 0, 155 }, - { "White Staff of Lightning", 10, 1, 124, 7160, 8, 16, 0, 0, 23, 3, 56, 56, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 30, 20, 0, 155 }, - { "Lightning Maul", 4, 1, 122, 11800, 6, 20, 0, 32, 0, 0, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20, 17, -1, 55, 0, 0, 142 }, - { "Ivory Great Axe of blood", 2, 1, 143, 31194, 12, 30, 0, 65536, 0, 0, 0, 0, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 56, 80, 0, 0, 135 }, - { "Jade Crown of vim", 7, 2, 95, 19200, 0, 0, 10, 0, 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 14, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 25, 0, 0, 0, 52 }, - { "Short Bow of atrophy", 3, 1, 118, 1, 1, 4, 0, 0, 0, 0, 0, 0, 16, 30, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 24, 0, 0, 0, 143 }, - { "Brass Dagger of weakness", 1, 1, 51, 1, 1, 4, 0, 0, 0, 0, 0, 0, 11, 16, 0, -1, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 118 }, - { "Clumsy Short Bow", 3, 1, 118, 1, 1, 4, 0, 0, 0, 0, 0, 0, 16, 30, -67, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -1, 0, 0, 0, 143 }, - { "Tin Short Sword of the fool", 1, 1, 64, 1, 2, 6, 0, 0, 0, 0, 0, 0, 17, 24, 0, -7, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 22, 18, 0, 0, 119 }, - { "Club of paralysis", 4, 1, 66, 1, 1, 6, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 24, 0, 0, 0, 140 }, - { "Dull Staff of Lightning", 10, 1, 109, 1, 2, 4, 0, 0, 23, 3, 46, 46, 18, 25, -28, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -1, 0, 20, 0, 151 }, - { "Falchion of speed", 1, 1, 62, 10000, 4, 8, 0, 524288, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 58, 30, 0, 0, 120 }, - { "Bent Falchion", 1, 1, 62, 1, 4, 8, 0, 0, 0, 0, 0, 0, 14, 20, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 30, 0, 0, 120 }, - { "Plentiful Staff of Firebolt", 10, 1, 109, 3040, 2, 4, 0, 0, 23, 1, 98, 98, 13, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -1, 0, 15, 0, 151 }, - { "Dagger of illness", 1, 1, 51, 1, 1, 4, 0, 0, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 26, 0, 0, 0, 118 }, - { "Cape of corruption", 6, 2, 150, 1, 0, 0, 3, 134217728, 0, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 46, 0, 0, 0, 54 }, - { "Sabre of trouble", 1, 1, 67, 1, 1, 8, 0, 0, 0, 0, 0, 0, 33, 45, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 28, 17, 0, 0, 124 }, - { "Cap of tears", 7, 2, 91, 1, 0, 0, 2, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 29, 0, 0, 0, 48 }, - { "Tin Club", 4, 1, 66, 1, 1, 6, 0, 0, 0, 0, 0, 0, 14, 20, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 140 }, - { "Rusted Cape of dyslexia", 6, 2, 150, 1, 0, 0, 2, 0, 0, 0, 0, 0, 9, 12, 0, 0, -34, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 22, 0, 0, 0, 54 }, - { "Cap of pain", 7, 2, 91, 1, 0, 0, 2, 0, 0, 0, 0, 0, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -1, 29, 0, 0, 0, 48 }, - { "Clumsy Sabre of fragility", 1, 1, 67, 1, 1, 8, 0, 0, 0, 0, 0, 0, 1, 1, -75, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 36, 17, 0, 0, 124 }, - { "Vulnerable Cap of health", 7, 2, 91, 185, 0, 0, 1, 0, 0, 0, 0, 0, 5, 15, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 7, 30, 0, 0, 0, 48 }, - { "Useless Dagger", 1, 1, 51, 1, 1, 4, 0, 0, 0, 0, 0, 0, 5, 16, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 118 }, - { "Bountiful Staff of Fire Wall", 10, 1, 109, 5970, 2, 4, 0, 0, 23, 6, 36, 36, 17, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -1, 0, 27, 0, 151 }, - { "Mace of frailty", 4, 1, 59, 1, 1, 8, 0, 0, 0, 0, 0, 0, 22, 32, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 20, 16, 0, 0, 136 }, - { "Weak Short Bow", 3, 1, 118, 1, 1, 4, 0, 0, 0, 0, 0, 0, 20, 30, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 143 }, - { "Short Staff of readiness", 10, 1, 109, 2060, 2, 4, 0, 131072, 23, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 58, 0, 0, 0, 151 }, - { "Potion of Healing", 0, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, - { "Potion of Full Healing", 0, 3, 35, 150, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 29 }, - { "Potion of Mana", 0, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, - { "Potion of Full Mana", 0, 3, 0, 150, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 30 }, - { "Scroll of Town Portal", 0, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, - { "The Rift Bow", 3, 1, 118, 1800, 1, 4, 0, 4, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 0, -1, -1, 0, 0, 0, 143 }, - { "The Grandfather", 1, 1, 161, 119800, 10, 20, 0, 0, 0, 0, 0, 0, 100, 100, 70, 20, 0, 5, 5, 5, 5, 0, 0, 0, 0, 1280, 0, 0, 0, 0, 35, 0, 0, 0, 0, -1, -1, 75, 0, 0, 129 }, - { "Gothic Shield of thorns", 5, 2, 148, 5100, 0, 0, 18, 67108864, 0, 0, 0, 0, 17, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 45, 80, 0, 0, 76 }, - { "Naj's Light Plate", 9, 2, 159, 78700, 0, 0, 50, 0, 0, 0, 0, 0, 75, 75, 0, 0, 0, 0, 5, 0, 0, 20, 20, 20, 1280, 0, 0, 0, 0, 1, 77, 0, 0, 0, 0, -1, -1, 0, 0, 0, 67 }, - { "Constricting Ring", 12, 3, 14, 62000, 0, 0, 0, 64, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, -1, -1, 0, 0, 0, 156 }, - { "Gotterdamerung", 7, 2, 85, 54900, 0, 0, 60, 2147483648, 0, 0, 0, 0, 60, 60, 0, 0, 0, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, -4, -4, 0, 67, 0, 0, 0, 0, -1, -1, 50, 0, 0, 53 }, - { "King's Bastard Sword", 1, 1, 57, 69730, 6, 15, 0, 0, 0, 0, 0, 0, 32, 60, 168, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 50, 0, 0, 127 }, - { "Champion's Club of gore", 4, 1, 66, 25576, 1, 6, 0, 0, 0, 0, 0, 0, 60, 60, 141, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 4, 61, 0, 0, 0, 140 }, - { "Master's Flail", 4, 1, 131, 27340, 2, 12, 0, 0, 0, 0, 0, 0, 60, 60, 123, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 30, 0, 0, 141 }, - { "Knight's Broad Sword", 1, 1, 61, 27597, 4, 12, 0, 0, 0, 0, 0, 0, 60, 60, 108, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 40, 0, 0, 126 }, - { "Lord's Falchion of precision", 1, 1, 62, 17025, 4, 8, 0, 0, 0, 0, 0, 0, 13, 20, 88, 23, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 23, 30, 0, 0, 120 }, - { "Soldier's Bastard Sword of vigor", 1, 1, 57, 31600, 6, 15, 0, 0, 0, 0, 0, 0, 60, 60, 66, 19, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 25, 50, 0, 0, 127 }, - { "Fine Long Bow of the pit", 3, 1, 102, 2152, 1, 6, 0, 0, 0, 0, 0, 0, 35, 35, 49, 10, 0, -2, -2, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, 25, 0, 30, 145 }, - { "Sharp Long Sword of atrophy", 1, 1, 60, 1958, 2, 10, 0, 0, 0, 0, 0, 0, 24, 40, 34, 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 24, 30, 0, 30, 125 }, - { "Emerald Long War Bow of burning", 3, 1, 119, 107000, 1, 14, 0, 8, 0, 0, 0, 0, 60, 60, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 11, 42, 45, 0, 80, 150 }, + //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); + { "Amber Great Helm of harmony", ItemType::Helm, 2, 98, 21100, 0, 0, 11, 8388608, 0, 0, 0, 0, 60, 60, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 59, 50, 0, 0, 53 }, + { "Cobalt Amulet of giants", ItemType::Amulet, 3, 45, 26840, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 19, 0, 0, 0, 159 }, + { "Brutal Long Sword of gore", ItemType::Sword, 1, 60, 13119, 2, 10, 0, 0, 0, 0, 0, 0, 38, 40, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 2, 61, 30, 0, 30, 125 }, + { "Demonspike Coat", ItemType::HeavyArmor, 2, 151, 251175, 0, 0, 100, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 10, 0, 0, 0, 50, 0, 0, 0, 0, 0, -6, 0, 0, 78, 0, 0, 0, 0, -1, -1, 90, 0, 0, 70 }, + { "Steel Ring of the jaguar", ItemType::Ring, 3, 12, 10600, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 156 }, + { "Ring of the heavens", ItemType::Ring, 3, 12, 37552, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 27, 0, 0, 0, 156 }, + { "Ring of sorcery", ItemType::Ring, 3, 12, 10200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 21, 0, 0, 0, 158 }, + { "Tower Shield of the ages", ItemType::Shield, 2, 132, 4850, 0, 0, 18, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 37, 60, 0, 0, 75 }, + { "Sapphire Large Shield", ItemType::Shield, 2, 147, 21000, 0, 0, 7, 0, 0, 0, 0, 0, 12, 32, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, -1, 40, 0, 0, 73 }, + { "Scroll of Town Portal", ItemType::Misc, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, + { "Potion of Mana", ItemType::Misc, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, + { "Potion of Mana", ItemType::Misc, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 79 }, + { "Potion of Full Mana", ItemType::Misc, 3, 0, 150, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 30 }, + { "Potion of Healing", ItemType::Misc, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, + { "Potion of Full Healing", ItemType::Misc, 3, 35, 150, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 29 }, + { "Short Bow", ItemType::Bow, 1, 118, 100, 1, 4, 0, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 4 }, + { "Jade Great Helm of the wolf", ItemType::Helm, 2, 98, 22310, 0, 0, 14, 0, 0, 0, 0, 0, 56, 60, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 0, 2112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 31, 50, 0, 0, 53 }, + { "Steel Ring of accuracy", ItemType::Ring, 3, 12, 13400, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 156 }, + { "Blood Stone", ItemType::Misc, 5, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 21 }, + { "Ring of power", ItemType::Ring, 3, 12, 6400, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 19, 0, 0, 0, 156 }, + { "Gold Amulet of accuracy", ItemType::Amulet, 3, 45, 20896, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 159 }, + { "Bastard Sword of the bat", ItemType::Sword, 1, 57, 10500, 6, 15, 0, 8192, 0, 0, 0, 0, 25, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 55, 50, 0, 0, 127 }, + { "Small Shield", ItemType::Shield, 2, 105, 90, 0, 0, 3, 0, 0, 0, 0, 0, 14, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 25, 0, 0, 72 }, + { "Breast Plate of giants", ItemType::HeavyArmor, 2, 153, 23250, 0, 0, 20, 0, 0, 0, 0, 0, 44, 80, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 19, 40, 0, 0, 65 }, + { "Scroll of Healing", ItemType::Misc, 3, 1, 50, 0, 0, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 91 }, + { "Potion of Rejuvenation", ItemType::Misc, 3, 37, 120, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 81 }, + { "Potion of Rejuvenation", ItemType::Misc, 3, 37, 120, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 81 }, + { "Potion of Full Rejuvenation", ItemType::Misc, 3, 33, 600, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 82 }, + { "Savage Composite Bow of perfection", ItemType::Bow, 1, 133, 23438, 3, 6, 0, 0, 0, 0, 0, 0, 45, 45, 117, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 25, 0, 40, 146 }, + { "Falchion", ItemType::Sword, 1, 62, 250, 4, 8, 0, 0, 0, 0, 0, 0, 10, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 30, 0, 0, 120 }, + { "Long Sword of vim", ItemType::Sword, 1, 60, 4400, 2, 10, 0, 0, 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 25, 30, 0, 30, 125 }, + { "Frog's Staff of Holy Bolt", ItemType::Staff, 1, 109, 1, 2, 4, 0, 0, 23, 31, 60, 60, 10, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, -1, 0, 20, 0, 151 }, + { "Short Staff of Charged Bolt", ItemType::Staff, 1, 109, 520, 2, 4, 0, 0, 23, 30, 9, 40, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 20, 0, 166 }, + { "Staff of Charged Bolt", ItemType::Staff, 1, 109, 1, 2, 4, 0, 0, 23, 30, 50, 50, 18, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 25, 0, 151 }, + { "Cap of the mind", ItemType::Helm, 2, 91, 1845, 0, 0, 2, 0, 0, 0, 0, 0, 12, 15, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 21, 0, 0, 0, 48 }, + { "Quilted Armor of protection", ItemType::LightArmor, 2, 129, 1200, 0, 0, 7, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, -1, 30, 0, 0, 0, 58 }, + { "Empyrean Band", ItemType::Ring, 3, 18, 8000, 0, 0, 0, 270532608, 27, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 8 }, + { "Optic Amulet", ItemType::Amulet, 3, 44, 9750, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, -1, 2, 0, 3, 0, 0, 0, 0, -1, -1, 0, 0, 0, 10 }, + { "Ring of Truth", ItemType::Ring, 3, 10, 9100, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 640, 0, -1, 0, 0, 4, 0, 0, 0, 0, -1, -1, 0, 0, 0, 11 }, + { "Harlequin Crest", ItemType::Helm, 2, 81, 4000, 0, 0, -3, 0, 27, 0, 0, 0, 15, 15, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 448, 448, 0, -1, 0, 0, 5, 0, 0, 0, 0, -1, -1, 0, 0, 0, 13 }, + { "Veil of Steel", ItemType::Helm, 2, 85, 63800, 0, 0, 18, 0, 27, 0, 0, 0, 60, 60, 0, 0, 60, 15, 0, 0, 15, 50, 50, 50, -1920, 0, 0, 0, -2, 0, 6, 0, 0, 0, 0, -1, -1, 0, 0, 0, 14 }, + { "Arkaine's Valor", ItemType::MediumArmor, 2, 157, 42000, 0, 0, 25, 8388608, 27, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, -3, 0, 0, 7, 0, 0, 0, 0, -1, -1, 0, 0, 0, 28 }, + { "Griswold's Edge", ItemType::Sword, 1, 61, 42000, 4, 12, 0, 264208, 27, 0, 0, 0, 42, 44, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 1280, -1280, 0, 0, 0, 0, 8, 1, 10, 0, 0, -1, -1, 40, 0, 0, 31 }, + { "War Staff of haste", ItemType::Staff, 1, 124, 40000, 8, 16, 0, 1048576, 23, 0, 0, 0, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 58, 30, 0, 0, 155 }, + { "White Staff of Lightning", ItemType::Staff, 1, 124, 7160, 8, 16, 0, 0, 23, 3, 56, 56, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 30, 20, 0, 155 }, + { "Lightning Maul", ItemType::Mace, 1, 122, 11800, 6, 20, 0, 32, 0, 0, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20, 17, -1, 55, 0, 0, 142 }, + { "Ivory Great Axe of blood", ItemType::Axe, 1, 143, 31194, 12, 30, 0, 65536, 0, 0, 0, 0, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 56, 80, 0, 0, 135 }, + { "Jade Crown of vim", ItemType::Helm, 2, 95, 19200, 0, 0, 10, 0, 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 14, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 25, 0, 0, 0, 52 }, + { "Short Bow of atrophy", ItemType::Bow, 1, 118, 1, 1, 4, 0, 0, 0, 0, 0, 0, 16, 30, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 24, 0, 0, 0, 143 }, + { "Brass Dagger of weakness", ItemType::Sword, 1, 51, 1, 1, 4, 0, 0, 0, 0, 0, 0, 11, 16, 0, -1, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 118 }, + { "Clumsy Short Bow", ItemType::Bow, 1, 118, 1, 1, 4, 0, 0, 0, 0, 0, 0, 16, 30, -67, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -1, 0, 0, 0, 143 }, + { "Tin Short Sword of the fool", ItemType::Sword, 1, 64, 1, 2, 6, 0, 0, 0, 0, 0, 0, 17, 24, 0, -7, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 22, 18, 0, 0, 119 }, + { "Club of paralysis", ItemType::Mace, 1, 66, 1, 1, 6, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 24, 0, 0, 0, 140 }, + { "Dull Staff of Lightning", ItemType::Staff, 1, 109, 1, 2, 4, 0, 0, 23, 3, 46, 46, 18, 25, -28, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -1, 0, 20, 0, 151 }, + { "Falchion of speed", ItemType::Sword, 1, 62, 10000, 4, 8, 0, 524288, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 58, 30, 0, 0, 120 }, + { "Bent Falchion", ItemType::Sword, 1, 62, 1, 4, 8, 0, 0, 0, 0, 0, 0, 14, 20, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 30, 0, 0, 120 }, + { "Plentiful Staff of Firebolt", ItemType::Staff, 1, 109, 3040, 2, 4, 0, 0, 23, 1, 98, 98, 13, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -1, 0, 15, 0, 151 }, + { "Dagger of illness", ItemType::Sword, 1, 51, 1, 1, 4, 0, 0, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 26, 0, 0, 0, 118 }, + { "Cape of corruption", ItemType::LightArmor, 2, 150, 1, 0, 0, 3, 134217728, 0, 0, 0, 0, 4, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 46, 0, 0, 0, 54 }, + { "Sabre of trouble", ItemType::Sword, 1, 67, 1, 1, 8, 0, 0, 0, 0, 0, 0, 33, 45, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 28, 17, 0, 0, 124 }, + { "Cap of tears", ItemType::Helm, 2, 91, 1, 0, 0, 2, 0, 0, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 29, 0, 0, 0, 48 }, + { "Tin Club", ItemType::Mace, 1, 66, 1, 1, 6, 0, 0, 0, 0, 0, 0, 14, 20, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 140 }, + { "Rusted Cape of dyslexia", ItemType::LightArmor, 2, 150, 1, 0, 0, 2, 0, 0, 0, 0, 0, 9, 12, 0, 0, -34, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 22, 0, 0, 0, 54 }, + { "Cap of pain", ItemType::Helm, 2, 91, 1, 0, 0, 2, 0, 0, 0, 0, 0, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -1, 29, 0, 0, 0, 48 }, + { "Clumsy Sabre of fragility", ItemType::Sword, 1, 67, 1, 1, 8, 0, 0, 0, 0, 0, 0, 1, 1, -75, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 36, 17, 0, 0, 124 }, + { "Vulnerable Cap of health", ItemType::Helm, 2, 91, 185, 0, 0, 1, 0, 0, 0, 0, 0, 5, 15, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 7, 30, 0, 0, 0, 48 }, + { "Useless Dagger", ItemType::Sword, 1, 51, 1, 1, 4, 0, 0, 0, 0, 0, 0, 5, 16, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 118 }, + { "Bountiful Staff of Fire Wall", ItemType::Staff, 1, 109, 5970, 2, 4, 0, 0, 23, 6, 36, 36, 17, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -1, 0, 27, 0, 151 }, + { "Mace of frailty", ItemType::Mace, 1, 59, 1, 1, 8, 0, 0, 0, 0, 0, 0, 22, 32, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 20, 16, 0, 0, 136 }, + { "Weak Short Bow", ItemType::Bow, 1, 118, 1, 1, 4, 0, 0, 0, 0, 0, 0, 20, 30, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 143 }, + { "Short Staff of readiness", ItemType::Staff, 1, 109, 2060, 2, 4, 0, 131072, 23, 0, 0, 0, 12, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 58, 0, 0, 0, 151 }, + { "Potion of Healing", ItemType::Misc, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, + { "Potion of Full Healing", ItemType::Misc, 3, 35, 150, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 29 }, + { "Potion of Mana", ItemType::Misc, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, + { "Potion of Full Mana", ItemType::Misc, 3, 0, 150, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 30 }, + { "Scroll of Town Portal", ItemType::Misc, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, + { "The Rift Bow", ItemType::Bow, 1, 118, 1800, 1, 4, 0, 4, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 0, -1, -1, 0, 0, 0, 143 }, + { "The Grandfather", ItemType::Sword, 1, 161, 119800, 10, 20, 0, 0, 0, 0, 0, 0, 100, 100, 70, 20, 0, 5, 5, 5, 5, 0, 0, 0, 0, 1280, 0, 0, 0, 0, 35, 0, 0, 0, 0, -1, -1, 75, 0, 0, 129 }, + { "Gothic Shield of thorns", ItemType::Shield, 2, 148, 5100, 0, 0, 18, 67108864, 0, 0, 0, 0, 17, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 45, 80, 0, 0, 76 }, + { "Naj's Light Plate", ItemType::HeavyArmor, 2, 159, 78700, 0, 0, 50, 0, 0, 0, 0, 0, 75, 75, 0, 0, 0, 0, 5, 0, 0, 20, 20, 20, 1280, 0, 0, 0, 0, 1, 77, 0, 0, 0, 0, -1, -1, 0, 0, 0, 67 }, + { "Constricting Ring", ItemType::Ring, 3, 14, 62000, 0, 0, 0, 64, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, -1, -1, 0, 0, 0, 156 }, + { "Gotterdamerung", ItemType::Helm, 2, 85, 54900, 0, 0, 60, 2147483648, 0, 0, 0, 0, 60, 60, 0, 0, 0, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, -4, -4, 0, 67, 0, 0, 0, 0, -1, -1, 50, 0, 0, 53 }, + { "King's Bastard Sword", ItemType::Sword, 1, 57, 69730, 6, 15, 0, 0, 0, 0, 0, 0, 32, 60, 168, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 50, 0, 0, 127 }, + { "Champion's Club of gore", ItemType::Mace, 1, 66, 25576, 1, 6, 0, 0, 0, 0, 0, 0, 60, 60, 141, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 4, 61, 0, 0, 0, 140 }, + { "Master's Flail", ItemType::Mace, 1, 131, 27340, 2, 12, 0, 0, 0, 0, 0, 0, 60, 60, 123, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 30, 0, 0, 141 }, + { "Knight's Broad Sword", ItemType::Sword, 1, 61, 27597, 4, 12, 0, 0, 0, 0, 0, 0, 60, 60, 108, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 40, 0, 0, 126 }, + { "Lord's Falchion of precision", ItemType::Sword, 1, 62, 17025, 4, 8, 0, 0, 0, 0, 0, 0, 13, 20, 88, 23, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 23, 30, 0, 0, 120 }, + { "Soldier's Bastard Sword of vigor", ItemType::Sword, 1, 57, 31600, 6, 15, 0, 0, 0, 0, 0, 0, 60, 60, 66, 19, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 25, 50, 0, 0, 127 }, + { "Fine Long Bow of the pit", ItemType::Bow, 1, 102, 2152, 1, 6, 0, 0, 0, 0, 0, 0, 35, 35, 49, 10, 0, -2, -2, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, 25, 0, 30, 145 }, + { "Sharp Long Sword of atrophy", ItemType::Sword, 1, 60, 1958, 2, 10, 0, 0, 0, 0, 0, 0, 24, 40, 34, 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 24, 30, 0, 30, 125 }, + { "Emerald Long War Bow of burning", ItemType::Bow, 1, 119, 107000, 1, 14, 0, 8, 0, 0, 0, 0, 60, 60, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 11, 42, 45, 0, 80, 150 }, // clang-format on }; @@ -359,7 +359,7 @@ TEST(pack, UnPackItem_diablo_unique_bug) Item id; UnPackItem(&pkItemBug, &id, false); ASSERT_STREQ(id._iIName, "Veil of Steel"); - ASSERT_EQ(id._itype, ITYPE_HELM); + ASSERT_EQ(id._itype, ItemType::Helm); ASSERT_EQ(id._iClass, ICLASS_ARMOR); ASSERT_EQ(id._iCurs, 85); ASSERT_EQ(id._iIvalue, 63800); @@ -391,9 +391,9 @@ const ItemPack PackedSpawnItems[] = { const TestItemStruct SpawnItems[] = { // clang-format off - //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); - { "Staff of Firebolt", 10, 1, 109, 1, 2, 4, 0, 0, 23, 1, 50, 50, 11, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 15, 0, 151 }, - { "Book of Holy Bolt", 0, 3, 86, 1000, 0, 0, 0, 0, 24, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 20, 0, 114 }, + //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); + { "Staff of Firebolt", ItemType::Staff, 1, 109, 1, 2, 4, 0, 0, 23, 1, 50, 50, 11, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 15, 0, 151 }, + { "Book of Holy Bolt", ItemType::Misc, 3, 86, 1000, 0, 0, 0, 0, 24, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 20, 0, 114 }, // clang-format on }; @@ -431,12 +431,12 @@ const ItemPack PackedDiabloMPItems[] = { const TestItemStruct DiabloMPItems[] = { // clang-format off - //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); - { "Book of Firebolt", 0, 3, 87, 1000, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 15, 0, 114 }, - { "Scroll of Resurrect", 0, 3, 1, 250, 0, 0, 0, 0, 22, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 34 }, - { "Potion of Healing", 0, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, - { "Scroll of Town Portal", 0, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, - { "Potion of Mana", 0, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, + //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); + { "Book of Firebolt", ItemType::Misc, 3, 87, 1000, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 15, 0, 114 }, + { "Scroll of Resurrect", ItemType::Misc, 3, 1, 250, 0, 0, 0, 0, 22, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 34 }, + { "Potion of Healing", ItemType::Misc, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, + { "Scroll of Town Portal", ItemType::Misc, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, + { "Potion of Mana", ItemType::Misc, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, // clang-format on }; @@ -558,95 +558,95 @@ const ItemPack PackedHellfireItems[] = { const TestItemStruct HellfireItems[] = { // clang-format off - //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); - { "Ring of stability", 12, 3, 12, 8000, 0, 0, 0, 4194304, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 59, 0, 0, 0, 156 }, - { "Ring of precision", 12, 3, 12, 10200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 23, 0, 0, 0, 157 }, - { "Obsidian Ring of wizardry", 12, 3, 12, 56928, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 21, 0, 0, 0, 157 }, - { "Ring of precision", 12, 3, 12, 10200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 23, 0, 0, 0, 158 }, - { "Amulet of titans", 13, 3, 45, 20896, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 19, 0, 0, 0, 160 }, - { "Gold Amulet", 13, 3, 45, 13692, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 160 }, - { "Messerschmidt's Reaver", 2, 1, 163, 58000, 12, 30, 0, 16, 0, 0, 0, 0, 75, 75, 200, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, -3200, 15, 0, 0, 0, 44, 2, 12, 0, 0, -1, -1, 80, 0, 0, 135 }, - { "Vicious Maul of structure", 4, 1, 122, 10489, 6, 20, 0, 0, 0, 0, 0, 0, 127, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 35, 55, 0, 0, 142 }, - { "Short Sword", 1, 1, 64, 120, 2, 6, 0, 0, 0, 0, 0, 0, 15, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 18, 0, 0, 119 }, - { "Long Battle Bow of shock", 3, 1, 119, 8000, 1, 10, 0, 33554432, 0, 0, 0, 0, 18, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, -1, 43, 30, 0, 60, 148 }, - { "Short Bow of magic", 3, 1, 118, 400, 1, 4, 0, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 21, 0, 0, 0, 143 }, - { "Red Staff of Healing", 10, 1, 123, 1360, 4, 8, 0, 0, 23, 2, 22, 33, 35, 35, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 17, 0, 152 }, - { "Buckler", 5, 2, 83, 30, 0, 0, 5, 0, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 71 }, - { "Skull Cap", 7, 2, 90, 25, 0, 0, 3, 0, 0, 0, 0, 0, 15, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 49 }, - { "Rags", 6, 2, 128, 5, 0, 0, 4, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 55 }, - { "Quilted Armor", 6, 2, 129, 200, 0, 0, 7, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 58 }, - { "Quilted Armor of light", 6, 2, 129, 1150, 0, 0, 10, 0, 0, 0, 0, 0, 12, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -1, 38, 0, 0, 0, 58 }, - { "Saintly Plate Mail of the stars", 9, 2, 103, 140729, 0, 0, 46, 0, 0, 0, 0, 0, 75, 75, 0, 0, 121, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 27, 60, 0, 0, 67 }, - { "Plate Mail of the stars", 9, 2, 103, 77800, 0, 0, 49, 0, 0, 0, 0, 0, 63, 75, 0, 0, 0, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 27, 60, 0, 0, 67 }, - { "Potion of Healing", 0, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, - { "Potion of Full Healing", 0, 3, 35, 150, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 29 }, - { "Potion of Mana", 0, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, - { "Scroll of Golem", 0, 3, 1, 1100, 0, 0, 0, 0, 22, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 51, 0, 110 }, - { "Scroll of Search", 0, 3, 1, 50, 0, 0, 0, 0, 21, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 92 }, - { "Scroll of Identify", 0, 3, 1, 100, 0, 0, 0, 0, 21, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 94 }, - { "Scroll of Town Portal", 0, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 98 }, - { "Scroll of Healing", 0, 3, 1, 50, 0, 0, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 91 }, - { "Rune of Fire", 0, 3, 193, 100, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 161 }, - { "Gold", 11, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0 }, - { "The Undead Crown", 7, 2, 77, 16650, 0, 0, 8, 2, 27, 0, 0, 0, 45, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 7 }, - { "Empyrean Band", 12, 3, 18, 8000, 0, 0, 0, 270532608, 27, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 8 }, - { "Ring of Truth", 12, 3, 10, 9100, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 640, 0, -1, 0, 0, 4, 0, 0, 0, 0, -1, -1, 0, 0, 0, 11 }, - { "Griswold's Edge", 1, 1, 61, 42000, 4, 12, 0, 264208, 27, 0, 0, 0, 50, 50, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 1280, -1280, 0, 0, 0, 0, 8, 1, 10, 0, 0, -1, -1, 40, 0, 0, 31 }, - { "Bovine Plate", 9, 2, 226, 400, 0, 0, 150, 0, 27, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, -3200, 0, 0, 0, 5, -2, 9, 0, 0, 0, 0, -1, -1, 50, 0, 0, 32 }, - { "Book of Healing", 0, 3, 86, 1000, 0, 0, 0, 0, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 17, 0, 114 }, - { "Book of Charged Bolt", 0, 3, 88, 1000, 0, 0, 0, 0, 24, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 25, 0, 114 }, - { "Book of Firebolt", 0, 3, 87, 1000, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 15, 0, 114 }, - { "Blacksmith Oil", 0, 3, 30, 100, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 83 }, - { "Oil of Accuracy", 0, 3, 30, 500, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 84 }, - { "Oil of Sharpness", 0, 3, 30, 500, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 85 }, - { "Oil of Permanence", 0, 3, 30, 15000, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, - { "Doppelganger's Axe", 2, 1, 144, 6640, 4, 12, 0, 0, 0, 0, 0, 0, 23, 32, 86, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, -1, 22, 0, 0, 131 }, - { "Flail of vampires", 4, 1, 131, 16500, 2, 12, 0, 16384, 0, 0, 0, 0, 36, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 55, 30, 0, 0, 141 }, - { "Gladiator's Ring", 12, 3, 186, 10000, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3200, -3200, 0, 0, 0, 0, 109, 0, 0, 0, 0, -1, -1, 0, 0, 0, 157 }, - { "Warrior's War Staff of the moon", 10, 1, 124, 42332, 8, 16, 0, 0, 23, 0, 0, 0, 75, 75, 54, 15, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 27, 30, 0, 0, 155 }, - { "Kite Shield of the ages", 5, 2, 113, 2600, 0, 0, 10, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 37, 50, 0, 0, 74 }, - { "Heavy Spiked Club of puncturing", 4, 1, 70, 5239, 3, 6, 0, 0, 0, 0, 0, 0, 20, 20, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 57, 18, 0, 0, 139 }, - { "Book of Lightning", 0, 3, 88, 3000, 0, 0, 0, 0, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 20, 0, 114 }, - { "Jester's Sabre", 1, 1, 67, 1710, 1, 8, 0, 0, 0, 0, 0, 0, 23, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, -1, 17, 0, 0, 124 }, - { "Small Shield of blocking", 5, 2, 105, 4360, 0, 0, 6, 16777216, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 60, 25, 0, 0, 72 }, - { "The Butcher's Cleaver", 2, 1, 106, 3650, 4, 24, 0, 0, 27, 0, 0, 0, 10, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 6 }, - { "Scimitar of peril", 1, 1, 72, 700, 3, 7, 0, 0, 0, 0, 0, 0, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 86, 23, 0, 23, 121 }, - { "Crystalline Large Axe", 2, 1, 142, 5250, 6, 16, 0, 0, 0, 0, 0, 0, 12, 12, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, -1, 30, 0, 0, 132 }, - { "Red Cloak", 6, 2, 149, 580, 0, 0, 3, 0, 0, 0, 0, 0, 18, 18, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 56 }, - { "Mace of decay", 4, 1, 59, 600, 1, 8, 0, 0, 0, 0, 0, 0, 32, 32, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 85, 16, 0, 0, 136 }, - { "Ring of Truth", 12, 3, 10, 9100, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 640, 0, -1, 0, 0, 4, 0, 0, 0, 0, -1, -1, 0, 0, 0, 11 }, - { "Red Studded Leather Armor of paralysis", 6, 2, 107, 800, 0, 0, 17, 0, 0, 0, 0, 0, 18, 45, 0, 0, 0, 0, 0, -8, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 24, 20, 0, 0, 61 }, - { "Bent Hunter's Bow", 3, 1, 102, 1, 2, 5, 0, 0, 0, 0, 0, 0, 26, 40, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 20, 0, 35, 144 }, - { "Civerb's Cudgel", 4, 1, 59, 2000, 1, 8, 0, 1073741824, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, -2, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, -1, -1, 16, 0, 0, 136 }, - { "Deadly Spiked Club", 4, 1, 70, 1556, 3, 6, 0, 0, 0, 0, 0, 0, 8, 20, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, 18, 0, 0, 139 }, - { "Gnat Sting", 3, 1, 210, 30000, 1, 2, 0, 131584, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, -1, -1, 20, 0, 35, 144 }, - { "Thunderclap", 4, 1, 205, 30000, 5, 9, 0, 48, 0, 0, 0, 0, 255, 255, 0, 0, 0, 20, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 102, 3, 6, 2, 0, -1, -1, 40, 0, 0, 138 }, - { "Rod of Onan", 10, 1, 124, 44167, 8, 16, 0, 0, 23, 21, 50, 50, 75, 75, 100, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, -1, -1, 30, 0, 0, 155 }, - { "Flambeau", 3, 1, 209, 30000, 0, 0, 0, 33554440, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 15, 20, 0, 0, -1, -1, 25, 0, 40, 146 }, - { "Ring of Thunder", 12, 3, 177, 8000, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, 60, -30, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, -1, -1, 0, 0, 0, 156 }, - { "Acolyte's Amulet", 13, 3, 183, 10000, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3968, 3968, 0, 0, 0, 0, 108, 0, 0, 0, 0, -1, -1, 0, 0, 0, 159 }, - { "The Protector", 10, 1, 162, 17240, 2, 4, 40, 67108864, 23, 2, 86, 86, 25, 25, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, -5, 0, 0, 59, 0, 0, 0, 0, -1, -1, 0, 0, 0, 151 }, - { "Bone Chain Armor", 8, 2, 204, 36000, 0, 0, 40, 0, 0, 0, 0, 0, 55, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, -1, -1, 30, 0, 0, 63 }, - { "Oil of Permanence", 0, 3, 30, 15000, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, - { "Demon Plate Armor", 9, 2, 225, 80000, 0, 0, 80, 0, 0, 0, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, -1, -1, 90, 0, 0, 70 }, - { "Oil of Fortitude", 0, 3, 30, 2500, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, - { "Ring of Regha", 12, 3, 11, 4175, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, -3, 10, -3, 0, 0, 0, 10, 0, 0, 0, 0, 1, 0, 86, 0, 0, 0, 0, -1, -1, 0, 0, 0, 157 }, - { "Bronze Ring of dexterity", 12, 3, 12, 5200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 156 }, - { "Oil of Accuracy", 0, 3, 30, 500, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 84 }, - { "Blacksmith Oil", 0, 3, 30, 100, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 35 }, - { "Spider's Short Staff of devastation", 10, 1, 109, 2050, 2, 4, 0, 0, 23, 0, 0, 0, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 84, 0, 0, 0, 151 }, - { "Oil of Hardening", 0, 3, 30, 500, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, - { "Oil of Skill", 0, 3, 30, 1500, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, - { "Oil of Mastery", 0, 3, 30, 2500, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, - { "Blitzen", 3, 1, 219, 30000, 0, 0, 0, 33554440, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 10, 15, 1, 0, -1, -1, 25, 0, 40, 146 }, - { "Oil of Death", 0, 3, 30, 2500, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, - { "Oil of Sharpness", 0, 3, 30, 500, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 85 }, - { "Crystalline Short Sword of the leech", 1, 1, 64, 10020, 2, 6, 0, 32768, 0, 0, 0, 0, 13, 13, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 56, 18, 0, 0, 119 }, - { "Plentiful Staff of Mana Shield", 10, 1, 166, 6360, 5, 10, 0, 0, 23, 11, 14, 14, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -1, 0, 25, 0, 153 }, - { "King's War Staff", 10, 1, 124, 92000, 8, 16, 0, 0, 23, 0, 0, 0, 75, 75, 175, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 30, 0, 0, 155 }, - { "Potion of Mana", 0, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, - { "Scroll of Town Portal", 0, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, - { "Potion of Mana", 0, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, + //_iIName, _itype, _iClass, _iCurs, _iIvalue, _iMinDam, _iMaxDam, _iAC, _iFlags, _iMiscId, _iSpell, _iCharges, _iMaxCharges, _iDurability, _iMaxDur, _iPLDam, _iPLToHit, _iPLAC, _iPLStr, _iPLMag, _iPLDex, _iPLVit, _iPLFR, _iPLLR, _iPLMR, _iPLMana, _iPLHP, _iPLDamMod, _iPLGetHit, _iPLLight, _iSplLvlAdd, _iUid, _iFMinDam, _iFMaxDam, _iLMinDam, _iLMaxDam, _iPrePower, _iSufPower, _iMinStr, _iMinMag, _iMinDex, IDidx ); + { "Ring of stability", ItemType::Ring, 3, 12, 8000, 0, 0, 0, 4194304, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 59, 0, 0, 0, 156 }, + { "Ring of precision", ItemType::Ring, 3, 12, 10200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 23, 0, 0, 0, 157 }, + { "Obsidian Ring of wizardry", ItemType::Ring, 3, 12, 56928, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 37, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 21, 0, 0, 0, 157 }, + { "Ring of precision", ItemType::Ring, 3, 12, 10200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 23, 0, 0, 0, 158 }, + { "Amulet of titans", ItemType::Amulet, 3, 45, 20896, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 19, 0, 0, 0, 160 }, + { "Gold Amulet", ItemType::Amulet, 3, 45, 13692, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 160 }, + { "Messerschmidt's Reaver", ItemType::Axe, 1, 163, 58000, 12, 30, 0, 16, 0, 0, 0, 0, 75, 75, 200, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, -3200, 15, 0, 0, 0, 44, 2, 12, 0, 0, -1, -1, 80, 0, 0, 135 }, + { "Vicious Maul of structure", ItemType::Mace, 1, 122, 10489, 6, 20, 0, 0, 0, 0, 0, 0, 127, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 35, 55, 0, 0, 142 }, + { "Short Sword", ItemType::Sword, 1, 64, 120, 2, 6, 0, 0, 0, 0, 0, 0, 15, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 18, 0, 0, 119 }, + { "Long Battle Bow of shock", ItemType::Bow, 1, 119, 8000, 1, 10, 0, 33554432, 0, 0, 0, 0, 18, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, -1, 43, 30, 0, 60, 148 }, + { "Short Bow of magic", ItemType::Bow, 1, 118, 400, 1, 4, 0, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 21, 0, 0, 0, 143 }, + { "Red Staff of Healing", ItemType::Staff, 1, 123, 1360, 4, 8, 0, 0, 23, 2, 22, 33, 35, 35, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 17, 0, 152 }, + { "Buckler", ItemType::Shield, 2, 83, 30, 0, 0, 5, 0, 0, 0, 0, 0, 6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 71 }, + { "Skull Cap", ItemType::Helm, 2, 90, 25, 0, 0, 3, 0, 0, 0, 0, 0, 15, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 49 }, + { "Rags", ItemType::LightArmor, 2, 128, 5, 0, 0, 4, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 55 }, + { "Quilted Armor", ItemType::LightArmor, 2, 129, 200, 0, 0, 7, 0, 0, 0, 0, 0, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 58 }, + { "Quilted Armor of light", ItemType::LightArmor, 2, 129, 1150, 0, 0, 10, 0, 0, 0, 0, 0, 12, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -1, 38, 0, 0, 0, 58 }, + { "Saintly Plate Mail of the stars", ItemType::HeavyArmor, 2, 103, 140729, 0, 0, 46, 0, 0, 0, 0, 0, 75, 75, 0, 0, 121, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 27, 60, 0, 0, 67 }, + { "Plate Mail of the stars", ItemType::HeavyArmor, 2, 103, 77800, 0, 0, 49, 0, 0, 0, 0, 0, 63, 75, 0, 0, 0, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 27, 60, 0, 0, 67 }, + { "Potion of Healing", ItemType::Misc, 3, 32, 50, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 24 }, + { "Potion of Full Healing", ItemType::Misc, 3, 35, 150, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 29 }, + { "Potion of Mana", ItemType::Misc, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, + { "Scroll of Golem", ItemType::Misc, 3, 1, 1100, 0, 0, 0, 0, 22, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 51, 0, 110 }, + { "Scroll of Search", ItemType::Misc, 3, 1, 50, 0, 0, 0, 0, 21, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 92 }, + { "Scroll of Identify", ItemType::Misc, 3, 1, 100, 0, 0, 0, 0, 21, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 94 }, + { "Scroll of Town Portal", ItemType::Misc, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 98 }, + { "Scroll of Healing", ItemType::Misc, 3, 1, 50, 0, 0, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 91 }, + { "Rune of Fire", ItemType::Misc, 3, 193, 100, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 161 }, + { "Gold", ItemType::Gold, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0 }, + { "The Undead Crown", ItemType::Helm, 2, 77, 16650, 0, 0, 8, 2, 27, 0, 0, 0, 45, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 7 }, + { "Empyrean Band", ItemType::Ring, 3, 18, 8000, 0, 0, 0, 270532608, 27, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 8 }, + { "Ring of Truth", ItemType::Ring, 3, 10, 9100, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 640, 0, -1, 0, 0, 4, 0, 0, 0, 0, -1, -1, 0, 0, 0, 11 }, + { "Griswold's Edge", ItemType::Sword, 1, 61, 42000, 4, 12, 0, 264208, 27, 0, 0, 0, 50, 50, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 1280, -1280, 0, 0, 0, 0, 8, 1, 10, 0, 0, -1, -1, 40, 0, 0, 31 }, + { "Bovine Plate", ItemType::HeavyArmor, 2, 226, 400, 0, 0, 150, 0, 27, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, -3200, 0, 0, 0, 5, -2, 9, 0, 0, 0, 0, -1, -1, 50, 0, 0, 32 }, + { "Book of Healing", ItemType::Misc, 3, 86, 1000, 0, 0, 0, 0, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 17, 0, 114 }, + { "Book of Charged Bolt", ItemType::Misc, 3, 88, 1000, 0, 0, 0, 0, 24, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 25, 0, 114 }, + { "Book of Firebolt", ItemType::Misc, 3, 87, 1000, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 15, 0, 114 }, + { "Blacksmith Oil", ItemType::Misc, 3, 30, 100, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 83 }, + { "Oil of Accuracy", ItemType::Misc, 3, 30, 500, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 84 }, + { "Oil of Sharpness", ItemType::Misc, 3, 30, 500, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 85 }, + { "Oil of Permanence", ItemType::Misc, 3, 30, 15000, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, + { "Doppelganger's Axe", ItemType::Axe, 1, 144, 6640, 4, 12, 0, 0, 0, 0, 0, 0, 23, 32, 86, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, -1, 22, 0, 0, 131 }, + { "Flail of vampires", ItemType::Mace, 1, 131, 16500, 2, 12, 0, 16384, 0, 0, 0, 0, 36, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 55, 30, 0, 0, 141 }, + { "Gladiator's Ring", ItemType::Ring, 3, 186, 10000, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3200, -3200, 0, 0, 0, 0, 109, 0, 0, 0, 0, -1, -1, 0, 0, 0, 157 }, + { "Warrior's War Staff of the moon", ItemType::Staff, 1, 124, 42332, 8, 16, 0, 0, 23, 0, 0, 0, 75, 75, 54, 15, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 27, 30, 0, 0, 155 }, + { "Kite Shield of the ages", ItemType::Shield, 2, 113, 2600, 0, 0, 10, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 37, 50, 0, 0, 74 }, + { "Heavy Spiked Club of puncturing", ItemType::Mace, 1, 70, 5239, 3, 6, 0, 0, 0, 0, 0, 0, 20, 20, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 57, 18, 0, 0, 139 }, + { "Book of Lightning", ItemType::Misc, 3, 88, 3000, 0, 0, 0, 0, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 20, 0, 114 }, + { "Jester's Sabre", ItemType::Sword, 1, 67, 1710, 1, 8, 0, 0, 0, 0, 0, 0, 23, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, -1, 17, 0, 0, 124 }, + { "Small Shield of blocking", ItemType::Shield, 2, 105, 4360, 0, 0, 6, 16777216, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 60, 25, 0, 0, 72 }, + { "The Butcher's Cleaver", ItemType::Axe, 1, 106, 3650, 4, 24, 0, 0, 27, 0, 0, 0, 10, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 6 }, + { "Scimitar of peril", ItemType::Sword, 1, 72, 700, 3, 7, 0, 0, 0, 0, 0, 0, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 86, 23, 0, 23, 121 }, + { "Crystalline Large Axe", ItemType::Axe, 1, 142, 5250, 6, 16, 0, 0, 0, 0, 0, 0, 12, 12, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, -1, 30, 0, 0, 132 }, + { "Red Cloak", ItemType::LightArmor, 2, 149, 580, 0, 0, 3, 0, 0, 0, 0, 0, 18, 18, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 56 }, + { "Mace of decay", ItemType::Mace, 1, 59, 600, 1, 8, 0, 0, 0, 0, 0, 0, 32, 32, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 85, 16, 0, 0, 136 }, + { "Ring of Truth", ItemType::Ring, 3, 10, 9100, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 640, 0, -1, 0, 0, 4, 0, 0, 0, 0, -1, -1, 0, 0, 0, 11 }, + { "Red Studded Leather Armor of paralysis", ItemType::LightArmor, 2, 107, 800, 0, 0, 17, 0, 0, 0, 0, 0, 18, 45, 0, 0, 0, 0, 0, -8, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 24, 20, 0, 0, 61 }, + { "Bent Hunter's Bow", ItemType::Bow, 1, 102, 1, 2, 5, 0, 0, 0, 0, 0, 0, 26, 40, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 20, 0, 35, 144 }, + { "Civerb's Cudgel", ItemType::Mace, 1, 59, 2000, 1, 8, 0, 1073741824, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, -2, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, -1, -1, 16, 0, 0, 136 }, + { "Deadly Spiked Club", ItemType::Mace, 1, 70, 1556, 3, 6, 0, 0, 0, 0, 0, 0, 8, 20, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, 18, 0, 0, 139 }, + { "Gnat Sting", ItemType::Bow, 1, 210, 30000, 1, 2, 0, 131584, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, -1, -1, 20, 0, 35, 144 }, + { "Thunderclap", ItemType::Mace, 1, 205, 30000, 5, 9, 0, 48, 0, 0, 0, 0, 255, 255, 0, 0, 0, 20, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 102, 3, 6, 2, 0, -1, -1, 40, 0, 0, 138 }, + { "Rod of Onan", ItemType::Staff, 1, 124, 44167, 8, 16, 0, 0, 23, 21, 50, 50, 75, 75, 100, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, -1, -1, 30, 0, 0, 155 }, + { "Flambeau", ItemType::Bow, 1, 209, 30000, 0, 0, 0, 33554440, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 15, 20, 0, 0, -1, -1, 25, 0, 40, 146 }, + { "Ring of Thunder", ItemType::Ring, 3, 177, 8000, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, 60, -30, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, -1, -1, 0, 0, 0, 156 }, + { "Acolyte's Amulet", ItemType::Amulet, 3, 183, 10000, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3968, 3968, 0, 0, 0, 0, 108, 0, 0, 0, 0, -1, -1, 0, 0, 0, 159 }, + { "The Protector", ItemType::Staff, 1, 162, 17240, 2, 4, 40, 67108864, 23, 2, 86, 86, 25, 25, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, -5, 0, 0, 59, 0, 0, 0, 0, -1, -1, 0, 0, 0, 151 }, + { "Bone Chain Armor", ItemType::MediumArmor, 2, 204, 36000, 0, 0, 40, 0, 0, 0, 0, 0, 55, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, -1, -1, 30, 0, 0, 63 }, + { "Oil of Permanence", ItemType::Misc, 3, 30, 15000, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, + { "Demon Plate Armor", ItemType::HeavyArmor, 2, 225, 80000, 0, 0, 80, 0, 0, 0, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, -1, -1, 90, 0, 0, 70 }, + { "Oil of Fortitude", ItemType::Misc, 3, 30, 2500, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, + { "Ring of Regha", ItemType::Ring, 3, 11, 4175, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, -3, 10, -3, 0, 0, 0, 10, 0, 0, 0, 0, 1, 0, 86, 0, 0, 0, 0, -1, -1, 0, 0, 0, 157 }, + { "Bronze Ring of dexterity", ItemType::Ring, 3, 12, 5200, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 156 }, + { "Oil of Accuracy", ItemType::Misc, 3, 30, 500, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 84 }, + { "Blacksmith Oil", ItemType::Misc, 3, 30, 100, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 35 }, + { "Spider's Short Staff of devastation", ItemType::Staff, 1, 109, 2050, 2, 4, 0, 0, 23, 0, 0, 0, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 84, 0, 0, 0, 151 }, + { "Oil of Hardening", ItemType::Misc, 3, 30, 500, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, + { "Oil of Skill", ItemType::Misc, 3, 30, 1500, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, + { "Oil of Mastery", ItemType::Misc, 3, 30, 2500, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, + { "Blitzen", ItemType::Bow, 1, 219, 30000, 0, 0, 0, 33554440, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 10, 15, 1, 0, -1, -1, 25, 0, 40, 146 }, + { "Oil of Death", ItemType::Misc, 3, 30, 2500, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 86 }, + { "Oil of Sharpness", ItemType::Misc, 3, 30, 500, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 85 }, + { "Crystalline Short Sword of the leech", ItemType::Sword, 1, 64, 10020, 2, 6, 0, 32768, 0, 0, 0, 0, 13, 13, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 56, 18, 0, 0, 119 }, + { "Plentiful Staff of Mana Shield", ItemType::Staff, 1, 166, 6360, 5, 10, 0, 0, 23, 11, 14, 14, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -1, 0, 25, 0, 153 }, + { "King's War Staff", ItemType::Staff, 1, 124, 92000, 8, 16, 0, 0, 23, 0, 0, 0, 75, 75, 175, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 30, 0, 0, 155 }, + { "Potion of Mana", ItemType::Misc, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, + { "Scroll of Town Portal", ItemType::Misc, 3, 1, 200, 0, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 27 }, + { "Potion of Mana", ItemType::Misc, 3, 39, 50, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 25 }, // clang-format on }; @@ -683,7 +683,7 @@ TEST(pack, UnPackItem_diablo_strip_hellfire_items) UnPackItem(&is, &id, true); - ASSERT_EQ(id._itype, ITYPE_NONE); + ASSERT_EQ(id._itype, ItemType::None); } TEST(pack, UnPackItem_empty) @@ -693,7 +693,7 @@ TEST(pack, UnPackItem_empty) UnPackItem(&is, &id, false); - ASSERT_EQ(id._itype, ITYPE_NONE); + ASSERT_EQ(id._itype, ItemType::None); } TEST(pack, PackItem_empty) @@ -701,7 +701,7 @@ TEST(pack, PackItem_empty) ItemPack is; Item id; - id._itype = ITYPE_NONE; + id._itype = ItemType::None; PackItem(&is, &id); @@ -715,7 +715,7 @@ static void compareGold(const ItemPack *is, int iCurs) ASSERT_EQ(id._iCurs, iCurs); ASSERT_EQ(id.IDidx, IDI_GOLD); ASSERT_EQ(id._ivalue, is->wValue); - ASSERT_EQ(id._itype, ITYPE_GOLD); + ASSERT_EQ(id._itype, ItemType::Gold); ASSERT_EQ(id._iClass, ICLASS_GOLD); ItemPack is2;