diff --git a/changelog.txt b/changelog.txt index f3a6c326b..50640ff55 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,8 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50) ------------------------------------------------------- +== 10/16/2016 == +Uleat: Renamed struct EQEmu::ItemBase to EQEmu::ItemData and class ItemInst to EQEmu::ItemInstance. + == 10/15/2016 == Uleat: Changed filenames to facilitate future inventory naming conventions diff --git a/common/database.cpp b/common/database.cpp index 41220b4d9..93bbe7e0c 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -701,7 +701,7 @@ bool Database::StoreCharacter(uint32 account_id, PlayerProfile_Struct* pp, Inven /* Insert starting inventory... */ std::string invquery; for (int16 i = EQEmu::legacy::EQUIPMENT_BEGIN; i <= EQEmu::legacy::BANK_BAGS_END;) { - const ItemInst* newinv = inv->GetItem(i); + const EQEmu::ItemInstance* newinv = inv->GetItem(i); if (newinv) { invquery = StringFormat("INSERT INTO `inventory` (charid, slotid, itemid, charges, color) VALUES (%u, %i, %u, %i, %u)", charid, i, newinv->GetItem()->ID, newinv->GetCharges(), newinv->GetColor()); diff --git a/common/eq_packet_structs.h b/common/eq_packet_structs.h index fec5af412..5569c86e0 100644 --- a/common/eq_packet_structs.h +++ b/common/eq_packet_structs.h @@ -2071,7 +2071,7 @@ struct AdventureLeaderboard_Struct /*struct Item_Shop_Struct { uint16 merchantid; uint8 itemtype; - EQEmu::ItemBase item; + EQEmu::ItemData item; uint8 iss_unknown001[6]; };*/ diff --git a/common/item_data.cpp b/common/item_data.cpp index fd40c2b7f..3286bf97e 100644 --- a/common/item_data.cpp +++ b/common/item_data.cpp @@ -167,7 +167,7 @@ uint8 EQEmu::item::ConvertAugTypeBitToAugType(uint32 aug_type_bit) } } -bool EQEmu::ItemBase::IsEquipable(uint16 race_id, uint16 class_id) +bool EQEmu::ItemData::IsEquipable(uint16 race_id, uint16 class_id) const { if (!(Races & GetPlayerRaceBit(race_id))) return false; @@ -178,32 +178,32 @@ bool EQEmu::ItemBase::IsEquipable(uint16 race_id, uint16 class_id) return true; } -bool EQEmu::ItemBase::IsClassCommon() +bool EQEmu::ItemData::IsClassCommon() const { return (ItemClass == item::ItemClassCommon); } -bool EQEmu::ItemBase::IsClassBag() +bool EQEmu::ItemData::IsClassBag() const { return (ItemClass == item::ItemClassBag); } -bool EQEmu::ItemBase::IsClassBook() +bool EQEmu::ItemData::IsClassBook() const { return (ItemClass == item::ItemClassBook); } -bool EQEmu::ItemBase::IsType1HWeapon() +bool EQEmu::ItemData::IsType1HWeapon() const { return ((ItemType == item::ItemType1HBlunt) || (ItemType == item::ItemType1HSlash) || (ItemType == item::ItemType1HPiercing)); } -bool EQEmu::ItemBase::IsType2HWeapon() +bool EQEmu::ItemData::IsType2HWeapon() const { return ((ItemType == item::ItemType2HBlunt) || (ItemType == item::ItemType2HSlash) || (ItemType == item::ItemType2HPiercing)); } -bool EQEmu::ItemBase::IsTypeShield() +bool EQEmu::ItemData::IsTypeShield() const { return (ItemType == item::ItemTypeShield); } diff --git a/common/item_data.h b/common/item_data.h index 1ecba6734..ce3eccefa 100644 --- a/common/item_data.h +++ b/common/item_data.h @@ -17,8 +17,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 04111-1307 USA */ -#ifndef COMMON_ITEM_BASE_H -#define COMMON_ITEM_BASE_H +#ifndef COMMON_ITEM_DATA_H +#define COMMON_ITEM_DATA_H /* @@ -50,17 +50,6 @@ namespace EQEmu { namespace item { - enum ItemAttributeBit : uint32 { - bit_ItemAttributeNone = 0x00000000, - bit_ItemAttributeLore = 0x00000001, - bit_ItemAttributeArtifact = 0x00000002, - bit_ItemAttributeSummoned = 0x00000004, - bit_ItemAttributeMagic = 0x00000008, - bit_ItemAttributeAugment = 0x00000010, - bit_ItemAttributePendingLore = 0x00000020, - bit_ItemAttributeUnknown = 0xFFFFFFFF - }; - enum ItemClass { ItemClassCommon = 0, ItemClassBag, @@ -354,8 +343,8 @@ namespace EQEmu //ProcRate }; - extern uint32 ConvertAugTypeToAugTypeBit(uint8 aug_type); - extern uint8 ConvertAugTypeBitToAugType(uint32 aug_type_bit); + uint32 ConvertAugTypeToAugTypeBit(uint8 aug_type); + uint8 ConvertAugTypeBitToAugType(uint32 aug_type_bit); } /*item*/ @@ -364,10 +353,9 @@ namespace EQEmu const void * inst; }; - struct ItemBase { + struct ItemData { // Non packet based fields uint8 MinStatus; - uint8 ItemDataType; // memset to item::ItemDataBase ('0') during mmf load // Packet based fields uint8 ItemClass; // Item Type: 0=common, 1=container, 2=book @@ -543,23 +531,15 @@ namespace EQEmu char ScrollName[65]; //BardName - bool IsEquipable(uint16 Race, uint16 Class); - bool IsClassCommon(); - bool IsClassBag(); - bool IsClassBook(); - bool IsType1HWeapon(); - bool IsType2HWeapon(); - bool IsTypeShield(); - - bool IsEquipable(uint16 Race, uint16 Class) const { return const_cast(this)->IsEquipable(Race, Class); } - bool IsClassCommon() const { return const_cast(this)->IsClassCommon(); } - bool IsClassBag() const { return const_cast(this)->IsClassBag(); } - bool IsClassBook() const { return const_cast(this)->IsClassBook(); } - bool IsType1HWeapon() const { return const_cast(this)->IsType1HWeapon(); } - bool IsType2HWeapon() const { return const_cast(this)->IsType2HWeapon(); } - bool IsTypeShield() const { return const_cast(this)->IsTypeShield(); } + bool IsEquipable(uint16 Race, uint16 Class) const; + bool IsClassCommon() const; + bool IsClassBag() const; + bool IsClassBook() const; + bool IsType1HWeapon() const; + bool IsType2HWeapon() const; + bool IsTypeShield() const; }; } /*EQEmu*/ -#endif /*COMMON_ITEM_BASE_H*/ +#endif /*COMMON_ITEM_DATA_H*/ diff --git a/common/item_instance.cpp b/common/item_instance.cpp index c8a75d0a7..c8beddd3c 100644 --- a/common/item_instance.cpp +++ b/common/item_instance.cpp @@ -30,7 +30,7 @@ #include -std::list dirty_inst; +std::list dirty_inst; int32 NextItemInstSerialNumber = 1; static inline int32 GetNextItemInstSerialNumber() { @@ -66,41 +66,41 @@ ItemInstQueue::~ItemInstQueue() } // Put item onto back of queue -void ItemInstQueue::push(ItemInst* inst) +void ItemInstQueue::push(EQEmu::ItemInstance* inst) { m_list.push_back(inst); } // Put item onto front of queue -void ItemInstQueue::push_front(ItemInst* inst) +void ItemInstQueue::push_front(EQEmu::ItemInstance* inst) { m_list.push_front(inst); } // Remove item from front of queue -ItemInst* ItemInstQueue::pop() +EQEmu::ItemInstance* ItemInstQueue::pop() { if (m_list.empty()) return nullptr; - ItemInst* inst = m_list.front(); + EQEmu::ItemInstance* inst = m_list.front(); m_list.pop_front(); return inst; } // Remove item from back of queue -ItemInst* ItemInstQueue::pop_back() +EQEmu::ItemInstance* ItemInstQueue::pop_back() { if (m_list.empty()) return nullptr; - ItemInst* inst = m_list.back(); + EQEmu::ItemInstance* inst = m_list.back(); m_list.pop_back(); return inst; } // Look at item at front of queue -ItemInst* ItemInstQueue::peek_front() const +EQEmu::ItemInstance* ItemInstQueue::peek_front() const { return (m_list.empty()) ? nullptr : m_list.front(); } @@ -146,16 +146,16 @@ void Inventory::CleanDirty() { dirty_inst.clear(); } -void Inventory::MarkDirty(ItemInst *inst) { +void Inventory::MarkDirty(EQEmu::ItemInstance *inst) { if (inst) { dirty_inst.push_back(inst); } } // Retrieve item at specified slot; returns false if item not found -ItemInst* Inventory::GetItem(int16 slot_id) const +EQEmu::ItemInstance* Inventory::GetItem(int16 slot_id) const { - ItemInst* result = nullptr; + EQEmu::ItemInstance* result = nullptr; // Cursor if (slot_id == EQEmu::legacy::SlotCursor) { @@ -188,35 +188,35 @@ ItemInst* Inventory::GetItem(int16 slot_id) const // Inner bag slots else if (slot_id >= EQEmu::legacy::TRADE_BAGS_BEGIN && slot_id <= EQEmu::legacy::TRADE_BAGS_END) { // Trade bag slots - ItemInst* inst = _GetItem(m_trade, Inventory::CalcSlotId(slot_id)); + EQEmu::ItemInstance* inst = _GetItem(m_trade, Inventory::CalcSlotId(slot_id)); if (inst && inst->IsClassBag()) { result = inst->GetItem(Inventory::CalcBagIdx(slot_id)); } } else if (slot_id >= EQEmu::legacy::SHARED_BANK_BAGS_BEGIN && slot_id <= EQEmu::legacy::SHARED_BANK_BAGS_END) { // Shared Bank bag slots - ItemInst* inst = _GetItem(m_shbank, Inventory::CalcSlotId(slot_id)); + EQEmu::ItemInstance* inst = _GetItem(m_shbank, Inventory::CalcSlotId(slot_id)); if (inst && inst->IsClassBag()) { result = inst->GetItem(Inventory::CalcBagIdx(slot_id)); } } else if (slot_id >= EQEmu::legacy::BANK_BAGS_BEGIN && slot_id <= EQEmu::legacy::BANK_BAGS_END) { // Bank bag slots - ItemInst* inst = _GetItem(m_bank, Inventory::CalcSlotId(slot_id)); + EQEmu::ItemInstance* inst = _GetItem(m_bank, Inventory::CalcSlotId(slot_id)); if (inst && inst->IsClassBag()) { result = inst->GetItem(Inventory::CalcBagIdx(slot_id)); } } else if (slot_id >= EQEmu::legacy::CURSOR_BAG_BEGIN && slot_id <= EQEmu::legacy::CURSOR_BAG_END) { // Cursor bag slots - ItemInst* inst = m_cursor.peek_front(); + EQEmu::ItemInstance* inst = m_cursor.peek_front(); if (inst && inst->IsClassBag()) { result = inst->GetItem(Inventory::CalcBagIdx(slot_id)); } } else if (slot_id >= EQEmu::legacy::GENERAL_BAGS_BEGIN && slot_id <= EQEmu::legacy::GENERAL_BAGS_END) { // Personal inventory bag slots - ItemInst* inst = _GetItem(m_inv, Inventory::CalcSlotId(slot_id)); + EQEmu::ItemInstance* inst = _GetItem(m_inv, Inventory::CalcSlotId(slot_id)); if (inst && inst->IsClassBag()) { result = inst->GetItem(Inventory::CalcBagIdx(slot_id)); } @@ -226,13 +226,13 @@ ItemInst* Inventory::GetItem(int16 slot_id) const } // Retrieve item at specified position within bag -ItemInst* Inventory::GetItem(int16 slot_id, uint8 bagidx) const +EQEmu::ItemInstance* Inventory::GetItem(int16 slot_id, uint8 bagidx) const { return GetItem(Inventory::CalcSlotId(slot_id, bagidx)); } // Put an item snto specified slot -int16 Inventory::PutItem(int16 slot_id, const ItemInst& inst) +int16 Inventory::PutItem(int16 slot_id, const EQEmu::ItemInstance& inst) { // Clean up item already in slot (if exists) DeleteItem(slot_id); @@ -247,13 +247,13 @@ int16 Inventory::PutItem(int16 slot_id, const ItemInst& inst) return _PutItem(slot_id, inst.Clone()); } -int16 Inventory::PushCursor(const ItemInst& inst) +int16 Inventory::PushCursor(const EQEmu::ItemInstance& inst) { m_cursor.push(inst.Clone()); return EQEmu::legacy::SlotCursor; } -ItemInst* Inventory::GetCursorItem() +EQEmu::ItemInstance* Inventory::GetCursorItem() { return m_cursor.peek_front(); } @@ -262,8 +262,8 @@ ItemInst* Inventory::GetCursorItem() bool Inventory::SwapItem(int16 slot_a, int16 slot_b) { // Temp holding areas for a and b - ItemInst* inst_a = GetItem(slot_a); - ItemInst* inst_b = GetItem(slot_b); + EQEmu::ItemInstance* inst_a = GetItem(slot_a); + EQEmu::ItemInstance* inst_b = GetItem(slot_b); if (inst_a) { if (!inst_a->IsSlotAllowed(slot_b)) { return false; } } if (inst_b) { if (!inst_b->IsSlotAllowed(slot_a)) { return false; } } @@ -278,7 +278,7 @@ bool Inventory::SwapItem(int16 slot_a, int16 slot_b) bool Inventory::DeleteItem(int16 slot_id, uint8 quantity) { // Pop item out of inventory map (or queue) - ItemInst* item_to_delete = PopItem(slot_id); + EQEmu::ItemInstance* item_to_delete = PopItem(slot_id); // Determine if object should be fully deleted, or // just a quantity of charges of the item can be deleted @@ -312,12 +312,12 @@ bool Inventory::DeleteItem(int16 slot_id, uint8 quantity) // Checks All items in a bag for No Drop bool Inventory::CheckNoDrop(int16 slot_id) { - ItemInst* inst = GetItem(slot_id); + EQEmu::ItemInstance* inst = GetItem(slot_id); if (!inst) return false; if (!inst->GetItem()->NoDrop) return true; if (inst->GetItem()->ItemClass == 1) { for (uint8 i = SUB_INDEX_BEGIN; i < EQEmu::legacy::ITEM_CONTAINER_SIZE; i++) { - ItemInst* bagitem = GetItem(Inventory::CalcSlotId(slot_id, i)); + EQEmu::ItemInstance* bagitem = GetItem(Inventory::CalcSlotId(slot_id, i)); if (bagitem && !bagitem->GetItem()->NoDrop) return true; } @@ -327,9 +327,9 @@ bool Inventory::CheckNoDrop(int16 slot_id) { // Remove item from bucket without memory delete // Returns item pointer if full delete was successful -ItemInst* Inventory::PopItem(int16 slot_id) +EQEmu::ItemInstance* Inventory::PopItem(int16 slot_id) { - ItemInst* p = nullptr; + EQEmu::ItemInstance* p = nullptr; if (slot_id == EQEmu::legacy::SlotCursor) { p = m_cursor.pop(); @@ -360,7 +360,7 @@ ItemInst* Inventory::PopItem(int16 slot_id) } else { // Is slot inside bag? - ItemInst* baginst = GetItem(Inventory::CalcSlotId(slot_id)); + EQEmu::ItemInstance* baginst = GetItem(Inventory::CalcSlotId(slot_id)); if (baginst != nullptr && baginst->IsClassBag()) { p = baginst->PopItem(Inventory::CalcBagIdx(slot_id)); } @@ -370,13 +370,13 @@ ItemInst* Inventory::PopItem(int16 slot_id) return p; } -bool Inventory::HasSpaceForItem(const EQEmu::ItemBase *ItemToTry, int16 Quantity) { +bool Inventory::HasSpaceForItem(const EQEmu::ItemData *ItemToTry, int16 Quantity) { if (ItemToTry->Stackable) { for (int16 i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++) { - ItemInst* InvItem = GetItem(i); + EQEmu::ItemInstance* InvItem = GetItem(i); if (InvItem && (InvItem->GetItem()->ID == ItemToTry->ID) && (InvItem->GetCharges() < InvItem->GetItem()->StackSize)) { @@ -413,7 +413,7 @@ bool Inventory::HasSpaceForItem(const EQEmu::ItemBase *ItemToTry, int16 Quantity for (int16 i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++) { - ItemInst* InvItem = GetItem(i); + EQEmu::ItemInstance* InvItem = GetItem(i); if (!InvItem) { @@ -625,7 +625,7 @@ int16 Inventory::FindFreeSlot(bool for_bag, bool try_cursor, uint8 min_size, boo if (!for_bag) { for (int16 i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++) { - const ItemInst* inst = GetItem(i); + const EQEmu::ItemInstance* inst = GetItem(i); if (inst && inst->IsClassBag() && inst->GetItem()->BagSize >= min_size) { if (inst->GetItem()->BagType == EQEmu::item::BagTypeQuiver && inst->GetItem()->ItemType != EQEmu::item::ItemTypeArrow) @@ -658,7 +658,7 @@ int16 Inventory::FindFreeSlot(bool for_bag, bool try_cursor, uint8 min_size, boo } // This is a mix of HasSpaceForItem and FindFreeSlot..due to existing coding behavior, it was better to add a new helper function... -int16 Inventory::FindFreeSlotForTradeItem(const ItemInst* inst) { +int16 Inventory::FindFreeSlotForTradeItem(const EQEmu::ItemInstance* inst) { // Do not arbitrarily use this function..it is designed for use with Client::ResetTrade() and Client::FinishTrade(). // If you have a need, use it..but, understand it is not a compatible replacement for Inventory::FindFreeSlot(). // @@ -680,7 +680,7 @@ int16 Inventory::FindFreeSlotForTradeItem(const ItemInst* inst) { // step 2: find partial room for stackables if (inst->IsStackable()) { for (int16 free_slot = EQEmu::legacy::GENERAL_BEGIN; free_slot <= EQEmu::legacy::GENERAL_END; ++free_slot) { - const ItemInst* main_inst = m_inv[free_slot]; + const EQEmu::ItemInstance* main_inst = m_inv[free_slot]; if (!main_inst) continue; @@ -690,14 +690,14 @@ int16 Inventory::FindFreeSlotForTradeItem(const ItemInst* inst) { } for (int16 free_slot = EQEmu::legacy::GENERAL_BEGIN; free_slot <= EQEmu::legacy::GENERAL_END; ++free_slot) { - const ItemInst* main_inst = m_inv[free_slot]; + const EQEmu::ItemInstance* main_inst = m_inv[free_slot]; if (!main_inst) continue; if (main_inst->IsClassBag()) { // if item-specific containers already have bad items, we won't fix it here... for (uint8 free_bag_slot = SUB_INDEX_BEGIN; (free_bag_slot < main_inst->GetItem()->BagSlots) && (free_bag_slot < EQEmu::legacy::ITEM_CONTAINER_SIZE); ++free_bag_slot) { - const ItemInst* sub_inst = main_inst->GetItem(free_bag_slot); + const EQEmu::ItemInstance* sub_inst = main_inst->GetItem(free_bag_slot); if (!sub_inst) continue; @@ -712,7 +712,7 @@ int16 Inventory::FindFreeSlotForTradeItem(const ItemInst* inst) { // step 3a: find room for container-specific items (ItemClassArrow) if (inst->GetItem()->ItemType == EQEmu::item::ItemTypeArrow) { for (int16 free_slot = EQEmu::legacy::GENERAL_BEGIN; free_slot <= EQEmu::legacy::GENERAL_END; ++free_slot) { - const ItemInst* main_inst = m_inv[free_slot]; + const EQEmu::ItemInstance* main_inst = m_inv[free_slot]; if (!main_inst || (main_inst->GetItem()->BagType != EQEmu::item::BagTypeQuiver) || !main_inst->IsClassBag()) continue; @@ -727,7 +727,7 @@ int16 Inventory::FindFreeSlotForTradeItem(const ItemInst* inst) { // step 3b: find room for container-specific items (ItemClassSmallThrowing) if (inst->GetItem()->ItemType == EQEmu::item::ItemTypeSmallThrowing) { for (int16 free_slot = EQEmu::legacy::GENERAL_BEGIN; free_slot <= EQEmu::legacy::GENERAL_END; ++free_slot) { - const ItemInst* main_inst = m_inv[free_slot]; + const EQEmu::ItemInstance* main_inst = m_inv[free_slot]; if (!main_inst || (main_inst->GetItem()->BagType != EQEmu::item::BagTypeBandolier) || !main_inst->IsClassBag()) continue; @@ -741,14 +741,14 @@ int16 Inventory::FindFreeSlotForTradeItem(const ItemInst* inst) { // step 4: just find an empty slot for (int16 free_slot = EQEmu::legacy::GENERAL_BEGIN; free_slot <= EQEmu::legacy::GENERAL_END; ++free_slot) { - const ItemInst* main_inst = m_inv[free_slot]; + const EQEmu::ItemInstance* main_inst = m_inv[free_slot]; if (!main_inst) return free_slot; } for (int16 free_slot = EQEmu::legacy::GENERAL_BEGIN; free_slot <= EQEmu::legacy::GENERAL_END; ++free_slot) { - const ItemInst* main_inst = m_inv[free_slot]; + const EQEmu::ItemInstance* main_inst = m_inv[free_slot]; if (main_inst && main_inst->IsClassBag()) { if ((main_inst->GetItem()->BagSize < inst->GetItem()->Size) || (main_inst->GetItem()->BagType == EQEmu::item::BagTypeBandolier) || (main_inst->GetItem()->BagType == EQEmu::item::BagTypeQuiver)) @@ -903,7 +903,7 @@ uint8 Inventory::CalcMaterialFromSlot(int16 equipslot) } } -bool Inventory::CanItemFitInContainer(const EQEmu::ItemBase *ItemToTry, const EQEmu::ItemBase *Container) { +bool Inventory::CanItemFitInContainer(const EQEmu::ItemData *ItemToTry, const EQEmu::ItemData *Container) { if (!ItemToTry || !Container) return false; @@ -959,7 +959,7 @@ bool Inventory::SupportsContainers(int16 slot_id) return false; } -int Inventory::GetSlotByItemInst(ItemInst *inst) { +int Inventory::GetSlotByItemInst(EQEmu::ItemInstance *inst) { if (!inst) return INVALID_INDEX; @@ -1066,9 +1066,9 @@ void Inventory::dumpSharedBankItems() { dumpItemCollection(m_shbank); } -int Inventory::GetSlotByItemInstCollection(const std::map &collection, ItemInst *inst) { +int Inventory::GetSlotByItemInstCollection(const std::map &collection, EQEmu::ItemInstance *inst) { for (auto iter = collection.begin(); iter != collection.end(); ++iter) { - ItemInst *t_inst = iter->second; + EQEmu::ItemInstance *t_inst = iter->second; if (t_inst == inst) { return iter->first; } @@ -1085,7 +1085,7 @@ int Inventory::GetSlotByItemInstCollection(const std::map &col return -1; } -void Inventory::dumpItemCollection(const std::map &collection) +void Inventory::dumpItemCollection(const std::map &collection) { for (auto it = collection.cbegin(); it != collection.cend(); ++it) { auto inst = it->second; @@ -1099,14 +1099,14 @@ void Inventory::dumpItemCollection(const std::map &collection) } } -void Inventory::dumpBagContents(ItemInst *inst, std::map::const_iterator *it) +void Inventory::dumpBagContents(EQEmu::ItemInstance *inst, std::map::const_iterator *it) { if (!inst || !inst->IsClassBag()) return; // Go through bag, if bag for (auto itb = inst->_cbegin(); itb != inst->_cend(); ++itb) { - ItemInst* baginst = itb->second; + EQEmu::ItemInstance* baginst = itb->second; if (!baginst || !baginst->GetItem()) continue; @@ -1118,7 +1118,7 @@ void Inventory::dumpBagContents(ItemInst *inst, std::map::cons } // Internal Method: Retrieves item within an inventory bucket -ItemInst* Inventory::_GetItem(const std::map& bucket, int16 slot_id) const +EQEmu::ItemInstance* Inventory::_GetItem(const std::map& bucket, int16 slot_id) const { auto it = bucket.find(slot_id); if (it != bucket.end()) { @@ -1131,7 +1131,7 @@ ItemInst* Inventory::_GetItem(const std::map& bucket, int16 sl // Internal Method: "put" item into bucket, without regard for what is currently in bucket // Assumes item has already been allocated -int16 Inventory::_PutItem(int16 slot_id, ItemInst* inst) +int16 Inventory::_PutItem(int16 slot_id, EQEmu::ItemInstance* inst) { // What happens here when we _PutItem(MainCursor)? Bad things..really bad things... // @@ -1178,7 +1178,7 @@ int16 Inventory::_PutItem(int16 slot_id, ItemInst* inst) else { // Slot must be within a bag parentSlot = Inventory::CalcSlotId(slot_id); - ItemInst* baginst = GetItem(parentSlot); // Get parent bag + EQEmu::ItemInstance* baginst = GetItem(parentSlot); // Get parent bag if (baginst && baginst->IsClassBag()) { baginst->_PutItem(Inventory::CalcBagIdx(slot_id), inst); @@ -1195,7 +1195,7 @@ int16 Inventory::_PutItem(int16 slot_id, ItemInst* inst) } // Internal Method: Checks an inventory bucket for a particular item -int16 Inventory::_HasItem(std::map& bucket, uint32 item_id, uint8 quantity) +int16 Inventory::_HasItem(std::map& bucket, uint32 item_id, uint8 quantity) { uint32 quantity_found = 0; @@ -1288,7 +1288,7 @@ int16 Inventory::_HasItem(ItemInstQueue& iqueue, uint32 item_id, uint8 quantity) } // Internal Method: Checks an inventory bucket for a particular item -int16 Inventory::_HasItemByUse(std::map& bucket, uint8 use, uint8 quantity) +int16 Inventory::_HasItemByUse(std::map& bucket, uint8 use, uint8 quantity) { uint32 quantity_found = 0; @@ -1354,7 +1354,7 @@ int16 Inventory::_HasItemByUse(ItemInstQueue& iqueue, uint8 use, uint8 quantity) return INVALID_INDEX; } -int16 Inventory::_HasItemByLoreGroup(std::map& bucket, uint32 loregroup) +int16 Inventory::_HasItemByLoreGroup(std::map& bucket, uint32 loregroup) { for (auto iter = bucket.begin(); iter != bucket.end(); ++iter) { auto inst = iter->second; @@ -1438,12 +1438,12 @@ int16 Inventory::_HasItemByLoreGroup(ItemInstQueue& iqueue, uint32 loregroup) // -// class ItemInst +// class EQEmu::ItemInstance // -ItemInst::ItemInst(const EQEmu::ItemBase* item, int16 charges) { +EQEmu::ItemInstance::ItemInstance(const ItemData* item, int16 charges) { m_use_type = ItemInstNormal; if(item) { - m_item = new EQEmu::ItemBase(*item); + m_item = new ItemData(*item); } else { m_item = nullptr; } @@ -1470,11 +1470,11 @@ ItemInst::ItemInst(const EQEmu::ItemBase* item, int16 charges) { m_recast_timestamp = 0; } -ItemInst::ItemInst(SharedDatabase *db, uint32 item_id, int16 charges) { +EQEmu::ItemInstance::ItemInstance(SharedDatabase *db, uint32 item_id, int16 charges) { m_use_type = ItemInstNormal; m_item = db->GetItem(item_id); if(m_item) { - m_item = new EQEmu::ItemBase(*m_item); + m_item = new ItemData(*m_item); } else { m_item = nullptr; @@ -1503,7 +1503,7 @@ ItemInst::ItemInst(SharedDatabase *db, uint32 item_id, int16 charges) { m_recast_timestamp = 0; } -ItemInst::ItemInst(ItemInstTypes use_type) { +EQEmu::ItemInstance::ItemInstance(ItemInstTypes use_type) { m_use_type = use_type; m_item = nullptr; m_charges = 0; @@ -1524,12 +1524,12 @@ ItemInst::ItemInst(ItemInstTypes use_type) { m_recast_timestamp = 0; } -// Make a copy of an ItemInst object -ItemInst::ItemInst(const ItemInst& copy) +// Make a copy of an EQEmu::ItemInstance object +EQEmu::ItemInstance::ItemInstance(const ItemInstance& copy) { m_use_type=copy.m_use_type; if(copy.m_item) - m_item = new EQEmu::ItemBase(*copy.m_item); + m_item = new ItemData(*copy.m_item); else m_item = nullptr; @@ -1542,8 +1542,8 @@ ItemInst::ItemInst(const ItemInst& copy) m_merchantcount=copy.m_merchantcount; // Copy container contents for (auto it = copy.m_contents.begin(); it != copy.m_contents.end(); ++it) { - ItemInst* inst_old = it->second; - ItemInst* inst_new = nullptr; + ItemInstance* inst_old = it->second; + ItemInstance* inst_new = nullptr; if (inst_old) { inst_new = inst_old->Clone(); @@ -1565,7 +1565,7 @@ ItemInst::ItemInst(const ItemInst& copy) m_evolveLvl = copy.m_evolveLvl; m_activated = copy.m_activated; if (copy.m_scaledItem) - m_scaledItem = new EQEmu::ItemBase(*copy.m_scaledItem); + m_scaledItem = new ItemData(*copy.m_scaledItem); else m_scaledItem = nullptr; @@ -1582,7 +1582,7 @@ ItemInst::ItemInst(const ItemInst& copy) } // Clean up container contents -ItemInst::~ItemInst() +EQEmu::ItemInstance::~ItemInstance() { Clear(); safe_delete(m_item); @@ -1591,7 +1591,7 @@ ItemInst::~ItemInst() } // Query item type -bool ItemInst::IsType(EQEmu::item::ItemClass item_class) const +bool EQEmu::ItemInstance::IsType(EQEmu::item::ItemClass item_class) const { // IsType() does not protect against 'm_item = nullptr' @@ -1605,23 +1605,23 @@ bool ItemInst::IsType(EQEmu::item::ItemClass item_class) const return (m_item->ItemClass == item_class); } -bool ItemInst::IsClassCommon() +bool EQEmu::ItemInstance::IsClassCommon() const { return (m_item && m_item->IsClassCommon()); } -bool ItemInst::IsClassBag() +bool EQEmu::ItemInstance::IsClassBag() const { return (m_item && m_item->IsClassBag()); } -bool ItemInst::IsClassBook() +bool EQEmu::ItemInstance::IsClassBook() const { return (m_item && m_item->IsClassBook()); } // Is item stackable? -bool ItemInst::IsStackable() const +bool EQEmu::ItemInstance::IsStackable() const { if (!m_item) return false; @@ -1629,7 +1629,7 @@ bool ItemInst::IsStackable() const return m_item->Stackable; } -bool ItemInst::IsCharged() const +bool EQEmu::ItemInstance::IsCharged() const { if (!m_item) return false; @@ -1641,7 +1641,7 @@ bool ItemInst::IsCharged() const } // Can item be equipped? -bool ItemInst::IsEquipable(uint16 race, uint16 class_) const +bool EQEmu::ItemInstance::IsEquipable(uint16 race, uint16 class_) const { if (!m_item || (m_item->Slots == 0)) return false; @@ -1650,7 +1650,7 @@ bool ItemInst::IsEquipable(uint16 race, uint16 class_) const } // Can equip at this slot? -bool ItemInst::IsEquipable(int16 slot_id) const +bool EQEmu::ItemInstance::IsEquipable(int16 slot_id) const { if (!m_item) return false; @@ -1668,7 +1668,7 @@ bool ItemInst::IsEquipable(int16 slot_id) const return false; } -bool ItemInst::IsAugmentable() const +bool EQEmu::ItemInstance::IsAugmentable() const { if (!m_item) return false; @@ -1681,7 +1681,7 @@ bool ItemInst::IsAugmentable() const return false; } -bool ItemInst::AvailableWearSlot(uint32 aug_wear_slots) const { +bool EQEmu::ItemInstance::AvailableWearSlot(uint32 aug_wear_slots) const { // TODO: check to see if incoming 'aug_wear_slots' "switches" bit assignments like above... // (if wrong, would only affect MainAmmo and MainPowerSource augments) if (!m_item || !m_item->IsClassCommon()) @@ -1698,7 +1698,7 @@ bool ItemInst::AvailableWearSlot(uint32 aug_wear_slots) const { return (index < 23) ? true : false; } -int8 ItemInst::AvailableAugmentSlot(int32 augtype) const +int8 EQEmu::ItemInstance::AvailableAugmentSlot(int32 augtype) const { if (!m_item || !m_item->IsClassCommon()) return INVALID_INDEX; @@ -1713,7 +1713,7 @@ int8 ItemInst::AvailableAugmentSlot(int32 augtype) const return (index < EQEmu::legacy::ITEM_COMMON_SIZE) ? index : INVALID_INDEX; } -bool ItemInst::IsAugmentSlotAvailable(int32 augtype, uint8 slot) const +bool EQEmu::ItemInstance::IsAugmentSlotAvailable(int32 augtype, uint8 slot) const { if (!m_item || !m_item->IsClassCommon()) return false; @@ -1725,7 +1725,7 @@ bool ItemInst::IsAugmentSlotAvailable(int32 augtype, uint8 slot) const } // Retrieve item inside container -ItemInst* ItemInst::GetItem(uint8 index) const +EQEmu::ItemInstance* EQEmu::ItemInstance::GetItem(uint8 index) const { auto it = m_contents.find(index); if (it != m_contents.end()) { @@ -1735,16 +1735,16 @@ ItemInst* ItemInst::GetItem(uint8 index) const return nullptr; } -uint32 ItemInst::GetItemID(uint8 slot) const +uint32 EQEmu::ItemInstance::GetItemID(uint8 slot) const { - ItemInst *item = GetItem(slot); + ItemInstance *item = GetItem(slot); if (item) return item->GetID(); return NO_ITEM; } -void ItemInst::PutItem(uint8 index, const ItemInst& inst) +void EQEmu::ItemInstance::PutItem(uint8 index, const ItemInstance& inst) { // Clean up item already in slot (if exists) DeleteItem(index); @@ -1754,19 +1754,19 @@ void ItemInst::PutItem(uint8 index, const ItemInst& inst) } // Remove item inside container -void ItemInst::DeleteItem(uint8 index) +void EQEmu::ItemInstance::DeleteItem(uint8 index) { - ItemInst* inst = PopItem(index); + ItemInstance* inst = PopItem(index); safe_delete(inst); } // Remove item from container without memory delete // Hands over memory ownership to client of this function call -ItemInst* ItemInst::PopItem(uint8 index) +EQEmu::ItemInstance* EQEmu::ItemInstance::PopItem(uint8 index) { auto iter = m_contents.find(index); if (iter != m_contents.end()) { - ItemInst* inst = iter->second; + ItemInstance* inst = iter->second; m_contents.erase(index); return inst; // Return pointer that needs to be deleted (or otherwise managed) } @@ -1775,7 +1775,7 @@ ItemInst* ItemInst::PopItem(uint8 index) } // Remove all items from container -void ItemInst::Clear() +void EQEmu::ItemInstance::Clear() { // Destroy container contents for (auto iter = m_contents.begin(); iter != m_contents.end(); ++iter) { @@ -1785,22 +1785,22 @@ void ItemInst::Clear() } // Remove all items from container -void ItemInst::ClearByFlags(byFlagSetting is_nodrop, byFlagSetting is_norent) +void EQEmu::ItemInstance::ClearByFlags(byFlagSetting is_nodrop, byFlagSetting is_norent) { // TODO: This needs work... // Destroy container contents - std::map::const_iterator cur, end, del; + std::map::const_iterator cur, end, del; cur = m_contents.begin(); end = m_contents.end(); for (; cur != end;) { - ItemInst* inst = cur->second; + ItemInstance* inst = cur->second; if (inst == nullptr) { cur = m_contents.erase(cur); continue; } - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (item == nullptr) { cur = m_contents.erase(cur); continue; @@ -1847,7 +1847,7 @@ void ItemInst::ClearByFlags(byFlagSetting is_nodrop, byFlagSetting is_norent) } } -uint8 ItemInst::FirstOpenSlot() const +uint8 EQEmu::ItemInstance::FirstOpenSlot() const { if (!m_item) return INVALID_INDEX; @@ -1861,7 +1861,7 @@ uint8 ItemInst::FirstOpenSlot() const return (i < slots) ? i : INVALID_INDEX; } -uint8 ItemInst::GetTotalItemCount() const +uint8 EQEmu::ItemInstance::GetTotalItemCount() const { if (!m_item) return 0; @@ -1875,7 +1875,7 @@ uint8 ItemInst::GetTotalItemCount() const return item_count; } -bool ItemInst::IsNoneEmptyContainer() +bool EQEmu::ItemInstance::IsNoneEmptyContainer() { if (!m_item || !m_item->IsClassBag()) return false; @@ -1889,7 +1889,7 @@ bool ItemInst::IsNoneEmptyContainer() } // Retrieve augment inside item -ItemInst* ItemInst::GetAugment(uint8 slot) const +EQEmu::ItemInstance* EQEmu::ItemInstance::GetAugment(uint8 slot) const { if (m_item && m_item->IsClassCommon()) return GetItem(slot); @@ -1897,7 +1897,7 @@ ItemInst* ItemInst::GetAugment(uint8 slot) const return nullptr; } -ItemInst* ItemInst::GetOrnamentationAug(int32 ornamentationAugtype) const +EQEmu::ItemInstance* EQEmu::ItemInstance::GetOrnamentationAug(int32 ornamentationAugtype) const { if (!m_item || !m_item->IsClassCommon()) { return nullptr; } if (ornamentationAugtype == 0) { return nullptr; } @@ -1922,7 +1922,7 @@ ItemInst* ItemInst::GetOrnamentationAug(int32 ornamentationAugtype) const return nullptr; } -uint32 ItemInst::GetOrnamentHeroModel(int32 material_slot) const { +uint32 EQEmu::ItemInstance::GetOrnamentHeroModel(int32 material_slot) const { uint32 HeroModel = 0; if (m_ornament_hero_model > 0) { @@ -1935,7 +1935,7 @@ uint32 ItemInst::GetOrnamentHeroModel(int32 material_slot) const { return HeroModel; } -bool ItemInst::UpdateOrnamentationInfo() { +bool EQEmu::ItemInstance::UpdateOrnamentationInfo() { if (!m_item || !m_item->IsClassCommon()) return false; @@ -1944,7 +1944,7 @@ bool ItemInst::UpdateOrnamentationInfo() { int32 ornamentationAugtype = RuleI(Character, OrnamentationAugmentType); if (GetOrnamentationAug(ornamentationAugtype)) { - const EQEmu::ItemBase* ornamentItem; + const ItemData* ornamentItem; ornamentItem = GetOrnamentationAug(ornamentationAugtype)->GetItem(); if (ornamentItem != nullptr) { @@ -1971,7 +1971,7 @@ bool ItemInst::UpdateOrnamentationInfo() { return ornamentSet; } -bool ItemInst::CanTransform(const EQEmu::ItemBase *ItemToTry, const EQEmu::ItemBase *Container, bool AllowAll) { +bool EQEmu::ItemInstance::CanTransform(const EQEmu::ItemData *ItemToTry, const EQEmu::ItemData *Container, bool AllowAll) { if (!ItemToTry || !Container) return false; if (ItemToTry->ItemType == EQEmu::item::ItemTypeArrow || strnlen(Container->CharmFile, 30) == 0) @@ -2017,7 +2017,7 @@ bool ItemInst::CanTransform(const EQEmu::ItemBase *ItemToTry, const EQEmu::ItemB return false; } -uint32 ItemInst::GetAugmentItemID(uint8 slot) const +uint32 EQEmu::ItemInstance::GetAugmentItemID(uint8 slot) const { if (!m_item || !m_item->IsClassCommon()) return NO_ITEM; @@ -2026,7 +2026,7 @@ uint32 ItemInst::GetAugmentItemID(uint8 slot) const } // Add an augment to the item -void ItemInst::PutAugment(uint8 slot, const ItemInst& augment) +void EQEmu::ItemInstance::PutAugment(uint8 slot, const ItemInstance& augment) { if (!m_item || !m_item->IsClassCommon()) return; @@ -2034,12 +2034,12 @@ void ItemInst::PutAugment(uint8 slot, const ItemInst& augment) PutItem(slot, augment); } -void ItemInst::PutAugment(SharedDatabase *db, uint8 slot, uint32 item_id) +void EQEmu::ItemInstance::PutAugment(SharedDatabase *db, uint8 slot, uint32 item_id) { if (item_id == NO_ITEM) { return; } if (db == nullptr) { return; /* TODO: add log message for nullptr */ } - const ItemInst* aug = db->CreateItem(item_id); + const ItemInstance* aug = db->CreateItem(item_id); if (aug) { PutAugment(slot, *aug); safe_delete(aug); @@ -2047,7 +2047,7 @@ void ItemInst::PutAugment(SharedDatabase *db, uint8 slot, uint32 item_id) } // Remove augment from item and destroy it -void ItemInst::DeleteAugment(uint8 index) +void EQEmu::ItemInstance::DeleteAugment(uint8 index) { if (!m_item || !m_item->IsClassCommon()) return; @@ -2056,7 +2056,7 @@ void ItemInst::DeleteAugment(uint8 index) } // Remove augment from item and return it -ItemInst* ItemInst::RemoveAugment(uint8 index) +EQEmu::ItemInstance* EQEmu::ItemInstance::RemoveAugment(uint8 index) { if (!m_item || !m_item->IsClassCommon()) return nullptr; @@ -2064,7 +2064,7 @@ ItemInst* ItemInst::RemoveAugment(uint8 index) return PopItem(index); } -bool ItemInst::IsAugmented() +bool EQEmu::ItemInstance::IsAugmented() { if (!m_item || !m_item->IsClassCommon()) return false; @@ -2078,7 +2078,7 @@ bool ItemInst::IsAugmented() } // Has attack/delay? -bool ItemInst::IsWeapon() const +bool EQEmu::ItemInstance::IsWeapon() const { if (!m_item || !m_item->IsClassCommon()) return false; @@ -2089,7 +2089,7 @@ bool ItemInst::IsWeapon() const return ((m_item->Damage != 0) && (m_item->Delay != 0)); } -bool ItemInst::IsAmmo() const +bool EQEmu::ItemInstance::IsAmmo() const { if (!m_item) return false; @@ -2105,7 +2105,7 @@ bool ItemInst::IsAmmo() const } -const EQEmu::ItemBase* ItemInst::GetItem() const +const EQEmu::ItemData* EQEmu::ItemInstance::GetItem() const { if (!m_item) return nullptr; @@ -2116,13 +2116,13 @@ const EQEmu::ItemBase* ItemInst::GetItem() const return m_item; } -const EQEmu::ItemBase* ItemInst::GetUnscaledItem() const +const EQEmu::ItemData* EQEmu::ItemInstance::GetUnscaledItem() const { // No operator calls and defaults to nullptr return m_item; } -std::string ItemInst::GetCustomDataString() const { +std::string EQEmu::ItemInstance::GetCustomDataString() const { std::string ret_val; auto iter = m_custom_data.begin(); while (iter != m_custom_data.end()) { @@ -2141,7 +2141,7 @@ std::string ItemInst::GetCustomDataString() const { return ret_val; } -std::string ItemInst::GetCustomData(std::string identifier) { +std::string EQEmu::ItemInstance::GetCustomData(std::string identifier) { std::map::const_iterator iter = m_custom_data.find(identifier); if (iter != m_custom_data.end()) { return iter->second; @@ -2150,49 +2150,49 @@ std::string ItemInst::GetCustomData(std::string identifier) { return ""; } -void ItemInst::SetCustomData(std::string identifier, std::string value) { +void EQEmu::ItemInstance::SetCustomData(std::string identifier, std::string value) { DeleteCustomData(identifier); m_custom_data[identifier] = value; } -void ItemInst::SetCustomData(std::string identifier, int value) { +void EQEmu::ItemInstance::SetCustomData(std::string identifier, int value) { DeleteCustomData(identifier); std::stringstream ss; ss << value; m_custom_data[identifier] = ss.str(); } -void ItemInst::SetCustomData(std::string identifier, float value) { +void EQEmu::ItemInstance::SetCustomData(std::string identifier, float value) { DeleteCustomData(identifier); std::stringstream ss; ss << value; m_custom_data[identifier] = ss.str(); } -void ItemInst::SetCustomData(std::string identifier, bool value) { +void EQEmu::ItemInstance::SetCustomData(std::string identifier, bool value) { DeleteCustomData(identifier); std::stringstream ss; ss << value; m_custom_data[identifier] = ss.str(); } -void ItemInst::DeleteCustomData(std::string identifier) { +void EQEmu::ItemInstance::DeleteCustomData(std::string identifier) { auto iter = m_custom_data.find(identifier); if (iter != m_custom_data.end()) { m_custom_data.erase(iter); } } -// Clone a type of ItemInst object +// Clone a type of EQEmu::ItemInstance object // c++ doesn't allow a polymorphic copy constructor, // so we have to resort to a polymorphic Clone() -ItemInst* ItemInst::Clone() const +EQEmu::ItemInstance* EQEmu::ItemInstance::Clone() const { // Pseudo-polymorphic copy constructor - return new ItemInst(*this); + return new ItemInstance(*this); } -bool ItemInst::IsSlotAllowed(int16 slot_id) const { +bool EQEmu::ItemInstance::IsSlotAllowed(int16 slot_id) const { // 'SupportsContainers' and 'slot_id > 21' previously saw the reassigned PowerSource slot (9999 to 22) as valid if (!m_item) { return false; } else if (Inventory::SupportsContainers(slot_id)) { return true; } @@ -2202,7 +2202,7 @@ bool ItemInst::IsSlotAllowed(int16 slot_id) const { else { return false; } } -void ItemInst::Initialize(SharedDatabase *db) { +void EQEmu::ItemInstance::Initialize(SharedDatabase *db) { // if there's no actual item, don't do anything if (!m_item) return; @@ -2219,15 +2219,15 @@ void ItemInst::Initialize(SharedDatabase *db) { } } -void ItemInst::ScaleItem() { +void EQEmu::ItemInstance::ScaleItem() { if (!m_item) return; if (m_scaledItem) { - memcpy(m_scaledItem, m_item, sizeof(EQEmu::ItemBase)); + memcpy(m_scaledItem, m_item, sizeof(ItemData)); } else { - m_scaledItem = new EQEmu::ItemBase(*m_item); + m_scaledItem = new ItemData(*m_item); } float Mult = (float)(GetExp()) / 10000; // scaling is determined by exp, with 10,000 being full stats @@ -2303,18 +2303,18 @@ void ItemInst::ScaleItem() { m_scaledItem->CharmFileID = 0; // this stops the client from trying to scale the item itself. } -bool ItemInst::EvolveOnAllKills() const { +bool EQEmu::ItemInstance::EvolveOnAllKills() const { return (m_evolveInfo && m_evolveInfo->AllKills); } -int8 ItemInst::GetMaxEvolveLvl() const { +int8 EQEmu::ItemInstance::GetMaxEvolveLvl() const { if (m_evolveInfo) return m_evolveInfo->MaxLvl; else return 0; } -uint32 ItemInst::GetKillsNeeded(uint8 currentlevel) { +uint32 EQEmu::ItemInstance::GetKillsNeeded(uint8 currentlevel) { uint32 kills = -1; // default to -1 (max uint32 value) because this value is usually divided by, so we don't want to ever return zero. if (m_evolveInfo) if (currentlevel != m_evolveInfo->MaxLvl) @@ -2326,24 +2326,24 @@ uint32 ItemInst::GetKillsNeeded(uint8 currentlevel) { return kills; } -void ItemInst::SetTimer(std::string name, uint32 time) { +void EQEmu::ItemInstance::SetTimer(std::string name, uint32 time) { Timer t(time); t.Start(time, false); m_timers[name] = t; } -void ItemInst::StopTimer(std::string name) { +void EQEmu::ItemInstance::StopTimer(std::string name) { auto iter = m_timers.find(name); if(iter != m_timers.end()) { m_timers.erase(iter); } } -void ItemInst::ClearTimers() { +void EQEmu::ItemInstance::ClearTimers() { m_timers.clear(); } -int ItemInst::GetItemArmorClass(bool augments) const +int EQEmu::ItemInstance::GetItemArmorClass(bool augments) const { int ac = 0; const auto item = GetItem(); @@ -2357,7 +2357,7 @@ int ItemInst::GetItemArmorClass(bool augments) const return ac; } -int ItemInst::GetItemElementalDamage(int &magic, int &fire, int &cold, int &poison, int &disease, int &chromatic, int &prismatic, int &physical, int &corruption, bool augments) const +int EQEmu::ItemInstance::GetItemElementalDamage(int &magic, int &fire, int &cold, int &poison, int &disease, int &chromatic, int &prismatic, int &physical, int &corruption, bool augments) const { const auto item = GetItem(); if (item) { @@ -2399,7 +2399,7 @@ int ItemInst::GetItemElementalDamage(int &magic, int &fire, int &cold, int &pois return magic + fire + cold + poison + disease + chromatic + prismatic + physical + corruption; } -int ItemInst::GetItemElementalFlag(bool augments) const +int EQEmu::ItemInstance::GetItemElementalFlag(bool augments) const { int flag = 0; const auto item = GetItem(); @@ -2420,7 +2420,7 @@ int ItemInst::GetItemElementalFlag(bool augments) const return flag; } -int ItemInst::GetItemElementalDamage(bool augments) const +int EQEmu::ItemInstance::GetItemElementalDamage(bool augments) const { int damage = 0; const auto item = GetItem(); @@ -2441,7 +2441,7 @@ int ItemInst::GetItemElementalDamage(bool augments) const return damage; } -int ItemInst::GetItemRecommendedLevel(bool augments) const +int EQEmu::ItemInstance::GetItemRecommendedLevel(bool augments) const { int level = 0; const auto item = GetItem(); @@ -2463,7 +2463,7 @@ int ItemInst::GetItemRecommendedLevel(bool augments) const return level; } -int ItemInst::GetItemRequiredLevel(bool augments) const +int EQEmu::ItemInstance::GetItemRequiredLevel(bool augments) const { int level = 0; const auto item = GetItem(); @@ -2485,7 +2485,7 @@ int ItemInst::GetItemRequiredLevel(bool augments) const return level; } -int ItemInst::GetItemWeaponDamage(bool augments) const +int EQEmu::ItemInstance::GetItemWeaponDamage(bool augments) const { int damage = 0; const auto item = GetItem(); @@ -2501,7 +2501,7 @@ int ItemInst::GetItemWeaponDamage(bool augments) const return damage; } -int ItemInst::GetItemBackstabDamage(bool augments) const +int EQEmu::ItemInstance::GetItemBackstabDamage(bool augments) const { int damage = 0; const auto item = GetItem(); @@ -2517,7 +2517,7 @@ int ItemInst::GetItemBackstabDamage(bool augments) const return damage; } -int ItemInst::GetItemBaneDamageBody(bool augments) const +int EQEmu::ItemInstance::GetItemBaneDamageBody(bool augments) const { int body = 0; const auto item = GetItem(); @@ -2538,7 +2538,7 @@ int ItemInst::GetItemBaneDamageBody(bool augments) const return body; } -int ItemInst::GetItemBaneDamageRace(bool augments) const +int EQEmu::ItemInstance::GetItemBaneDamageRace(bool augments) const { int race = 0; const auto item = GetItem(); @@ -2559,7 +2559,7 @@ int ItemInst::GetItemBaneDamageRace(bool augments) const return race; } -int ItemInst::GetItemBaneDamageBody(bodyType against, bool augments) const +int EQEmu::ItemInstance::GetItemBaneDamageBody(bodyType against, bool augments) const { int damage = 0; const auto item = GetItem(); @@ -2576,7 +2576,7 @@ int ItemInst::GetItemBaneDamageBody(bodyType against, bool augments) const return damage; } -int ItemInst::GetItemBaneDamageRace(uint16 against, bool augments) const +int EQEmu::ItemInstance::GetItemBaneDamageRace(uint16 against, bool augments) const { int damage = 0; const auto item = GetItem(); @@ -2593,7 +2593,7 @@ int ItemInst::GetItemBaneDamageRace(uint16 against, bool augments) const return damage; } -int ItemInst::GetItemMagical(bool augments) const +int EQEmu::ItemInstance::GetItemMagical(bool augments) const { const auto item = GetItem(); if (item) { @@ -2609,7 +2609,7 @@ int ItemInst::GetItemMagical(bool augments) const return 0; } -int ItemInst::GetItemHP(bool augments) const +int EQEmu::ItemInstance::GetItemHP(bool augments) const { int hp = 0; const auto item = GetItem(); @@ -2623,7 +2623,7 @@ int ItemInst::GetItemHP(bool augments) const return hp; } -int ItemInst::GetItemMana(bool augments) const +int EQEmu::ItemInstance::GetItemMana(bool augments) const { int mana = 0; const auto item = GetItem(); @@ -2637,7 +2637,7 @@ int ItemInst::GetItemMana(bool augments) const return mana; } -int ItemInst::GetItemEndur(bool augments) const +int EQEmu::ItemInstance::GetItemEndur(bool augments) const { int endur = 0; const auto item = GetItem(); @@ -2651,7 +2651,7 @@ int ItemInst::GetItemEndur(bool augments) const return endur; } -int ItemInst::GetItemAttack(bool augments) const +int EQEmu::ItemInstance::GetItemAttack(bool augments) const { int atk = 0; const auto item = GetItem(); @@ -2665,7 +2665,7 @@ int ItemInst::GetItemAttack(bool augments) const return atk; } -int ItemInst::GetItemStr(bool augments) const +int EQEmu::ItemInstance::GetItemStr(bool augments) const { int str = 0; const auto item = GetItem(); @@ -2679,7 +2679,7 @@ int ItemInst::GetItemStr(bool augments) const return str; } -int ItemInst::GetItemSta(bool augments) const +int EQEmu::ItemInstance::GetItemSta(bool augments) const { int sta = 0; const auto item = GetItem(); @@ -2693,7 +2693,7 @@ int ItemInst::GetItemSta(bool augments) const return sta; } -int ItemInst::GetItemDex(bool augments) const +int EQEmu::ItemInstance::GetItemDex(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2707,7 +2707,7 @@ int ItemInst::GetItemDex(bool augments) const return total; } -int ItemInst::GetItemAgi(bool augments) const +int EQEmu::ItemInstance::GetItemAgi(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2721,7 +2721,7 @@ int ItemInst::GetItemAgi(bool augments) const return total; } -int ItemInst::GetItemInt(bool augments) const +int EQEmu::ItemInstance::GetItemInt(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2735,7 +2735,7 @@ int ItemInst::GetItemInt(bool augments) const return total; } -int ItemInst::GetItemWis(bool augments) const +int EQEmu::ItemInstance::GetItemWis(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2749,7 +2749,7 @@ int ItemInst::GetItemWis(bool augments) const return total; } -int ItemInst::GetItemCha(bool augments) const +int EQEmu::ItemInstance::GetItemCha(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2763,7 +2763,7 @@ int ItemInst::GetItemCha(bool augments) const return total; } -int ItemInst::GetItemMR(bool augments) const +int EQEmu::ItemInstance::GetItemMR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2777,7 +2777,7 @@ int ItemInst::GetItemMR(bool augments) const return total; } -int ItemInst::GetItemFR(bool augments) const +int EQEmu::ItemInstance::GetItemFR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2791,7 +2791,7 @@ int ItemInst::GetItemFR(bool augments) const return total; } -int ItemInst::GetItemCR(bool augments) const +int EQEmu::ItemInstance::GetItemCR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2805,7 +2805,7 @@ int ItemInst::GetItemCR(bool augments) const return total; } -int ItemInst::GetItemPR(bool augments) const +int EQEmu::ItemInstance::GetItemPR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2819,7 +2819,7 @@ int ItemInst::GetItemPR(bool augments) const return total; } -int ItemInst::GetItemDR(bool augments) const +int EQEmu::ItemInstance::GetItemDR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2833,7 +2833,7 @@ int ItemInst::GetItemDR(bool augments) const return total; } -int ItemInst::GetItemCorrup(bool augments) const +int EQEmu::ItemInstance::GetItemCorrup(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2847,7 +2847,7 @@ int ItemInst::GetItemCorrup(bool augments) const return total; } -int ItemInst::GetItemHeroicStr(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicStr(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2861,7 +2861,7 @@ int ItemInst::GetItemHeroicStr(bool augments) const return total; } -int ItemInst::GetItemHeroicSta(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicSta(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2875,7 +2875,7 @@ int ItemInst::GetItemHeroicSta(bool augments) const return total; } -int ItemInst::GetItemHeroicDex(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicDex(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2889,7 +2889,7 @@ int ItemInst::GetItemHeroicDex(bool augments) const return total; } -int ItemInst::GetItemHeroicAgi(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicAgi(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2903,7 +2903,7 @@ int ItemInst::GetItemHeroicAgi(bool augments) const return total; } -int ItemInst::GetItemHeroicInt(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicInt(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2917,7 +2917,7 @@ int ItemInst::GetItemHeroicInt(bool augments) const return total; } -int ItemInst::GetItemHeroicWis(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicWis(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2931,7 +2931,7 @@ int ItemInst::GetItemHeroicWis(bool augments) const return total; } -int ItemInst::GetItemHeroicCha(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicCha(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2945,7 +2945,7 @@ int ItemInst::GetItemHeroicCha(bool augments) const return total; } -int ItemInst::GetItemHeroicMR(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicMR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2959,7 +2959,7 @@ int ItemInst::GetItemHeroicMR(bool augments) const return total; } -int ItemInst::GetItemHeroicFR(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicFR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2973,7 +2973,7 @@ int ItemInst::GetItemHeroicFR(bool augments) const return total; } -int ItemInst::GetItemHeroicCR(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicCR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -2987,7 +2987,7 @@ int ItemInst::GetItemHeroicCR(bool augments) const return total; } -int ItemInst::GetItemHeroicPR(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicPR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -3001,7 +3001,7 @@ int ItemInst::GetItemHeroicPR(bool augments) const return total; } -int ItemInst::GetItemHeroicDR(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicDR(bool augments) const { int total = 0; const auto item = GetItem(); @@ -3015,7 +3015,7 @@ int ItemInst::GetItemHeroicDR(bool augments) const return total; } -int ItemInst::GetItemHeroicCorrup(bool augments) const +int EQEmu::ItemInstance::GetItemHeroicCorrup(bool augments) const { int total = 0; const auto item = GetItem(); @@ -3029,7 +3029,7 @@ int ItemInst::GetItemHeroicCorrup(bool augments) const return total; } -int ItemInst::GetItemHaste(bool augments) const +int EQEmu::ItemInstance::GetItemHaste(bool augments) const { int total = 0; const auto item = GetItem(); diff --git a/common/item_instance.h b/common/item_instance.h index 3ea3ba224..29523c1b1 100644 --- a/common/item_instance.h +++ b/common/item_instance.h @@ -21,8 +21,8 @@ // These classes could be optimized with database reads/writes by storing // a status flag indicating how object needs to interact with database -#ifndef COMMON_ITEM_H -#define COMMON_ITEM_H +#ifndef COMMON_ITEM_INSTANCE_H +#define COMMON_ITEM_INSTANCE_H class ItemParse; // Parses item packets @@ -51,7 +51,7 @@ namespace ItemField }; }; -// Specifies usage type for item inside ItemInst +// Specifies usage type for item inside EQEmu::ItemInstance enum ItemInstTypes { ItemInstNormal = 0, @@ -76,7 +76,10 @@ enum { invWhereCursor = 0x20 }; -class ItemInst; +namespace EQEmu +{ + class ItemInstance; +} // ######################################## // Class: Queue @@ -89,24 +92,24 @@ public: // Public Methods ///////////////////////// - inline std::list::const_iterator cbegin() { return m_list.cbegin(); } - inline std::list::const_iterator cend() { return m_list.cend(); } + inline std::list::const_iterator cbegin() { return m_list.cbegin(); } + inline std::list::const_iterator cend() { return m_list.cend(); } inline int size() { return static_cast(m_list.size()); } // TODO: change to size_t inline bool empty() { return m_list.empty(); } - void push(ItemInst* inst); - void push_front(ItemInst* inst); - ItemInst* pop(); - ItemInst* pop_back(); - ItemInst* peek_front() const; + void push(EQEmu::ItemInstance* inst); + void push_front(EQEmu::ItemInstance* inst); + EQEmu::ItemInstance* pop(); + EQEmu::ItemInstance* pop_back(); + EQEmu::ItemInstance* peek_front() const; protected: ///////////////////////// // Protected Members ///////////////////////// - std::list m_list; + std::list m_list; }; // ######################################## @@ -114,7 +117,7 @@ protected: // Character inventory class Inventory { - friend class ItemInst; + friend class EQEmu::ItemInstance; public: /////////////////////////////// // Public Methods @@ -138,29 +141,29 @@ public: EQEmu::versions::InventoryVersion InventoryVersion() { return m_inventory_version; } static void CleanDirty(); - static void MarkDirty(ItemInst *inst); + static void MarkDirty(EQEmu::ItemInstance *inst); // Retrieve a writeable item at specified slot - ItemInst* GetItem(int16 slot_id) const; - ItemInst* GetItem(int16 slot_id, uint8 bagidx) const; + EQEmu::ItemInstance* GetItem(int16 slot_id) const; + EQEmu::ItemInstance* GetItem(int16 slot_id, uint8 bagidx) const; - inline std::list::const_iterator cursor_cbegin() { return m_cursor.cbegin(); } - inline std::list::const_iterator cursor_cend() { return m_cursor.cend(); } + inline std::list::const_iterator cursor_cbegin() { return m_cursor.cbegin(); } + inline std::list::const_iterator cursor_cend() { return m_cursor.cend(); } inline int CursorSize() { return m_cursor.size(); } inline bool CursorEmpty() { return m_cursor.empty(); } // Retrieve a read-only item from inventory - inline const ItemInst* operator[](int16 slot_id) const { return GetItem(slot_id); } + inline const EQEmu::ItemInstance* operator[](int16 slot_id) const { return GetItem(slot_id); } // Add item to inventory - int16 PutItem(int16 slot_id, const ItemInst& inst); + int16 PutItem(int16 slot_id, const EQEmu::ItemInstance& inst); // Add item to cursor queue - int16 PushCursor(const ItemInst& inst); + int16 PushCursor(const EQEmu::ItemInstance& inst); // Get cursor item in front of queue - ItemInst* GetCursorItem(); + EQEmu::ItemInstance* GetCursorItem(); // Swap items in inventory bool SwapItem(int16 slot_a, int16 slot_b); @@ -172,10 +175,10 @@ public: bool CheckNoDrop(int16 slot_id); // Remove item from inventory (and take control of memory) - ItemInst* PopItem(int16 slot_id); + EQEmu::ItemInstance* PopItem(int16 slot_id); // Check whether there is space for the specified number of the specified item. - bool HasSpaceForItem(const EQEmu::ItemBase *ItemToTry, int16 Quantity); + bool HasSpaceForItem(const EQEmu::ItemData *ItemToTry, int16 Quantity); // Check whether item exists in inventory // where argument specifies OR'd list of invWhere constants to look @@ -191,7 +194,7 @@ public: // Locate an available inventory slot int16 FindFreeSlot(bool for_bag, bool try_cursor, uint8 min_size = 0, bool is_arrow = false); - int16 FindFreeSlotForTradeItem(const ItemInst* inst); + int16 FindFreeSlotForTradeItem(const EQEmu::ItemInstance* inst); // Calculate slot_id for an item within a bag static int16 CalcSlotId(int16 slot_id); // Calc parent bag's slot_id @@ -200,7 +203,7 @@ public: static int16 CalcSlotFromMaterial(uint8 material); static uint8 CalcMaterialFromSlot(int16 equipslot); - static bool CanItemFitInContainer(const EQEmu::ItemBase *ItemToTry, const EQEmu::ItemBase *Container); + static bool CanItemFitInContainer(const EQEmu::ItemData *ItemToTry, const EQEmu::ItemData *Container); // Test for valid inventory casting slot bool SupportsClickCasting(int16 slot_id); @@ -209,7 +212,7 @@ public: // Test whether a given slot can support a container item static bool SupportsContainers(int16 slot_id); - int GetSlotByItemInst(ItemInst *inst); + int GetSlotByItemInst(EQEmu::ItemInstance *inst); uint8 FindBrightestLightType(); @@ -229,31 +232,31 @@ protected: // Protected Methods /////////////////////////////// - int GetSlotByItemInstCollection(const std::map &collection, ItemInst *inst); - void dumpItemCollection(const std::map &collection); - void dumpBagContents(ItemInst *inst, std::map::const_iterator *it); + int GetSlotByItemInstCollection(const std::map &collection, EQEmu::ItemInstance *inst); + void dumpItemCollection(const std::map &collection); + void dumpBagContents(EQEmu::ItemInstance *inst, std::map::const_iterator *it); // Retrieves item within an inventory bucket - ItemInst* _GetItem(const std::map& bucket, int16 slot_id) const; + EQEmu::ItemInstance* _GetItem(const std::map& bucket, int16 slot_id) const; // Private "put" item into bucket, without regard for what is currently in bucket - int16 _PutItem(int16 slot_id, ItemInst* inst); + int16 _PutItem(int16 slot_id, EQEmu::ItemInstance* inst); // Checks an inventory bucket for a particular item - int16 _HasItem(std::map& bucket, uint32 item_id, uint8 quantity); + int16 _HasItem(std::map& bucket, uint32 item_id, uint8 quantity); int16 _HasItem(ItemInstQueue& iqueue, uint32 item_id, uint8 quantity); - int16 _HasItemByUse(std::map& bucket, uint8 use, uint8 quantity); + int16 _HasItemByUse(std::map& bucket, uint8 use, uint8 quantity); int16 _HasItemByUse(ItemInstQueue& iqueue, uint8 use, uint8 quantity); - int16 _HasItemByLoreGroup(std::map& bucket, uint32 loregroup); + int16 _HasItemByLoreGroup(std::map& bucket, uint32 loregroup); int16 _HasItemByLoreGroup(ItemInstQueue& iqueue, uint32 loregroup); // Player inventory - std::map m_worn; // Items worn by character - std::map m_inv; // Items in character personal inventory - std::map m_bank; // Items in character bank - std::map m_shbank; // Items in character shared bank - std::map m_trade; // Items in a trade session + std::map m_worn; // Items worn by character + std::map m_inv; // Items in character personal inventory + std::map m_bank; // Items in character bank + std::map m_shbank; // Items in character shared bank + std::map m_trade; // Items in a trade session ItemInstQueue m_cursor; // Items on cursor: FIFO private: @@ -265,271 +268,269 @@ private: class SharedDatabase; // ######################################## -// Class: ItemInst +// Class: EQEmu::ItemInstance // Base class for an instance of an item // An item instance encapsulates item data + data specific // to an item instance (includes dye, augments, charges, etc) -class ItemInst +namespace EQEmu { -public: - ///////////////////////// - // Methods - ///////////////////////// + class ItemInstance { + public: + ///////////////////////// + // Methods + ///////////////////////// - // Constructors/Destructor - ItemInst(const EQEmu::ItemBase* item = nullptr, int16 charges = 0); + // Constructors/Destructor + ItemInstance(const ItemData* item = nullptr, int16 charges = 0); - ItemInst(SharedDatabase *db, uint32 item_id, int16 charges = 0); + ItemInstance(SharedDatabase *db, uint32 item_id, int16 charges = 0); - ItemInst(ItemInstTypes use_type); + ItemInstance(ItemInstTypes use_type); - ItemInst(const ItemInst& copy); + ItemInstance(const ItemInstance& copy); - ~ItemInst(); + ~ItemInstance(); - // Query item type - bool IsType(EQEmu::item::ItemClass item_class) const; + // Query item type + bool IsType(EQEmu::item::ItemClass item_class) const; - bool IsClassCommon(); - bool IsClassBag(); - bool IsClassBook(); + bool IsClassCommon() const; + bool IsClassBag() const; + bool IsClassBook() const; - bool IsClassCommon() const { return const_cast(this)->IsClassCommon(); } - bool IsClassBag() const { return const_cast(this)->IsClassBag(); } - bool IsClassBook() const { return const_cast(this)->IsClassBook(); } + // Can item be stacked? + bool IsStackable() const; + bool IsCharged() const; - // Can item be stacked? - bool IsStackable() const; - bool IsCharged() const; + // Can item be equipped by/at? + bool IsEquipable(uint16 race, uint16 class_) const; + bool IsEquipable(int16 slot_id) const; - // Can item be equipped by/at? - bool IsEquipable(uint16 race, uint16 class_) const; - bool IsEquipable(int16 slot_id) const; + // + // Augments + // + bool IsAugmentable() const; + bool AvailableWearSlot(uint32 aug_wear_slots) const; + int8 AvailableAugmentSlot(int32 augtype) const; + bool IsAugmentSlotAvailable(int32 augtype, uint8 slot) const; + inline int32 GetAugmentType() const { return ((m_item) ? m_item->AugType : NO_ITEM); } - // - // Augments - // - bool IsAugmentable() const; - bool AvailableWearSlot(uint32 aug_wear_slots) const; - int8 AvailableAugmentSlot(int32 augtype) const; - bool IsAugmentSlotAvailable(int32 augtype, uint8 slot) const; - inline int32 GetAugmentType() const { return ((m_item) ? m_item->AugType : NO_ITEM); } + inline bool IsExpendable() const { return ((m_item) ? ((m_item->Click.Type == EQEmu::item::ItemEffectExpendable) || (m_item->ItemType == EQEmu::item::ItemTypePotion)) : false); } - inline bool IsExpendable() const { return ((m_item) ? ((m_item->Click.Type == EQEmu::item::ItemEffectExpendable) || (m_item->ItemType == EQEmu::item::ItemTypePotion)) : false); } + // + // Contents + // + ItemInstance* GetItem(uint8 slot) const; + uint32 GetItemID(uint8 slot) const; + inline const ItemInstance* operator[](uint8 slot) const { return GetItem(slot); } + void PutItem(uint8 slot, const ItemInstance& inst); + void PutItem(SharedDatabase *db, uint8 slot, uint32 item_id) { return; } // not defined anywhere... + void DeleteItem(uint8 slot); + ItemInstance* PopItem(uint8 index); + void Clear(); + void ClearByFlags(byFlagSetting is_nodrop, byFlagSetting is_norent); + uint8 FirstOpenSlot() const; + uint8 GetTotalItemCount() const; + bool IsNoneEmptyContainer(); + std::map* GetContents() { return &m_contents; } - // - // Contents - // - ItemInst* GetItem(uint8 slot) const; - uint32 GetItemID(uint8 slot) const; - inline const ItemInst* operator[](uint8 slot) const { return GetItem(slot); } - void PutItem(uint8 slot, const ItemInst& inst); - void PutItem(SharedDatabase *db, uint8 slot, uint32 item_id) { return; } // not defined anywhere... - void DeleteItem(uint8 slot); - ItemInst* PopItem(uint8 index); - void Clear(); - void ClearByFlags(byFlagSetting is_nodrop, byFlagSetting is_norent); - uint8 FirstOpenSlot() const; - uint8 GetTotalItemCount() const; - bool IsNoneEmptyContainer(); - std::map* GetContents() { return &m_contents; } + // + // Augments + // + ItemInstance* GetAugment(uint8 slot) const; + uint32 GetAugmentItemID(uint8 slot) const; + void PutAugment(uint8 slot, const ItemInstance& inst); + void PutAugment(SharedDatabase *db, uint8 slot, uint32 item_id); + void DeleteAugment(uint8 slot); + ItemInstance* RemoveAugment(uint8 index); + bool IsAugmented(); + ItemInstance* GetOrnamentationAug(int32 ornamentationAugtype) const; + bool UpdateOrnamentationInfo(); + static bool CanTransform(const EQEmu::ItemData *ItemToTry, const EQEmu::ItemData *Container, bool AllowAll = false); - // - // Augments - // - ItemInst* GetAugment(uint8 slot) const; - uint32 GetAugmentItemID(uint8 slot) const; - void PutAugment(uint8 slot, const ItemInst& inst); - void PutAugment(SharedDatabase *db, uint8 slot, uint32 item_id); - void DeleteAugment(uint8 slot); - ItemInst* RemoveAugment(uint8 index); - bool IsAugmented(); - ItemInst* GetOrnamentationAug(int32 ornamentationAugtype) const; - bool UpdateOrnamentationInfo(); - static bool CanTransform(const EQEmu::ItemBase *ItemToTry, const EQEmu::ItemBase *Container, bool AllowAll = false); - - // Has attack/delay? - bool IsWeapon() const; - bool IsAmmo() const; + // Has attack/delay? + bool IsWeapon() const; + bool IsAmmo() const; - // Accessors - const uint32 GetID() const { return ((m_item) ? m_item->ID : NO_ITEM); } - const uint32 GetItemScriptID() const { return ((m_item) ? m_item->ScriptFileID : NO_ITEM); } - const EQEmu::ItemBase* GetItem() const; - const EQEmu::ItemBase* GetUnscaledItem() const; + // Accessors + const uint32 GetID() const { return ((m_item) ? m_item->ID : NO_ITEM); } + const uint32 GetItemScriptID() const { return ((m_item) ? m_item->ScriptFileID : NO_ITEM); } + const ItemData* GetItem() const; + const ItemData* GetUnscaledItem() const; - int16 GetCharges() const { return m_charges; } - void SetCharges(int16 charges) { m_charges = charges; } + int16 GetCharges() const { return m_charges; } + void SetCharges(int16 charges) { m_charges = charges; } - uint32 GetPrice() const { return m_price; } - void SetPrice(uint32 price) { m_price = price; } + uint32 GetPrice() const { return m_price; } + void SetPrice(uint32 price) { m_price = price; } - void SetColor(uint32 color) { m_color = color; } - uint32 GetColor() const { return m_color; } + void SetColor(uint32 color) { m_color = color; } + uint32 GetColor() const { return m_color; } - uint32 GetMerchantSlot() const { return m_merchantslot; } - void SetMerchantSlot(uint32 slot) { m_merchantslot = slot; } + uint32 GetMerchantSlot() const { return m_merchantslot; } + void SetMerchantSlot(uint32 slot) { m_merchantslot = slot; } - int32 GetMerchantCount() const { return m_merchantcount; } - void SetMerchantCount(int32 count) { m_merchantcount = count; } + int32 GetMerchantCount() const { return m_merchantcount; } + void SetMerchantCount(int32 count) { m_merchantcount = count; } - int16 GetCurrentSlot() const { return m_currentslot; } - void SetCurrentSlot(int16 curr_slot) { m_currentslot = curr_slot; } + int16 GetCurrentSlot() const { return m_currentslot; } + void SetCurrentSlot(int16 curr_slot) { m_currentslot = curr_slot; } - // Is this item already attuned? - bool IsAttuned() const { return m_attuned; } - void SetAttuned(bool flag) { m_attuned=flag; } + // Is this item already attuned? + bool IsAttuned() const { return m_attuned; } + void SetAttuned(bool flag) { m_attuned = flag; } - std::string GetCustomDataString() const; - std::string GetCustomData(std::string identifier); - void SetCustomData(std::string identifier, std::string value); - void SetCustomData(std::string identifier, int value); - void SetCustomData(std::string identifier, float value); - void SetCustomData(std::string identifier, bool value); - void DeleteCustomData(std::string identifier); + std::string GetCustomDataString() const; + std::string GetCustomData(std::string identifier); + void SetCustomData(std::string identifier, std::string value); + void SetCustomData(std::string identifier, int value); + void SetCustomData(std::string identifier, float value); + void SetCustomData(std::string identifier, bool value); + void DeleteCustomData(std::string identifier); - // Allows treatment of this object as though it were a pointer to m_item - operator bool() const { return (m_item != nullptr); } + // Allows treatment of this object as though it were a pointer to m_item + operator bool() const { return (m_item != nullptr); } - // Compare inner Item_Struct of two ItemInst objects - bool operator==(const ItemInst& right) const { return (this->m_item == right.m_item); } - bool operator!=(const ItemInst& right) const { return (this->m_item != right.m_item); } + // Compare inner Item_Struct of two ItemInstance objects + bool operator==(const ItemInstance& right) const { return (this->m_item == right.m_item); } + bool operator!=(const ItemInstance& right) const { return (this->m_item != right.m_item); } - // Clone current item - ItemInst* Clone() const; + // Clone current item + ItemInstance* Clone() const; - bool IsSlotAllowed(int16 slot_id) const; + bool IsSlotAllowed(int16 slot_id) const; - bool IsScaling() const { return m_scaling; } - bool IsEvolving() const { return (m_evolveLvl >= 1); } - uint32 GetExp() const { return m_exp; } - void SetExp(uint32 exp) { m_exp = exp; } - void AddExp(uint32 exp) { m_exp += exp; } - bool IsActivated() { return m_activated; } - void SetActivated(bool activated) { m_activated = activated; } - int8 GetEvolveLvl() const { return m_evolveLvl; } - void SetScaling(bool v) { m_scaling = v; } - uint32 GetOrnamentationIcon() const { return m_ornamenticon; } - void SetOrnamentIcon(uint32 ornament_icon) { m_ornamenticon = ornament_icon; } - uint32 GetOrnamentationIDFile() const { return m_ornamentidfile; } - void SetOrnamentationIDFile(uint32 ornament_idfile) { m_ornamentidfile = ornament_idfile; } - uint32 GetOrnamentHeroModel(int32 material_slot = -1) const; - void SetOrnamentHeroModel(uint32 ornament_hero_model) { m_ornament_hero_model = ornament_hero_model; } - uint32 GetRecastTimestamp() const { return m_recast_timestamp; } - void SetRecastTimestamp(uint32 in) { m_recast_timestamp = in; } + bool IsScaling() const { return m_scaling; } + bool IsEvolving() const { return (m_evolveLvl >= 1); } + uint32 GetExp() const { return m_exp; } + void SetExp(uint32 exp) { m_exp = exp; } + void AddExp(uint32 exp) { m_exp += exp; } + bool IsActivated() { return m_activated; } + void SetActivated(bool activated) { m_activated = activated; } + int8 GetEvolveLvl() const { return m_evolveLvl; } + void SetScaling(bool v) { m_scaling = v; } + uint32 GetOrnamentationIcon() const { return m_ornamenticon; } + void SetOrnamentIcon(uint32 ornament_icon) { m_ornamenticon = ornament_icon; } + uint32 GetOrnamentationIDFile() const { return m_ornamentidfile; } + void SetOrnamentationIDFile(uint32 ornament_idfile) { m_ornamentidfile = ornament_idfile; } + uint32 GetOrnamentHeroModel(int32 material_slot = -1) const; + void SetOrnamentHeroModel(uint32 ornament_hero_model) { m_ornament_hero_model = ornament_hero_model; } + uint32 GetRecastTimestamp() const { return m_recast_timestamp; } + void SetRecastTimestamp(uint32 in) { m_recast_timestamp = in; } - void Initialize(SharedDatabase *db = nullptr); - void ScaleItem(); - bool EvolveOnAllKills() const; - int8 GetMaxEvolveLvl() const; - uint32 GetKillsNeeded(uint8 currentlevel); + void Initialize(SharedDatabase *db = nullptr); + void ScaleItem(); + bool EvolveOnAllKills() const; + int8 GetMaxEvolveLvl() const; + uint32 GetKillsNeeded(uint8 currentlevel); - std::string Serialize(int16 slot_id) const { EQEmu::InternalSerializedItem_Struct s; s.slot_id = slot_id; s.inst = (const void*)this; std::string ser; ser.assign((char*)&s, sizeof(EQEmu::InternalSerializedItem_Struct)); return ser; } - void Serialize(EQEmu::OutBuffer& ob, int16 slot_id) const { EQEmu::InternalSerializedItem_Struct isi; isi.slot_id = slot_id; isi.inst = (const void*)this; ob.write((const char*)&isi, sizeof(isi)); } - - inline int32 GetSerialNumber() const { return m_SerialNumber; } - inline void SetSerialNumber(int32 id) { m_SerialNumber = id; } + std::string Serialize(int16 slot_id) const { EQEmu::InternalSerializedItem_Struct s; s.slot_id = slot_id; s.inst = (const void*)this; std::string ser; ser.assign((char*)&s, sizeof(EQEmu::InternalSerializedItem_Struct)); return ser; } + void Serialize(EQEmu::OutBuffer& ob, int16 slot_id) const { EQEmu::InternalSerializedItem_Struct isi; isi.slot_id = slot_id; isi.inst = (const void*)this; ob.write((const char*)&isi, sizeof(isi)); } - std::map& GetTimers() { return m_timers; } - void SetTimer(std::string name, uint32 time); - void StopTimer(std::string name); - void ClearTimers(); + inline int32 GetSerialNumber() const { return m_SerialNumber; } + inline void SetSerialNumber(int32 id) { m_SerialNumber = id; } - // Get a total of a stat, including augs - // These functions should be used in place of other code manually totaling - // to centralize where it is done to make future changes easier (ex. whenever powersources come around) - // and to minimize errors. CalcItemBonuses however doesn't use these in interest of performance - // by default these do not recurse into augs - int GetItemArmorClass(bool augments = false) const; - int GetItemElementalDamage(int &magic, int &fire, int &cold, int &poison, int &disease, int &chromatic, int &prismatic, int &physical, int &corruption, bool augments = false) const; - // These two differ in the fact that they're quick checks (they are checked BEFORE the one above - int GetItemElementalFlag(bool augments = false) const; - int GetItemElementalDamage(bool augments = false) const; - int GetItemRecommendedLevel(bool augments = false) const; - int GetItemRequiredLevel(bool augments = false) const; - int GetItemWeaponDamage(bool augments = false) const; - int GetItemBackstabDamage(bool augments = false) const; - // these two are just quick checks - int GetItemBaneDamageBody(bool augments = false) const; - int GetItemBaneDamageRace(bool augments = false) const; - int GetItemBaneDamageBody(bodyType against, bool augments = false) const; - int GetItemBaneDamageRace(uint16 against, bool augments = false) const; - int GetItemMagical(bool augments = false) const; - int GetItemHP(bool augments = false) const; - int GetItemMana(bool augments = false) const; - int GetItemEndur(bool augments = false) const; - int GetItemAttack(bool augments = false) const; - int GetItemStr(bool augments = false) const; - int GetItemSta(bool augments = false) const; - int GetItemDex(bool augments = false) const; - int GetItemAgi(bool augments = false) const; - int GetItemInt(bool augments = false) const; - int GetItemWis(bool augments = false) const; - int GetItemCha(bool augments = false) const; - int GetItemMR(bool augments = false) const; - int GetItemFR(bool augments = false) const; - int GetItemCR(bool augments = false) const; - int GetItemPR(bool augments = false) const; - int GetItemDR(bool augments = false) const; - int GetItemCorrup(bool augments = false) const; - int GetItemHeroicStr(bool augments = false) const; - int GetItemHeroicSta(bool augments = false) const; - int GetItemHeroicDex(bool augments = false) const; - int GetItemHeroicAgi(bool augments = false) const; - int GetItemHeroicInt(bool augments = false) const; - int GetItemHeroicWis(bool augments = false) const; - int GetItemHeroicCha(bool augments = false) const; - int GetItemHeroicMR(bool augments = false) const; - int GetItemHeroicFR(bool augments = false) const; - int GetItemHeroicCR(bool augments = false) const; - int GetItemHeroicPR(bool augments = false) const; - int GetItemHeroicDR(bool augments = false) const; - int GetItemHeroicCorrup(bool augments = false) const; - int GetItemHaste(bool augments = false) const; + std::map& GetTimers() { return m_timers; } + void SetTimer(std::string name, uint32 time); + void StopTimer(std::string name); + void ClearTimers(); -protected: - ////////////////////////// - // Protected Members - ////////////////////////// - std::map::const_iterator _cbegin() { return m_contents.cbegin(); } - std::map::const_iterator _cend() { return m_contents.cend(); } + // Get a total of a stat, including augs + // These functions should be used in place of other code manually totaling + // to centralize where it is done to make future changes easier (ex. whenever powersources come around) + // and to minimize errors. CalcItemBonuses however doesn't use these in interest of performance + // by default these do not recurse into augs + int GetItemArmorClass(bool augments = false) const; + int GetItemElementalDamage(int &magic, int &fire, int &cold, int &poison, int &disease, int &chromatic, int &prismatic, int &physical, int &corruption, bool augments = false) const; + // These two differ in the fact that they're quick checks (they are checked BEFORE the one above + int GetItemElementalFlag(bool augments = false) const; + int GetItemElementalDamage(bool augments = false) const; + int GetItemRecommendedLevel(bool augments = false) const; + int GetItemRequiredLevel(bool augments = false) const; + int GetItemWeaponDamage(bool augments = false) const; + int GetItemBackstabDamage(bool augments = false) const; + // these two are just quick checks + int GetItemBaneDamageBody(bool augments = false) const; + int GetItemBaneDamageRace(bool augments = false) const; + int GetItemBaneDamageBody(bodyType against, bool augments = false) const; + int GetItemBaneDamageRace(uint16 against, bool augments = false) const; + int GetItemMagical(bool augments = false) const; + int GetItemHP(bool augments = false) const; + int GetItemMana(bool augments = false) const; + int GetItemEndur(bool augments = false) const; + int GetItemAttack(bool augments = false) const; + int GetItemStr(bool augments = false) const; + int GetItemSta(bool augments = false) const; + int GetItemDex(bool augments = false) const; + int GetItemAgi(bool augments = false) const; + int GetItemInt(bool augments = false) const; + int GetItemWis(bool augments = false) const; + int GetItemCha(bool augments = false) const; + int GetItemMR(bool augments = false) const; + int GetItemFR(bool augments = false) const; + int GetItemCR(bool augments = false) const; + int GetItemPR(bool augments = false) const; + int GetItemDR(bool augments = false) const; + int GetItemCorrup(bool augments = false) const; + int GetItemHeroicStr(bool augments = false) const; + int GetItemHeroicSta(bool augments = false) const; + int GetItemHeroicDex(bool augments = false) const; + int GetItemHeroicAgi(bool augments = false) const; + int GetItemHeroicInt(bool augments = false) const; + int GetItemHeroicWis(bool augments = false) const; + int GetItemHeroicCha(bool augments = false) const; + int GetItemHeroicMR(bool augments = false) const; + int GetItemHeroicFR(bool augments = false) const; + int GetItemHeroicCR(bool augments = false) const; + int GetItemHeroicPR(bool augments = false) const; + int GetItemHeroicDR(bool augments = false) const; + int GetItemHeroicCorrup(bool augments = false) const; + int GetItemHaste(bool augments = false) const; - friend class Inventory; + protected: + ////////////////////////// + // Protected Members + ////////////////////////// + std::map::const_iterator _cbegin() { return m_contents.cbegin(); } + std::map::const_iterator _cend() { return m_contents.cend(); } + + friend class Inventory; - void _PutItem(uint8 index, ItemInst* inst) { m_contents[index] = inst; } + void _PutItem(uint8 index, ItemInstance* inst) { m_contents[index] = inst; } - ItemInstTypes m_use_type; // Usage type for item - const EQEmu::ItemBase* m_item; // Ptr to item data - int16 m_charges; // # of charges for chargeable items - uint32 m_price; // Bazaar /trader price - uint32 m_color; - uint32 m_merchantslot; - int16 m_currentslot; - bool m_attuned; - int32 m_merchantcount; //number avaliable on the merchant, -1=unlimited - int32 m_SerialNumber; // Unique identifier for this instance of an item. Needed for Bazaar. - uint32 m_exp; - int8 m_evolveLvl; - bool m_activated; - EQEmu::ItemBase* m_scaledItem; - EvolveInfo* m_evolveInfo; - bool m_scaling; - uint32 m_ornamenticon; - uint32 m_ornamentidfile; - uint32 m_ornament_hero_model; - uint32 m_recast_timestamp; + ItemInstTypes m_use_type; // Usage type for item + const ItemData* m_item; // Ptr to item data + int16 m_charges; // # of charges for chargeable items + uint32 m_price; // Bazaar /trader price + uint32 m_color; + uint32 m_merchantslot; + int16 m_currentslot; + bool m_attuned; + int32 m_merchantcount; //number avaliable on the merchant, -1=unlimited + int32 m_SerialNumber; // Unique identifier for this instance of an item. Needed for Bazaar. + uint32 m_exp; + int8 m_evolveLvl; + bool m_activated; + ItemData* m_scaledItem; + EvolveInfo* m_evolveInfo; + bool m_scaling; + uint32 m_ornamenticon; + uint32 m_ornamentidfile; + uint32 m_ornament_hero_model; + uint32 m_recast_timestamp; - // - // Items inside of this item (augs or contents); - std::map m_contents; // Zero-based index: min=0, max=9 - std::map m_custom_data; - std::map m_timers; -}; + // + // Items inside of this item (augs or contents); + std::map m_contents; // Zero-based index: min=0, max=9 + std::map m_custom_data; + std::map m_timers; + }; +} class EvolveInfo { public: - friend class ItemInst; + friend class EQEmu::ItemInstance; //temporary uint16 LvlKills[9]; uint32 FirstItem; @@ -541,4 +542,4 @@ public: ~EvolveInfo(); }; -#endif /*COMMON_ITEM_H*/ +#endif /*COMMON_ITEM_INSTANCE_H*/ diff --git a/common/patches/rof.cpp b/common/patches/rof.cpp index dba092bed..a6fcae35c 100644 --- a/common/patches/rof.cpp +++ b/common/patches/rof.cpp @@ -45,7 +45,7 @@ namespace RoF static OpcodeManager *opcodes = nullptr; static Strategy struct_strategy; - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id, uint8 depth); + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id, uint8 depth); // server to client inventory location converters static inline structs::InventorySlot_Struct ServerToRoFSlot(uint32 serverSlot); @@ -596,7 +596,7 @@ namespace RoF ob.write((const char*)&item_count, sizeof(uint32)); for (int index = 0; index < item_count; ++index, ++eq) { - SerializeItem(ob, (const ItemInst*)eq->inst, eq->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)eq->inst, eq->slot_id, 0); if (ob.tellp() == last_pos) Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); @@ -1533,7 +1533,7 @@ namespace RoF ob.write((const char*)__emu_buffer, 4); - SerializeItem(ob, (const ItemInst*)int_struct->inst, int_struct->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)int_struct->inst, int_struct->slot_id, 0); if (ob.tellp() == last_pos) { Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; @@ -5209,9 +5209,9 @@ namespace RoF return NextItemInstSerialNumber; } - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id_in, uint8 depth) + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id_in, uint8 depth) { - const EQEmu::ItemBase *item = inst->GetUnscaledItem(); + const EQEmu::ItemData *item = inst->GetUnscaledItem(); RoF::structs::ItemSerializationHeader hdr; @@ -5623,7 +5623,7 @@ namespace RoF ob.write((const char*)&subitem_count, sizeof(uint32)); for (uint32 index = SUB_INDEX_BEGIN; index < EQEmu::legacy::ITEM_CONTAINER_SIZE; ++index) { - ItemInst* sub = inst->GetItem(index); + EQEmu::ItemInstance* sub = inst->GetItem(index); if (!sub) continue; diff --git a/common/patches/rof2.cpp b/common/patches/rof2.cpp index 609fdc123..47be172a2 100644 --- a/common/patches/rof2.cpp +++ b/common/patches/rof2.cpp @@ -45,7 +45,7 @@ namespace RoF2 static OpcodeManager *opcodes = nullptr; static Strategy struct_strategy; - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id, uint8 depth, ItemPacketType packet_type); + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id, uint8 depth, ItemPacketType packet_type); // server to client inventory location converters static inline structs::InventorySlot_Struct ServerToRoF2Slot(uint32 serverSlot, ItemPacketType PacketType = ItemPacketInvalid); @@ -671,7 +671,7 @@ namespace RoF2 ob.write((const char*)&item_count, sizeof(uint32)); for (int index = 0; index < item_count; ++index, ++eq) { - SerializeItem(ob, (const ItemInst*)eq->inst, eq->slot_id, 0, ItemPacketCharInventory); + SerializeItem(ob, (const EQEmu::ItemInstance*)eq->inst, eq->slot_id, 0, ItemPacketCharInventory); if (ob.tellp() == last_pos) Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); @@ -1609,7 +1609,7 @@ namespace RoF2 ob.write((const char*)__emu_buffer, 4); - SerializeItem(ob, (const ItemInst*)int_struct->inst, int_struct->slot_id, 0, old_item_pkt->PacketType); + SerializeItem(ob, (const EQEmu::ItemInstance*)int_struct->inst, int_struct->slot_id, 0, old_item_pkt->PacketType); if (ob.tellp() == last_pos) { Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; @@ -5499,9 +5499,9 @@ namespace RoF2 return NextItemInstSerialNumber; } - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id_in, uint8 depth, ItemPacketType packet_type) + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id_in, uint8 depth, ItemPacketType packet_type) { - const EQEmu::ItemBase *item = inst->GetUnscaledItem(); + const EQEmu::ItemData *item = inst->GetUnscaledItem(); RoF2::structs::ItemSerializationHeader hdr; @@ -5923,7 +5923,7 @@ namespace RoF2 ob.write((const char*)&subitem_count, sizeof(uint32)); for (uint32 index = SUB_INDEX_BEGIN; index < EQEmu::legacy::ITEM_CONTAINER_SIZE; ++index) { - ItemInst* sub = inst->GetItem(index); + EQEmu::ItemInstance* sub = inst->GetItem(index); if (!sub) continue; diff --git a/common/patches/rof2_structs.h b/common/patches/rof2_structs.h index ae4d2c799..12f467a71 100644 --- a/common/patches/rof2_structs.h +++ b/common/patches/rof2_structs.h @@ -2423,7 +2423,7 @@ struct AdventureLeaderboard_Struct /*struct Item_Shop_Struct { uint16 merchantid; uint8 itemtype; - ItemBase item; + ItemData item; uint8 iss_unknown001[6]; };*/ diff --git a/common/patches/rof_structs.h b/common/patches/rof_structs.h index 74b47c09e..3b6e01318 100644 --- a/common/patches/rof_structs.h +++ b/common/patches/rof_structs.h @@ -2450,7 +2450,7 @@ struct AdventureLeaderboard_Struct /*struct Item_Shop_Struct { uint16 merchantid; uint8 itemtype; - ItemBase item; + ItemData item; uint8 iss_unknown001[6]; };*/ diff --git a/common/patches/sod.cpp b/common/patches/sod.cpp index 3b02cbbcb..0e1a3fdcd 100644 --- a/common/patches/sod.cpp +++ b/common/patches/sod.cpp @@ -43,7 +43,7 @@ namespace SoD static OpcodeManager *opcodes = nullptr; static Strategy struct_strategy; - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id, uint8 depth); + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id, uint8 depth); // server to client inventory location converters static inline uint32 ServerToSoDSlot(uint32 ServerSlot); @@ -396,7 +396,7 @@ namespace SoD ob.write((const char*)&item_count, sizeof(uint32)); for (int index = 0; index < item_count; ++index, ++eq) { - SerializeItem(ob, (const ItemInst*)eq->inst, eq->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)eq->inst, eq->slot_id, 0); if (ob.tellp() == last_pos) Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); @@ -1060,7 +1060,7 @@ namespace SoD ob.write((const char*)__emu_buffer, 4); - SerializeItem(ob, (const ItemInst*)int_struct->inst, int_struct->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)int_struct->inst, int_struct->slot_id, 0); if (ob.tellp() == last_pos) { Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; @@ -3553,9 +3553,9 @@ namespace SoD return NextItemInstSerialNumber; } - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id_in, uint8 depth) + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id_in, uint8 depth) { - const EQEmu::ItemBase *item = inst->GetUnscaledItem(); + const EQEmu::ItemData *item = inst->GetUnscaledItem(); SoD::structs::ItemSerializationHeader hdr; @@ -3870,7 +3870,7 @@ namespace SoD ob.write((const char*)&subitem_count, sizeof(uint32)); for (uint32 index = SUB_INDEX_BEGIN; index < EQEmu::legacy::ITEM_CONTAINER_SIZE; ++index) { - ItemInst* sub = inst->GetItem(index); + EQEmu::ItemInstance* sub = inst->GetItem(index); if (!sub) continue; diff --git a/common/patches/sod_structs.h b/common/patches/sod_structs.h index bd428c653..d4a4d49a3 100644 --- a/common/patches/sod_structs.h +++ b/common/patches/sod_structs.h @@ -1970,7 +1970,7 @@ struct AdventureLeaderboard_Struct /*struct Item_Shop_Struct { uint16 merchantid; uint8 itemtype; - ItemBase item; + ItemData item; uint8 iss_unknown001[6]; };*/ diff --git a/common/patches/sof.cpp b/common/patches/sof.cpp index 0d1afa000..b73e998aa 100644 --- a/common/patches/sof.cpp +++ b/common/patches/sof.cpp @@ -43,7 +43,7 @@ namespace SoF static OpcodeManager *opcodes = nullptr; static Strategy struct_strategy; - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id, uint8 depth); + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id, uint8 depth); // server to client inventory location converters static inline uint32 ServerToSoFSlot(uint32 serverSlot); @@ -378,7 +378,7 @@ namespace SoF ob.write((const char*)&item_count, sizeof(uint32)); for (int index = 0; index < item_count; ++index, ++eq) { - SerializeItem(ob, (const ItemInst*)eq->inst, eq->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)eq->inst, eq->slot_id, 0); if (ob.tellp() == last_pos) Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); @@ -857,7 +857,7 @@ namespace SoF ob.write((const char*)__emu_buffer, 4); - SerializeItem(ob, (const ItemInst*)int_struct->inst, int_struct->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)int_struct->inst, int_struct->slot_id, 0); if (ob.tellp() == last_pos) { Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; @@ -2923,9 +2923,9 @@ namespace SoF return NextItemInstSerialNumber; } - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id_in, uint8 depth) + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id_in, uint8 depth) { - const EQEmu::ItemBase *item = inst->GetUnscaledItem(); + const EQEmu::ItemData *item = inst->GetUnscaledItem(); SoF::structs::ItemSerializationHeader hdr; @@ -3238,7 +3238,7 @@ namespace SoF ob.write((const char*)&subitem_count, sizeof(uint32)); for (uint32 index = SUB_INDEX_BEGIN; index < EQEmu::legacy::ITEM_CONTAINER_SIZE; ++index) { - ItemInst* sub = inst->GetItem(index); + EQEmu::ItemInstance* sub = inst->GetItem(index); if (!sub) continue; diff --git a/common/patches/titanium.cpp b/common/patches/titanium.cpp index 63feea81f..9b6459afb 100644 --- a/common/patches/titanium.cpp +++ b/common/patches/titanium.cpp @@ -42,7 +42,7 @@ namespace Titanium static OpcodeManager *opcodes = nullptr; static Strategy struct_strategy; - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id_in, uint8 depth); + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id_in, uint8 depth); // server to client inventory location converters static inline int16 ServerToTitaniumSlot(uint32 serverSlot); @@ -329,7 +329,7 @@ namespace Titanium EQEmu::OutBuffer::pos_type last_pos = ob.tellp(); for (int r = 0; r < itemcount; r++, eq++) { - SerializeItem(ob, (const ItemInst*)eq->inst, eq->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)eq->inst, eq->slot_id, 0); if (ob.tellp() == last_pos) Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); @@ -815,7 +815,7 @@ namespace Titanium ob.write((const char*)__emu_buffer, 4); - SerializeItem(ob, (const ItemInst*)int_struct->inst, int_struct->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)int_struct->inst, int_struct->slot_id, 0); if (ob.tellp() == last_pos) { Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; @@ -2216,10 +2216,10 @@ namespace Titanium } // file scope helper methods - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id_in, uint8 depth) + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id_in, uint8 depth) { const char* protection = "\\\\\\\\\\"; - const EQEmu::ItemBase* item = inst->GetUnscaledItem(); + const EQEmu::ItemData* item = inst->GetUnscaledItem(); ob << StringFormat("%.*s%s", (depth ? (depth - 1) : 0), protection, (depth ? "\"" : "")); // For leading quotes (and protection) if a subitem; @@ -2440,7 +2440,7 @@ namespace Titanium for (int index = SUB_INDEX_BEGIN; index < invbag::ItemBagSize; ++index) { ob << '|'; - ItemInst* sub = inst->GetItem(index); + EQEmu::ItemInstance* sub = inst->GetItem(index); if (!sub) continue; diff --git a/common/patches/uf.cpp b/common/patches/uf.cpp index 0436f5af4..fd45b0c61 100644 --- a/common/patches/uf.cpp +++ b/common/patches/uf.cpp @@ -43,7 +43,7 @@ namespace UF static OpcodeManager *opcodes = nullptr; static Strategy struct_strategy; - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id, uint8 depth); + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id, uint8 depth); // server to client inventory location converters static inline uint32 ServerToUFSlot(uint32 serverSlot); @@ -541,7 +541,7 @@ namespace UF ob.write((const char*)&item_count, sizeof(uint32)); for (int index = 0; index < item_count; ++index, ++eq) { - SerializeItem(ob, (const ItemInst*)eq->inst, eq->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)eq->inst, eq->slot_id, 0); if (ob.tellp() == last_pos) Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); @@ -1293,7 +1293,7 @@ namespace UF ob.write((const char*)__emu_buffer, 4); - SerializeItem(ob, (const ItemInst*)int_struct->inst, int_struct->slot_id, 0); + SerializeItem(ob, (const EQEmu::ItemInstance*)int_struct->inst, int_struct->slot_id, 0); if (ob.tellp() == last_pos) { Log.Out(Logs::General, Logs::Netcode, "[STRUCTS] Serialization failed on item slot %d.", int_struct->slot_id); delete in; @@ -3847,9 +3847,9 @@ namespace UF return NextItemInstSerialNumber; } - void SerializeItem(EQEmu::OutBuffer& ob, const ItemInst *inst, int16 slot_id_in, uint8 depth) + void SerializeItem(EQEmu::OutBuffer& ob, const EQEmu::ItemInstance *inst, int16 slot_id_in, uint8 depth) { - const EQEmu::ItemBase *item = inst->GetUnscaledItem(); + const EQEmu::ItemData *item = inst->GetUnscaledItem(); UF::structs::ItemSerializationHeader hdr; @@ -3893,7 +3893,7 @@ namespace UF int ornamentationAugtype = RuleI(Character, OrnamentationAugmentType); uint16 ornaIcon = 0; if (inst->GetOrnamentationAug(ornamentationAugtype)) { - const EQEmu::ItemBase *aug_weap = inst->GetOrnamentationAug(ornamentationAugtype)->GetItem(); + const EQEmu::ItemData *aug_weap = inst->GetOrnamentationAug(ornamentationAugtype)->GetItem(); ornaIcon = aug_weap->Icon; ob.write(aug_weap->IDFile, strlen(aug_weap->IDFile)); @@ -4225,7 +4225,7 @@ namespace UF ob.write((const char*)&subitem_count, sizeof(uint32)); for (uint32 index = SUB_INDEX_BEGIN; index < EQEmu::legacy::ITEM_CONTAINER_SIZE; ++index) { - ItemInst* sub = inst->GetItem(index); + EQEmu::ItemInstance* sub = inst->GetItem(index); if (!sub) continue; diff --git a/common/patches/uf_structs.h b/common/patches/uf_structs.h index 8decaa04a..7ebedbec5 100644 --- a/common/patches/uf_structs.h +++ b/common/patches/uf_structs.h @@ -2011,7 +2011,7 @@ struct AdventureLeaderboard_Struct /*struct Item_Shop_Struct { uint16 merchantid; uint8 itemtype; - ItemBase item; + ItemData item; uint8 iss_unknown001[6]; };*/ diff --git a/common/say_link.cpp b/common/say_link.cpp index 2a4065403..42c0f46a1 100644 --- a/common/say_link.cpp +++ b/common/say_link.cpp @@ -147,7 +147,7 @@ void EQEmu::SayLinkEngine::generate_body() memset(&m_LinkBodyStruct, 0, sizeof(SayLinkBody_Struct)); - const EQEmu::ItemBase* item_data = nullptr; + const EQEmu::ItemData* item_data = nullptr; switch (m_LinkType) { case saylink::SayLinkBlank: @@ -250,7 +250,7 @@ void EQEmu::SayLinkEngine::generate_text() return; } - const EQEmu::ItemBase* item_data = nullptr; + const EQEmu::ItemData* item_data = nullptr; switch (m_LinkType) { case saylink::SayLinkBlank: diff --git a/common/say_link.h b/common/say_link.h index 0bbac2e36..6bc3e5535 100644 --- a/common/say_link.h +++ b/common/say_link.h @@ -26,11 +26,11 @@ struct ServerLootItem_Struct; -class ItemInst; namespace EQEmu { - struct ItemBase; + struct ItemData; + class ItemInstance; struct SayLinkBody_Struct; namespace saylink { @@ -67,9 +67,9 @@ namespace EQEmu SayLinkEngine(); void SetLinkType(saylink::SayLinkType link_type) { m_LinkType = link_type; } - void SetItemData(const EQEmu::ItemBase* item_data) { m_ItemData = item_data; } + void SetItemData(const EQEmu::ItemData* item_data) { m_ItemData = item_data; } void SetLootData(const ServerLootItem_Struct* loot_data) { m_LootData = loot_data; } - void SetItemInst(const ItemInst* item_inst) { m_ItemInst = item_inst; } + void SetItemInst(const ItemInstance* item_inst) { m_ItemInst = item_inst; } // mainly for saylinks..but, not limited to void SetProxyUnknown1(uint8 proxy_unknown_1) { m_Proxy_unknown_1 = proxy_unknown_1; } @@ -103,9 +103,9 @@ namespace EQEmu void generate_text(); int m_LinkType; - const ItemBase* m_ItemData; + const ItemData* m_ItemData; const ServerLootItem_Struct* m_LootData; - const ItemInst* m_ItemInst; + const ItemInstance* m_ItemInst; uint8 m_Proxy_unknown_1; uint32 m_ProxyItemID; diff --git a/common/shareddb.cpp b/common/shareddb.cpp index 8e55269e7..d896fba9c 100644 --- a/common/shareddb.cpp +++ b/common/shareddb.cpp @@ -99,7 +99,7 @@ uint32 SharedDatabase::GetTotalTimeEntitledOnAccount(uint32 AccountID) { return EntitledTime; } -bool SharedDatabase::SaveCursor(uint32 char_id, std::list::const_iterator &start, std::list::const_iterator &end) +bool SharedDatabase::SaveCursor(uint32 char_id, std::list::const_iterator &start, std::list::const_iterator &end) { // Delete cursor items std::string query = StringFormat("DELETE FROM inventory WHERE charid = %i " @@ -116,7 +116,7 @@ bool SharedDatabase::SaveCursor(uint32 char_id, std::list::const_iter int i = 8000; for(auto it = start; it != end; ++it, i++) { if (i > 8999) { break; } // shouldn't be anything in the queue that indexes this high - ItemInst *inst = *it; + EQEmu::ItemInstance *inst = *it; int16 use_slot = (i == 8000) ? EQEmu::legacy::SlotCursor : i; if (!SaveInventory(char_id, inst, use_slot)) { return false; @@ -126,7 +126,7 @@ bool SharedDatabase::SaveCursor(uint32 char_id, std::list::const_iter return true; } -bool SharedDatabase::VerifyInventory(uint32 account_id, int16 slot_id, const ItemInst* inst) +bool SharedDatabase::VerifyInventory(uint32 account_id, int16 slot_id, const EQEmu::ItemInstance* inst) { // Delete cursor items std::string query = StringFormat("SELECT itemid, charges FROM sharedbank " @@ -159,7 +159,7 @@ bool SharedDatabase::VerifyInventory(uint32 account_id, int16 slot_id, const Ite return true; } -bool SharedDatabase::SaveInventory(uint32 char_id, const ItemInst* inst, int16 slot_id) { +bool SharedDatabase::SaveInventory(uint32 char_id, const EQEmu::ItemInstance* inst, int16 slot_id) { //never save tribute slots: if (slot_id >= EQEmu::legacy::TRIBUTE_BEGIN && slot_id <= EQEmu::legacy::TRIBUTE_END) @@ -189,13 +189,13 @@ bool SharedDatabase::SaveInventory(uint32 char_id, const ItemInst* inst, int16 s return UpdateInventorySlot(char_id, inst, slot_id); } -bool SharedDatabase::UpdateInventorySlot(uint32 char_id, const ItemInst* inst, int16 slot_id) { +bool SharedDatabase::UpdateInventorySlot(uint32 char_id, const EQEmu::ItemInstance* inst, int16 slot_id) { // need to check 'inst' argument for valid pointer uint32 augslot[EQEmu::legacy::ITEM_COMMON_SIZE] = { 0, 0, 0, 0, 0, 0 }; if (inst->IsClassCommon()) { for (int i = AUG_INDEX_BEGIN; i < EQEmu::legacy::ITEM_COMMON_SIZE; i++) { - ItemInst *auginst = inst->GetItem(i); + EQEmu::ItemInstance *auginst = inst->GetItem(i); augslot[i] = (auginst && auginst->GetItem()) ? auginst->GetItem()->ID : 0; } } @@ -225,7 +225,7 @@ bool SharedDatabase::UpdateInventorySlot(uint32 char_id, const ItemInst* inst, i // Limiting to bag slot count will get rid of 'hidden' duplicated items and 'Invalid Slot ID' // messages through attrition (and the modded code in SaveInventory) for (uint8 idx = SUB_INDEX_BEGIN; idx < inst->GetItem()->BagSlots && idx < EQEmu::legacy::ITEM_CONTAINER_SIZE; idx++) { - const ItemInst* baginst = inst->GetItem(idx); + const EQEmu::ItemInstance* baginst = inst->GetItem(idx); SaveInventory(char_id, baginst, Inventory::CalcSlotId(slot_id, idx)); } @@ -236,13 +236,13 @@ bool SharedDatabase::UpdateInventorySlot(uint32 char_id, const ItemInst* inst, i return true; } -bool SharedDatabase::UpdateSharedBankSlot(uint32 char_id, const ItemInst* inst, int16 slot_id) { +bool SharedDatabase::UpdateSharedBankSlot(uint32 char_id, const EQEmu::ItemInstance* inst, int16 slot_id) { // need to check 'inst' argument for valid pointer uint32 augslot[EQEmu::legacy::ITEM_COMMON_SIZE] = { 0, 0, 0, 0, 0, 0 }; if (inst->IsClassCommon()) { for (int i = AUG_INDEX_BEGIN; i < EQEmu::legacy::ITEM_COMMON_SIZE; i++) { - ItemInst *auginst = inst->GetItem(i); + EQEmu::ItemInstance *auginst = inst->GetItem(i); augslot[i] = (auginst && auginst->GetItem()) ? auginst->GetItem()->ID : 0; } } @@ -271,7 +271,7 @@ bool SharedDatabase::UpdateSharedBankSlot(uint32 char_id, const ItemInst* inst, // Limiting to bag slot count will get rid of 'hidden' duplicated items and 'Invalid Slot ID' // messages through attrition (and the modded code in SaveInventory) for (uint8 idx = SUB_INDEX_BEGIN; idx < inst->GetItem()->BagSlots && idx < EQEmu::legacy::ITEM_CONTAINER_SIZE; idx++) { - const ItemInst* baginst = inst->GetItem(idx); + const EQEmu::ItemInstance* baginst = inst->GetItem(idx); SaveInventory(char_id, baginst, Inventory::CalcSlotId(slot_id, idx)); } } @@ -364,7 +364,7 @@ bool SharedDatabase::SetSharedPlatinum(uint32 account_id, int32 amount_to_add) { bool SharedDatabase::SetStartingItems(PlayerProfile_Struct* pp, Inventory* inv, uint32 si_race, uint32 si_class, uint32 si_deity, uint32 si_current_zone, char* si_name, int admin_level) { - const EQEmu::ItemBase* myitem; + const EQEmu::ItemData* myitem; std::string query = StringFormat("SELECT itemid, item_charges, slot FROM starting_items " "WHERE (race = %i or race = 0) AND (class = %i or class = 0) AND " @@ -385,7 +385,7 @@ bool SharedDatabase::SetStartingItems(PlayerProfile_Struct* pp, Inventory* inv, if(!myitem) continue; - ItemInst* myinst = CreateBaseItem(myitem, charges); + EQEmu::ItemInstance* myinst = CreateBaseItem(myitem, charges); if(slot < 0) slot = inv->FindFreeSlot(0, 0); @@ -436,7 +436,7 @@ bool SharedDatabase::GetSharedBank(uint32 id, Inventory *inv, bool is_charid) aug[4] = (uint32)atoi(row[7]); aug[5] = (uint32)atoi(row[8]); - const EQEmu::ItemBase *item = GetItem(item_id); + const EQEmu::ItemData *item = GetItem(item_id); if (!item) { Log.Out(Logs::General, Logs::Error, @@ -447,7 +447,7 @@ bool SharedDatabase::GetSharedBank(uint32 id, Inventory *inv, bool is_charid) int16 put_slot_id = INVALID_INDEX; - ItemInst *inst = CreateBaseItem(item, charges); + EQEmu::ItemInstance *inst = CreateBaseItem(item, charges); if (inst && item->IsClassCommon()) { for (int i = AUG_INDEX_BEGIN; i < EQEmu::legacy::ITEM_COMMON_SIZE; i++) { if (aug[i]) @@ -539,7 +539,7 @@ bool SharedDatabase::GetInventory(uint32 char_id, Inventory *inv) uint32 ornament_idfile = (uint32)atoul(row[13]); uint32 ornament_hero_model = (uint32)atoul(row[14]); - const EQEmu::ItemBase *item = GetItem(item_id); + const EQEmu::ItemData *item = GetItem(item_id); if (!item) { Log.Out(Logs::General, Logs::Error, @@ -550,7 +550,7 @@ bool SharedDatabase::GetInventory(uint32 char_id, Inventory *inv) int16 put_slot_id = INVALID_INDEX; - ItemInst *inst = CreateBaseItem(item, charges); + EQEmu::ItemInstance *inst = CreateBaseItem(item, charges); if (inst == nullptr) continue; @@ -679,12 +679,12 @@ bool SharedDatabase::GetInventory(uint32 account_id, char *name, Inventory *inv) uint32 ornament_idfile = (uint32)atoul(row[13]); uint32 ornament_hero_model = (uint32)atoul(row[14]); - const EQEmu::ItemBase *item = GetItem(item_id); + const EQEmu::ItemData *item = GetItem(item_id); int16 put_slot_id = INVALID_INDEX; if (!item) continue; - ItemInst *inst = CreateBaseItem(item, charges); + EQEmu::ItemInstance *inst = CreateBaseItem(item, charges); if (inst == nullptr) continue; @@ -816,7 +816,7 @@ bool SharedDatabase::LoadItems(const std::string &prefix) { mutex.Lock(); std::string file_name = Config->SharedMemDir + prefix + std::string("items"); items_mmf = std::unique_ptr(new EQEmu::MemoryMappedFile(file_name)); - items_hash = std::unique_ptr>(new EQEmu::FixedMemoryHashSet(reinterpret_cast(items_mmf->Get()), items_mmf->Size())); + items_hash = std::unique_ptr>(new EQEmu::FixedMemoryHashSet(reinterpret_cast(items_mmf->Get()), items_mmf->Size())); mutex.Unlock(); } catch(std::exception& ex) { Log.Out(Logs::General, Logs::Error, "Error Loading Items: %s", ex.what()); @@ -828,7 +828,7 @@ bool SharedDatabase::LoadItems(const std::string &prefix) { void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_item_id) { - EQEmu::FixedMemoryHashSet hash(reinterpret_cast(data), size, items, max_item_id); + EQEmu::FixedMemoryHashSet hash(reinterpret_cast(data), size, items, max_item_id); std::string ndbuffer; bool disableNoRent = false; @@ -856,7 +856,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_ } } - EQEmu::ItemBase item; + EQEmu::ItemData item; const std::string query = "SELECT source," #define F(x) "`"#x"`," @@ -869,7 +869,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_ } for (auto row = results.begin(); row != results.end(); ++row) { - memset(&item, 0, sizeof(EQEmu::ItemBase)); + memset(&item, 0, sizeof(EQEmu::ItemData)); item.ItemClass = (uint8)atoi(row[ItemField::itemclass]); strcpy(item.Name, row[ItemField::name]); @@ -1086,7 +1086,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_ } } -const EQEmu::ItemBase* SharedDatabase::GetItem(uint32 id) { +const EQEmu::ItemData* SharedDatabase::GetItem(uint32 id) { if (id == 0) { return nullptr; @@ -1105,7 +1105,7 @@ const EQEmu::ItemBase* SharedDatabase::GetItem(uint32 id) { return nullptr; } -const EQEmu::ItemBase* SharedDatabase::IterateItems(uint32* id) { +const EQEmu::ItemData* SharedDatabase::IterateItems(uint32* id) { if(!items_hash || !id) { return nullptr; } @@ -1250,18 +1250,18 @@ bool SharedDatabase::LoadNPCFactionLists(const std::string &prefix) { return true; } -// Create appropriate ItemInst class -ItemInst* SharedDatabase::CreateItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, uint32 aug6, uint8 attuned) +// Create appropriate EQEmu::ItemInstance class +EQEmu::ItemInstance* SharedDatabase::CreateItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, uint32 aug6, uint8 attuned) { - const EQEmu::ItemBase* item = nullptr; - ItemInst* inst = nullptr; + const EQEmu::ItemData* item = nullptr; + EQEmu::ItemInstance* inst = nullptr; item = GetItem(item_id); if (item) { inst = CreateBaseItem(item, charges); if (inst == nullptr) { - Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateItem()"); + Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for EQEmu::ItemInstance creation in SharedDatabase::CreateItem()"); Log.Out(Logs::General, Logs::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); return nullptr; } @@ -1279,15 +1279,15 @@ ItemInst* SharedDatabase::CreateItem(uint32 item_id, int16 charges, uint32 aug1, } -// Create appropriate ItemInst class -ItemInst* SharedDatabase::CreateItem(const EQEmu::ItemBase* item, int16 charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, uint32 aug6, uint8 attuned) +// Create appropriate EQEmu::ItemInstance class +EQEmu::ItemInstance* SharedDatabase::CreateItem(const EQEmu::ItemData* item, int16 charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, uint32 aug6, uint8 attuned) { - ItemInst* inst = nullptr; + EQEmu::ItemInstance* inst = nullptr; if (item) { inst = CreateBaseItem(item, charges); if (inst == nullptr) { - Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateItem()"); + Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for EQEmu::ItemInstance creation in SharedDatabase::CreateItem()"); Log.Out(Logs::General, Logs::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); return nullptr; } @@ -1304,8 +1304,8 @@ ItemInst* SharedDatabase::CreateItem(const EQEmu::ItemBase* item, int16 charges, return inst; } -ItemInst* SharedDatabase::CreateBaseItem(const EQEmu::ItemBase* item, int16 charges) { - ItemInst* inst = nullptr; +EQEmu::ItemInstance* SharedDatabase::CreateBaseItem(const EQEmu::ItemData* item, int16 charges) { + EQEmu::ItemInstance* inst = nullptr; if (item) { // if maxcharges is -1 that means it is an unlimited use item. // set it to 1 charge so that it is usable on creation @@ -1315,10 +1315,10 @@ ItemInst* SharedDatabase::CreateBaseItem(const EQEmu::ItemBase* item, int16 char if(charges <= 0 && item->Stackable) charges = 1; - inst = new ItemInst(item, charges); + inst = new EQEmu::ItemInstance(item, charges); if (inst == nullptr) { - Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for ItemInst creation in SharedDatabase::CreateBaseItem()"); + Log.Out(Logs::General, Logs::Error, "Error: valid item data returned a null reference for EQEmu::ItemInstance creation in SharedDatabase::CreateBaseItem()"); Log.Out(Logs::General, Logs::Error, "Item Data = ID: %u, Name: %s, Charges: %i", item->ID, item->Name, charges); return nullptr; } diff --git a/common/shareddb.h b/common/shareddb.h index 68e1821d3..42dfcf4ce 100644 --- a/common/shareddb.h +++ b/common/shareddb.h @@ -34,7 +34,6 @@ class EvolveInfo; class Inventory; -class ItemInst; struct BaseDataStruct; struct InspectMessage_Struct; struct PlayerProfile_Struct; @@ -45,7 +44,8 @@ struct LootDrop_Struct; namespace EQEmu { - struct ItemBase; + struct ItemData; + class ItemInstance; class MemoryMappedFile; } @@ -76,13 +76,13 @@ class SharedDatabase : public Database /* Character Inventory */ - bool SaveCursor(uint32 char_id, std::list::const_iterator &start, std::list::const_iterator &end); - bool SaveInventory(uint32 char_id, const ItemInst* inst, int16 slot_id); + bool SaveCursor(uint32 char_id, std::list::const_iterator &start, std::list::const_iterator &end); + bool SaveInventory(uint32 char_id, const EQEmu::ItemInstance* inst, int16 slot_id); bool DeleteSharedBankSlot(uint32 char_id, int16 slot_id); bool DeleteInventorySlot(uint32 char_id, int16 slot_id); - bool UpdateInventorySlot(uint32 char_id, const ItemInst* inst, int16 slot_id); - bool UpdateSharedBankSlot(uint32 char_id, const ItemInst* inst, int16 slot_id); - bool VerifyInventory(uint32 account_id, int16 slot_id, const ItemInst* inst); + bool UpdateInventorySlot(uint32 char_id, const EQEmu::ItemInstance* inst, int16 slot_id); + bool UpdateSharedBankSlot(uint32 char_id, const EQEmu::ItemInstance* inst, int16 slot_id); + bool VerifyInventory(uint32 account_id, int16 slot_id, const EQEmu::ItemInstance* inst); bool GetSharedBank(uint32 id, Inventory* inv, bool is_charid); int32 GetSharedPlatinum(uint32 account_id); bool SetSharedPlatinum(uint32 account_id, int32 amount_to_add); @@ -99,9 +99,9 @@ class SharedDatabase : public Database /* Item Methods */ - ItemInst* CreateItem(uint32 item_id, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); - ItemInst* CreateItem(const EQEmu::ItemBase* item, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); - ItemInst* CreateBaseItem(const EQEmu::ItemBase* item, int16 charges = 0); + EQEmu::ItemInstance* CreateItem(uint32 item_id, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); + EQEmu::ItemInstance* CreateItem(const EQEmu::ItemData* item, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); + EQEmu::ItemInstance* CreateBaseItem(const EQEmu::ItemData* item, int16 charges = 0); /* Shared Memory crap @@ -111,8 +111,8 @@ class SharedDatabase : public Database void GetItemsCount(int32 &item_count, uint32 &max_id); void LoadItems(void *data, uint32 size, int32 items, uint32 max_item_id); bool LoadItems(const std::string &prefix); - const EQEmu::ItemBase* IterateItems(uint32* id); - const EQEmu::ItemBase* GetItem(uint32 id); + const EQEmu::ItemData* IterateItems(uint32* id); + const EQEmu::ItemData* GetItem(uint32 id); const EvolveInfo* GetEvolveInfo(uint32 loregroup); //faction lists @@ -149,7 +149,7 @@ class SharedDatabase : public Database std::unique_ptr skill_caps_mmf; std::unique_ptr items_mmf; - std::unique_ptr> items_hash; + std::unique_ptr> items_hash; std::unique_ptr faction_mmf; std::unique_ptr> faction_hash; std::unique_ptr loot_table_mmf; diff --git a/shared_memory/items.cpp b/shared_memory/items.cpp index b58382420..6923fea3d 100644 --- a/shared_memory/items.cpp +++ b/shared_memory/items.cpp @@ -35,7 +35,7 @@ void LoadItems(SharedDatabase *database, const std::string &prefix) { EQ_EXCEPT("Shared Memory", "Unable to get any items from the database."); } - uint32 size = static_cast(EQEmu::FixedMemoryHashSet::estimated_size(items, max_item)); + uint32 size = static_cast(EQEmu::FixedMemoryHashSet::estimated_size(items, max_item)); auto Config = EQEmuConfig::get(); std::string file_name = Config->SharedMemDir + prefix + std::string("items"); diff --git a/tests/fixed_memory_test.h b/tests/fixed_memory_test.h index 244394ce5..055a85d79 100644 --- a/tests/fixed_memory_test.h +++ b/tests/fixed_memory_test.h @@ -27,7 +27,7 @@ class FixedMemoryHashTest : public Test::Suite { typedef void(FixedMemoryHashTest::*TestFunction)(void); public: FixedMemoryHashTest() { - size_ = EQEmu::FixedMemoryHashSet::estimated_size(72000, 190000); + size_ = EQEmu::FixedMemoryHashSet::estimated_size(72000, 190000); data_ = new uint8[size_]; memset(data_, 0, size_); TEST_ADD(FixedMemoryHashTest::InitTest); @@ -49,7 +49,7 @@ public: private: void InitTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_, 72000, 190000); + EQEmu::FixedMemoryHashSet hash(data_, size_, 72000, 190000); TEST_ASSERT(!hash.exists(1001)); TEST_ASSERT(hash.size() == 0); TEST_ASSERT(hash.max_size() == 72000); @@ -57,7 +57,7 @@ public: } void LoadTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::FixedMemoryHashSet hash(data_, size_); TEST_ASSERT(!hash.exists(1001)); TEST_ASSERT(hash.size() == 0); TEST_ASSERT(hash.max_size() == 72000); @@ -65,8 +65,8 @@ public: } void InsertTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); - EQEmu::ItemBase item; + EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::ItemData item; memset(&item, 0, sizeof(item)); strcpy(item.Name, "Iron Sword"); item.ID = 1001; @@ -79,20 +79,20 @@ public: } void RetrieveTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::FixedMemoryHashSet hash(data_, size_); TEST_ASSERT(hash.exists(1001)); TEST_ASSERT(hash.size() == 1); TEST_ASSERT(hash.max_size() == 72000); TEST_ASSERT(!hash.empty()); - EQEmu::ItemBase item = hash[1001]; + EQEmu::ItemData item = hash[1001]; TEST_ASSERT(strcmp(item.Name, "Iron Sword") == 0); TEST_ASSERT(item.ID == 1001); } void OverwriteTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); - EQEmu::ItemBase item; + EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::ItemData item; memset(&item, 0, sizeof(item)); strcpy(item.Name, "Steel Sword"); item.ID = 1001; @@ -105,20 +105,20 @@ public: } void OverwriteRetrieveTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::FixedMemoryHashSet hash(data_, size_); TEST_ASSERT(hash.exists(1001)); TEST_ASSERT(hash.size() == 1); TEST_ASSERT((hash.max_size() == 72000)); TEST_ASSERT(!hash.empty()); - EQEmu::ItemBase item = hash[1001]; + EQEmu::ItemData item = hash[1001]; TEST_ASSERT(strcmp(item.Name, "Steel Sword") == 0); TEST_ASSERT(item.ID == 1001); } void InsertAgainTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); - EQEmu::ItemBase item; + EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::ItemData item; memset(&item, 0, sizeof(item)); strcpy(item.Name, "Iron Sword"); item.ID = 1000; @@ -132,14 +132,14 @@ public: } void RetrieveAgainTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::FixedMemoryHashSet hash(data_, size_); TEST_ASSERT(hash.exists(1000)); TEST_ASSERT(hash.exists(1001)); TEST_ASSERT(hash.size() == 2); TEST_ASSERT(hash.max_size() == 72000); TEST_ASSERT(!hash.empty()); - EQEmu::ItemBase item = hash[1000]; + EQEmu::ItemData item = hash[1000]; TEST_ASSERT(strcmp(item.Name, "Iron Sword") == 0); TEST_ASSERT(item.ID == 1000); @@ -149,8 +149,8 @@ public: } void InsertBeginTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); - EQEmu::ItemBase item; + EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::ItemData item; memset(&item, 0, sizeof(item)); strcpy(item.Name, "Bronze Sword"); item.ID = 0; @@ -165,7 +165,7 @@ public: } void RetrieveBeginTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::FixedMemoryHashSet hash(data_, size_); TEST_ASSERT(hash.exists(1000)); TEST_ASSERT(hash.exists(1001)); TEST_ASSERT(hash.exists(0)); @@ -173,7 +173,7 @@ public: TEST_ASSERT(hash.max_size() == 72000); TEST_ASSERT(!hash.empty()); - EQEmu::ItemBase item = hash[1000]; + EQEmu::ItemData item = hash[1000]; TEST_ASSERT(strcmp(item.Name, "Iron Sword") == 0); TEST_ASSERT(item.ID == 1000); @@ -187,8 +187,8 @@ public: } void InsertEndTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); - EQEmu::ItemBase item; + EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::ItemData item; memset(&item, 0, sizeof(item)); strcpy(item.Name, "Jade Sword"); item.ID = 190000; @@ -204,7 +204,7 @@ public: } void RetrieveEndTest() { - EQEmu::FixedMemoryHashSet hash(data_, size_); + EQEmu::FixedMemoryHashSet hash(data_, size_); TEST_ASSERT(hash.exists(1000)); TEST_ASSERT(hash.exists(1001)); TEST_ASSERT(hash.exists(0)); @@ -213,7 +213,7 @@ public: TEST_ASSERT(hash.max_size() == 72000); TEST_ASSERT(!hash.empty()); - EQEmu::ItemBase item = hash[1000]; + EQEmu::ItemData item = hash[1000]; TEST_ASSERT(strcmp(item.Name, "Iron Sword") == 0); TEST_ASSERT(item.ID == 1000); diff --git a/world/worlddb.cpp b/world/worlddb.cpp index 205663ea5..858a84323 100644 --- a/world/worlddb.cpp +++ b/world/worlddb.cpp @@ -245,8 +245,8 @@ void WorldDatabase::GetCharSelectInfo(uint32 accountID, EQApplicationPacket **ou /* Load Inventory */ // If we ensure that the material data is updated appropriately, we can do away with inventory loads if (GetInventory(accountID, cse->Name, &inv)) { - const EQEmu::ItemBase* item = nullptr; - const ItemInst* inst = nullptr; + const EQEmu::ItemData* item = nullptr; + const EQEmu::ItemInstance* inst = nullptr; int16 invslot = 0; for (uint32 matslot = 0; matslot < EQEmu::textures::TextureCount; matslot++) { diff --git a/zone/aa.cpp b/zone/aa.cpp index 97b444311..b1fadf5e8 100644 --- a/zone/aa.cpp +++ b/zone/aa.cpp @@ -423,7 +423,7 @@ void Mob::WakeTheDead(uint16 spell_id, Mob *target, uint32 duration) uint32 sitem = 0; sitem = CorpseToUse->GetWornItem(x); if(sitem){ - const EQEmu::ItemBase * itm = database.GetItem(sitem); + const EQEmu::ItemData * itm = database.GetItem(sitem); npca->AddLootDrop(itm, &npca->itemlist, 1, 1, 255, true, true); } } diff --git a/zone/attack.cpp b/zone/attack.cpp index 9b83f7994..45de2d6b8 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -51,12 +51,12 @@ extern WorldServer worldserver; extern EntityList entity_list; extern Zone* zone; -bool Mob::AttackAnimation(EQEmu::skills::SkillType &skillinuse, int Hand, const ItemInst* weapon) +bool Mob::AttackAnimation(EQEmu::skills::SkillType &skillinuse, int Hand, const EQEmu::ItemInstance* weapon) { // Determine animation int type = 0; if (weapon && weapon->IsClassCommon()) { - const EQEmu::ItemBase* item = weapon->GetItem(); + const EQEmu::ItemData* item = weapon->GetItem(); Log.Out(Logs::Detail, Logs::Attack, "Weapon skill : %i", item->ItemType); @@ -786,9 +786,9 @@ int32 Client::GetMeleeMitDmg(Mob *attacker, int32 damage, int32 minhit, //Returns the weapon damage against the input mob //if we cannot hit the mob with the current weapon we will get a value less than or equal to zero //Else we know we can hit. -//GetWeaponDamage(mob*, const ItemBase*) is intended to be used for mobs or any other situation where we do not have a client inventory item -//GetWeaponDamage(mob*, const ItemInst*) is intended to be used for situations where we have a client inventory item -int Mob::GetWeaponDamage(Mob *against, const EQEmu::ItemBase *weapon_item) { +//GetWeaponDamage(mob*, const EQEmu::ItemData*) is intended to be used for mobs or any other situation where we do not have a client inventory item +//GetWeaponDamage(mob*, const EQEmu::ItemInstance*) is intended to be used for situations where we have a client inventory item +int Mob::GetWeaponDamage(Mob *against, const EQEmu::ItemData *weapon_item) { int dmg = 0; int banedmg = 0; @@ -888,7 +888,7 @@ int Mob::GetWeaponDamage(Mob *against, const EQEmu::ItemBase *weapon_item) { return dmg; } -int Mob::GetWeaponDamage(Mob *against, const ItemInst *weapon_item, uint32 *hate) +int Mob::GetWeaponDamage(Mob *against, const EQEmu::ItemInstance *weapon_item, uint32 *hate) { int dmg = 0; int banedmg = 0; @@ -927,7 +927,7 @@ int Mob::GetWeaponDamage(Mob *against, const ItemInst *weapon_item, uint32 *hate } else { bool MagicGloves = false; if (IsClient()) { - const ItemInst *gloves = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotHands); + const EQEmu::ItemInstance *gloves = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotHands); if (gloves) MagicGloves = gloves->GetItemMagical(true); } @@ -1035,7 +1035,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b if (GetFeigned()) return false; // Rogean: How can you attack while feigned? Moved up from Aggro Code. - ItemInst* weapon; + EQEmu::ItemInstance* weapon; if (Hand == EQEmu::legacy::SlotSecondary){ // Kaiyodo - Pick weapon from the attacking hand weapon = GetInv().GetItem(EQEmu::legacy::SlotSecondary); OffHandAtk(true); @@ -1114,7 +1114,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b // Damage bonuses apply only to hits from the main hand (Hand == MainPrimary) by characters level 28 and above // who belong to a melee class. If we're here, then all of these conditions apply. - ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemBase*) nullptr); + ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemData*) nullptr); min_hit += (int) ucDamageBonus; max_hit += (int) ucDamageBonus; @@ -1125,7 +1125,7 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b if (Hand == EQEmu::legacy::SlotSecondary) { if (aabonuses.SecondaryDmgInc || itembonuses.SecondaryDmgInc || spellbonuses.SecondaryDmgInc){ - ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemBase*) nullptr, true); + ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemData*) nullptr, true); min_hit += (int) ucDamageBonus; max_hit += (int) ucDamageBonus; @@ -1593,7 +1593,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool } //figure out what weapon they are using, if any - const EQEmu::ItemBase* weapon = nullptr; + const EQEmu::ItemData* weapon = nullptr; if (Hand == EQEmu::legacy::SlotPrimary && equipment[EQEmu::legacy::SlotPrimary] > 0) weapon = database.GetItem(equipment[EQEmu::legacy::SlotPrimary]); else if (equipment[EQEmu::legacy::SlotSecondary]) @@ -1645,7 +1645,7 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool //do attack animation regardless of whether or not we can hit below int16 charges = 0; - ItemInst weapon_inst(weapon, charges); + EQEmu::ItemInstance weapon_inst(weapon, charges); AttackAnimation(skillinuse, Hand, &weapon_inst); //basically "if not immune" then do the attack @@ -2515,7 +2515,7 @@ void Mob::DamageShield(Mob* attacker, bool spell_ds) { } } -uint8 Mob::GetWeaponDamageBonus(const EQEmu::ItemBase *weapon, bool offhand) +uint8 Mob::GetWeaponDamageBonus(const EQEmu::ItemData *weapon, bool offhand) { // dev quote with old and new formulas // https://forums.daybreakgames.com/eq/index.php?threads/test-update-09-17-15.226618/page-5#post-3326194 @@ -3526,7 +3526,7 @@ void Mob::TryDefensiveProc(Mob *on, uint16 hand) { } } -void Mob::TryWeaponProc(const ItemInst* weapon_g, Mob *on, uint16 hand) { +void Mob::TryWeaponProc(const EQEmu::ItemInstance* weapon_g, Mob *on, uint16 hand) { if(!on) { SetTarget(nullptr); Log.Out(Logs::General, Logs::Error, "A null Mob object was passed to Mob::TryWeaponProc for evaluation!"); @@ -3544,12 +3544,12 @@ void Mob::TryWeaponProc(const ItemInst* weapon_g, Mob *on, uint16 hand) { } if(!weapon_g) { - TrySpellProc(nullptr, (const EQEmu::ItemBase*)nullptr, on); + TrySpellProc(nullptr, (const EQEmu::ItemData*)nullptr, on); return; } if (!weapon_g->IsClassCommon()) { - TrySpellProc(nullptr, (const EQEmu::ItemBase*)nullptr, on); + TrySpellProc(nullptr, (const EQEmu::ItemData*)nullptr, on); return; } @@ -3562,7 +3562,7 @@ void Mob::TryWeaponProc(const ItemInst* weapon_g, Mob *on, uint16 hand) { return; } -void Mob::TryWeaponProc(const ItemInst *inst, const EQEmu::ItemBase *weapon, Mob *on, uint16 hand) +void Mob::TryWeaponProc(const EQEmu::ItemInstance *inst, const EQEmu::ItemData *weapon, Mob *on, uint16 hand) { if (!weapon) @@ -3612,10 +3612,10 @@ void Mob::TryWeaponProc(const ItemInst *inst, const EQEmu::ItemBase *weapon, Mob if (!proced && inst) { for (int r = 0; r < EQEmu::legacy::ITEM_COMMON_SIZE; r++) { - const ItemInst *aug_i = inst->GetAugment(r); + const EQEmu::ItemInstance *aug_i = inst->GetAugment(r); if (!aug_i) // no aug, try next slot! continue; - const EQEmu::ItemBase *aug = aug_i->GetItem(); + const EQEmu::ItemData *aug = aug_i->GetItem(); if (!aug) continue; @@ -3645,7 +3645,7 @@ void Mob::TryWeaponProc(const ItemInst *inst, const EQEmu::ItemBase *weapon, Mob return; } -void Mob::TrySpellProc(const ItemInst *inst, const EQEmu::ItemBase *weapon, Mob *on, uint16 hand) +void Mob::TrySpellProc(const EQEmu::ItemInstance *inst, const EQEmu::ItemData *weapon, Mob *on, uint16 hand) { float ProcBonus = static_cast(spellbonuses.SpellProcChance + itembonuses.SpellProcChance + aabonuses.SpellProcChance); @@ -4489,10 +4489,10 @@ void Client::SetAttackTimer() else //invalid slot (hands will always hit this) continue; - const EQEmu::ItemBase *ItemToUse = nullptr; + const EQEmu::ItemData *ItemToUse = nullptr; //find our item - ItemInst *ci = GetInv().GetItem(i); + EQEmu::ItemInstance *ci = GetInv().GetItem(i); if (ci) ItemToUse = ci->GetItem(); diff --git a/zone/bonuses.cpp b/zone/bonuses.cpp index a898e02ec..240643934 100644 --- a/zone/bonuses.cpp +++ b/zone/bonuses.cpp @@ -146,13 +146,13 @@ void Client::CalcItemBonuses(StatBonuses* newbon) { unsigned int i; // Update: MainAmmo should only calc skill mods (TODO: Check for other cases) for (i = EQEmu::legacy::SlotCharm; i <= EQEmu::legacy::SlotAmmo; i++) { - const ItemInst* inst = m_inv[i]; + const EQEmu::ItemInstance* inst = m_inv[i]; if(inst == 0) continue; AddItemBonuses(inst, newbon, false, false, 0, (i == EQEmu::legacy::SlotAmmo)); //These are given special flags due to how often they are checked for various spell effects. - const EQEmu::ItemBase *item = inst->GetItem(); + const EQEmu::ItemData *item = inst->GetItem(); if (i == EQEmu::legacy::SlotSecondary && (item && item->ItemType == EQEmu::item::ItemTypeShield)) SetShieldEquiped(true); else if (i == EQEmu::legacy::SlotPrimary && (item && item->ItemType == EQEmu::item::ItemType2HBlunt)) { @@ -166,14 +166,14 @@ void Client::CalcItemBonuses(StatBonuses* newbon) { //Power Source Slot if (ClientVersion() >= EQEmu::versions::ClientVersion::SoF) { - const ItemInst* inst = m_inv[EQEmu::legacy::SlotPowerSource]; + const EQEmu::ItemInstance* inst = m_inv[EQEmu::legacy::SlotPowerSource]; if(inst) AddItemBonuses(inst, newbon); } //tribute items for (i = 0; i < EQEmu::legacy::TRIBUTE_SIZE; i++) { - const ItemInst* inst = m_inv[EQEmu::legacy::TRIBUTE_BEGIN + i]; + const EQEmu::ItemInstance* inst = m_inv[EQEmu::legacy::TRIBUTE_BEGIN + i]; if(inst == 0) continue; AddItemBonuses(inst, newbon, false, true); @@ -182,7 +182,7 @@ void Client::CalcItemBonuses(StatBonuses* newbon) { //Optional ability to have worn effects calculate as an addititive bonus instead of highest value if (RuleI(Spells, AdditiveBonusWornType) && RuleI(Spells, AdditiveBonusWornType) != EQEmu::item::ItemEffectWorn){ for (i = EQEmu::legacy::SlotCharm; i < EQEmu::legacy::SlotAmmo; i++) { - const ItemInst* inst = m_inv[i]; + const EQEmu::ItemInstance* inst = m_inv[i]; if(inst == 0) continue; AdditiveWornBonuses(inst, newbon); @@ -208,7 +208,7 @@ void Client::ProcessItemCaps() itembonuses.ATK = std::min(itembonuses.ATK, CalcItemATKCap()); } -void Client::AddItemBonuses(const ItemInst *inst, StatBonuses *newbon, bool isAug, bool isTribute, int rec_override, bool ammo_slot_item) +void Client::AddItemBonuses(const EQEmu::ItemInstance *inst, StatBonuses *newbon, bool isAug, bool isTribute, int rec_override, bool ammo_slot_item) { if (!inst || !inst->IsClassCommon()) { return; @@ -218,7 +218,7 @@ void Client::AddItemBonuses(const ItemInst *inst, StatBonuses *newbon, bool isAu return; } - const EQEmu::ItemBase *item = inst->GetItem(); + const EQEmu::ItemData *item = inst->GetItem(); if (!isTribute && !inst->IsEquipable(GetBaseRace(), GetClass())) { if (item->ItemType != EQEmu::item::ItemTypeFood && item->ItemType != EQEmu::item::ItemTypeDrink) @@ -532,7 +532,7 @@ void Client::AddItemBonuses(const ItemInst *inst, StatBonuses *newbon, bool isAu } } -void Client::AdditiveWornBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAug) { +void Client::AdditiveWornBonuses(const EQEmu::ItemInstance *inst, StatBonuses* newbon, bool isAug) { /* Powerful Non-live like option allows developers to add worn effects on items that @@ -550,7 +550,7 @@ void Client::AdditiveWornBonuses(const ItemInst *inst, StatBonuses* newbon, bool if(inst->GetAugmentType()==0 && isAug == true) return; - const EQEmu::ItemBase *item = inst->GetItem(); + const EQEmu::ItemData *item = inst->GetItem(); if(!inst->IsEquipable(GetBaseRace(),GetClass())) return; @@ -580,9 +580,9 @@ void Client::CalcEdibleBonuses(StatBonuses* newbon) { { if (food && drink) break; - const ItemInst* inst = GetInv().GetItem(i); + const EQEmu::ItemInstance* inst = GetInv().GetItem(i); if (inst && inst->GetItem() && inst->IsClassCommon()) { - const EQEmu::ItemBase *item = inst->GetItem(); + const EQEmu::ItemData *item = inst->GetItem(); if (item->ItemType == EQEmu::item::ItemTypeFood && !food) food = true; else if (item->ItemType == EQEmu::item::ItemTypeDrink && !drink) @@ -596,9 +596,9 @@ void Client::CalcEdibleBonuses(StatBonuses* newbon) { { if (food && drink) break; - const ItemInst* inst = GetInv().GetItem(i); + const EQEmu::ItemInstance* inst = GetInv().GetItem(i); if (inst && inst->GetItem() && inst->IsClassCommon()) { - const EQEmu::ItemBase *item = inst->GetItem(); + const EQEmu::ItemData *item = inst->GetItem(); if (item->ItemType == EQEmu::item::ItemTypeFood && !food) food = true; else if (item->ItemType == EQEmu::item::ItemTypeDrink && !drink) @@ -3205,7 +3205,7 @@ void NPC::CalcItemBonuses(StatBonuses *newbon) if(newbon){ for (int i = 0; i < EQEmu::legacy::EQUIPMENT_SIZE; i++){ - const EQEmu::ItemBase *cur = database.GetItem(equipment[i]); + const EQEmu::ItemData *cur = database.GetItem(equipment[i]); if(cur){ //basic stats newbon->AC += cur->AC; @@ -3317,7 +3317,7 @@ bool Client::CalcItemScale(uint32 slot_x, uint32 slot_y) { if (i == EQEmu::legacy::SlotAmmo) // moved here from calling procedure to facilitate future range changes where MainAmmo may not be the last slot continue; - ItemInst* inst = m_inv.GetItem(i); + EQEmu::ItemInstance* inst = m_inv.GetItem(i); if(inst == nullptr) continue; @@ -3325,7 +3325,7 @@ bool Client::CalcItemScale(uint32 slot_x, uint32 slot_y) { // TEST CODE: test for bazaar trader crashing with charm items if (Trader) if (i >= EQEmu::legacy::GENERAL_BAGS_BEGIN && i <= EQEmu::legacy::GENERAL_BAGS_END) { - ItemInst* parent_item = m_inv.GetItem(Inventory::CalcSlotId(i)); + EQEmu::ItemInstance* parent_item = m_inv.GetItem(Inventory::CalcSlotId(i)); if (parent_item && parent_item->GetItem()->ID == 17899) // trader satchel continue; } @@ -3346,7 +3346,7 @@ bool Client::CalcItemScale(uint32 slot_x, uint32 slot_y) { //iterate all augments for (int x = AUG_INDEX_BEGIN; x < EQEmu::legacy::ITEM_COMMON_SIZE; ++x) { - ItemInst * a_inst = inst->GetAugment(x); + EQEmu::ItemInstance * a_inst = inst->GetAugment(x); if(!a_inst) continue; @@ -3410,7 +3410,7 @@ bool Client::DoItemEnterZone(uint32 slot_x, uint32 slot_y) { if (i == EQEmu::legacy::SlotAmmo) // moved here from calling procedure to facilitate future range changes where MainAmmo may not be the last slot continue; - ItemInst* inst = m_inv.GetItem(i); + EQEmu::ItemInstance* inst = m_inv.GetItem(i); if(!inst) continue; @@ -3418,7 +3418,7 @@ bool Client::DoItemEnterZone(uint32 slot_x, uint32 slot_y) { // TEST CODE: test for bazaar trader crashing with charm items if (Trader) if (i >= EQEmu::legacy::GENERAL_BAGS_BEGIN && i <= EQEmu::legacy::GENERAL_BAGS_END) { - ItemInst* parent_item = m_inv.GetItem(Inventory::CalcSlotId(i)); + EQEmu::ItemInstance* parent_item = m_inv.GetItem(Inventory::CalcSlotId(i)); if (parent_item && parent_item->GetItem()->ID == 17899) // trader satchel continue; } @@ -3449,7 +3449,7 @@ bool Client::DoItemEnterZone(uint32 slot_x, uint32 slot_y) { //iterate all augments for (int x = AUG_INDEX_BEGIN; x < EQEmu::legacy::ITEM_COMMON_SIZE; ++x) { - ItemInst *a_inst = inst->GetAugment(x); + EQEmu::ItemInstance *a_inst = inst->GetAugment(x); if(!a_inst) continue; diff --git a/zone/bot.cpp b/zone/bot.cpp index a3dd19b2d..072f99bcd 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -229,13 +229,13 @@ void Bot::SetBotSpellID(uint32 newSpellID) { } uint32 Bot::GetBotArcheryRange() { - const ItemInst *range_inst = GetBotItem(EQEmu::legacy::SlotRange); - const ItemInst *ammo_inst = GetBotItem(EQEmu::legacy::SlotAmmo); + const EQEmu::ItemInstance *range_inst = GetBotItem(EQEmu::legacy::SlotRange); + const EQEmu::ItemInstance *ammo_inst = GetBotItem(EQEmu::legacy::SlotAmmo); if (!range_inst || !ammo_inst) return 0; - const EQEmu::ItemBase *range_item = range_inst->GetItem(); - const EQEmu::ItemBase *ammo_item = ammo_inst->GetItem(); + const EQEmu::ItemData *range_item = range_inst->GetItem(); + const EQEmu::ItemData *ammo_item = ammo_inst->GetItem(); if (!range_item || !ammo_item || range_item->ItemType != EQEmu::item::ItemTypeBow || ammo_item->ItemType != EQEmu::item::ItemTypeArrow) return 0; @@ -1900,13 +1900,13 @@ void Bot::BotRangedAttack(Mob* other) { return; } - ItemInst* rangedItem = GetBotItem(EQEmu::legacy::SlotRange); - const EQEmu::ItemBase* RangeWeapon = 0; + EQEmu::ItemInstance* rangedItem = GetBotItem(EQEmu::legacy::SlotRange); + const EQEmu::ItemData* RangeWeapon = 0; if(rangedItem) RangeWeapon = rangedItem->GetItem(); - ItemInst* ammoItem = GetBotItem(EQEmu::legacy::SlotAmmo); - const EQEmu::ItemBase* Ammo = 0; + EQEmu::ItemInstance* ammoItem = GetBotItem(EQEmu::legacy::SlotAmmo); + const EQEmu::ItemData* Ammo = 0; if(ammoItem) Ammo = ammoItem->GetItem(); @@ -2015,7 +2015,7 @@ void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, EQEmu::skills: int32 min_hit = 1; int32 max_hit = ((2 * weapon_damage * GetDamageTable(skillinuse)) / 100); if(GetLevel() >= 28 && IsWarriorClass()) { - int ucDamageBonus = GetWeaponDamageBonus((const EQEmu::ItemBase*) nullptr); + int ucDamageBonus = GetWeaponDamageBonus((const EQEmu::ItemData*) nullptr); min_hit += (int) ucDamageBonus; max_hit += (int) ucDamageBonus; hate += ucDamageBonus; @@ -2056,8 +2056,8 @@ void Bot::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, EQEmu::skills: damage = -5; if (skillinuse == EQEmu::skills::SkillBash){ - const ItemInst* inst = GetBotItem(EQEmu::legacy::SlotSecondary); - const EQEmu::ItemBase* botweapon = 0; + const EQEmu::ItemInstance* inst = GetBotItem(EQEmu::legacy::SlotSecondary); + const EQEmu::ItemData* botweapon = 0; if(inst) botweapon = inst->GetItem(); @@ -2116,8 +2116,8 @@ void Bot::ApplySpecialAttackMod(EQEmu::skills::SkillType skill, int32 &dmg, int3 } if (item_slot >= EQEmu::legacy::EQUIPMENT_BEGIN){ - const ItemInst* inst = GetBotItem(item_slot); - const EQEmu::ItemBase* botweapon = 0; + const EQEmu::ItemInstance* inst = GetBotItem(item_slot); + const EQEmu::ItemData* botweapon = 0; if(inst) botweapon = inst->GetItem(); @@ -2451,7 +2451,7 @@ void Bot::AI_Process() { if(attack_timer.Check()) { Attack(GetTarget(), EQEmu::legacy::SlotPrimary); TriggerDefensiveProcs(GetTarget(), EQEmu::legacy::SlotPrimary, false); - ItemInst *wpn = GetBotItem(EQEmu::legacy::SlotPrimary); + EQEmu::ItemInstance *wpn = GetBotItem(EQEmu::legacy::SlotPrimary); TryWeaponProc(wpn, GetTarget(), EQEmu::legacy::SlotPrimary); bool tripleSuccess = false; if(BotOwner && GetTarget() && CanThisClassDoubleAttack()) { @@ -2480,7 +2480,7 @@ void Bot::AI_Process() { int32 ExtraAttackChanceBonus = (spellbonuses.ExtraAttackChance + itembonuses.ExtraAttackChance + aabonuses.ExtraAttackChance); if (GetTarget() && ExtraAttackChanceBonus) { - ItemInst *wpn = GetBotItem(EQEmu::legacy::SlotPrimary); + EQEmu::ItemInstance *wpn = GetBotItem(EQEmu::legacy::SlotPrimary); if(wpn) { if (wpn->GetItem()->IsType2HWeapon()) { if(zone->random.Int(0, 100) < ExtraAttackChanceBonus) @@ -2504,8 +2504,8 @@ void Bot::AI_Process() { //now off hand if(GetTarget() && attack_dw_timer.Check() && CanThisClassDualWield()) { - const ItemInst* instweapon = GetBotItem(EQEmu::legacy::SlotSecondary); - const EQEmu::ItemBase* weapon = 0; + const EQEmu::ItemInstance* instweapon = GetBotItem(EQEmu::legacy::SlotSecondary); + const EQEmu::ItemData* weapon = 0; //can only dual wield without a weapon if you're a monk if(instweapon || (botClass == MONK)) { if(instweapon) @@ -2527,7 +2527,7 @@ void Bot::AI_Process() { float random = zone->random.Real(0, 1); if (random < DualWieldProbability){ // Max 78% of DW Attack(GetTarget(), EQEmu::legacy::SlotSecondary); // Single attack with offhand - ItemInst *wpn = GetBotItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance *wpn = GetBotItem(EQEmu::legacy::SlotSecondary); TryWeaponProc(wpn, GetTarget(), EQEmu::legacy::SlotSecondary); if( CanThisClassDoubleAttack() && CheckBotDoubleAttack()) { if(GetTarget() && GetTarget()->GetHP() > -10) @@ -2952,8 +2952,8 @@ void Bot::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) { ns->spawn.light = m_Light.Type[EQEmu::lightsource::LightActive]; ns->spawn.helm = helmtexture; //(GetShowHelm() ? helmtexture : 0); //0xFF; ns->spawn.equip_chest2 = texture; //0xFF; - const EQEmu::ItemBase* item = 0; - const ItemInst* inst = 0; + const EQEmu::ItemData* item = 0; + const EQEmu::ItemInstance* inst = 0; uint32 spawnedbotid = 0; spawnedbotid = this->GetBotID(); for (int i = 0; i < EQEmu::textures::TexturePrimary; i++) { @@ -3224,8 +3224,8 @@ void Bot::SendBotArcheryWearChange(uint8 material_slot, uint32 material, uint32 } // Returns the item id that is in the bot inventory collection for the specified slot. -ItemInst* Bot::GetBotItem(uint32 slotID) { - ItemInst* item = m_inv.GetItem(slotID); +EQEmu::ItemInstance* Bot::GetBotItem(uint32 slotID) { + EQEmu::ItemInstance* item = m_inv.GetItem(slotID); if(item) return item; @@ -3266,7 +3266,7 @@ void Bot::BotRemoveEquipItem(int slot) { } } -void Bot::BotTradeSwapItem(Client* client, int16 lootSlot, const ItemInst* inst, const ItemInst* inst_swap, uint32 equipableSlots, std::string* errorMessage, bool swap) { +void Bot::BotTradeSwapItem(Client* client, int16 lootSlot, const EQEmu::ItemInstance* inst, const EQEmu::ItemInstance* inst_swap, uint32 equipableSlots, std::string* errorMessage, bool swap) { if(!errorMessage->empty()) return; @@ -3289,7 +3289,7 @@ void Bot::BotTradeSwapItem(Client* client, int16 lootSlot, const ItemInst* inst, } } -void Bot::BotTradeAddItem(uint32 id, const ItemInst* inst, int16 charges, uint32 equipableSlots, uint16 lootSlot, std::string* errorMessage, bool addToDb) +void Bot::BotTradeAddItem(uint32 id, const EQEmu::ItemInstance* inst, int16 charges, uint32 equipableSlots, uint16 lootSlot, std::string* errorMessage, bool addToDb) { if(addToDb) { if (!botdb.SaveItemBySlot(this, lootSlot, inst)) { @@ -3383,7 +3383,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli bool already_returned = false; Inventory& clientInventory = client->GetInv(); - const ItemInst* inst = clientInventory[i]; + const EQEmu::ItemInstance* inst = clientInventory[i]; if(inst) { items[i] = inst->GetItem()->ID; charges[i] = inst->GetCharges(); @@ -3395,10 +3395,10 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli //EQoffline: will give the items to the bots and change the bot stats if(inst && (GetBotOwner() == client->CastToMob()) && !IsEngaged()) { std::string TempErrorMessage; - const EQEmu::ItemBase* mWeaponItem = inst->GetItem(); + const EQEmu::ItemData* mWeaponItem = inst->GetItem(); bool failedLoreCheck = false; for (int m = AUG_INDEX_BEGIN; m < EQEmu::legacy::ITEM_COMMON_SIZE; ++m) { - ItemInst *itm = inst->GetAugment(m); + EQEmu::ItemInstance *itm = inst->GetAugment(m); if(itm) { if(CheckLoreConflict(itm->GetItem())) { @@ -3415,7 +3415,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli if(!failedLoreCheck && mWeaponItem && inst->IsEquipable(GetBaseRace(), GetClass()) && (GetLevel() >= mWeaponItem->ReqLevel)) { BotCanWear = true; botCanWear[i] = BotCanWear; - ItemInst* swap_item = nullptr; + EQEmu::ItemInstance* swap_item = nullptr; const char* equipped[EQEmu::legacy::EQUIPMENT_SIZE + 1] = { "Charm", "Left Ear", "Head", "Face", "Right Ear", "Neck", "Shoulders", "Arms", "Back", "Left Wrist", "Right Wrist", "Range", "Hands", "Primary Hand", "Secondary Hand", @@ -3438,7 +3438,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli } } else { - ItemInst* remove_item = GetBotItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance* remove_item = GetBotItem(EQEmu::legacy::SlotSecondary); BotTradeSwapItem(client, EQEmu::legacy::SlotSecondary, 0, remove_item, remove_item->GetItem()->Slots, &TempErrorMessage, false); } } @@ -3466,7 +3466,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli } if(success) { if (GetBotItem(EQEmu::legacy::SlotPrimary)) { - ItemInst* remove_item = GetBotItem(EQEmu::legacy::SlotPrimary); + EQEmu::ItemInstance* remove_item = GetBotItem(EQEmu::legacy::SlotPrimary); if (remove_item->GetItem()->IsType2HWeapon()) { BotTradeSwapItem(client, EQEmu::legacy::SlotPrimary, 0, remove_item, remove_item->GetItem()->Slots, &TempErrorMessage, false); } @@ -3491,7 +3491,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli swap_item = GetBotItem(j); failedLoreCheck = false; for (int k = AUG_INDEX_BEGIN; k < EQEmu::legacy::ITEM_COMMON_SIZE; ++k) { - ItemInst *itm = swap_item->GetAugment(k); + EQEmu::ItemInstance *itm = swap_item->GetAugment(k); if(itm) { if(client->CheckLoreConflict(itm->GetItem())) { @@ -3510,7 +3510,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli failedLoreCheck = true; } else { - ItemInst* remove_item = GetBotItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance* remove_item = GetBotItem(EQEmu::legacy::SlotSecondary); BotTradeSwapItem(client, EQEmu::legacy::SlotSecondary, 0, remove_item, remove_item->GetItem()->Slots, &TempErrorMessage, false); } } @@ -3537,7 +3537,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli success = true; } if (success && GetBotItem(EQEmu::legacy::SlotPrimary)) { - ItemInst* remove_item = GetBotItem(EQEmu::legacy::SlotPrimary); + EQEmu::ItemInstance* remove_item = GetBotItem(EQEmu::legacy::SlotPrimary); if (remove_item->GetItem()->IsType2HWeapon()) { BotTradeSwapItem(client, EQEmu::legacy::SlotPrimary, 0, remove_item, remove_item->GetItem()->Slots, &TempErrorMessage, false); } @@ -3574,7 +3574,7 @@ void Bot::PerformTradeWithClient(int16 beginSlotID, int16 endSlotID, Client* cli } } - const EQEmu::ItemBase* item2 = 0; + const EQEmu::ItemData* item2 = 0; for(int y = beginSlotID; y <= endSlotID; ++y) { item2 = database.GetItem(items[y]); if(item2) { @@ -3738,7 +3738,7 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b } FaceTarget(GetTarget()); - ItemInst* weapon = nullptr; + EQEmu::ItemInstance* weapon = nullptr; if (Hand == EQEmu::legacy::SlotPrimary) { weapon = GetBotItem(EQEmu::legacy::SlotPrimary); OffHandAtk(false); @@ -3813,7 +3813,7 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b if (Hand == EQEmu::legacy::SlotPrimary && GetLevel() >= 28 && IsWarriorClass()) { // Damage bonuses apply only to hits from the main hand (Hand == MainPrimary) by characters level 28 and above // who belong to a melee class. If we're here, then all of these conditions apply. - ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemBase*) nullptr); + ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemData*) nullptr); min_hit += (int) ucDamageBonus; max_hit += (int) ucDamageBonus; hate += ucDamageBonus; @@ -3822,7 +3822,7 @@ bool Bot::Attack(Mob* other, int Hand, bool FromRiposte, bool IsStrikethrough, b //Live AA - Sinister Strikes *Adds weapon damage bonus to offhand weapon. if (Hand == EQEmu::legacy::SlotSecondary) { if (aabonuses.SecondaryDmgInc || itembonuses.SecondaryDmgInc || spellbonuses.SecondaryDmgInc){ - ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemBase*) nullptr); + ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemData*) nullptr); min_hit += (int) ucDamageBonus; max_hit += (int) ucDamageBonus; hate += ucDamageBonus; @@ -4280,9 +4280,9 @@ int32 Bot::GetBotFocusEffect(BotfocusType bottype, uint16 spell_id) { //Check if item focus effect exists for the client. if (itembonuses.FocusEffects[bottype]) { - const EQEmu::ItemBase* TempItem = 0; - const EQEmu::ItemBase* UsedItem = 0; - const ItemInst* TempInst = 0; + const EQEmu::ItemData* TempItem = 0; + const EQEmu::ItemData* UsedItem = 0; + const EQEmu::ItemInstance* TempInst = 0; uint16 UsedFocusID = 0; int32 Total = 0; int32 focus_max = 0; @@ -4290,7 +4290,7 @@ int32 Bot::GetBotFocusEffect(BotfocusType bottype, uint16 spell_id) { //item focus for (int x = EQEmu::legacy::EQUIPMENT_BEGIN; x <= EQEmu::legacy::EQUIPMENT_END; x++) { TempItem = nullptr; - ItemInst* ins = GetBotItem(x); + EQEmu::ItemInstance* ins = GetBotItem(x); if (!ins) continue; @@ -4314,10 +4314,10 @@ int32 Bot::GetBotFocusEffect(BotfocusType bottype, uint16 spell_id) { } for (int y = AUG_INDEX_BEGIN; y < EQEmu::legacy::ITEM_COMMON_SIZE; ++y) { - ItemInst *aug = nullptr; + EQEmu::ItemInstance *aug = nullptr; aug = ins->GetAugment(y); if(aug) { - const EQEmu::ItemBase* TempItemAug = aug->GetItem(); + const EQEmu::ItemData* TempItemAug = aug->GetItem(); if (TempItemAug && TempItemAug->Focus.Effect > 0 && TempItemAug->Focus.Effect != SPELL_UNKNOWN) { if(rand_effectiveness) { focus_max = CalcBotFocusEffect(bottype, TempItemAug->Focus.Effect, spell_id, true); @@ -4864,8 +4864,8 @@ void Bot::DoSpecialAttackDamage(Mob *who, EQEmu::skills::SkillType skill, int32 hate = hate_override; if (skill == EQEmu::skills::SkillBash) { - const ItemInst* inst = GetBotItem(EQEmu::legacy::SlotSecondary); - const EQEmu::ItemBase* botweapon = 0; + const EQEmu::ItemInstance* inst = GetBotItem(EQEmu::legacy::SlotSecondary); + const EQEmu::ItemData* botweapon = 0; if(inst) botweapon = inst->GetItem(); @@ -4929,8 +4929,8 @@ void Bot::TryBackstab(Mob *other, int ReuseTime) { bool bIsBehind = false; bool bCanFrontalBS = false; - const ItemInst* inst = GetBotItem(EQEmu::legacy::SlotPrimary); - const EQEmu::ItemBase* botpiercer = nullptr; + const EQEmu::ItemInstance* inst = GetBotItem(EQEmu::legacy::SlotPrimary); + const EQEmu::ItemData* botpiercer = nullptr; if(inst) botpiercer = inst->GetItem(); @@ -4989,12 +4989,12 @@ void Bot::RogueBackstab(Mob* other, bool min_damage, int ReuseTime) { int32 hate = 0; int32 primaryweapondamage = 0; int32 backstab_dmg = 0; - ItemInst* botweaponInst = GetBotItem(EQEmu::legacy::SlotPrimary); + EQEmu::ItemInstance* botweaponInst = GetBotItem(EQEmu::legacy::SlotPrimary); if(botweaponInst) { primaryweapondamage = GetWeaponDamage(other, botweaponInst); backstab_dmg = botweaponInst->GetItem()->BackstabDmg; for (int i = AUG_INDEX_BEGIN; i < EQEmu::legacy::ITEM_COMMON_SIZE; ++i) { - ItemInst *aug = botweaponInst->GetAugment(i); + EQEmu::ItemInstance *aug = botweaponInst->GetAugment(i); if(aug) backstab_dmg += aug->GetItem()->BackstabDmg; } @@ -5037,7 +5037,7 @@ void Bot::RogueBackstab(Mob* other, bool min_damage, int ReuseTime) { } void Bot::RogueAssassinate(Mob* other) { - ItemInst* botweaponInst = GetBotItem(EQEmu::legacy::SlotPrimary); + EQEmu::ItemInstance* botweaponInst = GetBotItem(EQEmu::legacy::SlotPrimary); if(botweaponInst) { if(GetWeaponDamage(other, botweaponInst)) other->Damage(this, 32000, SPELL_UNKNOWN, EQEmu::skills::SkillBackstab); @@ -5366,8 +5366,8 @@ bool Bot::IsBotAttackAllowed(Mob* attacker, Mob* target, bool& hasRuleDefined) { void Bot::EquipBot(std::string* errorMessage) { GetBotItems(m_inv, errorMessage); - const ItemInst* inst = 0; - const EQEmu::ItemBase* item = 0; + const EQEmu::ItemInstance* inst = 0; + const EQEmu::ItemData* item = 0; for (int i = EQEmu::legacy::EQUIPMENT_BEGIN; i <= EQEmu::legacy::EQUIPMENT_END; ++i) { inst = GetBotItem(i); if(inst) { @@ -5494,7 +5494,7 @@ void Bot::SetAttackTimer() { float haste_mod = (GetHaste() * 0.01f); attack_timer.SetAtTrigger(4000, true); Timer* TimerToUse = nullptr; - const EQEmu::ItemBase* PrimaryWeapon = nullptr; + const EQEmu::ItemData* PrimaryWeapon = nullptr; for (int i = EQEmu::legacy::SlotRange; i <= EQEmu::legacy::SlotSecondary; i++) { if (i == EQEmu::legacy::SlotPrimary) TimerToUse = &attack_timer; @@ -5505,8 +5505,8 @@ void Bot::SetAttackTimer() { else continue; - const EQEmu::ItemBase* ItemToUse = nullptr; - ItemInst* ci = GetBotItem(i); + const EQEmu::ItemData* ItemToUse = nullptr; + EQEmu::ItemInstance* ci = GetBotItem(i); if (ci) ItemToUse = ci->GetItem(); @@ -7180,8 +7180,8 @@ void Bot::ProcessBotInspectionRequest(Bot* inspectedBot, Client* client) { insr->TargetID = inspectedBot->GetNPCTypeID(); insr->playerid = inspectedBot->GetID(); - const EQEmu::ItemBase* item = 0; - const ItemInst* inst = 0; + const EQEmu::ItemData* item = 0; + const EQEmu::ItemInstance* inst = 0; // Modded to display power source items (will only show up on SoF+ client inspect windows though.) // I don't think bots are currently coded to use them..but, you'll have to use '#bot inventory list' @@ -7232,10 +7232,10 @@ void Bot::ProcessBotInspectionRequest(Bot* inspectedBot, Client* client) { void Bot::CalcItemBonuses(StatBonuses* newbon) { - const EQEmu::ItemBase* itemtmp = 0; + const EQEmu::ItemData* itemtmp = 0; for (int i = EQEmu::legacy::EQUIPMENT_BEGIN; i <= (EQEmu::legacy::EQUIPMENT_END + 1); ++i) { - const ItemInst* item = GetBotItem((i == 22 ? 9999 : i)); + const EQEmu::ItemInstance* item = GetBotItem((i == 22 ? 9999 : i)); if(item) { AddItemBonuses(item, newbon); } @@ -7252,7 +7252,7 @@ void Bot::CalcItemBonuses(StatBonuses* newbon) newbon->EnduranceRegen = CalcEnduranceRegenCap(); } -void Bot::AddItemBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAug, bool isTribute, int rec_override) { +void Bot::AddItemBonuses(const EQEmu::ItemInstance *inst, StatBonuses* newbon, bool isAug, bool isTribute, int rec_override) { if (!inst || !inst->IsClassCommon()) { return; @@ -7263,7 +7263,7 @@ void Bot::AddItemBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAug, return; } - const EQEmu::ItemBase *item = inst->GetItem(); + const EQEmu::ItemData *item = inst->GetItem(); if(!isTribute && !inst->IsEquipable(GetBaseRace(),GetClass())) { @@ -7630,7 +7630,7 @@ void Bot::CalcBotStats(bool showtext) { } } -bool Bot::CheckLoreConflict(const EQEmu::ItemBase* item) { +bool Bot::CheckLoreConflict(const EQEmu::ItemData* item) { if (!item || !(item->LoreFlag)) return false; @@ -8036,7 +8036,7 @@ uint8 Bot::GetNumberNeedingHealedInGroup(uint8 hpr, bool includePets) { int Bot::GetRawACNoShield(int &shield_ac) { int ac = itembonuses.AC + spellbonuses.AC; shield_ac = 0; - ItemInst* inst = GetBotItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance* inst = GetBotItem(EQEmu::legacy::SlotSecondary); if(inst) { if (inst->GetItem()->ItemType == EQEmu::item::ItemTypeShield) { ac -= inst->GetItem()->AC; @@ -8053,8 +8053,8 @@ int Bot::GetRawACNoShield(int &shield_ac) { } uint32 Bot::CalcCurrentWeight() { - const EQEmu::ItemBase* TempItem = 0; - ItemInst* inst; + const EQEmu::ItemData* TempItem = 0; + EQEmu::ItemInstance* inst; uint32 Total = 0; for (int i = EQEmu::legacy::EQUIPMENT_BEGIN; i <= EQEmu::legacy::EQUIPMENT_END; ++i) { inst = GetBotItem(i); @@ -8435,7 +8435,7 @@ bool Bot::DyeArmor(int16 slot_id, uint32 rgb, bool all_flag, bool save_flag) for (uint8 i = 0; i < EQEmu::textures::TexturePrimary; ++i) { uint8 inv_slot = Inventory::CalcSlotFromMaterial(i); - ItemInst* inst = m_inv.GetItem(inv_slot); + EQEmu::ItemInstance* inst = m_inv.GetItem(inv_slot); if (!inst) continue; @@ -8448,7 +8448,7 @@ bool Bot::DyeArmor(int16 slot_id, uint32 rgb, bool all_flag, bool save_flag) if (mat_slot == EQEmu::textures::TextureInvalid || mat_slot >= EQEmu::textures::TexturePrimary) return false; - ItemInst* inst = m_inv.GetItem(slot_id); + EQEmu::ItemInstance* inst = m_inv.GetItem(slot_id); if (!inst) return false; diff --git a/zone/bot.h b/zone/bot.h index 3d45475a3..5bafe1caa 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -260,7 +260,7 @@ public: virtual int32 CheckAggroAmount(uint16 spellid); virtual void CalcBonuses(); void CalcItemBonuses(StatBonuses* newbon); - void AddItemBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAug = false, bool isTribute = false, int rec_override = 0); + void AddItemBonuses(const EQEmu::ItemInstance *inst, StatBonuses* newbon, bool isAug = false, bool isTribute = false, int rec_override = 0); int CalcRecommendedLevelBonus(uint8 level, uint8 reclevel, int basestat); virtual void MakePet(uint16 spell_id, const char* pettype, const char *petname = nullptr); virtual FACTION_VALUE GetReverseFactionCon(Mob* iOther); @@ -382,10 +382,10 @@ public: virtual bool DoCastSpell(uint16 spell_id, uint16 target_id, EQEmu::CastingSlot slot = EQEmu::CastingSlot::Item, int32 casttime = -1, int32 mana_cost = -1, uint32* oSpellWillFinish = 0, uint32 item_slot = 0xFFFFFFFF, uint32 aa_id = 0); // Bot Equipment & Inventory Class Methods - void BotTradeSwapItem(Client* client, int16 lootSlot, const ItemInst* inst, const ItemInst* inst_swap, uint32 equipableSlots, std::string* errorMessage, bool swap = true); - void BotTradeAddItem(uint32 id, const ItemInst* inst, int16 charges, uint32 equipableSlots, uint16 lootSlot, std::string* errorMessage, bool addToDb = true); + void BotTradeSwapItem(Client* client, int16 lootSlot, const EQEmu::ItemInstance* inst, const EQEmu::ItemInstance* inst_swap, uint32 equipableSlots, std::string* errorMessage, bool swap = true); + void BotTradeAddItem(uint32 id, const EQEmu::ItemInstance* inst, int16 charges, uint32 equipableSlots, uint16 lootSlot, std::string* errorMessage, bool addToDb = true); void EquipBot(std::string* errorMessage); - bool CheckLoreConflict(const EQEmu::ItemBase* item); + bool CheckLoreConflict(const EQEmu::ItemData* item); virtual void UpdateEquipmentLight() { m_Light.Type[EQEmu::lightsource::LightEquipment] = m_inv.FindBrightestLightType(); m_Light.Level[EQEmu::lightsource::LightEquipment] = EQEmu::lightsource::TypeToLevel(m_Light.Type[EQEmu::lightsource::LightEquipment]); } // Static Class Methods @@ -457,7 +457,7 @@ public: uint32 GetBotSpellID() { return npc_spells_id; } Mob* GetBotOwner() { return this->_botOwner; } uint32 GetBotArcheryRange(); - ItemInst* GetBotItem(uint32 slotID); + EQEmu::ItemInstance* GetBotItem(uint32 slotID); virtual bool GetSpawnStatus() { return _spawnStatus; } uint8 GetPetChooserID() { return _petChooserID; } bool IsPetChooser() { return _petChooser; } diff --git a/zone/bot_command.cpp b/zone/bot_command.cpp index 6b07bbdda..398a0d6b0 100644 --- a/zone/bot_command.cpp +++ b/zone/bot_command.cpp @@ -2402,7 +2402,7 @@ namespace ActionableBots mod_skill_value = base_skill_value; for (int16 index = EQEmu::legacy::EQUIPMENT_BEGIN; index <= EQEmu::legacy::EQUIPMENT_END; ++index) { - const ItemInst* indexed_item = bot_iter->GetBotItem(index); + const EQEmu::ItemInstance* indexed_item = bot_iter->GetBotItem(index); if (indexed_item && indexed_item->GetItem()->SkillModType == skill_type) mod_skill_value += (base_skill_value * (((float)indexed_item->GetItem()->SkillModValue) / 100.0f)); } @@ -7062,8 +7062,8 @@ void bot_subcommand_inventory_list(Client *c, const Seperator *sep) return; } - const ItemInst* inst = nullptr; - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemInstance* inst = nullptr; + const EQEmu::ItemData* item = nullptr; bool is2Hweapon = false; std::string item_link; @@ -7132,8 +7132,8 @@ void bot_subcommand_inventory_remove(Client *c, const Seperator *sep) return; } - const EQEmu::ItemBase* itm = nullptr; - const ItemInst* itminst = my_bot->GetBotItem(slotId); + const EQEmu::ItemData* itm = nullptr; + const EQEmu::ItemInstance* itminst = my_bot->GetBotItem(slotId); if (itminst) itm = itminst->GetItem(); @@ -7146,7 +7146,7 @@ void bot_subcommand_inventory_remove(Client *c, const Seperator *sep) if (!itminst) break; - ItemInst *itma = itminst->GetAugment(m); + EQEmu::ItemInstance *itma = itminst->GetAugment(m); if (!itma) continue; if (!c->CheckLoreConflict(itma->GetItem())) @@ -7235,8 +7235,8 @@ void bot_subcommand_inventory_window(Client *c, const Seperator *sep) //linker.SetLinkType(linker.linkItemInst); for (int i = EQEmu::legacy::EQUIPMENT_BEGIN; i <= (EQEmu::legacy::EQUIPMENT_END + 1); ++i) { - const EQEmu::ItemBase* item = nullptr; - const ItemInst* inst = my_bot->CastToBot()->GetBotItem(i == 22 ? EQEmu::legacy::SlotPowerSource : i); + const EQEmu::ItemData* item = nullptr; + const EQEmu::ItemInstance* inst = my_bot->CastToBot()->GetBotItem(i == 22 ? EQEmu::legacy::SlotPowerSource : i); if (inst) item = inst->GetItem(); diff --git a/zone/bot_database.cpp b/zone/bot_database.cpp index 182f4e09f..8e4ddc203 100644 --- a/zone/bot_database.cpp +++ b/zone/bot_database.cpp @@ -1064,7 +1064,7 @@ bool BotDatabase::LoadItems(const uint32 bot_id, Inventory& inventory_inst) uint32 item_id = atoi(row[1]); uint16 item_charges = (uint16)atoi(row[2]); - ItemInst* item_inst = database.CreateItem( + EQEmu::ItemInstance* item_inst = database.CreateItem( item_id, item_charges, (uint32)atoul(row[9]), @@ -1177,7 +1177,7 @@ bool BotDatabase::LoadItemBySlot(const uint32 bot_id, const uint32 slot_id, uint return true; } -bool BotDatabase::SaveItemBySlot(Bot* bot_inst, const uint32 slot_id, const ItemInst* item_inst) +bool BotDatabase::SaveItemBySlot(Bot* bot_inst, const uint32 slot_id, const EQEmu::ItemInstance* item_inst) { if (!bot_inst || !bot_inst->GetBotID() || (slot_id > EQEmu::legacy::EQUIPMENT_END && slot_id != EQEmu::legacy::SlotPowerSource)) return false; diff --git a/zone/bot_database.h b/zone/bot_database.h index 5ade661c2..3eaaf21d9 100644 --- a/zone/bot_database.h +++ b/zone/bot_database.h @@ -31,10 +31,14 @@ class Bot; -class ItemInst; class Inventory; struct BotsAvailableList; +namespace EQEmu +{ + class ItemInstance; +} + class BotDatabase : public DBcore { @@ -91,7 +95,7 @@ public: bool LoadItemBySlot(Bot* bot_inst); bool LoadItemBySlot(const uint32 bot_id, const uint32 slot_id, uint32& item_id); - bool SaveItemBySlot(Bot* bot_inst, const uint32 slot_id, const ItemInst* item_inst); + bool SaveItemBySlot(Bot* bot_inst, const uint32 slot_id, const EQEmu::ItemInstance* item_inst); bool DeleteItemBySlot(const uint32 bot_id, const uint32 slot_id); bool LoadEquipmentColor(const uint32 bot_id, const uint8 material_slot_id, uint32& rgb); diff --git a/zone/client.cpp b/zone/client.cpp index 3a7b60eb5..c0b8078bb 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -2017,7 +2017,7 @@ void Client::ReadBook(BookRequest_Struct *book) { out->window = book->window; if (ClientVersion() >= EQEmu::versions::ClientVersion::SoF) { - const ItemInst *inst = m_inv[book->invslot]; + const EQEmu::ItemInstance *inst = m_inv[book->invslot]; if(inst) out->type = inst->GetItem()->Book; else @@ -2549,7 +2549,7 @@ void Client::SetFeigned(bool in_feigned) { feigned=in_feigned; } -void Client::LogMerchant(Client* player, Mob* merchant, uint32 quantity, uint32 price, const EQEmu::ItemBase* item, bool buying) +void Client::LogMerchant(Client* player, Mob* merchant, uint32 quantity, uint32 price, const EQEmu::ItemData* item, bool buying) { if(!player || !merchant || !item) return; @@ -2796,7 +2796,7 @@ bool Client::BindWound(Mob *bindmob, bool start, bool fail) } void Client::SetMaterial(int16 in_slot, uint32 item_id) { - const EQEmu::ItemBase* item = database.GetItem(item_id); + const EQEmu::ItemData* item = database.GetItem(item_id); if (item && item->IsClassCommon()) { uint8 matslot = Inventory::CalcMaterialFromSlot(in_slot); @@ -3839,7 +3839,7 @@ void Client::SendOPTranslocateConfirm(Mob *Caster, uint16 SpellID) { return; } -void Client::SendPickPocketResponse(Mob *from, uint32 amt, int type, const EQEmu::ItemBase* item){ +void Client::SendPickPocketResponse(Mob *from, uint32 amt, int type, const EQEmu::ItemData* item){ auto outapp = new EQApplicationPacket(OP_PickPocket, sizeof(sPickPocket_Struct)); sPickPocket_Struct *pick_out = (sPickPocket_Struct *)outapp->pBuffer; pick_out->coin = amt; @@ -4013,7 +4013,7 @@ bool Client::KeyRingCheck(uint32 item_id) void Client::KeyRingList() { Message(4,"Keys on Keyring:"); - const EQEmu::ItemBase *item = 0; + const EQEmu::ItemData *item = 0; for (auto iter = keyring.begin(); iter != keyring.end(); ++iter) { if ((item = database.GetItem(*iter))!=nullptr) { Message(4,item->Name); @@ -5440,7 +5440,7 @@ bool Client::TryReward(uint32 claim_id) uint32 free_slot = 0xFFFFFFFF; for (int i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; ++i) { - ItemInst *item = GetInv().GetItem(i); + EQEmu::ItemInstance *item = GetInv().GetItem(i); if (!item) { free_slot = i; break; @@ -5486,7 +5486,7 @@ bool Client::TryReward(uint32 claim_id) } auto &ivr = (*iter); - ItemInst *claim = database.CreateItem(ivr.items[0].item_id, ivr.items[0].charges); + EQEmu::ItemInstance *claim = database.CreateItem(ivr.items[0].item_id, ivr.items[0].charges); if (!claim) { Save(); return true; @@ -5496,7 +5496,7 @@ bool Client::TryReward(uint32 claim_id) for (int y = 1; y < 8; y++) if (ivr.items[y].item_id && claim->GetItem()->ItemClass == 1) { - ItemInst *item_temp = database.CreateItem(ivr.items[y].item_id, ivr.items[y].charges); + EQEmu::ItemInstance *item_temp = database.CreateItem(ivr.items[y].item_id, ivr.items[y].charges); if (item_temp) { if (CheckLoreConflict(item_temp->GetItem())) { lore_conflict = true; @@ -5756,8 +5756,8 @@ void Client::ProcessInspectRequest(Client* requestee, Client* requester) { insr->TargetID = requester->GetID(); insr->playerid = requestee->GetID(); - const EQEmu::ItemBase* item = nullptr; - const ItemInst* inst = nullptr; + const EQEmu::ItemData* item = nullptr; + const EQEmu::ItemInstance* inst = nullptr; int ornamentationAugtype = RuleI(Character, OrnamentationAugmentType); for(int16 L = 0; L <= 20; L++) { inst = requestee->GetInv().GetItem(L); @@ -5768,7 +5768,7 @@ void Client::ProcessInspectRequest(Client* requestee, Client* requester) { strcpy(insr->itemnames[L], item->Name); if (inst && inst->GetOrnamentationAug(ornamentationAugtype)) { - const EQEmu::ItemBase *aug_item = inst->GetOrnamentationAug(ornamentationAugtype)->GetItem(); + const EQEmu::ItemData *aug_item = inst->GetOrnamentationAug(ornamentationAugtype)->GetItem(); insr->itemicons[L] = aug_item->Icon; } else if (inst && inst->GetOrnamentationIcon()) @@ -6949,7 +6949,7 @@ void Client::SendAltCurrencies() { uint32 i = 0; auto iter = zone->AlternateCurrencies.begin(); while(iter != zone->AlternateCurrencies.end()) { - const EQEmu::ItemBase* item = database.GetItem((*iter).item_id); + const EQEmu::ItemData* item = database.GetItem((*iter).item_id); altc->entries[i].currency_number = (*iter).id; altc->entries[i].unknown00 = 1; altc->entries[i].currency_number2 = (*iter).id; @@ -7604,7 +7604,7 @@ void Client::DuplicateLoreMessage(uint32 ItemID) return; } - const EQEmu::ItemBase *item = database.GetItem(ItemID); + const EQEmu::ItemData *item = database.GetItem(ItemID); if(!item) return; @@ -8075,7 +8075,7 @@ void Client::TickItemCheck() void Client::TryItemTick(int slot) { int iid = 0; - const ItemInst* inst = m_inv[slot]; + const EQEmu::ItemInstance* inst = m_inv[slot]; if(inst == 0) { return; } iid = inst->GetID(); @@ -8084,7 +8084,7 @@ void Client::TryItemTick(int slot) { if (GetLevel() >= zone->tick_items[iid].level && zone->random.Int(0, 100) >= (100 - zone->tick_items[iid].chance) && (zone->tick_items[iid].bagslot || slot <= EQEmu::legacy::EQUIPMENT_END)) { - ItemInst* e_inst = (ItemInst*)inst; + EQEmu::ItemInstance* e_inst = (EQEmu::ItemInstance*)inst; parse->EventItem(EVENT_ITEM_TICK, this, e_inst, nullptr, "", slot); } } @@ -8094,7 +8094,7 @@ void Client::TryItemTick(int slot) for (int x = AUG_INDEX_BEGIN; x < EQEmu::legacy::ITEM_COMMON_SIZE; ++x) { - ItemInst * a_inst = inst->GetAugment(x); + EQEmu::ItemInstance * a_inst = inst->GetAugment(x); if(!a_inst) { continue; } iid = a_inst->GetID(); @@ -8103,7 +8103,7 @@ void Client::TryItemTick(int slot) { if( GetLevel() >= zone->tick_items[iid].level && zone->random.Int(0, 100) >= (100 - zone->tick_items[iid].chance) ) { - ItemInst* e_inst = (ItemInst*)a_inst; + EQEmu::ItemInstance* e_inst = (EQEmu::ItemInstance*)a_inst; parse->EventItem(EVENT_ITEM_TICK, this, e_inst, nullptr, "", slot); } } @@ -8131,7 +8131,7 @@ void Client::ItemTimerCheck() void Client::TryItemTimer(int slot) { - ItemInst* inst = m_inv.GetItem(slot); + EQEmu::ItemInstance* inst = m_inv.GetItem(slot); if(!inst) { return; } @@ -8151,7 +8151,7 @@ void Client::TryItemTimer(int slot) for (int x = AUG_INDEX_BEGIN; x < EQEmu::legacy::ITEM_COMMON_SIZE; ++x) { - ItemInst * a_inst = inst->GetAugment(x); + EQEmu::ItemInstance * a_inst = inst->GetAugment(x); if(!a_inst) { continue; } @@ -8167,7 +8167,7 @@ void Client::TryItemTimer(int slot) } } -void Client::SendItemScale(ItemInst *inst) { +void Client::SendItemScale(EQEmu::ItemInstance *inst) { int slot = m_inv.GetSlotByItemInst(inst); if(slot != -1) { inst->ScaleItem(); @@ -8321,7 +8321,7 @@ void Client::SetConsumption(int32 in_hunger, int32 in_thirst) safe_delete(outapp); } -void Client::Consume(const EQEmu::ItemBase *item, uint8 type, int16 slot, bool auto_consume) +void Client::Consume(const EQEmu::ItemData *item, uint8 type, int16 slot, bool auto_consume) { if(!item) { return; } @@ -8436,7 +8436,7 @@ void Client::ShowNumHits() int Client::GetQuiverHaste(int delay) { - const ItemInst *pi = nullptr; + const EQEmu::ItemInstance *pi = nullptr; for (int r = EQEmu::legacy::GENERAL_BEGIN; r <= EQEmu::legacy::GENERAL_END; r++) { pi = GetInv().GetItem(r); if (pi && pi->IsClassBag() && pi->GetItem()->BagType == EQEmu::item::BagTypeQuiver && diff --git a/zone/client.h b/zone/client.h index 75ce82bf5..cc5abb88d 100644 --- a/zone/client.h +++ b/zone/client.h @@ -31,7 +31,7 @@ enum WaterRegionType : int; namespace EQEmu { - struct ItemBase; + struct ItemData; } #include "../common/timer.h" @@ -250,7 +250,7 @@ public: void KeyRingList(); virtual bool IsClient() const { return true; } void CompleteConnect(); - bool TryStacking(ItemInst* item, uint8 type = ItemPacketTrade, bool try_worn = true, bool try_cursor = true); + bool TryStacking(EQEmu::ItemInstance* item, uint8 type = ItemPacketTrade, bool try_worn = true, bool try_cursor = true); void SendTraderPacket(Client* trader, uint32 Unknown72 = 51); void SendBuyerPacket(Client* Buyer); GetItems_Struct* GetTraderItems(); @@ -273,7 +273,7 @@ public: void SendTraderItem(uint32 item_id,uint16 quantity); uint16 FindTraderItem(int32 SerialNumber,uint16 Quantity); uint32 FindTraderItemSerialNumber(int32 ItemID); - ItemInst* FindTraderItemBySerialNumber(int32 SerialNumber); + EQEmu::ItemInstance* FindTraderItemBySerialNumber(int32 SerialNumber); void FindAndNukeTraderItem(int32 item_id,uint16 quantity,Client* customer,uint16 traderslot); void NukeTraderItem(uint16 slot, int16 charges, uint16 quantity, Client* customer, uint16 traderslot, int32 uniqueid, int32 itemid = 0); void ReturnTraderReq(const EQApplicationPacket* app,int16 traderitemcharges, uint32 itemid = 0); @@ -294,7 +294,7 @@ public: void FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho); virtual bool Process(); - void LogMerchant(Client* player, Mob* merchant, uint32 quantity, uint32 price, const EQEmu::ItemBase* item, bool buying); + void LogMerchant(Client* player, Mob* merchant, uint32 quantity, uint32 price, const EQEmu::ItemData* item, bool buying); void SendPacketQueue(bool Block = true); void QueuePacket(const EQApplicationPacket* app, bool ack_req = true, CLIENT_CONN_STATUS = CLIENT_CONNECTINGALL, eqFilterType filter=FilterNone); void FastQueuePacket(EQApplicationPacket** app, bool ack_req = true, CLIENT_CONN_STATUS = CLIENT_CONNECTINGALL); @@ -308,7 +308,7 @@ public: void LearnRecipe(uint32 recipeID); bool CanIncreaseTradeskill(EQEmu::skills::SkillType tradeskill); - EQApplicationPacket* ReturnItemPacket(int16 slot_id, const ItemInst* inst, ItemPacketType packet_type); + EQApplicationPacket* ReturnItemPacket(int16 slot_id, const EQEmu::ItemInstance* inst, ItemPacketType packet_type); bool GetRevoked() const { return revoked; } void SetRevoked(bool rev) { revoked = rev; } @@ -403,7 +403,7 @@ public: inline uint8 GetLanguageSkill(uint16 n) const { return m_pp.languages[n]; } - void SendPickPocketResponse(Mob *from, uint32 amt, int type, const EQEmu::ItemBase* item = nullptr); + void SendPickPocketResponse(Mob *from, uint32 amt, int type, const EQEmu::ItemData* item = nullptr); inline const char* GetLastName() const { return lastname; } @@ -601,7 +601,7 @@ public: void AssignToInstance(uint16 instance_id); void RemoveFromInstance(uint16 instance_id); void WhoAll(); - bool CheckLoreConflict(const EQEmu::ItemBase* item); + bool CheckLoreConflict(const EQEmu::ItemData* item); void ChangeLastName(const char* in_lastname); void GetGroupAAs(GroupLeadershipAA_Struct *into) const; void GetRaidAAs(RaidLeadershipAA_Struct *into) const; @@ -813,25 +813,25 @@ public: void Undye(); int32 GetItemIDAt(int16 slot_id); int32 GetAugmentIDAt(int16 slot_id, uint8 augslot); - bool PutItemInInventory(int16 slot_id, const ItemInst& inst, bool client_update = false); - bool PushItemOnCursor(const ItemInst& inst, bool client_update = false); + bool PutItemInInventory(int16 slot_id, const EQEmu::ItemInstance& inst, bool client_update = false); + bool PushItemOnCursor(const EQEmu::ItemInstance& inst, bool client_update = false); void SendCursorBuffer(); void DeleteItemInInventory(int16 slot_id, int8 quantity = 0, bool client_update = false, bool update_db = true); bool SwapItem(MoveItem_Struct* move_in); void SwapItemResync(MoveItem_Struct* move_slots); void QSSwapItemAuditor(MoveItem_Struct* move_in, bool postaction_call = false); - void PutLootInInventory(int16 slot_id, const ItemInst &inst, ServerLootItem_Struct** bag_item_data = 0); - bool AutoPutLootInInventory(ItemInst& inst, bool try_worn = false, bool try_cursor = true, ServerLootItem_Struct** bag_item_data = 0); + void PutLootInInventory(int16 slot_id, const EQEmu::ItemInstance &inst, ServerLootItem_Struct** bag_item_data = 0); + bool AutoPutLootInInventory(EQEmu::ItemInstance& inst, bool try_worn = false, bool try_cursor = true, ServerLootItem_Struct** bag_item_data = 0); bool SummonItem(uint32 item_id, int16 charges = -1, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, bool attuned = false, uint16 to_slot = EQEmu::legacy::SlotCursor, uint32 ornament_icon = 0, uint32 ornament_idfile = 0, uint32 ornament_hero_model = 0); void SetStats(uint8 type,int16 set_val); void IncStats(uint8 type,int16 increase_val); void DropItem(int16 slot_id); - int GetItemLinkHash(const ItemInst* inst); // move to ItemBase..or make use of the pre-calculated database field + int GetItemLinkHash(const EQEmu::ItemInstance* inst); // move to ItemData..or make use of the pre-calculated database field - void SendItemLink(const ItemInst* inst, bool sendtoall=false); - void SendLootItemInPacket(const ItemInst* inst, int16 slot_id); - void SendItemPacket(int16 slot_id, const ItemInst* inst, ItemPacketType packet_type); + void SendItemLink(const EQEmu::ItemInstance* inst, bool sendtoall=false); + void SendLootItemInPacket(const EQEmu::ItemInstance* inst, int16 slot_id); + void SendItemPacket(int16 slot_id, const EQEmu::ItemInstance* inst, ItemPacketType packet_type); bool IsValidSlot(uint32 slot); bool IsBankSlot(uint32 slot); @@ -887,7 +887,7 @@ public: //Calculate vendor price modifier based on CHA: (reverse==selling) float CalcPriceMod(Mob* other = 0, bool reverse = false); void ResetTrade(); - void DropInst(const ItemInst* inst); + void DropInst(const EQEmu::ItemInstance* inst); bool TrainDiscipline(uint32 itemid); void TrainDiscBySpellID(int32 spell_id); int GetDiscSlotBySpellID(int32 spellid); @@ -965,7 +965,7 @@ public: inline void UpdateTasksForItem(ActivityType Type, int ItemID, int Count=1) { if(taskstate) taskstate->UpdateTasksForItem(this, Type, ItemID, Count); } inline void UpdateTasksOnExplore(int ExploreID) { if(taskstate) taskstate->UpdateTasksOnExplore(this, ExploreID); } inline bool UpdateTasksOnSpeakWith(int NPCTypeID) { if(taskstate) return taskstate->UpdateTasksOnSpeakWith(this, NPCTypeID); else return false; } - inline bool UpdateTasksOnDeliver(std::list& Items, int Cash, int NPCTypeID) { if (taskstate) return taskstate->UpdateTasksOnDeliver(this, Items, Cash, NPCTypeID); else return false; } + inline bool UpdateTasksOnDeliver(std::list& Items, int Cash, int NPCTypeID) { if (taskstate) return taskstate->UpdateTasksOnDeliver(this, Items, Cash, NPCTypeID); else return false; } inline void TaskSetSelector(Mob *mob, int TaskSetID) { if(taskmanager) taskmanager->TaskSetSelector(this, taskstate, mob, TaskSetID); } inline void EnableTask(int TaskCount, int *TaskList) { if(taskstate) taskstate->EnableTask(CharacterID(), TaskCount, TaskList); } inline void DisableTask(int TaskCount, int *TaskList) { if(taskstate) taskstate->DisableTask(CharacterID(), TaskCount, TaskList); } @@ -1080,7 +1080,7 @@ public: inline bool GetPendingGuildInvitation() { return PendingGuildInvitation; } void LocateCorpse(); void SendTargetCommand(uint32 EntityID); - bool MoveItemToInventory(ItemInst *BInst, bool UpdateClient = false); + bool MoveItemToInventory(EQEmu::ItemInstance *BInst, bool UpdateClient = false); void HandleRespawnFromHover(uint32 Option); bool IsHoveringForRespawn() { return RespawnFromHoverTimer.Enabled(); } std::list respawn_options; @@ -1173,7 +1173,7 @@ public: void TryItemTick(int slot); void ItemTimerCheck(); void TryItemTimer(int slot); - void SendItemScale(ItemInst *inst); + void SendItemScale(EQEmu::ItemInstance *inst); int32 GetActSTR() { return( std::min(GetMaxSTR(), GetSTR()) ); } int32 GetActSTA() { return( std::min(GetMaxSTA(), GetSTA()) ); } @@ -1186,10 +1186,10 @@ public: void SetAccountFlag(std::string flag, std::string val); std::string GetAccountFlag(std::string flag); float GetDamageMultiplier(EQEmu::skills::SkillType how_long_has_this_been_missing); - void Consume(const EQEmu::ItemBase *item, uint8 type, int16 slot, bool auto_consume); + void Consume(const EQEmu::ItemData *item, uint8 type, int16 slot, bool auto_consume); void PlayMP3(const char* fname); void ExpeditionSay(const char *str, int ExpID); - int mod_client_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const ItemInst* weapon, Mob* other); + int mod_client_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const EQEmu::ItemInstance* weapon, Mob* other); bool mod_client_message(char* message, uint8 chan_num); bool mod_can_increase_skill(EQEmu::skills::SkillType skillid, Mob* against_who); int16 mod_increase_skill_chance(int16 chance, Mob* against_who); @@ -1201,16 +1201,16 @@ public: int16 mod_pet_power(int16 act_power, uint16 spell_id); float mod_tradeskill_chance(float chance, DBTradeskillRecipe_Struct *spec); float mod_tradeskill_skillup(float chance_stage2); - int32 mod_tribute_item_value(int32 pts, const ItemInst* item); + int32 mod_tribute_item_value(int32 pts, const EQEmu::ItemInstance* item); void mod_client_death_npc(Mob* killerMob); void mod_client_death_duel(Mob* killerMob); void mod_client_death_env(); int32 mod_client_xp(int32 in_exp, NPC *npc); uint32 mod_client_xp_for_level(uint32 xp, uint16 check_level); int mod_client_haste_cap(int cap); - int mod_consume(EQEmu::ItemBase *item, EQEmu::item::ItemType type, int change); - int mod_food_value(const EQEmu::ItemBase *item, int change); - int mod_drink_value(const EQEmu::ItemBase *item, int change); + int mod_consume(EQEmu::ItemData *item, EQEmu::item::ItemType type, int change); + int mod_food_value(const EQEmu::ItemData *item, int change); + int mod_drink_value(const EQEmu::ItemData *item, int change); void SetEngagedRaidTarget(bool value) { EngagedRaidTarget = value; } bool GetEngagedRaidTarget() const { return EngagedRaidTarget; } @@ -1244,8 +1244,8 @@ public: protected: friend class Mob; void CalcItemBonuses(StatBonuses* newbon); - void AddItemBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAug = false, bool isTribute = false, int rec_override = 0, bool ammo_slot_item = false); - void AdditiveWornBonuses(const ItemInst *inst, StatBonuses* newbon, bool isAug = false); + void AddItemBonuses(const EQEmu::ItemInstance *inst, StatBonuses* newbon, bool isAug = false, bool isTribute = false, int rec_override = 0, bool ammo_slot_item = false); + void AdditiveWornBonuses(const EQEmu::ItemInstance *inst, StatBonuses* newbon, bool isAug = false); int CalcRecommendedLevelBonus(uint8 level, uint8 reclevel, int basestat); void CalcEdibleBonuses(StatBonuses* newbon); void ProcessItemCaps(); @@ -1286,7 +1286,7 @@ private: void OPRezzAnswer(uint32 Action, uint32 SpellID, uint16 ZoneID, uint16 InstanceID, float x, float y, float z); void OPMemorizeSpell(const EQApplicationPacket *app); void OPMoveCoin(const EQApplicationPacket* app); - void MoveItemCharges(ItemInst &from, int16 to_slot, uint8 type); + void MoveItemCharges(EQEmu::ItemInstance &from, int16 to_slot, uint8 type); void OPGMTraining(const EQApplicationPacket *app); void OPGMEndTraining(const EQApplicationPacket *app); void OPGMTrainSkill(const EQApplicationPacket *app); @@ -1561,8 +1561,8 @@ private: bool interrogateinv_flag; // used to minimize log spamming by players - void InterrogateInventory_(bool errorcheck, Client* requester, int16 head, int16 index, const ItemInst* inst, const ItemInst* parent, bool log, bool silent, bool &error, int depth); - bool InterrogateInventory_error(int16 head, int16 index, const ItemInst* inst, const ItemInst* parent, int depth); + void InterrogateInventory_(bool errorcheck, Client* requester, int16 head, int16 index, const EQEmu::ItemInstance* inst, const EQEmu::ItemInstance* parent, bool log, bool silent, bool &error, int depth); + bool InterrogateInventory_error(int16 head, int16 index, const EQEmu::ItemInstance* inst, const EQEmu::ItemInstance* parent, int depth); }; #endif diff --git a/zone/client_mods.cpp b/zone/client_mods.cpp index c57fc340f..69f1444f1 100644 --- a/zone/client_mods.cpp +++ b/zone/client_mods.cpp @@ -486,7 +486,7 @@ int32 Client::GetRawItemAC() int32 Total = 0; // this skips MainAmmo..add an '=' conditional if that slot is required (original behavior) for (int16 slot_id = EQEmu::legacy::EQUIPMENT_BEGIN; slot_id < EQEmu::legacy::EQUIPMENT_END; slot_id++) { - const ItemInst* inst = m_inv[slot_id]; + const EQEmu::ItemInstance* inst = m_inv[slot_id]; if (inst && inst->IsClassCommon()) { Total += inst->GetItem()->AC; } @@ -1316,8 +1316,8 @@ int32 Client::CalcManaRegenCap() uint32 Client::CalcCurrentWeight() { - const EQEmu::ItemBase* TempItem = 0; - ItemInst* ins; + const EQEmu::ItemData* TempItem = 0; + EQEmu::ItemInstance* ins; uint32 Total = 0; int x; for (x = EQEmu::legacy::EQUIPMENT_BEGIN; x <= EQEmu::legacy::SlotCursor; x++) { // include cursor or not? @@ -1350,7 +1350,7 @@ uint32 Client::CalcCurrentWeight() bagslot += 1; } } - ItemInst* baginst = GetInv().GetItem(bagslot); + EQEmu::ItemInstance* baginst = GetInv().GetItem(bagslot); if (baginst && baginst->GetItem() && baginst->IsClassBag()) { reduction = baginst->GetItem()->BagWR; } @@ -2219,7 +2219,7 @@ int Client::GetRawACNoShield(int &shield_ac) const { int ac = itembonuses.AC + spellbonuses.AC + aabonuses.AC; shield_ac = 0; - const ItemInst *inst = m_inv.GetItem(EQEmu::legacy::SlotSecondary); + const EQEmu::ItemInstance *inst = m_inv.GetItem(EQEmu::legacy::SlotSecondary); if (inst) { if (inst->GetItem()->ItemType == EQEmu::item::ItemTypeShield) { ac -= inst->GetItem()->AC; diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 6fc45fee0..a8c96e146 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -1690,7 +1690,7 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) /* First item cursor is sent in bulk inventory packet */ if (iter == m_inv.cursor_cbegin()) continue; - const ItemInst *inst = *iter; + const EQEmu::ItemInstance *inst = *iter; SendItemPacket(EQEmu::legacy::SlotCursor, inst, ItemPacketLimbo); } } @@ -1883,7 +1883,7 @@ void Client::Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket *app) merchantid = tmp->CastToNPC()->MerchantType; - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; bool found = false; std::list merlist = zone->merchanttable[merchantid]; std::list::const_iterator itr; @@ -2026,7 +2026,7 @@ void Client::Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket *app) if (item->MaxCharges != 0) charges = item->MaxCharges; - ItemInst *inst = database.CreateItem(item, charges); + EQEmu::ItemInstance *inst = database.CreateItem(item, charges); if (!AutoPutLootInInventory(*inst, true, true)) { PutLootInInventory(EQEmu::legacy::SlotCursor, *inst); @@ -2059,7 +2059,7 @@ void Client::Handle_OP_AdventureMerchantRequest(const EQApplicationPacket *app) merchantid = tmp->CastToNPC()->MerchantType; tmp->CastToNPC()->FaceTarget(this->CastToMob()); - const EQEmu::ItemBase *item = 0; + const EQEmu::ItemData *item = 0; std::list merlist = zone->merchanttable[merchantid]; std::list::const_iterator itr; for (itr = merlist.begin(); itr != merlist.end() && count<255; ++itr){ @@ -2158,8 +2158,8 @@ void Client::Handle_OP_AdventureMerchantSell(const EQApplicationPacket *app) return; } - const EQEmu::ItemBase* item = database.GetItem(itemid); - ItemInst* inst = GetInv().GetItem(ams_in->slot); + const EQEmu::ItemData* item = database.GetItem(itemid); + EQEmu::ItemInstance* inst = GetInv().GetItem(ams_in->slot); if (!item || !inst){ Message(13, "You seemed to have misplaced that item..."); return; @@ -2435,7 +2435,7 @@ void Client::Handle_OP_AltCurrencyMerchantRequest(const EQApplicationPacket *app ss << alt_cur_id << "|1|" << alt_cur_id; uint32 count = 0; uint32 merchant_id = tar->MerchantType; - const EQEmu::ItemBase *item = nullptr; + const EQEmu::ItemData *item = nullptr; std::list merlist = zone->merchanttable[merchant_id]; std::list::const_iterator itr; @@ -2495,7 +2495,7 @@ void Client::Handle_OP_AltCurrencyPurchase(const EQApplicationPacket *app) return; } - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; uint32 cost = 0; uint32 current_currency = GetAlternateCurrencyValue(alt_cur_id); uint32 merchant_id = tar->MerchantType; @@ -2551,7 +2551,7 @@ void Client::Handle_OP_AltCurrencyPurchase(const EQApplicationPacket *app) if (item->MaxCharges != 0) charges = item->MaxCharges; - ItemInst *inst = database.CreateItem(item, charges); + EQEmu::ItemInstance *inst = database.CreateItem(item, charges); if (!AutoPutLootInInventory(*inst, true, true)) { PutLootInInventory(EQEmu::legacy::SlotCursor, *inst); @@ -2635,7 +2635,7 @@ void Client::Handle_OP_AltCurrencySell(const EQApplicationPacket *app) return; } - ItemInst* inst = GetInv().GetItem(sell->slot_id); + EQEmu::ItemInstance* inst = GetInv().GetItem(sell->slot_id); if (!inst) { return; } @@ -2644,7 +2644,7 @@ void Client::Handle_OP_AltCurrencySell(const EQApplicationPacket *app) return; } - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; uint32 cost = 0; uint32 current_currency = GetAlternateCurrencyValue(alt_cur_id); uint32 merchant_id = tar->MerchantType; @@ -2732,12 +2732,12 @@ void Client::Handle_OP_AltCurrencySellSelection(const EQApplicationPacket *app) return; } - ItemInst *inst = m_inv.GetItem(select->slot_id); + EQEmu::ItemInstance *inst = m_inv.GetItem(select->slot_id); if (!inst) { return; } - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; uint32 cost = 0; uint32 current_currency = GetAlternateCurrencyValue(alt_cur_id); uint32 merchant_id = tar->MerchantType; @@ -2816,9 +2816,9 @@ void Client::Handle_OP_ApplyPoison(const EQApplicationPacket *app) } uint32 ApplyPoisonSuccessResult = 0; ApplyPoison_Struct* ApplyPoisonData = (ApplyPoison_Struct*)app->pBuffer; - const ItemInst* PrimaryWeapon = GetInv().GetItem(EQEmu::legacy::SlotPrimary); - const ItemInst* SecondaryWeapon = GetInv().GetItem(EQEmu::legacy::SlotSecondary); - const ItemInst* PoisonItemInstance = GetInv()[ApplyPoisonData->inventorySlot]; + const EQEmu::ItemInstance* PrimaryWeapon = GetInv().GetItem(EQEmu::legacy::SlotPrimary); + const EQEmu::ItemInstance* SecondaryWeapon = GetInv().GetItem(EQEmu::legacy::SlotSecondary); + const EQEmu::ItemInstance* PoisonItemInstance = GetInv()[ApplyPoisonData->inventorySlot]; bool IsPoison = PoisonItemInstance && (PoisonItemInstance->GetItem()->ItemType == EQEmu::item::ItemTypePoison); @@ -2912,7 +2912,7 @@ void Client::Handle_OP_AugmentInfo(const EQApplicationPacket *app) } AugmentInfo_Struct* AugInfo = (AugmentInfo_Struct*)app->pBuffer; - const EQEmu::ItemBase * item = database.GetItem(AugInfo->itemid); + const EQEmu::ItemData * item = database.GetItem(AugInfo->itemid); if (item) { strn0cpy(AugInfo->augment_info, item->Name, 64); @@ -2933,12 +2933,12 @@ void Client::Handle_OP_AugmentItem(const EQApplicationPacket *app) bool deleteItems = false; if (ClientVersion() >= EQEmu::versions::ClientVersion::RoF) { - ItemInst *itemOneToPush = nullptr, *itemTwoToPush = nullptr; + EQEmu::ItemInstance *itemOneToPush = nullptr, *itemTwoToPush = nullptr; //Log.Out(Logs::DebugLevel::Moderate, Logs::Debug, "cslot: %i aslot: %i cidx: %i aidx: %i act: %i dest: %i", // in_augment->container_slot, in_augment->augment_slot, in_augment->container_index, in_augment->augment_index, in_augment->augment_action, in_augment->dest_inst_id); - ItemInst *tobe_auged = nullptr, *old_aug = nullptr, *new_aug = nullptr, *aug = nullptr, *solvent = nullptr; + EQEmu::ItemInstance *tobe_auged = nullptr, *old_aug = nullptr, *new_aug = nullptr, *aug = nullptr, *solvent = nullptr; Inventory& user_inv = GetInv(); uint16 item_slot = in_augment->container_slot; @@ -3494,13 +3494,13 @@ void Client::Handle_OP_Barter(const EQApplicationPacket *app) { BarterItemSearchLinkRequest_Struct* bislr = (BarterItemSearchLinkRequest_Struct*)app->pBuffer; - const EQEmu::ItemBase* item = database.GetItem(bislr->ItemID); + const EQEmu::ItemData* item = database.GetItem(bislr->ItemID); if (!item) Message(13, "Error: This item does not exist!"); else { - ItemInst* inst = database.CreateItem(item); + EQEmu::ItemInstance* inst = database.CreateItem(item); if (inst) { SendItemPacket(0, inst, ItemPacketViewLink); @@ -3527,13 +3527,13 @@ void Client::Handle_OP_Barter(const EQApplicationPacket *app) { BuyerItemSearchLinkRequest_Struct* bislr = (BuyerItemSearchLinkRequest_Struct*)app->pBuffer; - const EQEmu::ItemBase* item = database.GetItem(bislr->ItemID); + const EQEmu::ItemData* item = database.GetItem(bislr->ItemID); if (!item) Message(13, "Error: This item does not exist!"); else { - ItemInst* inst = database.CreateItem(item); + EQEmu::ItemInstance* inst = database.CreateItem(item); if (inst) { SendItemPacket(0, inst, ItemPacketViewLink); @@ -3566,14 +3566,14 @@ void Client::Handle_OP_BazaarInspect(const EQApplicationPacket *app) BazaarInspect_Struct* bis = (BazaarInspect_Struct*)app->pBuffer; - const EQEmu::ItemBase* item = database.GetItem(bis->ItemID); + const EQEmu::ItemData* item = database.GetItem(bis->ItemID); if (!item) { Message(13, "Error: This item does not exist!"); return; } - ItemInst* inst = database.CreateItem(item); + EQEmu::ItemInstance* inst = database.CreateItem(item); if (inst) { SendItemPacket(0, inst, ItemPacketViewLink); @@ -3606,7 +3606,7 @@ void Client::Handle_OP_BazaarSearch(const EQApplicationPacket *app) Client *c = entity_list.GetClientByName(nbis->Name); if (c) { - ItemInst* inst = c->FindTraderItemBySerialNumber(nbis->SerialNumber); + EQEmu::ItemInstance* inst = c->FindTraderItemBySerialNumber(nbis->SerialNumber); if (inst) SendItemPacket(0, inst, ItemPacketViewLink); } @@ -4007,11 +4007,11 @@ void Client::Handle_OP_CastSpell(const EQApplicationPacket *app) if (m_inv.SupportsClickCasting(castspell->inventoryslot) || slot == CastingSlot::PotionBelt) // sanity check { // packet field types will be reviewed as packet transistions occur - const ItemInst* inst = m_inv[castspell->inventoryslot]; //slot values are int16, need to check packet on this field + const EQEmu::ItemInstance* inst = m_inv[castspell->inventoryslot]; //slot values are int16, need to check packet on this field //bool cancast = true; if (inst && inst->IsClassCommon()) { - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (item->Click.Effect != (uint32)castspell->spell_id) { database.SetMQDetectionFlag(account_name, name, "OP_CastSpell with item, tried to cast a different spell.", zone->GetShortName()); @@ -4025,7 +4025,7 @@ void Client::Handle_OP_CastSpell(const EQApplicationPacket *app) { if (GetLevel() >= item->Click.Level2) { - ItemInst* p_inst = (ItemInst*)inst; + EQEmu::ItemInstance* p_inst = (EQEmu::ItemInstance*)inst; int i = parse->EventItem(EVENT_ITEM_CLICK_CAST, this, p_inst, nullptr, "", castspell->inventoryslot); if (i == 0) { @@ -4045,7 +4045,7 @@ void Client::Handle_OP_CastSpell(const EQApplicationPacket *app) } else { - ItemInst* p_inst = (ItemInst*)inst; + EQEmu::ItemInstance* p_inst = (EQEmu::ItemInstance*)inst; int i = parse->EventItem(EVENT_ITEM_CLICK_CAST, this, p_inst, nullptr, "", castspell->inventoryslot); if (i == 0) { @@ -4857,13 +4857,13 @@ void Client::Handle_OP_Consume(const EQApplicationPacket *app) } } - ItemInst *myitem = GetInv().GetItem(pcs->slot); + EQEmu::ItemInstance *myitem = GetInv().GetItem(pcs->slot); if (myitem == nullptr) { Log.Out(Logs::General, Logs::Error, "Consuming from empty slot %d", pcs->slot); return; } - const EQEmu::ItemBase* eat_item = myitem->GetItem(); + const EQEmu::ItemData* eat_item = myitem->GetItem(); if (pcs->type == 0x01) { Consume(eat_item, EQEmu::item::ItemTypeFood, pcs->slot, (pcs->auto_consumed == 0xffffffff)); } @@ -5146,7 +5146,7 @@ void Client::Handle_OP_DeleteItem(const EQApplicationPacket *app) } DeleteItem_Struct* alc = (DeleteItem_Struct*)app->pBuffer; - const ItemInst *inst = GetInv().GetItem(alc->from_slot); + const EQEmu::ItemInstance *inst = GetInv().GetItem(alc->from_slot); if (inst && inst->GetItem()->ItemType == EQEmu::item::ItemTypeAlcohol) { entity_list.MessageClose_StringID(this, true, 50, 0, DRINKING_MESSAGE, GetName(), inst->GetItem()->Name); CheckIncreaseSkill(EQEmu::skills::SkillAlcoholTolerance, nullptr, 25); @@ -6876,7 +6876,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) if (Slot >= 0) { - ItemInst* inst = GuildBanks->GetItem(GuildID(), GuildBankMainArea, Slot, 1); + EQEmu::ItemInstance* inst = GuildBanks->GetItem(GuildID(), GuildBankMainArea, Slot, 1); if (inst) { @@ -6896,7 +6896,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) { GuildBankViewItem_Struct *gbvis = (GuildBankViewItem_Struct*)app->pBuffer; - ItemInst* inst = GuildBanks->GetItem(GuildID(), gbvis->Area, gbvis->SlotID, 1); + EQEmu::ItemInstance* inst = GuildBanks->GetItem(GuildID(), gbvis->Area, gbvis->SlotID, 1); if (!inst) break; @@ -6919,7 +6919,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) return; } - ItemInst *CursorItemInst = GetInv().GetItem(EQEmu::legacy::SlotCursor); + EQEmu::ItemInstance *CursorItemInst = GetInv().GetItem(EQEmu::legacy::SlotCursor); bool Allowed = true; @@ -6932,7 +6932,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) return; } - const EQEmu::ItemBase* CursorItem = CursorItemInst->GetItem(); + const EQEmu::ItemData* CursorItem = CursorItemInst->GetItem(); if (!CursorItem->NoDrop || CursorItemInst->IsAttuned()) { @@ -6999,7 +6999,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app) GuildBankWithdrawItem_Struct *gbwis = (GuildBankWithdrawItem_Struct*)app->pBuffer; - ItemInst* inst = GuildBanks->GetItem(GuildID(), gbwis->Area, gbwis->SlotID, gbwis->Quantity); + EQEmu::ItemInstance* inst = GuildBanks->GetItem(GuildID(), gbwis->Area, gbwis->SlotID, gbwis->Quantity); if (!inst) { @@ -8013,17 +8013,17 @@ void Client::Handle_OP_InspectAnswer(const EQApplicationPacket *app) EQApplicationPacket* outapp = app->Copy(); InspectResponse_Struct* insr = (InspectResponse_Struct*)outapp->pBuffer; Mob* tmp = entity_list.GetMob(insr->TargetID); - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; int ornamentationAugtype = RuleI(Character, OrnamentationAugmentType); for (int16 L = EQEmu::legacy::EQUIPMENT_BEGIN; L <= EQEmu::legacy::SlotWaist; L++) { - const ItemInst* inst = GetInv().GetItem(L); + const EQEmu::ItemInstance* inst = GetInv().GetItem(L); item = inst ? inst->GetItem() : nullptr; if (item) { strcpy(insr->itemnames[L], item->Name); if (inst && inst->GetOrnamentationAug(ornamentationAugtype)) { - const EQEmu::ItemBase *aug_item = inst->GetOrnamentationAug(ornamentationAugtype)->GetItem(); + const EQEmu::ItemData *aug_item = inst->GetOrnamentationAug(ornamentationAugtype)->GetItem(); insr->itemicons[L] = aug_item->Icon; } else if (inst->GetOrnamentationIcon()) { @@ -8036,7 +8036,7 @@ void Client::Handle_OP_InspectAnswer(const EQApplicationPacket *app) else { insr->itemicons[L] = 0xFFFFFFFF; } } - const ItemInst* inst = GetInv().GetItem(EQEmu::legacy::SlotAmmo); + const EQEmu::ItemInstance* inst = GetInv().GetItem(EQEmu::legacy::SlotAmmo); item = inst ? inst->GetItem() : nullptr; if (item) { @@ -8123,7 +8123,7 @@ void Client::Handle_OP_ItemLinkClick(const EQApplicationPacket *app) // todo: verify ivrs->link_hash based on a rule, in case we don't care about people being able to sniff data // from the item DB - const EQEmu::ItemBase *item = database.GetItem(ivrs->item_id); + const EQEmu::ItemData *item = database.GetItem(ivrs->item_id); if (!item) { if (ivrs->item_id != SAYLINK_ITEM_ID) { Message(13, "Error: The item for the link you have clicked on does not exist!"); @@ -8181,7 +8181,7 @@ void Client::Handle_OP_ItemLinkClick(const EQApplicationPacket *app) } } - ItemInst *inst = + EQEmu::ItemInstance *inst = database.CreateItem(item, item->MaxCharges, ivrs->augments[0], ivrs->augments[1], ivrs->augments[2], ivrs->augments[3], ivrs->augments[4], ivrs->augments[5]); if (inst) { @@ -8198,7 +8198,7 @@ void Client::Handle_OP_ItemLinkResponse(const EQApplicationPacket *app) return; } LDONItemViewRequest_Struct* item = (LDONItemViewRequest_Struct*)app->pBuffer; - ItemInst* inst = database.CreateItem(item->item_id); + EQEmu::ItemInstance* inst = database.CreateItem(item->item_id); if (inst) { SendItemPacket(0, inst, ItemPacketViewLink); safe_delete(inst); @@ -8214,7 +8214,7 @@ void Client::Handle_OP_ItemName(const EQApplicationPacket *app) return; } ItemNamePacket_Struct *p = (ItemNamePacket_Struct*)app->pBuffer; - const EQEmu::ItemBase *item = 0; + const EQEmu::ItemData *item = 0; if ((item = database.GetItem(p->item_id)) != nullptr) { auto outapp = new EQApplicationPacket(OP_ItemName, sizeof(ItemNamePacket_Struct)); p = (ItemNamePacket_Struct*)outapp->pBuffer; @@ -8230,7 +8230,7 @@ void Client::Handle_OP_ItemPreview(const EQApplicationPacket *app) VERIFY_PACKET_LENGTH(OP_ItemPreview, app, ItemPreview_Struct); ItemPreview_Struct *ips = (ItemPreview_Struct *)app->pBuffer; - const EQEmu::ItemBase* item = database.GetItem(ips->itemid); + const EQEmu::ItemData* item = database.GetItem(ips->itemid); if (item) { auto outapp = new EQApplicationPacket(OP_ItemPreview, strlen(item->Name) + strlen(item->Lore) + @@ -8441,14 +8441,14 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) return; } - const ItemInst* inst = m_inv[slot_id]; + const EQEmu::ItemInstance* inst = m_inv[slot_id]; if (!inst) { Message(0, "Error: item not found in inventory slot #%i", slot_id); DeleteItemInInventory(slot_id, 0, true); return; } - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (!item) { Message(0, "Error: item not found in inventory slot #%i", slot_id); DeleteItemInInventory(slot_id, 0, true); @@ -8484,7 +8484,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) if (m_inv.SupportsClickCasting(slot_id) || ((item->ItemType == EQEmu::item::ItemTypePotion || item->PotionBelt) && m_inv.SupportsPotionBeltCasting(slot_id))) // sanity check { - ItemInst* p_inst = (ItemInst*)inst; + EQEmu::ItemInstance* p_inst = (EQEmu::ItemInstance*)inst; parse->EventItem(EVENT_ITEM_CLICK, this, p_inst, nullptr, "", slot_id); inst = m_inv[slot_id]; @@ -8495,22 +8495,22 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app) int r; bool tryaug = false; - ItemInst* clickaug = 0; - EQEmu::ItemBase* augitem = 0; + EQEmu::ItemInstance* clickaug = 0; + EQEmu::ItemData* augitem = 0; for (r = 0; r < EQEmu::legacy::ITEM_COMMON_SIZE; r++) { - const ItemInst* aug_i = inst->GetAugment(r); + const EQEmu::ItemInstance* aug_i = inst->GetAugment(r); if (!aug_i) continue; - const EQEmu::ItemBase* aug = aug_i->GetItem(); + const EQEmu::ItemData* aug = aug_i->GetItem(); if (!aug) continue; if ((aug->Click.Type == EQEmu::item::ItemEffectClick) || (aug->Click.Type == EQEmu::item::ItemEffectExpendable) || (aug->Click.Type == EQEmu::item::ItemEffectEquipClick) || (aug->Click.Type == EQEmu::item::ItemEffectClick2)) { tryaug = true; - clickaug = (ItemInst*)aug_i; - augitem = (EQEmu::ItemBase*)aug; + clickaug = (EQEmu::ItemInstance*)aug_i; + augitem = (EQEmu::ItemData*)aug; spell_id = aug->Click.Effect; break; } @@ -9678,8 +9678,8 @@ void Client::Handle_OP_MoveItem(const EQApplicationPacket *app) if (mi->from_slot != mi->to_slot && (mi->from_slot <= EQEmu::legacy::GENERAL_END || mi->from_slot > 39) && IsValidSlot(mi->from_slot) && IsValidSlot(mi->to_slot)) { char *detect = nullptr; - const ItemInst *itm_from = GetInv().GetItem(mi->from_slot); - const ItemInst *itm_to = GetInv().GetItem(mi->to_slot); + const EQEmu::ItemInstance *itm_from = GetInv().GetItem(mi->from_slot); + const EQEmu::ItemInstance *itm_to = GetInv().GetItem(mi->to_slot); MakeAnyLenString(&detect, "Player issued a move item from %u(item id %u) to %u(item id %u) while casting %u.", mi->from_slot, itm_from ? itm_from->GetID() : 0, @@ -10545,7 +10545,7 @@ void Client::Handle_OP_PotionBelt(const EQApplicationPacket *app) } if (mptbs->Action == 0) { - const EQEmu::ItemBase *BaseItem = database.GetItem(mptbs->ItemID); + const EQEmu::ItemData *BaseItem = database.GetItem(mptbs->ItemID); if (BaseItem) { m_pp.potionbelt.Items[mptbs->SlotNumber].ID = BaseItem->ID; m_pp.potionbelt.Items[mptbs->SlotNumber].Icon = BaseItem->Icon; @@ -12031,12 +12031,12 @@ void Client::Handle_OP_Shielding(const EQApplicationPacket *app) Shielding_Struct* shield = (Shielding_Struct*)app->pBuffer; shield_target = entity_list.GetMob(shield->target_id); bool ack = false; - ItemInst* inst = GetInv().GetItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance* inst = GetInv().GetItem(EQEmu::legacy::SlotSecondary); if (!shield_target) return; if (inst) { - const EQEmu::ItemBase* shield = inst->GetItem(); + const EQEmu::ItemData* shield = inst->GetItem(); if (shield && shield->ItemType == EQEmu::item::ItemTypeShield) { for (int x = 0; x < 2; x++) @@ -12139,7 +12139,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) break; } } - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; uint32 prevcharges = 0; if (item_id == 0) { //check to see if its on the temporary table std::list tmp_merlist = zone->tmpmerchanttable[tmp->GetNPCTypeID()]; @@ -12200,7 +12200,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) else charges = item->MaxCharges; - ItemInst* inst = database.CreateItem(item, charges); + EQEmu::ItemInstance* inst = database.CreateItem(item, charges); int SinglePrice = 0; if (RuleB(Merchant, UsePriceMod)) @@ -12321,7 +12321,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) qsaudit->items[0].item_id = item->ID; qsaudit->items[0].charges = mpo->quantity; - const ItemInst* audit_inst = m_inv[freeslotid]; + const EQEmu::ItemInstance* audit_inst = m_inv[freeslotid]; if (audit_inst) { qsaudit->items[0].aug_1 = audit_inst->GetAugmentItemID(0); @@ -12387,8 +12387,8 @@ void Client::Handle_OP_ShopPlayerSell(const EQApplicationPacket *app) uint32 itemid = GetItemIDAt(mp->itemslot); if (itemid == 0) return; - const EQEmu::ItemBase* item = database.GetItem(itemid); - ItemInst* inst = GetInv().GetItem(mp->itemslot); + const EQEmu::ItemData* item = database.GetItem(itemid); + EQEmu::ItemInstance* inst = GetInv().GetItem(mp->itemslot); if (!item || !inst){ Message(13, "You seemed to have misplaced that item.."); return; @@ -12433,7 +12433,7 @@ void Client::Handle_OP_ShopPlayerSell(const EQApplicationPacket *app) int freeslot = 0; if (charges > 0 && (freeslot = zone->SaveTempItem(vendor->CastToNPC()->MerchantType, vendor->GetNPCTypeID(), itemid, charges, true)) > 0){ - ItemInst* inst2 = inst->Clone(); + EQEmu::ItemInstance* inst2 = inst->Clone(); while (true) { if (inst2 == nullptr) @@ -13498,7 +13498,7 @@ void Client::Handle_OP_Trader(const EQApplicationPacket *app) TradeItemsValid = false; break; } - const EQEmu::ItemBase *Item = database.GetItem(gis->Items[i]); + const EQEmu::ItemData *Item = database.GetItem(gis->Items[i]); if (!Item) { Message(13, "Unexpected error. Unable to start trader mode"); diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 407343419..8e2ab8313 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -296,7 +296,7 @@ bool Client::Process() { } if(AutoFireEnabled()){ - ItemInst *ranged = GetInv().GetItem(EQEmu::legacy::SlotRange); + EQEmu::ItemInstance *ranged = GetInv().GetItem(EQEmu::legacy::SlotRange); if(ranged) { if (ranged->GetItem() && ranged->GetItem()->ItemType == EQEmu::item::ItemTypeBow){ @@ -391,7 +391,7 @@ bool Client::Process() { } else if (auto_attack_target->GetHP() > -10) // -10 so we can watch people bleed in PvP { - ItemInst *wpn = GetInv().GetItem(EQEmu::legacy::SlotPrimary); + EQEmu::ItemInstance *wpn = GetInv().GetItem(EQEmu::legacy::SlotPrimary); TryWeaponProc(wpn, auto_attack_target, EQEmu::legacy::SlotPrimary); DoAttackRounds(auto_attack_target, EQEmu::legacy::SlotPrimary); @@ -430,7 +430,7 @@ bool Client::Process() { else if(auto_attack_target->GetHP() > -10) { CheckIncreaseSkill(EQEmu::skills::SkillDualWield, auto_attack_target, -10); if (CheckDualWield()) { - ItemInst *wpn = GetInv().GetItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance *wpn = GetInv().GetItem(EQEmu::legacy::SlotSecondary); TryWeaponProc(wpn, auto_attack_target, EQEmu::legacy::SlotSecondary); DoAttackRounds(auto_attack_target, EQEmu::legacy::SlotSecondary); @@ -738,7 +738,7 @@ void Client::BulkSendInventoryItems() // LINKDEAD TRADE ITEMS // Move trade slot items back into normal inventory..need them there now for the proceeding validity checks for (int16 slot_id = EQEmu::legacy::TRADE_BEGIN; slot_id <= EQEmu::legacy::TRADE_END; slot_id++) { - ItemInst* inst = m_inv.PopItem(slot_id); + EQEmu::ItemInstance* inst = m_inv.PopItem(slot_id); if(inst) { bool is_arrow = (inst->GetItem()->ItemType == EQEmu::item::ItemTypeArrow) ? true : false; int16 free_slot_id = m_inv.FindFreeSlot(inst->IsClassBag(), true, inst->GetItem()->Size, is_arrow); @@ -764,7 +764,7 @@ void Client::BulkSendInventoryItems() // Possessions items for (int16 slot_id = SLOT_BEGIN; slot_id < EQEmu::legacy::TYPE_POSSESSIONS_SIZE; slot_id++) { - const ItemInst* inst = m_inv[slot_id]; + const EQEmu::ItemInstance* inst = m_inv[slot_id]; if (!inst) continue; @@ -778,7 +778,7 @@ void Client::BulkSendInventoryItems() // PowerSource item if (ClientVersion() >= EQEmu::versions::ClientVersion::SoF) { - const ItemInst* inst = m_inv[EQEmu::legacy::SlotPowerSource]; + const EQEmu::ItemInstance* inst = m_inv[EQEmu::legacy::SlotPowerSource]; if (inst) { inst->Serialize(ob, EQEmu::legacy::SlotPowerSource); @@ -791,7 +791,7 @@ void Client::BulkSendInventoryItems() // Bank items for (int16 slot_id = EQEmu::legacy::BANK_BEGIN; slot_id <= EQEmu::legacy::BANK_END; slot_id++) { - const ItemInst* inst = m_inv[slot_id]; + const EQEmu::ItemInstance* inst = m_inv[slot_id]; if (!inst) continue; @@ -805,7 +805,7 @@ void Client::BulkSendInventoryItems() // SharedBank items for (int16 slot_id = EQEmu::legacy::SHARED_BANK_BEGIN; slot_id <= EQEmu::legacy::SHARED_BANK_END; slot_id++) { - const ItemInst* inst = m_inv[slot_id]; + const EQEmu::ItemInstance* inst = m_inv[slot_id]; if (!inst) continue; @@ -825,12 +825,12 @@ void Client::BulkSendInventoryItems() } void Client::BulkSendMerchantInventory(int merchant_id, int npcid) { - const EQEmu::ItemBase* handyitem = nullptr; + const EQEmu::ItemData* handyitem = nullptr; uint32 numItemSlots = 80; //The max number of items passed in the transaction. if (m_ClientVersionBit & EQEmu::versions::bit_RoFAndLater) { // RoF+ can send 200 items numItemSlots = 200; } - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; std::list merlist = zone->merchanttable[merchant_id]; std::list::const_iterator itr; Mob* merch = entity_list.GetMobByNpcTypeID(npcid); @@ -879,7 +879,7 @@ void Client::BulkSendMerchantInventory(int merchant_id, int npcid) { int charges = 1; if (item->IsClassCommon()) charges = item->MaxCharges; - ItemInst* inst = database.CreateItem(item, charges); + EQEmu::ItemInstance* inst = database.CreateItem(item, charges); if (inst) { if (RuleB(Merchant, UsePriceMod)) { inst->SetPrice((item->Price * (RuleR(Merchant, SellCostMod)) * item->SellRate * Client::CalcPriceMod(merch, false))); @@ -920,7 +920,7 @@ void Client::BulkSendMerchantInventory(int merchant_id, int npcid) { // charges=ml.charges; //else charges = item->MaxCharges; - ItemInst* inst = database.CreateItem(item, charges); + EQEmu::ItemInstance* inst = database.CreateItem(item, charges); if (inst) { if (RuleB(Merchant, UsePriceMod)) { inst->SetPrice((item->Price * (RuleR(Merchant, SellCostMod)) * item->SellRate * Client::CalcPriceMod(merch, false))); @@ -1095,11 +1095,11 @@ void Client::OPMemorizeSpell(const EQApplicationPacket* app) switch(memspell->scribing) { case memSpellScribing: { // scribing spell to book - const ItemInst* inst = m_inv[EQEmu::legacy::SlotCursor]; + const EQEmu::ItemInstance* inst = m_inv[EQEmu::legacy::SlotCursor]; if (inst && inst->IsClassCommon()) { - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (RuleB(Character, RestrictSpellScribing) && !item->IsEquipable(GetRace(), GetClass())) { Message_StringID(13, CANNOT_USE_ITEM); diff --git a/zone/command.cpp b/zone/command.cpp index 86f745710..1ac321223 100644 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -2545,9 +2545,9 @@ void command_peekinv(Client *c, const Seperator *sep) } Client* targetClient = c->GetTarget()->CastToClient(); - const ItemInst* inst_main = nullptr; - const ItemInst* inst_sub = nullptr; - const EQEmu::ItemBase* item_data = nullptr; + const EQEmu::ItemInstance* inst_main = nullptr; + const EQEmu::ItemInstance* inst_sub = nullptr; + const EQEmu::ItemData* item_data = nullptr; std::string item_link; EQEmu::SayLinkEngine linker; linker.SetLinkType(EQEmu::saylink::SayLinkItemInst); @@ -2780,7 +2780,7 @@ void command_interrogateinv(Client *c, const Seperator *sep) } Client* target = nullptr; - std::map instmap; + std::map instmap; bool log = false; bool silent = false; bool error = false; @@ -3146,8 +3146,8 @@ void command_equipitem(Client *c, const Seperator *sep) { uint32 slot_id = atoi(sep->arg[1]); if (sep->IsNumber(1) && ((slot_id >= EQEmu::legacy::EQUIPMENT_BEGIN) && (slot_id <= EQEmu::legacy::EQUIPMENT_END) || (slot_id == EQEmu::legacy::SlotPowerSource))) { - const ItemInst* from_inst = c->GetInv().GetItem(EQEmu::legacy::SlotCursor); - const ItemInst* to_inst = c->GetInv().GetItem(slot_id); // added (desync issue when forcing stack to stack) + const EQEmu::ItemInstance* from_inst = c->GetInv().GetItem(EQEmu::legacy::SlotCursor); + const EQEmu::ItemInstance* to_inst = c->GetInv().GetItem(slot_id); // added (desync issue when forcing stack to stack) bool partialmove = false; int16 movecount; @@ -5519,7 +5519,7 @@ void command_summonitem(Client *c, const Seperator *sep) } int16 item_status = 0; - const EQEmu::ItemBase* item = database.GetItem(itemid); + const EQEmu::ItemData* item = database.GetItem(itemid); if (item) { item_status = static_cast(item->MinStatus); } @@ -5558,7 +5558,7 @@ void command_giveitem(Client *c, const Seperator *sep) Client *t = c->GetTarget()->CastToClient(); uint32 itemid = atoi(sep->arg[1]); int16 item_status = 0; - const EQEmu::ItemBase* item = database.GetItem(itemid); + const EQEmu::ItemData* item = database.GetItem(itemid); if(item) { item_status = static_cast(item->MinStatus); } @@ -5611,7 +5611,7 @@ void command_itemsearch(Client *c, const Seperator *sep) { const char *search_criteria=sep->argplus[1]; - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; std::string item_link; EQEmu::SayLinkEngine linker; linker.SetLinkType(EQEmu::saylink::SayLinkItemData); @@ -7126,7 +7126,7 @@ void command_path(Client *c, const Seperator *sep) void Client::Undye() { for (int cur_slot = EQEmu::textures::TextureBegin; cur_slot <= EQEmu::textures::LastTexture; cur_slot++) { uint8 slot2=SlotConvert(cur_slot); - ItemInst* inst = m_inv.GetItem(slot2); + EQEmu::ItemInstance* inst = m_inv.GetItem(slot2); if(inst != nullptr) { inst->SetColor(inst->GetItem()->Color); @@ -10235,7 +10235,7 @@ void command_zopp(Client *c, const Seperator *sep) uint32 itemid = atoi(sep->arg[3]); int16 charges = sep->argnum == 4 ? atoi(sep->arg[4]) : 1; // defaults to 1 charge if not specified - const EQEmu::ItemBase* FakeItem = database.GetItem(itemid); + const EQEmu::ItemData* FakeItem = database.GetItem(itemid); if (!FakeItem) { c->Message(13, "Error: Item [%u] is not a valid item id.", itemid); @@ -10243,7 +10243,7 @@ void command_zopp(Client *c, const Seperator *sep) } int16 item_status = 0; - const EQEmu::ItemBase* item = database.GetItem(itemid); + const EQEmu::ItemData* item = database.GetItem(itemid); if(item) { item_status = static_cast(item->MinStatus); } @@ -10257,7 +10257,7 @@ void command_zopp(Client *c, const Seperator *sep) c->Message(0, "Processing request..results may cause unpredictable behavior."); } - ItemInst* FakeItemInst = database.CreateItem(FakeItem, charges); + EQEmu::ItemInstance* FakeItemInst = database.CreateItem(FakeItem, charges); c->SendItemPacket(slotid, FakeItemInst, packettype); c->Message(0, "Sending zephyr op packet to client - [%s] %s (%u) with %i %s to slot %i.", packettype == ItemPacketTrade ? "Trade" : "Summon", FakeItem->Name, itemid, charges, diff --git a/zone/common.h b/zone/common.h index 9a5768c56..fd4ea0a89 100644 --- a/zone/common.h +++ b/zone/common.h @@ -568,7 +568,11 @@ struct MercData { uint32 NPCID; }; -class ItemInst; +namespace EQEmu +{ + class ItemInstance; +} + class Mob; // All data associated with a single trade class Trade @@ -606,7 +610,7 @@ public: private: // Send item data for trade item to other person involved in trade - void SendItemData(const ItemInst* inst, int16 dest_slot_id); + void SendItemData(const EQEmu::ItemInstance* inst, int16 dest_slot_id); uint32 with_id; Mob* owner; diff --git a/zone/corpse.cpp b/zone/corpse.cpp index ca32fc528..3690a3b4f 100644 --- a/zone/corpse.cpp +++ b/zone/corpse.cpp @@ -268,7 +268,7 @@ Corpse::Corpse(Client* client, int32 in_rezexp) : Mob ( int i; PlayerProfile_Struct *pp = &client->GetPP(); - ItemInst *item; + EQEmu::ItemInstance *item; /* Check if Zone has Graveyard First */ if(!zone->HasGraveyard()) { @@ -387,7 +387,7 @@ Corpse::Corpse(Client* client, int32 in_rezexp) : Mob ( Save(); } -void Corpse::MoveItemToCorpse(Client *client, ItemInst *inst, int16 equipSlot, std::list &removedList) +void Corpse::MoveItemToCorpse(Client *client, EQEmu::ItemInstance *inst, int16 equipSlot, std::list &removedList) { AddItem( inst->GetItem()->ID, @@ -979,8 +979,8 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a safe_delete(outapp); if(Loot_Request_Type == 5) { int pkitem = GetPlayerKillItem(); - const EQEmu::ItemBase* item = database.GetItem(pkitem); - ItemInst* inst = database.CreateItem(item, item->MaxCharges); + const EQEmu::ItemData* item = database.GetItem(pkitem); + EQEmu::ItemInstance* inst = database.CreateItem(item, item->MaxCharges); if(inst) { if (item->RecastDelay) inst->SetRecastTimestamp(timestamps.count(item->RecastType) ? timestamps.at(item->RecastType) : 0); @@ -994,7 +994,7 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a } int i = 0; - const EQEmu::ItemBase* item = 0; + const EQEmu::ItemData* item = 0; ItemList::iterator cur,end; cur = itemlist.begin(); end = itemlist.end(); @@ -1013,7 +1013,7 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a if(i < corpselootlimit) { item = database.GetItem(item_data->item_id); if(client && item) { - ItemInst* inst = database.CreateItem(item, item_data->charges, item_data->aug_1, item_data->aug_2, item_data->aug_3, item_data->aug_4, item_data->aug_5, item_data->aug_6, item_data->attuned); + EQEmu::ItemInstance* inst = database.CreateItem(item, item_data->charges, item_data->aug_1, item_data->aug_2, item_data->aug_3, item_data->aug_4, item_data->aug_5, item_data->aug_6, item_data->attuned); if(inst) { if (item->RecastDelay) inst->SetRecastTimestamp(timestamps.count(item->RecastType) ? timestamps.at(item->RecastType) : 0); @@ -1110,8 +1110,8 @@ void Corpse::LootItem(Client* client, const EQApplicationPacket* app) { being_looted_by = 0xFFFFFFFF; return; } - const EQEmu::ItemBase* item = 0; - ItemInst *inst = 0; + const EQEmu::ItemData* item = 0; + EQEmu::ItemInstance *inst = 0; ServerLootItem_Struct* item_data = nullptr, *bag_item_data[10]; memset(bag_item_data, 0, sizeof(bag_item_data)); @@ -1149,7 +1149,7 @@ void Corpse::LootItem(Client* client, const EQApplicationPacket* app) { if (inst->IsAugmented()) { for (int i = AUG_INDEX_BEGIN; i < EQEmu::legacy::ITEM_COMMON_SIZE; i++) { - ItemInst *itm = inst->GetAugment(i); + EQEmu::ItemInstance *itm = inst->GetAugment(i); if (itm) { if (client->CheckLoreConflict(itm->GetItem())) { client->Message_StringID(0, LOOT_LORE_ERROR); @@ -1305,7 +1305,7 @@ void Corpse::QueryLoot(Client* to) { else x < corpselootlimit ? sitem->lootslot = x : sitem->lootslot = 0xFFFF; - const EQEmu::ItemBase* item = database.GetItem(sitem->item_id); + const EQEmu::ItemData* item = database.GetItem(sitem->item_id); if (item) to->Message((sitem->lootslot == 0xFFFF), "LootSlot: %i (EquipSlot: %i) Item: %s (%d), Count: %i", static_cast(sitem->lootslot), sitem->equip_slot, item->Name, item->ID, sitem->charges); @@ -1319,7 +1319,7 @@ void Corpse::QueryLoot(Client* to) { } else { sitem->lootslot=y; - const EQEmu::ItemBase* item = database.GetItem(sitem->item_id); + const EQEmu::ItemData* item = database.GetItem(sitem->item_id); if (item) to->Message(0, "LootSlot: %i Item: %s (%d), Count: %i", sitem->lootslot, item->Name, item->ID, sitem->charges); @@ -1414,7 +1414,7 @@ uint32 Corpse::GetEquipment(uint8 material_slot) const { } uint32 Corpse::GetEquipmentColor(uint8 material_slot) const { - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; if (material_slot > EQEmu::textures::LastTexture) { return 0; diff --git a/zone/corpse.h b/zone/corpse.h index 509899827..e43c4c020 100644 --- a/zone/corpse.h +++ b/zone/corpse.h @@ -24,13 +24,17 @@ class Client; class EQApplicationPacket; class Group; -class ItemInst; class NPC; class Raid; struct ExtraAttackOptions; struct NPCType; +namespace EQEmu +{ + class ItemInstance; +} + #define MAX_LOOTERS 72 class Corpse : public Mob { @@ -128,7 +132,7 @@ class Corpse : public Mob { virtual void UpdateEquipmentLight(); protected: - void MoveItemToCorpse(Client *client, ItemInst *inst, int16 equipSlot, std::list &removedList); + void MoveItemToCorpse(Client *client, EQEmu::ItemInstance *inst, int16 equipSlot, std::list &removedList); private: bool is_player_corpse; /* Determines if Player Corpse or not */ diff --git a/zone/doors.cpp b/zone/doors.cpp index 9b1f41370..dd3dbd651 100644 --- a/zone/doors.cpp +++ b/zone/doors.cpp @@ -188,7 +188,7 @@ void Doors::HandleClick(Client* sender, uint8 trigger) uint8 keepoffkeyring = GetNoKeyring(); uint32 haskey = 0; uint32 playerkey = 0; - const ItemInst *lockpicks = sender->GetInv().GetItem(EQEmu::legacy::SlotCursor); + const EQEmu::ItemInstance *lockpicks = sender->GetInv().GetItem(EQEmu::legacy::SlotCursor); haskey = sender->GetInv().HasItem(keyneeded, 1); diff --git a/zone/effects.cpp b/zone/effects.cpp index 5b022f97d..e2d9d4075 100644 --- a/zone/effects.cpp +++ b/zone/effects.cpp @@ -481,7 +481,7 @@ int32 Client::GetActSpellCasttime(uint16 spell_id, int32 casttime) bool Client::TrainDiscipline(uint32 itemid) { //get the item info - const EQEmu::ItemBase *item = database.GetItem(itemid); + const EQEmu::ItemData *item = database.GetItem(itemid); if(item == nullptr) { Message(13, "Unable to find the tome you turned in!"); Log.Out(Logs::General, Logs::Error, "Unable to find turned in tome id %lu\n", (unsigned long)itemid); diff --git a/zone/embparser.cpp b/zone/embparser.cpp index 43f4c3cdc..bf9bbe5cb 100644 --- a/zone/embparser.cpp +++ b/zone/embparser.cpp @@ -157,7 +157,7 @@ void PerlembParser::ReloadQuests() { spell_quest_status_.clear(); } -int PerlembParser::EventCommon(QuestEventID event, uint32 objid, const char * data, NPC* npcmob, ItemInst* iteminst, Mob* mob, +int PerlembParser::EventCommon(QuestEventID event, uint32 objid, const char * data, NPC* npcmob, EQEmu::ItemInstance* item_inst, Mob* mob, uint32 extradata, bool global, std::vector *extra_pointers) { if(!perl) @@ -174,9 +174,9 @@ int PerlembParser::EventCommon(QuestEventID event, uint32 objid, const char * da std::string package_name; GetQuestTypes(isPlayerQuest, isGlobalPlayerQuest, isGlobalNPC, isItemQuest, isSpellQuest, - event, npcmob, iteminst, mob, global); + event, npcmob, item_inst, mob, global); GetQuestPackageName(isPlayerQuest, isGlobalPlayerQuest, isGlobalNPC, isItemQuest, isSpellQuest, - package_name, event, objid, data, npcmob, iteminst, global); + package_name, event, objid, data, npcmob, item_inst, global); const char *sub_name = QuestEventSubroutines[event]; if(!perl->SubExists(package_name.c_str(), sub_name)) { @@ -208,14 +208,14 @@ int PerlembParser::EventCommon(QuestEventID event, uint32 objid, const char * da /* Check for Event export event enable */ if (parse->perl_event_export_settings[event].event_variables){ - ExportEventVariables(package_name, event, objid, data, npcmob, iteminst, mob, extradata, extra_pointers); + ExportEventVariables(package_name, event, objid, data, npcmob, item_inst, mob, extradata, extra_pointers); } if(isPlayerQuest || isGlobalPlayerQuest){ return SendCommands(package_name.c_str(), sub_name, 0, mob, mob, nullptr); } else if(isItemQuest) { - return SendCommands(package_name.c_str(), sub_name, 0, mob, mob, iteminst); + return SendCommands(package_name.c_str(), sub_name, 0, mob, mob, item_inst); } else if(isSpellQuest){ if(mob) { @@ -249,7 +249,7 @@ int PerlembParser::EventGlobalPlayer(QuestEventID evt, Client *client, std::stri return EventCommon(evt, 0, data.c_str(), nullptr, nullptr, client, extra_data, true, extra_pointers); } -int PerlembParser::EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, +int PerlembParser::EventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { // needs pointer validation on 'item' argument return EventCommon(evt, item->GetID(), nullptr, nullptr, item, client, extra_data, false, extra_pointers); @@ -348,7 +348,7 @@ bool PerlembParser::SpellHasQuestSub(uint32 spell_id, QuestEventID evt) { return(perl->SubExists(package_name.str().c_str(), subname)); } -bool PerlembParser::ItemHasQuestSub(ItemInst *itm, QuestEventID evt) { +bool PerlembParser::ItemHasQuestSub(EQEmu::ItemInstance *itm, QuestEventID evt) { std::stringstream package_name; package_name << "qst_item_" << itm->GetID(); @@ -471,7 +471,7 @@ void PerlembParser::LoadGlobalPlayerScript(std::string filename) { global_player_quest_status_ = questLoaded; } -void PerlembParser::LoadItemScript(std::string filename, ItemInst *item) { +void PerlembParser::LoadItemScript(std::string filename, EQEmu::ItemInstance *item) { if (item == nullptr) return; @@ -642,13 +642,13 @@ void PerlembParser::ExportVar(const char *pkgprefix, const char *varname, const } } -int PerlembParser::SendCommands(const char *pkgprefix, const char *event, uint32 npcid, Mob* other, Mob* mob, ItemInst* iteminst) { +int PerlembParser::SendCommands(const char *pkgprefix, const char *event, uint32 npcid, Mob* other, Mob* mob, EQEmu::ItemInstance* item_inst) { if(!perl) return 0; int ret_value = 0; if(mob && mob->IsClient()) - quest_manager.StartQuest(other, mob->CastToClient(), iteminst); + quest_manager.StartQuest(other, mob->CastToClient(), item_inst); else quest_manager.StartQuest(other, nullptr, nullptr); @@ -711,8 +711,8 @@ int PerlembParser::SendCommands(const char *pkgprefix, const char *event, uint32 } //only export QuestItem if it's an item quest - if(iteminst) { - ItemInst* curi = quest_manager.GetQuestItem(); + if(item_inst) { + EQEmu::ItemInstance* curi = quest_manager.GetQuestItem(); snprintf(namebuf, 64, "%s::questitem", pkgprefix); SV *questitem = get_sv(namebuf, true); sv_setref_pv(questitem, "QuestItem", curi); @@ -840,7 +840,7 @@ void PerlembParser::MapFunctions() { } void PerlembParser::GetQuestTypes(bool &isPlayerQuest, bool &isGlobalPlayerQuest, bool &isGlobalNPC, bool &isItemQuest, - bool &isSpellQuest, QuestEventID event, NPC* npcmob, ItemInst* iteminst, Mob* mob, bool global) + bool &isSpellQuest, QuestEventID event, NPC* npcmob, EQEmu::ItemInstance* item_inst, Mob* mob, bool global) { if(event == EVENT_SPELL_EFFECT_CLIENT || event == EVENT_SPELL_EFFECT_NPC || @@ -854,7 +854,7 @@ void PerlembParser::GetQuestTypes(bool &isPlayerQuest, bool &isGlobalPlayerQuest else { if(!npcmob && mob) { - if(!iteminst) { + if(!item_inst) { if(global) { isGlobalPlayerQuest = true; } else { @@ -869,7 +869,7 @@ void PerlembParser::GetQuestTypes(bool &isPlayerQuest, bool &isGlobalPlayerQuest void PerlembParser::GetQuestPackageName(bool &isPlayerQuest, bool &isGlobalPlayerQuest, bool &isGlobalNPC, bool &isItemQuest, bool &isSpellQuest, std::string &package_name, QuestEventID event, uint32 objid, const char * data, - NPC* npcmob, ItemInst* iteminst, bool global) + NPC* npcmob, EQEmu::ItemInstance* item_inst, bool global) { if(!isPlayerQuest && !isGlobalPlayerQuest && !isItemQuest && !isSpellQuest) { if(global) { @@ -881,8 +881,8 @@ void PerlembParser::GetQuestPackageName(bool &isPlayerQuest, bool &isGlobalPlaye } } else if(isItemQuest) { - // need a valid ItemInst pointer check here..unsure how to cancel this process - const EQEmu::ItemBase* item = iteminst->GetItem(); + // need a valid EQEmu::ItemInstance pointer check here..unsure how to cancel this process + const EQEmu::ItemData* item = item_inst->GetItem(); package_name = "qst_item_"; package_name += itoa(item->ID); } @@ -1141,7 +1141,7 @@ void PerlembParser::ExportItemVariables(std::string &package_name, Mob *mob) { #undef HASITEM_ISNULLITEM void PerlembParser::ExportEventVariables(std::string &package_name, QuestEventID event, uint32 objid, const char * data, - NPC* npcmob, ItemInst* iteminst, Mob* mob, uint32 extradata, std::vector *extra_pointers) + NPC* npcmob, EQEmu::ItemInstance* item_inst, Mob* mob, uint32 extradata, std::vector *extra_pointers) { switch (event) { case EVENT_SAY: { @@ -1159,7 +1159,7 @@ void PerlembParser::ExportEventVariables(std::string &package_name, QuestEventID if(extra_pointers) { size_t sz = extra_pointers->size(); for(size_t i = 0; i < sz; ++i) { - ItemInst *inst = EQEmu::any_cast(extra_pointers->at(i)); + EQEmu::ItemInstance *inst = EQEmu::any_cast(extra_pointers->at(i)); std::string var_name = "item"; var_name += std::to_string(i + 1); @@ -1327,19 +1327,19 @@ void PerlembParser::ExportEventVariables(std::string &package_name, QuestEventID case EVENT_SCALE_CALC: case EVENT_ITEM_ENTER_ZONE: { - // need a valid ItemInst pointer check here..unsure how to cancel this process + // need a valid EQEmu::ItemInstance pointer check here..unsure how to cancel this process ExportVar(package_name.c_str(), "itemid", objid); - ExportVar(package_name.c_str(), "itemname", iteminst->GetItem()->Name); + ExportVar(package_name.c_str(), "itemname", item_inst->GetItem()->Name); break; } case EVENT_ITEM_CLICK_CAST: case EVENT_ITEM_CLICK: { - // need a valid ItemInst pointer check here..unsure how to cancel this process + // need a valid EQEmu::ItemInstance pointer check here..unsure how to cancel this process ExportVar(package_name.c_str(), "itemid", objid); - ExportVar(package_name.c_str(), "itemname", iteminst->GetItem()->Name); + ExportVar(package_name.c_str(), "itemname", item_inst->GetItem()->Name); ExportVar(package_name.c_str(), "slotid", extradata); - ExportVar(package_name.c_str(), "spell_id", iteminst->GetItem()->Click.Effect); + ExportVar(package_name.c_str(), "spell_id", item_inst->GetItem()->Click.Effect); break; } @@ -1419,10 +1419,10 @@ void PerlembParser::ExportEventVariables(std::string &package_name, QuestEventID break; } case EVENT_DROP_ITEM: { - ExportVar(package_name.c_str(), "quantity", iteminst->IsStackable() ? iteminst->GetCharges() : 1); - ExportVar(package_name.c_str(), "itemname", iteminst->GetItem()->Name); - ExportVar(package_name.c_str(), "itemid", iteminst->GetItem()->ID); - ExportVar(package_name.c_str(), "spell_id", iteminst->GetItem()->Click.Effect); + ExportVar(package_name.c_str(), "quantity", item_inst->IsStackable() ? item_inst->GetCharges() : 1); + ExportVar(package_name.c_str(), "itemname", item_inst->GetItem()->Name); + ExportVar(package_name.c_str(), "itemid", item_inst->GetItem()->ID); + ExportVar(package_name.c_str(), "spell_id", item_inst->GetItem()->Click.Effect); ExportVar(package_name.c_str(), "slotid", extradata); break; } diff --git a/zone/embparser.h b/zone/embparser.h index 9b33b1ad2..8ae3fa10e 100644 --- a/zone/embparser.h +++ b/zone/embparser.h @@ -27,11 +27,15 @@ #include #include "embperl.h" -class ItemInst; class Mob; class Client; class NPC; +namespace EQEmu +{ + class ItemInstance; +} + typedef enum { questUnloaded, @@ -52,7 +56,7 @@ public: std::vector *extra_pointers); virtual int EventGlobalPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers); - virtual int EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, + virtual int EventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); virtual int EventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers); @@ -62,13 +66,13 @@ public: virtual bool PlayerHasQuestSub(QuestEventID evt); virtual bool GlobalPlayerHasQuestSub(QuestEventID evt); virtual bool SpellHasQuestSub(uint32 spell_id, QuestEventID evt); - virtual bool ItemHasQuestSub(ItemInst *itm, QuestEventID evt); + virtual bool ItemHasQuestSub(EQEmu::ItemInstance *itm, QuestEventID evt); virtual void LoadNPCScript(std::string filename, int npc_id); virtual void LoadGlobalNPCScript(std::string filename); virtual void LoadPlayerScript(std::string filename); virtual void LoadGlobalPlayerScript(std::string filename); - virtual void LoadItemScript(std::string filename, ItemInst *item); + virtual void LoadItemScript(std::string filename, EQEmu::ItemInstance *item); virtual void LoadSpellScript(std::string filename, uint32 spell_id); virtual void AddVar(std::string name, std::string val); @@ -86,16 +90,16 @@ private: void ExportVar(const char *pkgprefix, const char *varname, float value); void ExportVarComplex(const char *pkgprefix, const char *varname, const char *value); - int EventCommon(QuestEventID event, uint32 objid, const char * data, NPC* npcmob, ItemInst* iteminst, Mob* mob, + int EventCommon(QuestEventID event, uint32 objid, const char * data, NPC* npcmob, EQEmu::ItemInstance* item_inst, Mob* mob, uint32 extradata, bool global, std::vector *extra_pointers); - int SendCommands(const char *pkgprefix, const char *event, uint32 npcid, Mob* other, Mob* mob, ItemInst *iteminst); + int SendCommands(const char *pkgprefix, const char *event, uint32 npcid, Mob* other, Mob* mob, EQEmu::ItemInstance *item_inst); void MapFunctions(); void GetQuestTypes(bool &isPlayerQuest, bool &isGlobalPlayerQuest, bool &isGlobalNPC, bool &isItemQuest, - bool &isSpellQuest, QuestEventID event, NPC* npcmob, ItemInst* iteminst, Mob* mob, bool global); + bool &isSpellQuest, QuestEventID event, NPC* npcmob, EQEmu::ItemInstance* item_inst, Mob* mob, bool global); void GetQuestPackageName(bool &isPlayerQuest, bool &isGlobalPlayerQuest, bool &isGlobalNPC, bool &isItemQuest, bool &isSpellQuest, std::string &package_name, QuestEventID event, uint32 objid, const char * data, - NPC* npcmob, ItemInst* iteminst, bool global); + NPC* npcmob, EQEmu::ItemInstance* item_inst, bool global); void ExportCharID(const std::string &package_name, int &char_id, NPC *npcmob, Mob *mob); void ExportQGlobals(bool isPlayerQuest, bool isGlobalPlayerQuest, bool isGlobalNPC, bool isItemQuest, bool isSpellQuest, std::string &package_name, NPC *npcmob, Mob *mob, int char_id); @@ -104,7 +108,7 @@ private: void ExportZoneVariables(std::string &package_name); void ExportItemVariables(std::string &package_name, Mob *mob); void ExportEventVariables(std::string &package_name, QuestEventID event, uint32 objid, const char * data, - NPC* npcmob, ItemInst* iteminst, Mob* mob, uint32 extradata, std::vector *extra_pointers); + NPC* npcmob, EQEmu::ItemInstance* item_inst, Mob* mob, uint32 extradata, std::vector *extra_pointers); std::map npc_quest_status_; PerlQuestStatus global_npc_quest_status_; diff --git a/zone/embparser_api.cpp b/zone/embparser_api.cpp index adaaf3325..c6b07e764 100644 --- a/zone/embparser_api.cpp +++ b/zone/embparser_api.cpp @@ -110,7 +110,7 @@ XS(XS_QuestItem_new) if (items != 1) Perl_croak(aTHX_ "Usage: QuestItem::new()"); - ItemInst* RETVAL; + EQEmu::ItemInstance* RETVAL; RETVAL = quest_manager.GetQuestItem(); ST(0) = sv_newmortal(); diff --git a/zone/embxs.cpp b/zone/embxs.cpp index 5c8769895..5a4acc36d 100644 --- a/zone/embxs.cpp +++ b/zone/embxs.cpp @@ -33,7 +33,7 @@ const char *getItemName(unsigned itemid) { - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; item = database.GetItem(itemid); if (item) diff --git a/zone/entity.cpp b/zone/entity.cpp index 4eda2e75e..2bbcdef20 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -2009,7 +2009,7 @@ void EntityList::QueueClientsGuildBankItemUpdate(const GuildBankItemUpdate_Struc memcpy(outgbius, gbius, sizeof(GuildBankItemUpdate_Struct)); - const EQEmu::ItemBase *Item = database.GetItem(gbius->ItemID); + const EQEmu::ItemData *Item = database.GetItem(gbius->ItemID); auto it = client_list.begin(); while (it != client_list.end()) { @@ -3878,11 +3878,11 @@ void EntityList::GroupMessage(uint32 gid, const char *from, const char *message) uint16 EntityList::CreateGroundObject(uint32 itemid, const glm::vec4& position, uint32 decay_time) { - const EQEmu::ItemBase *is = database.GetItem(itemid); + const EQEmu::ItemData *is = database.GetItem(itemid); if (!is) return 0; - auto i = new ItemInst(is, is->MaxCharges); + auto i = new EQEmu::ItemInstance(is, is->MaxCharges); if (!i) return 0; diff --git a/zone/forage.cpp b/zone/forage.cpp index 324467025..b1ff0f545 100644 --- a/zone/forage.cpp +++ b/zone/forage.cpp @@ -153,9 +153,9 @@ uint32 ZoneDatabase::GetZoneFishing(uint32 ZoneID, uint8 skill, uint32 &npc_id, //we need this function to immediately determine, after we receive OP_Fishing, if we can even try to fish, otherwise we have to wait a while to get the failure bool Client::CanFish() { //make sure we still have a fishing pole on: - const ItemInst* Pole = m_inv[EQEmu::legacy::SlotPrimary]; + const EQEmu::ItemInstance* Pole = m_inv[EQEmu::legacy::SlotPrimary]; int32 bslot = m_inv.HasItemByUse(EQEmu::item::ItemTypeFishingBait, 1, invWhereWorn | invWherePersonal); - const ItemInst* Bait = nullptr; + const EQEmu::ItemInstance* Bait = nullptr; if (bslot != INVALID_INDEX) Bait = m_inv.GetItem(bslot); @@ -253,7 +253,7 @@ void Client::GoFish() //make sure we still have a fishing pole on: int32 bslot = m_inv.HasItemByUse(EQEmu::item::ItemTypeFishingBait, 1, invWhereWorn | invWherePersonal); - const ItemInst* Bait = nullptr; + const EQEmu::ItemInstance* Bait = nullptr; if (bslot != INVALID_INDEX) Bait = m_inv.GetItem(bslot); @@ -304,10 +304,10 @@ void Client::GoFish() food_id = common_fish_ids[index]; } - const EQEmu::ItemBase* food_item = database.GetItem(food_id); + const EQEmu::ItemData* food_item = database.GetItem(food_id); Message_StringID(MT_Skills, FISHING_SUCCESS); - ItemInst* inst = database.CreateItem(food_item, 1); + EQEmu::ItemInstance* inst = database.CreateItem(food_item, 1); if(inst != nullptr) { if(CheckLoreConflict(inst->GetItem())) { @@ -396,7 +396,7 @@ void Client::ForageItem(bool guarantee) { foragedfood = common_food_ids[index]; } - const EQEmu::ItemBase* food_item = database.GetItem(foragedfood); + const EQEmu::ItemData* food_item = database.GetItem(foragedfood); if(!food_item) { Log.Out(Logs::General, Logs::Error, "nullptr returned from database.GetItem in ClientForageItem"); @@ -421,7 +421,7 @@ void Client::ForageItem(bool guarantee) { } Message_StringID(MT_Skills, stringid); - ItemInst* inst = database.CreateItem(food_item, 1); + EQEmu::ItemInstance* inst = database.CreateItem(food_item, 1); if(inst != nullptr) { // check to make sure it isn't a foraged lore item if(CheckLoreConflict(inst->GetItem())) diff --git a/zone/guild_mgr.cpp b/zone/guild_mgr.cpp index 57f83a981..3dfa6b958 100644 --- a/zone/guild_mgr.cpp +++ b/zone/guild_mgr.cpp @@ -694,7 +694,7 @@ void GuildBankManager::SendGuildBank(Client *c) if (c->ClientVersionBit() & EQEmu::versions::bit_RoFAndLater) { auto outapp = new EQApplicationPacket(OP_GuildBankItemList, sizeof(GuildBankItemListEntry_Struct) * 240); for (int i = 0; i < GUILD_BANK_DEPOSIT_AREA_SIZE; ++i) { - const EQEmu::ItemBase *Item = database.GetItem(guild_bank->Items.DepositArea[i].ItemID); + const EQEmu::ItemData *Item = database.GetItem(guild_bank->Items.DepositArea[i].ItemID); if (Item) { outapp->WriteUInt8(1); outapp->WriteUInt32(guild_bank->Items.DepositArea[i].Permissions); @@ -718,7 +718,7 @@ void GuildBankManager::SendGuildBank(Client *c) outapp->SetWritePosition(outapp->GetWritePosition() + 20); // newer clients have 40 deposit slots, keep them 0 for now for (int i = 0; i < GUILD_BANK_MAIN_AREA_SIZE; ++i) { - const EQEmu::ItemBase *Item = database.GetItem(guild_bank->Items.MainArea[i].ItemID); + const EQEmu::ItemData *Item = database.GetItem(guild_bank->Items.MainArea[i].ItemID); if (Item) { outapp->WriteUInt8(1); outapp->WriteUInt32(guild_bank->Items.MainArea[i].Permissions); @@ -749,7 +749,7 @@ void GuildBankManager::SendGuildBank(Client *c) { if(guild_bank->Items.DepositArea[i].ItemID > 0) { - const EQEmu::ItemBase *Item = database.GetItem(guild_bank->Items.DepositArea[i].ItemID); + const EQEmu::ItemData *Item = database.GetItem(guild_bank->Items.DepositArea[i].ItemID); if(!Item) continue; @@ -785,7 +785,7 @@ void GuildBankManager::SendGuildBank(Client *c) { if(guild_bank->Items.MainArea[i].ItemID > 0) { - const EQEmu::ItemBase *Item = database.GetItem(guild_bank->Items.MainArea[i].ItemID); + const EQEmu::ItemData *Item = database.GetItem(guild_bank->Items.MainArea[i].ItemID); if(!Item) continue; @@ -916,7 +916,7 @@ bool GuildBankManager::AddItem(uint32 GuildID, uint8 Area, uint32 ItemID, int32 return false; } - const EQEmu::ItemBase *Item = database.GetItem(ItemID); + const EQEmu::ItemData *Item = database.GetItem(ItemID); GuildBankItemUpdate_Struct gbius; @@ -982,7 +982,7 @@ int GuildBankManager::Promote(uint32 guildID, int slotID) (*iter)->Items.DepositArea[slotID].ItemID = 0; - const EQEmu::ItemBase *Item = database.GetItem((*iter)->Items.MainArea[mainSlot].ItemID); + const EQEmu::ItemData *Item = database.GetItem((*iter)->Items.MainArea[mainSlot].ItemID); GuildBankItemUpdate_Struct gbius; @@ -1038,7 +1038,7 @@ void GuildBankManager::SetPermissions(uint32 guildID, uint16 slotID, uint32 perm else (*iter)->Items.MainArea[slotID].WhoFor[0] = '\0'; - const EQEmu::ItemBase *Item = database.GetItem((*iter)->Items.MainArea[slotID].ItemID); + const EQEmu::ItemData *Item = database.GetItem((*iter)->Items.MainArea[slotID].ItemID); GuildBankItemUpdate_Struct gbius; @@ -1062,7 +1062,7 @@ void GuildBankManager::SetPermissions(uint32 guildID, uint16 slotID, uint32 perm entity_list.QueueClientsGuildBankItemUpdate(&gbius, guildID); } -ItemInst* GuildBankManager::GetItem(uint32 GuildID, uint16 Area, uint16 SlotID, uint32 Quantity) +EQEmu::ItemInstance* GuildBankManager::GetItem(uint32 GuildID, uint16 Area, uint16 SlotID, uint32 Quantity) { auto Iterator = GetGuildBank(GuildID); @@ -1071,7 +1071,7 @@ ItemInst* GuildBankManager::GetItem(uint32 GuildID, uint16 Area, uint16 SlotID, GuildBankItem* BankArea = nullptr; - ItemInst* inst = nullptr; + EQEmu::ItemInstance* inst = nullptr; if(Area == GuildBankDepositArea) { @@ -1169,7 +1169,7 @@ bool GuildBankManager::DeleteItem(uint32 guildID, uint16 area, uint16 slotID, ui bool deleted = true; - const EQEmu::ItemBase *Item = database.GetItem(BankArea[slotID].ItemID); + const EQEmu::ItemData *Item = database.GetItem(BankArea[slotID].ItemID); if(!Item->Stackable || (quantity >= BankArea[slotID].Quantity)) { std::string query = StringFormat("DELETE FROM `guild_bank` WHERE `guildid` = %i " @@ -1230,7 +1230,7 @@ bool GuildBankManager::MergeStacks(uint32 GuildID, uint16 SlotID) if(BankArea[SlotID].ItemID == 0) return false; - const EQEmu::ItemBase *Item = database.GetItem(BankArea[SlotID].ItemID); + const EQEmu::ItemData *Item = database.GetItem(BankArea[SlotID].ItemID); if(!Item->Stackable) return false; @@ -1328,7 +1328,7 @@ bool GuildBankManager::SplitStack(uint32 GuildID, uint16 SlotID, uint32 Quantity if(BankArea[SlotID].Quantity <= Quantity || Quantity == 0) return false; - const EQEmu::ItemBase *Item = database.GetItem(BankArea[SlotID].ItemID); + const EQEmu::ItemData *Item = database.GetItem(BankArea[SlotID].ItemID); if(!Item->Stackable) return false; diff --git a/zone/guild_mgr.h b/zone/guild_mgr.h index d06473392..abd11fd9f 100644 --- a/zone/guild_mgr.h +++ b/zone/guild_mgr.h @@ -117,7 +117,7 @@ public: bool AddItem(uint32 GuildID, uint8 Area, uint32 ItemID, int32 QtyOrCharges, const char *Donator, uint8 Permissions, const char *WhoFor); int Promote(uint32 GuildID, int SlotID); void SetPermissions(uint32 GuildID, uint16 SlotID, uint32 Permissions, const char *MemberName); - ItemInst* GetItem(uint32 GuildID, uint16 Area, uint16 SlotID, uint32 Quantity); + EQEmu::ItemInstance* GetItem(uint32 GuildID, uint16 Area, uint16 SlotID, uint32 Quantity); bool DeleteItem(uint32 GuildID, uint16 Area, uint16 SlotID, uint32 Quantity); bool HasItem(uint32 GuildID, uint32 ItemID); bool IsAreaFull(uint32 GuildID, uint16 Area); diff --git a/zone/inventory.cpp b/zone/inventory.cpp index d03cac310..ae0a82ae3 100644 --- a/zone/inventory.cpp +++ b/zone/inventory.cpp @@ -31,7 +31,7 @@ uint32 Client::NukeItem(uint32 itemnum, uint8 where_to_check) { if (itemnum == 0) return 0; uint32 x = 0; - ItemInst *cur = nullptr; + EQEmu::ItemInstance *cur = nullptr; int i; if(where_to_check & invWhereWorn) { @@ -177,7 +177,7 @@ uint32 Client::NukeItem(uint32 itemnum, uint8 where_to_check) { } -bool Client::CheckLoreConflict(const EQEmu::ItemBase* item) +bool Client::CheckLoreConflict(const EQEmu::ItemData* item) { if (!item) { return false; } if (!item->LoreFlag) { return false; } @@ -195,7 +195,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // TODO: update calling methods and script apis to handle a failure return - const EQEmu::ItemBase* item = database.GetItem(item_id); + const EQEmu::ItemData* item = database.GetItem(item_id); // make sure the item exists if(item == nullptr) { @@ -247,7 +247,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, bool enforceusable = RuleB(Inventory, EnforceAugmentUsability); for (int iter = AUG_INDEX_BEGIN; iter < EQEmu::legacy::ITEM_COMMON_SIZE; ++iter) { - const EQEmu::ItemBase* augtest = database.GetItem(augments[iter]); + const EQEmu::ItemData* augtest = database.GetItem(augments[iter]); if(augtest == nullptr) { if(augments[iter]) { @@ -528,7 +528,7 @@ bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, // in any other situation just use charges as passed - ItemInst* inst = database.CreateItem(item, charges); + EQEmu::ItemInstance* inst = database.CreateItem(item, charges); if(inst == nullptr) { Message(13, "An unknown server error has occurred and your item was not created."); @@ -604,7 +604,7 @@ void Client::DropItem(int16 slot_id) } // Take control of item in client inventory - ItemInst *inst = m_inv.PopItem(slot_id); + EQEmu::ItemInstance *inst = m_inv.PopItem(slot_id); if(inst) { int i = parse->EventItem(EVENT_DROP_ITEM, this, inst, nullptr, "", slot_id); if(i != 0) { @@ -637,7 +637,7 @@ void Client::DropItem(int16 slot_id) } // Drop inst -void Client::DropInst(const ItemInst* inst) +void Client::DropInst(const EQEmu::ItemInstance* inst) { if (!inst) { // Item doesn't exist in inventory! @@ -660,7 +660,7 @@ void Client::DropInst(const ItemInst* inst) // Returns a slot's item ID (returns INVALID_ID if not found) int32 Client::GetItemIDAt(int16 slot_id) { - const ItemInst* inst = m_inv[slot_id]; + const EQEmu::ItemInstance* inst = m_inv[slot_id]; if (inst) return inst->GetItem()->ID; @@ -671,7 +671,7 @@ int32 Client::GetItemIDAt(int16 slot_id) { // Returns an augment's ID that's in an item (returns INVALID_ID if not found) // Pass in the slot ID of the item and which augslot you want to check (0-5) int32 Client::GetAugmentIDAt(int16 slot_id, uint8 augslot) { - const ItemInst* inst = m_inv[slot_id]; + const EQEmu::ItemInstance* inst = m_inv[slot_id]; if (inst && inst->GetAugmentItemID(augslot)) { return inst->GetAugmentItemID(augslot); } @@ -764,7 +764,7 @@ void Client::DeleteItemInInventory(int16 slot_id, int8 quantity, bool client_upd if (m_inv[slot_id]->IsClassBag()) { for (uint8 bag_idx = SUB_INDEX_BEGIN; bag_idx < m_inv[slot_id]->GetItem()->BagSlots; bag_idx++) { - ItemInst* bagitem = m_inv[slot_id]->GetItem(bag_idx); + EQEmu::ItemInstance* bagitem = m_inv[slot_id]->GetItem(bag_idx); if(bagitem) { int16 bagslot_id = Inventory::CalcSlotId(slot_id, bag_idx); @@ -789,7 +789,7 @@ void Client::DeleteItemInInventory(int16 slot_id, int8 quantity, bool client_upd bool isDeleted = m_inv.DeleteItem(slot_id, quantity); - const ItemInst* inst = nullptr; + const EQEmu::ItemInstance* inst = nullptr; if (slot_id == EQEmu::legacy::SlotCursor) { auto s = m_inv.cursor_cbegin(), e = m_inv.cursor_cend(); if(update_db) @@ -836,7 +836,7 @@ void Client::DeleteItemInInventory(int16 slot_id, int8 quantity, bool client_upd } } -bool Client::PushItemOnCursor(const ItemInst& inst, bool client_update) +bool Client::PushItemOnCursor(const EQEmu::ItemInstance& inst, bool client_update) { Log.Out(Logs::Detail, Logs::Inventory, "Putting item %s (%d) on the cursor", inst.GetItem()->Name, inst.GetItem()->ID); m_inv.PushCursor(inst); @@ -853,7 +853,7 @@ bool Client::PushItemOnCursor(const ItemInst& inst, bool client_update) // Any items already there will be removed from user's inventory // (Also saves changes back to the database: this may be optimized in the future) // client_update: Sends packet to client -bool Client::PutItemInInventory(int16 slot_id, const ItemInst& inst, bool client_update) { +bool Client::PutItemInInventory(int16 slot_id, const EQEmu::ItemInstance& inst, bool client_update) { Log.Out(Logs::Detail, Logs::Inventory, "Putting item %s (%d) into slot %d", inst.GetItem()->Name, inst.GetItem()->ID, slot_id); if (slot_id == EQEmu::legacy::SlotCursor) { // don't trust macros before conditional statements... @@ -881,7 +881,7 @@ bool Client::PutItemInInventory(int16 slot_id, const ItemInst& inst, bool client // a lot of wasted checks and calls coded above... } -void Client::PutLootInInventory(int16 slot_id, const ItemInst &inst, ServerLootItem_Struct** bag_item_data) +void Client::PutLootInInventory(int16 slot_id, const EQEmu::ItemInstance &inst, ServerLootItem_Struct** bag_item_data) { Log.Out(Logs::Detail, Logs::Inventory, "Putting loot item %s (%d) into slot %d", inst.GetItem()->Name, inst.GetItem()->ID, slot_id); @@ -912,7 +912,7 @@ void Client::PutLootInInventory(int16 slot_id, const ItemInst &inst, ServerLootI if (bag_item_data[index] == nullptr) continue; - const ItemInst *bagitem = database.CreateItem( + const EQEmu::ItemInstance *bagitem = database.CreateItem( bag_item_data[index]->item_id, bag_item_data[index]->charges, bag_item_data[index]->aug_1, @@ -948,13 +948,13 @@ void Client::PutLootInInventory(int16 slot_id, const ItemInst &inst, ServerLootI CalcBonuses(); } -bool Client::TryStacking(ItemInst* item, uint8 type, bool try_worn, bool try_cursor){ +bool Client::TryStacking(EQEmu::ItemInstance* item, uint8 type, bool try_worn, bool try_cursor){ if(!item || !item->IsStackable() || item->GetCharges()>=item->GetItem()->StackSize) return false; int16 i; uint32 item_id = item->GetItem()->ID; for (i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++) { - ItemInst* tmp_inst = m_inv.GetItem(i); + EQEmu::ItemInstance* tmp_inst = m_inv.GetItem(i); if(tmp_inst && tmp_inst->GetItem()->ID == item_id && tmp_inst->GetCharges() < tmp_inst->GetItem()->StackSize){ MoveItemCharges(*item, i, type); CalcBonuses(); @@ -967,7 +967,7 @@ bool Client::TryStacking(ItemInst* item, uint8 type, bool try_worn, bool try_cur for (i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++) { for (uint8 j = SUB_INDEX_BEGIN; j < EQEmu::legacy::ITEM_CONTAINER_SIZE; j++) { uint16 slotid = Inventory::CalcSlotId(i, j); - ItemInst* tmp_inst = m_inv.GetItem(slotid); + EQEmu::ItemInstance* tmp_inst = m_inv.GetItem(slotid); if(tmp_inst && tmp_inst->GetItem()->ID == item_id && tmp_inst->GetCharges() < tmp_inst->GetItem()->StackSize) { MoveItemCharges(*item, slotid, type); @@ -985,7 +985,7 @@ bool Client::TryStacking(ItemInst* item, uint8 type, bool try_worn, bool try_cur // Locate an available space in inventory to place an item // and then put the item there // The change will be saved to the database -bool Client::AutoPutLootInInventory(ItemInst& inst, bool try_worn, bool try_cursor, ServerLootItem_Struct** bag_item_data) +bool Client::AutoPutLootInInventory(EQEmu::ItemInstance& inst, bool try_worn, bool try_cursor, ServerLootItem_Struct** bag_item_data) { // #1: Try to auto equip if (try_worn && inst.IsEquipable(GetBaseRace(), GetClass()) && inst.GetItem()->ReqLevel <= level && (!inst.GetItem()->Attuneable || inst.IsAttuned()) && inst.GetItem()->ItemType != EQEmu::item::ItemTypeAugmentation) { @@ -1048,9 +1048,9 @@ bool Client::AutoPutLootInInventory(ItemInst& inst, bool try_worn, bool try_curs } // helper function for AutoPutLootInInventory -void Client::MoveItemCharges(ItemInst &from, int16 to_slot, uint8 type) +void Client::MoveItemCharges(EQEmu::ItemInstance &from, int16 to_slot, uint8 type) { - ItemInst *tmp_inst = m_inv.GetItem(to_slot); + EQEmu::ItemInstance *tmp_inst = m_inv.GetItem(to_slot); if(tmp_inst && tmp_inst->GetCharges() < tmp_inst->GetItem()->StackSize) { // this is how much room is left on the item we're stacking onto @@ -1074,7 +1074,7 @@ void Client::MoveItemCharges(ItemInst &from, int16 to_slot, uint8 type) #if 0 // TODO: needs clean-up to save references -bool MakeItemLink(char* &ret_link, const ItemBase *item, uint32 aug0, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, uint8 evolving, uint8 evolvedlevel) { +bool MakeItemLink(char* &ret_link, const ItemData *item, uint32 aug0, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, uint8 evolving, uint8 evolvedlevel) { //we're sending back the entire "link", minus the null characters & item name //that way, we can use it for regular links & Task links //note: initiator needs to pass us ret_link @@ -1183,13 +1183,13 @@ bool MakeItemLink(char* &ret_link, const ItemBase *item, uint32 aug0, uint32 aug } #endif -int Client::GetItemLinkHash(const ItemInst* inst) { +int Client::GetItemLinkHash(const EQEmu::ItemInstance* inst) { //pre-Titanium: http://eqitems.13th-floor.org/phpBB2/viewtopic.php?t=70&postdays=0&postorder=asc //Titanium: http://eqitems.13th-floor.org/phpBB2/viewtopic.php?t=145 if (!inst) //have to have an item to make the hash return 0; - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); char* hash_str = 0; /*register */int hash = 0; @@ -1272,7 +1272,7 @@ int Client::GetItemLinkHash(const ItemInst* inst) { } // This appears to still be in use... The core of this should be incorporated into class Client::TextLink -void Client::SendItemLink(const ItemInst* inst, bool send_to_all) +void Client::SendItemLink(const EQEmu::ItemInstance* inst, bool send_to_all) { /* @@ -1283,7 +1283,7 @@ packet with the item number in it, but I cant seem to find it right now if (!inst) return; - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); const char* name2 = &item->Name[0]; auto outapp = new EQApplicationPacket(OP_ItemLinkText, strlen(name2) + 68); char buffer2[135] = {0}; @@ -1312,7 +1312,7 @@ packet with the item number in it, but I cant seem to find it right now safe_delete(outapp); } -void Client::SendLootItemInPacket(const ItemInst* inst, int16 slot_id) +void Client::SendLootItemInPacket(const EQEmu::ItemInstance* inst, int16 slot_id) { SendItemPacket(slot_id,inst, ItemPacketTrade); } @@ -1409,7 +1409,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { Log.Out(Logs::Detail, Logs::Inventory, "Client destroyed item from cursor slot %d", move_in->from_slot); if(RuleB(QueryServ, PlayerLogMoves)) { QSSwapItemAuditor(move_in); } // QS Audit - ItemInst *inst = m_inv.GetItem(EQEmu::legacy::SlotCursor); + EQEmu::ItemInstance *inst = m_inv.GetItem(EQEmu::legacy::SlotCursor); if(inst) { parse->EventItem(EVENT_DESTROY_ITEM, this, inst, nullptr, "", 0); } @@ -1453,8 +1453,8 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { //Setup uint32 srcitemid = 0; uint32 dstitemid = 0; - ItemInst* src_inst = m_inv.GetItem(src_slot_id); - ItemInst* dst_inst = m_inv.GetItem(dst_slot_id); + EQEmu::ItemInstance* src_inst = m_inv.GetItem(src_slot_id); + EQEmu::ItemInstance* dst_inst = m_inv.GetItem(dst_slot_id); if (src_inst){ Log.Out(Logs::Detail, Logs::Inventory, "Src slot %d has item %s (%d) with %d charges in it.", src_slot_id, src_inst->GetItem()->Name, src_inst->GetItem()->ID, src_inst->GetCharges()); srcitemid = src_inst->GetItem()->ID; @@ -1470,8 +1470,8 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { dstitemid = dst_inst->GetItem()->ID; } if (Trader && srcitemid>0){ - ItemInst* srcbag; - ItemInst* dstbag; + EQEmu::ItemInstance* srcbag; + EQEmu::ItemInstance* dstbag; uint32 srcbagid =0; uint32 dstbagid = 0; @@ -1517,7 +1517,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { } if (src_slot_id >= EQEmu::legacy::SHARED_BANK_BEGIN && src_slot_id <= EQEmu::legacy::SHARED_BANK_END && src_inst->IsClassBag()){ for (uint8 idx = SUB_INDEX_BEGIN; idx < EQEmu::legacy::ITEM_CONTAINER_SIZE; idx++) { - const ItemInst* baginst = src_inst->GetItem(idx); + const EQEmu::ItemInstance* baginst = src_inst->GetItem(idx); if(baginst && !database.VerifyInventory(account_id, Inventory::CalcSlotId(src_slot_id, idx), baginst)){ DeleteItemInInventory(Inventory::CalcSlotId(src_slot_id, idx),0,false); } @@ -1532,7 +1532,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { } if (dst_slot_id >= EQEmu::legacy::SHARED_BANK_BEGIN && dst_slot_id <= EQEmu::legacy::SHARED_BANK_END && dst_inst->IsClassBag()){ for (uint8 idx = SUB_INDEX_BEGIN; idx < EQEmu::legacy::ITEM_CONTAINER_SIZE; idx++) { - const ItemInst* baginst = dst_inst->GetItem(idx); + const EQEmu::ItemInstance* baginst = dst_inst->GetItem(idx); if(baginst && !database.VerifyInventory(account_id, Inventory::CalcSlotId(dst_slot_id, idx), baginst)){ DeleteItemInInventory(Inventory::CalcSlotId(dst_slot_id, idx),0,false); } @@ -1550,12 +1550,12 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { auto ndh_inst = m_inv[src_slot_id]; std::string ndh_item_data; if (ndh_inst == nullptr) { - ndh_item_data.append("[nullptr on ItemInst*]"); + ndh_item_data.append("[nullptr on EQEmu::ItemInstance*]"); } else { auto ndh_item = ndh_inst->GetItem(); if (ndh_item == nullptr) { - ndh_item_data.append("[nullptr on ItemBase*]"); + ndh_item_data.append("[nullptr on ItemData*]"); } else { ndh_item_data.append(StringFormat("name=%s", ndh_item->Name)); @@ -1576,7 +1576,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { if(m_tradeskill_object != nullptr) { if (src_slot_id >= EQEmu::legacy::WORLD_BEGIN && src_slot_id <= EQEmu::legacy::WORLD_END) { // Picking up item from world container - ItemInst* inst = m_tradeskill_object->PopItem(Inventory::CalcBagIdx(src_slot_id)); + EQEmu::ItemInstance* inst = m_tradeskill_object->PopItem(Inventory::CalcBagIdx(src_slot_id)); if (inst) { PutItemInInventory(dst_slot_id, *inst, false); safe_delete(inst); @@ -1589,7 +1589,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { else if (dst_slot_id >= EQEmu::legacy::WORLD_BEGIN && dst_slot_id <= EQEmu::legacy::WORLD_END) { // Putting item into world container, which may swap (or pile onto) with existing item uint8 world_idx = Inventory::CalcBagIdx(dst_slot_id); - ItemInst* world_inst = m_tradeskill_object->PopItem(world_idx); + EQEmu::ItemInstance* world_inst = m_tradeskill_object->PopItem(world_idx); // Case 1: No item in container, unidirectional "Put" if (world_inst == nullptr) { @@ -1597,8 +1597,8 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { m_inv.DeleteItem(src_slot_id); } else { - const EQEmu::ItemBase* world_item = world_inst->GetItem(); - const EQEmu::ItemBase* src_item = src_inst->GetItem(); + const EQEmu::ItemData* world_item = world_inst->GetItem(); + const EQEmu::ItemData* src_item = src_inst->GetItem(); if (world_item && src_item) { // Case 2: Same item on cursor, stacks, transfer of charges needed if ((world_item->ID == src_item->ID) && src_inst->IsStackable()) { @@ -1629,7 +1629,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { else { // Case 3: Swap the item on user with item in world container // World containers don't follow normal rules for swapping - ItemInst* inv_inst = m_inv.PopItem(src_slot_id); + EQEmu::ItemInstance* inv_inst = m_inv.PopItem(src_slot_id); m_tradeskill_object->PutItem(world_idx, inv_inst); m_inv.PutItem(src_slot_id, *world_inst); safe_delete(inv_inst); @@ -1744,7 +1744,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) { // Split into two src_inst->SetCharges(src_inst->GetCharges() - move_in->number_in_stack); Log.Out(Logs::Detail, Logs::Inventory, "Split stack of %s (%d) from slot %d to %d with stack size %d. Src keeps %d.", src_inst->GetItem()->Name, src_inst->GetItem()->ID, src_slot_id, dst_slot_id, move_in->number_in_stack, src_inst->GetCharges()); - ItemInst* inst = database.CreateItem(src_inst->GetItem(), move_in->number_in_stack); + EQEmu::ItemInstance* inst = database.CreateItem(src_inst->GetItem(), move_in->number_in_stack); m_inv.PutItem(dst_slot_id, *inst); safe_delete(inst); } @@ -1838,8 +1838,8 @@ void Client::SwapItemResync(MoveItem_Struct* move_slots) { int16 resync_slot = (Inventory::CalcSlotId(move_slots->from_slot) == INVALID_INDEX) ? move_slots->from_slot : Inventory::CalcSlotId(move_slots->from_slot); if (IsValidSlot(resync_slot) && resync_slot != INVALID_INDEX) { // This prevents the client from crashing when closing any 'phantom' bags - const EQEmu::ItemBase* token_struct = database.GetItem(22292); // 'Copper Coin' - ItemInst* token_inst = database.CreateItem(token_struct, 1); + const EQEmu::ItemData* token_struct = database.GetItem(22292); // 'Copper Coin' + EQEmu::ItemInstance* token_inst = database.CreateItem(token_struct, 1); SendItemPacket(resync_slot, token_inst, ItemPacketTrade); @@ -1863,8 +1863,8 @@ void Client::SwapItemResync(MoveItem_Struct* move_slots) { int16 resync_slot = (Inventory::CalcSlotId(move_slots->from_slot) == INVALID_INDEX) ? move_slots->from_slot : Inventory::CalcSlotId(move_slots->from_slot); if (IsValidSlot(resync_slot) && resync_slot != INVALID_INDEX) { if(m_inv[resync_slot]) { - const EQEmu::ItemBase* token_struct = database.GetItem(22292); // 'Copper Coin' - ItemInst* token_inst = database.CreateItem(token_struct, 1); + const EQEmu::ItemData* token_struct = database.GetItem(22292); // 'Copper Coin' + EQEmu::ItemInstance* token_inst = database.CreateItem(token_struct, 1); SendItemPacket(resync_slot, token_inst, ItemPacketTrade); SendItemPacket(resync_slot, m_inv[resync_slot], ItemPacketTrade); @@ -1880,8 +1880,8 @@ void Client::SwapItemResync(MoveItem_Struct* move_slots) { if ((move_slots->to_slot >= EQEmu::legacy::EQUIPMENT_BEGIN && move_slots->to_slot <= EQEmu::legacy::CURSOR_BAG_END) || move_slots->to_slot == EQEmu::legacy::SlotPowerSource) { int16 resync_slot = (Inventory::CalcSlotId(move_slots->to_slot) == INVALID_INDEX) ? move_slots->to_slot : Inventory::CalcSlotId(move_slots->to_slot); if (IsValidSlot(resync_slot) && resync_slot != INVALID_INDEX) { - const EQEmu::ItemBase* token_struct = database.GetItem(22292); // 'Copper Coin' - ItemInst* token_inst = database.CreateItem(token_struct, 1); + const EQEmu::ItemData* token_struct = database.GetItem(22292); // 'Copper Coin' + EQEmu::ItemInstance* token_inst = database.CreateItem(token_struct, 1); SendItemPacket(resync_slot, token_inst, ItemPacketTrade); @@ -1905,8 +1905,8 @@ void Client::SwapItemResync(MoveItem_Struct* move_slots) { int16 resync_slot = (Inventory::CalcSlotId(move_slots->to_slot) == INVALID_INDEX) ? move_slots->to_slot : Inventory::CalcSlotId(move_slots->to_slot); if (IsValidSlot(resync_slot) && resync_slot != INVALID_INDEX) { if(m_inv[resync_slot]) { - const EQEmu::ItemBase* token_struct = database.GetItem(22292); // 'Copper Coin' - ItemInst* token_inst = database.CreateItem(token_struct, 1); + const EQEmu::ItemData* token_struct = database.GetItem(22292); // 'Copper Coin' + EQEmu::ItemInstance* token_inst = database.CreateItem(token_struct, 1); SendItemPacket(resync_slot, token_inst, ItemPacketTrade); SendItemPacket(resync_slot, m_inv[resync_slot], ItemPacketTrade); @@ -1945,7 +1945,7 @@ void Client::QSSwapItemAuditor(MoveItem_Struct* move_in, bool postaction_call) { move_count = 0; - const ItemInst* from_inst = m_inv[postaction_call?to_slot_id:from_slot_id]; + const EQEmu::ItemInstance* from_inst = m_inv[postaction_call?to_slot_id:from_slot_id]; if(from_inst) { qsaudit->items[move_count].from_slot = from_slot_id; @@ -1960,7 +1960,7 @@ void Client::QSSwapItemAuditor(MoveItem_Struct* move_in, bool postaction_call) { if (from_inst->IsType(EQEmu::item::ItemClassBag)) { for (uint8 bag_idx = SUB_INDEX_BEGIN; bag_idx < from_inst->GetItem()->BagSlots; bag_idx++) { - const ItemInst* from_baginst = from_inst->GetItem(bag_idx); + const EQEmu::ItemInstance* from_baginst = from_inst->GetItem(bag_idx); if(from_baginst) { qsaudit->items[move_count].from_slot = Inventory::CalcSlotId(from_slot_id, bag_idx); @@ -1978,7 +1978,7 @@ void Client::QSSwapItemAuditor(MoveItem_Struct* move_in, bool postaction_call) { } if(to_slot_id != from_slot_id) { - const ItemInst* to_inst = m_inv[postaction_call?from_slot_id:to_slot_id]; + const EQEmu::ItemInstance* to_inst = m_inv[postaction_call?from_slot_id:to_slot_id]; if(to_inst) { qsaudit->items[move_count].from_slot = to_slot_id; @@ -1993,7 +1993,7 @@ void Client::QSSwapItemAuditor(MoveItem_Struct* move_in, bool postaction_call) { if (to_inst->IsType(EQEmu::item::ItemClassBag)) { for (uint8 bag_idx = SUB_INDEX_BEGIN; bag_idx < to_inst->GetItem()->BagSlots; bag_idx++) { - const ItemInst* to_baginst = to_inst->GetItem(bag_idx); + const EQEmu::ItemInstance* to_baginst = to_inst->GetItem(bag_idx); if(to_baginst) { qsaudit->items[move_count].from_slot = Inventory::CalcSlotId(to_slot_id, bag_idx); @@ -2027,7 +2027,7 @@ void Client::DyeArmor(EQEmu::TintProfile* dye){ if (slot != INVALID_INDEX){ DeleteItemInInventory(slot,1,true); uint8 slot2=SlotConvert(i); - ItemInst* inst = this->m_inv.GetItem(slot2); + EQEmu::ItemInstance* inst = this->m_inv.GetItem(slot2); if(inst){ uint32 armor_color = ((uint32)dye->Slot[i].Red << 16) | ((uint32)dye->Slot[i].Green << 8) | ((uint32)dye->Slot[i].Blue); inst->SetColor(armor_color); @@ -2057,8 +2057,8 @@ void Client::DyeArmor(EQEmu::TintProfile* dye){ #if 0 bool Client::DecreaseByItemType(uint32 type, uint8 amt) { - const ItemBase* TempItem = 0; - ItemInst* ins; + const ItemData* TempItem = 0; + EQEmu::ItemInstance* ins; int x; for(x=EQEmu::legacy::POSSESSIONS_BEGIN; x <= EQEmu::legacy::POSSESSIONS_END; x++) { @@ -2109,8 +2109,8 @@ bool Client::DecreaseByItemType(uint32 type, uint8 amt) { #endif bool Client::DecreaseByID(uint32 type, uint8 amt) { - const EQEmu::ItemBase* TempItem = nullptr; - ItemInst* ins = nullptr; + const EQEmu::ItemData* TempItem = nullptr; + EQEmu::ItemInstance* ins = nullptr; int x; int num = 0; for(x = EQEmu::legacy::EQUIPMENT_BEGIN; x <= EQEmu::legacy::GENERAL_BAGS_END; x++) @@ -2204,7 +2204,7 @@ static uint32 GetDisenchantedBagID(uint8 bag_slots) } } -static bool CopyBagContents(ItemInst* new_bag, const ItemInst* old_bag) +static bool CopyBagContents(EQEmu::ItemInstance* new_bag, const EQEmu::ItemInstance* old_bag) { if (!new_bag || !old_bag) { return false; } if (new_bag->GetItem()->BagSlots < old_bag->GetItem()->BagSlots) { return false; } @@ -2308,7 +2308,7 @@ void Client::DisenchantSummonedBags(bool client_update) if (CopyBagContents(new_inst, inst)) { Log.Out(Logs::General, Logs::Inventory, "Disenchant Summoned Bags: Replacing %s with %s in slot %i", inst->GetItem()->Name, new_inst->GetItem()->Name, EQEmu::legacy::SlotCursor); - std::list local; + std::list local; local.push_front(new_inst); m_inv.PopItem(EQEmu::legacy::SlotCursor); safe_delete(inst); @@ -2405,7 +2405,7 @@ void Client::RemoveNoRent(bool client_update) } if (!m_inv.CursorEmpty()) { - std::list local; + std::list local; while (!m_inv.CursorEmpty()) { auto inst = m_inv.PopItem(EQEmu::legacy::SlotCursor); @@ -2516,8 +2516,8 @@ void Client::RemoveDuplicateLore(bool client_update) // Shared Bank and Shared Bank Containers are not checked due to their allowing duplicate lore items if (!m_inv.CursorEmpty()) { - std::list local_1; - std::list local_2; + std::list local_1; + std::list local_2; while (!m_inv.CursorEmpty()) { auto inst = m_inv.PopItem(EQEmu::legacy::SlotCursor); @@ -2591,7 +2591,7 @@ void Client::MoveSlotNotAllowed(bool client_update) uint32 Client::GetEquipment(uint8 material_slot) const { int16 invslot; - const ItemInst *item; + const EQEmu::ItemInstance *item; if(material_slot > EQEmu::textures::LastTexture) { @@ -2617,7 +2617,7 @@ uint32 Client::GetEquipment(uint8 material_slot) const #if 0 int32 Client::GetEquipmentMaterial(uint8 material_slot) { - const ItemBase *item; + const ItemData *item; item = database.GetItem(GetEquipment(material_slot)); if(item != 0) @@ -2634,7 +2634,7 @@ uint32 Client::GetEquipmentColor(uint8 material_slot) const if (material_slot > EQEmu::textures::LastTexture) return 0; - const EQEmu::ItemBase *item = database.GetItem(GetEquipment(material_slot)); + const EQEmu::ItemData *item = database.GetItem(GetEquipment(material_slot)); if(item != nullptr) return ((m_pp.item_tint.Slot[material_slot].UseTint) ? m_pp.item_tint.Slot[material_slot].Color : item->Color); @@ -2642,7 +2642,7 @@ uint32 Client::GetEquipmentColor(uint8 material_slot) const } // Send an item packet (including all subitems of the item) -void Client::SendItemPacket(int16 slot_id, const ItemInst* inst, ItemPacketType packet_type) +void Client::SendItemPacket(int16 slot_id, const EQEmu::ItemInstance* inst, ItemPacketType packet_type) { if (!inst) return; @@ -2667,7 +2667,7 @@ void Client::SendItemPacket(int16 slot_id, const ItemInst* inst, ItemPacketType FastQueuePacket(&outapp); } -EQApplicationPacket* Client::ReturnItemPacket(int16 slot_id, const ItemInst* inst, ItemPacketType packet_type) +EQApplicationPacket* Client::ReturnItemPacket(int16 slot_id, const EQEmu::ItemInstance* inst, ItemPacketType packet_type) { if (!inst) return nullptr; @@ -2717,8 +2717,8 @@ void Client::CreateBandolier(const EQApplicationPacket *app) Log.Out(Logs::Detail, Logs::Inventory, "Char: %s Creating Bandolier Set %i, Set Name: %s", GetName(), bs->Number, bs->Name); strcpy(m_pp.bandoliers[bs->Number].Name, bs->Name); - const ItemInst* InvItem = nullptr; - const EQEmu::ItemBase *BaseItem = nullptr; + const EQEmu::ItemInstance* InvItem = nullptr; + const EQEmu::ItemData *BaseItem = nullptr; int16 WeaponSlot = 0; database.DeleteCharacterBandolier(this->CharacterID(), bs->Number); @@ -2762,7 +2762,7 @@ void Client::SetBandolier(const EQApplicationPacket *app) Log.Out(Logs::Detail, Logs::Inventory, "Char: %s activating set %i", GetName(), bss->Number); int16 slot = 0; int16 WeaponSlot = 0; - ItemInst *BandolierItems[4]; // Temporary holding area for the weapons we pull out of their inventory + EQEmu::ItemInstance *BandolierItems[4]; // Temporary holding area for the weapons we pull out of their inventory // First we pull the items for this bandolier set out of their inventory, this makes space to put the // currently equipped items back. @@ -2827,7 +2827,7 @@ void Client::SetBandolier(const EQApplicationPacket *app) BandolierItems[BandolierSlot] = 0; if (slot == INVALID_INDEX) { Log.Out(Logs::Detail, Logs::Inventory, "Character does not have required bandolier item for slot %i", WeaponSlot); - ItemInst *InvItem = m_inv.PopItem(WeaponSlot); + EQEmu::ItemInstance *InvItem = m_inv.PopItem(WeaponSlot); if(InvItem) { // If there was an item in that weapon slot, put it in the inventory Log.Out(Logs::Detail, Logs::Inventory, "returning item %s in weapon slot %i to inventory", @@ -2861,7 +2861,7 @@ void Client::SetBandolier(const EQApplicationPacket *app) // if the player has this item in their inventory, and it is not already where it needs to be if(BandolierItems[BandolierSlot]) { // Pull the item that we are going to replace - ItemInst *InvItem = m_inv.PopItem(WeaponSlot); + EQEmu::ItemInstance *InvItem = m_inv.PopItem(WeaponSlot); // Put the item specified in the bandolier where it needs to be m_inv.PutItem(WeaponSlot, *BandolierItems[BandolierSlot]); @@ -2881,7 +2881,7 @@ void Client::SetBandolier(const EQApplicationPacket *app) else { // This bandolier set has no item for this slot, so take whatever is in the weapon slot and // put it in the player's inventory. - ItemInst *InvItem = m_inv.PopItem(WeaponSlot); + EQEmu::ItemInstance *InvItem = m_inv.PopItem(WeaponSlot); if(InvItem) { Log.Out(Logs::Detail, Logs::Inventory, "Bandolier has no item for slot %i, returning item %s to inventory", WeaponSlot, InvItem->GetItem()->Name); // If there was an item in that weapon slot, put it in the inventory @@ -2899,7 +2899,7 @@ void Client::SetBandolier(const EQApplicationPacket *app) CalcBonuses(); } -bool Client::MoveItemToInventory(ItemInst *ItemToReturn, bool UpdateClient) { +bool Client::MoveItemToInventory(EQEmu::ItemInstance *ItemToReturn, bool UpdateClient) { // This is a support function for Client::SetBandolier, however it can be used anywhere it's functionality is required. // @@ -2932,7 +2932,7 @@ bool Client::MoveItemToInventory(ItemInst *ItemToReturn, bool UpdateClient) { for (int16 i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::SlotCursor; i++) { // changed slot max to 30 from 29. client will stack into slot 30 (bags too) before moving. - ItemInst* InvItem = m_inv.GetItem(i); + EQEmu::ItemInstance* InvItem = m_inv.GetItem(i); if(InvItem && (InvItem->GetItem()->ID == ItemID) && (InvItem->GetCharges() < InvItem->GetItem()->StackSize)) { @@ -2991,7 +2991,7 @@ bool Client::MoveItemToInventory(ItemInst *ItemToReturn, bool UpdateClient) { for (int16 i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::SlotCursor; i++) { // changed slot max to 30 from 29. client will move into slot 30 (bags too) before pushing onto cursor. - ItemInst* InvItem = m_inv.GetItem(i); + EQEmu::ItemInstance* InvItem = m_inv.GetItem(i); if (!InvItem) { // Found available slot in personal inventory @@ -3047,7 +3047,7 @@ bool Client::InterrogateInventory(Client* requester, bool log, bool silent, bool if (!requester) return false; - std::map instmap; + std::map instmap; // build reference map for (int16 index = SLOT_BEGIN; index < EQEmu::legacy::TYPE_POSSESSIONS_SIZE; ++index) { @@ -3140,7 +3140,7 @@ bool Client::InterrogateInventory(Client* requester, bool log, bool silent, bool return true; } -void Client::InterrogateInventory_(bool errorcheck, Client* requester, int16 head, int16 index, const ItemInst* inst, const ItemInst* parent, bool log, bool silent, bool &error, int depth) +void Client::InterrogateInventory_(bool errorcheck, Client* requester, int16 head, int16 index, const EQEmu::ItemInstance* inst, const EQEmu::ItemInstance* parent, bool log, bool silent, bool &error, int depth) { if (depth >= 10) { Log.Out(Logs::Detail, Logs::None, "[CLIENT] Client::InterrogateInventory_() - Recursion count has exceeded the maximum allowable (You have a REALLY BIG PROBLEM!!)"); @@ -3153,7 +3153,7 @@ void Client::InterrogateInventory_(bool errorcheck, Client* requester, int16 hea } else { if (inst) { - for (int16 sub = SUB_INDEX_BEGIN; (sub < EQEmu::legacy::ITEM_CONTAINER_SIZE) && (!error); ++sub) { // treat any ItemInst as having the max internal slots available + for (int16 sub = SUB_INDEX_BEGIN; (sub < EQEmu::legacy::ITEM_CONTAINER_SIZE) && (!error); ++sub) { // treat any EQEmu::ItemInstance as having the max internal slots available if (inst->GetItem(sub)) InterrogateInventory_(true, requester, head, sub, inst->GetItem(sub), inst, log, silent, error, depth + 1); } @@ -3193,7 +3193,7 @@ void Client::InterrogateInventory_(bool errorcheck, Client* requester, int16 hea return; } -bool Client::InterrogateInventory_error(int16 head, int16 index, const ItemInst* inst, const ItemInst* parent, int depth) +bool Client::InterrogateInventory_error(int16 head, int16 index, const EQEmu::ItemInstance* inst, const EQEmu::ItemInstance* parent, int depth) { // very basic error checking - can be elaborated upon if more in-depth testing is needed... @@ -3273,7 +3273,7 @@ bool Client::InterrogateInventory_error(int16 head, int16 index, const ItemInst* } void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::string identifier, std::string value) { - ItemInst *inst = GetItem(slot_id); + EQEmu::ItemInstance *inst = GetItem(slot_id); if(inst) { inst->SetCustomData(identifier, value); database.SaveInventory(character_id, inst, slot_id); @@ -3281,7 +3281,7 @@ void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::strin } void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::string identifier, int value) { - ItemInst *inst = GetItem(slot_id); + EQEmu::ItemInstance *inst = GetItem(slot_id); if(inst) { inst->SetCustomData(identifier, value); database.SaveInventory(character_id, inst, slot_id); @@ -3289,7 +3289,7 @@ void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::strin } void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::string identifier, float value) { - ItemInst *inst = GetItem(slot_id); + EQEmu::ItemInstance *inst = GetItem(slot_id); if(inst) { inst->SetCustomData(identifier, value); database.SaveInventory(character_id, inst, slot_id); @@ -3297,7 +3297,7 @@ void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::strin } void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::string identifier, bool value) { - ItemInst *inst = GetItem(slot_id); + EQEmu::ItemInstance *inst = GetItem(slot_id); if(inst) { inst->SetCustomData(identifier, value); database.SaveInventory(character_id, inst, slot_id); @@ -3305,7 +3305,7 @@ void Inventory::SetCustomItemData(uint32 character_id, int16 slot_id, std::strin } std::string Inventory::GetCustomItemData(int16 slot_id, std::string identifier) { - ItemInst *inst = GetItem(slot_id); + EQEmu::ItemInstance *inst = GetItem(slot_id); if(inst) { return inst->GetCustomData(identifier); } diff --git a/zone/loottables.cpp b/zone/loottables.cpp index 910331e27..2a43eda39 100644 --- a/zone/loottables.cpp +++ b/zone/loottables.cpp @@ -119,7 +119,7 @@ void ZoneDatabase::AddLootDropToNPC(NPC* npc,uint32 lootdrop_id, ItemList* iteml int charges = lds->Entries[i].multiplier; for(int j = 0; j < charges; ++j) { if(zone->random.Real(0.0, 100.0) <= lds->Entries[i].chance) { - const EQEmu::ItemBase* dbitem = GetItem(lds->Entries[i].item_id); + const EQEmu::ItemData* dbitem = GetItem(lds->Entries[i].item_id); npc->AddLootDrop(dbitem, itemlist, lds->Entries[i].item_charges, lds->Entries[i].minlevel, lds->Entries[i].maxlevel, lds->Entries[i].equip_item > 0 ? true : false, false); } @@ -140,7 +140,7 @@ void ZoneDatabase::AddLootDropToNPC(NPC* npc,uint32 lootdrop_id, ItemList* iteml float roll_t_min = 0.0f; bool active_item_list = false; for(uint32 i = 0; i < lds->NumEntries; ++i) { - const EQEmu::ItemBase* db_item = GetItem(lds->Entries[i].item_id); + const EQEmu::ItemData* db_item = GetItem(lds->Entries[i].item_id); if(db_item) { roll_t += lds->Entries[i].chance; active_item_list = true; @@ -157,7 +157,7 @@ void ZoneDatabase::AddLootDropToNPC(NPC* npc,uint32 lootdrop_id, ItemList* iteml for(int i = 0; i < mindrop; ++i) { float roll = (float)zone->random.Real(0.0, roll_t_min); for(uint32 j = 0; j < lds->NumEntries; ++j) { - const EQEmu::ItemBase* db_item = GetItem(lds->Entries[j].item_id); + const EQEmu::ItemData* db_item = GetItem(lds->Entries[j].item_id); if(db_item) { if(roll < lds->Entries[j].chance) { npc->AddLootDrop(db_item, itemlist, lds->Entries[j].item_charges, lds->Entries[j].minlevel, @@ -187,7 +187,7 @@ void ZoneDatabase::AddLootDropToNPC(NPC* npc,uint32 lootdrop_id, ItemList* iteml for(int i = mindrop; i < droplimit; ++i) { float roll = (float)zone->random.Real(0.0, roll_t); for(uint32 j = 0; j < lds->NumEntries; ++j) { - const EQEmu::ItemBase* db_item = GetItem(lds->Entries[j].item_id); + const EQEmu::ItemData* db_item = GetItem(lds->Entries[j].item_id); if(db_item) { if(roll < lds->Entries[j].chance) { npc->AddLootDrop(db_item, itemlist, lds->Entries[j].item_charges, lds->Entries[j].minlevel, @@ -221,7 +221,7 @@ void ZoneDatabase::AddLootDropToNPC(NPC* npc,uint32 lootdrop_id, ItemList* iteml } //if itemlist is null, just send wear changes -void NPC::AddLootDrop(const EQEmu::ItemBase *item2, ItemList* itemlist, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange) { +void NPC::AddLootDrop(const EQEmu::ItemData *item2, ItemList* itemlist, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange) { if(item2 == nullptr) return; @@ -258,7 +258,7 @@ void NPC::AddLootDrop(const EQEmu::ItemBase *item2, ItemList* itemlist, int16 ch if (equipit) { uint8 eslot = 0xFF; char newid[20]; - const EQEmu::ItemBase* compitem = nullptr; + const EQEmu::ItemData* compitem = nullptr; bool found = false; // track if we found an empty slot we fit into int32 foundslot = -1; // for multi-slot items @@ -415,14 +415,14 @@ void NPC::AddLootDrop(const EQEmu::ItemBase *item2, ItemList* itemlist, int16 ch SendAppearancePacket(AT_Light, GetActiveLightType()); } -void NPC::AddItem(const EQEmu::ItemBase* item, uint16 charges, bool equipitem) { +void NPC::AddItem(const EQEmu::ItemData* item, uint16 charges, bool equipitem) { //slot isnt needed, its determined from the item. AddLootDrop(item, &itemlist, charges, 1, 255, equipitem, equipitem); } void NPC::AddItem(uint32 itemid, uint16 charges, bool equipitem) { //slot isnt needed, its determined from the item. - const EQEmu::ItemBase * i = database.GetItem(itemid); + const EQEmu::ItemData * i = database.GetItem(itemid); if(i == nullptr) return; AddLootDrop(i, &itemlist, charges, 1, 255, equipitem, equipitem); diff --git a/zone/lua_client.cpp b/zone/lua_client.cpp index 403ca82aa..2e83c5625 100644 --- a/zone/lua_client.cpp +++ b/zone/lua_client.cpp @@ -1219,13 +1219,13 @@ Lua_Raid Lua_Client::GetRaid() { bool Lua_Client::PutItemInInventory(int slot_id, Lua_ItemInst inst) { Lua_Safe_Call_Bool(); - ItemInst *rinst = inst; + EQEmu::ItemInstance *rinst = inst; return self->PutItemInInventory(slot_id, *rinst, true); } bool Lua_Client::PushItemOnCursor(Lua_ItemInst inst) { Lua_Safe_Call_Bool(); - ItemInst *rinst = inst; + EQEmu::ItemInstance *rinst = inst; return self->PushItemOnCursor(*rinst, true); } diff --git a/zone/lua_inventory.cpp b/zone/lua_inventory.cpp index 498835926..0866eebc5 100644 --- a/zone/lua_inventory.cpp +++ b/zone/lua_inventory.cpp @@ -20,7 +20,7 @@ Lua_ItemInst Lua_Inventory::GetItem(int slot_id, int bag_slot) { int Lua_Inventory::PutItem(int slot_id, Lua_ItemInst item) { Lua_Safe_Call_Int(); - ItemInst *inst = item; + EQEmu::ItemInstance *inst = item; if(!inst) { return 0; } @@ -30,7 +30,7 @@ int Lua_Inventory::PutItem(int slot_id, Lua_ItemInst item) { int Lua_Inventory::PushCursor(Lua_ItemInst item) { Lua_Safe_Call_Int(); - ItemInst *inst = item; + EQEmu::ItemInstance *inst = item; if(!inst) { return 0; } diff --git a/zone/lua_item.cpp b/zone/lua_item.cpp index d6846abc0..67e7a1bd4 100644 --- a/zone/lua_item.cpp +++ b/zone/lua_item.cpp @@ -7,7 +7,7 @@ #include "lua_item.h" Lua_Item::Lua_Item(uint32 item_id) { - const EQEmu::ItemBase *t = database.GetItem(item_id); + const EQEmu::ItemData *t = database.GetItem(item_id); SetLuaPtrData(t); } diff --git a/zone/lua_item.h b/zone/lua_item.h index 74294f2a5..d5a32c41f 100644 --- a/zone/lua_item.h +++ b/zone/lua_item.h @@ -6,7 +6,7 @@ namespace EQEmu { - struct ItemBase; + struct ItemData; } namespace luabind { @@ -15,17 +15,17 @@ namespace luabind { luabind::scope lua_register_item(); -class Lua_Item : public Lua_Ptr +class Lua_Item : public Lua_Ptr { - typedef const EQEmu::ItemBase NativeType; + typedef const EQEmu::ItemData NativeType; public: Lua_Item(uint32 item_id); Lua_Item() : Lua_Ptr(nullptr) { } - Lua_Item(const EQEmu::ItemBase *d) : Lua_Ptr(d) { } + Lua_Item(const EQEmu::ItemData *d) : Lua_Ptr(d) { } virtual ~Lua_Item() { } - operator const EQEmu::ItemBase*() { - return reinterpret_cast(GetLuaPtrData()); + operator const EQEmu::ItemData*() { + return reinterpret_cast(GetLuaPtrData()); } int GetMinStatus(); diff --git a/zone/lua_iteminst.cpp b/zone/lua_iteminst.cpp index 0b6981358..7844a64bb 100644 --- a/zone/lua_iteminst.cpp +++ b/zone/lua_iteminst.cpp @@ -21,7 +21,7 @@ Lua_ItemInst::Lua_ItemInst(int item_id, int charges) { Lua_ItemInst& Lua_ItemInst::operator=(const Lua_ItemInst& o) { if(o.cloned_) { cloned_ = true; - d_ = new ItemInst(*o.d_); + d_ = new EQEmu::ItemInstance(*o.d_); } else { cloned_ = false; d_ = o.d_; @@ -32,7 +32,7 @@ Lua_ItemInst& Lua_ItemInst::operator=(const Lua_ItemInst& o) { Lua_ItemInst::Lua_ItemInst(const Lua_ItemInst& o) { if(o.cloned_) { cloned_ = true; - d_ = new ItemInst(*o.d_); + d_ = new EQEmu::ItemInstance(*o.d_); } else { cloned_ = false; d_ = o.d_; diff --git a/zone/lua_iteminst.h b/zone/lua_iteminst.h index f12d16983..98943d6dc 100644 --- a/zone/lua_iteminst.h +++ b/zone/lua_iteminst.h @@ -4,30 +4,34 @@ #include "lua_ptr.h" -class ItemInst; class Lua_Item; +namespace EQEmu +{ + class ItemInstance; +} + namespace luabind { struct scope; } luabind::scope lua_register_iteminst(); -class Lua_ItemInst : public Lua_Ptr +class Lua_ItemInst : public Lua_Ptr { - typedef ItemInst NativeType; + typedef EQEmu::ItemInstance NativeType; public: Lua_ItemInst(int item_id); Lua_ItemInst(int item_id, int charges); Lua_ItemInst() : Lua_Ptr(nullptr), cloned_(false) { } - Lua_ItemInst(ItemInst *d) : Lua_Ptr(d), cloned_(false) { } - Lua_ItemInst(ItemInst *d, bool cloned) : Lua_Ptr(d), cloned_(cloned) { } + Lua_ItemInst(EQEmu::ItemInstance *d) : Lua_Ptr(d), cloned_(false) { } + Lua_ItemInst(EQEmu::ItemInstance *d, bool cloned) : Lua_Ptr(d), cloned_(cloned) { } Lua_ItemInst& operator=(const Lua_ItemInst& o); Lua_ItemInst(const Lua_ItemInst& o); - virtual ~Lua_ItemInst() { if(cloned_) { ItemInst *ptr = GetLuaPtrData(); if(ptr) { delete ptr; } } } + virtual ~Lua_ItemInst() { if(cloned_) { EQEmu::ItemInstance *ptr = GetLuaPtrData(); if(ptr) { delete ptr; } } } - operator ItemInst*() { - return reinterpret_cast(GetLuaPtrData()); + operator EQEmu::ItemInstance*() { + return reinterpret_cast(GetLuaPtrData()); } bool IsType(int item_class); diff --git a/zone/lua_parser.cpp b/zone/lua_parser.cpp index ea23df73f..d28c592a4 100644 --- a/zone/lua_parser.cpp +++ b/zone/lua_parser.cpp @@ -422,7 +422,7 @@ int LuaParser::_EventPlayer(std::string package_name, QuestEventID evt, Client * return 0; } -int LuaParser::EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, +int LuaParser::EventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { evt = ConvertLuaEvent(evt); if(evt >= _LargestEventID) { @@ -442,7 +442,7 @@ int LuaParser::EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob * return _EventItem(package_name, evt, client, item, mob, data, extra_data, extra_pointers); } -int LuaParser::_EventItem(std::string package_name, QuestEventID evt, Client *client, ItemInst *item, Mob *mob, +int LuaParser::_EventItem(std::string package_name, QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers, luabind::adl::object *l_func) { const char *sub_name = LuaEvents[evt]; @@ -706,7 +706,7 @@ bool LuaParser::SpellHasQuestSub(uint32 spell_id, QuestEventID evt) { return HasFunction(subname, package_name); } -bool LuaParser::ItemHasQuestSub(ItemInst *itm, QuestEventID evt) { +bool LuaParser::ItemHasQuestSub(EQEmu::ItemInstance *itm, QuestEventID evt) { if (itm == nullptr) { return false; } @@ -752,7 +752,7 @@ void LuaParser::LoadGlobalPlayerScript(std::string filename) { LoadScript(filename, "global_player"); } -void LuaParser::LoadItemScript(std::string filename, ItemInst *item) { +void LuaParser::LoadItemScript(std::string filename, EQEmu::ItemInstance *item) { if (item == nullptr) return; std::string package_name = "item_"; @@ -1129,7 +1129,7 @@ int LuaParser::DispatchEventPlayer(QuestEventID evt, Client *client, std::string return ret; } -int LuaParser::DispatchEventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, +int LuaParser::DispatchEventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { evt = ConvertLuaEvent(evt); if(evt >= _LargestEventID) { diff --git a/zone/lua_parser.h b/zone/lua_parser.h index 1e4df4740..003c936ce 100644 --- a/zone/lua_parser.h +++ b/zone/lua_parser.h @@ -13,10 +13,14 @@ extern const ZoneConfig *Config; struct lua_State; -class ItemInst; class Client; class NPC; +namespace EQEmu +{ + class ItemInstance; +} + #include "lua_parser_events.h" struct lua_registered_event; @@ -39,7 +43,7 @@ public: std::vector *extra_pointers); virtual int EventGlobalPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers); - virtual int EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, + virtual int EventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); virtual int EventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers); @@ -51,14 +55,14 @@ public: virtual bool PlayerHasQuestSub(QuestEventID evt); virtual bool GlobalPlayerHasQuestSub(QuestEventID evt); virtual bool SpellHasQuestSub(uint32 spell_id, QuestEventID evt); - virtual bool ItemHasQuestSub(ItemInst *itm, QuestEventID evt); + virtual bool ItemHasQuestSub(EQEmu::ItemInstance *itm, QuestEventID evt); virtual bool EncounterHasQuestSub(std::string encounter_name, QuestEventID evt); virtual void LoadNPCScript(std::string filename, int npc_id); virtual void LoadGlobalNPCScript(std::string filename); virtual void LoadPlayerScript(std::string filename); virtual void LoadGlobalPlayerScript(std::string filename); - virtual void LoadItemScript(std::string filename, ItemInst *item); + virtual void LoadItemScript(std::string filename, EQEmu::ItemInstance *item); virtual void LoadSpellScript(std::string filename, uint32 spell_id); virtual void LoadEncounterScript(std::string filename, std::string encounter_name); @@ -72,7 +76,7 @@ public: std::vector *extra_pointers); virtual int DispatchEventPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers); - virtual int DispatchEventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, + virtual int DispatchEventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); virtual int DispatchEventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers); @@ -82,7 +86,7 @@ private: std::vector *extra_pointers, luabind::adl::object *l_func = nullptr); int _EventPlayer(std::string package_name, QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers, luabind::adl::object *l_func = nullptr); - int _EventItem(std::string package_name, QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, + int _EventItem(std::string package_name, QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers, luabind::adl::object *l_func = nullptr); int _EventSpell(std::string package_name, QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers, luabind::adl::object *l_func = nullptr); diff --git a/zone/lua_parser_events.cpp b/zone/lua_parser_events.cpp index 030e43689..f01af5a6d 100644 --- a/zone/lua_parser_events.cpp +++ b/zone/lua_parser_events.cpp @@ -58,7 +58,7 @@ void handle_npc_event_trade(QuestInterface *parse, lua_State* L, NPC* npc, Mob * size_t sz = extra_pointers->size(); for(size_t i = 0; i < sz; ++i) { std::string prefix = "item" + std::to_string(i + 1); - ItemInst *inst = EQEmu::any_cast(extra_pointers->at(i)); + EQEmu::ItemInstance *inst = EQEmu::any_cast(extra_pointers->at(i)); Lua_ItemInst l_inst = inst; luabind::adl::object l_inst_o = luabind::adl::object(L, l_inst); @@ -298,7 +298,7 @@ void handle_player_timer(QuestInterface *parse, lua_State* L, Client* client, st void handle_player_discover_item(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data, std::vector *extra_pointers) { - const EQEmu::ItemBase *item = database.GetItem(extra_data); + const EQEmu::ItemData *item = database.GetItem(extra_data); if(item) { Lua_Item l_item(item); luabind::adl::object l_item_o = luabind::adl::object(L, l_item); @@ -314,7 +314,7 @@ void handle_player_discover_item(QuestInterface *parse, lua_State* L, Client* cl void handle_player_fish_forage_success(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data, std::vector *extra_pointers) { - Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); + Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); luabind::adl::object l_item_o = luabind::adl::object(L, l_item); l_item_o.push(L); lua_setfield(L, -2, "item"); @@ -350,7 +350,7 @@ void handle_player_popup_response(QuestInterface *parse, lua_State* L, Client* c void handle_player_pick_up(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data, std::vector *extra_pointers) { - Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); + Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); luabind::adl::object l_item_o = luabind::adl::object(L, l_item); l_item_o.push(L); lua_setfield(L, -2, "item"); @@ -402,7 +402,7 @@ void handle_player_duel_loss(QuestInterface *parse, lua_State* L, Client* client void handle_player_loot(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data, std::vector *extra_pointers) { - Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); + Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); luabind::adl::object l_item_o = luabind::adl::object(L, l_item); l_item_o.push(L); lua_setfield(L, -2, "item"); @@ -506,19 +506,19 @@ void handle_player_null(QuestInterface *parse, lua_State* L, Client* client, std } //Item -void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { lua_pushinteger(L, extra_data); lua_setfield(L, -2, "slot_id"); } -void handle_item_timer(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_timer(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { lua_pushstring(L, data.c_str()); lua_setfield(L, -2, "timer"); } -void handle_item_proc(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_proc(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { Lua_Mob l_mob(mob); @@ -539,7 +539,7 @@ void handle_item_proc(QuestInterface *parse, lua_State* L, Client* client, ItemI } } -void handle_item_loot(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_loot(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { if(mob && mob->IsCorpse()) { Lua_Corpse l_corpse(mob->CastToCorpse()); @@ -554,15 +554,15 @@ void handle_item_loot(QuestInterface *parse, lua_State* L, Client* client, ItemI } } -void handle_item_equip(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_equip(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { lua_pushinteger(L, extra_data); lua_setfield(L, -2, "slot_id"); } -void handle_item_augment(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_augment(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { - Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); + Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); luabind::adl::object l_item_o = luabind::adl::object(L, l_item); l_item_o.push(L); lua_setfield(L, -2, "aug"); @@ -571,9 +571,9 @@ void handle_item_augment(QuestInterface *parse, lua_State* L, Client* client, It lua_setfield(L, -2, "slot_id"); } -void handle_item_augment_insert(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_augment_insert(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { - Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); + Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); luabind::adl::object l_item_o = luabind::adl::object(L, l_item); l_item_o.push(L); lua_setfield(L, -2, "item"); @@ -582,9 +582,9 @@ void handle_item_augment_insert(QuestInterface *parse, lua_State* L, Client* cli lua_setfield(L, -2, "slot_id"); } -void handle_item_augment_remove(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_augment_remove(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { - Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); + Lua_ItemInst l_item(EQEmu::any_cast(extra_pointers->at(0))); luabind::adl::object l_item_o = luabind::adl::object(L, l_item); l_item_o.push(L); lua_setfield(L, -2, "item"); @@ -596,7 +596,7 @@ void handle_item_augment_remove(QuestInterface *parse, lua_State* L, Client* cli lua_setfield(L, -2, "destroyed"); } -void handle_item_null(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_null(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { } diff --git a/zone/lua_parser_events.h b/zone/lua_parser_events.h index 0a2ab5ad9..42315ed0b 100644 --- a/zone/lua_parser_events.h +++ b/zone/lua_parser_events.h @@ -4,7 +4,7 @@ typedef void(*NPCArgumentHandler)(QuestInterface*, lua_State*, NPC*, Mob*, std::string, uint32, std::vector*); typedef void(*PlayerArgumentHandler)(QuestInterface*, lua_State*, Client*, std::string, uint32, std::vector*); -typedef void(*ItemArgumentHandler)(QuestInterface*, lua_State*, Client*, ItemInst*, Mob*, std::string, uint32, std::vector*); +typedef void(*ItemArgumentHandler)(QuestInterface*, lua_State*, Client*, EQEmu::ItemInstance*, Mob*, std::string, uint32, std::vector*); typedef void(*SpellArgumentHandler)(QuestInterface*, lua_State*, NPC*, Client*, uint32, uint32, std::vector*); typedef void(*EncounterArgumentHandler)(QuestInterface*, lua_State*, Encounter* encounter, std::string, uint32, std::vector*); @@ -97,23 +97,23 @@ void handle_player_null(QuestInterface *parse, lua_State* L, Client* client, std std::vector *extra_pointers); //Item -void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_timer(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_timer(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_proc(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_proc(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_loot(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_loot(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_equip(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_equip(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_augment(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_augment(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_augment_insert(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_augment_insert(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_augment_remove(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_augment_remove(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); -void handle_item_null(QuestInterface *parse, lua_State* L, Client* client, ItemInst* item, Mob *mob, std::string data, uint32 extra_data, +void handle_item_null(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); //Spell diff --git a/zone/merc.cpp b/zone/merc.cpp index c787d00c8..c9d177324 100644 --- a/zone/merc.cpp +++ b/zone/merc.cpp @@ -217,7 +217,7 @@ void Merc::CalcItemBonuses(StatBonuses* newbon) { for (i = 0; i < EQEmu::legacy::SlotAmmo; i++) { if(equipment[i] == 0) continue; - const EQEmu::ItemBase * itm = database.GetItem(equipment[i]); + const EQEmu::ItemData * itm = database.GetItem(equipment[i]); if(itm) AddItemBonuses(itm, newbon); } @@ -225,7 +225,7 @@ void Merc::CalcItemBonuses(StatBonuses* newbon) { //Power Source Slot /*if (GetClientVersion() >= EQClientSoF) { - const ItemInst* inst = m_inv[MainPowerSource]; + const EQEmu::ItemInstance* inst = m_inv[MainPowerSource]; if(inst) AddItemBonuses(inst, newbon); }*/ @@ -243,7 +243,7 @@ void Merc::CalcItemBonuses(StatBonuses* newbon) { SetAttackTimer(); } -void Merc::AddItemBonuses(const EQEmu::ItemBase *item, StatBonuses* newbon) { +void Merc::AddItemBonuses(const EQEmu::ItemData *item, StatBonuses* newbon) { if(GetLevel() < item->ReqLevel) { @@ -1221,7 +1221,7 @@ void Merc::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) { { continue; } - const ItemBase* item = database.GetItem(equipment[i]); + const ItemData* item = database.GetItem(equipment[i]); if(item) { ns->spawn.equipment[i].material = item->Material; @@ -2547,8 +2547,8 @@ int16 Merc::GetFocusEffect(focusType type, uint16 spell_id) { //Check if item focus effect exists for the client. if (itembonuses.FocusEffects[type]){ - const EQEmu::ItemBase* TempItem = 0; - const EQEmu::ItemBase* UsedItem = 0; + const EQEmu::ItemData* TempItem = 0; + const EQEmu::ItemData* UsedItem = 0; uint16 UsedFocusID = 0; int16 Total = 0; int16 focus_max = 0; @@ -4428,7 +4428,7 @@ void Merc::DoClassAttacks(Mob *target) { DoAnim(animKick); int32 dmg = 0; - if (GetWeaponDamage(target, (const EQEmu::ItemBase*)nullptr) <= 0){ + if (GetWeaponDamage(target, (const EQEmu::ItemData*)nullptr) <= 0){ dmg = -5; } else{ @@ -4450,7 +4450,7 @@ void Merc::DoClassAttacks(Mob *target) { DoAnim(animTailRake); int32 dmg = 0; - if (GetWeaponDamage(target, (const EQEmu::ItemBase*)nullptr) <= 0){ + if (GetWeaponDamage(target, (const EQEmu::ItemData*)nullptr) <= 0){ dmg = -5; } else{ diff --git a/zone/merc.h b/zone/merc.h index 00c953288..c78ec22b7 100644 --- a/zone/merc.h +++ b/zone/merc.h @@ -14,7 +14,7 @@ struct NewSpawn_Struct; namespace EQEmu { - struct ItemBase; + struct ItemData; } #define MAXMERCS 1 @@ -283,7 +283,7 @@ public: protected: void CalcItemBonuses(StatBonuses* newbon); - void AddItemBonuses(const EQEmu::ItemBase *item, StatBonuses* newbon); + void AddItemBonuses(const EQEmu::ItemData *item, StatBonuses* newbon); int CalcRecommendedLevelBonus(uint8 level, uint8 reclevel, int basestat); int16 GetFocusEffect(focusType type, uint16 spell_id); diff --git a/zone/mob.cpp b/zone/mob.cpp index 1caf69918..21409c695 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -2374,12 +2374,12 @@ bool Mob::CanThisClassDualWield(void) const { return(GetSkill(EQEmu::skills::SkillDualWield) > 0); } else if (CastToClient()->HasSkill(EQEmu::skills::SkillDualWield)) { - const ItemInst* pinst = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); - const ItemInst* sinst = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotSecondary); + const EQEmu::ItemInstance* pinst = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); + const EQEmu::ItemInstance* sinst = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotSecondary); // 2HS, 2HB, or 2HP if(pinst && pinst->IsWeapon()) { - const EQEmu::ItemBase* item = pinst->GetItem(); + const EQEmu::ItemData* item = pinst->GetItem(); if (item->IsType2HWeapon()) return false; @@ -2749,7 +2749,7 @@ void Mob::SendArmorAppearance(Client *one_client) { if (!IsClient()) { - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; for (int i = 0; i < 7; ++i) { item = database.GetItem(GetEquipment(i)); @@ -2852,7 +2852,7 @@ int32 Mob::GetEquipmentMaterial(uint8 material_slot) const { uint32 equipmaterial = 0; int32 ornamentationAugtype = RuleI(Character, OrnamentationAugmentType); - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; item = database.GetItem(GetEquipment(material_slot)); if (item != 0) @@ -2867,7 +2867,7 @@ int32 Mob::GetEquipmentMaterial(uint8 material_slot) const { return 0; } - const ItemInst* inst = CastToClient()->m_inv[invslot]; + const EQEmu::ItemInstance* inst = CastToClient()->m_inv[invslot]; if (inst) { if (inst->GetOrnamentationAug(ornamentationAugtype)) @@ -2905,7 +2905,7 @@ int32 Mob::GetHerosForgeModel(uint8 material_slot) const if (material_slot >= 0 && material_slot < EQEmu::textures::TexturePrimary) { uint32 ornamentationAugtype = RuleI(Character, OrnamentationAugmentType); - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; item = database.GetItem(GetEquipment(material_slot)); int16 invslot = Inventory::CalcSlotFromMaterial(material_slot); @@ -2913,7 +2913,7 @@ int32 Mob::GetHerosForgeModel(uint8 material_slot) const { if (IsClient()) { - const ItemInst* inst = CastToClient()->m_inv[invslot]; + const EQEmu::ItemInstance* inst = CastToClient()->m_inv[invslot]; if (inst) { if (inst->GetOrnamentationAug(ornamentationAugtype)) @@ -2959,7 +2959,7 @@ int32 Mob::GetHerosForgeModel(uint8 material_slot) const uint32 Mob::GetEquipmentColor(uint8 material_slot) const { - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; if (armor_tint.Slot[material_slot].Color) { @@ -2975,7 +2975,7 @@ uint32 Mob::GetEquipmentColor(uint8 material_slot) const uint32 Mob::IsEliteMaterialItem(uint8 material_slot) const { - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; item = database.GetItem(GetEquipment(material_slot)); if(item != 0) @@ -3187,7 +3187,7 @@ int32 Mob::GetActSpellCasttime(uint16 spell_id, int32 casttime) { return casttime; } -void Mob::ExecWeaponProc(const ItemInst *inst, uint16 spell_id, Mob *on, int level_override) { +void Mob::ExecWeaponProc(const EQEmu::ItemInstance *inst, uint16 spell_id, Mob *on, int level_override) { // Changed proc targets to look up based on the spells goodEffect flag. // This should work for the majority of weapons. if(spell_id == SPELL_UNKNOWN || on->GetSpecialAbility(NO_HARM_FROM_CLIENT)) { @@ -3208,9 +3208,9 @@ void Mob::ExecWeaponProc(const ItemInst *inst, uint16 spell_id, Mob *on, int lev if(inst && IsClient()) { //const cast is dirty but it would require redoing a ton of interfaces at this point - //It should be safe as we don't have any truly const ItemInst floating around anywhere. + //It should be safe as we don't have any truly const EQEmu::ItemInstance floating around anywhere. //So we'll live with it for now - int i = parse->EventItem(EVENT_WEAPON_PROC, CastToClient(), const_cast(inst), on, "", spell_id); + int i = parse->EventItem(EVENT_WEAPON_PROC, CastToClient(), const_cast(inst), on, "", spell_id); if(i != 0) { return; } @@ -3888,11 +3888,11 @@ void Mob::TrySympatheticProc(Mob *target, uint32 spell_id) int32 Mob::GetItemStat(uint32 itemid, const char *identifier) { - const ItemInst* inst = database.CreateItem(itemid); + const EQEmu::ItemInstance* inst = database.CreateItem(itemid); if (!inst) return 0; - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (!item) return 0; @@ -5623,7 +5623,7 @@ int32 Mob::GetSpellStat(uint32 spell_id, const char *identifier, uint8 slot) bool Mob::CanClassEquipItem(uint32 item_id) { - const EQEmu::ItemBase* itm = nullptr; + const EQEmu::ItemData* itm = nullptr; itm = database.GetItem(item_id); if (!itm) @@ -5692,9 +5692,9 @@ int32 Mob::GetMeleeMitigation() { } /* this is the mob being attacked. - * Pass in the weapon's ItemInst + * Pass in the weapon's EQEmu::ItemInstance */ -int Mob::ResistElementalWeaponDmg(const ItemInst *item) +int Mob::ResistElementalWeaponDmg(const EQEmu::ItemInstance *item) { if (!item) return 0; @@ -5844,9 +5844,9 @@ int Mob::ResistElementalWeaponDmg(const ItemInst *item) } /* this is the mob being attacked. - * Pass in the weapon's ItemInst + * Pass in the weapon's EQEmu::ItemInstance */ -int Mob::CheckBaneDamage(const ItemInst *item) +int Mob::CheckBaneDamage(const EQEmu::ItemInstance *item) { if (!item) return 0; diff --git a/zone/mob.h b/zone/mob.h index c09da4e0b..120e1f116 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -43,7 +43,6 @@ class EGNode; class Client; class EQApplicationPacket; class Group; -class ItemInst; class NPC; class Raid; struct NewSpawn_Struct; @@ -51,7 +50,8 @@ struct PlayerPositionUpdateServer_Struct; namespace EQEmu { - struct ItemBase; + struct ItemData; + class ItemInstance; } class Mob : public Entity { @@ -215,7 +215,7 @@ public: inline bool SeeImprovedHide() const { return see_improved_hide; } bool IsInvisible(Mob* other = 0) const; void SetInvisible(uint8 state); - bool AttackAnimation(EQEmu::skills::SkillType &skillinuse, int Hand, const ItemInst* weapon); + bool AttackAnimation(EQEmu::skills::SkillType &skillinuse, int Hand, const EQEmu::ItemInstance* weapon); //Song bool UseBardSpellLogic(uint16 spell_id = 0xffff, int slot = -1); @@ -242,8 +242,8 @@ public: int resist_override = 0, bool CharismaCheck = false, bool CharmTick = false, bool IsRoot = false, int level_override = -1); int ResistPhysical(int level_diff, uint8 caster_level); - int ResistElementalWeaponDmg(const ItemInst *item); - int CheckBaneDamage(const ItemInst *item); + int ResistElementalWeaponDmg(const EQEmu::ItemInstance *item); + int CheckBaneDamage(const EQEmu::ItemInstance *item); uint16 GetSpecializeSkillValue(uint16 spell_id) const; void SendSpellBarDisable(); void SendSpellBarEnable(uint16 spellid); @@ -774,7 +774,7 @@ public: virtual int GetHaste(); int32 GetMeleeMitigation(); - uint8 GetWeaponDamageBonus(const EQEmu::ItemBase* weapon, bool offhand = false); + uint8 GetWeaponDamageBonus(const EQEmu::ItemData* weapon, bool offhand = false); uint16 GetDamageTable(EQEmu::skills::SkillType skillinuse); virtual int GetHandToHandDamage(void); @@ -799,10 +799,10 @@ public: int32 ReduceAllDamage(int32 damage); virtual void DoSpecialAttackDamage(Mob *who, EQEmu::skills::SkillType skill, int32 max_damage, int32 min_damage = 1, int32 hate_override = -1, int ReuseTime = 10, bool CheckHitChance = false, bool CanAvoid = true); - virtual void DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon = nullptr, const EQEmu::ItemBase* AmmoItem = nullptr, uint16 weapon_damage = 0, int16 chance_mod = 0, int16 focus = 0, int ReuseTime = 0, uint32 range_id = 0, int AmmoSlot = 0, float speed = 4.0f); + virtual void DoThrowingAttackDmg(Mob* other, const EQEmu::ItemInstance* RangeWeapon = nullptr, const EQEmu::ItemData* AmmoItem = nullptr, uint16 weapon_damage = 0, int16 chance_mod = 0, int16 focus = 0, int ReuseTime = 0, uint32 range_id = 0, int AmmoSlot = 0, float speed = 4.0f); virtual void DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, EQEmu::skills::SkillType skillinuse, int16 chance_mod = 0, int16 focus = 0, bool CanRiposte = false, int ReuseTime = 0); - virtual void DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon = nullptr, const ItemInst* Ammo = nullptr, uint16 weapon_damage = 0, int16 chance_mod = 0, int16 focus = 0, int ReuseTime = 0, uint32 range_id = 0, uint32 ammo_id = 0, const EQEmu::ItemBase *AmmoItem = nullptr, int AmmoSlot = 0, float speed = 4.0f); - bool TryProjectileAttack(Mob* other, const EQEmu::ItemBase *item, EQEmu::skills::SkillType skillInUse, uint16 weapon_dmg, const ItemInst* RangeWeapon, const ItemInst* Ammo, int AmmoSlot, float speed); + virtual void DoArcheryAttackDmg(Mob* other, const EQEmu::ItemInstance* RangeWeapon = nullptr, const EQEmu::ItemInstance* Ammo = nullptr, uint16 weapon_damage = 0, int16 chance_mod = 0, int16 focus = 0, int ReuseTime = 0, uint32 range_id = 0, uint32 ammo_id = 0, const EQEmu::ItemData *AmmoItem = nullptr, int AmmoSlot = 0, float speed = 4.0f); + bool TryProjectileAttack(Mob* other, const EQEmu::ItemData *item, EQEmu::skills::SkillType skillInUse, uint16 weapon_dmg, const EQEmu::ItemInstance* RangeWeapon, const EQEmu::ItemInstance* Ammo, int AmmoSlot, float speed); void ProjectileAttack(); inline bool HasProjectileAttack() const { return ActiveProjectileATK; } inline void SetProjectileAttack(bool value) { ActiveProjectileATK = value; } @@ -921,7 +921,7 @@ public: // HP Event inline int GetNextHPEvent() const { return nexthpevent; } void SetNextHPEvent( int hpevent ); - void SendItemAnimation(Mob *to, const EQEmu::ItemBase *item, EQEmu::skills::SkillType skillInUse, float velocity = 4.0); + void SendItemAnimation(Mob *to, const EQEmu::ItemData *item, EQEmu::skills::SkillType skillInUse, float velocity = 4.0); inline int& GetNextIncHPEvent() { return nextinchpevent; } void SetNextIncHPEvent( int inchpevent ); @@ -985,9 +985,9 @@ public: int32 mod_frenzy_damage(int32 dmg); int32 mod_monk_special_damage(int32 ndamage, EQEmu::skills::SkillType skill_type); int32 mod_backstab_damage(int32 ndamage); - int mod_archery_bonus_chance(int bonuschance, const ItemInst* RangeWeapon); - uint32 mod_archery_bonus_damage(uint32 MaxDmg, const ItemInst* RangeWeapon); - int32 mod_archery_damage(int32 TotalDmg, bool hasbonus, const ItemInst* RangeWeapon); + int mod_archery_bonus_chance(int bonuschance, const EQEmu::ItemInstance* RangeWeapon); + uint32 mod_archery_bonus_damage(uint32 MaxDmg, const EQEmu::ItemInstance* RangeWeapon); + int32 mod_archery_damage(int32 TotalDmg, bool hasbonus, const EQEmu::ItemInstance* RangeWeapon); uint16 mod_throwing_damage(uint16 MaxDmg); int32 mod_cast_time(int32 cast_time); int mod_buff_duration(int res, Mob* caster, Mob* target, uint16 spell_id); @@ -1159,18 +1159,18 @@ protected: bool PassLimitToSkill(uint16 spell_id, uint16 skill); bool PassLimitClass(uint32 Classes_, uint16 Class_); void TryDefensiveProc(Mob *on, uint16 hand = EQEmu::legacy::SlotPrimary); - void TryWeaponProc(const ItemInst* inst, const EQEmu::ItemBase* weapon, Mob *on, uint16 hand = EQEmu::legacy::SlotPrimary); - void TrySpellProc(const ItemInst* inst, const EQEmu::ItemBase* weapon, Mob *on, uint16 hand = EQEmu::legacy::SlotPrimary); - void TryWeaponProc(const ItemInst* weapon, Mob *on, uint16 hand = EQEmu::legacy::SlotPrimary); - void ExecWeaponProc(const ItemInst* weapon, uint16 spell_id, Mob *on, int level_override = -1); + void TryWeaponProc(const EQEmu::ItemInstance* inst, const EQEmu::ItemData* weapon, Mob *on, uint16 hand = EQEmu::legacy::SlotPrimary); + void TrySpellProc(const EQEmu::ItemInstance* inst, const EQEmu::ItemData* weapon, Mob *on, uint16 hand = EQEmu::legacy::SlotPrimary); + void TryWeaponProc(const EQEmu::ItemInstance* weapon, Mob *on, uint16 hand = EQEmu::legacy::SlotPrimary); + void ExecWeaponProc(const EQEmu::ItemInstance* weapon, uint16 spell_id, Mob *on, int level_override = -1); virtual float GetProcChances(float ProcBonus, uint16 hand = EQEmu::legacy::SlotPrimary); virtual float GetDefensiveProcChances(float &ProcBonus, float &ProcChance, uint16 hand = EQEmu::legacy::SlotPrimary, Mob *on = nullptr); virtual float GetSpecialProcChances(uint16 hand); virtual float GetAssassinateProcChances(uint16 ReuseTime); virtual float GetSkillProcChances(uint16 ReuseTime, uint16 hand = 0); // hand = MainCharm? uint16 GetWeaponSpeedbyHand(uint16 hand); - int GetWeaponDamage(Mob *against, const EQEmu::ItemBase *weapon_item); - int GetWeaponDamage(Mob *against, const ItemInst *weapon_item, uint32 *hate = nullptr); + int GetWeaponDamage(Mob *against, const EQEmu::ItemData *weapon_item); + int GetWeaponDamage(Mob *against, const EQEmu::ItemInstance *weapon_item, uint32 *hate = nullptr); int GetKickDamage(); int GetBashDamage(); virtual void ApplySpecialAttackMod(EQEmu::skills::SkillType skill, int32 &dmg, int32 &mindmg); diff --git a/zone/mod_functions.cpp b/zone/mod_functions.cpp index 601041361..ca9a5e107 100644 --- a/zone/mod_functions.cpp +++ b/zone/mod_functions.cpp @@ -5,11 +5,15 @@ #include "worldserver.h" #include "zone.h" -class ItemInst; class Spawn2; struct Consider_Struct; struct DBTradeskillRecipe_Struct; +namespace EQEmu +{ + class ItemInstance; +} + extern EntityList entity_list; extern Zone* zone; @@ -25,7 +29,7 @@ void Zone::mod_repop() { return; } void NPC::mod_prespawn(Spawn2 *sp) { return; } //Base damage from NPC::Attack -int NPC::mod_npc_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const EQEmu::ItemBase* weapon, Mob* other) { return(damage); } +int NPC::mod_npc_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const EQEmu::ItemData* weapon, Mob* other) { return(damage); } //Mob c has been given credit for a kill. This is called after the regular EVENT_KILLED_MERIT event. void NPC::mod_npc_killed_merit(Mob* c) { return; } @@ -34,7 +38,7 @@ void NPC::mod_npc_killed_merit(Mob* c) { return; } void NPC::mod_npc_killed(Mob* oos) { return; } //Base damage from Client::Attack - can cover myriad skill types -int Client::mod_client_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const ItemInst* weapon, Mob* other) { return(damage); } +int Client::mod_client_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const EQEmu::ItemInstance* weapon, Mob* other) { return(damage); } //message is char[4096], don't screw it up. Return true for normal behavior, false to return immediately. // Channels: @@ -87,7 +91,7 @@ float Client::mod_tradeskill_chance(float chance, DBTradeskillRecipe_Struct *spe float Client::mod_tradeskill_skillup(float chance_stage2) { return(chance_stage2); } //Tribute value override -int32 Client::mod_tribute_item_value(int32 pts, const ItemInst* item) { return(pts); } +int32 Client::mod_tribute_item_value(int32 pts, const EQEmu::ItemInstance* item) { return(pts); } //Death reporting void Client::mod_client_death_npc(Mob* killerMob) { return; } @@ -103,8 +107,8 @@ int32 Client::mod_client_xp(int32 in_xp, NPC *npc) { return(in_xp); } uint32 Client::mod_client_xp_for_level(uint32 xp, uint16 check_level) { return(xp); } //Food and drink values as computed by consume requests. Return < 0 to abort the request. -int Client::mod_food_value(const EQEmu::ItemBase *item, int change) { return(change); } -int Client::mod_drink_value(const EQEmu::ItemBase *item, int change) { return(change); } +int Client::mod_food_value(const EQEmu::ItemData *item, int change) { return(change); } +int Client::mod_drink_value(const EQEmu::ItemData *item, int change) { return(change); } //effect_vallue - Spell effect value as calculated by default formulas. You will want to ignore effects that don't lend themselves to scaling - pet ID's, gate coords, etc. int Mob::mod_effect_value(int effect_value, uint16 spell_id, int effect_type, Mob* caster, uint16 caster_id) { return(effect_value); } @@ -148,13 +152,13 @@ int32 Mob::mod_monk_special_damage(int32 ndamage, EQEmu::skills::SkillType skill int32 Mob::mod_backstab_damage(int32 ndamage) { return(ndamage); } //Chance for 50+ archery bonus damage if Combat:UseArcheryBonusRoll is true. Base is Combat:ArcheryBonusChance -int Mob::mod_archery_bonus_chance(int bonuschance, const ItemInst* RangeWeapon) { return(bonuschance); } +int Mob::mod_archery_bonus_chance(int bonuschance, const EQEmu::ItemInstance* RangeWeapon) { return(bonuschance); } //Archery bonus damage -uint32 Mob::mod_archery_bonus_damage(uint32 MaxDmg, const ItemInst* RangeWeapon) { return(MaxDmg); } +uint32 Mob::mod_archery_bonus_damage(uint32 MaxDmg, const EQEmu::ItemInstance* RangeWeapon) { return(MaxDmg); } //Final archery damage including bonus if it was applied. -int32 Mob::mod_archery_damage(int32 TotalDmg, bool hasbonus, const ItemInst* RangeWeapon) { return(TotalDmg); } +int32 Mob::mod_archery_damage(int32 TotalDmg, bool hasbonus, const EQEmu::ItemInstance* RangeWeapon) { return(TotalDmg); } //Thrown weapon damage after all other calcs uint16 Mob::mod_throwing_damage(uint16 MaxDmg) { return(MaxDmg); } diff --git a/zone/npc.cpp b/zone/npc.cpp index d958ff598..78c4604ea 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -525,7 +525,7 @@ void NPC::QueryLoot(Client* to) int x = 0; for (auto cur = itemlist.begin(); cur != itemlist.end(); ++cur, ++x) { - const EQEmu::ItemBase* item = database.GetItem((*cur)->item_id); + const EQEmu::ItemData* item = database.GetItem((*cur)->item_id); if (item == nullptr) { Log.Out(Logs::General, Logs::Error, "Database error, invalid item"); continue; @@ -1462,7 +1462,7 @@ void NPC::PickPocket(Client* thief) // still needs to have FindFreeSlot vs PutItemInInventory issue worked out while (steal_item) { - std::vector> loot_selection; // + std::vector> loot_selection; // for (auto item_iter : itemlist) { if (!item_iter || !item_iter->item_id) continue; diff --git a/zone/npc.h b/zone/npc.h index d3e7928a2..0230b550f 100644 --- a/zone/npc.h +++ b/zone/npc.h @@ -93,7 +93,7 @@ class Spawn2; namespace EQEmu { - struct ItemBase; + struct ItemData; } class NPC : public Mob @@ -178,7 +178,7 @@ public: virtual void SpellProcess(); virtual void FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho); - void AddItem(const EQEmu::ItemBase* item, uint16 charges, bool equipitem = true); + void AddItem(const EQEmu::ItemData* item, uint16 charges, bool equipitem = true); void AddItem(uint32 itemid, uint16 charges, bool equipitem = true); void AddLootTable(); void AddLootTable(uint32 ldid); @@ -270,7 +270,7 @@ public: bool IsTaunting() const { return taunting; } void PickPocket(Client* thief); void StartSwarmTimer(uint32 duration) { swarm_timer.Start(duration); } - void AddLootDrop(const EQEmu::ItemBase*dbitem, ItemList* itemlistconst, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange = false); + void AddLootDrop(const EQEmu::ItemData*dbitem, ItemList* itemlistconst, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange = false); virtual void DoClassAttacks(Mob *target); void CheckSignal(); inline bool IsNotTargetableWithHotkey() const { return no_target_hotkey; } @@ -403,7 +403,7 @@ public: void SetMerchantProbability(uint8 amt) { probability = amt; } uint8 GetMerchantProbability() { return probability; } void mod_prespawn(Spawn2 *sp); - int mod_npc_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const EQEmu::ItemBase* weapon, Mob* other); + int mod_npc_damage(int damage, EQEmu::skills::SkillType skillinuse, int hand, const EQEmu::ItemData* weapon, Mob* other); void mod_npc_killed_merit(Mob* c); void mod_npc_killed(Mob* oos); void AISpellsList(Client *c); diff --git a/zone/object.cpp b/zone/object.cpp index ab9637e96..a2bb912bc 100644 --- a/zone/object.cpp +++ b/zone/object.cpp @@ -37,7 +37,7 @@ extern Zone* zone; extern EntityList entity_list; // Loading object from database -Object::Object(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, const ItemInst* inst) +Object::Object(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, const EQEmu::ItemInstance* inst) : respawn_timer(0), decay_timer(300000) { @@ -69,7 +69,7 @@ Object::Object(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, } //creating a re-ocurring ground spawn. -Object::Object(const ItemInst* inst, char* name,float max_x,float min_x,float max_y,float min_y,float z,float heading,uint32 respawntimer) +Object::Object(const EQEmu::ItemInstance* inst, char* name,float max_x,float min_x,float max_y,float min_y,float z,float heading,uint32 respawntimer) : respawn_timer(respawntimer), decay_timer(300000) { @@ -102,7 +102,7 @@ Object::Object(const ItemInst* inst, char* name,float max_x,float min_x,float ma } // Loading object from client dropping item on ground -Object::Object(Client* client, const ItemInst* inst) +Object::Object(Client* client, const EQEmu::ItemInstance* inst) : respawn_timer(0), decay_timer(300000) { user = nullptr; @@ -141,7 +141,7 @@ Object::Object(Client* client, const ItemInst* inst) // Set object name if (inst) { - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (item && item->IDFile) { if (strlen(item->IDFile) == 0) { strcpy(m_data.object_name, DEFAULT_OBJECT_NAME); @@ -164,7 +164,7 @@ Object::Object(Client* client, const ItemInst* inst) } } -Object::Object(const ItemInst *inst, float x, float y, float z, float heading, uint32 decay_time) +Object::Object(const EQEmu::ItemInstance *inst, float x, float y, float z, float heading, uint32 decay_time) : respawn_timer(0), decay_timer(decay_time) { user = nullptr; @@ -197,7 +197,7 @@ Object::Object(const ItemInst *inst, float x, float y, float z, float heading, u // Set object name if (inst) { - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (item && item->IDFile) { if (strlen(item->IDFile) == 0) { strcpy(m_data.object_name, DEFAULT_OBJECT_NAME); @@ -225,8 +225,8 @@ Object::Object(const char *model, float x, float y, float z, float heading, uint { user = nullptr; last_user = nullptr; - ItemInst* inst = nullptr; - inst = new ItemInst(ItemInstWorldContainer); + EQEmu::ItemInstance* inst = nullptr; + inst = new EQEmu::ItemInstance(ItemInstWorldContainer); // Initialize members m_id = 0; @@ -326,7 +326,7 @@ void Object::Delete(bool reset_state) } } -const ItemInst* Object::GetItem(uint8 index) { +const EQEmu::ItemInstance* Object::GetItem(uint8 index) { if (index < EQEmu::legacy::TYPE_WORLD_SIZE) { return m_inst->GetItem(index); } @@ -335,7 +335,7 @@ const ItemInst* Object::GetItem(uint8 index) { } // Add item to object (only logical for world tradeskill containers -void Object::PutItem(uint8 index, const ItemInst* inst) +void Object::PutItem(uint8 index, const EQEmu::ItemInstance* inst) { if (index > 9) { Log.Out(Logs::General, Logs::Error, "Object::PutItem: Invalid index specified (%i)", index); @@ -362,12 +362,12 @@ void Object::Close() { last_user = user; // put any remaining items from the world container back into the player's inventory to avoid item loss // if they close the container without removing all items - ItemInst* container = this->m_inst; + EQEmu::ItemInstance* container = this->m_inst; if(container != nullptr) { for (uint8 i = SUB_INDEX_BEGIN; i < EQEmu::legacy::ITEM_CONTAINER_SIZE; i++) { - ItemInst* inst = container->PopItem(i); + EQEmu::ItemInstance* inst = container->PopItem(i); if(inst != nullptr) { user->MoveItemToInventory(inst, true); @@ -392,9 +392,9 @@ void Object::DeleteItem(uint8 index) } // Pop item out of container -ItemInst* Object::PopItem(uint8 index) +EQEmu::ItemInstance* Object::PopItem(uint8 index) { - ItemInst* inst = nullptr; + EQEmu::ItemInstance* inst = nullptr; if (m_inst && m_inst->IsType(EQEmu::item::ItemClassBag)) { inst = m_inst->PopItem(index); @@ -603,7 +603,7 @@ bool Object::HandleClick(Client* sender, const ClickObject_Struct* click_object) sender->QueuePacket(outapp); safe_delete(outapp); for (uint8 i = SUB_INDEX_BEGIN; i < EQEmu::legacy::ITEM_CONTAINER_SIZE; i++) { - const ItemInst* inst = m_inst->GetItem(i); + const EQEmu::ItemInstance* inst = m_inst->GetItem(i); if (inst) { //sender->GetInv().PutItem(i+4000,inst); sender->SendItemPacket(i, inst, ItemPacketWorldContainer); @@ -616,7 +616,7 @@ bool Object::HandleClick(Client* sender, const ClickObject_Struct* click_object) } // Add new Zone Object (theoretically only called for items dropped to ground) -uint32 ZoneDatabase::AddObject(uint32 type, uint32 icon, const Object_Struct& object, const ItemInst* inst) +uint32 ZoneDatabase::AddObject(uint32 type, uint32 icon, const Object_Struct& object, const EQEmu::ItemInstance* inst) { uint32 database_id = 0; uint32 item_id = 0; @@ -654,7 +654,7 @@ uint32 ZoneDatabase::AddObject(uint32 type, uint32 icon, const Object_Struct& ob } // Update information about existing object in database -void ZoneDatabase::UpdateObject(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, const ItemInst* inst) +void ZoneDatabase::UpdateObject(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, const EQEmu::ItemInstance* inst) { uint32 item_id = 0; int16 charges = 0; @@ -945,7 +945,7 @@ uint32 Object::GetItemID() return 0; } - const EQEmu::ItemBase* item = this->m_inst->GetItem(); + const EQEmu::ItemData* item = this->m_inst->GetItem(); if (item == 0) { diff --git a/zone/object.h b/zone/object.h index 23c152cea..1afe574ea 100644 --- a/zone/object.h +++ b/zone/object.h @@ -29,7 +29,11 @@ class Client; class EQApplicationPacket; -class ItemInst; + +namespace EQEmu +{ + class ItemInstance; +} /* item icon numbers (showeq) @@ -89,11 +93,11 @@ class Object: public Entity { public: // Loading object from database - Object(uint32 id, uint32 type, uint32 icon, const Object_Struct& data, const ItemInst* inst); - Object(const ItemInst* inst, char* name,float max_x,float min_x,float max_y,float min_y,float z,float heading,uint32 respawntimer); + Object(uint32 id, uint32 type, uint32 icon, const Object_Struct& data, const EQEmu::ItemInstance* inst); + Object(const EQEmu::ItemInstance* inst, char* name,float max_x,float min_x,float max_y,float min_y,float z,float heading,uint32 respawntimer); // Loading object from client dropping item on ground - Object(Client* client, const ItemInst* inst); - Object(const ItemInst *inst, float x, float y, float z, float heading, uint32 decay_time = 300000); + Object(Client* client, const EQEmu::ItemInstance* inst); + Object(const EQEmu::ItemInstance *inst, float x, float y, float z, float heading, uint32 decay_time = 300000); Object(const char *model, float x, float y, float z, float heading, uint8 type, uint32 decay_time = 0); // Destructor @@ -120,10 +124,10 @@ public: void StartDecay() {decay_timer.Start();} // Container functions - const ItemInst* GetItem(uint8 index); - void PutItem(uint8 index, const ItemInst* inst); + const EQEmu::ItemInstance* GetItem(uint8 index); + void PutItem(uint8 index, const EQEmu::ItemInstance* inst); void DeleteItem(uint8 index); // Item inside container - ItemInst* PopItem(uint8 index); // Pop item out of container + EQEmu::ItemInstance* PopItem(uint8 index); // Pop item out of container // Override base class implementations virtual bool IsObject() const { return true; } @@ -176,7 +180,7 @@ protected: void RandomSpawn(bool send_packet = false); //spawn this ground spawn at a random place Object_Struct m_data; // Packet data - ItemInst* m_inst; // Item representing object + EQEmu::ItemInstance* m_inst; // Item representing object bool m_inuse; // Currently in use by a client? uint32 m_id; // Database key, different than drop_id uint32 m_type; // Object Type, ie, forge, oven, dropped item, etc (ref: ContainerUseTypes) diff --git a/zone/perl_client.cpp b/zone/perl_client.cpp index de334d5d0..65ff5a4e0 100644 --- a/zone/perl_client.cpp +++ b/zone/perl_client.cpp @@ -4324,7 +4324,7 @@ XS(XS_Client_GetItemAt) Perl_croak(aTHX_ "Usage: Client::GetItemAt(THIS, slot)"); { Client * THIS; - ItemInst * RETVAL; + EQEmu::ItemInstance * RETVAL; uint32 slot = (int32)SvIV(ST(1)); if (sv_derived_from(ST(0), "Client")) { @@ -4351,7 +4351,7 @@ XS(XS_Client_GetAugmentAt) Perl_croak(aTHX_ "Usage: Client::GetAugmentAt(THIS, slot, aug_slot)"); { Client * THIS; - ItemInst * RETVAL; + EQEmu::ItemInstance * RETVAL; uint32 slot = (int32)SvIV(ST(1)); uint32 aug_slot = (int32)SvIV(ST(1)); @@ -4364,7 +4364,7 @@ XS(XS_Client_GetAugmentAt) if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); - ItemInst * inst = THIS->GetInv().GetItem(slot); + EQEmu::ItemInstance * inst = THIS->GetInv().GetItem(slot); if(inst) { RETVAL = inst->GetAugment(aug_slot); @@ -5627,7 +5627,7 @@ XS(XS_Client_GetItemInInventory) { Client * THIS; int16 slot_id = (int16)SvIV(ST(1)); - ItemInst *RETVAL = nullptr; + EQEmu::ItemInstance *RETVAL = nullptr; if (sv_derived_from(ST(0), "Client")) { IV tmp = SvIV((SV*)SvRV(ST(0))); diff --git a/zone/perl_mob.cpp b/zone/perl_mob.cpp index f171d8d79..9af0fa43f 100644 --- a/zone/perl_mob.cpp +++ b/zone/perl_mob.cpp @@ -8092,8 +8092,8 @@ XS(XS_Mob_DoArcheryAttackDmg) { Mob * THIS; Mob* target; - ItemInst* RangeWeapon = nullptr; - ItemInst* Ammo = nullptr; + EQEmu::ItemInstance* RangeWeapon = nullptr; + EQEmu::ItemInstance* Ammo = nullptr; uint16 weapon_damage = (uint16)SvIV(ST(4)); int16 chance_mod = (int16)SvIV(ST(5)); int16 focus = (int16)SvIV(ST(6)); @@ -8130,8 +8130,8 @@ XS(XS_Mob_DoThrowingAttackDmg) { Mob * THIS; Mob* target; - ItemInst* RangeWeapon = nullptr; - EQEmu::ItemBase* item = nullptr; + EQEmu::ItemInstance* RangeWeapon = nullptr; + EQEmu::ItemData* item = nullptr; uint16 weapon_damage = (uint16)SvIV(ST(4)); int16 chance_mod = (int16)SvIV(ST(5)); int16 focus = (int16)SvIV(ST(6)); diff --git a/zone/perl_questitem.cpp b/zone/perl_questitem.cpp index 053748e97..742a00814 100644 --- a/zone/perl_questitem.cpp +++ b/zone/perl_questitem.cpp @@ -38,16 +38,16 @@ XS(XS_QuestItem_GetName) { if (items != 1) Perl_croak(aTHX_ "Usage: QuestItem::GetName(THIS)"); { - ItemInst * THIS; + EQEmu::ItemInstance * THIS; Const_char * RETVAL; dXSTARG; if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); @@ -64,15 +64,15 @@ XS(XS_QuestItem_SetScale) if (items != 2) Perl_croak(aTHX_ "Usage: QuestItem::SetScale(THIS, scale factor)"); { - ItemInst * THIS; + EQEmu::ItemInstance * THIS; float Mult; if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); @@ -92,16 +92,16 @@ XS(XS_QuestItem_ItemSay) if (items != 2 && items != 3) Perl_croak(aTHX_ "Usage: QuestItem::ItemSay(THIS, text [, language])"); { - ItemInst* THIS; + EQEmu::ItemInstance* THIS; Const_char* text; int lang = 0; if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); @@ -121,16 +121,16 @@ XS(XS_QuestItem_IsType) if (items != 2) Perl_croak(aTHX_ "Usage: QuestItem::IsType(THIS, type)"); { - ItemInst* THIS; + EQEmu::ItemInstance* THIS; bool RETVAL; uint32 type = (int32)SvIV(ST(1)); if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); @@ -148,15 +148,15 @@ XS(XS_QuestItem_IsAttuned) if (items != 1) Perl_croak(aTHX_ "Usage: QuestItem::IsAttuned(THIS)"); { - ItemInst* THIS; + EQEmu::ItemInstance* THIS; bool RETVAL; if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); @@ -174,16 +174,16 @@ XS(XS_QuestItem_GetCharges) if (items != 1) Perl_croak(aTHX_ "Usage: QuestItem::GetCharges(THIS)"); { - ItemInst* THIS; + EQEmu::ItemInstance* THIS; int16 RETVAL; dXSTARG; if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); @@ -200,16 +200,16 @@ XS(XS_QuestItem_GetAugment) if (items != 2) Perl_croak(aTHX_ "Usage: QuestItem::GetAugment(THIS, augment_id)"); { - ItemInst* THIS; + EQEmu::ItemInstance* THIS; int16 slot_id = (int16)SvIV(ST(1)); - ItemInst* RETVAL; + EQEmu::ItemInstance* RETVAL; if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); @@ -227,16 +227,16 @@ XS(XS_QuestItem_GetID) if (items != 1) Perl_croak(aTHX_ "Usage: QuestItem::GetID(THIS)"); { - ItemInst* THIS; + EQEmu::ItemInstance* THIS; uint32 RETVAL; dXSTARG; if (sv_derived_from(ST(0), "QuestItem")) { IV tmp = SvIV((SV*)SvRV(ST(0))); - THIS = INT2PTR(ItemInst *,tmp); + THIS = INT2PTR(EQEmu::ItemInstance *,tmp); } else - Perl_croak(aTHX_ "THIS is not of type ItemInst"); + Perl_croak(aTHX_ "THIS is not of type EQEmu::ItemInstance"); if(THIS == nullptr) Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); diff --git a/zone/pets.cpp b/zone/pets.cpp index e527d80ce..a50dcbed4 100644 --- a/zone/pets.cpp +++ b/zone/pets.cpp @@ -420,7 +420,7 @@ void Mob::MakePoweredPet(uint16 spell_id, const char* pettype, int16 petpower, // like the special back items some focused pets may receive. uint32 petinv[EQEmu::legacy::EQUIPMENT_SIZE]; memset(petinv, 0, sizeof(petinv)); - const EQEmu::ItemBase *item = 0; + const EQEmu::ItemData *item = 0; if (database.GetBasePetItems(record.equipmentset, petinv)) { for (int i = 0; i < EQEmu::legacy::EQUIPMENT_SIZE; i++) @@ -665,7 +665,7 @@ void NPC::SetPetState(SpellBuff_Struct *pet_buffs, uint32 *items) { if(items[i] == 0) continue; - const EQEmu::ItemBase* item2 = database.GetItem(items[i]); + const EQEmu::ItemData* item2 = database.GetItem(items[i]); if (item2 && item2->NoDrop != 0) { //dont bother saving item charges for now, NPCs never use them //and nobody should be able to get them off the corpse..? diff --git a/zone/quest_interface.h b/zone/quest_interface.h index c1cf3dc73..36ca9458f 100644 --- a/zone/quest_interface.h +++ b/zone/quest_interface.h @@ -23,10 +23,14 @@ #include "../common/any.h" #include "event_codes.h" -class ItemInst; class Client; class NPC; +namespace EQEmu +{ + class ItemInstance; +} + class QuestInterface { public: virtual int EventNPC(QuestEventID evt, NPC* npc, Mob *init, std::string data, uint32 extra_data, @@ -37,7 +41,7 @@ public: std::vector *extra_pointers) { return 0; } virtual int EventGlobalPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers) { return 0; } - virtual int EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, + virtual int EventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { return 0; } virtual int EventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers) { return 0; } @@ -49,14 +53,14 @@ public: virtual bool PlayerHasQuestSub(QuestEventID evt) { return false; } virtual bool GlobalPlayerHasQuestSub(QuestEventID evt) { return false; } virtual bool SpellHasQuestSub(uint32 spell_id, QuestEventID evt) { return false; } - virtual bool ItemHasQuestSub(ItemInst *itm, QuestEventID evt) { return false; } + virtual bool ItemHasQuestSub(EQEmu::ItemInstance *itm, QuestEventID evt) { return false; } virtual bool EncounterHasQuestSub(std::string encounter_name, QuestEventID evt) { return false; } virtual void LoadNPCScript(std::string filename, int npc_id) { } virtual void LoadGlobalNPCScript(std::string filename) { } virtual void LoadPlayerScript(std::string filename) { } virtual void LoadGlobalPlayerScript(std::string filename) { } - virtual void LoadItemScript(std::string filename, ItemInst *item) { } + virtual void LoadItemScript(std::string filename, EQEmu::ItemInstance *item) { } virtual void LoadSpellScript(std::string filename, uint32 spell_id) { } virtual void LoadEncounterScript(std::string filename, std::string encounter_name) { } @@ -64,7 +68,7 @@ public: std::vector *extra_pointers) { return 0; } virtual int DispatchEventPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers) { return 0; } - virtual int DispatchEventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, + virtual int DispatchEventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { return 0; } virtual int DispatchEventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers) { return 0; } diff --git a/zone/quest_parser_collection.cpp b/zone/quest_parser_collection.cpp index 290b71ab9..2c2086d8c 100644 --- a/zone/quest_parser_collection.cpp +++ b/zone/quest_parser_collection.cpp @@ -200,7 +200,7 @@ bool QuestParserCollection::SpellHasQuestSub(uint32 spell_id, QuestEventID evt) return false; } -bool QuestParserCollection::ItemHasQuestSub(ItemInst *itm, QuestEventID evt) { +bool QuestParserCollection::ItemHasQuestSub(EQEmu::ItemInstance *itm, QuestEventID evt) { if (itm == nullptr) return false; @@ -352,7 +352,7 @@ int QuestParserCollection::EventPlayerGlobal(QuestEventID evt, Client *client, s return 0; } -int QuestParserCollection::EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, +int QuestParserCollection::EventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { // needs pointer validation check on 'item' argument @@ -1013,7 +1013,7 @@ int QuestParserCollection::DispatchEventPlayer(QuestEventID evt, Client *client, return ret; } -int QuestParserCollection::DispatchEventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, +int QuestParserCollection::DispatchEventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers) { int ret = 0; auto iter = _load_precedence.begin(); diff --git a/zone/quest_parser_collection.h b/zone/quest_parser_collection.h index c17e2ccda..196cfffc2 100644 --- a/zone/quest_parser_collection.h +++ b/zone/quest_parser_collection.h @@ -44,11 +44,15 @@ extern const ZoneConfig *Config; class Client; -class ItemInst; class Mob; class NPC; class QuestInterface; -namespace EQEmu { class Any; } + +namespace EQEmu +{ + class Any; + class ItemInstance; +} class QuestParserCollection { public: @@ -65,13 +69,13 @@ public: bool HasQuestSub(uint32 npcid, QuestEventID evt); bool PlayerHasQuestSub(QuestEventID evt); bool SpellHasQuestSub(uint32 spell_id, QuestEventID evt); - bool ItemHasQuestSub(ItemInst *itm, QuestEventID evt); + bool ItemHasQuestSub(EQEmu::ItemInstance *itm, QuestEventID evt); int EventNPC(QuestEventID evt, NPC* npc, Mob *init, std::string data, uint32 extra_data, std::vector *extra_pointers = nullptr); int EventPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers = nullptr); - int EventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, + int EventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers = nullptr); int EventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers = nullptr); @@ -124,7 +128,7 @@ private: std::vector *extra_pointers); int DispatchEventPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data, std::vector *extra_pointers); - int DispatchEventItem(QuestEventID evt, Client *client, ItemInst *item, Mob *mob, std::string data, uint32 extra_data, + int DispatchEventItem(QuestEventID evt, Client *client, EQEmu::ItemInstance *item, Mob *mob, std::string data, uint32 extra_data, std::vector *extra_pointers); int DispatchEventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data, std::vector *extra_pointers); diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index 5803e547c..1df7492c2 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -54,7 +54,7 @@ QuestManager quest_manager; #define QuestManagerCurrentQuestVars() \ Mob *owner = nullptr; \ Client *initiator = nullptr; \ - ItemInst* questitem = nullptr; \ + EQEmu::ItemInstance* questitem = nullptr; \ bool depop_npc = false; \ std::string encounter; \ do { \ @@ -116,7 +116,7 @@ void QuestManager::Process() { } } -void QuestManager::StartQuest(Mob *_owner, Client *_initiator, ItemInst* _questitem, std::string encounter) { +void QuestManager::StartQuest(Mob *_owner, Client *_initiator, EQEmu::ItemInstance* _questitem, std::string encounter) { running_quest run; run.owner = _owner; run.initiator = _initiator; @@ -450,7 +450,7 @@ void QuestManager::settimerMS(const char *timer_name, int milliseconds) { QTimerList.push_back(QuestTimer(milliseconds, owner, timer_name)); } -void QuestManager::settimerMS(const char *timer_name, int milliseconds, ItemInst *inst) { +void QuestManager::settimerMS(const char *timer_name, int milliseconds, EQEmu::ItemInstance *inst) { if (inst) { inst->SetTimer(timer_name, milliseconds); } @@ -493,7 +493,7 @@ void QuestManager::stoptimer(const char *timer_name) { } } -void QuestManager::stoptimer(const char *timer_name, ItemInst *inst) { +void QuestManager::stoptimer(const char *timer_name, EQEmu::ItemInstance *inst) { if (inst) { inst->StopTimer(timer_name); } @@ -531,7 +531,7 @@ void QuestManager::stopalltimers() { } } -void QuestManager::stopalltimers(ItemInst *inst) { +void QuestManager::stopalltimers(EQEmu::ItemInstance *inst) { if (inst) { inst->ClearTimers(); } @@ -814,7 +814,7 @@ void QuestManager::traindisc(int discipline_tome_item_id) { } bool QuestManager::isdisctome(int item_id) { - const EQEmu::ItemBase *item = database.GetItem(item_id); + const EQEmu::ItemData *item = database.GetItem(item_id); if(item == nullptr) { return(false); } @@ -1305,7 +1305,7 @@ void QuestManager::settime(uint8 new_hour, uint8 new_min, bool update_world /*= void QuestManager::itemlink(int item_id) { QuestManagerCurrentQuestVars(); if (initiator) { - const EQEmu::ItemBase* item = database.GetItem(item_id); + const EQEmu::ItemData* item = database.GetItem(item_id); if (item == nullptr) return; @@ -2408,7 +2408,7 @@ int QuestManager::collectitems_processSlot(int16 slot_id, uint32 item_id, bool remove) { QuestManagerCurrentQuestVars(); - ItemInst *item = nullptr; + EQEmu::ItemInstance *item = nullptr; int quantity = 0; item = initiator->GetInv().GetItem(slot_id); @@ -2497,7 +2497,7 @@ void QuestManager::MerchantSetItem(uint32 NPCid, uint32 itemid, uint32 quantity) if (merchant == 0 || !merchant->IsNPC() || (merchant->GetClass() != MERCHANT)) return; // don't do anything if NPCid isn't a merchant - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; item = database.GetItem(itemid); if (!item) return; // if the item id doesn't correspond to a real item, do nothing @@ -2510,7 +2510,7 @@ uint32 QuestManager::MerchantCountItem(uint32 NPCid, uint32 itemid) { if (merchant == 0 || !merchant->IsNPC() || (merchant->GetClass() != MERCHANT)) return 0; // if it isn't a merchant, it doesn't have any items - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; item = database.GetItem(itemid); if (!item) return 0; // if it isn't a valid item, the merchant doesn't have any @@ -2533,7 +2533,7 @@ uint32 QuestManager::MerchantCountItem(uint32 NPCid, uint32 itemid) { // Item Link for use in Variables - "my $example_link = quest::varlink(item_id);" const char* QuestManager::varlink(char* perltext, int item_id) { QuestManagerCurrentQuestVars(); - const EQEmu::ItemBase* item = database.GetItem(item_id); + const EQEmu::ItemData* item = database.GetItem(item_id); if (!item) return "INVALID ITEM ID IN VARLINK"; @@ -3087,7 +3087,7 @@ Mob *QuestManager::GetOwner() const { return nullptr; } -ItemInst *QuestManager::GetQuestItem() const { +EQEmu::ItemInstance *QuestManager::GetQuestItem() const { if(!quests_running_.empty()) { running_quest e = quests_running_.top(); return e.questitem; diff --git a/zone/questmgr.h b/zone/questmgr.h index 10c82c1ee..1bef4e1ee 100644 --- a/zone/questmgr.h +++ b/zone/questmgr.h @@ -25,15 +25,19 @@ #include class Client; -class ItemInst; class Mob; class NPC; +namespace EQEmu +{ + class ItemInstance; +} + class QuestManager { struct running_quest { Mob *owner; Client *initiator; - ItemInst* questitem; + EQEmu::ItemInstance* questitem; bool depop_npc; std::string encounter; }; @@ -41,7 +45,7 @@ public: QuestManager(); virtual ~QuestManager(); - void StartQuest(Mob *_owner, Client *_initiator = nullptr, ItemInst* _questitem = nullptr, std::string encounter = ""); + void StartQuest(Mob *_owner, Client *_initiator = nullptr, EQEmu::ItemInstance* _questitem = nullptr, std::string encounter = ""); void EndQuest(); bool QuestsRunning() { return !quests_running_.empty(); } @@ -70,13 +74,13 @@ public: void Zone(const char *zone_name); void settimer(const char *timer_name, int seconds); void settimerMS(const char *timer_name, int milliseconds); - void settimerMS(const char *timer_name, int milliseconds, ItemInst *inst); + void settimerMS(const char *timer_name, int milliseconds, EQEmu::ItemInstance *inst); void settimerMS(const char *timer_name, int milliseconds, Mob *mob); void stoptimer(const char *timer_name); - void stoptimer(const char *timer_name, ItemInst *inst); + void stoptimer(const char *timer_name, EQEmu::ItemInstance *inst); void stoptimer(const char *timer_name, Mob *mob); void stopalltimers(); - void stopalltimers(ItemInst *inst); + void stopalltimers(EQEmu::ItemInstance *inst); void stopalltimers(Mob *mob); void emote(const char *str); void shout(const char *str); @@ -261,7 +265,7 @@ public: Client *GetInitiator() const; NPC *GetNPC() const; Mob *GetOwner() const; - ItemInst *GetQuestItem() const; + EQEmu::ItemInstance *GetQuestItem() const; std::string GetEncounter() const; inline bool ProximitySayInUse() { return HaveProximitySays; } diff --git a/zone/special_attacks.cpp b/zone/special_attacks.cpp index 06d8ba4a9..be0c04abb 100644 --- a/zone/special_attacks.cpp +++ b/zone/special_attacks.cpp @@ -83,7 +83,7 @@ void Mob::ApplySpecialAttackMod(EQEmu::skills::SkillType skill, int32 &dmg, int3 } if (item_slot >= 0){ - const ItemInst* itm = nullptr; + const EQEmu::ItemInstance* itm = nullptr; itm = CastToClient()->GetInv().GetItem(item_slot); if(itm) dmg += itm->GetItem()->AC * (RuleI(Combat, SpecialAttackACBonus))/100; @@ -111,14 +111,14 @@ void Mob::DoSpecialAttackDamage(Mob *who, EQEmu::skills::SkillType skill, int32 if (skill == EQEmu::skills::SkillBash){ if(IsClient()){ - ItemInst *item = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance *item = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotSecondary); if(item) { if (item->GetItem()->ItemType == EQEmu::item::ItemTypeShield) { hate += item->GetItem()->AC; } - const EQEmu::ItemBase *itm = item->GetItem(); + const EQEmu::ItemData *itm = item->GetItem(); auto fbash = GetFuriousBash(itm->Focus.Effect); hate = hate * (100 + fbash) / 100; if (fbash) @@ -463,7 +463,7 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type) } } else{ - if (GetWeaponDamage(other, (const EQEmu::ItemBase*)nullptr) <= 0){ + if (GetWeaponDamage(other, (const EQEmu::ItemData*)nullptr) <= 0){ ndamage = -5; } } @@ -498,7 +498,7 @@ void Mob::TryBackstab(Mob *other, int ReuseTime) { //make sure we have a proper weapon if we are a client. if(IsClient()) { - const ItemInst *wpn = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); + const EQEmu::ItemInstance *wpn = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); if (!wpn || (wpn->GetItem()->ItemType != EQEmu::item::ItemType1HPiercing)){ Message_StringID(13, BACKSTAB_WEAPON); return; @@ -577,7 +577,7 @@ void Mob::RogueBackstab(Mob* other, bool min_damage, int ReuseTime) int32 backstab_dmg = 0; if (IsClient()) { - const ItemInst *wpn = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); + const EQEmu::ItemInstance *wpn = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); if (wpn) { primaryweapondamage = GetWeaponDamage(other, wpn); if (primaryweapondamage) { @@ -650,7 +650,7 @@ void Mob::RogueAssassinate(Mob* other) { //can you dodge, parry, etc.. an assassinate?? //if so, use DoSpecialAttackDamage(other, BACKSTAB, 32000); instead - if (GetWeaponDamage(other, IsClient() ? CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary) : (const ItemInst*)nullptr) > 0){ + if (GetWeaponDamage(other, IsClient() ? CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary) : (const EQEmu::ItemInstance*)nullptr) > 0){ other->Damage(this, 32000, SPELL_UNKNOWN, EQEmu::skills::SkillBackstab); }else{ other->Damage(this, -5, SPELL_UNKNOWN, EQEmu::skills::SkillBackstab); @@ -670,11 +670,11 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { //Message(0, "Error: Timer not up. Attack %d, ranged %d", attack_timer.GetRemainingTime(), ranged_timer.GetRemainingTime()); return; } - const ItemInst* RangeWeapon = m_inv[EQEmu::legacy::SlotRange]; + const EQEmu::ItemInstance* RangeWeapon = m_inv[EQEmu::legacy::SlotRange]; //locate ammo int ammo_slot = EQEmu::legacy::SlotAmmo; - const ItemInst* Ammo = m_inv[EQEmu::legacy::SlotAmmo]; + const EQEmu::ItemInstance* Ammo = m_inv[EQEmu::legacy::SlotAmmo]; if (!RangeWeapon || !RangeWeapon->IsClassCommon()) { Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Missing or invalid ranged weapon (%d) in slot %d", GetItemIDAt(EQEmu::legacy::SlotRange), EQEmu::legacy::SlotRange); @@ -687,8 +687,8 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { return; } - const EQEmu::ItemBase* RangeItem = RangeWeapon->GetItem(); - const EQEmu::ItemBase* AmmoItem = Ammo->GetItem(); + const EQEmu::ItemData* RangeItem = RangeWeapon->GetItem(); + const EQEmu::ItemData* AmmoItem = Ammo->GetItem(); if (RangeItem->ItemType != EQEmu::item::ItemTypeBow) { Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Ranged item is not a bow. type %d.", RangeItem->ItemType); @@ -709,17 +709,17 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { int r; bool found = false; for (r = EQEmu::legacy::GENERAL_BEGIN; r <= EQEmu::legacy::GENERAL_END; r++) { - const ItemInst *pi = m_inv[r]; + const EQEmu::ItemInstance *pi = m_inv[r]; if (pi == nullptr || !pi->IsClassBag()) continue; - const EQEmu::ItemBase* bagitem = pi->GetItem(); + const EQEmu::ItemData* bagitem = pi->GetItem(); if (!bagitem || bagitem->BagType != EQEmu::item::BagTypeQuiver) continue; //we found a quiver, look for the ammo in it int i; for (i = 0; i < bagitem->BagSlots; i++) { - ItemInst* baginst = pi->GetItem(i); + EQEmu::ItemInstance* baginst = pi->GetItem(i); if(!baginst) continue; //empty if(baginst->GetID() == Ammo->GetID()) { @@ -790,8 +790,8 @@ void Client::RangedAttack(Mob* other, bool CanDoubleAttack) { CommonBreakInvisibleFromCombat(); } -void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const ItemInst* Ammo, uint16 weapon_damage, int16 chance_mod, int16 focus, int ReuseTime, - uint32 range_id, uint32 ammo_id, const EQEmu::ItemBase *AmmoItem, int AmmoSlot, float speed) { +void Mob::DoArcheryAttackDmg(Mob* other, const EQEmu::ItemInstance* RangeWeapon, const EQEmu::ItemInstance* Ammo, uint16 weapon_damage, int16 chance_mod, int16 focus, int ReuseTime, + uint32 range_id, uint32 ammo_id, const EQEmu::ItemData *AmmoItem, int AmmoSlot, float speed) { if ((other == nullptr || ((IsClient() && CastToClient()->dead) || @@ -804,9 +804,9 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite return; } - const ItemInst* _RangeWeapon = nullptr; - const ItemInst* _Ammo = nullptr; - const EQEmu::ItemBase* ammo_lost = nullptr; + const EQEmu::ItemInstance* _RangeWeapon = nullptr; + const EQEmu::ItemInstance* _Ammo = nullptr; + const EQEmu::ItemData* ammo_lost = nullptr; /* If LaunchProjectile is false this function will do archery damage on target, @@ -1002,7 +1002,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Ite } } -bool Mob::TryProjectileAttack(Mob* other, const EQEmu::ItemBase *item, EQEmu::skills::SkillType skillInUse, uint16 weapon_dmg, const ItemInst* RangeWeapon, const ItemInst* Ammo, int AmmoSlot, float speed){ +bool Mob::TryProjectileAttack(Mob* other, const EQEmu::ItemData *item, EQEmu::skills::SkillType skillInUse, uint16 weapon_dmg, const EQEmu::ItemInstance* RangeWeapon, const EQEmu::ItemInstance* Ammo, int AmmoSlot, float speed){ if (!other) return false; @@ -1306,7 +1306,7 @@ void NPC::DoRangedAttackDmg(Mob* other, bool Launch, int16 damage_mod, int16 cha //try proc on hits and misses if(other && !other->HasDied()) - TrySpellProc(nullptr, (const EQEmu::ItemBase*)nullptr, other, EQEmu::legacy::SlotRange); + TrySpellProc(nullptr, (const EQEmu::ItemData*)nullptr, other, EQEmu::legacy::SlotRange); if (HasSkillProcs() && other && !other->HasDied()) TrySkillProc(other, skillInUse, 0, false, EQEmu::legacy::SlotRange); @@ -1352,7 +1352,7 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 } int ammo_slot = EQEmu::legacy::SlotRange; - const ItemInst* RangeWeapon = m_inv[EQEmu::legacy::SlotRange]; + const EQEmu::ItemInstance* RangeWeapon = m_inv[EQEmu::legacy::SlotRange]; if (!RangeWeapon || !RangeWeapon->IsClassCommon()) { Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Missing or invalid ranged weapon (%d) in slot %d", GetItemIDAt(EQEmu::legacy::SlotRange), EQEmu::legacy::SlotRange); @@ -1360,7 +1360,7 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 return; } - const EQEmu::ItemBase* item = RangeWeapon->GetItem(); + const EQEmu::ItemData* item = RangeWeapon->GetItem(); if (item->ItemType != EQEmu::item::ItemTypeLargeThrowing && item->ItemType != EQEmu::item::ItemTypeSmallThrowing) { Log.Out(Logs::Detail, Logs::Combat, "Ranged attack canceled. Ranged item %d is not a throwing weapon. type %d.", item->ItemType); Message(0, "Error: Rangeweapon: GetItem(%i)==0, you have nothing useful to throw!", GetItemIDAt(EQEmu::legacy::SlotRange)); @@ -1371,7 +1371,7 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 if(RangeWeapon->GetCharges() == 1) { //first check ammo - const ItemInst* AmmoItem = m_inv[EQEmu::legacy::SlotAmmo]; + const EQEmu::ItemInstance* AmmoItem = m_inv[EQEmu::legacy::SlotAmmo]; if(AmmoItem != nullptr && AmmoItem->GetID() == RangeWeapon->GetID()) { //more in the ammo slot, use it RangeWeapon = AmmoItem; @@ -1421,7 +1421,7 @@ void Client::ThrowingAttack(Mob* other, bool CanDoubleAttack) { //old was 51 CommonBreakInvisibleFromCombat(); } -void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const EQEmu::ItemBase* AmmoItem, uint16 weapon_damage, int16 chance_mod, int16 focus, int ReuseTime, uint32 range_id, int AmmoSlot, float speed) +void Mob::DoThrowingAttackDmg(Mob* other, const EQEmu::ItemInstance* RangeWeapon, const EQEmu::ItemData* AmmoItem, uint16 weapon_damage, int16 chance_mod, int16 focus, int ReuseTime, uint32 range_id, int AmmoSlot, float speed) { if ((other == nullptr || ((IsClient() && CastToClient()->dead) || @@ -1434,8 +1434,8 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const EQE return; } - const ItemInst* _RangeWeapon = nullptr; - const EQEmu::ItemBase* ammo_lost = nullptr; + const EQEmu::ItemInstance* _RangeWeapon = nullptr; + const EQEmu::ItemData* ammo_lost = nullptr; /* If LaunchProjectile is false this function will do archery damage on target, @@ -1559,7 +1559,7 @@ void Mob::DoThrowingAttackDmg(Mob* other, const ItemInst* RangeWeapon, const EQE } } -void Mob::SendItemAnimation(Mob *to, const EQEmu::ItemBase *item, EQEmu::skills::SkillType skillInUse, float velocity) { +void Mob::SendItemAnimation(Mob *to, const EQEmu::ItemData *item, EQEmu::skills::SkillType skillInUse, float velocity) { auto outapp = new EQApplicationPacket(OP_SomeItemPacketMaybe, sizeof(Arrow_Struct)); Arrow_Struct *as = (Arrow_Struct *) outapp->pBuffer; as->type = 1; @@ -1609,7 +1609,7 @@ void Mob::ProjectileAnimation(Mob* to, int item_id, bool IsArrow, float speed, f if (!to) return; - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; uint8 item_type = 0; if(!item_id) { @@ -1750,7 +1750,7 @@ void NPC::DoClassAttacks(Mob *target) { DoAnim(animKick); int32 dmg = 0; - if (GetWeaponDamage(target, (const EQEmu::ItemBase*)nullptr) <= 0){ + if (GetWeaponDamage(target, (const EQEmu::ItemData*)nullptr) <= 0){ dmg = -5; } else{ @@ -1771,7 +1771,7 @@ void NPC::DoClassAttacks(Mob *target) { DoAnim(animTailRake); int32 dmg = 0; - if (GetWeaponDamage(target, (const EQEmu::ItemBase*)nullptr) <= 0){ + if (GetWeaponDamage(target, (const EQEmu::ItemData*)nullptr) <= 0){ dmg = -5; } else{ @@ -1824,7 +1824,7 @@ void NPC::DoClassAttacks(Mob *target) { DoAnim(animKick); int32 dmg = 0; - if (GetWeaponDamage(target, (const EQEmu::ItemBase*)nullptr) <= 0){ + if (GetWeaponDamage(target, (const EQEmu::ItemData*)nullptr) <= 0){ dmg = -5; } else{ @@ -1849,7 +1849,7 @@ void NPC::DoClassAttacks(Mob *target) { DoAnim(animTailRake); int32 dmg = 0; - if (GetWeaponDamage(target, (const EQEmu::ItemBase*)nullptr) <= 0){ + if (GetWeaponDamage(target, (const EQEmu::ItemData*)nullptr) <= 0){ dmg = -5; } else{ @@ -2361,7 +2361,7 @@ void Mob::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, EQEmu::skills: int32 max_hit = (2 * weapon_damage*GetDamageTable(skillinuse)) / 100; if(GetLevel() >= 28 && IsWarriorClass() ) { - int ucDamageBonus = GetWeaponDamageBonus((const EQEmu::ItemBase*) nullptr); + int ucDamageBonus = GetWeaponDamageBonus((const EQEmu::ItemData*) nullptr); min_hit += (int) ucDamageBonus; max_hit += (int) ucDamageBonus; hate += ucDamageBonus; @@ -2369,12 +2369,12 @@ void Mob::DoMeleeSkillAttackDmg(Mob* other, uint16 weapon_damage, EQEmu::skills: if (skillinuse == EQEmu::skills::SkillBash){ if(IsClient()){ - ItemInst *item = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotSecondary); + EQEmu::ItemInstance *item = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotSecondary); if(item){ if (item->GetItem()->ItemType == EQEmu::item::ItemTypeShield) { hate += item->GetItem()->AC; } - const EQEmu::ItemBase *itm = item->GetItem(); + const EQEmu::ItemData *itm = item->GetItem(); hate = hate * (100 + GetFuriousBash(itm->Focus.Effect)) / 100; } } diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 564a9756a..161604ea9 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -48,7 +48,7 @@ extern WorldServer worldserver; bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_override) { int caster_level, buffslot, effect, effect_value, i; - ItemInst *SummonedItem=nullptr; + EQEmu::ItemInstance *SummonedItem=nullptr; #ifdef SPELL_EFFECT_SPAM #define _EDLEN 200 char effect_desc[_EDLEN]; @@ -61,7 +61,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove bool c_override = false; if (caster && caster->IsClient() && GetCastedSpellInvSlot() > 0) { - const ItemInst *inst = caster->CastToClient()->GetInv().GetItem(GetCastedSpellInvSlot()); + const EQEmu::ItemInstance *inst = caster->CastToClient()->GetInv().GetItem(GetCastedSpellInvSlot()); if (inst) { if (inst->GetItem()->Click.Level > 0) { caster_level = inst->GetItem()->Click.Level; @@ -622,7 +622,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove snprintf(effect_desc, _EDLEN, "Flesh To Bone"); #endif if(IsClient()){ - ItemInst* transI = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotCursor); + EQEmu::ItemInstance* transI = CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotCursor); if (transI && transI->IsClassCommon() && transI->IsStackable()){ uint32 fcharges = transI->GetCharges(); //Does it sound like meat... maybe should check if it looks like meat too... @@ -1148,7 +1148,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove case SE_SummonItem: { - const EQEmu::ItemBase *item = database.GetItem(spell.base[i]); + const EQEmu::ItemData *item = database.GetItem(spell.base[i]); #ifdef SPELL_EFFECT_SPAM const char *itemname = item ? item->Name : "*Unknown Item*"; snprintf(effect_desc, _EDLEN, "Summon Item: %s (id %d)", itemname, spell.base[i]); @@ -1184,7 +1184,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove } case SE_SummonItemIntoBag: { - const EQEmu::ItemBase *item = database.GetItem(spell.base[i]); + const EQEmu::ItemData *item = database.GetItem(spell.base[i]); #ifdef SPELL_EFFECT_SPAM const char *itemname = item ? item->Name : "*Unknown Item*"; snprintf(effect_desc, _EDLEN, "Summon Item In Bag: %s (id %d)", itemname, spell.base[i]); @@ -1213,7 +1213,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove if (charges < 1) charges = 1; - ItemInst *SubItem = database.CreateItem(spell.base[i], charges); + EQEmu::ItemInstance *SubItem = database.CreateItem(spell.base[i], charges); if (SubItem != nullptr) { SummonedItem->PutItem(slot, *SubItem); safe_delete(SubItem); @@ -5172,7 +5172,7 @@ uint16 Client::GetSympatheticFocusEffect(focusType type, uint16 spell_id) { //item focus if (itembonuses.FocusEffects[type]){ - const EQEmu::ItemBase* TempItem = 0; + const EQEmu::ItemData* TempItem = 0; for (int x = EQEmu::legacy::EQUIPMENT_BEGIN; x <= EQEmu::legacy::EQUIPMENT_END; x++) { @@ -5180,7 +5180,7 @@ uint16 Client::GetSympatheticFocusEffect(focusType type, uint16 spell_id) { continue; TempItem = nullptr; - ItemInst* ins = GetInv().GetItem(x); + EQEmu::ItemInstance* ins = GetInv().GetItem(x); if (!ins) continue; TempItem = ins->GetItem(); @@ -5199,11 +5199,11 @@ uint16 Client::GetSympatheticFocusEffect(focusType type, uint16 spell_id) { if (SympatheticProcList.size() > MAX_SYMPATHETIC_PROCS) continue; - ItemInst *aug = nullptr; + EQEmu::ItemInstance *aug = nullptr; aug = ins->GetAugment(y); if(aug) { - const EQEmu::ItemBase* TempItemAug = aug->GetItem(); + const EQEmu::ItemData* TempItemAug = aug->GetItem(); if (TempItemAug && TempItemAug->Focus.Effect > 0 && IsValidSpell(TempItemAug->Focus.Effect)) { proc_spellid = CalcFocusEffect(type, TempItemAug->Focus.Effect, spell_id); if (IsValidSpell(proc_spellid)){ @@ -5301,8 +5301,8 @@ int16 Client::GetFocusEffect(focusType type, uint16 spell_id) //Check if item focus effect exists for the client. if (itembonuses.FocusEffects[type]){ - const EQEmu::ItemBase* TempItem = 0; - const EQEmu::ItemBase* UsedItem = 0; + const EQEmu::ItemData* TempItem = 0; + const EQEmu::ItemData* UsedItem = 0; uint16 UsedFocusID = 0; int16 Total = 0; int16 focus_max = 0; @@ -5312,7 +5312,7 @@ int16 Client::GetFocusEffect(focusType type, uint16 spell_id) for (int x = EQEmu::legacy::EQUIPMENT_BEGIN; x <= EQEmu::legacy::EQUIPMENT_END; x++) { TempItem = nullptr; - ItemInst* ins = GetInv().GetItem(x); + EQEmu::ItemInstance* ins = GetInv().GetItem(x); if (!ins) continue; TempItem = ins->GetItem(); @@ -5345,11 +5345,11 @@ int16 Client::GetFocusEffect(focusType type, uint16 spell_id) for (int y = AUG_INDEX_BEGIN; y < EQEmu::legacy::ITEM_COMMON_SIZE; ++y) { - ItemInst *aug = nullptr; + EQEmu::ItemInstance *aug = nullptr; aug = ins->GetAugment(y); if(aug) { - const EQEmu::ItemBase* TempItemAug = aug->GetItem(); + const EQEmu::ItemData* TempItemAug = aug->GetItem(); if (TempItemAug && TempItemAug->Focus.Effect > 0 && TempItemAug->Focus.Effect != SPELL_UNKNOWN) { if(rand_effectiveness) { focus_max = CalcFocusEffect(type, TempItemAug->Focus.Effect, spell_id, true); @@ -5384,7 +5384,7 @@ int16 Client::GetFocusEffect(focusType type, uint16 spell_id) for (int x = EQEmu::legacy::TRIBUTE_BEGIN; x <= EQEmu::legacy::TRIBUTE_END; ++x) { TempItem = nullptr; - ItemInst* ins = GetInv().GetItem(x); + EQEmu::ItemInstance* ins = GetInv().GetItem(x); if (!ins) continue; TempItem = ins->GetItem(); @@ -5573,8 +5573,8 @@ int16 NPC::GetFocusEffect(focusType type, uint16 spell_id) { if (RuleB(Spells, NPC_UseFocusFromItems) && itembonuses.FocusEffects[type]){ - const EQEmu::ItemBase* TempItem = 0; - const EQEmu::ItemBase* UsedItem = 0; + const EQEmu::ItemData* TempItem = 0; + const EQEmu::ItemData* UsedItem = 0; uint16 UsedFocusID = 0; int16 Total = 0; int16 focus_max = 0; @@ -5582,7 +5582,7 @@ int16 NPC::GetFocusEffect(focusType type, uint16 spell_id) { //item focus for (int i = 0; i < EQEmu::legacy::EQUIPMENT_SIZE; i++){ - const EQEmu::ItemBase *cur = database.GetItem(equipment[i]); + const EQEmu::ItemData *cur = database.GetItem(equipment[i]); if(!cur) continue; diff --git a/zone/spells.cpp b/zone/spells.cpp index 6c27ab610..e00fc05c2 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -256,7 +256,7 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, CastingSlot slot, //Added to prevent MQ2 exploitation of equipping normally-unequippable/clickable items with effects and clicking them for benefits. if(item_slot && IsClient() && (slot == CastingSlot::Item || slot == CastingSlot::PotionBelt)) { - ItemInst *itm = CastToClient()->GetInv().GetItem(item_slot); + EQEmu::ItemInstance *itm = CastToClient()->GetInv().GetItem(item_slot); int bitmask = 1; bitmask = bitmask << (CastToClient()->GetClass() - 1); if( itm && itm->GetItem()->Classes != 65535 ) { @@ -936,7 +936,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, CastingSlot slo if(IsClient() && (slot == CastingSlot::Item || slot == CastingSlot::PotionBelt)) { IsFromItem = true; - ItemInst *itm = CastToClient()->GetInv().GetItem(inventory_slot); + EQEmu::ItemInstance *itm = CastToClient()->GetInv().GetItem(inventory_slot); if(itm && itm->GetItem()->RecastDelay > 0) { if(!CastToClient()->GetPTimers().Expired(&database, (pTimerItemStart + itm->GetItem()->RecastType), false)) { @@ -1174,7 +1174,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, CastingSlot slo missingreags=true; } - const EQEmu::ItemBase *item = database.GetItem(component); + const EQEmu::ItemData *item = database.GetItem(component); if(item) { c->Message_StringID(13, MISSING_SPELL_COMP_ITEM, item->Name); Log.Out(Logs::Detail, Logs::Spells, "Spell %d: Canceled. Missing required reagent %s (%d)", spell_id, item->Name, component); @@ -1235,8 +1235,8 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, CastingSlot slo && inventory_slot != 0xFFFFFFFF) // 10 is an item { bool fromaug = false; - const ItemInst* inst = CastToClient()->GetInv()[inventory_slot]; - EQEmu::ItemBase* augitem = 0; + const EQEmu::ItemInstance* inst = CastToClient()->GetInv()[inventory_slot]; + EQEmu::ItemData* augitem = 0; uint32 recastdelay = 0; uint32 recasttype = 0; @@ -1245,11 +1245,11 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, CastingSlot slo break; for (int r = AUG_INDEX_BEGIN; r < EQEmu::legacy::ITEM_COMMON_SIZE; r++) { - const ItemInst* aug_i = inst->GetAugment(r); + const EQEmu::ItemInstance* aug_i = inst->GetAugment(r); if (!aug_i) continue; - const EQEmu::ItemBase* aug = aug_i->GetItem(); + const EQEmu::ItemData* aug = aug_i->GetItem(); if (!aug) continue; @@ -1285,7 +1285,7 @@ void Mob::CastedSpellFinished(uint16 spell_id, uint32 target_id, CastingSlot slo if (inst && inst->IsClassCommon() && (inst->GetItem()->Click.Effect == spell_id) && inst->GetCharges() || fromaug) { - //const ItemBase* item = inst->GetItem(); + //const ItemData* item = inst->GetItem(); int16 charges = inst->GetItem()->MaxCharges; if(fromaug) { charges = -1; } //Don't destroy the parent item @@ -2385,7 +2385,7 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, CastingSlot slot, ui if(IsClient() && (slot == CastingSlot::Item || slot == CastingSlot::PotionBelt)) { - ItemInst *itm = CastToClient()->GetInv().GetItem(inventory_slot); + EQEmu::ItemInstance *itm = CastToClient()->GetInv().GetItem(inventory_slot); if(itm && itm->GetItem()->RecastDelay > 0){ auto recast_type = itm->GetItem()->RecastType; CastToClient()->GetPTimers().Start((pTimerItemStart + recast_type), itm->GetItem()->RecastDelay); diff --git a/zone/tasks.cpp b/zone/tasks.cpp index 40e7d8b67..dff042388 100644 --- a/zone/tasks.cpp +++ b/zone/tasks.cpp @@ -1708,7 +1708,7 @@ void ClientTaskState::UpdateTasksOnExplore(Client *c, int ExploreID) { return; } -bool ClientTaskState::UpdateTasksOnDeliver(Client *c, std::list& Items, int Cash, int NPCTypeID) { +bool ClientTaskState::UpdateTasksOnDeliver(Client *c, std::list& Items, int Cash, int NPCTypeID) { bool Ret = false; @@ -1900,7 +1900,7 @@ void ClientTaskState::RewardTask(Client *c, TaskInformation *Task) { if(!Task || !c) return; - const EQEmu::ItemBase* Item; + const EQEmu::ItemData* Item; std::vector RewardList; switch(Task->RewardMethod) { @@ -2791,7 +2791,7 @@ void TaskManager::SendActiveTaskDescription(Client *c, int TaskID, int SequenceN } if(ItemID) { - const EQEmu::ItemBase* reward_item = database.GetItem(ItemID); + const EQEmu::ItemData* reward_item = database.GetItem(ItemID); EQEmu::SayLinkEngine linker; linker.SetLinkType(EQEmu::saylink::SayLinkItemData); diff --git a/zone/tasks.h b/zone/tasks.h index 9b5543b3d..5a6944639 100644 --- a/zone/tasks.h +++ b/zone/tasks.h @@ -45,7 +45,11 @@ Copyright (C) 2001-2004 EQEMu Development Team (http://eqemulator.net) class Client; class Mob; -class ItemInst; + +namespace EQEmu +{ + class ItemInstance; +} struct TaskGoalList_Struct { int ListID; @@ -187,7 +191,7 @@ public: void UpdateTasksForItem(Client *c, ActivityType Type, int ItemID, int Count=1); void UpdateTasksOnExplore(Client *c, int ExploreID); bool UpdateTasksOnSpeakWith(Client *c, int NPCTypeID); - bool UpdateTasksOnDeliver(Client *c, std::list& Items, int Cash, int NPCTypeID); + bool UpdateTasksOnDeliver(Client *c, std::list& Items, int Cash, int NPCTypeID); void UpdateTasksOnTouch(Client *c, int ZoneID); void ProcessTaskProximities(Client *c, float X, float Y, float Z); bool TaskOutOfTime(int Index); diff --git a/zone/tradeskills.cpp b/zone/tradeskills.cpp index 6deb51778..38bb5a231 100644 --- a/zone/tradeskills.cpp +++ b/zone/tradeskills.cpp @@ -46,7 +46,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme return; } - ItemInst* container = nullptr; + EQEmu::ItemInstance* container = nullptr; if (worldo) { @@ -56,12 +56,12 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme { // Check to see if they have an inventory container type 53 that is used for this. Inventory& user_inv = user->GetInv(); - ItemInst* inst = nullptr; + EQEmu::ItemInstance* inst = nullptr; inst = user_inv.GetItem(in_augment->container_slot); if (inst) { - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (item && inst->IsType(EQEmu::item::ItemClassBag) && item->BagType == 53) { // We have found an appropriate inventory augmentation sealer @@ -71,7 +71,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme uint8 itemsFound = 0; for (uint8 i = SLOT_BEGIN; i < EQEmu::legacy::TYPE_WORLD_SIZE; i++) { - const ItemInst* inst = container->GetItem(i); + const EQEmu::ItemInstance* inst = container->GetItem(i); if (inst) { itemsFound++; @@ -94,7 +94,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme return; } - ItemInst *tobe_auged = nullptr, *auged_with = nullptr; + EQEmu::ItemInstance *tobe_auged = nullptr, *auged_with = nullptr; int8 slot=-1; // Verify 2 items in the augmentation device @@ -135,7 +135,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme bool deleteItems = false; - ItemInst *itemOneToPush = nullptr, *itemTwoToPush = nullptr; + EQEmu::ItemInstance *itemOneToPush = nullptr, *itemTwoToPush = nullptr; // Adding augment if (in_augment->augment_slot == -1) @@ -145,7 +145,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme { tobe_auged->PutAugment(slot, *auged_with); - ItemInst *aug = tobe_auged->GetAugment(slot); + EQEmu::ItemInstance *aug = tobe_auged->GetAugment(slot); if(aug) { std::vector args; args.push_back(aug); @@ -165,7 +165,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme } else { - ItemInst *old_aug = nullptr; + EQEmu::ItemInstance *old_aug = nullptr; bool isSolvent = auged_with->GetItem()->ItemType == EQEmu::item::ItemTypeAugmentationSolvent; if (!isSolvent && auged_with->GetItem()->ItemType != EQEmu::item::ItemTypeAugmentationDistiller) { @@ -175,7 +175,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme return; } - ItemInst *aug = tobe_auged->GetAugment(in_augment->augment_slot); + EQEmu::ItemInstance *aug = tobe_auged->GetAugment(in_augment->augment_slot); if (aug) { if (!isSolvent && auged_with->GetItem()->ID != aug->GetItem()->AugDistiller) { @@ -224,7 +224,7 @@ void Object::HandleAugmentation(Client* user, const AugmentItem_Struct* in_augme // Delete items in our inventory container... for (uint8 i = SLOT_BEGIN; i < EQEmu::legacy::TYPE_WORLD_SIZE; i++) { - const ItemInst* inst = container->GetItem(i); + const EQEmu::ItemInstance* inst = container->GetItem(i); if (inst) { user->DeleteItemInInventory(Inventory::CalcSlotId(in_augment->container_slot,i),0,true); @@ -258,8 +258,8 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob Inventory& user_inv = user->GetInv(); PlayerProfile_Struct& user_pp = user->GetPP(); - ItemInst* container = nullptr; - ItemInst* inst = nullptr; + EQEmu::ItemInstance* container = nullptr; + EQEmu::ItemInstance* inst = nullptr; uint8 c_type = 0xE8; uint32 some_id = 0; bool worldcontainer=false; @@ -276,7 +276,7 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob else { inst = user_inv.GetItem(in_combine->container_slot); if (inst) { - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if (item && inst->IsType(EQEmu::item::ItemClassBag)) { c_type = item->BagType; some_id = item->ID; @@ -291,10 +291,10 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob container = inst; if (container->GetItem() && container->GetItem()->BagType == EQEmu::item::BagTypeTransformationmold) { - const ItemInst* inst = container->GetItem(0); + const EQEmu::ItemInstance* inst = container->GetItem(0); bool AllowAll = RuleB(Inventory, AllowAnyWeaponTransformation); - if (inst && ItemInst::CanTransform(inst->GetItem(), container->GetItem(), AllowAll)) { - const EQEmu::ItemBase* new_weapon = inst->GetItem(); + if (inst && EQEmu::ItemInstance::CanTransform(inst->GetItem(), container->GetItem(), AllowAll)) { + const EQEmu::ItemData* new_weapon = inst->GetItem(); user->DeleteItemInInventory(Inventory::CalcSlotId(in_combine->container_slot, 0), 0, true); container->Clear(); user->SummonItem(new_weapon->ID, inst->GetCharges(), inst->GetAugmentItemID(0), inst->GetAugmentItemID(1), inst->GetAugmentItemID(2), inst->GetAugmentItemID(3), inst->GetAugmentItemID(4), inst->GetAugmentItemID(5), inst->IsAttuned(), EQEmu::legacy::SlotCursor, container->GetItem()->Icon, atoi(container->GetItem()->IDFile + 2)); @@ -312,9 +312,9 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob } if (container->GetItem() && container->GetItem()->BagType == EQEmu::item::BagTypeDetransformationmold) { - const ItemInst* inst = container->GetItem(0); + const EQEmu::ItemInstance* inst = container->GetItem(0); if (inst && inst->GetOrnamentationIcon() && inst->GetOrnamentationIcon()) { - const EQEmu::ItemBase* new_weapon = inst->GetItem(); + const EQEmu::ItemData* new_weapon = inst->GetItem(); user->DeleteItemInInventory(Inventory::CalcSlotId(in_combine->container_slot, 0), 0, true); container->Clear(); user->SummonItem(new_weapon->ID, inst->GetCharges(), inst->GetAugmentItemID(0), inst->GetAugmentItemID(1), inst->GetAugmentItemID(2), inst->GetAugmentItemID(3), inst->GetAugmentItemID(4), inst->GetAugmentItemID(5), inst->IsAttuned(), EQEmu::legacy::SlotCursor, 0, 0); @@ -402,7 +402,7 @@ void Object::HandleCombine(Client* user, const NewCombine_Struct* in_combine, Ob database.DeleteWorldContainer(worldo->m_id, zone->GetZoneID()); } else{ for (uint8 i = SLOT_BEGIN; i < EQEmu::legacy::TYPE_WORLD_SIZE; i++) { - const ItemInst* inst = container->GetItem(i); + const EQEmu::ItemInstance* inst = container->GetItem(i); if (inst) { user->DeleteItemInInventory(Inventory::CalcSlotId(in_combine->container_slot,i),0,true); } @@ -537,7 +537,7 @@ void Object::HandleAutoCombine(Client* user, const RecipeAutoCombine_Struct* rac user->Message_StringID(MT_Skills, TRADESKILL_MISSING_COMPONENTS); for (auto it = MissingItems.begin(); it != MissingItems.end(); ++it) { - const EQEmu::ItemBase* item = database.GetItem(*it); + const EQEmu::ItemData* item = database.GetItem(*it); if(item) user->Message_StringID(MT_Skills, TRADESKILL_MISSING_ITEM, item->Name); @@ -566,7 +566,7 @@ void Object::HandleAutoCombine(Client* user, const RecipeAutoCombine_Struct* rac return; } - const ItemInst* inst = user_inv.GetItem(slot); + const EQEmu::ItemInstance* inst = user_inv.GetItem(slot); if (inst && !inst->IsStackable()) user->DeleteItemInInventory(slot, 0, true); @@ -962,7 +962,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) { aa_chance = spellbonuses.ReduceTradeskillFail[spec->tradeskill] + itembonuses.ReduceTradeskillFail[spec->tradeskill] + aabonuses.ReduceTradeskillFail[spec->tradeskill]; - const EQEmu::ItemBase* item = nullptr; + const EQEmu::ItemData* item = nullptr; chance = mod_tradeskill_chance(chance, spec); @@ -1090,7 +1090,7 @@ void Client::CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float Log.Out(Logs::Detail, Logs::Tradeskills, "...Stage2 chance was: %f percent. 0 percent means stage1 failed", chance_stage2); } -bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint32 some_id, +bool ZoneDatabase::GetTradeRecipe(const EQEmu::ItemInstance* container, uint8 c_type, uint32 some_id, uint32 char_id, DBTradeskillRecipe_Struct *spec) { if (container == nullptr) @@ -1109,11 +1109,11 @@ bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint3 uint32 count = 0; uint32 sum = 0; for (uint8 i = 0; i < 10; i++) { // TODO: need to determine if this is bound to world/item container size - const ItemInst* inst = container->GetItem(i); + const EQEmu::ItemInstance* inst = container->GetItem(i); if (!inst) continue; - const EQEmu::ItemBase* item = GetItem(inst->GetItem()->ID); + const EQEmu::ItemData* item = GetItem(inst->GetItem()->ID); if (!item) continue; @@ -1238,11 +1238,11 @@ bool ZoneDatabase::GetTradeRecipe(const ItemInst* container, uint8 c_type, uint3 int ccnt = 0; for (int x = SLOT_BEGIN; x < EQEmu::legacy::TYPE_WORLD_SIZE; x++) { - const ItemInst* inst = container->GetItem(x); + const EQEmu::ItemInstance* inst = container->GetItem(x); if(!inst) continue; - const EQEmu::ItemBase* item = GetItem(inst->GetItem()->ID); + const EQEmu::ItemData* item = GetItem(inst->GetItem()->ID); if (!item) continue; diff --git a/zone/trading.cpp b/zone/trading.cpp index aab8ac8ac..cfca3a2e6 100644 --- a/zone/trading.cpp +++ b/zone/trading.cpp @@ -98,14 +98,14 @@ void Trade::AddEntity(uint16 trade_slot_id, uint32 stack_size) { // Item always goes into trade bucket from cursor Client* client = owner->CastToClient(); - ItemInst* inst = client->GetInv().GetItem(EQEmu::legacy::SlotCursor); + EQEmu::ItemInstance* inst = client->GetInv().GetItem(EQEmu::legacy::SlotCursor); if (!inst) { client->Message(13, "Error: Could not find item on your cursor!"); return; } - ItemInst* inst2 = client->GetInv().GetItem(trade_slot_id); + EQEmu::ItemInstance* inst2 = client->GetInv().GetItem(trade_slot_id); // it looks like the original code attempted to allow stacking... // (it just didn't handle partial stack move actions) @@ -158,7 +158,7 @@ Mob* Trade::With() } // Private Method: Send item data for trade item to other person involved in trade -void Trade::SendItemData(const ItemInst* inst, int16 dest_slot_id) +void Trade::SendItemData(const EQEmu::ItemInstance* inst, int16 dest_slot_id) { if (inst == nullptr) return; @@ -175,7 +175,7 @@ void Trade::SendItemData(const ItemInst* inst, int16 dest_slot_id) if (inst->GetItem()->ItemClass == 1) { for (uint16 i = SUB_INDEX_BEGIN; i < EQEmu::legacy::ITEM_CONTAINER_SIZE; i++) { uint16 bagslot_id = Inventory::CalcSlotId(dest_slot_id, i); - const ItemInst* bagitem = trader->GetInv().GetItem(bagslot_id); + const EQEmu::ItemInstance* bagitem = trader->GetInv().GetItem(bagslot_id); if (bagitem) { with->SendItemPacket(bagslot_id - EQEmu::legacy::TRADE_BEGIN, bagitem, ItemPacketTradeView); } @@ -252,7 +252,7 @@ void Trade::LogTrade() strcat(logtext, "items {"); for (uint16 i = EQEmu::legacy::TRADE_BEGIN; i <= EQEmu::legacy::TRADE_END; i++) { - const ItemInst* inst = trader->GetInv().GetItem(i); + const EQEmu::ItemInstance* inst = trader->GetInv().GetItem(i); if (!comma) comma = true; @@ -304,7 +304,7 @@ void Trade::DumpTrade() Client* trader = owner->CastToClient(); for (uint16 i = EQEmu::legacy::TRADE_BEGIN; i <= EQEmu::legacy::TRADE_END; i++) { - const ItemInst* inst = trader->GetInv().GetItem(i); + const EQEmu::ItemInstance* inst = trader->GetInv().GetItem(i); if (inst) { Log.Out(Logs::Detail, Logs::Trading, "Item %i (Charges=%i, Slot=%i, IsBag=%s)", @@ -333,7 +333,7 @@ void Client::ResetTrade() { // step 1: process bags for (int16 trade_slot = EQEmu::legacy::TRADE_BEGIN; trade_slot <= EQEmu::legacy::TRADE_END; ++trade_slot) { - const ItemInst* inst = m_inv[trade_slot]; + const EQEmu::ItemInstance* inst = m_inv[trade_slot]; if (inst && inst->IsClassBag()) { int16 free_slot = m_inv.FindFreeSlotForTradeItem(inst); @@ -352,7 +352,7 @@ void Client::ResetTrade() { // step 2a: process stackables for (int16 trade_slot = EQEmu::legacy::TRADE_BEGIN; trade_slot <= EQEmu::legacy::TRADE_END; ++trade_slot) { - ItemInst* inst = GetInv().GetItem(trade_slot); + EQEmu::ItemInstance* inst = GetInv().GetItem(trade_slot); if (inst && inst->IsStackable()) { while (true) { @@ -362,7 +362,7 @@ void Client::ResetTrade() { if ((free_slot == EQEmu::legacy::SlotCursor) || (free_slot == INVALID_INDEX)) break; - ItemInst* partial_inst = GetInv().GetItem(free_slot); + EQEmu::ItemInstance* partial_inst = GetInv().GetItem(free_slot); if (!partial_inst) break; @@ -399,14 +399,14 @@ void Client::ResetTrade() { // step 2b: adjust trade stack bias // (if any partial stacks exist before the final stack, FindFreeSlotForTradeItem() will return that slot in step 3 and an overwrite will occur) for (int16 trade_slot = EQEmu::legacy::TRADE_END; trade_slot >= EQEmu::legacy::TRADE_BEGIN; --trade_slot) { - ItemInst* inst = GetInv().GetItem(trade_slot); + EQEmu::ItemInstance* inst = GetInv().GetItem(trade_slot); if (inst && inst->IsStackable()) { for (int16 bias_slot = EQEmu::legacy::TRADE_BEGIN; bias_slot <= EQEmu::legacy::TRADE_END; ++bias_slot) { if (bias_slot >= trade_slot) break; - ItemInst* bias_inst = GetInv().GetItem(bias_slot); + EQEmu::ItemInstance* bias_inst = GetInv().GetItem(bias_slot); if (!bias_inst || (bias_inst->GetID() != inst->GetID()) || (bias_inst->GetCharges() >= bias_inst->GetItem()->StackSize)) continue; @@ -433,7 +433,7 @@ void Client::ResetTrade() { // step 3: process everything else for (int16 trade_slot = EQEmu::legacy::TRADE_BEGIN; trade_slot <= EQEmu::legacy::TRADE_END; ++trade_slot) { - const ItemInst* inst = m_inv[trade_slot]; + const EQEmu::ItemInstance* inst = m_inv[trade_slot]; if (inst) { int16 free_slot = m_inv.FindFreeSlotForTradeItem(inst); @@ -488,7 +488,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st // step 1: process bags for (int16 trade_slot = EQEmu::legacy::TRADE_BEGIN; trade_slot <= EQEmu::legacy::TRADE_END; ++trade_slot) { - const ItemInst* inst = m_inv[trade_slot]; + const EQEmu::ItemInstance* inst = m_inv[trade_slot]; if (inst && inst->IsClassBag()) { Log.Out(Logs::Detail, Logs::Trading, "Giving container %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); @@ -524,7 +524,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st //for (uint8 sub_slot = SUB_BEGIN; ((sub_slot < inst->GetItem()->BagSlots) && (sub_slot < EmuConstants::ITEM_CONTAINER_SIZE)); ++sub_slot) { for (uint8 sub_slot = SUB_INDEX_BEGIN; (sub_slot < EQEmu::legacy::ITEM_CONTAINER_SIZE); ++sub_slot) { // this is to catch ALL items - const ItemInst* bag_inst = inst->GetItem(sub_slot); + const EQEmu::ItemInstance* bag_inst = inst->GetItem(sub_slot); if (bag_inst) { detail = new QSTradeItems_Struct; @@ -572,7 +572,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st // step 2a: process stackables for (int16 trade_slot = EQEmu::legacy::TRADE_BEGIN; trade_slot <= EQEmu::legacy::TRADE_END; ++trade_slot) { - ItemInst* inst = GetInv().GetItem(trade_slot); + EQEmu::ItemInstance* inst = GetInv().GetItem(trade_slot); if (inst && inst->IsStackable()) { while (true) { @@ -582,7 +582,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st if ((partial_slot == EQEmu::legacy::SlotCursor) || (partial_slot == INVALID_INDEX)) break; - ItemInst* partial_inst = other->GetInv().GetItem(partial_slot); + EQEmu::ItemInstance* partial_inst = other->GetInv().GetItem(partial_slot); if (!partial_inst) break; @@ -654,14 +654,14 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st // step 2b: adjust trade stack bias // (if any partial stacks exist before the final stack, FindFreeSlotForTradeItem() will return that slot in step 3 and an overwrite will occur) for (int16 trade_slot = EQEmu::legacy::TRADE_END; trade_slot >= EQEmu::legacy::TRADE_BEGIN; --trade_slot) { - ItemInst* inst = GetInv().GetItem(trade_slot); + EQEmu::ItemInstance* inst = GetInv().GetItem(trade_slot); if (inst && inst->IsStackable()) { for (int16 bias_slot = EQEmu::legacy::TRADE_BEGIN; bias_slot <= EQEmu::legacy::TRADE_END; ++bias_slot) { if (bias_slot >= trade_slot) break; - ItemInst* bias_inst = GetInv().GetItem(bias_slot); + EQEmu::ItemInstance* bias_inst = GetInv().GetItem(bias_slot); if (!bias_inst || (bias_inst->GetID() != inst->GetID()) || (bias_inst->GetCharges() >= bias_inst->GetItem()->StackSize)) continue; @@ -707,7 +707,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st // step 3: process everything else for (int16 trade_slot = EQEmu::legacy::TRADE_BEGIN; trade_slot <= EQEmu::legacy::TRADE_END; ++trade_slot) { - const ItemInst* inst = m_inv[trade_slot]; + const EQEmu::ItemInstance* inst = m_inv[trade_slot]; if (inst) { Log.Out(Logs::Detail, Logs::Trading, "Giving item %s (%d) in slot %d to %s", inst->GetItem()->Name, inst->GetItem()->ID, trade_slot, other->GetName()); @@ -744,7 +744,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st // 'step 3' should never really see containers..but, just in case... //for (uint8 sub_slot = SUB_BEGIN; ((sub_slot < inst->GetItem()->BagSlots) && (sub_slot < EmuConstants::ITEM_CONTAINER_SIZE)); ++sub_slot) { for (uint8 sub_slot = SUB_INDEX_BEGIN; (sub_slot < EQEmu::legacy::ITEM_CONTAINER_SIZE); ++sub_slot) { // this is to catch ALL items - const ItemInst* bag_inst = inst->GetItem(sub_slot); + const EQEmu::ItemInstance* bag_inst = inst->GetItem(sub_slot); if (bag_inst) { detail = new QSTradeItems_Struct; @@ -821,7 +821,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st if(qs_log) { // This can be incorporated below when revisions are made for (int16 trade_slot = EQEmu::legacy::TRADE_BEGIN; trade_slot <= EQEmu::legacy::TRADE_NPC_END; ++trade_slot) { - const ItemInst* trade_inst = m_inv[trade_slot]; + const EQEmu::ItemInstance* trade_inst = m_inv[trade_slot]; if(trade_inst) { auto detail = new QSHandinItems_Struct; @@ -842,7 +842,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st if (trade_inst->IsClassBag()) { for (uint8 sub_slot = SUB_INDEX_BEGIN; sub_slot < trade_inst->GetItem()->BagSlots; ++sub_slot) { - const ItemInst* trade_baginst = trade_inst->GetItem(sub_slot); + const EQEmu::ItemInstance* trade_baginst = trade_inst->GetItem(sub_slot); if(trade_baginst) { detail = new QSHandinItems_Struct; @@ -874,27 +874,27 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st } std::vector item_list; - std::list items; + std::list items; for (int i = EQEmu::legacy::TRADE_BEGIN; i <= EQEmu::legacy::TRADE_NPC_END; ++i) { - ItemInst *inst = m_inv.GetItem(i); + EQEmu::ItemInstance *inst = m_inv.GetItem(i); if(inst) { items.push_back(inst); item_list.push_back(inst); } else { - item_list.push_back((ItemInst*)nullptr); + item_list.push_back((EQEmu::ItemInstance*)nullptr); continue; } - const EQEmu::ItemBase* item = inst->GetItem(); + const EQEmu::ItemData* item = inst->GetItem(); if(item && quest_npc == false) { // if it was not a NO DROP or Attuned item (or if a GM is trading), let the NPC have it if(GetGM() || (item->NoDrop != 0 && inst->IsAttuned() == false)) { // pets need to look inside bags and try to equip items found there if (item->IsClassBag() && item->BagSlots > 0) { for (int16 bslot = SUB_INDEX_BEGIN; bslot < item->BagSlots; bslot++) { - const ItemInst* baginst = inst->GetItem(bslot); + const EQEmu::ItemInstance* baginst = inst->GetItem(bslot); if (baginst) { - const EQEmu::ItemBase* bagitem = baginst->GetItem(); + const EQEmu::ItemData* bagitem = baginst->GetItem(); if (bagitem && (GetGM() || (bagitem->NoDrop != 0 && baginst->IsAttuned() == false))) { tradingWith->CastToNPC()->AddLootDrop(bagitem, &tradingWith->CastToNPC()->itemlist, baginst->GetCharges(), 1, 127, true, true); @@ -947,7 +947,7 @@ void Client::FinishTrade(Mob* tradingWith, bool finalizer, void* event_entry, st tradingWith->FaceTarget(this); } - ItemInst *insts[4] = { 0 }; + EQEmu::ItemInstance *insts[4] = { 0 }; for (int i = EQEmu::legacy::TRADE_BEGIN; i <= EQEmu::legacy::TRADE_NPC_END; ++i) { insts[i - EQEmu::legacy::TRADE_BEGIN] = m_inv.PopItem(i); database.SaveInventory(CharacterID(), nullptr, i); @@ -969,7 +969,7 @@ bool Client::CheckTradeLoreConflict(Client* other) return true; // Move each trade slot into free inventory slot for (int16 i = EQEmu::legacy::TRADE_BEGIN; i <= EQEmu::legacy::TRADE_END; i++){ - const ItemInst* inst = m_inv[i]; + const EQEmu::ItemInstance* inst = m_inv[i]; if (inst && inst->GetItem()) { if (other->CheckLoreConflict(inst->GetItem())) @@ -978,7 +978,7 @@ bool Client::CheckTradeLoreConflict(Client* other) } for (int16 i = EQEmu::legacy::TRADE_BAGS_BEGIN; i <= EQEmu::legacy::TRADE_BAGS_END; i++){ - const ItemInst* inst = m_inv[i]; + const EQEmu::ItemInstance* inst = m_inv[i]; if (inst && inst->GetItem()) { if (other->CheckLoreConflict(inst->GetItem())) @@ -1158,14 +1158,14 @@ void Client::SendTraderItem(uint32 ItemID, uint16 Quantity) { std::string Packet; int16 FreeSlotID=0; - const EQEmu::ItemBase* item = database.GetItem(ItemID); + const EQEmu::ItemData* item = database.GetItem(ItemID); if(!item){ Log.Out(Logs::Detail, Logs::Trading, "Bogus item deleted in Client::SendTraderItem!\n"); return; } - ItemInst* inst = database.CreateItem(item, Quantity); + EQEmu::ItemInstance* inst = database.CreateItem(item, Quantity); if (inst) { @@ -1183,7 +1183,7 @@ void Client::SendTraderItem(uint32 ItemID, uint16 Quantity) { void Client::SendSingleTraderItem(uint32 CharID, int SerialNumber) { - ItemInst* inst= database.LoadSingleTraderItem(CharID, SerialNumber); + EQEmu::ItemInstance* inst= database.LoadSingleTraderItem(CharID, SerialNumber); if(inst) { SendItemPacket(30, inst, ItemPacketMerchant); // MainCursor? safe_delete(inst); @@ -1192,7 +1192,7 @@ void Client::SendSingleTraderItem(uint32 CharID, int SerialNumber) { } void Client::BulkSendTraderInventory(uint32 char_id) { - const EQEmu::ItemBase *item; + const EQEmu::ItemData *item; TraderCharges_Struct* TraderItems = database.LoadTraderItemWithCharges(char_id); @@ -1204,7 +1204,7 @@ void Client::BulkSendTraderInventory(uint32 char_id) { item=database.GetItem(TraderItems->ItemID[i]); if (item && (item->NoDrop!=0)) { - ItemInst* inst = database.CreateItem(item); + EQEmu::ItemInstance* inst = database.CreateItem(item); if (inst) { inst->SetSerialNumber(TraderItems->SerialNumber[i]); if(TraderItems->Charges[i] > 0) @@ -1230,7 +1230,7 @@ void Client::BulkSendTraderInventory(uint32 char_id) { uint32 Client::FindTraderItemSerialNumber(int32 ItemID) { - ItemInst* item = nullptr; + EQEmu::ItemInstance* item = nullptr; uint16 SlotID = 0; for (int i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++){ item = this->GetInv().GetItem(i); @@ -1251,9 +1251,9 @@ uint32 Client::FindTraderItemSerialNumber(int32 ItemID) { return 0; } -ItemInst* Client::FindTraderItemBySerialNumber(int32 SerialNumber){ +EQEmu::ItemInstance* Client::FindTraderItemBySerialNumber(int32 SerialNumber){ - ItemInst* item = nullptr; + EQEmu::ItemInstance* item = nullptr; uint16 SlotID = 0; for (int i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++){ item = this->GetInv().GetItem(i); @@ -1277,7 +1277,7 @@ ItemInst* Client::FindTraderItemBySerialNumber(int32 SerialNumber){ GetItems_Struct* Client::GetTraderItems(){ - const ItemInst* item = nullptr; + const EQEmu::ItemInstance* item = nullptr; uint16 SlotID = 0; auto gis = new GetItems_Struct; @@ -1308,7 +1308,7 @@ GetItems_Struct* Client::GetTraderItems(){ uint16 Client::FindTraderItem(int32 SerialNumber, uint16 Quantity){ - const ItemInst* item= nullptr; + const EQEmu::ItemInstance* item= nullptr; uint16 SlotID = 0; for (int i = EQEmu::legacy::GENERAL_BEGIN; i <= EQEmu::legacy::GENERAL_END; i++) { item = this->GetInv().GetItem(i); @@ -1370,7 +1370,7 @@ void Client::NukeTraderItem(uint16 Slot,int16 Charges,uint16 Quantity,Client* Cu } // This updates the trader. Removes it from his trading bags. // - const ItemInst* Inst = m_inv[Slot]; + const EQEmu::ItemInstance* Inst = m_inv[Slot]; database.SaveInventory(CharacterID(), Inst, Slot); @@ -1412,7 +1412,7 @@ void Client::TraderUpdate(uint16 SlotID,uint32 TraderID){ void Client::FindAndNukeTraderItem(int32 SerialNumber, uint16 Quantity, Client* Customer, uint16 TraderSlot){ - const ItemInst* item= nullptr; + const EQEmu::ItemInstance* item= nullptr; bool Stackable = false; int16 Charges=0; @@ -1564,7 +1564,7 @@ void Client::BuyTraderItem(TraderBuy_Struct* tbs, Client* Trader, const EQApplic outtbs->ItemID = tbs->ItemID; - const ItemInst* BuyItem = nullptr; + const EQEmu::ItemInstance* BuyItem = nullptr; uint32 ItemID = 0; if (ClientVersion() >= EQEmu::versions::ClientVersion::RoF) @@ -2027,11 +2027,11 @@ static void UpdateTraderCustomerItemsAdded(uint32 CustomerID, TraderCharges_Stru if(!Customer) return; - const EQEmu::ItemBase *item = database.GetItem(ItemID); + const EQEmu::ItemData *item = database.GetItem(ItemID); if(!item) return; - ItemInst* inst = database.CreateItem(item); + EQEmu::ItemInstance* inst = database.CreateItem(item); if(!inst) return; @@ -2071,7 +2071,7 @@ static void UpdateTraderCustomerPriceChanged(uint32 CustomerID, TraderCharges_St if(!Customer) return; - const EQEmu::ItemBase *item = database.GetItem(ItemID); + const EQEmu::ItemData *item = database.GetItem(ItemID); if(!item) return; @@ -2112,7 +2112,7 @@ static void UpdateTraderCustomerPriceChanged(uint32 CustomerID, TraderCharges_St Log.Out(Logs::Detail, Logs::Trading, "Sending price updates to customer %s", Customer->GetName()); - ItemInst* inst = database.CreateItem(item); + EQEmu::ItemInstance* inst = database.CreateItem(item); if(!inst) return; @@ -2230,7 +2230,7 @@ void Client::HandleTraderPriceUpdate(const EQApplicationPacket *app) { } - const EQEmu::ItemBase *item = 0; + const EQEmu::ItemData *item = 0; if(IDOfItemToAdd) item = database.GetItem(IDOfItemToAdd); @@ -2396,7 +2396,7 @@ void Client::SendBuyerResults(char* searchString, uint32 searchID) { char *buf = (char *)outapp->pBuffer; - const EQEmu::ItemBase* item = database.GetItem(itemID); + const EQEmu::ItemData* item = database.GetItem(itemID); if(!item) { safe_delete(outapp); @@ -2492,7 +2492,7 @@ void Client::ShowBuyLines(const EQApplicationPacket *app) { char *Buf = (char *)outapp->pBuffer; - const EQEmu::ItemBase* item = database.GetItem(ItemID); + const EQEmu::ItemData* item = database.GetItem(ItemID); if(!item) { safe_delete(outapp); @@ -2536,7 +2536,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { /*uint32 BuyerID2 =*/ VARSTRUCT_SKIP_TYPE(uint32, Buf); //unused /*uint32 Unknown3 =*/ VARSTRUCT_SKIP_TYPE(uint32, Buf); //unused - const EQEmu::ItemBase *item = database.GetItem(ItemID); + const EQEmu::ItemData *item = database.GetItem(ItemID); if(!item || !Quantity || !Price || !QtyBuyerWants) return; @@ -2602,7 +2602,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { return; } - ItemInst* ItemToTransfer = m_inv.PopItem(SellerSlot); + EQEmu::ItemInstance* ItemToTransfer = m_inv.PopItem(SellerSlot); if(!ItemToTransfer || !Buyer->MoveItemToInventory(ItemToTransfer, true)) { Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); @@ -2648,7 +2648,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) { return; } - ItemInst* ItemToTransfer = m_inv.PopItem(SellerSlot); + EQEmu::ItemInstance* ItemToTransfer = m_inv.PopItem(SellerSlot); if(!ItemToTransfer) { Log.Out(Logs::General, Logs::Error, "Unexpected error while moving item from seller to buyer."); @@ -2927,7 +2927,7 @@ void Client::UpdateBuyLine(const EQApplicationPacket *app) { /*uint32 UnknownZ =*/ VARSTRUCT_SKIP_TYPE(uint32, Buf); //unused uint32 ItemCount = VARSTRUCT_DECODE_TYPE(uint32, Buf); - const EQEmu::ItemBase *item = database.GetItem(ItemID); + const EQEmu::ItemData *item = database.GetItem(ItemID); if(!item) return; @@ -2991,7 +2991,7 @@ void Client::BuyerItemSearch(const EQApplicationPacket *app) { BuyerItemSearchResults_Struct* bisr = (BuyerItemSearchResults_Struct*)outapp->pBuffer; - const EQEmu::ItemBase* item = 0; + const EQEmu::ItemData* item = 0; int Count=0; diff --git a/zone/tribute.cpp b/zone/tribute.cpp index d40dfa6f2..537473e72 100644 --- a/zone/tribute.cpp +++ b/zone/tribute.cpp @@ -161,7 +161,7 @@ void Client::DoTributeUpdate() { uint32 item_id = tier.tribute_item_id; //summon the item for them - const ItemInst* inst = database.CreateItem(item_id, 1); + const EQEmu::ItemInstance* inst = database.CreateItem(item_id, 1); if(inst == nullptr) continue; @@ -239,7 +239,7 @@ void Client::SendTributeDetails(uint32 client_id, uint32 tribute_id) { //returns the number of points received from the tribute int32 Client::TributeItem(uint32 slot, uint32 quantity) { - const ItemInst*inst = m_inv[slot]; + const EQEmu::ItemInstance*inst = m_inv[slot]; if(inst == nullptr) return(0); diff --git a/zone/tune.cpp b/zone/tune.cpp index ea93a43f3..f8655d66a 100644 --- a/zone/tune.cpp +++ b/zone/tune.cpp @@ -587,7 +587,7 @@ int32 Client::GetMeleeDamage(Mob* other, bool GetMinDamage) if (!other) return 0; - ItemInst* weapon; + EQEmu::ItemInstance* weapon; weapon = GetInv().GetItem(EQEmu::legacy::SlotPrimary); if(weapon != nullptr) { @@ -630,7 +630,7 @@ int32 Client::GetMeleeDamage(Mob* other, bool GetMinDamage) if (Hand == EQEmu::legacy::SlotPrimary && GetLevel() >= 28 && IsWarriorClass()) { - ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemBase*) nullptr); + ucDamageBonus = GetWeaponDamageBonus(weapon ? weapon->GetItem() : (const EQEmu::ItemData*) nullptr); min_hit += (int) ucDamageBonus; max_hit += (int) ucDamageBonus; @@ -661,7 +661,7 @@ void Mob::Tune_FindAccuaryByHitChance(Mob* defender, Mob *attacker, float hit_ch EQEmu::skills::SkillType skillinuse = EQEmu::skills::SkillHandtoHand; if (attacker->IsClient()) {//Will check first equiped weapon for skill. Ie. remove wepaons to assess bow. - ItemInst* weapon; + EQEmu::ItemInstance* weapon; weapon = attacker->CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); if(weapon && weapon->IsWeapon()){ @@ -741,7 +741,7 @@ void Mob::Tune_FindAvoidanceByHitChance(Mob* defender, Mob *attacker, float hit_ EQEmu::skills::SkillType skillinuse = EQEmu::skills::SkillHandtoHand; if (attacker->IsClient()) {//Will check first equiped weapon for skill. Ie. remove wepaons to assess bow. - ItemInst* weapon; + EQEmu::ItemInstance* weapon; weapon = attacker->CastToClient()->GetInv().GetItem(EQEmu::legacy::SlotPrimary); if(weapon && weapon->IsWeapon()){ diff --git a/zone/zone.cpp b/zone/zone.cpp index 1edf1a268..9391b47bb 100644 --- a/zone/zone.cpp +++ b/zone/zone.cpp @@ -248,12 +248,12 @@ bool Zone::LoadZoneObjects() data.tilt_y = atof(row[18]); data.unknown084 = 0; - ItemInst *inst = nullptr; + EQEmu::ItemInstance *inst = nullptr; // FatherNitwit: this dosent seem to work... // tradeskill containers do not have an itemid of 0... at least what I am seeing if (itemid == 0) { // Generic tradeskill container - inst = new ItemInst(ItemInstWorldContainer); + inst = new EQEmu::ItemInstance(ItemInstWorldContainer); } else { // Groundspawn object inst = database.CreateItem(itemid); @@ -261,7 +261,7 @@ bool Zone::LoadZoneObjects() // Father Nitwit's fix... not perfect... if (inst == nullptr && type != OT_DROPPEDITEM) { - inst = new ItemInst(ItemInstWorldContainer); + inst = new EQEmu::ItemInstance(ItemInstWorldContainer); } // Load child objects if container @@ -294,7 +294,7 @@ bool Zone::LoadGroundSpawns() { uint32 gsnumber=0; for(gsindex=0;gsindex<50;gsindex++){ if(groundspawn.spawn[gsindex].item>0 && groundspawn.spawn[gsindex].itemGetItem()->IsClassCommon()) { for (int i = AUG_INDEX_BEGIN; i < EQEmu::legacy::ITEM_COMMON_SIZE; i++) if (aug[i]) @@ -509,7 +509,7 @@ void ZoneDatabase::LoadWorldContainer(uint32 parentid, ItemInst* container) } // Save child objects for a world container (i.e., forge, bag dropped to ground, etc) -void ZoneDatabase::SaveWorldContainer(uint32 zone_id, uint32 parent_id, const ItemInst* container) +void ZoneDatabase::SaveWorldContainer(uint32 zone_id, uint32 parent_id, const EQEmu::ItemInstance* container) { // Since state is not saved for each world container action, we'll just delete // all and save from scratch .. we may come back later to optimize @@ -522,7 +522,7 @@ void ZoneDatabase::SaveWorldContainer(uint32 zone_id, uint32 parent_id, const It // Save all 10 items, if they exist for (uint8 index = SUB_INDEX_BEGIN; index < EQEmu::legacy::ITEM_CONTAINER_SIZE; index++) { - ItemInst* inst = container->GetItem(index); + EQEmu::ItemInstance* inst = container->GetItem(index); if (!inst) continue; @@ -531,7 +531,7 @@ void ZoneDatabase::SaveWorldContainer(uint32 zone_id, uint32 parent_id, const It if (inst->IsType(EQEmu::item::ItemClassCommon)) { for (int i = AUG_INDEX_BEGIN; i < EQEmu::legacy::ITEM_COMMON_SIZE; i++) { - ItemInst *auginst=inst->GetAugment(i); + EQEmu::ItemInstance *auginst=inst->GetAugment(i); augslot[i]=(auginst && auginst->GetItem()) ? auginst->GetItem()->ID : 0; } } @@ -611,7 +611,7 @@ TraderCharges_Struct* ZoneDatabase::LoadTraderItemWithCharges(uint32 char_id) return loadti; } -ItemInst* ZoneDatabase::LoadSingleTraderItem(uint32 CharID, int SerialNumber) { +EQEmu::ItemInstance* ZoneDatabase::LoadSingleTraderItem(uint32 CharID, int SerialNumber) { std::string query = StringFormat("SELECT * FROM trader WHERE char_id = %i AND serialnumber = %i " "ORDER BY slot_id LIMIT 80", CharID, SerialNumber); auto results = QueryDatabase(query); @@ -629,7 +629,7 @@ ItemInst* ZoneDatabase::LoadSingleTraderItem(uint32 CharID, int SerialNumber) { int Charges = atoi(row[3]); int Cost = atoi(row[4]); - const EQEmu::ItemBase *item = database.GetItem(ItemID); + const EQEmu::ItemData *item = database.GetItem(ItemID); if(!item) { Log.Out(Logs::Detail, Logs::Trading, "Unable to create item\n"); @@ -640,7 +640,7 @@ ItemInst* ZoneDatabase::LoadSingleTraderItem(uint32 CharID, int SerialNumber) { if (item->NoDrop == 0) return nullptr; - ItemInst* inst = database.CreateItem(item); + EQEmu::ItemInstance* inst = database.CreateItem(item); if(!inst) { Log.Out(Logs::Detail, Logs::Trading, "Unable to create item instance\n"); fflush(stdout); @@ -684,7 +684,7 @@ void ZoneDatabase::UpdateTraderItemPrice(int CharID, uint32 ItemID, uint32 Charg Log.Out(Logs::Detail, Logs::Trading, "ZoneDatabase::UpdateTraderPrice(%i, %i, %i, %i)", CharID, ItemID, Charges, NewPrice); - const EQEmu::ItemBase *item = database.GetItem(ItemID); + const EQEmu::ItemData *item = database.GetItem(ItemID); if(!item) return; @@ -1197,7 +1197,7 @@ bool ZoneDatabase::LoadCharacterBandolier(uint32 character_id, PlayerProfile_Str i = atoi(row[r]); /* Bandolier ID */ r++; si = atoi(row[r]); /* Bandolier Slot */ r++; - const EQEmu::ItemBase* item_data = database.GetItem(atoi(row[r])); + const EQEmu::ItemData* item_data = database.GetItem(atoi(row[r])); if (item_data) { pp->bandoliers[i].Items[si].ID = item_data->ID; r++; pp->bandoliers[i].Items[si].Icon = atoi(row[r]); r++; // Must use db value in case an Ornamentation is assigned @@ -1249,7 +1249,7 @@ bool ZoneDatabase::LoadCharacterPotions(uint32 character_id, PlayerProfile_Struc for (auto row = results.begin(); row != results.end(); ++row) { i = atoi(row[0]); - const EQEmu::ItemBase *item_data = database.GetItem(atoi(row[1])); + const EQEmu::ItemData *item_data = database.GetItem(atoi(row[1])); if (!item_data) continue; pp->potionbelt.Items[i].ID = item_data->ID; diff --git a/zone/zonedb.h b/zone/zonedb.h index 689f9a82f..1c96ee298 100644 --- a/zone/zonedb.h +++ b/zone/zonedb.h @@ -16,7 +16,6 @@ class NPC; class Petition; class Spawn2; class SpawnGroupList; -class ItemInst; struct CharacterEventLog_Struct; struct Door; struct ExtendedProfile_Struct; @@ -24,6 +23,12 @@ struct NPCType; struct PlayerCorpse_Struct; struct ZonePoint; struct npcDecayTimes_Struct; + +namespace EQEmu +{ + class ItemInstance; +} + template class LinkedList; //#include "doors.h" @@ -224,11 +229,11 @@ public: virtual ~ZoneDatabase(); /* Objects and World Containers */ - void LoadWorldContainer(uint32 parentid, ItemInst* container); - void SaveWorldContainer(uint32 zone_id, uint32 parent_id, const ItemInst* container); + void LoadWorldContainer(uint32 parentid, EQEmu::ItemInstance* container); + void SaveWorldContainer(uint32 zone_id, uint32 parent_id, const EQEmu::ItemInstance* container); void DeleteWorldContainer(uint32 parent_id,uint32 zone_id); - uint32 AddObject(uint32 type, uint32 icon, const Object_Struct& object, const ItemInst* inst); - void UpdateObject(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, const ItemInst* inst); + uint32 AddObject(uint32 type, uint32 icon, const Object_Struct& object, const EQEmu::ItemInstance* inst); + void UpdateObject(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, const EQEmu::ItemInstance* inst); void DeleteObject(uint32 id); Ground_Spawns* LoadGroundSpawns(uint32 zone_id, int16 version, Ground_Spawns* gs); @@ -239,7 +244,7 @@ public: void DeleteTraderItem(uint32 char_id); void DeleteTraderItem(uint32 char_id,uint16 slot_id); - ItemInst* LoadSingleTraderItem(uint32 char_id, int uniqueid); + EQEmu::ItemInstance* LoadSingleTraderItem(uint32 char_id, int uniqueid); Trader_Struct* LoadTraderItem(uint32 char_id); TraderCharges_Struct* LoadTraderItemWithCharges(uint32 char_id); @@ -427,7 +432,7 @@ public: void DeleteMerchantTemp(uint32 npcid, uint32 slot); /* Tradeskills */ - bool GetTradeRecipe(const ItemInst* container, uint8 c_type, uint32 some_id, uint32 char_id, DBTradeskillRecipe_Struct *spec); + bool GetTradeRecipe(const EQEmu::ItemInstance* container, uint8 c_type, uint32 some_id, uint32 char_id, DBTradeskillRecipe_Struct *spec); bool GetTradeRecipe(uint32 recipe_id, uint8 c_type, uint32 some_id, uint32 char_id, DBTradeskillRecipe_Struct *spec); uint32 GetZoneForage(uint32 ZoneID, uint8 skill); /* for foraging */ uint32 GetZoneFishing(uint32 ZoneID, uint8 skill, uint32 &npc_id, uint8 &npc_chance);