Core/Spell: fix an issue with vehicle spells changing orientation of base vehicle
Port From (https://github.com/TrinityCore/TrinityCore/commit/e44d0c88734f8dcfd15655224ed6c674dffe1da6)
This commit is contained in:
@@ -2941,6 +2941,8 @@ namespace Game.Entities
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
uint spellClickEntry = GetVehicleKit() != null ? GetVehicleKit().GetCreatureEntry() : GetEntry();
|
uint spellClickEntry = GetVehicleKit() != null ? GetVehicleKit().GetCreatureEntry() : GetEntry();
|
||||||
|
TriggerCastFlags flags = GetVehicleKit() ? TriggerCastFlags.IgnoreCasterMountedOrOnVehicle : TriggerCastFlags.None;
|
||||||
|
|
||||||
var clickPair = Global.ObjectMgr.GetSpellClickInfoMapBounds(spellClickEntry);
|
var clickPair = Global.ObjectMgr.GetSpellClickInfoMapBounds(spellClickEntry);
|
||||||
foreach (var clickInfo in clickPair)
|
foreach (var clickInfo in clickPair)
|
||||||
{
|
{
|
||||||
@@ -2983,7 +2985,7 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (IsInMap(caster))
|
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
|
else // This can happen during Player._LoadAuras
|
||||||
{
|
{
|
||||||
int[] bp0 = new int[SpellConst.MaxEffects];
|
int[] bp0 = new int[SpellConst.MaxEffects];
|
||||||
@@ -3000,7 +3002,7 @@ namespace Game.Entities
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (IsInMap(caster))
|
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
|
else
|
||||||
Aura.TryRefreshStackOrCreate(spellEntry, ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, GetMapId(), spellEntry.Id, GetMap().GenerateLowGuid(HighGuid.Cast)), SpellConst.MaxEffectMask, this, clicker, null, null, origCasterGUID);
|
Aura.TryRefreshStackOrCreate(spellEntry, ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, GetMapId(), spellEntry.Id, GetMap().GenerateLowGuid(HighGuid.Cast)), SpellConst.MaxEffectMask, this, clicker, null, null, origCasterGUID);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2469,6 +2469,10 @@ namespace Game.Entities
|
|||||||
spellInfo.ConeAngle = 90.0f;
|
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
|
if (spellInfo.ActiveIconFileDataId == 135754) // flight
|
||||||
spellInfo.Attributes |= SpellAttr0.Passive;
|
spellInfo.Attributes |= SpellAttr0.Passive;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user