Core/Spells: DynamicObject auras will now use the largest radius found in SPELL_EFFECT_PERSISTENT_AREA_AURA effects of the spell creating them

Port From (https://github.com/TrinityCore/TrinityCore/commit/497cb7df49550c2420ce8729254cc120d3290d2e)
This commit is contained in:
Hondacrx
2025-06-04 09:20:03 -04:00
parent 07e857dd63
commit 600b8ba18c
+11 -5
View File
@@ -1101,6 +1101,10 @@ namespace Game.Spells
if (unitCaster == null)
return;
// Caster not in world, might be spell triggered from aura removal
if (!unitCaster.IsInWorld)
return;
// only handle at last effect
for (uint i = effectInfo.EffectIndex + 1; i < m_spellInfo.GetEffects().Count; ++i)
if (m_spellInfo.GetEffect(i).IsEffect(SpellEffectName.PersistentAreaAura))
@@ -1108,11 +1112,13 @@ namespace Game.Spells
Cypher.Assert(dynObjAura == null);
float radius = effectInfo.CalcRadius(unitCaster);
// Caster not in world, might be spell triggered from aura removal
if (!unitCaster.IsInWorld)
return;
float radius = 0.0f;
for (uint i = 0; i <= effectInfo.EffectIndex; ++i)
{
SpellEffectInfo spellEffectInfo = m_spellInfo.GetEffect(i);
if (spellEffectInfo.IsEffect(SpellEffectName.PersistentAreaAura))
radius = Math.Max(radius, spellEffectInfo.CalcRadius(unitCaster));
}
DynamicObject dynObj = new(false);
if (!dynObj.CreateDynamicObject(unitCaster.GetMap().GenerateLowGuid(HighGuid.DynamicObject), unitCaster, m_spellInfo, destTarget, radius, DynamicObjectType.AreaSpell, m_SpellVisual))