aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Object/Object.cpp10
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h64
-rw-r--r--src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp180
-rw-r--r--src/server/game/Spells/Spell.cpp8
-rw-r--r--src/server/game/Spells/SpellHistory.cpp2
-rw-r--r--src/server/game/Spells/SpellInfo.cpp10
-rw-r--r--src/server/game/Spells/SpellMgr.cpp4
-rw-r--r--src/server/scripts/World/duel_reset.cpp2
8 files changed, 137 insertions, 143 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index ad8aeadceb6..fef22d2af9a 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -2927,7 +2927,7 @@ bool WorldObject::IsValidAttackTarget(WorldObject const* target, SpellInfo const
if (unit)
{
// can't attack invisible
- if (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_INVISIBLE))
+ if (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_IGNORE_PHASE_SHIFT))
{
if (!unit->CanSeeOrDetect(target, bySpell && bySpell->IsAffectingArea()))
return false;
@@ -2958,7 +2958,7 @@ bool WorldObject::IsValidAttackTarget(WorldObject const* target, SpellInfo const
unitOrOwner = go->GetOwner();
// ignore immunity flags when assisting
- if (unitOrOwner && unitTarget && !(isPositiveSpell && bySpell->HasAttribute(SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG)))
+ if (unitOrOwner && unitTarget && !(isPositiveSpell && bySpell->HasAttribute(SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC)))
{
if (!unitOrOwner->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && unitTarget->IsImmuneToNPC())
return false;
@@ -3081,7 +3081,7 @@ bool WorldObject::IsValidAssistTarget(WorldObject const* target, SpellInfo const
}
// can't assist invisible
- if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_INVISIBLE)) && !CanSeeOrDetect(target, bySpell && bySpell->IsAffectingArea()))
+ if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_IGNORE_PHASE_SHIFT)) && !CanSeeOrDetect(target, bySpell && bySpell->IsAffectingArea()))
return false;
// can't assist dead
@@ -3096,7 +3096,7 @@ bool WorldObject::IsValidAssistTarget(WorldObject const* target, SpellInfo const
if (isNegativeSpell && unitTarget && unitTarget->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_ON_TAXI | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_NON_ATTACKABLE_2))
return false;
- if (isNegativeSpell || !bySpell || !bySpell->HasAttribute(SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG))
+ if (isNegativeSpell || !bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC))
{
if (unit && unit->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
{
@@ -3142,7 +3142,7 @@ bool WorldObject::IsValidAssistTarget(WorldObject const* target, SpellInfo const
// !target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE) &&
else if (unit && unit->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
{
- if (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG))
+ if (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC))
if (unitTarget && !unitTarget->IsPvP())
if (Creature const* creatureTarget = target->ToCreature())
return ((creatureTarget->GetCreatureTemplate()->type_flags & CREATURE_TYPE_FLAG_TREAT_AS_RAID_UNIT) || (creatureTarget->GetCreatureTemplate()->type_flags & CREATURE_TYPE_FLAG_CAN_ASSIST));
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 3177c1244f6..022b29cae54 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -626,38 +626,38 @@ enum SpellAttr5 : uint32
// EnumUtils: DESCRIBE THIS
enum SpellAttr6 : uint32
{
- SPELL_ATTR6_DONT_DISPLAY_COOLDOWN = 0x00000001, // TITLE Don't display cooldown (client only)
- SPELL_ATTR6_ONLY_IN_ARENA = 0x00000002, // TITLE Only usable in arena
- SPELL_ATTR6_IGNORE_CASTER_AURAS = 0x00000004, // TITLE Ignore all preventing caster auras
- SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG = 0x00000008, // TITLE Ignore immunity flags when assisting
- SPELL_ATTR6_UNK4 = 0x00000010, // TITLE Unknown attribute 4@Attr6
- SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES = 0x00000020, // TITLE Don't consume proc charges
- SPELL_ATTR6_USE_SPELL_CAST_EVENT = 0x00000040, // TITLE Generate spell_cast event instead of aura_start (client only)
- SPELL_ATTR6_UNK7 = 0x00000080, // TITLE Unknown attribute 7@Attr6
- SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED = 0x00000100, // TITLE Do not implicitly target in CC DESCRIPTION Implicit targeting (chaining and area targeting) will not impact crowd controlled targets
- SPELL_ATTR6_UNK9 = 0x00000200, // TITLE Unknown attribute 9@Attr6
- SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS = 0x00000400, // TITLE Can target possessed friends DESCRIPTION [NYI]
- SPELL_ATTR6_NOT_IN_RAID_INSTANCE = 0x00000800, // TITLE Unusable in raid instances
- SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE = 0x00001000, // TITLE Castable while caster is on vehicle
- SPELL_ATTR6_CAN_TARGET_INVISIBLE = 0x00002000, // TITLE Can target invisible units
- SPELL_ATTR6_UNK14 = 0x00004000, // TITLE Unknown attribute 14@Attr6
- SPELL_ATTR6_UNK15 = 0x00008000, // TITLE Unknown attribute 15@Attr6
- SPELL_ATTR6_UNK16 = 0x00010000, // TITLE Unknown attribute 16@Attr6
- SPELL_ATTR6_UNK17 = 0x00020000, // TITLE Unknown attribute 17@Attr6 DESCRIPTION Mount related?
- SPELL_ATTR6_CAST_BY_CHARMER = 0x00040000, // TITLE Spell is cast by charmer DESCRIPTION Client will prevent casting if not possessed, charmer will be caster for all intents and purposes
- SPELL_ATTR6_UNK19 = 0x00080000, // TITLE Unknown attribute 19@Attr6
- SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER = 0x00100000, // TITLE Only visible to caster (client only)
- SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS = 0x00200000, // TITLE Client UI target effects (client only)
- SPELL_ATTR6_UNK22 = 0x00400000, // TITLE Unknown attribute 22@Attr6
- SPELL_ATTR6_UNK23 = 0x00800000, // TITLE Unknown attribute 23@Attr6
- SPELL_ATTR6_CAN_TARGET_UNTARGETABLE = 0x01000000, // TITLE Can target untargetable units
- SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT = 0x02000000, // TITLE Do not reset swing timer if cast time is instant
- SPELL_ATTR6_UNK26 = 0x04000000, // TITLE Unknown attribute 26@Attr6 DESCRIPTION Player castable buff?
- SPELL_ATTR6_IGNORE_HEALING_MODIFIERS = 0x08000000, // TITLE Limit applicable %healing modifiers DESCRIPTION This prevents certain healing modifiers from applying - see implementation if you really care about details
- SPELL_ATTR6_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr6 DESCRIPTION Death grip?
- SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS = 0x20000000, // TITLE Limit applicable %damage modifiers DESCRIPTION This prevents certain damage modifiers from applying - see implementation if you really care about details
- SPELL_ATTR6_UNK30 = 0x40000000, // TITLE Unknown attribute 30@Attr6
- SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS = 0x80000000 // TITLE Ignore cooldown modifiers for category cooldown
+ SPELL_ATTR6_NO_COOLDOWN_ON_TOOLTIP = 0x00000001, // TITLE No Cooldown On Tooltip (client only)
+ SPELL_ATTR6_DO_NOT_RESET_COOLDOWN_IN_ARENA = 0x00000002, /*NYI*/ // TITLE Do Not Reset Cooldown In Arena
+ SPELL_ATTR6_NOT_AN_ATTACK = 0x00000004, /*NYI*/ // TITLE Not an Attack
+ SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC = 0x00000008, // TITLE Can Assist Immune PC
+ SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE = 0x00000010, /*NYI, time rate not implemented*/ // TITLE Ignore For Mod Time Rate
+ SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES = 0x00000020, // TITLE Do Not Consume Resources
+ SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST = 0x00000040, // TITLE Floating Combat Text On Cast (client only)
+ SPELL_ATTR6_AURA_IS_WEAPON_PROC = 0x00000080, /*NYI*/ // TITLE Aura Is Weapon Proc
+ SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS = 0x00000100, // TITLE Do Not Chain To Crowd-Controlled Targets DESCRIPTION Implicit targeting (chaining and area targeting) will not impact crowd controlled targets
+ SPELL_ATTR6_ALLOW_ON_CHARMED_TARGETS = 0x00000200, /*NYI*/ // TITLE Allow On Charmed Targets
+ SPELL_ATTR6_NO_AURA_LOG = 0x00000400, // TITLE No Aura Log
+ SPELL_ATTR6_NOT_IN_RAID_INSTANCES = 0x00000800, // TITLE Not In Raid Instances
+ SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE = 0x00001000, // TITLE Allow While Riding Vehicle
+ SPELL_ATTR6_IGNORE_PHASE_SHIFT = 0x00002000, // TITLE Ignore Phase Shift
+ SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK = 0x00004000, /*NYI*/ // TITLE AI Primary Ranged Attack
+ SPELL_ATTR6_NO_PUSHBACK = 0x00008000, /*NYI*/ // TITLE No Pushback
+ SPELL_ATTR6_NO_JUMP_PATHING = 0x00010000, /*NYI*/ // TITLE No Jump Pathing
+ SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING = 0x00020000, /*NYI*/ // TITLE Allow Equip While Casting
+ SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER = 0x00040000, // TITLE Originate From Controller DESCRIPTION Client will prevent casting if not possessed, charmer will be caster for all intents and purposes
+ SPELL_ATTR6_DELAY_COMBAT_TIMER_DURING_CAST = 0x00080000, /*NYI*/ // TITLE Delay Combat Timer During Cast
+ SPELL_ATTR6_AURA_ICON_ONLY_FOR_CASTER_LIMIT_10 = 0x00100000, // TITLE Aura Icon Only For Caster (Limit 10) (client only)
+ SPELL_ATTR6_SHOW_MECHANIC_AS_COMBAT_TEXT = 0x00200000, // TITLE Show Mechanic as Combat Text (client only)
+ SPELL_ATTR6_ABSORB_CANNOT_BE_IGNORE = 0x00400000, /*NYI*/ // TITLE Absorb Cannot Be Ignore
+ SPELL_ATTR6_TAPS_IMMEDIATELY = 0x00800000, /*NYI*/ // TITLE Taps immediately
+ SPELL_ATTR6_CAN_TARGET_UNTARGETABLE = 0x01000000, // TITLE Can Target Untargetable
+ SPELL_ATTR6_DOESNT_RESET_SWING_TIMER_IF_INSTANT = 0x02000000, // TITLE Doesn't Reset Swing Timer if Instant
+ SPELL_ATTR6_VEHICLE_IMMUNITY_CATEGORY = 0x04000000, /*NYI*/ // TITLE Vehicle Immunity Category
+ SPELL_ATTR6_IGNORE_HEALING_MODIFIERS = 0x08000000, // TITLE Ignore Healing Modifiers DESCRIPTION This prevents certain healing modifiers from applying - see implementation if you really care about details
+ SPELL_ATTR6_DO_NOT_AUTO_SELECT_TARGET_WITH_INITIATES_COMBAT = 0x10000000, // TITLE Do Not Auto Select Target with Initiates Combat (client only)
+ SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS = 0x20000000, // TITLE Ignore Caster Damage Modifiers DESCRIPTION This prevents certain damage modifiers from applying - see implementation if you really care about details
+ SPELL_ATTR6_DISABLE_TIED_EFFECT_POINTS = 0x40000000, /*NYI*/ // TITLE Disable Tied Effect Points
+ SPELL_ATTR6_NO_CATEGORY_COOLDOWN_MODS = 0x80000000 // TITLE No Category Cooldown Mods
};
// EnumUtils: DESCRIBE THIS
diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
index 94ece733376..89890edcb19 100644
--- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
+++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
@@ -912,13 +912,13 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr5>::ToString(SpellAttr5 value)
case SPELL_ATTR5_ALLOW_WHILE_FLEEING: return { "SPELL_ATTR5_ALLOW_WHILE_FLEEING", "Allow While Fleeing", "" };
case SPELL_ATTR5_ALLOW_WHILE_CONFUSED: return { "SPELL_ATTR5_ALLOW_WHILE_CONFUSED", "Allow While Confused", "" };
case SPELL_ATTR5_AI_DOESNT_FACE_TARGET: return { "SPELL_ATTR5_AI_DOESNT_FACE_TARGET", "AI Doesn't Face Target", "" };
- case SPELL_ATTR5_DO_NOT_ATTEMPT_A_PET_RESUMMON_WHEN_DISMOUNTING: return { "SPELL_ATTR5_DO_NOT_ATTEMPT_A_PET_RESUMMON_WHEN_DISMOUNTING", "Do Not Attempt a Pet Resummon When Dismounting", "" };
+ case SPELL_ATTR5_DO_NOT_ATTEMPT_A_PET_RESUMMON_WHEN_DISMOUNTING: return { "SPELL_ATTR5_DO_NOT_ATTEMPT_A_PET_RESUMMON_WHEN_DISMOUNTING", "Do Not Attempt a Pet Resummon When Dismounting", "No generic handling possible, used by scripted dismount spells" };
case SPELL_ATTR5_IGNORE_TARGET_REQUIREMENTS: return { "SPELL_ATTR5_IGNORE_TARGET_REQUIREMENTS", "Ignore Target Requirements", "" };
case SPELL_ATTR5_NOT_ON_TRIVIAL: return { "SPELL_ATTR5_NOT_ON_TRIVIAL", "Not On Trivial", "" };
case SPELL_ATTR5_NO_PARTIAL_RESISTS: return { "SPELL_ATTR5_NO_PARTIAL_RESISTS", "No Partial Resists", "" };
case SPELL_ATTR5_IGNORE_CASTER_REQUIREMENTS: return { "SPELL_ATTR5_IGNORE_CASTER_REQUIREMENTS", "Ignore Caster Requirements", "" };
case SPELL_ATTR5_ALWAYS_LINE_OF_SIGHT: return { "SPELL_ATTR5_ALWAYS_LINE_OF_SIGHT", "Always Line of Sight", "" };
- case SPELL_ATTR5_ALWAYS_AOE_LINE_OF_SIGHT: return { "SPELL_ATTR5_ALWAYS_AOE_LINE_OF_SIGHT", "Always AOE Line of Sight", "" };
+ case SPELL_ATTR5_ALWAYS_AOE_LINE_OF_SIGHT: return { "SPELL_ATTR5_ALWAYS_AOE_LINE_OF_SIGHT", "Always AOE Line of Sight", "Requires line of sight between caster and target in addition to between dest and target" };
case SPELL_ATTR5_NO_CASTER_AURA_ICON: return { "SPELL_ATTR5_NO_CASTER_AURA_ICON", "No Caster Aura Icon (client only)", "" };
case SPELL_ATTR5_NO_TARGET_AURA_ICON: return { "SPELL_ATTR5_NO_TARGET_AURA_ICON", "No Target Aura Icon (client only)", "" };
case SPELL_ATTR5_AURA_UNIQUE_PER_CASTER: return { "SPELL_ATTR5_AURA_UNIQUE_PER_CASTER", "Aura Unique Per Caster", "" };
@@ -1021,38 +1021,38 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr6>::ToString(SpellAttr6 value)
{
switch (value)
{
- case SPELL_ATTR6_DONT_DISPLAY_COOLDOWN: return { "SPELL_ATTR6_DONT_DISPLAY_COOLDOWN", "Don't display cooldown (client only)", "" };
- case SPELL_ATTR6_ONLY_IN_ARENA: return { "SPELL_ATTR6_ONLY_IN_ARENA", "Only usable in arena", "" };
- case SPELL_ATTR6_IGNORE_CASTER_AURAS: return { "SPELL_ATTR6_IGNORE_CASTER_AURAS", "Ignore all preventing caster auras", "" };
- case SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG: return { "SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG", "Ignore immunity flags when assisting", "" };
- case SPELL_ATTR6_UNK4: return { "SPELL_ATTR6_UNK4", "Unknown attribute 4@Attr6", "" };
- case SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES: return { "SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES", "Don't consume proc charges", "" };
- case SPELL_ATTR6_USE_SPELL_CAST_EVENT: return { "SPELL_ATTR6_USE_SPELL_CAST_EVENT", "Generate spell_cast event instead of aura_start (client only)", "" };
- case SPELL_ATTR6_UNK7: return { "SPELL_ATTR6_UNK7", "Unknown attribute 7@Attr6", "" };
- case SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED: return { "SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED", "Do not implicitly target in CC", "Implicit targeting (chaining and area targeting) will not impact crowd controlled targets" };
- case SPELL_ATTR6_UNK9: return { "SPELL_ATTR6_UNK9", "Unknown attribute 9@Attr6", "" };
- case SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS: return { "SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS", "Can target possessed friends", "[NYI]" };
- case SPELL_ATTR6_NOT_IN_RAID_INSTANCE: return { "SPELL_ATTR6_NOT_IN_RAID_INSTANCE", "Unusable in raid instances", "" };
- case SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE: return { "SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE", "Castable while caster is on vehicle", "" };
- case SPELL_ATTR6_CAN_TARGET_INVISIBLE: return { "SPELL_ATTR6_CAN_TARGET_INVISIBLE", "Can target invisible units", "" };
- case SPELL_ATTR6_UNK14: return { "SPELL_ATTR6_UNK14", "Unknown attribute 14@Attr6", "" };
- case SPELL_ATTR6_UNK15: return { "SPELL_ATTR6_UNK15", "Unknown attribute 15@Attr6", "" };
- case SPELL_ATTR6_UNK16: return { "SPELL_ATTR6_UNK16", "Unknown attribute 16@Attr6", "" };
- case SPELL_ATTR6_UNK17: return { "SPELL_ATTR6_UNK17", "Unknown attribute 17@Attr6", "Mount related?" };
- case SPELL_ATTR6_CAST_BY_CHARMER: return { "SPELL_ATTR6_CAST_BY_CHARMER", "Spell is cast by charmer", "Client will prevent casting if not possessed, charmer will be caster for all intents and purposes" };
- case SPELL_ATTR6_UNK19: return { "SPELL_ATTR6_UNK19", "Unknown attribute 19@Attr6", "" };
- case SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER: return { "SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER", "Only visible to caster (client only)", "" };
- case SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS: return { "SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS", "Client UI target effects (client only)", "" };
- case SPELL_ATTR6_UNK22: return { "SPELL_ATTR6_UNK22", "Unknown attribute 22@Attr6", "" };
- case SPELL_ATTR6_UNK23: return { "SPELL_ATTR6_UNK23", "Unknown attribute 23@Attr6", "" };
- case SPELL_ATTR6_CAN_TARGET_UNTARGETABLE: return { "SPELL_ATTR6_CAN_TARGET_UNTARGETABLE", "Can target untargetable units", "" };
- case SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT: return { "SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT", "Do not reset swing timer if cast time is instant", "" };
- case SPELL_ATTR6_UNK26: return { "SPELL_ATTR6_UNK26", "Unknown attribute 26@Attr6", "Player castable buff?" };
- case SPELL_ATTR6_IGNORE_HEALING_MODIFIERS: return { "SPELL_ATTR6_IGNORE_HEALING_MODIFIERS", "Limit applicable %healing modifiers", "This prevents certain healing modifiers from applying - see implementation if you really care about details" };
- case SPELL_ATTR6_UNK28: return { "SPELL_ATTR6_UNK28", "Unknown attribute 28@Attr6", "Death grip?" };
- case SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS: return { "SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS", "Limit applicable %damage modifiers", "This prevents certain damage modifiers from applying - see implementation if you really care about details" };
- case SPELL_ATTR6_UNK30: return { "SPELL_ATTR6_UNK30", "Unknown attribute 30@Attr6", "" };
- case SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS: return { "SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS", "Ignore cooldown modifiers for category cooldown", "" };
+ case SPELL_ATTR6_NO_COOLDOWN_ON_TOOLTIP: return { "SPELL_ATTR6_NO_COOLDOWN_ON_TOOLTIP", "No Cooldown On Tooltip (client only)", "" };
+ case SPELL_ATTR6_DO_NOT_RESET_COOLDOWN_IN_ARENA: return { "SPELL_ATTR6_DO_NOT_RESET_COOLDOWN_IN_ARENA", "Do Not Reset Cooldown In Arena", "" };
+ case SPELL_ATTR6_NOT_AN_ATTACK: return { "SPELL_ATTR6_NOT_AN_ATTACK", "Not an Attack", "" };
+ case SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC: return { "SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC", "Can Assist Immune PC", "" };
+ case SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE: return { "SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE", "Ignore For Mod Time Rate", "" };
+ case SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES: return { "SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES", "Do Not Consume Resources", "" };
+ case SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST: return { "SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST", "Floating Combat Text On Cast (client only)", "" };
+ case SPELL_ATTR6_AURA_IS_WEAPON_PROC: return { "SPELL_ATTR6_AURA_IS_WEAPON_PROC", "Aura Is Weapon Proc", "" };
+ case SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS: return { "SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS", "Do Not Chain To Crowd-Controlled Targets", "Implicit targeting (chaining and area targeting) will not impact crowd controlled targets" };
+ case SPELL_ATTR6_ALLOW_ON_CHARMED_TARGETS: return { "SPELL_ATTR6_ALLOW_ON_CHARMED_TARGETS", "Allow On Charmed Targets", "" };
+ case SPELL_ATTR6_NO_AURA_LOG: return { "SPELL_ATTR6_NO_AURA_LOG", "No Aura Log", "" };
+ case SPELL_ATTR6_NOT_IN_RAID_INSTANCES: return { "SPELL_ATTR6_NOT_IN_RAID_INSTANCES", "Not In Raid Instances", "" };
+ case SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE: return { "SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE", "Allow While Riding Vehicle", "" };
+ case SPELL_ATTR6_IGNORE_PHASE_SHIFT: return { "SPELL_ATTR6_IGNORE_PHASE_SHIFT", "Ignore Phase Shift", "" };
+ case SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK: return { "SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK", "AI Primary Ranged Attack", "" };
+ case SPELL_ATTR6_NO_PUSHBACK: return { "SPELL_ATTR6_NO_PUSHBACK", "No Pushback", "" };
+ case SPELL_ATTR6_NO_JUMP_PATHING: return { "SPELL_ATTR6_NO_JUMP_PATHING", "No Jump Pathing", "" };
+ case SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING: return { "SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING", "Allow Equip While Casting", "" };
+ case SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER: return { "SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER", "Originate From Controller", "Client will prevent casting if not possessed, charmer will be caster for all intents and purposes" };
+ case SPELL_ATTR6_DELAY_COMBAT_TIMER_DURING_CAST: return { "SPELL_ATTR6_DELAY_COMBAT_TIMER_DURING_CAST", "Delay Combat Timer During Cast", "" };
+ case SPELL_ATTR6_AURA_ICON_ONLY_FOR_CASTER_LIMIT_10: return { "SPELL_ATTR6_AURA_ICON_ONLY_FOR_CASTER_LIMIT_10", "Aura Icon Only For Caster (Limit 10) (client only)", "" };
+ case SPELL_ATTR6_SHOW_MECHANIC_AS_COMBAT_TEXT: return { "SPELL_ATTR6_SHOW_MECHANIC_AS_COMBAT_TEXT", "Show Mechanic as Combat Text (client only)", "" };
+ case SPELL_ATTR6_ABSORB_CANNOT_BE_IGNORE: return { "SPELL_ATTR6_ABSORB_CANNOT_BE_IGNORE", "Absorb Cannot Be Ignore", "" };
+ case SPELL_ATTR6_TAPS_IMMEDIATELY: return { "SPELL_ATTR6_TAPS_IMMEDIATELY", "Taps immediately", "" };
+ case SPELL_ATTR6_CAN_TARGET_UNTARGETABLE: return { "SPELL_ATTR6_CAN_TARGET_UNTARGETABLE", "Can Target Untargetable", "" };
+ case SPELL_ATTR6_DOESNT_RESET_SWING_TIMER_IF_INSTANT: return { "SPELL_ATTR6_DOESNT_RESET_SWING_TIMER_IF_INSTANT", "Doesn't Reset Swing Timer if Instant", "" };
+ case SPELL_ATTR6_VEHICLE_IMMUNITY_CATEGORY: return { "SPELL_ATTR6_VEHICLE_IMMUNITY_CATEGORY", "Vehicle Immunity Category", "" };
+ case SPELL_ATTR6_IGNORE_HEALING_MODIFIERS: return { "SPELL_ATTR6_IGNORE_HEALING_MODIFIERS", "Ignore Healing Modifiers", "This prevents certain healing modifiers from applying - see implementation if you really care about details" };
+ case SPELL_ATTR6_DO_NOT_AUTO_SELECT_TARGET_WITH_INITIATES_COMBAT: return { "SPELL_ATTR6_DO_NOT_AUTO_SELECT_TARGET_WITH_INITIATES_COMBAT", "Do Not Auto Select Target with Initiates Combat (client only)", "" };
+ case SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS: return { "SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS", "Ignore Caster Damage Modifiers", "This prevents certain damage modifiers from applying - see implementation if you really care about details" };
+ case SPELL_ATTR6_DISABLE_TIED_EFFECT_POINTS: return { "SPELL_ATTR6_DISABLE_TIED_EFFECT_POINTS", "Disable Tied Effect Points", "" };
+ case SPELL_ATTR6_NO_CATEGORY_COOLDOWN_MODS: return { "SPELL_ATTR6_NO_CATEGORY_COOLDOWN_MODS", "No Category Cooldown Mods", "" };
default: throw std::out_of_range("value");
}
}
@@ -1065,38 +1065,38 @@ TC_API_EXPORT SpellAttr6 EnumUtils<SpellAttr6>::FromIndex(size_t index)
{
switch (index)
{
- case 0: return SPELL_ATTR6_DONT_DISPLAY_COOLDOWN;
- case 1: return SPELL_ATTR6_ONLY_IN_ARENA;
- case 2: return SPELL_ATTR6_IGNORE_CASTER_AURAS;
- case 3: return SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG;
- case 4: return SPELL_ATTR6_UNK4;
+ case 0: return SPELL_ATTR6_NO_COOLDOWN_ON_TOOLTIP;
+ case 1: return SPELL_ATTR6_DO_NOT_RESET_COOLDOWN_IN_ARENA;
+ case 2: return SPELL_ATTR6_NOT_AN_ATTACK;
+ case 3: return SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC;
+ case 4: return SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE;
case 5: return SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES;
- case 6: return SPELL_ATTR6_USE_SPELL_CAST_EVENT;
- case 7: return SPELL_ATTR6_UNK7;
- case 8: return SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED;
- case 9: return SPELL_ATTR6_UNK9;
- case 10: return SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS;
- case 11: return SPELL_ATTR6_NOT_IN_RAID_INSTANCE;
- case 12: return SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE;
- case 13: return SPELL_ATTR6_CAN_TARGET_INVISIBLE;
- case 14: return SPELL_ATTR6_UNK14;
- case 15: return SPELL_ATTR6_UNK15;
- case 16: return SPELL_ATTR6_UNK16;
- case 17: return SPELL_ATTR6_UNK17;
- case 18: return SPELL_ATTR6_CAST_BY_CHARMER;
- case 19: return SPELL_ATTR6_UNK19;
- case 20: return SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER;
- case 21: return SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS;
- case 22: return SPELL_ATTR6_UNK22;
- case 23: return SPELL_ATTR6_UNK23;
+ case 6: return SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST;
+ case 7: return SPELL_ATTR6_AURA_IS_WEAPON_PROC;
+ case 8: return SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS;
+ case 9: return SPELL_ATTR6_ALLOW_ON_CHARMED_TARGETS;
+ case 10: return SPELL_ATTR6_NO_AURA_LOG;
+ case 11: return SPELL_ATTR6_NOT_IN_RAID_INSTANCES;
+ case 12: return SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE;
+ case 13: return SPELL_ATTR6_IGNORE_PHASE_SHIFT;
+ case 14: return SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK;
+ case 15: return SPELL_ATTR6_NO_PUSHBACK;
+ case 16: return SPELL_ATTR6_NO_JUMP_PATHING;
+ case 17: return SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING;
+ case 18: return SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER;
+ case 19: return SPELL_ATTR6_DELAY_COMBAT_TIMER_DURING_CAST;
+ case 20: return SPELL_ATTR6_AURA_ICON_ONLY_FOR_CASTER_LIMIT_10;
+ case 21: return SPELL_ATTR6_SHOW_MECHANIC_AS_COMBAT_TEXT;
+ case 22: return SPELL_ATTR6_ABSORB_CANNOT_BE_IGNORE;
+ case 23: return SPELL_ATTR6_TAPS_IMMEDIATELY;
case 24: return SPELL_ATTR6_CAN_TARGET_UNTARGETABLE;
- case 25: return SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT;
- case 26: return SPELL_ATTR6_UNK26;
+ case 25: return SPELL_ATTR6_DOESNT_RESET_SWING_TIMER_IF_INSTANT;
+ case 26: return SPELL_ATTR6_VEHICLE_IMMUNITY_CATEGORY;
case 27: return SPELL_ATTR6_IGNORE_HEALING_MODIFIERS;
- case 28: return SPELL_ATTR6_UNK28;
+ case 28: return SPELL_ATTR6_DO_NOT_AUTO_SELECT_TARGET_WITH_INITIATES_COMBAT;
case 29: return SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS;
- case 30: return SPELL_ATTR6_UNK30;
- case 31: return SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS;
+ case 30: return SPELL_ATTR6_DISABLE_TIED_EFFECT_POINTS;
+ case 31: return SPELL_ATTR6_NO_CATEGORY_COOLDOWN_MODS;
default: throw std::out_of_range("index");
}
}
@@ -1106,38 +1106,38 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr6>::ToIndex(SpellAttr6 value)
{
switch (value)
{
- case SPELL_ATTR6_DONT_DISPLAY_COOLDOWN: return 0;
- case SPELL_ATTR6_ONLY_IN_ARENA: return 1;
- case SPELL_ATTR6_IGNORE_CASTER_AURAS: return 2;
- case SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG: return 3;
- case SPELL_ATTR6_UNK4: return 4;
+ case SPELL_ATTR6_NO_COOLDOWN_ON_TOOLTIP: return 0;
+ case SPELL_ATTR6_DO_NOT_RESET_COOLDOWN_IN_ARENA: return 1;
+ case SPELL_ATTR6_NOT_AN_ATTACK: return 2;
+ case SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC: return 3;
+ case SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE: return 4;
case SPELL_ATTR6_DO_NOT_CONSUME_RESOURCES: return 5;
- case SPELL_ATTR6_USE_SPELL_CAST_EVENT: return 6;
- case SPELL_ATTR6_UNK7: return 7;
- case SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED: return 8;
- case SPELL_ATTR6_UNK9: return 9;
- case SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS: return 10;
- case SPELL_ATTR6_NOT_IN_RAID_INSTANCE: return 11;
- case SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE: return 12;
- case SPELL_ATTR6_CAN_TARGET_INVISIBLE: return 13;
- case SPELL_ATTR6_UNK14: return 14;
- case SPELL_ATTR6_UNK15: return 15;
- case SPELL_ATTR6_UNK16: return 16;
- case SPELL_ATTR6_UNK17: return 17;
- case SPELL_ATTR6_CAST_BY_CHARMER: return 18;
- case SPELL_ATTR6_UNK19: return 19;
- case SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER: return 20;
- case SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS: return 21;
- case SPELL_ATTR6_UNK22: return 22;
- case SPELL_ATTR6_UNK23: return 23;
+ case SPELL_ATTR6_FLOATING_COMBAT_TEXT_ON_CAST: return 6;
+ case SPELL_ATTR6_AURA_IS_WEAPON_PROC: return 7;
+ case SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS: return 8;
+ case SPELL_ATTR6_ALLOW_ON_CHARMED_TARGETS: return 9;
+ case SPELL_ATTR6_NO_AURA_LOG: return 10;
+ case SPELL_ATTR6_NOT_IN_RAID_INSTANCES: return 11;
+ case SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE: return 12;
+ case SPELL_ATTR6_IGNORE_PHASE_SHIFT: return 13;
+ case SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK: return 14;
+ case SPELL_ATTR6_NO_PUSHBACK: return 15;
+ case SPELL_ATTR6_NO_JUMP_PATHING: return 16;
+ case SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING: return 17;
+ case SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER: return 18;
+ case SPELL_ATTR6_DELAY_COMBAT_TIMER_DURING_CAST: return 19;
+ case SPELL_ATTR6_AURA_ICON_ONLY_FOR_CASTER_LIMIT_10: return 20;
+ case SPELL_ATTR6_SHOW_MECHANIC_AS_COMBAT_TEXT: return 21;
+ case SPELL_ATTR6_ABSORB_CANNOT_BE_IGNORE: return 22;
+ case SPELL_ATTR6_TAPS_IMMEDIATELY: return 23;
case SPELL_ATTR6_CAN_TARGET_UNTARGETABLE: return 24;
- case SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT: return 25;
- case SPELL_ATTR6_UNK26: return 26;
+ case SPELL_ATTR6_DOESNT_RESET_SWING_TIMER_IF_INSTANT: return 25;
+ case SPELL_ATTR6_VEHICLE_IMMUNITY_CATEGORY: return 26;
case SPELL_ATTR6_IGNORE_HEALING_MODIFIERS: return 27;
- case SPELL_ATTR6_UNK28: return 28;
+ case SPELL_ATTR6_DO_NOT_AUTO_SELECT_TARGET_WITH_INITIATES_COMBAT: return 28;
case SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS: return 29;
- case SPELL_ATTR6_UNK30: return 30;
- case SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS: return 31;
+ case SPELL_ATTR6_DISABLE_TIED_EFFECT_POINTS: return 30;
+ case SPELL_ATTR6_NO_CATEGORY_COOLDOWN_MODS: return 31;
default: throw std::out_of_range("value");
}
}
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index d2022454a8f..119585fb60b 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -491,7 +491,7 @@ protected:
Spell::Spell(WorldObject* caster, SpellInfo const* info, TriggerCastFlags triggerFlags, ObjectGuid originalCasterGUID /*= ObjectGuid::Empty*/,
ObjectGuid originalCastId /*= ObjectGuid::Empty*/) :
-m_spellInfo(info), m_caster((info->HasAttribute(SPELL_ATTR6_CAST_BY_CHARMER) && caster->GetCharmerOrOwner()) ? caster->GetCharmerOrOwner() : caster),
+m_spellInfo(info), m_caster((info->HasAttribute(SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER) && caster->GetCharmerOrOwner()) ? caster->GetCharmerOrOwner() : caster),
m_spellValue(new SpellValue(m_spellInfo, caster)), _spellEvent(nullptr)
{
m_customError = SPELL_CUSTOM_ERROR_NONE;
@@ -6640,10 +6640,6 @@ SpellCastResult Spell::CheckCasterAuras(int32* param1) const
if (!unitCaster)
return SPELL_CAST_OK;
- // spells totally immuned to caster auras (wsg flag drop, give marks etc)
- if (m_spellInfo->HasAttribute(SPELL_ATTR6_IGNORE_CASTER_AURAS))
- return SPELL_CAST_OK;
-
// these attributes only show the spell as usable on the client when it has related aura applied
// still they need to be checked against certain mechanics
@@ -7963,7 +7959,7 @@ bool Spell::IsAutoActionResetSpell() const
if (IsTriggered())
return false;
- if (!m_casttime && m_spellInfo->HasAttribute(SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT))
+ if (!m_casttime && m_spellInfo->HasAttribute(SPELL_ATTR6_DOESNT_RESET_SWING_TIMER_IF_INSTANT))
return false;
return true;
diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp
index e4298f9f7e3..fffa4139ec8 100644
--- a/src/server/game/Spells/SpellHistory.cpp
+++ b/src/server/game/Spells/SpellHistory.cpp
@@ -448,7 +448,7 @@ void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spel
if (cooldown >= Duration::zero())
applySpellMod(cooldown);
- if (categoryCooldown >= Clock::duration::zero() && !spellInfo->HasAttribute(SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS))
+ if (categoryCooldown >= Clock::duration::zero() && !spellInfo->HasAttribute(SPELL_ATTR6_NO_CATEGORY_COOLDOWN_MODS))
applySpellMod(categoryCooldown);
}
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 8f5e8ccd5e3..0f3c0f3f608 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -1973,7 +1973,7 @@ SpellCastResult SpellInfo::CheckLocation(uint32 map_id, uint32 zone_id, uint32 a
}
// raid instance limitation
- if (HasAttribute(SPELL_ATTR6_NOT_IN_RAID_INSTANCE))
+ if (HasAttribute(SPELL_ATTR6_NOT_IN_RAID_INSTANCES))
{
MapEntry const* mapEntry = sMapStore.LookupEntry(map_id);
if (!mapEntry || mapEntry->IsRaid())
@@ -2098,7 +2098,7 @@ SpellCastResult SpellInfo::CheckTarget(WorldObject const* caster, WorldObject co
return SPELL_FAILED_BAD_TARGETS;
// check visibility - ignore stealth for implicit (area) targets
- if (!HasAttribute(SPELL_ATTR6_CAN_TARGET_INVISIBLE) && !caster->CanSeeOrDetect(target, implicit))
+ if (!HasAttribute(SPELL_ATTR6_IGNORE_PHASE_SHIFT) && !caster->CanSeeOrDetect(target, implicit))
return SPELL_FAILED_BAD_TARGETS;
Unit const* unitTarget = target->ToUnit();
@@ -2184,15 +2184,13 @@ SpellCastResult SpellInfo::CheckTarget(WorldObject const* caster, WorldObject co
return SPELL_FAILED_TARGETS_DEAD;
// check this flag only for implicit targets (chain and area), allow to explicitly target units for spells like Shield of Righteousness
- if (implicit && HasAttribute(SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED) && !unitTarget->CanFreeMove())
+ if (implicit && HasAttribute(SPELL_ATTR6_DO_NOT_CHAIN_TO_CROWD_CONTROLLED_TARGETS) && !unitTarget->CanFreeMove())
return SPELL_FAILED_BAD_TARGETS;
// checked in Unit::IsValidAttack/AssistTarget, shouldn't be checked for ENTRY targets
//if (!HasAttribute(SPELL_ATTR6_CAN_TARGET_UNTARGETABLE) && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNINTERACTIBLE))
// return SPELL_FAILED_BAD_TARGETS;
- //if (!HasAttribute(SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS))
-
if (!CheckTargetCreatureType(unitTarget))
{
if (target->GetTypeId() == TYPEID_PLAYER)
@@ -2318,7 +2316,7 @@ SpellCastResult SpellInfo::CheckVehicle(Unit const* caster) const
checkMask = VEHICLE_SEAT_FLAG_CAN_ATTACK;
VehicleSeatEntry const* vehicleSeat = vehicle->GetSeatForPassenger(caster);
- if (!HasAttribute(SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE) && !HasAttribute(SPELL_ATTR0_ALLOW_WHILE_MOUNTED)
+ if (!HasAttribute(SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE) && !HasAttribute(SPELL_ATTR0_ALLOW_WHILE_MOUNTED)
&& (vehicleSeat->Flags & checkMask) != checkMask)
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index f1a3f88fead..0b9856d6fb8 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3650,7 +3650,7 @@ void SpellMgr::LoadSpellInfoCorrections()
41487 // Envenom - Black Temple
}, [](SpellInfo* spellInfo)
{
- spellInfo->AttributesEx6 |= SPELL_ATTR6_CAN_TARGET_INVISIBLE;
+ spellInfo->AttributesEx6 |= SPELL_ATTR6_IGNORE_PHASE_SHIFT;
});
// Oscillation Field
@@ -4393,7 +4393,7 @@ void SpellMgr::LoadSpellInfoCorrections()
// Twilight Mending
ApplySpellFix({ 75509 }, [](SpellInfo* spellInfo)
{
- spellInfo->AttributesEx6 |= SPELL_ATTR6_CAN_TARGET_INVISIBLE;
+ spellInfo->AttributesEx6 |= SPELL_ATTR6_IGNORE_PHASE_SHIFT;
spellInfo->AttributesEx2 |= SPELL_ATTR2_IGNORE_LINE_OF_SIGHT;
});
diff --git a/src/server/scripts/World/duel_reset.cpp b/src/server/scripts/World/duel_reset.cpp
index d5d4a9a0de7..9f4fc5977c9 100644
--- a/src/server/scripts/World/duel_reset.cpp
+++ b/src/server/scripts/World/duel_reset.cpp
@@ -110,7 +110,7 @@ class DuelResetScript : public PlayerScript
if (int32 cooldownMod = player->GetTotalAuraModifier(SPELL_AURA_MOD_COOLDOWN))
totalCooldown += Milliseconds(cooldownMod);
- if (!spellInfo->HasAttribute(SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS))
+ if (!spellInfo->HasAttribute(SPELL_ATTR6_NO_CATEGORY_COOLDOWN_MODS))
applySpellMod(categoryCooldown);
return remainingCooldown > 0ms