diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-09-01 20:07:58 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-09-01 20:07:58 +0200 |
| commit | 7957e2d380e08fa831765f610c0e29d2f3e11a04 (patch) | |
| tree | 55632f7f94edb3096360c983abbdd448d8dc79d7 /src/server/game/Entities/Item | |
| parent | 62e5b52d2b91832889f02edc7bbd83ad474923e3 (diff) | |
Core/Loot: Allocate Loot separately from objects
Diffstat (limited to 'src/server/game/Entities/Item')
| -rw-r--r-- | src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/Item.h | 5 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp index 21662ee9d96..ae86e0ab97e 100644 --- a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp +++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp @@ -17,6 +17,7 @@ #include "AzeriteItem.h" #include "AzeritePackets.h" +#include "ConditionMgr.h" #include "DatabaseEnv.h" #include "DB2Stores.h" #include "GameObject.h" diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index d52519fa164..464706d5538 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -31,6 +31,7 @@ #include "ItemEnchantmentMgr.h" #include "ItemPackets.h" #include "Log.h" +#include "Loot.h" #include "LootItemStorage.h" #include "LootMgr.h" #include "Map.h" @@ -805,7 +806,7 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans) CharacterDatabase.CommitTransaction(trans); // Delete the items if this is a container - if (!loot.isLooted()) + if (m_loot && !m_loot->isLooted()) sLootItemStorage->RemoveStoredLootForContainer(GetGUID().GetCounter()); delete this; @@ -1117,7 +1118,7 @@ void Item::DeleteFromDB(CharacterDatabaseTransaction trans) DeleteFromDB(trans, GetGUID().GetCounter()); // Delete the items if this is a container - if (!loot.isLooted()) + if (m_loot && !m_loot->isLooted()) sLootItemStorage->RemoveStoredLootForContainer(GetGUID().GetCounter()); } diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index 8e7aebc7660..6a778e0fe65 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -25,11 +25,11 @@ #include "ItemEnchantmentMgr.h" #include "ItemTemplate.h" #include "IteratorPair.h" -#include "Loot.h" class SpellInfo; class Bag; class Unit; +struct Loot; namespace WorldPackets { namespace Item @@ -313,8 +313,9 @@ class TC_GAME_API Item : public Object int32 GetSpellCharges(uint8 index/*0..5*/ = 0) const { return m_itemData->SpellCharges[index]; } void SetSpellCharges(uint8 index/*0..5*/, int32 value) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::SpellCharges, index), value); } - Loot loot; + std::unique_ptr<Loot> m_loot; bool m_lootGenerated; + Loot* GetLootForPlayer(Player const* /*player*/) const override { return m_loot.get(); } // Update States ItemUpdateState GetState() const { return uState; } |
