diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index 22bdd65bc..e2c8422ae 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -4843,6 +4843,11 @@ namespace Game.Spells void HandlePeriodicTriggerSpellAuraTick(Unit target, Unit caster) { uint triggerSpellId = GetSpellEffectInfo().TriggerSpell; + if (triggerSpellId == 0) + { + Log.outWarn(LogFilter.Spells, $"AuraEffect::HandlePeriodicTriggerSpellAuraTick: Spell {GetId()} [EffectIndex: {GetEffIndex()}] does not have triggered spell."); + return; + } SpellInfo triggeredSpellInfo = Global.SpellMgr.GetSpellInfo(triggerSpellId, GetBase().GetCastDifficulty()); if (triggeredSpellInfo != null) @@ -4855,12 +4860,18 @@ namespace Game.Spells } } else - Log.outWarn(LogFilter.Spells, "AuraEffect.HandlePeriodicTriggerSpellAuraTick: Spell {0} has non-existent spell {1} in EffectTriggered[{2}] and is therefor not triggered.", GetId(), triggerSpellId, GetEffIndex()); + Log.outError(LogFilter.Spells, "AuraEffect.HandlePeriodicTriggerSpellAuraTick: Spell {0} has non-existent spell {1} in EffectTriggered[{2}] and is therefor not triggered.", GetId(), triggerSpellId, GetEffIndex()); } void HandlePeriodicTriggerSpellWithValueAuraTick(Unit target, Unit caster) { uint triggerSpellId = GetSpellEffectInfo().TriggerSpell; + if (triggerSpellId == 0) + { + Log.outWarn(LogFilter.Spells, $"AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick: Spell {GetId()} [EffectIndex: {GetEffIndex()}] does not have triggered spell."); + return; + } + SpellInfo triggeredSpellInfo = Global.SpellMgr.GetSpellInfo(triggerSpellId, GetBase().GetCastDifficulty()); if (triggeredSpellInfo != null) { @@ -4876,7 +4887,7 @@ namespace Game.Spells } } else - Log.outWarn(LogFilter.Spells, "AuraEffect.HandlePeriodicTriggerSpellWithValueAuraTick: Spell {0} has non-existent spell {1} in EffectTriggered[{2}] and is therefor not triggered.", GetId(), triggerSpellId, GetEffIndex()); + Log.outError(LogFilter.Spells, "AuraEffect.HandlePeriodicTriggerSpellWithValueAuraTick: Spell {0} has non-existent spell {1} in EffectTriggered[{2}] and is therefor not triggered.", GetId(), triggerSpellId, GetEffIndex()); } void HandlePeriodicDamageAurasTick(Unit target, Unit caster) @@ -5407,6 +5418,12 @@ namespace Game.Spells Unit triggerTarget = eventInfo.GetProcTarget(); uint triggerSpellId = GetSpellEffectInfo().TriggerSpell; + if (triggerSpellId == 0) + { + Log.outWarn(LogFilter.Spells, $"AuraEffect::HandleProcTriggerSpellAuraProc: Spell {GetId()} [EffectIndex: {GetEffIndex()}] does not have triggered spell."); + return; + } + SpellInfo triggeredSpellInfo = Global.SpellMgr.GetSpellInfo(triggerSpellId, GetBase().GetCastDifficulty()); if (triggeredSpellInfo != null) { @@ -5414,7 +5431,7 @@ namespace Game.Spells triggerCaster.CastSpell(triggerTarget, triggeredSpellInfo.Id, new CastSpellExtraArgs(this)); } else if (triggerSpellId != 0 && GetAuraType() != AuraType.Dummy) - Log.outError(LogFilter.Spells, $"AuraEffect.HandleProcTriggerSpellAuraProc: Could not trigger spell {triggerSpellId} from aura {GetId()} proc, because the spell does not have an entry in Spell.dbc."); + Log.outError(LogFilter.Spells, $"AuraEffect.HandleProcTriggerSpellAuraProc: Spell {GetId()} has non-existent spell {triggerSpellId} in EffectTriggered[{GetEffIndex()}] and is therefore not triggered."); } void HandleProcTriggerSpellWithValueAuraProc(AuraApplication aurApp, ProcEventInfo eventInfo) @@ -5423,6 +5440,12 @@ namespace Game.Spells Unit triggerTarget = eventInfo.GetProcTarget(); uint triggerSpellId = GetSpellEffectInfo().TriggerSpell; + if (triggerSpellId == 0) + { + Log.outWarn(LogFilter.Spells, $"AuraEffect::HandleProcTriggerSpellAuraProc: Spell {GetId()} [EffectIndex: {GetEffIndex()}] does not have triggered spell."); + return; + } + SpellInfo triggeredSpellInfo = Global.SpellMgr.GetSpellInfo(triggerSpellId, GetBase().GetCastDifficulty()); if (triggeredSpellInfo != null) { @@ -5432,7 +5455,7 @@ namespace Game.Spells Log.outDebug(LogFilter.Spells, "AuraEffect.HandleProcTriggerSpellWithValueAuraProc: Triggering spell {0} with value {1} from aura {2} proc", triggeredSpellInfo.Id, GetAmount(), GetId()); } else - Log.outError(LogFilter.Spells, "AuraEffect.HandleProcTriggerSpellWithValueAuraProc: Could not trigger spell {0} from aura {1} proc, because the spell does not have an entry in Spell.dbc.", triggerSpellId, GetId()); + Log.outError(LogFilter.Spells, "AuraEffect.HandleProcTriggerSpellWithValueAuraProc: Spell {GetId()} has non-existent spell {triggerSpellId} in EffectTriggered[{GetEffIndex()}] and is therefore not triggered."); } void HandleProcTriggerDamageAuraProc(AuraApplication aurApp, ProcEventInfo eventInfo) diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index a6e612ac7..48456e296 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -251,6 +251,12 @@ namespace Game.Spells } } + if (triggered_spell_id == 0) + { + Log.outWarn(LogFilter.Spells, $"Spell::EffectTriggerSpell: Spell {m_spellInfo.Id} [EffectIndex: {effectInfo.EffectIndex}] does not have triggered spell."); + return; + } + // normal case SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(triggered_spell_id, GetCastDifficulty()); if (spellInfo == null) @@ -312,6 +318,11 @@ namespace Game.Spells return; uint triggered_spell_id = effectInfo.TriggerSpell; + if (triggered_spell_id == 0) + { + Log.outWarn(LogFilter.Spells, $"Spell::EffectTriggerMissileSpell: Spell {m_spellInfo.Id} [EffectIndex: {effectInfo.EffectIndex}] does not have triggered spell."); + return; + } // normal case SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(triggered_spell_id, GetCastDifficulty()); @@ -371,6 +382,11 @@ namespace Game.Spells return; uint triggered_spell_id = effectInfo.TriggerSpell; + if (triggered_spell_id == 0) + { + Log.outWarn(LogFilter.Spells, $"Spell::EffectForceCast: Spell {m_spellInfo.Id} [EffectIndex: {effectInfo.EffectIndex}] does not have triggered spell."); + return; + } // normal case SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(triggered_spell_id, GetCastDifficulty()); @@ -427,10 +443,16 @@ namespace Game.Spells return; uint triggered_spell_id = effectInfo.TriggerSpell; + if (triggered_spell_id == 0) + { + Log.outWarn(LogFilter.Spells, $"Spell::EffectTriggerRitualOfSummoning: Spell {m_spellInfo.Id} [EffectIndex: {effectInfo.EffectIndex}] does not have triggered spell."); + return; + } + SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(triggered_spell_id, GetCastDifficulty()); if (spellInfo == null) { - Log.outError(LogFilter.Spells, "EffectTriggerRitualOfSummoning of spell {0}: triggering unknown spell id {1}", m_spellInfo.Id, triggered_spell_id); + Log.outError(LogFilter.Spells, $"EffectTriggerRitualOfSummoning of spell {m_spellInfo.Id}: triggering unknown spell id {triggered_spell_id}"); return; }