Core/Scripts: Add start/fail asset values from criteria to valid game event ids
Port From (https://github.com/TrinityCore/TrinityCore/commit/8c072b93af3a4efcbde21cc85fedcf7fa48fa7b4)
This commit is contained in:
@@ -4104,11 +4104,21 @@ namespace Game.Achievements
|
|||||||
return _scenarioCriteriasByTypeAndScenarioId[(int)type].LookupByKey(scenarioId);
|
return _scenarioCriteriasByTypeAndScenarioId[(int)type].LookupByKey(scenarioId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MultiMap<int, Criteria> GetCriteriaByStartEvent(CriteriaStartEvent startEvent)
|
||||||
|
{
|
||||||
|
return _criteriasByStartEvent[(int)startEvent];
|
||||||
|
}
|
||||||
|
|
||||||
public List<Criteria> GetCriteriaByStartEvent(CriteriaStartEvent startEvent, int asset)
|
public List<Criteria> GetCriteriaByStartEvent(CriteriaStartEvent startEvent, int asset)
|
||||||
{
|
{
|
||||||
return _criteriasByStartEvent[(int)startEvent].LookupByKey(asset);
|
return _criteriasByStartEvent[(int)startEvent].LookupByKey(asset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MultiMap<int, Criteria> GetCriteriaByFailEvent(CriteriaFailEvent failEvent)
|
||||||
|
{
|
||||||
|
return _criteriasByFailEvent[(int)failEvent];
|
||||||
|
}
|
||||||
|
|
||||||
public List<Criteria> GetCriteriaByFailEvent(CriteriaFailEvent failEvent, int asset)
|
public List<Criteria> GetCriteriaByFailEvent(CriteriaFailEvent failEvent, int asset)
|
||||||
{
|
{
|
||||||
return _criteriasByFailEvent[(int)failEvent].LookupByKey(asset);
|
return _criteriasByFailEvent[(int)failEvent].LookupByKey(asset);
|
||||||
|
|||||||
@@ -1454,33 +1454,18 @@ namespace Game
|
|||||||
_eventStorage.AddRange(go.Value.GetEventScriptSet());
|
_eventStorage.AddRange(go.Value.GetEventScriptSet());
|
||||||
|
|
||||||
// Load all possible event ids from spells
|
// Load all possible event ids from spells
|
||||||
foreach (SpellNameRecord spellNameEntry in CliDB.SpellNameStorage.Values)
|
foreach (var spellEffect in CliDB.SpellEffectStorage.Values)
|
||||||
{
|
if (spellEffect.Effect == (uint)SpellEffectName.SendEvent && spellEffect.EffectMiscValue[0] != 0)
|
||||||
SpellInfo spell = Global.SpellMgr.GetSpellInfo(spellNameEntry.Id, Difficulty.None);
|
_eventStorage.Add((uint)spellEffect.EffectMiscValue[0]);
|
||||||
if (spell != null)
|
|
||||||
{
|
|
||||||
foreach (var spellEffectInfo in spell.GetEffects())
|
|
||||||
{
|
|
||||||
if (spellEffectInfo.IsEffect(SpellEffectName.SendEvent))
|
|
||||||
if (spellEffectInfo.MiscValue != 0)
|
|
||||||
_eventStorage.Add((uint)spellEffectInfo.MiscValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load all possible event ids from taxi path nodes
|
// 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)
|
if (node.ArrivalEventID != 0)
|
||||||
{
|
_eventStorage.Add(node.ArrivalEventID);
|
||||||
TaxiPathNodeRecord node = path_idx.Value[node_idx];
|
|
||||||
|
|
||||||
if (node.ArrivalEventID != 0)
|
if (node.DepartureEventID != 0)
|
||||||
_eventStorage.Add(node.ArrivalEventID);
|
_eventStorage.Add(node.DepartureEventID);
|
||||||
|
|
||||||
if (node.DepartureEventID != 0)
|
|
||||||
_eventStorage.Add(node.DepartureEventID);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load all possible event ids from criterias
|
// Load all possible event ids from criterias
|
||||||
@@ -1502,6 +1487,14 @@ namespace Game
|
|||||||
foreach (ScenarioRecord scenario in CliDB.ScenarioStorage.Values)
|
foreach (ScenarioRecord scenario in CliDB.ScenarioStorage.Values)
|
||||||
foreach (CriteriaType criteriaType in eventCriteriaTypes)
|
foreach (CriteriaType criteriaType in eventCriteriaTypes)
|
||||||
addCriteriaEventsToStore(Global.CriteriaMgr.GetScenarioCriteriaByTypeAndScenario(criteriaType, scenario.Id));
|
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()
|
public void LoadEventScripts()
|
||||||
|
|||||||
Reference in New Issue
Block a user