From fcad2b56ae2fff4f6933beb26dec73e5680c75d6 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 31 Jan 2021 23:03:44 +0100 Subject: [PATCH] refactor(Core/Spell): Define some unknown spell attributes (#4305) Co-authored-by: Giacomo Pozzoni --- src/server/game/Entities/Unit/Unit.cpp | 6 +- src/server/game/Miscellaneous/SharedDefines.h | 512 +++++++++--------- src/server/game/Spells/Auras/SpellAuras.cpp | 2 +- src/server/game/Spells/SpellMgr.cpp | 2 +- 4 files changed, 261 insertions(+), 261 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 342765739..8eeafcfb3 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -930,7 +930,7 @@ uint32 Unit::DealDamage(Unit* attacker, Unit* victim, uint32 damage, CleanDamage } } - if (damagetype != NODAMAGE && damage && (!spellProto || !(spellProto->HasAttribute(SPELL_ATTR3_NO_PUSHBACK) || spellProto->HasAttribute(SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE)))) + if (damagetype != NODAMAGE && damage && (!spellProto || !(spellProto->HasAttribute(SPELL_ATTR3_TREAT_AS_PERIODIC) || spellProto->HasAttribute(SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE)))) { if (victim != attacker && victim->GetTypeId() == TYPEID_PLAYER) // does not support creature push_back { @@ -4699,7 +4699,7 @@ void Unit::RemoveArenaAuras() { AuraApplication const* aurApp = iter->second; Aura const* aura = aurApp->GetBase(); - if (!aura->GetSpellInfo()->HasAttribute(SPELL_ATTR4_UNK21) // don't remove stances, shadowform, pally/hunter auras + if (!aura->GetSpellInfo()->HasAttribute(SPELL_ATTR4_DONT_REMOVE_IN_ARENA) // don't remove stances, shadowform, pally/hunter auras && !aura->IsPassive() // don't remove passive auras && !aura->IsArea() // don't remove area auras, eg pet talents affecting owner && (aurApp->IsPositive() || IsPet() || !aura->GetSpellInfo()->HasAttribute(SPELL_ATTR3_DEATH_PERSISTENT))) // not negative death persistent auras @@ -15625,7 +15625,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u // Remove charge (aura can be removed by triggers) // xinef: take into account attribute6 of proc spell if (prepare && useCharges && takeCharges) - if (!procSpell || isVictim || !procSpell->HasAttribute(SPELL_ATTR6_DONT_CONSUME_CHARGES)) + if (!procSpell || isVictim || !procSpell->HasAttribute(SPELL_ATTR6_DONT_CONSUME_PROC_CHARGES)) i->aura->DropCharge(); i->aura->CallScriptAfterProcHandlers(aurApp, eventInfo); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 5c6ca3c7c..f18b474a4 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -270,290 +270,290 @@ const uint32 ItemQualityColors[MAX_ITEM_QUALITY] = enum SpellAttr0 { - SPELL_ATTR0_UNK0 = 0x00000001, // 0 - SPELL_ATTR0_REQ_AMMO = 0x00000002, // 1 on next ranged - SPELL_ATTR0_ON_NEXT_SWING = 0x00000004, // 2 - SPELL_ATTR0_IS_REPLENISHMENT = 0x00000008, // 3 not set in 3.0.3 - SPELL_ATTR0_ABILITY = 0x00000010, // 4 client puts 'ability' instead of 'spell' in game strings for these spells - SPELL_ATTR0_TRADESPELL = 0x00000020, // 5 trade spells (recipes), will be added by client to a sublist of profession spell - SPELL_ATTR0_PASSIVE = 0x00000040, // 6 Passive spell - SPELL_ATTR0_HIDDEN_CLIENTSIDE = 0x00000080, // 7 Spells with this attribute are not visible in spellbook or aura bar - SPELL_ATTR0_HIDE_IN_COMBAT_LOG = 0x00000100, // 8 This attribite controls whether spell appears in combat logs - SPELL_ATTR0_TARGET_MAINHAND_ITEM = 0x00000200, // 9 Client automatically selects item from mainhand slot as a cast target - SPELL_ATTR0_ON_NEXT_SWING_2 = 0x00000400, // 10 - SPELL_ATTR0_UNK11 = 0x00000800, // 11 - SPELL_ATTR0_DAYTIME_ONLY = 0x00001000, // 12 only useable at daytime, not set in 2.4.2 - SPELL_ATTR0_NIGHT_ONLY = 0x00002000, // 13 only useable at night, not set in 2.4.2 - SPELL_ATTR0_INDOORS_ONLY = 0x00004000, // 14 only useable indoors, not set in 2.4.2 - SPELL_ATTR0_OUTDOORS_ONLY = 0x00008000, // 15 Only useable outdoors. - SPELL_ATTR0_NOT_SHAPESHIFT = 0x00010000, // 16 Not while shapeshifted - SPELL_ATTR0_ONLY_STEALTHED = 0x00020000, // 17 Must be in stealth - SPELL_ATTR0_DONT_AFFECT_SHEATH_STATE = 0x00040000, // 18 client won't hide unit weapons in sheath on cast/channel - SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION = 0x00080000, // 19 spelldamage depends on caster level - SPELL_ATTR0_STOP_ATTACK_TARGET = 0x00100000, // 20 Stop attack after use this spell (and not begin attack if use) - SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK = 0x00200000, // 21 Cannot be dodged/parried/blocked - SPELL_ATTR0_CAST_TRACK_TARGET = 0x00400000, // 22 Client automatically forces player to face target when casting - SPELL_ATTR0_CASTABLE_WHILE_DEAD = 0x00800000, // 23 castable while dead? - SPELL_ATTR0_CASTABLE_WHILE_MOUNTED = 0x01000000, // 24 castable while mounted - SPELL_ATTR0_DISABLED_WHILE_ACTIVE = 0x02000000, // 25 Activate and start cooldown after aura fade or remove summoned creature or go - SPELL_ATTR0_NEGATIVE_1 = 0x04000000, // 26 Many negative spells have this attr - SPELL_ATTR0_CASTABLE_WHILE_SITTING = 0x08000000, // 27 castable while sitting - SPELL_ATTR0_CANT_USED_IN_COMBAT = 0x10000000, // 28 Cannot be used in combat - SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY = 0x20000000, // 29 unaffected by invulnerability (hmm possible not...) - SPELL_ATTR0_HEARTBEAT_RESIST_CHECK = 0x40000000, // 30 random chance the effect will end TODO: implement core support - SPELL_ATTR0_CANT_CANCEL = 0x80000000 // 31 positive aura can't be canceled + SPELL_ATTR0_UNK0 = 0x00000001, // TITLE Unknown attribute 0@Attr0 + SPELL_ATTR0_REQ_AMMO = 0x00000002, // TITLE Treat as ranged attack DESCRIPTION Use ammo, ranged attack range modifiers, ranged haste, etc. + SPELL_ATTR0_ON_NEXT_SWING = 0x00000004, // TITLE On next melee (type 1) DESCRIPTION Both "on next swing" attributes have identical handling in server & client + SPELL_ATTR0_IS_REPLENISHMENT = 0x00000008, // TITLE Replenishment (client only) + SPELL_ATTR0_ABILITY = 0x00000010, // TITLE Treat as ability DESCRIPTION Cannot be reflected, not affected by cast speed modifiers, etc. + SPELL_ATTR0_TRADESPELL = 0x00000020, // TITLE Trade skill recipe DESCRIPTION Displayed in recipe list, not affected by cast speed modifiers + SPELL_ATTR0_PASSIVE = 0x00000040, // TITLE Passive spell DESCRIPTION Spell is automatically cast on self by core + SPELL_ATTR0_HIDDEN_CLIENTSIDE = 0x00000080, // TITLE Hidden in UI (client only) DESCRIPTION Not visible in spellbook or aura bar + SPELL_ATTR0_HIDE_IN_COMBAT_LOG = 0x00000100, // TITLE Hidden in combat log (client only) DESCRIPTION Spell will not appear in combat logs + SPELL_ATTR0_TARGET_MAINHAND_ITEM = 0x00000200, // TITLE Auto-target mainhand item (client only) DESCRIPTION Client will automatically select main-hand item as cast target + SPELL_ATTR0_ON_NEXT_SWING_2 = 0x00000400, // TITLE On next melee (type 2) DESCRIPTION Both "on next swing" attributes have identical handling in server & client + SPELL_ATTR0_UNK11 = 0x00000800, // TITLE Unknown attribute 11@Attr0 + SPELL_ATTR0_DAYTIME_ONLY = 0x00001000, // TITLE Only usable during daytime (unused) + SPELL_ATTR0_NIGHT_ONLY = 0x00002000, // TITLE Only usable during nighttime (unused) + SPELL_ATTR0_INDOORS_ONLY = 0x00004000, // TITLE Only usable indoors + SPELL_ATTR0_OUTDOORS_ONLY = 0x00008000, // TITLE Only usable outdoors + SPELL_ATTR0_NOT_SHAPESHIFT = 0x00010000, // TITLE Not usable while shapeshifted + SPELL_ATTR0_ONLY_STEALTHED = 0x00020000, // TITLE Only usable in stealth + SPELL_ATTR0_DONT_AFFECT_SHEATH_STATE = 0x00040000, // TITLE Don't shealthe weapons (client only) + SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION = 0x00080000, // TITLE Scale with caster level DESCRIPTION For non-player casts, scale impact and power cost with caster's level + SPELL_ATTR0_STOP_ATTACK_TARGET = 0x00100000, // TITLE Stop attacking after cast DESCRIPTION After casting this, the current auto-attack will be interrupted + SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK = 0x00200000, // TITLE Prevent physical avoidance DESCRIPTION Spell cannot be dodged, parried or blocked + SPELL_ATTR0_CAST_TRACK_TARGET = 0x00400000, // TITLE Automatically face target during cast (client only) + SPELL_ATTR0_CASTABLE_WHILE_DEAD = 0x00800000, // TITLE Can be cast while dead DESCRIPTION Spells without this flag cannot be cast by dead units in non-triggered contexts + SPELL_ATTR0_CASTABLE_WHILE_MOUNTED = 0x01000000, // TITLE Can be cast while mounted + SPELL_ATTR0_DISABLED_WHILE_ACTIVE = 0x02000000, // TITLE Cooldown starts on expiry DESCRIPTION Spell is unusable while already active, and cooldown does not begin until the effects have worn off + SPELL_ATTR0_NEGATIVE_1 = 0x04000000, // TITLE Is negative spell DESCRIPTION Forces the spell to be treated as a negative spell + SPELL_ATTR0_CASTABLE_WHILE_SITTING = 0x08000000, // TITLE Can be cast while sitting + SPELL_ATTR0_CANT_USED_IN_COMBAT = 0x10000000, // TITLE Cannot be used in combat + SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY = 0x20000000, // TITLE Pierce invulnerability DESCRIPTION Allows spell to pierce invulnerability, unless the invulnerability spell also has this attribute + SPELL_ATTR0_HEARTBEAT_RESIST_CHECK = 0x40000000, // TITLE Periodic resistance checks DESCRIPTION Periodically re-rolls against resistance to potentially expire aura early + SPELL_ATTR0_CANT_CANCEL = 0x80000000 // TITLE Aura cannot be cancelled DESCRIPTION Prevents the player from voluntarily canceling a positive aura }; enum SpellAttr1 { - SPELL_ATTR1_DISMISS_PET = 0x00000001, // 0 for spells without this flag client doesn't allow to summon pet if caster has a pet - SPELL_ATTR1_DRAIN_ALL_POWER = 0x00000002, // 1 use all power (Only paladin Lay of Hands and Bunyanize) - SPELL_ATTR1_CHANNELED_1 = 0x00000004, // 2 clientside checked? cancelable? - SPELL_ATTR1_CANT_BE_REDIRECTED = 0x00000008, // 3 - SPELL_ATTR1_UNK4 = 0x00000010, // 4 stealth and whirlwind - SPELL_ATTR1_NOT_BREAK_STEALTH = 0x00000020, // 5 Not break stealth - SPELL_ATTR1_CHANNELED_2 = 0x00000040, // 6 - SPELL_ATTR1_CANT_BE_REFLECTED = 0x00000080, // 7 - SPELL_ATTR1_CANT_TARGET_IN_COMBAT = 0x00000100, // 8 can target only out of combat units - SPELL_ATTR1_MELEE_COMBAT_START = 0x00000200, // 9 player starts melee combat after this spell is cast - SPELL_ATTR1_NO_THREAT = 0x00000400, // 10 no generates threat on cast 100% (old NO_INITIAL_AGGRO) - SPELL_ATTR1_UNK11 = 0x00000800, // 11 aura - SPELL_ATTR1_IS_PICKPOCKET = 0x00001000, // 12 Pickpocket - SPELL_ATTR1_FARSIGHT = 0x00002000, // 13 Client removes farsight on aura loss - SPELL_ATTR1_CHANNEL_TRACK_TARGET = 0x00004000, // 14 Client automatically forces player to face target when channeling - SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY = 0x00008000, // 15 remove auras on immunity - SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE = 0x00010000, // 16 on immuniy - SPELL_ATTR1_UNAUTOCASTABLE_BY_PET = 0x00020000, // 17 - SPELL_ATTR1_UNK18 = 0x00040000, // 18 stun, polymorph, daze, hex - SPELL_ATTR1_CANT_TARGET_SELF = 0x00080000, // 19 - SPELL_ATTR1_REQ_COMBO_POINTS1 = 0x00100000, // 20 Req combo points on target - SPELL_ATTR1_UNK21 = 0x00200000, // 21 - SPELL_ATTR1_REQ_COMBO_POINTS2 = 0x00400000, // 22 Req combo points on target - SPELL_ATTR1_UNK23 = 0x00800000, // 23 - SPELL_ATTR1_IS_FISHING = 0x01000000, // 24 only fishing spells - SPELL_ATTR1_UNK25 = 0x02000000, // 25 - SPELL_ATTR1_UNK26 = 0x04000000, // 26 works correctly with [target=focus] and [target=mouseover] macros? - SPELL_ATTR1_UNK27 = 0x08000000, // 27 melee spell? - SPELL_ATTR1_DONT_DISPLAY_IN_AURA_BAR = 0x10000000, // 28 client doesn't display these spells in aura bar - SPELL_ATTR1_CHANNEL_DISPLAY_SPELL_NAME = 0x20000000, // 29 spell name is displayed in cast bar instead of 'channeling' text - SPELL_ATTR1_ENABLE_AT_DODGE = 0x40000000, // 30 Overpower - SPELL_ATTR1_UNK31 = 0x80000000 // 31 + SPELL_ATTR1_DISMISS_PET = 0x00000001, // TITLE Dismiss Pet on cast DESCRIPTION Without this attribute, summoning spells will fail if caster already has a pet + SPELL_ATTR1_DRAIN_ALL_POWER = 0x00000002, // TITLE Drain all power DESCRIPTION Ignores listed power cost and drains entire pool instead + SPELL_ATTR1_CHANNELED_1 = 0x00000004, // TITLE Channeled (type 1) DESCRIPTION Both "channeled" attributes have identical handling in server & client + SPELL_ATTR1_CANT_BE_REDIRECTED = 0x00000008, // TITLE Ignore redirection effects DESCRIPTION Spell will not be attracted by SPELL_MAGNET auras (Grounding Totem) + SPELL_ATTR1_UNK4 = 0x00000010, // TITLE Unknown attribute 4@Attr1 DESCRIPTION stealth and whirlwind + SPELL_ATTR1_NOT_BREAK_STEALTH = 0x00000020, // TITLE Does not break stealth + SPELL_ATTR1_CHANNELED_2 = 0x00000040, // TITLE Channeled (type 2) DESCRIPTION Both "channeled" attributes have identical handling in server & client + SPELL_ATTR1_CANT_BE_REFLECTED = 0x00000080, // TITLE Ignore reflection effects DESCRIPTION Spell will pierce through Spell Reflection and similar + SPELL_ATTR1_CANT_TARGET_IN_COMBAT = 0x00000100, // TITLE Target cannot be in combat + SPELL_ATTR1_MELEE_COMBAT_START = 0x00000200, // TITLE Starts auto-attack (client only) DESCRIPTION Caster will begin auto-attacking the target on cast + SPELL_ATTR1_NO_THREAT = 0x00000400, // TITLE Does not generate threat DESCRIPTION Also does not cause target to engage + SPELL_ATTR1_DONT_REFRESH_DURATION_ON_RECAST = 0x00000800, // TITLE Aura will not refresh its duration when recast + SPELL_ATTR1_IS_PICKPOCKET = 0x00001000, // TITLE Pickpocket (client only) + SPELL_ATTR1_FARSIGHT = 0x00002000, // TITLE Farsight aura (client only) + SPELL_ATTR1_CHANNEL_TRACK_TARGET = 0x00004000, // TITLE Track target while channeling DESCRIPTION While channeling, adjust facing to face target + SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY = 0x00008000, // TITLE Immunity cancels preapplied auras DESCRIPTION For immunity spells, cancel all auras that this spell would make you immune to when the spell is applied + SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE = 0x00010000, // TITLE Unaffected by school immunities DESCRIPTION Will not pierce Divine Shield, Ice Block and other full invulnerabilities + SPELL_ATTR1_UNAUTOCASTABLE_BY_PET = 0x00020000, // TITLE Cannot be autocast by pet + SPELL_ATTR1_UNK18 = 0x00040000, // TITLE Unknown attribute 18@Attr1 DESCRIPTION Stun, Polymorph, Daze, Hex - CC? + SPELL_ATTR1_CANT_TARGET_SELF = 0x00080000, // TITLE Cannot be self-cast + SPELL_ATTR1_REQ_COMBO_POINTS1 = 0x00100000, // TITLE Requires combo points (type 1) + SPELL_ATTR1_UNK21 = 0x00200000, // TITLE Unknown attribute 21@Attr1 + SPELL_ATTR1_REQ_COMBO_POINTS2 = 0x00400000, // TITLE Requires combo points (type 2) + SPELL_ATTR1_UNK23 = 0x00800000, // TITLE Unknwon attribute 23@Attr1 + SPELL_ATTR1_IS_FISHING = 0x01000000, // TITLE Fishing (client only) + SPELL_ATTR1_UNK25 = 0x02000000, // TITLE Unknown attribute 25@Attr1 + SPELL_ATTR1_UNK26 = 0x04000000, // TITLE Unknown attribute 26@Attr1 DESCRIPTION Related to [target=focus] and [target=mouseover] macros? + SPELL_ATTR1_UNK27 = 0x08000000, // TITLE Unknown attribute 27@Attr1 DESCRIPTION Melee spell? + SPELL_ATTR1_DONT_DISPLAY_IN_AURA_BAR = 0x10000000, // TITLE Hide in aura bar (client only) + SPELL_ATTR1_CHANNEL_DISPLAY_SPELL_NAME = 0x20000000, // TITLE Show spell name during channel (client only) + SPELL_ATTR1_ENABLE_AT_DODGE = 0x40000000, // TITLE Enable at dodge + SPELL_ATTR1_UNK31 = 0x80000000 // TITLE Unknown attribute 31@Attr1 }; enum SpellAttr2 { - SPELL_ATTR2_CAN_TARGET_DEAD = 0x00000001, // 0 can target dead unit or corpse - SPELL_ATTR2_UNK1 = 0x00000002, // 1 vanish, shadowform, Ghost Wolf and other - SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS = 0x00000004, // 2 26368 4.0.1 dbc change - SPELL_ATTR2_UNK3 = 0x00000008, // 3 - SPELL_ATTR2_DISPLAY_IN_STANCE_BAR = 0x00000010, // 4 client displays icon in stance bar when learned, even if not shapeshift - SPELL_ATTR2_AUTOREPEAT_FLAG = 0x00000020, // 5 - SPELL_ATTR2_CANT_TARGET_TAPPED = 0x00000040, // 6 target must be tapped by caster - SPELL_ATTR2_UNK7 = 0x00000080, // 7 - SPELL_ATTR2_UNK8 = 0x00000100, // 8 not set in 3.0.3 - SPELL_ATTR2_UNK9 = 0x00000200, // 9 - SPELL_ATTR2_UNK10 = 0x00000400, // 10 related to tame - SPELL_ATTR2_HEALTH_FUNNEL = 0x00000800, // 11 - SPELL_ATTR2_UNK12 = 0x00001000, // 12 Cleave, Heart Strike, Maul, Sunder Armor, Swipe - SPELL_ATTR2_PRESERVE_ENCHANT_IN_ARENA = 0x00002000, // 13 Items enchanted by spells with this flag preserve the enchant to arenas - SPELL_ATTR2_UNK14 = 0x00004000, // 14 - SPELL_ATTR2_UNK15 = 0x00008000, // 15 not set in 3.0.3 - SPELL_ATTR2_TAME_BEAST = 0x00010000, // 16 - SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS = 0x00020000, // 17 don't reset timers for melee autoattacks (swings) or ranged autoattacks (autoshoots) - SPELL_ATTR2_REQ_DEAD_PET = 0x00040000, // 18 Only Revive pet and Heart of the Pheonix - SPELL_ATTR2_NOT_NEED_SHAPESHIFT = 0x00080000, // 19 does not necessarly need shapeshift - SPELL_ATTR2_UNK20 = 0x00100000, // 20 - SPELL_ATTR2_DAMAGE_REDUCED_SHIELD = 0x00200000, // 21 for ice blocks, pala immunity buffs, priest absorb shields, but used also for other spells -> not sure! - SPELL_ATTR2_UNK22 = 0x00400000, // 22 Ambush, Backstab, Cheap Shot, Death Grip, Garrote, Judgements, Mutilate, Pounce, Ravage, Shiv, Shred - SPELL_ATTR2_IS_ARCANE_CONCENTRATION = 0x00800000, // 23 Only mage Arcane Concentration have this flag - SPELL_ATTR2_UNK24 = 0x01000000, // 24 - SPELL_ATTR2_UNK25 = 0x02000000, // 25 - SPELL_ATTR2_UNK26 = 0x04000000, // 26 unaffected by school immunity - SPELL_ATTR2_UNK27 = 0x08000000, // 27 - SPELL_ATTR2_UNK28 = 0x10000000, // 28 - SPELL_ATTR2_CANT_CRIT = 0x20000000, // 29 Spell can't crit - SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC = 0x40000000, // 30 spell can trigger even if triggered - SPELL_ATTR2_FOOD_BUFF = 0x80000000 // 31 Food or Drink Buff (like Well Fed) + SPELL_ATTR2_CAN_TARGET_DEAD = 0x00000001, // TITLE Can target dead players or corpses + SPELL_ATTR2_UNK1 = 0x00000002, // TITLE Unknown attribute 1@Attr2 DESCRIPTION vanish, shadowform, Ghost Wolf and other + SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS = 0x00000004, // TITLE Ignore Line of Sight + SPELL_ATTR2_UNK3 = 0x00000008, // TITLE Ignore aura scaling + SPELL_ATTR2_DISPLAY_IN_STANCE_BAR = 0x00000010, // TITLE Show in stance bar (client only) + SPELL_ATTR2_AUTOREPEAT_FLAG = 0x00000020, // TITLE Ranged auto-attack spell + SPELL_ATTR2_CANT_TARGET_TAPPED = 0x00000040, // TITLE Cannot target others' tapped units DESCRIPTION Can only target untapped units, or those tapped by caster + SPELL_ATTR2_UNK7 = 0x00000080, // TITLE Unknown attribute 7@Attr2 + SPELL_ATTR2_UNK8 = 0x00000100, // TITLE Unknown attribute 8@Attr2 DESCRIPTION not set in 3.0.3 + SPELL_ATTR2_UNK9 = 0x00000200, // TITLE Unknown attribute 9@Attr2 + SPELL_ATTR2_UNK10 = 0x00000400, // TITLE Unknown attribute 10@Attr2 DESCRIPTION Related to taming? + SPELL_ATTR2_HEALTH_FUNNEL = 0x00000800, // TITLE Health Funnel + SPELL_ATTR2_UNK12 = 0x00001000, // TITLE Unknown attribute 12@Attr2 DESCRIPTION Cleave, Heart Strike, Maul, Sunder Armor, Swipe + SPELL_ATTR2_PRESERVE_ENCHANT_IN_ARENA = 0x00002000, // TITLE Enchant persists when entering arena + SPELL_ATTR2_UNK14 = 0x00004000, // TITLE Unknown attribute 14@Attr2 + SPELL_ATTR2_UNK15 = 0x00008000, // TITLE Unknown attribute 15@Attr2 DESCRIPTION not set in 3.0.3 + SPELL_ATTR2_TAME_BEAST = 0x00010000, // TITLE Tame Beast + SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS = 0x00020000, // TITLE Don't reset swing timer DESCRIPTION Does not reset melee/ranged autoattack timer on cast + SPELL_ATTR2_REQ_DEAD_PET = 0x00040000, // TITLE Requires dead pet + SPELL_ATTR2_NOT_NEED_SHAPESHIFT = 0x00080000, // TITLE Also allow outside shapeshift DESCRIPTION Even if Stances are nonzero, allow spell to be cast outside of shapeshift (though not in a different shapeshift) + SPELL_ATTR2_UNK20 = 0x00100000, // TITLE Unknown attribute 20@Attr2 + SPELL_ATTR2_DAMAGE_REDUCED_SHIELD = 0x00200000, // TITLE Damage reduction ability DESCRIPTION Causes BG flags to be dropped if combined with ATTR1_DISPEL_AURAS_ON_IMMUNITY + SPELL_ATTR2_UNK22 = 0x00400000, // TITLE Unknown attribute 22@Attr2 DESCRIPTION Ambush, Backstab, Cheap Shot, Death Grip, Garrote, Judgements, Mutilate, Pounce, Ravage, Shiv, Shred + SPELL_ATTR2_IS_ARCANE_CONCENTRATION = 0x00800000, // TITLE Arcane Concentration + SPELL_ATTR2_UNK24 = 0x01000000, // TITLE Unknown attribute 24@Attr2 + SPELL_ATTR2_UNK25 = 0x02000000, // TITLE Unknown attribute 25@Attr2 + SPELL_ATTR2_UNAFFECTED_BY_AURA_SCHOOL_IMMUNE = 0x04000000, // TITLE Pierce aura application immunities DESCRIPTION Allow aura to be applied despite target being immune to new aura applications + SPELL_ATTR2_UNK27 = 0x08000000, // TITLE Unknown attribute 27@Attr2 + SPELL_ATTR2_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr2 + SPELL_ATTR2_CANT_CRIT = 0x20000000, // TITLE Cannot critically strike + SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC = 0x40000000, // TITLE Allow triggered spell to trigger (type 1) DESCRIPTION Without this attribute, any triggered spell will be unable to trigger other auras' procs + SPELL_ATTR2_FOOD_BUFF = 0x80000000 // TITLE Food buff (client only) }; enum SpellAttr3 { - SPELL_ATTR3_UNK0 = 0x00000001, // 0 - SPELL_ATTR3_UNK1 = 0x00000002, // 1 - SPELL_ATTR3_UNK2 = 0x00000004, // 2 - SPELL_ATTR3_BLOCKABLE_SPELL = 0x00000008, // 3 Only dmg class melee in 3.1.3 - SPELL_ATTR3_IGNORE_RESURRECTION_TIMER = 0x00000010, // 4 you don't have to wait to be resurrected with these spells - SPELL_ATTR3_UNK5 = 0x00000020, // 5 - SPELL_ATTR3_UNK6 = 0x00000040, // 6 - SPELL_ATTR3_STACK_FOR_DIFF_CASTERS = 0x00000080, // 7 separate stack for every caster - SPELL_ATTR3_ONLY_TARGET_PLAYERS = 0x00000100, // 8 can only target players - SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2 = 0x00000200, // 9 triggered from effect? - SPELL_ATTR3_MAIN_HAND = 0x00000400, // 10 Main hand weapon required - SPELL_ATTR3_BATTLEGROUND = 0x00000800, // 11 Can casted only on battleground - SPELL_ATTR3_ONLY_TARGET_GHOSTS = 0x00001000, // 12 - SPELL_ATTR3_DONT_DISPLAY_CHANNEL_BAR = 0x00002000, // 13 Clientside attribute - will not display channeling bar - SPELL_ATTR3_IS_HONORLESS_TARGET = 0x00004000, // 14 "Honorless Target" only this spells have this flag - SPELL_ATTR3_UNK15 = 0x00008000, // 15 Auto Shoot, Shoot, Throw, - this is autoshot flag - SPELL_ATTR3_CANT_TRIGGER_PROC = 0x00010000, // 16 confirmed with many patchnotes - SPELL_ATTR3_NO_INITIAL_AGGRO = 0x00020000, // 17 Soothe Animal, 39758, Mind Soothe - SPELL_ATTR3_IGNORE_HIT_RESULT = 0x00040000, // 18 Spell should always hit its target - SPELL_ATTR3_DISABLE_PROC = 0x00080000, // 19 during aura proc no spells can trigger (20178, 20375) - SPELL_ATTR3_DEATH_PERSISTENT = 0x00100000, // 20 Death persistent spells - SPELL_ATTR3_UNK21 = 0x00200000, // 21 unused - SPELL_ATTR3_REQ_WAND = 0x00400000, // 22 Req wand - SPELL_ATTR3_UNK23 = 0x00800000, // 23 - SPELL_ATTR3_REQ_OFFHAND = 0x01000000, // 24 Req offhand weapon - SPELL_ATTR3_NO_PUSHBACK = 0x02000000, // 25 no cause spell pushback ? pussywizard - SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED = 0x04000000, // 26 auras with this attribute can proc from triggered spell casts with SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2 (67736 + 52999) - SPELL_ATTR3_DRAIN_SOUL = 0x08000000, // 27 only drain soul has this flag - SPELL_ATTR3_UNK28 = 0x10000000, // 28 - SPELL_ATTR3_NO_DONE_BONUS = 0x20000000, // 29 Ignore caster spellpower and done damage mods? client doesn't apply spellmods for those spells - SPELL_ATTR3_DONT_DISPLAY_RANGE = 0x40000000, // 30 client doesn't display range in tooltip for those spells - SPELL_ATTR3_UNK31 = 0x80000000 // 31 + SPELL_ATTR3_UNK0 = 0x00000001, // TITLE Unknown attribute 0@Attr3 + SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK = 0x00000002, // 1 Ignores subclass mask check when checking proc + SPELL_ATTR3_UNK2 = 0x00000004, // TITLE Unknown attribute 2@Attr3 + SPELL_ATTR3_BLOCKABLE_SPELL = 0x00000008, // TITLE Blockable spell + SPELL_ATTR3_IGNORE_RESURRECTION_TIMER = 0x00000010, // TITLE Ignore resurrection timer + SPELL_ATTR3_UNK5 = 0x00000020, // TITLE Unknown attribute 5@Attr3 + SPELL_ATTR3_UNK6 = 0x00000040, // TITLE Unknown attribute 6@Attr3 + SPELL_ATTR3_STACK_FOR_DIFF_CASTERS = 0x00000080, // TITLE Stack separately for each caster + SPELL_ATTR3_ONLY_TARGET_PLAYERS = 0x00000100, // TITLE Can only target players + SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2 = 0x00000200, // TITLE Allow triggered spell to trigger (type 2) DESCRIPTION Without this attribute, any triggered spell will be unable to trigger other auras' procs + SPELL_ATTR3_MAIN_HAND = 0x00000400, // TITLE Require main hand weapon + SPELL_ATTR3_BATTLEGROUND = 0x00000800, // TITLE Can only be cast in battleground + SPELL_ATTR3_ONLY_TARGET_GHOSTS = 0x00001000, // TITLE Can only target ghost players + SPELL_ATTR3_DONT_DISPLAY_CHANNEL_BAR = 0x00002000, // TITLE Do not display channel bar (client only) + SPELL_ATTR3_IS_HONORLESS_TARGET = 0x00004000, // TITLE Honorless Target + SPELL_ATTR3_UNK15 = 0x00008000, // TITLE Unknown attribute 15@Attr3 DESCRIPTION Auto Shoot, Shoot, Throw - ranged normal attack attribute? + SPELL_ATTR3_CANT_TRIGGER_PROC = 0x00010000, // TITLE Cannot trigger procs + SPELL_ATTR3_NO_INITIAL_AGGRO = 0x00020000, // TITLE No initial aggro + SPELL_ATTR3_IGNORE_HIT_RESULT = 0x00040000, // TITLE Ignore hit result DESCRIPTION Spell cannot miss, or be dodged/parried/blocked + SPELL_ATTR3_DISABLE_PROC = 0x00080000, // TITLE Cannot trigger spells during aura proc + SPELL_ATTR3_DEATH_PERSISTENT = 0x00100000, // TITLE Persists through death + SPELL_ATTR3_UNK21 = 0x00200000, // TITLE Unknown attribute 21@Attr3 + SPELL_ATTR3_REQ_WAND = 0x00400000, // TITLE Requires equipped Wand + SPELL_ATTR3_UNK23 = 0x00800000, // TITLE Unknown attribute 23@Attr3 + SPELL_ATTR3_REQ_OFFHAND = 0x01000000, // TITLE Requires offhand weapon + SPELL_ATTR3_TREAT_AS_PERIODIC = 0x02000000, // TITLE Treat as periodic effect + SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED = 0x04000000, // TITLE Can trigger from triggered spells + SPELL_ATTR3_DRAIN_SOUL = 0x08000000, // TITLE Drain Soul + SPELL_ATTR3_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr3 + SPELL_ATTR3_NO_DONE_BONUS = 0x20000000, // TITLE Damage dealt is unaffected by modifiers + SPELL_ATTR3_DONT_DISPLAY_RANGE = 0x40000000, // TITLE Do not show range in tooltip (client only) + SPELL_ATTR3_UNK31 = 0x80000000 // TITLE Unknown attribute 31@Attr3 }; enum SpellAttr4 { - SPELL_ATTR4_IGNORE_RESISTANCES = 0x00000001, // 0 spells with this attribute will completely ignore the target's resistance (these spells can't be resisted) - SPELL_ATTR4_PROC_ONLY_ON_CASTER = 0x00000002, // 1 proc only on effects with TARGET_UNIT_CASTER? - SPELL_ATTR4_FADES_WHILE_LOGGED_OUT = 0x00000004, // 2 xinef: duration is removed from aura while player is logged out - SPELL_ATTR4_UNK3 = 0x00000008, // 3 - SPELL_ATTR4_UNK4 = 0x00000010, // 4 This will no longer cause guards to attack on use?? - SPELL_ATTR4_UNK5 = 0x00000020, // 5 - SPELL_ATTR4_NOT_STEALABLE = 0x00000040, // 6 although such auras might be dispellable, they cannot be stolen - SPELL_ATTR4_CAN_CAST_WHILE_CASTING = 0x00000080, // 7 Can be cast while another cast is in progress - see CanCastWhileCasting(SpellRec const*,CGUnit_C *,int &) - SPELL_ATTR4_FIXED_DAMAGE = 0x00000100, // 8 ignores taken percent damage mods? - SPELL_ATTR4_TRIGGER_ACTIVATE = 0x00000200, // 9 initially disabled / trigger activate from event (Execute, Riposte, Deep Freeze end other) - SPELL_ATTR4_SPELL_VS_EXTEND_COST = 0x00000400, // 10 Rogue Shiv have this flag - SPELL_ATTR4_UNK11 = 0x00000800, // 11 - SPELL_ATTR4_UNK12 = 0x00001000, // 12 - SPELL_ATTR4_UNK13 = 0x00002000, // 13 - SPELL_ATTR4_DAMAGE_DOESNT_BREAK_AURAS = 0x00004000, // 14 doesn't break auras by damage from these spells - SPELL_ATTR4_UNK15 = 0x00008000, // 15 - SPELL_ATTR4_NOT_USABLE_IN_ARENA = 0x00010000, // 16 - SPELL_ATTR4_USABLE_IN_ARENA = 0x00020000, // 17 - SPELL_ATTR4_AREA_TARGET_CHAIN = 0x00040000, // 18 (NYI)hits area targets one after another instead of all at once - SPELL_ATTR4_UNK19 = 0x00080000, // 19 proc dalayed, after damage or don't proc on absorb? - SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER = 0x00100000, // 20 supersedes message "More powerful spell applied" for self casts. - SPELL_ATTR4_UNK21 = 0x00200000, // 21 Pally aura, dk presence, dudu form, warrior stance, shadowform, hunter track - SPELL_ATTR4_UNK22 = 0x00400000, // 22 Seal of Command (42058,57770) and Gymer's Smash 55426 - SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS = 0x00800000, // 23 Xinef: spells with this flag should not trigger item spells / enchants (mostly in conjunction with SPELL_ATTR0_STOP_ATTACK_TARGET) - SPELL_ATTR4_UNK24 = 0x01000000, // 24 some shoot spell - SPELL_ATTR4_IS_PET_SCALING = 0x02000000, // 25 pet scaling auras - SPELL_ATTR4_CAST_ONLY_IN_OUTLAND = 0x04000000, // 26 Can only be used in Outland. - SPELL_ATTR4_UNK27 = 0x08000000, // 27 - SPELL_ATTR4_UNK28 = 0x10000000, // 28 Aimed Shot - SPELL_ATTR4_UNK29 = 0x20000000, // 29 - SPELL_ATTR4_UNK30 = 0x40000000, // 30 - SPELL_ATTR4_UNK31 = 0x80000000 // 31 Polymorph (chicken) 228 and Sonic Boom (38052,38488) + SPELL_ATTR4_IGNORE_RESISTANCES = 0x00000001, // TITLE Cannot be resisted + SPELL_ATTR4_PROC_ONLY_ON_CASTER = 0x00000002, // TITLE Only proc on self-cast + SPELL_ATTR4_FADES_WHILE_LOGGED_OUT = 0x00000004, // TITLE Buff expires while offline DESCRIPTION Debuffs (except Resurrection Sickness) will automatically do this + SPELL_ATTR4_UNK3 = 0x00000008, // TITLE Unknown attribute 3@Attr4 + SPELL_ATTR4_UNK4 = 0x00000010, // TITLE Treat as delayed spell DESCRIPTION This will no longer cause guards to attack on use?? + SPELL_ATTR4_UNK5 = 0x00000020, // TITLE Unknown attribute 5@Attr4 + SPELL_ATTR4_NOT_STEALABLE = 0x00000040, // TITLE Aura cannot be stolen + SPELL_ATTR4_CAN_CAST_WHILE_CASTING = 0x00000080, // TITLE Can be cast while casting DESCRIPTION Ignores already in-progress cast and still casts + SPELL_ATTR4_FIXED_DAMAGE = 0x00000100, // TITLE Deals fixed damage + SPELL_ATTR4_TRIGGER_ACTIVATE = 0x00000200, // TITLE Spell is initially disabled (client only) + SPELL_ATTR4_SPELL_VS_EXTEND_COST = 0x00000400, // TITLE Attack speed modifies cost DESCRIPTION Adds 10 to power cost for each 1s of weapon speed + SPELL_ATTR4_UNK11 = 0x00000800, // TITLE Unknown attribute 11@Attr4 + SPELL_ATTR4_UNK12 = 0x00001000, // TITLE Unknown attribute 12@Attr4 + SPELL_ATTR4_UNK13 = 0x00002000, // TITLE Unknown attribute 13@Attr4 + SPELL_ATTR4_DAMAGE_DOESNT_BREAK_AURAS = 0x00004000, // TITLE Damage does not break auras + SPELL_ATTR4_UNK15 = 0x00008000, // TITLE Unknown attribute 15@Attr4 + SPELL_ATTR4_NOT_USABLE_IN_ARENA = 0x00010000, // TITLE Not usable in arena DESCRIPTION Makes spell unusable despite CD <= 10min + SPELL_ATTR4_USABLE_IN_ARENA = 0x00020000, // TITLE Usable in arena DESCRIPTION Makes spell usable despite CD > 10min + SPELL_ATTR4_AREA_TARGET_CHAIN = 0x00040000, // TITLE Chain area targets DESCRIPTION [NYI] Hits area targets over time instead of all at once + SPELL_ATTR4_UNK19 = 0x00080000, // TITLE Unknown attribute 19@Attr4 DESCRIPTION proc dalayed, after damage or don't proc on absorb? + SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER = 0x00100000, // TITLE Allow self-cast to override stronger aura (client only) + SPELL_ATTR4_DONT_REMOVE_IN_ARENA = 0x00200000, // TITLE Keep when entering arena + SPELL_ATTR4_UNK22 = 0x00400000, // TITLE Unknown attribute 22@Attr4 DESCRIPTION Seal of Command (42058,57770) and Gymer's Smash 55426 + SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS = 0x00800000, // TITLE Cannot trigger item spells + SPELL_ATTR4_UNK24 = 0x01000000, // TITLE Unknown attribute 24@Attr4 DESCRIPTION Shoot-type spell? + SPELL_ATTR4_IS_PET_SCALING = 0x02000000, // TITLE Pet Scaling aura + SPELL_ATTR4_CAST_ONLY_IN_OUTLAND = 0x04000000, // TITLE Only in Outland/Northrend + SPELL_ATTR4_INHERIT_CRIT_FROM_AURA = 0x08000000, // TITLE Inherit critical chance from triggering aura + SPELL_ATTR4_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr4 DESCRIPTION Aimed Shot + SPELL_ATTR4_UNK29 = 0x20000000, // TITLE Unknown attribute 29@Attr4 + SPELL_ATTR4_UNK30 = 0x40000000, // TITLE Unknown attribute 30@Attr4 + SPELL_ATTR4_UNK31 = 0x80000000 // TITLE Unknown attribute 31@Attr4 DESCRIPTION Polymorph (chicken) 228 and Sonic Boom (38052,38488) }; enum SpellAttr5 { - SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING = 0x00000001, // 0 - SPELL_ATTR5_NO_REAGENT_WHILE_PREP = 0x00000002, // 1 not need reagents if UNIT_FLAG_PREPARATION - SPELL_ATTR5_REMOVE_ON_ARENA_ENTER = 0x00000004, // 2 xinef: remove this aura on arena enter - SPELL_ATTR5_USABLE_WHILE_STUNNED = 0x00000008, // 3 usable while stunned - SPELL_ATTR5_UNK4 = 0x00000010, // 4 - SPELL_ATTR5_SINGLE_TARGET_SPELL = 0x00000020, // 5 Only one target can be apply at a time - SPELL_ATTR5_UNK6 = 0x00000040, // 6 - SPELL_ATTR5_UNK7 = 0x00000080, // 7 - SPELL_ATTR5_UNK8 = 0x00000100, // 8 - SPELL_ATTR5_START_PERIODIC_AT_APPLY = 0x00000200, // 9 begin periodic tick at aura apply - SPELL_ATTR5_HIDE_DURATION = 0x00000400, // 10 do not send duration to client - SPELL_ATTR5_ALLOW_TARGET_OF_TARGET_AS_TARGET = 0x00000800, // 11 (NYI) uses target's target as target if original target not valid (intervene for example) - SPELL_ATTR5_UNK12 = 0x00001000, // 12 Cleave related? - SPELL_ATTR5_HASTE_AFFECT_DURATION = 0x00002000, // 13 haste effects decrease duration of this - SPELL_ATTR5_UNK14 = 0x00004000, // 14 - SPELL_ATTR5_UNK15 = 0x00008000, // 15 Inflits on multiple targets? - SPELL_ATTR5_SPECIAL_ITEM_CLASS_CHECK = 0x00010000, // 16 this allows spells with EquippedItemClass to affect spells from other items if the required item is equipped - SPELL_ATTR5_USABLE_WHILE_FEARED = 0x00020000, // 17 usable while feared - SPELL_ATTR5_USABLE_WHILE_CONFUSED = 0x00040000, // 18 usable while confused - SPELL_ATTR5_DONT_TURN_DURING_CAST = 0x00080000, // 19 Blocks caster's turning when casting (client does not automatically turn caster's model to face UNIT_FIELD_TARGET) - SPELL_ATTR5_UNK20 = 0x00100000, // 20 - SPELL_ATTR5_UNK21 = 0x00200000, // 21 - SPELL_ATTR5_UNK22 = 0x00400000, // 22 - SPELL_ATTR5_UNK23 = 0x00800000, // 23 - SPELL_ATTR5_UNK24 = 0x01000000, // 24 - SPELL_ATTR5_UNK25 = 0x02000000, // 25 - SPELL_ATTR5_SKIP_CHECKCAST_LOS_CHECK = 0x04000000, // 26 pussywizard - SPELL_ATTR5_DONT_SHOW_AURA_IF_SELF_CAST = 0x08000000, // 27 Auras with this attribute are not visible on units that are the caster - SPELL_ATTR5_DONT_SHOW_AURA_IF_NOT_SELF_CAST = 0x10000000, // 28 Auras with this attribute are not visible on units that are not the caster - SPELL_ATTR5_UNK29 = 0x20000000, // 29 - SPELL_ATTR5_UNK30 = 0x40000000, // 30 - SPELL_ATTR5_UNK31 = 0x80000000 // 31 Forces all nearby enemies to focus attacks caster + SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING = 0x00000001, // TITLE Can be channeled while moving + SPELL_ATTR5_NO_REAGENT_WHILE_PREP = 0x00000002, // TITLE No reagents during arena preparation + SPELL_ATTR5_REMOVE_ON_ARENA_ENTER = 0x00000004, // TITLE Remove when entering arena DESCRIPTION Force this aura to be removed on entering arena, regardless of other properties + SPELL_ATTR5_USABLE_WHILE_STUNNED = 0x00000008, // TITLE Usable while stunned + SPELL_ATTR5_UNK4 = 0x00000010, // TITLE Unknown attribute 4@Attr5 + SPELL_ATTR5_SINGLE_TARGET_SPELL = 0x00000020, // TITLE Single-target aura DESCRIPTION Remove previous application to another unit if applied + SPELL_ATTR5_UNK6 = 0x00000040, // TITLE Unknown attribute 6@Attr5 + SPELL_ATTR5_UNK7 = 0x00000080, // TITLE Unknown attribute 7@Attr5 + SPELL_ATTR5_CANT_TARGET_PLAYER_CONTROLLED = 0x00000100, // TITLE Cannot target player controlled units but can target players + SPELL_ATTR5_START_PERIODIC_AT_APPLY = 0x00000200, // TITLE Immediately do periodic tick on apply + SPELL_ATTR5_HIDE_DURATION = 0x00000400, // TITLE Do not send aura duration to client + SPELL_ATTR5_ALLOW_TARGET_OF_TARGET_AS_TARGET = 0x00000800, // TITLE Auto-target target of target (client only) + SPELL_ATTR5_UNK12 = 0x00001000, // TITLE Unknown attribute 12@Attr5 DESCRIPTION Cleave related? + SPELL_ATTR5_HASTE_AFFECT_DURATION = 0x00002000, // TITLE Duration scales with Haste Rating + SPELL_ATTR5_NOT_USABLE_WHILE_CHARMED = 0x00004000, // TITLE Charmed units cannot cast this spell + SPELL_ATTR5_UNK15 = 0x00008000, // TITLE Unknown attribute 15@Attr5 DESCRIPTION Related to multi-target spells? + SPELL_ATTR5_SPECIAL_ITEM_CLASS_CHECK = 0x00010000, // TITLE DESCRIPTION this allows spells with EquippedItemClass to affect spells from other items if the required item is equipped + SPELL_ATTR5_USABLE_WHILE_FEARED = 0x00020000, // TITLE Usable while feared + SPELL_ATTR5_USABLE_WHILE_CONFUSED = 0x00040000, // TITLE Usable while confused + SPELL_ATTR5_DONT_TURN_DURING_CAST = 0x00080000, // TITLE Do not auto-turn while casting + SPELL_ATTR5_UNK20 = 0x00100000, // TITLE Unknown attribute 20@Attr5 + SPELL_ATTR5_UNK21 = 0x00200000, // TITLE Unknown attribute 21@Attr5 + SPELL_ATTR5_UNK22 = 0x00400000, // TITLE Unknown attribute 22@Attr5 + SPELL_ATTR5_UNK23 = 0x00800000, // TITLE Unknown attribute 23@Attr5 + SPELL_ATTR5_UNK24 = 0x01000000, // TITLE Unknown attribute 24@Attr5 + SPELL_ATTR5_UNK25 = 0x02000000, // TITLE Unknown attribute 25@Attr5 + SPELL_ATTR5_SKIP_CHECKCAST_LOS_CHECK = 0x04000000, // TITLE Ignore line of sight checks + SPELL_ATTR5_DONT_SHOW_AURA_IF_SELF_CAST = 0x08000000, // TITLE Don't show aura if self-cast (client only) + SPELL_ATTR5_DONT_SHOW_AURA_IF_NOT_SELF_CAST = 0x10000000, // TITLE Don't show aura unless self-cast (client only) + SPELL_ATTR5_UNK29 = 0x20000000, // TITLE Unknown attribute 29@Attr5 + SPELL_ATTR5_UNK30 = 0x40000000, // TITLE Unknown attribute 30@Attr5 + SPELL_ATTR5_UNK31 = 0x80000000 // TITLE Unknown attribute 31@Attr5 DESCRIPTION Forces nearby enemies to attack caster? }; enum SpellAttr6 { - SPELL_ATTR6_DONT_DISPLAY_COOLDOWN = 0x00000001, // 0 client doesn't display cooldown in tooltip for these spells - SPELL_ATTR6_ONLY_IN_ARENA = 0x00000002, // 1 only usable in arena - SPELL_ATTR6_IGNORE_CASTER_AURAS = 0x00000004, // 2 - SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG = 0x00000008, // 3 skips checking UNIT_FLAG_IMMUNE_TO_PC and UNIT_FLAG_IMMUNE_TO_NPC flags on assist - SPELL_ATTR6_UNK4 = 0x00000010, // 4 - SPELL_ATTR6_DONT_CONSUME_CHARGES = 0x00000020, // 5 xinef: dont consume proc charges - SPELL_ATTR6_USE_SPELL_CAST_EVENT = 0x00000040, // 6 Auras with this attribute trigger SPELL_CAST combat log event instead of SPELL_AURA_START (clientside attribute) - SPELL_ATTR6_UNK7 = 0x00000080, // 7 - SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED = 0x00000100, // 8 - SPELL_ATTR6_UNK9 = 0x00000200, // 9 - SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS = 0x00000400, // 10 NYI! - SPELL_ATTR6_NOT_IN_RAID_INSTANCE = 0x00000800, // 11 not usable in raid instance - SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE = 0x00001000, // 12 castable while caster is on vehicle - SPELL_ATTR6_CAN_TARGET_INVISIBLE = 0x00002000, // 13 ignore visibility requirement for spell target (phases, invisibility, etc.) - SPELL_ATTR6_UNK14 = 0x00004000, // 14 - SPELL_ATTR6_UNK15 = 0x00008000, // 15 only 54368, 67892 - SPELL_ATTR6_UNK16 = 0x00010000, // 16 - SPELL_ATTR6_UNK17 = 0x00020000, // 17 Mount spell - SPELL_ATTR6_CAST_BY_CHARMER = 0x00040000, // 18 client won't allow to cast these spells when unit is not possessed && charmer of caster will be original caster - SPELL_ATTR6_UNK19 = 0x00080000, // 19 only 47488, 50782 - SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER = 0x00100000, // 20 Auras with this attribute are only visible to their caster (or pet's owner) - SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS = 0x00200000, // 21 it's only client-side attribute - SPELL_ATTR6_UNK22 = 0x00400000, // 22 only 72054 - SPELL_ATTR6_UNK23 = 0x00800000, // 23 - SPELL_ATTR6_CAN_TARGET_UNTARGETABLE = 0x01000000, // 24 - SPELL_ATTR6_UNK25 = 0x02000000, // 25 Exorcism, Flash of Light - SPELL_ATTR6_UNK26 = 0x04000000, // 26 related to player castable positive buff - SPELL_ATTR6_LIMIT_PCT_HEALING_MODS = 0x08000000, // 27 xinef: complicated and guessed - SPELL_ATTR6_UNK28 = 0x10000000, // 28 Death Grip - SPELL_ATTR6_LIMIT_PCT_DAMAGE_MODS = 0x20000000, // 29 xinef: complicated and guessed - SPELL_ATTR6_UNK30 = 0x40000000, // 30 - SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS = 0x80000000 // 31 Spells with this attribute skip applying modifiers to category cooldowns + 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_DONT_CONSUME_PROC_CHARGES = 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 DESCRIPTION only 54368, 67892 + 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 DESCRIPTION only 47488, 50782 + 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 DESCRIPTION only 72054 + 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_LIMIT_PCT_HEALING_MODS = 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_LIMIT_PCT_DAMAGE_MODS = 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 }; enum SpellAttr7 { - SPELL_ATTR7_UNK0 = 0x00000001, // 0 Shaman's new spells (Call of the ...), Feign Death. - SPELL_ATTR7_IGNORE_DURATION_MODS = 0x00000002, // 1 Duration is not affected by duration modifiers - SPELL_ATTR7_REACTIVATE_AT_RESURRECT = 0x00000004, // 2 Paladin's auras and 65607 only. - SPELL_ATTR7_IS_CHEAT_SPELL = 0x00000008, // 3 Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS - SPELL_ATTR7_UNK4 = 0x00000010, // 4 Only 47883 (Soulstone Resurrection) and test spell. - SPELL_ATTR7_SUMMON_PLAYER_TOTEM = 0x00000020, // 5 Only Shaman player totems. - SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE = 0x00000040, // 6 Does not cause spell pushback on damage - SPELL_ATTR7_UNK7 = 0x00000080, // 7 66218 (Launch) spell. - SPELL_ATTR7_HORDE_ONLY = 0x00000100, // 8 Teleports, mounts and other spells. - SPELL_ATTR7_ALLIANCE_ONLY = 0x00000200, // 9 Teleports, mounts and other spells. - SPELL_ATTR7_DISPEL_CHARGES = 0x00000400, // 10 Dispel and Spellsteal individual charges instead of whole aura. - SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER = 0x00000800, // 11 Only non-player casts interrupt, though Feral Charge - Bear has it. - SPELL_ATTR7_UNK12 = 0x00001000, // 12 Not set in 3.2.2a. - SPELL_ATTR7_UNK13 = 0x00002000, // 13 Not set in 3.2.2a. - SPELL_ATTR7_UNK14 = 0x00004000, // 14 Only 52150 (Raise Dead - Pet) spell. - SPELL_ATTR7_UNK15 = 0x00008000, // 15 Exorcism. Usable on players? 100% crit chance on undead and demons? - SPELL_ATTR7_CAN_RESTORE_SECONDARY_POWER = 0x00010000, // 16 Druid spells (29166, 54833, 64372, 68285). - SPELL_ATTR7_UNK17 = 0x00020000, // 17 Only 27965 (Suicide) spell. - SPELL_ATTR7_HAS_CHARGE_EFFECT = 0x00040000, // 18 Only spells that have Charge among effects. - SPELL_ATTR7_ZONE_TELEPORT = 0x00080000, // 19 Teleports to specific zones. - SPELL_ATTR7_UNK20 = 0x00100000, // 20 Blink, Divine Shield, Ice Block - SPELL_ATTR7_UNK21 = 0x00200000, // 21 Not set - SPELL_ATTR7_UNK22 = 0x00400000, // 22 - SPELL_ATTR7_UNK23 = 0x00800000, // 23 Motivate, Mutilate, Shattering Throw - SPELL_ATTR7_UNK24 = 0x01000000, // 24 Motivate, Mutilate, Perform Speech, Shattering Throw - SPELL_ATTR7_UNK25 = 0x02000000, // 25 - SPELL_ATTR7_UNK26 = 0x04000000, // 26 - SPELL_ATTR7_UNK27 = 0x08000000, // 27 Not set - SPELL_ATTR7_CONSOLIDATED_RAID_BUFF = 0x10000000, // 28 May be collapsed in raid buff frame (clientside attribute) - SPELL_ATTR7_UNK29 = 0x20000000, // 29 only 69028, 71237 - SPELL_ATTR7_UNK30 = 0x40000000, // 30 Burning Determination, Divine Sacrifice, Earth Shield, Prayer of Mending - SPELL_ATTR7_CLIENT_INDICATOR = 0x80000000 + SPELL_ATTR7_UNK0 = 0x00000001, // TITLE Unknown attribute 0@Attr7 DESCRIPTION Shaman's new spells (Call of the ...), Feign Death. + SPELL_ATTR7_IGNORE_DURATION_MODS = 0x00000002, // TITLE Ignore duration modifiers + SPELL_ATTR7_REACTIVATE_AT_RESURRECT = 0x00000004, // TITLE Reactivate at resurrect (client only) + SPELL_ATTR7_IS_CHEAT_SPELL = 0x00000008, // TITLE Is cheat spell DESCRIPTION Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS + SPELL_ATTR7_UNK4 = 0x00000010, // TITLE Unknown attribute 4@Attr7 DESCRIPTION Soulstone related? + SPELL_ATTR7_SUMMON_PLAYER_TOTEM = 0x00000020, // TITLE Summons player-owned totem + SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE = 0x00000040, // TITLE Damage dealt by this does not cause spell pushback + SPELL_ATTR7_UNK7 = 0x00000080, // TITLE Unknown attribute 7@Attr7 DESCRIPTION 66218 (Launch) spell. + SPELL_ATTR7_HORDE_ONLY = 0x00000100, // TITLE Horde only + SPELL_ATTR7_ALLIANCE_ONLY = 0x00000200, // TITLE Alliance only + SPELL_ATTR7_DISPEL_CHARGES = 0x00000400, // TITLE Dispel/Spellsteal remove individual charges + SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER = 0x00000800, // TITLE Only interrupt non-player casting + SPELL_ATTR7_UNK12 = 0x00001000, // TITLE Unknown attribute 12@Attr7 DESCRIPTION Not set in 3.2.2a. + SPELL_ATTR7_UNK13 = 0x00002000, // TITLE Unknown attribute 13@Attr7 DESCRIPTION Not set in 3.2.2a. + SPELL_ATTR7_UNK14 = 0x00004000, // TITLE Unknown attribute 14@Attr7 DESCRIPTION Only 52150 (Raise Dead - Pet) spell. + SPELL_ATTR7_UNK15 = 0x00008000, // TITLE Unknown attribute 15@Attr7 DESCRIPTION Exorcism - guaranteed crit vs families? + SPELL_ATTR7_CAN_RESTORE_SECONDARY_POWER = 0x00010000, // TITLE Can restore secondary power DESCRIPTION Only spells with this attribute can replenish a non-active power type + SPELL_ATTR7_UNK17 = 0x00020000, // TITLE Unknown attribute 17@Attr7 DESCRIPTION Only 27965 (Suicide) spell. + SPELL_ATTR7_HAS_CHARGE_EFFECT = 0x00040000, // TITLE Has charge effect + SPELL_ATTR7_ZONE_TELEPORT = 0x00080000, // TITLE Is zone teleport + SPELL_ATTR7_UNK20 = 0x00100000, // TITLE Unknown attribute 20@Attr7 DESCRIPTION Invulnerability related? + SPELL_ATTR7_UNK21 = 0x00200000, // TITLE Unknown attribute 21@Attr7 + SPELL_ATTR7_IGNORE_COLD_WEATHER_FLYING = 0x00400000, // TITLE Ignore cold weather flying restriction DESCRIPTION Set for loaner mounts, allows them to be used despite lacking required flight skill + SPELL_ATTR7_UNK23 = 0x00800000, // TITLE Unknown attribute 23@Attr7 DESCRIPTION Motivate, Mutilate, Shattering Throw + SPELL_ATTR7_UNK24 = 0x01000000, // TITLE Unknown attribute 24@Attr7 DESCRIPTION Motivate, Mutilate, Perform Speech, Shattering Throw + SPELL_ATTR7_UNK25 = 0x02000000, // TITLE Unknown attribute 25@Attr7 + SPELL_ATTR7_UNK26 = 0x04000000, // TITLE Unknown attribute 26@Attr7 + SPELL_ATTR7_UNK27 = 0x08000000, // TITLE Unknown attribute 27@Attr7 + SPELL_ATTR7_CONSOLIDATED_RAID_BUFF = 0x10000000, // TITLE Consolidate in raid buff frame (client only) + SPELL_ATTR7_UNK29 = 0x20000000, // TITLE Unknown attribute 29@Attr7 DESCRIPTION only 69028, 71237 + SPELL_ATTR7_UNK30 = 0x40000000, // TITLE Unknown attribute 30@Attr7 DESCRIPTION Burning Determination, Divine Sacrifice, Earth Shield, Prayer of Mending + SPELL_ATTR7_CLIENT_INDICATOR = 0x80000000 // TITLE Client indicator (client only) }; #define MAX_TALENT_SPECS 2 diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index c65a6df9f..00bc74c44 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -968,7 +968,7 @@ bool Aura::ModStackAmount(int32 num, AuraRemoveMode removeMode, bool periodicRes return true; } - bool refresh = stackAmount >= GetStackAmount(); + bool refresh = stackAmount >= GetStackAmount() && (m_spellInfo->StackAmount || !m_spellInfo->HasAttribute(SPELL_ATTR1_DONT_REFRESH_DURATION_ON_RECAST)); // Update stack amount if (refresh) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 92d316db7..77a6a7f78 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3913,7 +3913,7 @@ void SpellMgr::LoadDbcDataCorrections() // Kindred Spirits, damage aura ApplySpellFix({ 57458 }, [](SpellEntry* spellInfo) { - spellInfo->AttributesEx4 |= SPELL_ATTR4_UNK21; + spellInfo->AttributesEx4 |= SPELL_ATTR4_DONT_REMOVE_IN_ARENA; }); // Chimera Shot - Serpent trigger