Core/Spells: Rename SpellAttr5 to use official attribute names
Port From (https://github.com/TrinityCore/TrinityCore/commit/738f285432b1ef6109d1c54ab7f40d743a994631)
This commit is contained in:
@@ -1758,38 +1758,38 @@ namespace Framework.Constants
|
|||||||
}
|
}
|
||||||
public enum SpellAttr5 : uint
|
public enum SpellAttr5 : uint
|
||||||
{
|
{
|
||||||
CanChannelWhenMoving = 0x01, // 0 available casting channel spell when moving
|
AllowActionsDuringChannel = 0x01, // Allow Actions During Channel
|
||||||
NoReagentWhilePrep = 0x02, // 1 Not Need Reagents If UnitFlagPreparation
|
NoReagentCostWithAura = 0x02, // No Reagent Cost With Aura
|
||||||
RemoveEnteringArena = 0x04, // 2 remove this aura on arena enter
|
RemoveEnteringArena = 0x04, // Remove Entering Arena Description Force This Aura To Be Removed On Entering Arena, Regardless Of Other Properties
|
||||||
UsableWhileStunned = 0x08, // 3 Usable While Stunned
|
AllowWhileStunned = 0x08, // Allow While Stunned
|
||||||
Unk4 = 0x10, // 4
|
TriggersChanneling = 0x10, // Triggers Channeling
|
||||||
SingleTargetSpell = 0x20, // 5 Only One Target Can Be Apply At A Time
|
LimitN = 0x20, /*Incomplete Impl*/ // Limit N Description Remove Previous Application To Another Unit If Applied
|
||||||
Unk6 = 0x40, // 6
|
IgnoreAreaEffectPvpCheck = 0x40, /*Nyi*/ // Ignore Area Effect Pvp Check
|
||||||
Unk7 = 0x80, // 7
|
NotOnPlayer = 0x80, /*Nyi*/ // Not On Player
|
||||||
CantTargetPlayerControlled = 0x100, // 8 cannot target player controlled units but can target players
|
NotOnPlayerControlledNpc = 0x100, /*Nyi*/ // Not On Player Controlled Npc
|
||||||
StartPeriodicAtApply = 0x200, // 9 Begin Periodic Tick At Aura Apply
|
ExtraInitialPeriod = 0x200, // Extra Initial Period Description Immediately Do Periodic Tick On Apply
|
||||||
HideDuration = 0x400, // 10 Do Not Send Duration To Client
|
DoNotDisplayDuration = 0x400, // Do Not Display Duration
|
||||||
AllowTargetOfTargetAsTarget = 0x800, // 11 (Nyi) Uses Target'S Target As Target If Original Target Not Valid (Intervene For Example)
|
ImpliedTargeting = 0x800, // Implied Targeting (Client Only)
|
||||||
MeleeChainTargeting = 0x1000, // 12 Cleave Related?
|
MeleeChainTargeting = 0x1000, // Melee Chain Targeting
|
||||||
HasteAffectDuration = 0x2000, // 13 Haste Effects Decrease Duration Of This
|
SpellHasteAffectsPeriodic = 0x2000, // Spell Haste Affects Periodic
|
||||||
NotUsableWhileCharmed = 0x4000, // 14 Charmed units cannot cast this spell
|
NotAvailableWhileCharmed = 0x4000, /*Nyi*/ // Not Available While Charmed
|
||||||
Unk15 = 0x8000, // 15 Inflits On Multiple Targets?
|
TreatAsAreaEffect = 0x8000, /*Nyi*/ // Treat As Area Effect
|
||||||
Unk16 = 0x10000, // 16
|
AuraAffectsNotJustReqEquippedItem = 0x10000, // Aura Affects Not Just Req. Equipped Item
|
||||||
UsableWhileFeared = 0x20000, // 17 Usable While Feared
|
AllowWhileFleeing = 0x20000, // Allow While Fleeing
|
||||||
UsableWhileConfused = 0x40000, // 18 Usable While Confused
|
AllowWhileConfused = 0x40000, // Allow While Confused
|
||||||
DontTurnDuringCast = 0x80000, // 19 Blocks Caster'S Turning When Casting (Client Does Not Automatically Turn Caster'S Model To Face UnitFieldTarget)
|
AiDoesntFaceTarget = 0x80000, // Ai Doesn'T Face Target
|
||||||
Unk20 = 0x100000, // 20
|
DoNotAttemptAPetResummonWhenDismounting = 0x100000, /*Nyi*/ // Do Not Attempt A Pet Resummon When Dismounting
|
||||||
Unk21 = 0x200000, // 21
|
IgnoreTargetRequirements = 0x200000, /*Nyi*/ // Ignore Target Requirements
|
||||||
Unk22 = 0x400000, // 22
|
NotOnTrivial = 0x400000, /*Nyi*/ // Not On Trivial
|
||||||
Unk23 = 0x800000, // 23
|
NoPartialResists = 0x800000, /*Nyi*/ // No Partial Resists
|
||||||
Unk24 = 0x1000000, // 24
|
IgnoreCasterRequirements = 0x1000000, /*Nyi*/ // Ignore Caster Requirements
|
||||||
Unk25 = 0x2000000, // 25
|
AlwaysLineOfSight = 0x2000000, /*Nyi*/ // Always Line Of Sight
|
||||||
AlwaysAoeLineOfSight = 0x4000000, // 26 Aoe Related - Boulder, Cannon, Corpse Explosion, Fire Nova, Flames, Frost Bomb, Living Bomb, Seed Of Corruption, Starfall, Thunder Clap, Volley
|
AlwaysAoeLineOfSight = 0x4000000, /*Wrong Impl*/ // Always Aoe Line Of Sight Description Requires Line Of Sight Between Caster And Target In Addition To Between Dest And Target
|
||||||
DontShowAuraIfSelfCast = 0x8000000, // 27
|
NoCasterAuraIcon = 0x8000000, // No Caster Aura Icon (Client Only)
|
||||||
DontShowAuraIfNotSelfCast = 0x10000000, // 28
|
NoTargetAuraIcon = 0x10000000, // No Target Aura Icon (Client Only)
|
||||||
Unk29 = 0x20000000, // 29
|
AuraUniquePerCaster = 0x20000000, /*Nyi*/ // Aura Unique Per Caster
|
||||||
Unk30 = 0x40000000, // 30
|
AlwaysShowGroundTexture = 0x40000000, // Always Show Ground Texture
|
||||||
Unk31 = 0x80000000 // 31 Forces All Nearby Enemies To Focus Attacks Caster
|
AddMeleeHitRating = 0x80000000 /*Nyi*/ // Add Melee Hit Rating
|
||||||
}
|
}
|
||||||
public enum SpellAttr6 : uint
|
public enum SpellAttr6 : uint
|
||||||
{
|
{
|
||||||
@@ -1880,7 +1880,7 @@ namespace Framework.Constants
|
|||||||
Unk14 = 0x4000, // 14
|
Unk14 = 0x4000, // 14
|
||||||
WaterMount = 0x8000, // 15
|
WaterMount = 0x8000, // 15
|
||||||
Unk16 = 0x10000, // 16
|
Unk16 = 0x10000, // 16
|
||||||
Unk17 = 0x20000, // 17
|
HasteAffectsDuration = 0x20000, // 17 Haste Affects Duration
|
||||||
RememberSpells = 0x40000, // 18
|
RememberSpells = 0x40000, // 18
|
||||||
UseComboPointsOnAnyTarget = 0x80000, // 19
|
UseComboPointsOnAnyTarget = 0x80000, // 19
|
||||||
ArmorSpecialization = 0x100000, // 20
|
ArmorSpecialization = 0x100000, // 20
|
||||||
|
|||||||
@@ -3020,7 +3020,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
_spellFocusInfo.Spell = focusSpell;
|
_spellFocusInfo.Spell = focusSpell;
|
||||||
|
|
||||||
bool noTurnDuringCast = spellInfo.HasAttribute(SpellAttr5.DontTurnDuringCast);
|
bool noTurnDuringCast = spellInfo.HasAttribute(SpellAttr5.AiDoesntFaceTarget);
|
||||||
bool turnDisabled = HasUnitFlag2(UnitFlags2.CannotTurn);
|
bool turnDisabled = HasUnitFlag2(UnitFlags2.CannotTurn);
|
||||||
// set target, then force send update packet to players if it changed to provide appropriate facing
|
// set target, then force send update packet to players if it changed to provide appropriate facing
|
||||||
ObjectGuid newTarget = (target != null && !noTurnDuringCast && !turnDisabled) ? target.GetGUID() : ObjectGuid.Empty;
|
ObjectGuid newTarget = (target != null && !noTurnDuringCast && !turnDisabled) ? target.GetGUID() : ObjectGuid.Empty;
|
||||||
@@ -3060,7 +3060,7 @@ namespace Game.Entities
|
|||||||
if (focusSpell && focusSpell != _spellFocusInfo.Spell)
|
if (focusSpell && focusSpell != _spellFocusInfo.Spell)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_spellFocusInfo.Spell.GetSpellInfo().HasAttribute(SpellAttr5.DontTurnDuringCast))
|
if (_spellFocusInfo.Spell.GetSpellInfo().HasAttribute(SpellAttr5.AiDoesntFaceTarget))
|
||||||
ClearUnitState(UnitState.Focusing);
|
ClearUnitState(UnitState.Focusing);
|
||||||
|
|
||||||
if (IsPet()) // player pets do not use delay system
|
if (IsPet()) // player pets do not use delay system
|
||||||
|
|||||||
@@ -1928,7 +1928,7 @@ namespace Game.Entities
|
|||||||
if (spellInfo == null || duration < 0)
|
if (spellInfo == null || duration < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (spellInfo.IsChanneled() && !spellInfo.HasAttribute(SpellAttr5.HasteAffectDuration))
|
if (spellInfo.IsChanneled() && !spellInfo.HasAttribute(SpellAttr5.SpellHasteAffectsPeriodic))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// called from caster
|
// called from caster
|
||||||
|
|||||||
@@ -3214,7 +3214,7 @@ namespace Game.Entities
|
|||||||
public bool CanNoReagentCast(SpellInfo spellInfo)
|
public bool CanNoReagentCast(SpellInfo spellInfo)
|
||||||
{
|
{
|
||||||
// don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_WHILE_PREP
|
// don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_WHILE_PREP
|
||||||
if (spellInfo.HasAttribute(SpellAttr5.NoReagentWhilePrep) &&
|
if (spellInfo.HasAttribute(SpellAttr5.NoReagentCostWithAura) &&
|
||||||
HasUnitFlag(UnitFlags.Preparation))
|
HasUnitFlag(UnitFlags.Preparation))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ namespace Game.Spells
|
|||||||
auraData.SpellID = (int)aura.GetId();
|
auraData.SpellID = (int)aura.GetId();
|
||||||
auraData.Visual = aura.GetSpellVisual();
|
auraData.Visual = aura.GetSpellVisual();
|
||||||
auraData.Flags = GetFlags();
|
auraData.Flags = GetFlags();
|
||||||
if (aura.GetAuraType() != AuraObjectType.DynObj && aura.GetMaxDuration() > 0 && !aura.GetSpellInfo().HasAttribute(SpellAttr5.HideDuration))
|
if (aura.GetAuraType() != AuraObjectType.DynObj && aura.GetMaxDuration() > 0 && !aura.GetSpellInfo().HasAttribute(SpellAttr5.DoNotDisplayDuration))
|
||||||
auraData.Flags |= AuraFlags.Duration;
|
auraData.Flags |= AuraFlags.Duration;
|
||||||
|
|
||||||
auraData.ActiveFlags = GetEffectMask();
|
auraData.ActiveFlags = GetEffectMask();
|
||||||
@@ -788,7 +788,7 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
int duration = m_spellInfo.GetMaxDuration();
|
int duration = m_spellInfo.GetMaxDuration();
|
||||||
// Calculate duration of periodics affected by haste.
|
// Calculate duration of periodics affected by haste.
|
||||||
if (m_spellInfo.HasAttribute(SpellAttr5.HasteAffectDuration))
|
if (m_spellInfo.HasAttribute(SpellAttr8.HasteAffectsDuration))
|
||||||
duration = (int)(duration * caster.m_unitData.ModCastingSpeed);
|
duration = (int)(duration * caster.m_unitData.ModCastingSpeed);
|
||||||
|
|
||||||
SetMaxDuration(duration);
|
SetMaxDuration(duration);
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ namespace Game.Spells
|
|||||||
if (_period != 0 && !GetBase().IsPermanent())
|
if (_period != 0 && !GetBase().IsPermanent())
|
||||||
{
|
{
|
||||||
totalTicks = (uint)(GetBase().GetMaxDuration() / _period);
|
totalTicks = (uint)(GetBase().GetMaxDuration() / _period);
|
||||||
if (m_spellInfo.HasAttribute(SpellAttr5.StartPeriodicAtApply))
|
if (m_spellInfo.HasAttribute(SpellAttr5.ExtraInitialPeriod))
|
||||||
++totalTicks;
|
++totalTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
_periodicTimer = 0;
|
_periodicTimer = 0;
|
||||||
// Start periodic on next tick or at aura apply
|
// Start periodic on next tick or at aura apply
|
||||||
if (m_spellInfo.HasAttribute(SpellAttr5.StartPeriodicAtApply))
|
if (m_spellInfo.HasAttribute(SpellAttr5.ExtraInitialPeriod))
|
||||||
_periodicTimer = _period;
|
_periodicTimer = _period;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,7 +222,7 @@ namespace Game.Spells
|
|||||||
// Haste modifies periodic time of channeled spells
|
// Haste modifies periodic time of channeled spells
|
||||||
if (m_spellInfo.IsChanneled())
|
if (m_spellInfo.IsChanneled())
|
||||||
caster.ModSpellDurationTime(m_spellInfo, ref _period);
|
caster.ModSpellDurationTime(m_spellInfo, ref _period);
|
||||||
else if (m_spellInfo.HasAttribute(SpellAttr5.HasteAffectDuration))
|
else if (m_spellInfo.HasAttribute(SpellAttr5.SpellHasteAffectsPeriodic))
|
||||||
_period = (int)(_period * caster.m_unitData.ModCastingSpeed);
|
_period = (int)(_period * caster.m_unitData.ModCastingSpeed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -238,7 +238,7 @@ namespace Game.Spells
|
|||||||
_periodicTimer = (int)(elapsedTime % _period);
|
_periodicTimer = (int)(elapsedTime % _period);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_spellInfo.HasAttribute(SpellAttr5.StartPeriodicAtApply))
|
if (m_spellInfo.HasAttribute(SpellAttr5.ExtraInitialPeriod))
|
||||||
++_ticksDone;
|
++_ticksDone;
|
||||||
}
|
}
|
||||||
else // aura just created or reapplied
|
else // aura just created or reapplied
|
||||||
|
|||||||
@@ -2236,7 +2236,7 @@ namespace Game.Spells
|
|||||||
// Haste modifies duration of channeled spells
|
// Haste modifies duration of channeled spells
|
||||||
if (m_spellInfo.IsChanneled())
|
if (m_spellInfo.IsChanneled())
|
||||||
caster.ModSpellDurationTime(m_spellInfo, ref hitInfo.AuraDuration, this);
|
caster.ModSpellDurationTime(m_spellInfo, ref hitInfo.AuraDuration, this);
|
||||||
else if (m_spellInfo.HasAttribute(SpellAttr5.HasteAffectDuration))
|
else if (m_spellInfo.HasAttribute(SpellAttr8.HasteAffectsDuration))
|
||||||
{
|
{
|
||||||
int origDuration = hitInfo.AuraDuration;
|
int origDuration = hitInfo.AuraDuration;
|
||||||
hitInfo.AuraDuration = 0;
|
hitInfo.AuraDuration = 0;
|
||||||
@@ -2510,7 +2510,7 @@ namespace Game.Spells
|
|||||||
m_casttime = m_spellInfo.CalcCastTime(this);
|
m_casttime = m_spellInfo.CalcCastTime(this);
|
||||||
|
|
||||||
// don't allow channeled spells / spells with cast time to be casted while moving
|
// don't allow channeled spells / spells with cast time to be casted while moving
|
||||||
// exception are only channeled spells that have no casttime and SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING
|
// exception are only channeled spells that have no casttime and dont have movement interrupt flag
|
||||||
// (even if they are interrupted on moving, spells with almost immediate effect get to have their effect processed before movement interrupter kicks in)
|
// (even if they are interrupted on moving, spells with almost immediate effect get to have their effect processed before movement interrupter kicks in)
|
||||||
// don't cancel spells which are affected by a SPELL_AURA_CAST_WHILE_WALKING effect
|
// don't cancel spells which are affected by a SPELL_AURA_CAST_WHILE_WALKING effect
|
||||||
if (((m_spellInfo.IsChanneled() || m_casttime != 0) && m_caster.IsPlayer() && !(m_caster.ToUnit().IsCharmed() && m_caster.ToUnit().GetCharmerGUID().IsCreature()) && m_caster.ToUnit().IsMoving() &&
|
if (((m_spellInfo.IsChanneled() || m_casttime != 0) && m_caster.IsPlayer() && !(m_caster.ToUnit().IsCharmed() && m_caster.ToUnit().GetCharmerGUID().IsCreature()) && m_caster.ToUnit().IsMoving() &&
|
||||||
@@ -5866,13 +5866,13 @@ namespace Game.Spells
|
|||||||
// still they need to be checked against certain mechanics
|
// still they need to be checked against certain mechanics
|
||||||
|
|
||||||
// SPELL_ATTR5_USABLE_WHILE_STUNNED by default only MECHANIC_STUN (ie no sleep, knockout, freeze, etc.)
|
// SPELL_ATTR5_USABLE_WHILE_STUNNED by default only MECHANIC_STUN (ie no sleep, knockout, freeze, etc.)
|
||||||
bool usableWhileStunned = m_spellInfo.HasAttribute(SpellAttr5.UsableWhileStunned);
|
bool usableWhileStunned = m_spellInfo.HasAttribute(SpellAttr5.AllowWhileStunned);
|
||||||
|
|
||||||
// SPELL_ATTR5_USABLE_WHILE_FEARED by default only fear (ie no horror)
|
// SPELL_ATTR5_USABLE_WHILE_FEARED by default only fear (ie no horror)
|
||||||
bool usableWhileFeared = m_spellInfo.HasAttribute(SpellAttr5.UsableWhileFeared);
|
bool usableWhileFeared = m_spellInfo.HasAttribute(SpellAttr5.AllowWhileFleeing);
|
||||||
|
|
||||||
// SPELL_ATTR5_USABLE_WHILE_CONFUSED by default only disorient (ie no polymorph)
|
// SPELL_ATTR5_USABLE_WHILE_CONFUSED by default only disorient (ie no polymorph)
|
||||||
bool usableWhileConfused = m_spellInfo.HasAttribute(SpellAttr5.UsableWhileConfused);
|
bool usableWhileConfused = m_spellInfo.HasAttribute(SpellAttr5.AllowWhileConfused);
|
||||||
|
|
||||||
// Check whether the cast should be prevented by any state you might have.
|
// Check whether the cast should be prevented by any state you might have.
|
||||||
SpellCastResult result = SpellCastResult.SpellCastOk;
|
SpellCastResult result = SpellCastResult.SpellCastOk;
|
||||||
|
|||||||
@@ -553,7 +553,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
public bool IsMoveAllowedChannel()
|
public bool IsMoveAllowedChannel()
|
||||||
{
|
{
|
||||||
return IsChanneled() && (HasAttribute(SpellAttr5.CanChannelWhenMoving) || !ChannelInterruptFlags.HasAnyFlag(SpellAuraInterruptFlags.Moving | SpellAuraInterruptFlags.Turning));
|
return IsChanneled() && !ChannelInterruptFlags.HasFlag(SpellAuraInterruptFlags.Moving | SpellAuraInterruptFlags.Turning);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool NeedsComboPoints()
|
public bool NeedsComboPoints()
|
||||||
@@ -721,7 +721,7 @@ namespace Game.Spells
|
|||||||
public bool IsSingleTarget()
|
public bool IsSingleTarget()
|
||||||
{
|
{
|
||||||
// all other single target spells have if it has AttributesEx5
|
// all other single target spells have if it has AttributesEx5
|
||||||
if (HasAttribute(SpellAttr5.SingleTargetSpell))
|
if (HasAttribute(SpellAttr5.LimitN))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
switch (GetSpellSpecific())
|
switch (GetSpellSpecific())
|
||||||
@@ -2373,7 +2373,7 @@ namespace Game.Spells
|
|||||||
_allowedMechanicMask |= immuneInfo.MechanicImmuneMask;
|
_allowedMechanicMask |= immuneInfo.MechanicImmuneMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasAttribute(SpellAttr5.UsableWhileStunned))
|
if (HasAttribute(SpellAttr5.AllowWhileStunned))
|
||||||
{
|
{
|
||||||
switch (Id)
|
switch (Id)
|
||||||
{
|
{
|
||||||
@@ -2393,10 +2393,10 @@ namespace Game.Spells
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasAttribute(SpellAttr5.UsableWhileConfused))
|
if (HasAttribute(SpellAttr5.AllowWhileConfused))
|
||||||
_allowedMechanicMask |= (1 << (int)Mechanics.Disoriented);
|
_allowedMechanicMask |= (1 << (int)Mechanics.Disoriented);
|
||||||
|
|
||||||
if (HasAttribute(SpellAttr5.UsableWhileFeared))
|
if (HasAttribute(SpellAttr5.AllowWhileFleeing))
|
||||||
{
|
{
|
||||||
switch (Id)
|
switch (Id)
|
||||||
{
|
{
|
||||||
@@ -2746,7 +2746,7 @@ namespace Game.Spells
|
|||||||
if (effectInfo.ApplyAuraPeriod > 0 && DotDuration > 0)
|
if (effectInfo.ApplyAuraPeriod > 0 && DotDuration > 0)
|
||||||
{
|
{
|
||||||
totalTicks = (uint)DotDuration / effectInfo.ApplyAuraPeriod;
|
totalTicks = (uint)DotDuration / effectInfo.ApplyAuraPeriod;
|
||||||
if (HasAttribute(SpellAttr5.StartPeriodicAtApply))
|
if (HasAttribute(SpellAttr5.ExtraInitialPeriod))
|
||||||
++totalTicks;
|
++totalTicks;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -3394,7 +3394,7 @@ namespace Game.Entities
|
|||||||
// Earthbind Totem (instant pulse)
|
// Earthbind Totem (instant pulse)
|
||||||
ApplySpellFix(new[] { 6474 }, spellInfo =>
|
ApplySpellFix(new[] { 6474 }, spellInfo =>
|
||||||
{
|
{
|
||||||
spellInfo.AttributesEx5 |= SpellAttr5.StartPeriodicAtApply;
|
spellInfo.AttributesEx5 |= SpellAttr5.ExtraInitialPeriod;
|
||||||
});
|
});
|
||||||
|
|
||||||
ApplySpellFix(new[] {
|
ApplySpellFix(new[] {
|
||||||
@@ -4374,7 +4374,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
// due to the way spell system works, unit would change orientation in Spell::_cast
|
// due to the way spell system works, unit would change orientation in Spell::_cast
|
||||||
if (spellInfo.HasAura(AuraType.ControlVehicle))
|
if (spellInfo.HasAura(AuraType.ControlVehicle))
|
||||||
spellInfo.AttributesEx5 |= SpellAttr5.DontTurnDuringCast;
|
spellInfo.AttributesEx5 |= SpellAttr5.AiDoesntFaceTarget;
|
||||||
|
|
||||||
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