diff --git a/Source/Game/Entities/GameObject/GameObject.cs b/Source/Game/Entities/GameObject/GameObject.cs index dc2497b2f..080119d17 100644 --- a/Source/Game/Entities/GameObject/GameObject.cs +++ b/Source/Game/Entities/GameObject/GameObject.cs @@ -727,7 +727,8 @@ namespace Game.Entities else if (target) { // Some traps do not have a spell but should be triggered - CastSpellExtraArgs args = new(GetOwnerGUID()); + CastSpellExtraArgs args = new(); + args.SetOriginalCaster(GetOwnerGUID()); if (goInfo.Trap.spell != 0) CastSpell(target, goInfo.Trap.spell, args); diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 83abb579c..5a741c0c7 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -2480,7 +2480,7 @@ namespace Game.Entities break; case GossipOption.Spirithealer: if (IsDead()) - source.ToCreature().CastSpell(source.ToCreature(), 17251, new CastSpellExtraArgs(GetGUID())); + source.ToCreature().CastSpell(source.ToCreature(), 17251, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(GetGUID())); break; case GossipOption.Questgiver: PrepareQuestMenu(guid); @@ -3552,7 +3552,7 @@ namespace Game.Entities SetPower(PowerType.LunarPower, 0); if (resurrectAura != 0) - CastSpell(this, resurrectAura, new CastSpellExtraArgs(resurrectGUID)); + CastSpell(this, resurrectAura, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(resurrectGUID)); SpawnCorpseBones(); } diff --git a/Source/Game/Spells/Auras/Aura.cs b/Source/Game/Spells/Auras/Aura.cs index db7cf83f1..73d677170 100644 --- a/Source/Game/Spells/Auras/Aura.cs +++ b/Source/Game/Spells/Auras/Aura.cs @@ -1246,7 +1246,7 @@ namespace Game.Spells if (spell < 0) target.RemoveAurasDueToSpell((uint)-spell); else if (removeMode != AuraRemoveMode.Death) - target.CastSpell(target, (uint)spell, new CastSpellExtraArgs(GetCasterGUID())); + target.CastSpell(target, (uint)spell, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(GetCasterGUID())); } } spellTriggered = Global.SpellMgr.GetSpellLinked((int)GetId() + (int)SpellLinkedType.Aura); diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index 353e44f03..74f5d8377 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -2139,7 +2139,7 @@ namespace Game.Spells if (id < 0) unit.RemoveAurasDueToSpell((uint)-id); else - unit.CastSpell(unit, (uint)id, new CastSpellExtraArgs(m_caster.GetGUID())); + unit.CastSpell(unit, (uint)id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_caster.GetGUID())); } } } @@ -5027,7 +5027,7 @@ namespace Game.Spells { Pet pet = unitCaster.ToPlayer().GetPet(); if (pet != null) - pet.CastSpell(pet, 32752, new CastSpellExtraArgs(pet.GetGUID())); + pet.CastSpell(pet, 32752, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(pet.GetGUID())); } } else if (!m_spellInfo.HasAttribute(SpellAttr1.DismissPet)) @@ -8506,19 +8506,6 @@ namespace Game.Spells TriggeringAura = eff; } - public CastSpellExtraArgs(ObjectGuid origCaster) - { - TriggerFlags = TriggerCastFlags.FullMask; - OriginalCaster = origCaster; - } - - public CastSpellExtraArgs(AuraEffect eff, ObjectGuid origCaster) - { - TriggerFlags = TriggerCastFlags.FullMask; - TriggeringAura = eff; - OriginalCaster = origCaster; - } - public CastSpellExtraArgs(Difficulty castDifficulty) { CastDifficulty = castDifficulty; diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index cd153db0b..eaa23badb 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -359,7 +359,8 @@ namespace Game.Spells } } - CastSpellExtraArgs args = new(m_originalCasterGUID); + CastSpellExtraArgs args = new(TriggerCastFlags.FullMask); + args.SetOriginalCaster(m_originalCasterGUID); // set basepoints for trigger with value effect if (effectInfo.Effect == SpellEffectName.TriggerSpellWithValue) for (int i = 0; i < SpellConst.MaxEffects; ++i) @@ -413,7 +414,8 @@ namespace Game.Spells } } - CastSpellExtraArgs args = new(m_originalCasterGUID); + CastSpellExtraArgs args = new(TriggerCastFlags.FullMask); + args.SetOriginalCaster(m_originalCasterGUID); // set basepoints for trigger with value effect if (effectInfo.Effect == SpellEffectName.TriggerMissileSpellWithValue) for (int i = 0; i < SpellConst.MaxEffects; ++i) @@ -455,7 +457,8 @@ namespace Game.Spells case 52463: // Hide In Mine Car case 52349: // Overtake { - CastSpellExtraArgs args1 = new(m_originalCasterGUID); + CastSpellExtraArgs args1 = new(TriggerCastFlags.FullMask); + args1.SetOriginalCaster(m_originalCasterGUID); args1.AddSpellMod(SpellValueMod.BasePoint0, damage); unitTarget.CastSpell(unitTarget, spellInfo.Id, args1); return; @@ -466,7 +469,7 @@ namespace Game.Spells switch (spellInfo.Id) { case 72298: // Malleable Goo Summon - unitTarget.CastSpell(unitTarget, spellInfo.Id, new CastSpellExtraArgs(m_originalCasterGUID)); + unitTarget.CastSpell(unitTarget, spellInfo.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_originalCasterGUID)); return; } @@ -3090,7 +3093,7 @@ namespace Game.Spells Aura chargesAura = m_caster.ToCreature().GetAura(59907); if (chargesAura != null) { - m_caster.CastSpell(unitTarget, spell_heal, new CastSpellExtraArgs(m_caster.ToCreature().ToTempSummon().GetSummonerGUID())); + m_caster.CastSpell(unitTarget, spell_heal, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_caster.ToCreature().ToTempSummon().GetSummonerGUID())); if (chargesAura.ModCharges(-1)) m_caster.ToCreature().ToTempSummon().UnSummon(); } @@ -3919,7 +3922,7 @@ namespace Game.Spells unitCaster.Attack(unitTarget, true); if (effectInfo.TriggerSpell != 0) - m_caster.CastSpell(unitTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(m_originalCasterGUID)); + m_caster.CastSpell(unitTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_originalCasterGUID)); } } @@ -3947,7 +3950,7 @@ namespace Game.Spells else if (effectHandleMode == SpellEffectHandleMode.Hit) { if (effectInfo.TriggerSpell != 0) - m_caster.CastSpell(destTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(m_originalCasterGUID)); + m_caster.CastSpell(destTarget, effectInfo.TriggerSpell, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetOriginalCaster(m_originalCasterGUID)); } } diff --git a/Source/Scripts/Spells/Druid.cs b/Source/Scripts/Spells/Druid.cs index 0773cab11..e76c507a6 100644 --- a/Source/Scripts/Spells/Druid.cs +++ b/Source/Scripts/Spells/Druid.cs @@ -732,7 +732,7 @@ namespace Scripts.Spells.Druid } } - target.CastSpell(target, SpellIds.LifebloomFinalHeal, new CastSpellExtraArgs(aurEff, GetCasterGUID())); + target.CastSpell(target, SpellIds.LifebloomFinalHeal, new CastSpellExtraArgs(aurEff).SetOriginalCaster(GetCasterGUID())); } void AfterRemove(AuraEffect aurEff, AuraEffectHandleModes mode) @@ -955,7 +955,7 @@ namespace Scripts.Spells.Druid void AfterApply(AuraEffect aurEff, AuraEffectHandleModes mode) { Unit target = GetTarget(); - target.CastSpell(target, SpellIds.SavageRoar, new CastSpellExtraArgs(aurEff, GetCasterGUID())); + target.CastSpell(target, SpellIds.SavageRoar, new CastSpellExtraArgs(aurEff).SetOriginalCaster(GetCasterGUID())); } void AfterRemove(AuraEffect aurEff, AuraEffectHandleModes mode) diff --git a/Source/Scripts/Spells/Generic.cs b/Source/Scripts/Spells/Generic.cs index 47400951f..b2f4977ea 100644 --- a/Source/Scripts/Spells/Generic.cs +++ b/Source/Scripts/Spells/Generic.cs @@ -1673,7 +1673,7 @@ namespace Scripts.Spells.Generic return; // final heal - GetTarget().CastSpell(GetTarget(), _spellId, new CastSpellExtraArgs(aurEff, GetCasterGUID())); + GetTarget().CastSpell(GetTarget(), _spellId, new CastSpellExtraArgs(aurEff).SetOriginalCaster(GetCasterGUID())); } public override void Register() @@ -2861,7 +2861,7 @@ namespace Scripts.Spells.Generic // on stack 15 cast the achievement crediting spell if (GetStackAmount() >= 15) - target.CastSpell(target, SpellIds.TurkeyVengeance, new CastSpellExtraArgs(aurEff, GetCasterGUID())); + target.CastSpell(target, SpellIds.TurkeyVengeance, new CastSpellExtraArgs(aurEff).SetOriginalCaster(GetCasterGUID())); } void OnPeriodic(AuraEffect aurEff) diff --git a/Source/Scripts/Spells/Shaman.cs b/Source/Scripts/Spells/Shaman.cs index 2a94da6ec..ea95c321c 100644 --- a/Source/Scripts/Spells/Shaman.cs +++ b/Source/Scripts/Spells/Shaman.cs @@ -219,7 +219,7 @@ namespace Scripts.Spells.Shaman { PreventDefaultAction(); - GetTarget().CastSpell(GetTarget(), SpellIds.EarthShieldHeal, new CastSpellExtraArgs(aurEff, GetCasterGUID())); + GetTarget().CastSpell(GetTarget(), SpellIds.EarthShieldHeal, new CastSpellExtraArgs(aurEff).SetOriginalCaster(GetCasterGUID())); } public override void Register()