From c06baf1bf54b288f6ec2e7bc9f1cea793a64f644 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 12 Jul 2020 00:39:37 -0400 Subject: [PATCH] Core/Spells: Assign spell effect handles for new apply aura effects Port From (https://github.com/TrinityCore/TrinityCore/commit/c3dcbe04dcea04ce3f453f99d44ebebb542bcda7) --- Source/Framework/Constants/Spells/SpellConst.cs | 2 +- Source/Game/Spells/Auras/Aura.cs | 12 ++++++++++-- Source/Game/Spells/Auras/AuraEffect.cs | 9 +-------- Source/Game/Spells/SpellEffects.cs | 3 +++ Source/Game/Spells/SpellInfo.cs | 7 ++++--- Source/Game/Spells/SpellManager.cs | 3 +++ 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Source/Framework/Constants/Spells/SpellConst.cs b/Source/Framework/Constants/Spells/SpellConst.cs index 7efc333f4..2a367fbf7 100644 --- a/Source/Framework/Constants/Spells/SpellConst.cs +++ b/Source/Framework/Constants/Spells/SpellConst.cs @@ -2060,7 +2060,7 @@ namespace Framework.Constants Effect171 = 171, // Summons Gamebject ResurrectWithAura = 172, // Aoe Ressurection UnlockGuildVaultTab = 173, // Guild Tab Unlocked (Guild Perk) - ApllyAuraOnPet = 174, + ApplyAuraOnPet = 174, Effect175 = 175, // Unused (4.3.4) Sanctuary2 = 176, Effect177 = 177, diff --git a/Source/Game/Spells/Auras/Aura.cs b/Source/Game/Spells/Auras/Aura.cs index 70cd658ec..bd8d92066 100644 --- a/Source/Game/Spells/Auras/Aura.cs +++ b/Source/Game/Spells/Auras/Aura.cs @@ -2556,7 +2556,7 @@ namespace Game.Spells List targetList = new List(); // non-area aura - if (effect.Effect == SpellEffectName.ApplyAura) + if (effect.Effect == SpellEffectName.ApplyAura || effect.Effect == SpellEffectName.Unk202) { targetList.Add(GetUnitOwner()); } @@ -2570,7 +2570,8 @@ namespace Game.Spells { case SpellEffectName.ApplyAreaAuraParty: case SpellEffectName.ApplyAreaAuraRaid: - { + case SpellEffectName.ApplyAreaAuraPartyNonrandom: + { targetList.Add(GetUnitOwner()); var u_check = new AnyGroupedUnitInObjectRangeCheck(GetUnitOwner(), GetUnitOwner(), radius, effect.Effect == SpellEffectName.ApplyAreaAuraRaid, GetSpellInfo().HasAttribute(SpellAttr3.OnlyTargetPlayers), false, true); var searcher = new UnitListSearcher(GetUnitOwner(), targetList, u_check); @@ -2603,6 +2604,13 @@ namespace Game.Spells targetList.Add(owner); break; } + case SpellEffectName.ApplyAuraOnPet: + { + Unit pet = Global.ObjAccessor.GetUnit(GetUnitOwner(), GetUnitOwner().GetPetGUID()); + if (pet != null) + targetList.Add(pet); + break; + } } } } diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index 43bf49535..2db904ad9 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -934,14 +934,7 @@ namespace Game.Spells public bool IsEffect(SpellEffectName effectName) { return _effectInfo.Effect == effectName; } public bool IsAreaAuraEffect() { - if (_effectInfo.Effect == SpellEffectName.ApplyAreaAuraParty || - _effectInfo.Effect == SpellEffectName.ApplyAreaAuraRaid || - _effectInfo.Effect == SpellEffectName.ApplyAreaAuraFriend || - _effectInfo.Effect == SpellEffectName.ApplyAreaAuraEnemy || - _effectInfo.Effect == SpellEffectName.ApplyAreaAuraPet || - _effectInfo.Effect == SpellEffectName.ApplyAreaAuraOwner) - return true; - return false; + return _effectInfo.IsAreaAuraEffect(); } #region Fields diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 8b5996323..1454898c3 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -753,6 +753,8 @@ namespace Game.Spells } [SpellEffectHandler(SpellEffectName.ApplyAura)] + [SpellEffectHandler(SpellEffectName.ApplyAuraOnPet)] + [SpellEffectHandler(SpellEffectName.Unk202)] void EffectApplyAura(uint effIndex) { if (effectHandleMode != SpellEffectHandleMode.HitTarget) @@ -771,6 +773,7 @@ namespace Game.Spells [SpellEffectHandler(SpellEffectName.ApplyAreaAuraParty)] [SpellEffectHandler(SpellEffectName.ApplyAreaAuraPet)] [SpellEffectHandler(SpellEffectName.ApplyAreaAuraRaid)] + [SpellEffectHandler(SpellEffectName.ApplyAreaAuraPartyNonrandom)] void EffectApplyAreaAura(uint effIndex) { if (effectHandleMode != SpellEffectHandleMode.HitTarget) diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index 9865fff96..3d3d48dd3 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -3681,7 +3681,8 @@ namespace Game.Spells Effect == SpellEffectName.ApplyAreaAuraFriend || Effect == SpellEffectName.ApplyAreaAuraEnemy || Effect == SpellEffectName.ApplyAreaAuraPet || - Effect == SpellEffectName.ApplyAreaAuraOwner) + Effect == SpellEffectName.ApplyAreaAuraOwner || + Effect == SpellEffectName.ApplyAreaAuraPartyNonrandom) return true; return false; } @@ -3700,7 +3701,7 @@ namespace Game.Spells public bool IsUnitOwnedAuraEffect() { - return IsAreaAuraEffect() || Effect == SpellEffectName.ApplyAura; + return IsAreaAuraEffect() || Effect == SpellEffectName.ApplyAura || Effect == SpellEffectName.ApplyAuraOnPet || Effect == SpellEffectName.Unk202; } public int CalcValue(Unit caster = null, int? bp = null, Unit target = null, uint castItemId = 0, int itemLevel = -1) @@ -3994,7 +3995,7 @@ namespace Game.Spells case SpellEffectName.ApplyAreaAuraFriend: case SpellEffectName.ApplyAreaAuraEnemy: case SpellEffectName.ApplyAreaAuraOwner: - case SpellEffectName.ApllyAuraOnPet: + case SpellEffectName.ApplyAuraOnPet: case SpellEffectName.Unk202: case SpellEffectName.ApplyAreaAuraPartyNonrandom: switch (ApplyAuraName) diff --git a/Source/Game/Spells/SpellManager.cs b/Source/Game/Spells/SpellManager.cs index ee3d47500..f3cff95d2 100644 --- a/Source/Game/Spells/SpellManager.cs +++ b/Source/Game/Spells/SpellManager.cs @@ -2530,6 +2530,9 @@ namespace Game.Entities case SpellEffectName.ApplyAreaAuraEnemy: case SpellEffectName.ApplyAreaAuraPet: case SpellEffectName.ApplyAreaAuraOwner: + case SpellEffectName.ApplyAuraOnPet: + case SpellEffectName.Unk202: + case SpellEffectName.ApplyAreaAuraPartyNonrandom: { if (effect.ApplyAuraName == AuraType.PeriodicDamage || effect.ApplyAuraName == AuraType.PeriodicDamagePercent ||