diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-11-20 13:02:56 +0100 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2023-12-01 23:28:35 +0100 |
commit | b6e346eaf0ee9a1c0dc2c7977ac950b77c857ecf (patch) | |
tree | 48a23b1072de5c33b0e6e11ae6b21d912805797b /src | |
parent | 21b75530a6113f11d0e979669f5fc654f602966d (diff) |
Core/Scripts: Add start/fail asset values from criteria to valid game event ids
Closes #29447
(cherry picked from commit 8c072b93af3a4efcbde21cc85fedcf7fa48fa7b4)
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 bea97f7ab09..a821b11c642 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -4399,11 +4399,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 1bcc2e6c4d4..bedaf63f05b 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -258,6 +258,7 @@ TC_GAME_API extern DB2Storage<TalentEntry> sTalentStore TC_GAME_API extern DB2Storage<TalentTabEntry> sTalentTabStore; 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 02138c16d64..09694f457eb 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -5857,26 +5857,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 @@ -5898,6 +5890,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() |