aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp9
-rw-r--r--src/server/game/DataStores/DB2Stores.h1
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp13
3 files changed, 15 insertions, 8 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 1715ccaaa89..9e825441ba8 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -458,6 +458,7 @@ namespace
ItemModifiedAppearanceByItemContainer _itemModifiedAppearancesByItem;
ItemSetSpellContainer _itemSetSpells;
ItemSpecOverridesContainer _itemSpecOverrides;
+ std::unordered_map<uint32 /*itemId*/, std::vector<ItemEffectEntry const*>> _itemEffectsByItemId;
std::vector<JournalTierEntry const*> _journalTiersByIndex;
MapDifficultyContainer _mapDifficulties;
std::unordered_map<uint32, DB2Manager::MapDifficultyConditionsContainer> _mapDifficultyConditions;
@@ -1234,6 +1235,9 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul
for (ItemCurrencyCostEntry const* itemCurrencyCost : sItemCurrencyCostStore)
_itemsWithCurrencyCost.insert(itemCurrencyCost->ItemID);
+ for (ItemEffectEntry const* itemEffect : sItemEffectStore)
+ _itemEffectsByItemId[itemEffect->ParentItemID].push_back(itemEffect);
+
for (ItemLimitCategoryConditionEntry const* condition : sItemLimitCategoryConditionStore)
_itemCategoryConditions[condition->ParentItemLimitCategoryID].push_back(condition);
@@ -3145,3 +3149,8 @@ bool DB2Manager::MountTypeXCapabilityEntryComparator::Compare(MountTypeXCapabili
return left->OrderIndex < right->OrderIndex;
return left->MountTypeID < right->MountTypeID;
}
+
+std::vector<ItemEffectEntry const*> const* DB2Manager::GetItemEffectsForItemId(uint32 itemId) const
+{
+ return Trinity::Containers::MapGetValuePtr(_itemEffectsByItemId, itemId);
+}
diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h
index 89bba8e4bd1..82b536cba7e 100644
--- a/src/server/game/DataStores/DB2Stores.h
+++ b/src/server/game/DataStores/DB2Stores.h
@@ -515,6 +515,7 @@ public:
bool IsUiMapPhase(uint32 phaseId) const;
WMOAreaTableEntry const* GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId) const;
std::unordered_set<uint32> const* GetPVPStatIDsForMap(uint32 mapId) const;
+ std::vector<ItemEffectEntry const*> const* GetItemEffectsForItemId(uint32 itemId) const;
private:
friend class DB2HotfixGeneratorBase;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 13c70ef83d7..7715e1fcb84 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -3319,15 +3319,12 @@ void ObjectMgr::LoadItemTemplates()
for (auto& specs : itemTemplate.Specializations)
if (specs.count() == 0)
specs.set();
- }
- /*
- // Load item effects (spells)
- for (ItemXItemEffectEntry const* effectEntry : sItemXItemEffectStore)
- if (ItemTemplate* item = Trinity::Containers::MapGetValuePtr(_itemTemplateStore, effectEntry->ItemID))
- if (ItemEffectEntry const* effect = sItemEffectStore.LookupEntry(effectEntry->ItemEffectID))
- item->Effects.push_back(effect);
- */
+ // Load item effects (spells)
+ if (std::vector<ItemEffectEntry const*> const* itemEffects = sDB2Manager.GetItemEffectsForItemId(sparse->ID))
+ for (ItemEffectEntry const* itemEffect : *itemEffects)
+ itemTemplate.Effects.push_back(itemEffect);
+ }
TC_LOG_INFO("server.loading", ">> Loaded {} item templates in {} ms", _itemTemplateStore.size(), GetMSTimeDiffToNow(oldMSTime));
}