aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-11-20 13:02:56 +0100
committerShauren <shauren.trinity@gmail.com>2023-11-20 13:02:56 +0100
commit8c072b93af3a4efcbde21cc85fedcf7fa48fa7b4 (patch)
tree31e60f6a4c597bc11f578b64452881acbbe5f083 /src
parent36a64884054f0bf34e815b62157be61c3476127a (diff)
Core/Scripts: Add start/fail asset values from criteria to valid game event ids
Closes #29447
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp10
-rw-r--r--src/server/game/Achievements/CriteriaHandler.h2
-rw-r--r--src/server/game/DataStores/DB2Stores.h1
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp32
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()