diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.h | 2 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Stores.h | 1 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 32 |
4 files changed, 29 insertions, 16 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 2f4d7d1a356..2ce1485fcbf 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -4539,11 +4539,21 @@ CriteriaList const& CriteriaMgr::GetScenarioCriteriaByTypeAndScenario(CriteriaTy return EmptyCriteriaList; } +std::unordered_map<int32, CriteriaList> const& CriteriaMgr::GetCriteriaByStartEvent(CriteriaStartEvent startEvent) const +{ + return _criteriasByStartEvent[size_t(startEvent)]; +} + CriteriaList const* CriteriaMgr::GetCriteriaByStartEvent(CriteriaStartEvent startEvent, int32 asset) const { return Trinity::Containers::MapGetValuePtr(_criteriasByStartEvent[size_t(startEvent)], asset); } +std::unordered_map<int32, CriteriaList> const& CriteriaMgr::GetCriteriaByFailEvent(CriteriaFailEvent failEvent) const +{ + return _criteriasByFailEvent[size_t(failEvent)]; +} + CriteriaList const* CriteriaMgr::GetCriteriaByFailEvent(CriteriaFailEvent failEvent, int32 asset) const { return Trinity::Containers::MapGetValuePtr(_criteriasByFailEvent[size_t(failEvent)], asset); diff --git a/src/server/game/Achievements/CriteriaHandler.h b/src/server/game/Achievements/CriteriaHandler.h index 0205130cdc0..cfcf8a614c1 100644 --- a/src/server/game/Achievements/CriteriaHandler.h +++ b/src/server/game/Achievements/CriteriaHandler.h @@ -349,8 +349,10 @@ public: return itr != _criteriaTreeByCriteria.end() ? &itr->second : nullptr; } + std::unordered_map<int32, CriteriaList> const& GetCriteriaByStartEvent(CriteriaStartEvent startEvent) const; CriteriaList const* GetCriteriaByStartEvent(CriteriaStartEvent startEvent, int32 asset) const; + std::unordered_map<int32, CriteriaList> const& GetCriteriaByFailEvent(CriteriaFailEvent failEvent) const; CriteriaList const* GetCriteriaByFailEvent(CriteriaFailEvent failEvent, int32 asset) const; CriteriaDataSet const* GetCriteriaDataSet(Criteria const* Criteria) const diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index a8f40b74d48..f7f693002d2 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -259,6 +259,7 @@ TC_GAME_API extern DB2Storage<SummonPropertiesEntry> sSummonPrope TC_GAME_API extern DB2Storage<TalentEntry> sTalentStore; TC_GAME_API extern DB2Storage<TaxiNodesEntry> sTaxiNodesStore; TC_GAME_API extern DB2Storage<TaxiPathEntry> sTaxiPathStore; +TC_GAME_API extern DB2Storage<TaxiPathNodeEntry> sTaxiPathNodeStore; TC_GAME_API extern DB2Storage<TraitCondEntry> sTraitCondStore; TC_GAME_API extern DB2Storage<TraitCostEntry> sTraitCostStore; TC_GAME_API extern DB2Storage<TraitCurrencyEntry> sTraitCurrencyStore; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index e882198834a..2f4573c7ee0 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -5873,26 +5873,18 @@ void ObjectMgr::LoadEventSet() } // Load all possible event ids from spells - for (SpellNameEntry const* spellNameEntry : sSpellNameStore) - if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(spellNameEntry->ID, DIFFICULTY_NONE)) - for (SpellEffectInfo const& spellEffectInfo : spell->GetEffects()) - if (spellEffectInfo.IsEffect(SPELL_EFFECT_SEND_EVENT)) - if (spellEffectInfo.MiscValue) - _eventStore.insert(spellEffectInfo.MiscValue); + for (SpellEffectEntry const* spellEffect : sSpellEffectStore) + if (spellEffect->Effect == SPELL_EFFECT_SEND_EVENT && spellEffect->EffectMiscValue[0]) + _eventStore.insert(spellEffect->EffectMiscValue[0]); // Load all possible event ids from taxi path nodes - for (size_t path_idx = 0; path_idx < sTaxiPathNodesByPath.size(); ++path_idx) + for (TaxiPathNodeEntry const* node : sTaxiPathNodeStore) { - for (size_t node_idx = 0; node_idx < sTaxiPathNodesByPath[path_idx].size(); ++node_idx) - { - TaxiPathNodeEntry const* node = sTaxiPathNodesByPath[path_idx][node_idx]; - - if (node->ArrivalEventID) - _eventStore.insert(node->ArrivalEventID); + if (node->ArrivalEventID) + _eventStore.insert(node->ArrivalEventID); - if (node->DepartureEventID) - _eventStore.insert(node->DepartureEventID); - } + if (node->DepartureEventID) + _eventStore.insert(node->DepartureEventID); } // Load all possible event ids from criterias @@ -5914,6 +5906,14 @@ void ObjectMgr::LoadEventSet() for (ScenarioEntry const* scenario : sScenarioStore) for (CriteriaType criteriaType : eventCriteriaTypes) addCriteriaEventsToStore(sCriteriaMgr->GetScenarioCriteriaByTypeAndScenario(criteriaType, scenario->ID)); + + for (auto const& [gameEventId, _] : sCriteriaMgr->GetCriteriaByStartEvent(CriteriaStartEvent::SendEvent)) + if (gameEventId) + _eventStore.insert(gameEventId); + + for (auto const& [gameEventId, _] : sCriteriaMgr->GetCriteriaByFailEvent(CriteriaFailEvent::SendEvent)) + if (gameEventId) + _eventStore.insert(gameEventId); } void ObjectMgr::LoadEventScripts() |