From 0b1d41cc7becd7fb754045568da95962f1bf6632 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Fri, 30 Jun 2023 08:36:13 -0400 Subject: [PATCH] Core/AreaTriggers: Add Spell* argument to AreaTriggerAI::OnCreate script Port From (https://github.com/TrinityCore/TrinityCore/commit/a03455acbbbb6b070c9592a9c5c24c8f109dccc8) --- Source/Game/AI/CoreAI/AreaTriggerAI.cs | 3 ++- Source/Game/Entities/AreaTrigger/AreaTrigger.cs | 17 +++++++++-------- Source/Game/Spells/Auras/AuraEffect.cs | 2 +- Source/Game/Spells/SpellEffects.cs | 2 +- Source/Scripts/Spells/Paladin.cs | 2 +- Source/Scripts/Spells/Shaman.cs | 2 +- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Source/Game/AI/CoreAI/AreaTriggerAI.cs b/Source/Game/AI/CoreAI/AreaTriggerAI.cs index 62b0115e4..281fce946 100644 --- a/Source/Game/AI/CoreAI/AreaTriggerAI.cs +++ b/Source/Game/AI/CoreAI/AreaTriggerAI.cs @@ -2,6 +2,7 @@ // Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information. using Game.Entities; +using Game.Spells; namespace Game.AI { @@ -18,7 +19,7 @@ namespace Game.AI public virtual void OnInitialize() { } // Called when the AreaTrigger has just been created - public virtual void OnCreate() { } + public virtual void OnCreate(Spell creatingSpell) { } // Called on each AreaTrigger update public virtual void OnUpdate(uint diff) { } diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs index 5485c7a1c..12d8d2f32 100644 --- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs +++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs @@ -70,7 +70,7 @@ namespace Game.Entities } } - bool Create(uint areaTriggerCreatePropertiesId, Unit caster, Unit target, SpellInfo spell, Position pos, int duration, SpellCastVisualField spellVisual, ObjectGuid castId, AuraEffect aurEff) + bool Create(uint areaTriggerCreatePropertiesId, Unit caster, Unit target, SpellInfo spellInfo, Position pos, int duration, SpellCastVisualField spellVisual, Spell spell, AuraEffect aurEff) { _targetGuid = target ? target.GetGUID() : ObjectGuid.Empty; _aurEff = aurEff; @@ -106,10 +106,11 @@ namespace Game.Entities var areaTriggerData = m_values.ModifyValue(m_areaTriggerData); SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.Caster), caster.GetGUID()); - SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.CreatingEffectGUID), castId); + if (spell != null) + SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.CreatingEffectGUID), spell.m_castId); - SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellID), spell.Id); - SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellForVisuals), spell.Id); + SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellID), spellInfo.Id); + SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellForVisuals), spellInfo.Id); SpellCastVisualField spellCastVisual = areaTriggerData.ModifyValue(m_areaTriggerData.SpellVisual); SetUpdateFieldValue(ref spellCastVisual.SpellXSpellVisualID, spellVisual.SpellXSpellVisualID); @@ -204,15 +205,15 @@ namespace Game.Entities caster._RegisterAreaTrigger(this); - _ai.OnCreate(); + _ai.OnCreate(spell); return true; } - public static AreaTrigger CreateAreaTrigger(uint areaTriggerCreatePropertiesId, Unit caster, Unit target, SpellInfo spell, Position pos, int duration, SpellCastVisualField spellVisual, ObjectGuid castId = default, AuraEffect aurEff = null) + public static AreaTrigger CreateAreaTrigger(uint areaTriggerCreatePropertiesId, Unit caster, Unit target, SpellInfo spellInfo, Position pos, int duration, SpellCastVisualField spellVisual, Spell spell = null, AuraEffect aurEff = null) { AreaTrigger at = new(); - if (!at.Create(areaTriggerCreatePropertiesId, caster, target, spell, pos, duration, spellVisual, castId, aurEff)) + if (!at.Create(areaTriggerCreatePropertiesId, caster, target, spellInfo, pos, duration, spellVisual, spell, aurEff)) return null; return at; @@ -273,7 +274,7 @@ namespace Game.Entities AI_Initialize(); - _ai.OnCreate(); + _ai.OnCreate(null); return true; } diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index 86a3f1652..379c818c8 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -5755,7 +5755,7 @@ namespace Game.Spells if (apply) { - AreaTrigger.CreateAreaTrigger((uint)GetMiscValue(), GetCaster(), target, GetSpellInfo(), target, GetBase().GetDuration(), GetBase().GetSpellVisual(), ObjectGuid.Empty, this); + AreaTrigger.CreateAreaTrigger((uint)GetMiscValue(), GetCaster(), target, GetSpellInfo(), target, GetBase().GetDuration(), GetBase().GetSpellVisual(), null, this); } else { diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 69cd926b9..3073582e8 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -5027,7 +5027,7 @@ namespace Game.Spells return; int duration = GetSpellInfo().CalcDuration(GetCaster()); - AreaTrigger.CreateAreaTrigger((uint)effectInfo.MiscValue, unitCaster, null, GetSpellInfo(), destTarget.GetPosition(), duration, m_SpellVisual, m_castId); + AreaTrigger.CreateAreaTrigger((uint)effectInfo.MiscValue, unitCaster, null, GetSpellInfo(), destTarget.GetPosition(), duration, m_SpellVisual, this); } [SpellEffectHandler(SpellEffectName.RemoveTalent)] diff --git a/Source/Scripts/Spells/Paladin.cs b/Source/Scripts/Spells/Paladin.cs index 5a67ebb73..5efbce929 100644 --- a/Source/Scripts/Spells/Paladin.cs +++ b/Source/Scripts/Spells/Paladin.cs @@ -141,7 +141,7 @@ namespace Scripts.Spells.Paladin } } - public override void OnCreate() + public override void OnCreate(Spell creatingSpell) { RefreshPeriod(); _refreshTimer = _period; diff --git a/Source/Scripts/Spells/Shaman.cs b/Source/Scripts/Spells/Shaman.cs index 5f5dedba8..f51a8e015 100644 --- a/Source/Scripts/Spells/Shaman.cs +++ b/Source/Scripts/Spells/Shaman.cs @@ -410,7 +410,7 @@ namespace Scripts.Spells.Shaman _period = TimeSpan.FromSeconds(1); } - public override void OnCreate() + public override void OnCreate(Spell creatingSpell) { Unit caster = at.GetCaster(); if (caster != null)