From 83f57da2b68df3ea23cc8781c5d8a2d3c0b5b47b Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 6 May 2020 13:47:04 -0400 Subject: [PATCH] Core/Spell: fix an issue with vehicle spells changing orientation of base vehicle Port From (https://github.com/TrinityCore/TrinityCore/commit/e44d0c88734f8dcfd15655224ed6c674dffe1da6) --- Source/Game/Entities/Unit/Unit.Spells.cs | 6 ++++-- Source/Game/Spells/SpellManager.cs | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 26154ccbe..9c7496cea 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -2941,6 +2941,8 @@ namespace Game.Entities bool result = false; uint spellClickEntry = GetVehicleKit() != null ? GetVehicleKit().GetCreatureEntry() : GetEntry(); + TriggerCastFlags flags = GetVehicleKit() ? TriggerCastFlags.IgnoreCasterMountedOrOnVehicle : TriggerCastFlags.None; + var clickPair = Global.ObjectMgr.GetSpellClickInfoMapBounds(spellClickEntry); foreach (var clickInfo in clickPair) { @@ -2983,7 +2985,7 @@ namespace Game.Entities } if (IsInMap(caster)) - caster.CastCustomSpell(clickInfo.spellId, SpellValueMod.BasePoint0 + i, seatId + 1, target, GetVehicleKit() != null ? TriggerCastFlags.IgnoreCasterMountedOrOnVehicle : TriggerCastFlags.None, null, null, origCasterGUID); + caster.CastCustomSpell(clickInfo.spellId, SpellValueMod.BasePoint0 + i, seatId + 1, target, flags, null, null, origCasterGUID); else // This can happen during Player._LoadAuras { int[] bp0 = new int[SpellConst.MaxEffects]; @@ -3000,7 +3002,7 @@ namespace Game.Entities else { if (IsInMap(caster)) - caster.CastSpell(target, spellEntry, GetVehicleKit() != null ? TriggerCastFlags.IgnoreCasterMountedOrOnVehicle : TriggerCastFlags.None, null, null, origCasterGUID); + caster.CastSpell(target, spellEntry, flags, null, null, origCasterGUID); else Aura.TryRefreshStackOrCreate(spellEntry, ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, GetMapId(), spellEntry.Id, GetMap().GenerateLowGuid(HighGuid.Cast)), SpellConst.MaxEffectMask, this, clicker, null, null, origCasterGUID); } diff --git a/Source/Game/Spells/SpellManager.cs b/Source/Game/Spells/SpellManager.cs index b2bfe728e..d556f08fd 100644 --- a/Source/Game/Spells/SpellManager.cs +++ b/Source/Game/Spells/SpellManager.cs @@ -2469,6 +2469,10 @@ namespace Game.Entities spellInfo.ConeAngle = 90.0f; } + // due to the way spell system works, unit would change orientation in Spell::_cast + if (spellInfo.HasAura(Difficulty.None, AuraType.ControlVehicle)) + spellInfo.AttributesEx5 |= SpellAttr5.DontTurnDuringCast; + if (spellInfo.ActiveIconFileDataId == 135754) // flight spellInfo.Attributes |= SpellAttr0.Passive;