aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index c33c494954a..3f448b6ff7d 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -24,6 +24,7 @@
#include "Chat.h"
#include "Containers.h"
#include "CreatureAIFactory.h"
+#include "CriteriaHandler.h"
#include "DatabaseEnv.h"
#include "DB2Stores.h"
#include "DisableMgr.h"
@@ -5880,6 +5881,26 @@ void ObjectMgr::LoadEventSet()
_eventStore.insert(node->DepartureEventID);
}
}
+
+ // Load all possible event ids from criterias
+ auto addCriteriaEventsToStore = [&](CriteriaList const& criteriaList)
+ {
+ for (Criteria const* criteria : criteriaList)
+ if (criteria->Entry->Asset.EventID)
+ _eventStore.insert(criteria->Entry->Asset.EventID);
+ };
+
+ std::array<CriteriaType, 2> eventCriteriaTypes = { CriteriaType::PlayerTriggerGameEvent, CriteriaType::AnyoneTriggerGameEventScenario };
+ for (CriteriaType criteriaType : eventCriteriaTypes)
+ {
+ addCriteriaEventsToStore(sCriteriaMgr->GetPlayerCriteriaByType(criteriaType, 0));
+ addCriteriaEventsToStore(sCriteriaMgr->GetGuildCriteriaByType(criteriaType));
+ addCriteriaEventsToStore(sCriteriaMgr->GetQuestObjectiveCriteriaByType(criteriaType));
+ }
+
+ for (ScenarioEntry const* scenario : sScenarioStore)
+ for (CriteriaType criteriaType : eventCriteriaTypes)
+ addCriteriaEventsToStore(sCriteriaMgr->GetScenarioCriteriaByTypeAndScenario(criteriaType, scenario->ID));
}
void ObjectMgr::LoadEventScripts()
@@ -5894,7 +5915,7 @@ void ObjectMgr::LoadEventScripts()
for (ScriptMapMap::const_iterator itr = sEventScripts.begin(); itr != sEventScripts.end(); ++itr)
{
if (!IsValidEvent(itr->first))
- TC_LOG_ERROR("sql.sql", "Table `event_scripts` has script (Id: {}) not referring to any gameobject_template (data field referencing GameEvent), any taxi path node or any spell effect {}",
+ TC_LOG_ERROR("sql.sql", "Table `event_scripts` has script (Id: {}) not referring to any gameobject_template (data field referencing GameEvent), any taxi path node, any criteria asset or any spell effect {}",
itr->first, SPELL_EFFECT_SEND_EVENT);
}
@@ -5918,7 +5939,7 @@ void ObjectMgr::LoadEventScripts()
if (!IsValidEvent(eventId))
{
- TC_LOG_ERROR("sql.sql", "Event (ID: {}) not referring to any gameobject_template (data field referencing GameEvent), any taxi path node or any spell effect {}",
+ TC_LOG_ERROR("sql.sql", "Event (ID: {}) not referring to any gameobject_template (data field referencing GameEvent), any taxi path node, any criteria asset or any spell effect {}",
eventId, SPELL_EFFECT_SEND_EVENT);
continue;
}