Core/DataStores: fixed assigning item effects

This commit is contained in:
Ovahlord
2024-03-12 10:27:38 +01:00
parent 6dd7965a0d
commit 74530eb59b
3 changed files with 15 additions and 8 deletions

View File

@@ -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);
}

View File

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

View File

@@ -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));
}