From b47ed7401aed9599aeda75c31e58fd9326aec2c5 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 3 Feb 2024 11:24:03 -0500 Subject: [PATCH] Core/Scripts: Add start/fail asset values from criteria to valid game event ids Port From (https://github.com/TrinityCore/TrinityCore/commit/8c072b93af3a4efcbde21cc85fedcf7fa48fa7b4) --- Source/Game/Achievements/CriteriaHandler.cs | 10 ++++++ Source/Game/Globals/ObjectManager.cs | 39 +++++++++------------ 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index ffae2fa67..ae308714e 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -4104,11 +4104,21 @@ namespace Game.Achievements return _scenarioCriteriasByTypeAndScenarioId[(int)type].LookupByKey(scenarioId); } + public MultiMap GetCriteriaByStartEvent(CriteriaStartEvent startEvent) + { + return _criteriasByStartEvent[(int)startEvent]; + } + public List GetCriteriaByStartEvent(CriteriaStartEvent startEvent, int asset) { return _criteriasByStartEvent[(int)startEvent].LookupByKey(asset); } + public MultiMap GetCriteriaByFailEvent(CriteriaFailEvent failEvent) + { + return _criteriasByFailEvent[(int)failEvent]; + } + public List GetCriteriaByFailEvent(CriteriaFailEvent failEvent, int asset) { return _criteriasByFailEvent[(int)failEvent].LookupByKey(asset); diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index b7e06b32f..c8016fc44 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -1454,33 +1454,18 @@ namespace Game _eventStorage.AddRange(go.Value.GetEventScriptSet()); // Load all possible event ids from spells - foreach (SpellNameRecord spellNameEntry in CliDB.SpellNameStorage.Values) - { - SpellInfo spell = Global.SpellMgr.GetSpellInfo(spellNameEntry.Id, Difficulty.None); - if (spell != null) - { - foreach (var spellEffectInfo in spell.GetEffects()) - { - if (spellEffectInfo.IsEffect(SpellEffectName.SendEvent)) - if (spellEffectInfo.MiscValue != 0) - _eventStorage.Add((uint)spellEffectInfo.MiscValue); - } - } - } + foreach (var spellEffect in CliDB.SpellEffectStorage.Values) + if (spellEffect.Effect == (uint)SpellEffectName.SendEvent && spellEffect.EffectMiscValue[0] != 0) + _eventStorage.Add((uint)spellEffect.EffectMiscValue[0]); // Load all possible event ids from taxi path nodes - foreach (var path_idx in CliDB.TaxiPathNodesByPath) + foreach (var node in CliDB.TaxiPathNodeStorage.Values) { - for (uint node_idx = 0; node_idx < path_idx.Value.Length; ++node_idx) - { - TaxiPathNodeRecord node = path_idx.Value[node_idx]; + if (node.ArrivalEventID != 0) + _eventStorage.Add(node.ArrivalEventID); - if (node.ArrivalEventID != 0) - _eventStorage.Add(node.ArrivalEventID); - - if (node.DepartureEventID != 0) - _eventStorage.Add(node.DepartureEventID); - } + if (node.DepartureEventID != 0) + _eventStorage.Add(node.DepartureEventID); } // Load all possible event ids from criterias @@ -1502,6 +1487,14 @@ namespace Game foreach (ScenarioRecord scenario in CliDB.ScenarioStorage.Values) foreach (CriteriaType criteriaType in eventCriteriaTypes) addCriteriaEventsToStore(Global.CriteriaMgr.GetScenarioCriteriaByTypeAndScenario(criteriaType, scenario.Id)); + + foreach (var (gameEventId, _) in Global.CriteriaMgr.GetCriteriaByStartEvent(CriteriaStartEvent.SendEvent)) + if (gameEventId != 0) + _eventStorage.Add((uint)gameEventId); + + foreach (var (gameEventId, _) in Global.CriteriaMgr.GetCriteriaByFailEvent(CriteriaFailEvent.SendEvent)) + if (gameEventId != 0) + _eventStorage.Add((uint)gameEventId); } public void LoadEventScripts()