diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs index b395a8a69..c95ed5e80 100644 --- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs +++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs @@ -78,16 +78,7 @@ namespace Game.Entities } } - public static AreaTrigger CreateAreaTrigger(uint spellMiscId, Unit caster, Unit target, SpellInfo spell, Position pos, int duration, uint spellXSpellVisualId, ObjectGuid castId = default, AuraEffect aurEff = null) - { - AreaTrigger at = new AreaTrigger(); - if (!at.Create(spellMiscId, caster, target, spell, pos, duration, spellXSpellVisualId, castId, aurEff)) - return null; - - return at; - } - - unsafe bool Create(uint spellMiscId, Unit caster, Unit target, SpellInfo spell, Position pos, int duration, uint spellXSpellVisualId, ObjectGuid castId, AuraEffect aurEff) + bool Create(uint spellMiscId, Unit caster, Unit target, SpellInfo spell, Position pos, int duration, SpellCastVisual spellVisual, ObjectGuid castId, AuraEffect aurEff) { _targetGuid = target ? target.GetGUID() : ObjectGuid.Empty; _aurEff = aurEff; @@ -119,7 +110,7 @@ namespace Game.Entities SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellID), spell.Id); SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellForVisuals), spell.Id); - SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellXSpellVisualID), spellXSpellVisualId); + SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellXSpellVisualID), spellVisual.SpellXSpellVisualID); SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.TimeToTargetScale), GetMiscTemplate().TimeToTargetScale != 0 ? GetMiscTemplate().TimeToTargetScale : m_areaTriggerData.Duration); SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.BoundsRadius2D), GetTemplate().MaxSearchRadius); SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.DecalPropertiesID), GetMiscTemplate().DecalPropertiesId); @@ -138,10 +129,13 @@ namespace Game.Entities Vector2 point = new Vector2(GetMiscTemplate().ExtraScale.Structured.Z, GetMiscTemplate().ExtraScale.Structured.W); SetUpdateFieldValue(ref extraScaleCurve.ModifyValue(extraScaleCurve.Points, 1), point); } - if (GetMiscTemplate().ExtraScale.Raw.Data[5] != 0) - SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.ParameterCurve), GetMiscTemplate().ExtraScale.Raw.Data[5]); - if (GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0) - SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.OverrideActive), GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0 ? true : false); + unsafe + { + if (GetMiscTemplate().ExtraScale.Raw.Data[5] != 0) + SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.ParameterCurve), GetMiscTemplate().ExtraScale.Raw.Data[5]); + if (GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0) + SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.OverrideActive), GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0 ? true : false); + } PhasingHandler.InheritPhaseShift(this, caster); @@ -203,6 +197,15 @@ namespace Game.Entities return true; } + public static AreaTrigger CreateAreaTrigger(uint spellMiscId, Unit caster, Unit target, SpellInfo spell, Position pos, int duration, SpellCastVisual spellVisual, ObjectGuid castId = default, AuraEffect aurEff = null) + { + AreaTrigger at = new AreaTrigger(); + if (!at.Create(spellMiscId, caster, target, spell, pos, duration, spellVisual, castId, aurEff)) + return null; + + return at; + } + public override void Update(uint diff) { base.Update(diff); diff --git a/Source/Game/Entities/DynamicObject.cs b/Source/Game/Entities/DynamicObject.cs index cf8a97053..7a799821d 100644 --- a/Source/Game/Entities/DynamicObject.cs +++ b/Source/Game/Entities/DynamicObject.cs @@ -18,6 +18,7 @@ using Framework.Constants; using Game.Spells; using Game.Networking; +using Game.Networking.Packets; namespace Game.Entities { @@ -76,7 +77,7 @@ namespace Game.Entities } } - public bool CreateDynamicObject(ulong guidlow, Unit caster, SpellInfo spell, Position pos, float radius, DynamicObjectType type, uint spellXSpellVisualId) + public bool CreateDynamicObject(ulong guidlow, Unit caster, SpellInfo spell, Position pos, float radius, DynamicObjectType type, SpellCastVisual spellVisual) { SetMap(caster.GetMap()); Relocate(pos); @@ -94,7 +95,7 @@ namespace Game.Entities SetUpdateFieldValue(m_values.ModifyValue(m_dynamicObjectData).ModifyValue(m_dynamicObjectData.Caster), caster.GetGUID()); SetUpdateFieldValue(m_values.ModifyValue(m_dynamicObjectData).ModifyValue(m_dynamicObjectData.Type), (byte)type); - SetUpdateFieldValue(m_values.ModifyValue(m_dynamicObjectData).ModifyValue(m_dynamicObjectData.SpellXSpellVisualID), spellXSpellVisualId); + SetUpdateFieldValue(m_values.ModifyValue(m_dynamicObjectData).ModifyValue(m_dynamicObjectData.SpellXSpellVisualID), spellVisual.SpellXSpellVisualID); SetUpdateFieldValue(m_values.ModifyValue(m_dynamicObjectData).ModifyValue(m_dynamicObjectData.SpellID), spell.Id); SetUpdateFieldValue(m_values.ModifyValue(m_dynamicObjectData).ModifyValue(m_dynamicObjectData.Radius), radius); SetUpdateFieldValue(m_values.ModifyValue(m_dynamicObjectData).ModifyValue(m_dynamicObjectData.CastTime), GameTime.GetGameTimeMS()); diff --git a/Source/Game/Entities/Unit/Unit.Combat.cs b/Source/Game/Entities/Unit/Unit.Combat.cs index 6ed338eb7..ea5b0b495 100644 --- a/Source/Game/Entities/Unit/Unit.Combat.cs +++ b/Source/Game/Entities/Unit/Unit.Combat.cs @@ -2650,7 +2650,7 @@ namespace Game.Entities uint split_absorb = 0; DealDamageMods(caster, ref splitDamage, ref split_absorb); - SpellNonMeleeDamage log = new SpellNonMeleeDamage(this, caster, itr.GetSpellInfo(), itr.GetBase().GetSpellXSpellVisualId(), damageInfo.GetSchoolMask(), itr.GetBase().GetCastGUID()); + SpellNonMeleeDamage log = new SpellNonMeleeDamage(this, caster, itr.GetSpellInfo(), itr.GetBase().GetSpellVisual(), damageInfo.GetSchoolMask(), itr.GetBase().GetCastGUID()); CleanDamage cleanDamage = new CleanDamage(splitDamage, 0, WeaponAttackType.BaseAttack, MeleeHitOutcome.Normal); DealDamage(caster, splitDamage, cleanDamage, DamageEffectType.Direct, damageInfo.GetSchoolMask(), itr.GetSpellInfo(), false); log.damage = splitDamage; diff --git a/Source/Game/Entities/Unit/Unit.Fields.cs b/Source/Game/Entities/Unit/Unit.Fields.cs index 9c1145f2c..49993baa6 100644 --- a/Source/Game/Entities/Unit/Unit.Fields.cs +++ b/Source/Game/Entities/Unit/Unit.Fields.cs @@ -450,12 +450,12 @@ namespace Game.Entities public class SpellNonMeleeDamage { - public SpellNonMeleeDamage(Unit _attacker, Unit _target, SpellInfo _spellInfo, uint _SpellXSpellVisualID, SpellSchoolMask _schoolMask, ObjectGuid _castId = default) + public SpellNonMeleeDamage(Unit _attacker, Unit _target, SpellInfo _spellInfo, SpellCastVisual spellVisual, SpellSchoolMask _schoolMask, ObjectGuid _castId = default) { target = _target; attacker = _attacker; Spell = _spellInfo; - SpellXSpellVisualID = _SpellXSpellVisualID; + SpellVisual = spellVisual; schoolMask = _schoolMask; castId = _castId; preHitHealth = (uint)_target.GetHealth(); @@ -465,7 +465,7 @@ namespace Game.Entities public Unit attacker; public ObjectGuid castId; public SpellInfo Spell; - public uint SpellXSpellVisualID; + public SpellCastVisual SpellVisual; public uint damage; public uint originalDamage; public SpellSchoolMask schoolMask; diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 9455eb18c..e5ce3f644 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -2495,7 +2495,7 @@ namespace Game.Entities packet.CasterGUID = log.attacker.GetGUID(); packet.CastID = log.castId; packet.SpellID = (int)(log.Spell != null ? log.Spell.Id : 0); - packet.Visual.SpellXSpellVisualID = log.SpellXSpellVisualID; + packet.Visual = log.SpellVisual; packet.Damage = (int)log.damage; packet.OriginalDamage = (int)log.originalDamage; if (log.damage > log.preHitHealth) @@ -4273,7 +4273,7 @@ namespace Game.Entities { Unit caster = aura.GetCaster(); if (caster && caster.IsTypeId(TypeId.Player)) - Spell.SendCastResult(caster.ToPlayer(), aura.GetSpellInfo(), aura.GetSpellXSpellVisualId(), aura.GetCastGUID(), SpellCastResult.AuraBounced); + Spell.SendCastResult(caster.ToPlayer(), aura.GetSpellInfo(), aura.GetSpellVisual(), aura.GetCastGUID(), SpellCastResult.AuraBounced); } aura.Remove(); diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 05b0d697d..1f5b19a3d 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -2674,10 +2674,10 @@ namespace Game.Entities SetUpdateFieldValue(ref m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ChannelData)._value.SpellID, channelSpellId); } public uint GetChannelSpellXSpellVisualId() { return ((UnitChannel)m_unitData.ChannelData).SpellXSpellVisualID; } - public void SetChannelSpellXSpellVisualId(uint channelSpellXSpellVisualId) + public void SetChannelSpellXSpellVisualId(SpellCastVisual channelVisual) { UnitChannel unitChannel = m_unitData.ModifyValue(m_unitData.ChannelData); - SetUpdateFieldValue(ref unitChannel.SpellXSpellVisualID, channelSpellXSpellVisualId); + SetUpdateFieldValue(ref unitChannel.SpellXSpellVisualID, channelVisual.SpellXSpellVisualID); } public void AddChannelObject(ObjectGuid guid) { AddDynamicUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ChannelObjects), guid); } public void SetChannelObject(int slot, ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ChannelObjects, slot), guid); } diff --git a/Source/Game/Networking/Packets/SpellPackets.cs b/Source/Game/Networking/Packets/SpellPackets.cs index 5be12e475..e9574320c 100644 --- a/Source/Game/Networking/Packets/SpellPackets.cs +++ b/Source/Game/Networking/Packets/SpellPackets.cs @@ -1354,6 +1354,12 @@ namespace Game.Networking.Packets public uint SpellXSpellVisualID; public int ScriptVisualID; + public SpellCastVisual(uint spellXSpellVisualID, int scriptVisualID) + { + SpellXSpellVisualID = spellXSpellVisualID; + ScriptVisualID = scriptVisualID; + } + public void Read(WorldPacket data) { SpellXSpellVisualID = data.ReadUInt32(); diff --git a/Source/Game/Spells/Auras/Aura.cs b/Source/Game/Spells/Auras/Aura.cs index 56fc5ec65..5ff6e67f4 100644 --- a/Source/Game/Spells/Auras/Aura.cs +++ b/Source/Game/Spells/Auras/Aura.cs @@ -213,7 +213,7 @@ namespace Game.Spells AuraDataInfo auraData = auraInfo.AuraData.Value; auraData.CastID = aura.GetCastGUID(); auraData.SpellID = (int)aura.GetId(); - auraData.Visual.SpellXSpellVisualID = aura.GetSpellXSpellVisualId(); + auraData.Visual= aura.GetSpellVisual(); auraData.Flags = GetFlags(); if (aura.GetMaxDuration() > 0 && !aura.GetSpellInfo().HasAttribute(SpellAttr5.HideDuration)) auraData.Flags |= AuraFlags.Duration; @@ -295,7 +295,7 @@ namespace Game.Spells m_castItemGuid = castItem != null ? castItem.GetGUID() : castItemGuid; m_castItemId = castItem != null ? castItem.GetEntry() : castItemId; m_castItemLevel = castItemLevel; - m_spellXSpellVisualId = caster ? caster.GetCastSpellXSpellVisualId(spellproto) : spellproto.GetSpellXSpellVisualId(); + m_spellVisual = new SpellCastVisual(caster ? caster.GetCastSpellXSpellVisualId(spellproto) : spellproto.GetSpellXSpellVisualId(), 0); m_applyTime = Time.UnixTime; m_owner = owner; m_timeCla = 0; @@ -2246,7 +2246,7 @@ namespace Game.Spells public ObjectGuid GetCastItemGUID() { return m_castItemGuid; } public uint GetCastItemId() { return m_castItemId; } public int GetCastItemLevel() { return m_castItemLevel; } - public uint GetSpellXSpellVisualId() { return m_spellXSpellVisualId; } + public SpellCastVisual GetSpellVisual() { return m_spellVisual; } public WorldObject GetOwner() { return m_owner; } public Unit GetUnitOwner() { @@ -2483,7 +2483,7 @@ namespace Game.Spells ObjectGuid m_castItemGuid; uint m_castItemId; int m_castItemLevel; - uint m_spellXSpellVisualId; + SpellCastVisual m_spellVisual; long m_applyTime; WorldObject m_owner; diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index 9c8a0b687..a42be08f8 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -5602,7 +5602,7 @@ namespace Game.Spells uint resist = damageInfo.GetResist(); // SendSpellNonMeleeDamageLog expects non-absorbed/non-resisted damage - SpellNonMeleeDamage log = new SpellNonMeleeDamage(caster, target, GetSpellInfo(), GetBase().GetSpellXSpellVisualId(), GetSpellInfo().GetSchoolMask(), GetBase().GetCastGUID()); + SpellNonMeleeDamage log = new SpellNonMeleeDamage(caster, target, GetSpellInfo(), GetBase().GetSpellVisual(), GetSpellInfo().GetSchoolMask(), GetBase().GetCastGUID()); log.damage = damage; log.originalDamage = dmg; log.absorb = absorb; @@ -5895,7 +5895,7 @@ namespace Game.Spells SpellInfo spellProto = GetSpellInfo(); // maybe has to be sent different to client, but not by SMSG_PERIODICAURALOG - SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(caster, target, spellProto, GetBase().GetSpellXSpellVisualId(), spellProto.SchoolMask, GetBase().GetCastGUID()); + SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(caster, target, spellProto, GetBase().GetSpellVisual(), spellProto.SchoolMask, GetBase().GetCastGUID()); // no SpellDamageBonus for burn mana caster.CalculateSpellDamageTaken(damageInfo, (int)(gain * dmgMultiplier), spellProto); @@ -5973,7 +5973,7 @@ namespace Game.Spells return; } - SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(target, triggerTarget, GetSpellInfo(), GetBase().GetSpellXSpellVisualId(), GetSpellInfo().SchoolMask, GetBase().GetCastGUID()); + SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(target, triggerTarget, GetSpellInfo(), GetBase().GetSpellVisual(), GetSpellInfo().SchoolMask, GetBase().GetCastGUID()); int damage = (int)target.SpellDamageBonusDone(triggerTarget, GetSpellInfo(), (uint)GetAmount(), DamageEffectType.SpellDirect, GetSpellEffectInfo()); damage = (int)triggerTarget.SpellDamageBonusTaken(target, GetSpellInfo(), (uint)damage, DamageEffectType.SpellDirect, GetSpellEffectInfo()); target.CalculateSpellDamageTaken(damageInfo, damage, GetSpellInfo()); @@ -6114,7 +6114,7 @@ namespace Game.Spells if (apply) { - AreaTrigger.CreateAreaTrigger((uint)GetMiscValue(), GetCaster(), target, GetSpellInfo(), target, GetBase().GetDuration(), GetBase().GetSpellXSpellVisualId(), ObjectGuid.Empty, this); + AreaTrigger.CreateAreaTrigger((uint)GetMiscValue(), GetCaster(), target, GetSpellInfo(), target, GetBase().GetDuration(), GetBase().GetSpellVisual(), ObjectGuid.Empty, this); } else { diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index be1e77721..437111969 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -44,7 +44,7 @@ namespace Game.Spells m_preGeneratedPath = new PathGenerator(m_caster); m_castItemLevel = -1; m_castId = ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, m_caster.GetMapId(), m_spellInfo.Id, m_caster.GetMap().GenerateLowGuid(HighGuid.Cast)); - m_SpellVisual = caster.GetCastSpellXSpellVisualId(m_spellInfo); + m_SpellVisual.SpellXSpellVisualID = caster.GetCastSpellXSpellVisualId(m_spellInfo); m_customError = SpellCustomErrors.None; m_skipCheck = skipcheck; @@ -3525,7 +3525,7 @@ namespace Game.Spells result = SpellCastResult.DontReport; CastFailed castFailed = new CastFailed(); - castFailed.Visual.SpellXSpellVisualID = m_SpellVisual; + castFailed.Visual = m_SpellVisual; FillSpellCastFailedArgs(castFailed, m_castId, m_spellInfo, result, m_customError, param1, param2, m_caster.ToPlayer()); m_caster.ToPlayer().SendPacket(castFailed); } @@ -3547,13 +3547,13 @@ namespace Game.Spells owner.ToPlayer().SendPacket(petCastFailed); } - public static void SendCastResult(Player caster, SpellInfo spellInfo, uint spellVisual, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError = SpellCustomErrors.None, uint? param1 = null, uint? param2 = null) + public static void SendCastResult(Player caster, SpellInfo spellInfo, SpellCastVisual spellVisual, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError = SpellCustomErrors.None, uint? param1 = null, uint? param2 = null) { if (result == SpellCastResult.SpellCastOk) return; CastFailed packet = new CastFailed(); - packet.Visual.SpellXSpellVisualID = spellVisual; + packet.Visual = spellVisual; FillSpellCastFailedArgs(packet, cast_count, spellInfo, result, customError, param1, param2, caster); caster.SendPacket(packet); } @@ -3610,7 +3610,7 @@ namespace Game.Spells castData.CastID = m_castId; castData.OriginalCastID = m_originalCastId; castData.SpellID = (int)m_spellInfo.Id; - castData.Visual.SpellXSpellVisualID = m_SpellVisual; + castData.Visual = m_SpellVisual; castData.CastFlags = castFlags; castData.CastFlagsEx = m_castFlagsEx; castData.CastTime = (uint)m_casttime; @@ -3724,7 +3724,7 @@ namespace Game.Spells castData.CastID = m_castId; castData.OriginalCastID = m_originalCastId; castData.SpellID = (int)m_spellInfo.Id; - castData.Visual.SpellXSpellVisualID = m_SpellVisual; + castData.Visual = m_SpellVisual; castData.CastFlags = castFlags; castData.CastFlagsEx = m_castFlagsEx; castData.CastTime = Time.GetMSTime(); @@ -4019,7 +4019,7 @@ namespace Game.Spells failurePacket.CasterUnit = m_caster.GetGUID(); failurePacket.CastID = m_castId; failurePacket.SpellID = m_spellInfo.Id; - failurePacket.Visual.SpellXSpellVisualID = m_SpellVisual; + failurePacket.Visual = m_SpellVisual; failurePacket.Reason = result; m_caster.SendMessageToSet(failurePacket, true); @@ -4027,7 +4027,7 @@ namespace Game.Spells failedPacket.CasterUnit = m_caster.GetGUID(); failedPacket.CastID = m_castId; failedPacket.SpellID = m_spellInfo.Id; - failedPacket.Visual.SpellXSpellVisualID = m_SpellVisual; + failedPacket.Visual = m_SpellVisual; failedPacket.Reason = result; m_caster.SendMessageToSet(failedPacket, true); } @@ -4038,7 +4038,7 @@ namespace Game.Spells { m_caster.ClearChannelObjects(); m_caster.SetChannelSpellId(0); - m_caster.SetChannelSpellXSpellVisualId(0); + m_caster.SetChannelSpellXSpellVisualId(default); } SpellChannelUpdate spellChannelUpdate = new SpellChannelUpdate(); @@ -4052,7 +4052,7 @@ namespace Game.Spells SpellChannelStart spellChannelStart = new SpellChannelStart(); spellChannelStart.CasterGUID = m_caster.GetGUID(); spellChannelStart.SpellID = (int)m_spellInfo.Id; - spellChannelStart.Visual.SpellXSpellVisualID = m_SpellVisual; + spellChannelStart.Visual = m_SpellVisual; spellChannelStart.ChannelDuration = duration; uint schoolImmunityMask = m_caster.GetSchoolImmunityMask(); @@ -6700,7 +6700,7 @@ namespace Game.Spells bool IsNeedSendToClient() { - return m_SpellVisual != 0 || m_spellInfo.IsChanneled() || + return m_SpellVisual.SpellXSpellVisualID != 0 || m_SpellVisual.ScriptVisualID != 0 || m_spellInfo.IsChanneled() || m_spellInfo.HasAttribute(SpellAttr8.AuraSendAmount) || m_spellInfo.HasHitDelay() || (m_triggeredByAuraSpell == null && !IsTriggered()); } @@ -7404,7 +7404,7 @@ namespace Game.Spells public bool m_fromClient; public SpellCastFlagsEx m_castFlagsEx; public SpellMisc m_misc; - public uint m_SpellVisual; + public SpellCastVisual m_SpellVisual; public SpellCastTargets m_targets; public sbyte m_comboPointGain; public SpellCustomErrors m_customError; diff --git a/Source/Scripts/Spells/Warlock.cs b/Source/Scripts/Spells/Warlock.cs index 93d2aa4aa..a7b456f27 100644 --- a/Source/Scripts/Spells/Warlock.cs +++ b/Source/Scripts/Spells/Warlock.cs @@ -556,7 +556,7 @@ namespace Scripts.Spells.Warlock if (modOwner) modOwner.ApplySpellMod(GetId(), SpellModOp.Cost, ref damage); - SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(caster, caster, GetSpellInfo(), GetAura().GetSpellXSpellVisualId(), GetSpellInfo().SchoolMask, GetAura().GetCastGUID()); + SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(caster, caster, GetSpellInfo(), GetAura().GetSpellVisual(), GetSpellInfo().SchoolMask, GetAura().GetCastGUID()); damageInfo.periodicLog = true; damageInfo.damage = damage; caster.DealSpellDamage(damageInfo, false);