Core/Scripts: Add start/fail asset values from criteria to valid game event ids

Closes #29447
This commit is contained in:
Shauren
2023-11-20 13:02:56 +01:00
parent 36a6488405
commit 8c072b93af
4 changed files with 29 additions and 16 deletions

View File

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

View File

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

View File

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

View File

@@ -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()