aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlinencloth <none@none>2010-12-19 05:15:47 +0100
committerlinencloth <none@none>2010-12-19 05:15:47 +0100
commit59da698189cccb65b94f7b14690ce87ef226cef7 (patch)
treec3fcb0a008e964c619d3b275caffa1765b369262 /src
parent22928e23bd94cb744d2593996fad2de72a8eaece (diff)
Core: Rename spell attributes, use more general names
--HG-- branch : trunk
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/AI/CoreAI/PetAI.cpp2
-rwxr-xr-xsrc/server/game/AI/CoreAI/UnitAI.cpp8
-rwxr-xr-xsrc/server/game/Battlegrounds/Battleground.cpp2
-rwxr-xr-xsrc/server/game/Chat/Chat.cpp2
-rwxr-xr-xsrc/server/game/Combat/ThreatManager.cpp2
-rwxr-xr-xsrc/server/game/Conditions/ConditionMgr.cpp2
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp12
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp54
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h2
-rwxr-xr-xsrc/server/game/Loot/LootMgr.cpp2
-rwxr-xr-xsrc/server/game/Miscellaneous/SharedDefines.h488
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/PetHandler.cpp2
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/SpellHandler.cpp4
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuraEffects.cpp28
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuras.cpp10
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuras.h2
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp118
-rwxr-xr-xsrc/server/game/Spells/Spell.h2
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp10
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp116
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.h50
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp8
22 files changed, 463 insertions, 463 deletions
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp
index c624773e90b..6a067271e04 100755
--- a/src/server/game/AI/CoreAI/PetAI.cpp
+++ b/src/server/game/AI/CoreAI/PetAI.cpp
@@ -470,7 +470,7 @@ bool PetAI::_CanAttack(Unit *target)
bool PetAI::_CheckTargetCC(Unit *target)
{
- if (me->GetCharmerOrOwnerGUID() && target->HasNegativeAuraWithAttribute(SPELL_ATTR_BREAKABLE_BY_DAMAGE, me->GetCharmerOrOwnerGUID()))
+ if (me->GetCharmerOrOwnerGUID() && target->HasNegativeAuraWithAttribute(SPELL_ATTR0_BREAKABLE_BY_DAMAGE, me->GetCharmerOrOwnerGUID()))
return true;
return false;
diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp
index 5c6d8ff2715..0018f6dcb27 100755
--- a/src/server/game/AI/CoreAI/UnitAI.cpp
+++ b/src/server/game/AI/CoreAI/UnitAI.cpp
@@ -165,7 +165,7 @@ void UnitAI::DoCast(uint32 spellId)
case AITARGET_ENEMY:
{
const SpellEntry * spellInfo = GetSpellStore()->LookupEntry(spellId);
- bool playerOnly = spellInfo->AttributesEx3 & SPELL_ATTR_EX3_PLAYERS_ONLY;
+ bool playerOnly = spellInfo->AttributesEx3 & SPELL_ATTR3_PLAYERS_ONLY;
//float range = GetSpellMaxRange(spellInfo, false);
target = SelectTarget(SELECT_TARGET_RANDOM, 0, GetSpellMaxRange(spellInfo, false), playerOnly);
break;
@@ -175,11 +175,11 @@ void UnitAI::DoCast(uint32 spellId)
case AITARGET_DEBUFF:
{
const SpellEntry * spellInfo = GetSpellStore()->LookupEntry(spellId);
- bool playerOnly = spellInfo->AttributesEx3 & SPELL_ATTR_EX3_PLAYERS_ONLY;
+ bool playerOnly = spellInfo->AttributesEx3 & SPELL_ATTR3_PLAYERS_ONLY;
float range = GetSpellMaxRange(spellInfo, false);
DefaultTargetSelector targetSelector(me, range, playerOnly, -(int32)spellId);
- if (!(spellInfo->Attributes & SPELL_ATTR_BREAKABLE_BY_DAMAGE)
+ if (!(spellInfo->Attributes & SPELL_ATTR0_BREAKABLE_BY_DAMAGE)
&& !(spellInfo->AuraInterruptFlags & AURA_INTERRUPT_FLAG_NOT_VICTIM)
&& targetSelector(me->getVictim()))
target = me->getVictim();
@@ -208,7 +208,7 @@ void UnitAI::FillAISpellInfo()
if (!spellInfo)
continue;
- if (spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD)
+ if (spellInfo->Attributes & SPELL_ATTR0_CASTABLE_WHILE_DEAD)
AIInfo->condition = AICOND_DIE;
else if (IsPassiveSpell(i) || GetSpellDuration(spellInfo) == -1)
AIInfo->condition = AICOND_AGGRO;
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index 387ce88b2ae..e6ec24f8922 100755
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -452,7 +452,7 @@ void Battleground::Update(uint32 diff)
if (!aura->IsPermanent()
&& aura->GetDuration() <= 30*IN_MILLISECONDS
&& aurApp->IsPositive()
- && (!(aura->GetSpellProto()->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY))
+ && (!(aura->GetSpellProto()->Attributes & SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY))
&& (!aura->HasEffectType(SPELL_AURA_MOD_INVISIBILITY)))
plr->RemoveAura(iter);
else
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index 5f381e5468b..d6408dd0ab9 100755
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -1259,7 +1259,7 @@ valid examples:
if (linkedSpell)
{
// spells with that flag have a prefix of "$PROFESSION: "
- if (linkedSpell->Attributes & SPELL_ATTR_TRADESPELL)
+ if (linkedSpell->Attributes & SPELL_ATTR0_TRADESPELL)
{
// lookup skillid
SkillLineAbilityMapBounds bounds = sSpellMgr.GetSkillLineAbilityMapBounds(linkedSpell->Id);
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp
index 4fe047b0a7b..47431835ab4 100755
--- a/src/server/game/Combat/ThreatManager.cpp
+++ b/src/server/game/Combat/ThreatManager.cpp
@@ -36,7 +36,7 @@ float ThreatCalcHelper::calcThreat(Unit* pHatedUnit, Unit* /*pHatingUnit*/, floa
{
if (pThreatSpell)
{
- if (pThreatSpell->AttributesEx & SPELL_ATTR_EX_NO_THREAT)
+ if (pThreatSpell->AttributesEx & SPELL_ATTR1_NO_THREAT)
return 0.0f;
if (Player* modOwner = pHatedUnit->GetSpellModOwner())
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 43b33138c2b..17fa9a6caa9 100755
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -903,7 +903,7 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond)
}
if ((cond->mConditionValue1 == SPELL_TARGET_TYPE_DEAD) && !IsAllowingDeadTargetSpell(spellProto))
{
- sLog.outErrorDb("SourceEntry %u in `condition` table does have SPELL_TARGET_TYPE_DEAD specified but spell does not have SPELL_ATTR_EX2_ALLOW_DEAD_TARGET", cond->mSourceEntry);
+ sLog.outErrorDb("SourceEntry %u in `condition` table does have SPELL_TARGET_TYPE_DEAD specified but spell does not have SPELL_ATTR2_ALLOW_DEAD_TARGET", cond->mSourceEntry);
return false;
}
break;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 13b8f2229f3..2a2d1133386 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -3601,7 +3601,7 @@ bool Player::IsNeedCastPassiveSpellAtLearn(SpellEntry const* spellInfo) const
// talent dependent passives activated at form apply have proper stance data
ShapeshiftForm form = GetShapeshiftForm();
bool need_cast = (!spellInfo->Stances || (form && (spellInfo->Stances & (1 << (form - 1)))) ||
- (!form && (spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT)));
+ (!form && (spellInfo->AttributesEx2 & SPELL_ATTR2_NOT_NEED_SHAPESHIFT)));
//Check CasterAuraStates
return need_cast && (!spellInfo->CasterAuraState || HasAuraState(AuraState(spellInfo->CasterAuraState)));
@@ -6518,7 +6518,7 @@ void Player::CheckAreaExploreAndOutdoor()
uint16 areaFlag = GetBaseMap()->GetAreaFlag(GetPositionX(),GetPositionY(),GetPositionZ(), &isOutdoor);
if (sWorld.getBoolConfig(CONFIG_VMAP_INDOOR_CHECK) && !isOutdoor)
- RemoveAurasWithAttribute(SPELL_ATTR_OUTDOORS_ONLY);
+ RemoveAurasWithAttribute(SPELL_ATTR0_OUTDOORS_ONLY);
if (areaFlag==0xffff)
return;
@@ -19747,7 +19747,7 @@ void Player::ProhibitSpellScholl(SpellSchoolMask idSchoolMask, uint32 unTimeMs)
}
// Not send cooldown for this spells
- if (spellInfo->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE)
+ if (spellInfo->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE)
continue;
if (spellInfo->PreventionType != SPELL_PREVENTION_TYPE_SILENCE)
@@ -21725,8 +21725,8 @@ bool Player::HasItemFitToSpellReqirements(SpellEntry const* spellInfo, Item cons
bool Player::CanNoReagentCast(SpellEntry const* spellInfo) const
{
- // don't take reagents for spells with SPELL_ATTR_EX5_NO_REAGENT_WHILE_PREP
- if (spellInfo->AttributesEx5 & SPELL_ATTR_EX5_NO_REAGENT_WHILE_PREP &&
+ // don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_WHILE_PREP
+ if (spellInfo->AttributesEx5 & SPELL_ATTR5_NO_REAGENT_WHILE_PREP &&
HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PREPARATION))
return true;
@@ -22671,7 +22671,7 @@ void Player::AddGlobalCooldown(SpellEntry const *spellInfo, Spell *spell)
float cdTime = float(spellInfo->StartRecoveryTime);
- if (!(spellInfo->Attributes & (SPELL_ATTR_UNK4|SPELL_ATTR_PASSIVE)))
+ if (!(spellInfo->Attributes & (SPELL_ATTR0_UNK4|SPELL_ATTR0_PASSIVE)))
cdTime *= GetFloatValue(UNIT_MOD_CAST_SPEED);
else if (IsRangedWeaponSpell(spellInfo) && !spell->IsAutoRepeat())
cdTime *= m_modAttackSpeedPct[RANGED_ATTACK];
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 7c619fcf2a8..d6bfb80edb5 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -947,7 +947,7 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage *damageInfo, int32 dama
if (damage < 0)
return;
- if (spellInfo->AttributesEx4 & SPELL_ATTR_EX4_FIXED_DAMAGE)
+ if (spellInfo->AttributesEx4 & SPELL_ATTR4_FIXED_DAMAGE)
{
damageInfo->damage = damage;
return;
@@ -1438,7 +1438,7 @@ bool Unit::IsDamageReducedByArmor(SpellSchoolMask schoolMask, SpellEntry const *
if (spellInfo)
{
// there are spells with no specific attribute but they have "ignores armor" in tooltip
- if (sSpellMgr.GetSpellCustomAttr(spellInfo->Id) & SPELL_ATTR_CU_IGNORE_ARMOR)
+ if (sSpellMgr.GetSpellCustomAttr(spellInfo->Id) & SPELL_ATTR0_CU_IGNORE_ARMOR)
return false;
// bleeding effects are not reduced by armor
@@ -2648,10 +2648,10 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit *pVictim, SpellEntry const *spell)
bool canDodge = true;
bool canParry = true;
- bool canBlock = spell->AttributesEx3 & SPELL_ATTR_EX3_BLOCKABLE_SPELL;
+ bool canBlock = spell->AttributesEx3 & SPELL_ATTR3_BLOCKABLE_SPELL;
// Same spells cannot be parry/dodge
- if (spell->Attributes & SPELL_ATTR_IMPOSSIBLE_DODGE_PARRY_BLOCK)
+ if (spell->Attributes & SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK)
return SPELL_MISS_NONE;
// Chance resist mechanic
@@ -3332,14 +3332,14 @@ bool Unit::IsNonMeleeSpellCasted(bool withDelayed, bool skipChanneled, bool skip
(m_currentSpells[CURRENT_GENERIC_SPELL]->getState() != SPELL_STATE_FINISHED) &&
(withDelayed || m_currentSpells[CURRENT_GENERIC_SPELL]->getState() != SPELL_STATE_DELAYED))
{
- if (!isAutoshoot || !(m_currentSpells[CURRENT_GENERIC_SPELL]->m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_RESET_AUTO_ACTIONS))
+ if (!isAutoshoot || !(m_currentSpells[CURRENT_GENERIC_SPELL]->m_spellInfo->AttributesEx2 & SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS))
return(true);
}
// channeled spells may be delayed, but they are still considered casted
else if (!skipChanneled && m_currentSpells[CURRENT_CHANNELED_SPELL] &&
(m_currentSpells[CURRENT_CHANNELED_SPELL]->getState() != SPELL_STATE_FINISHED))
{
- if (!isAutoshoot || !(m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_RESET_AUTO_ACTIONS))
+ if (!isAutoshoot || !(m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo->AttributesEx2 & SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS))
return(true);
}
// autorepeat spells may be finished or delayed, but they are still considered casted
@@ -3939,7 +3939,7 @@ void Unit::RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit
Aura * aura = iter->second;
if (aura->GetCasterGUID() == casterGUID)
{
- if (aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR_EX7_DISPEL_CHARGES)
+ if (aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES)
aura->DropCharge();
else
RemoveAuraFromStack(iter, AURA_REMOVE_BY_ENEMY_SPELL);
@@ -4018,7 +4018,7 @@ void Unit::RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit
}
}
- bool stealCharge = aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR_EX7_DISPEL_CHARGES;
+ bool stealCharge = aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES;
if (stealCharge)
aura->DropCharge();
@@ -4268,9 +4268,9 @@ void Unit::RemoveArenaAuras(bool onleave)
{
AuraApplication const * aurApp = iter->second;
Aura const * aura = aurApp->GetBase();
- if (!(aura->GetSpellProto()->AttributesEx4 & SPELL_ATTR_EX4_UNK21) // don't remove stances, shadowform, pally/hunter auras
+ if (!(aura->GetSpellProto()->AttributesEx4 & SPELL_ATTR4_UNK21) // don't remove stances, shadowform, pally/hunter auras
&& !aura->IsPassive() // don't remove passive auras
- && (!(aura->GetSpellProto()->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY) || !(aura->GetSpellProto()->Attributes & SPELL_ATTR_UNK8)) // not unaffected by invulnerability auras or not having that unknown flag (that seemed the most probable)
+ && (!(aura->GetSpellProto()->Attributes & SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY) || !(aura->GetSpellProto()->Attributes & SPELL_ATTR0_UNK8)) // not unaffected by invulnerability auras or not having that unknown flag (that seemed the most probable)
&& (aurApp->IsPositive() ^ onleave)) // remove positive buffs on enter, negative buffs on leave
RemoveAura(iter);
else
@@ -4888,7 +4888,7 @@ void Unit::AddGameObject(GameObject* gameObj)
{
SpellEntry const* createBySpell = sSpellStore.LookupEntry(gameObj->GetSpellId());
// Need disable spell use for owner
- if (createBySpell && createBySpell->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE)
+ if (createBySpell && createBySpell->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE)
// note: item based cooldowns and cooldown spell mods with charges ignored (unknown existed cases)
this->ToPlayer()->AddSpellAndCategoryCooldowns(createBySpell,0,NULL,true);
}
@@ -4918,7 +4918,7 @@ void Unit::RemoveGameObject(GameObject* gameObj, bool del)
{
SpellEntry const* createBySpell = sSpellStore.LookupEntry(spellid);
// Need activate spell use for owner
- if (createBySpell && createBySpell->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE)
+ if (createBySpell && createBySpell->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE)
// note: item based cooldowns and cooldown spell mods with charges ignored (unknown existed cases)
this->ToPlayer()->SendCooldownEvent(createBySpell);
}
@@ -9854,7 +9854,7 @@ void Unit::SetMinion(Minion *minion, bool apply)
{
// Send infinity cooldown - client does that automatically but after relog cooldown needs to be set again
SpellEntry const *spellInfo = sSpellStore.LookupEntry(minion->GetUInt32Value(UNIT_CREATED_BY_SPELL));
- if (spellInfo && (spellInfo->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE))
+ if (spellInfo && (spellInfo->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE))
this->ToPlayer()->AddSpellAndCategoryCooldowns(spellInfo, 0, NULL ,true);
}
}
@@ -9896,7 +9896,7 @@ void Unit::SetMinion(Minion *minion, bool apply)
{
SpellEntry const *spellInfo = sSpellStore.LookupEntry(minion->GetUInt32Value(UNIT_CREATED_BY_SPELL));
// Remove infinity cooldown
- if (spellInfo && (spellInfo->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE))
+ if (spellInfo && (spellInfo->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE))
this->ToPlayer()->SendCooldownEvent(spellInfo);
}
@@ -10744,7 +10744,7 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3
}
// Some spells don't benefit from done mods
- if (spellProto->AttributesEx3 & SPELL_ATTR_EX3_NO_DONE_BONUS)
+ if (spellProto->AttributesEx3 & SPELL_ATTR3_NO_DONE_BONUS)
{
DoneTotal = 0;
DoneTotalMod = 1.0f;
@@ -10827,7 +10827,7 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM
return false;
// not critting spell
- if ((spellProto->AttributesEx2 & SPELL_ATTR_EX2_CANT_CRIT))
+ if ((spellProto->AttributesEx2 & SPELL_ATTR2_CANT_CRIT))
return false;
float crit_chance = 0.0f;
@@ -11390,7 +11390,7 @@ bool Unit::IsImmunedToDamage(SpellSchoolMask shoolMask)
bool Unit::IsImmunedToDamage(SpellEntry const* spellInfo)
{
- if (spellInfo->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
+ if (spellInfo->Attributes & SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)
return false;
uint32 shoolMask = GetSpellSchoolMask(spellInfo);
@@ -11423,7 +11423,7 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo)
if (itr->type == spellInfo->Id)
return true;
- if (spellInfo->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
+ if (spellInfo->Attributes & SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)
return false;
if (spellInfo->Dispel)
@@ -11841,7 +11841,7 @@ void Unit::ApplySpellDispelImmunity(const SpellEntry * spellProto, DispelType ty
{
ApplySpellImmune(spellProto->Id,IMMUNITY_DISPEL, type, apply);
- if (apply && spellProto->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)
+ if (apply && spellProto->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY)
{
// Create dispel mask by dispel type
uint32 dispelMask = GetDispellMask(type);
@@ -12984,9 +12984,9 @@ void Unit::ModSpellCastTime(SpellEntry const* spellProto, int32 & castTime, Spel
if (Player* modOwner = GetSpellModOwner())
modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_CASTING_TIME, castTime, spell);
- if (!(spellProto->Attributes & (SPELL_ATTR_UNK4|SPELL_ATTR_TRADESPELL)) && spellProto->SpellFamilyName)
+ if (!(spellProto->Attributes & (SPELL_ATTR0_UNK4|SPELL_ATTR0_TRADESPELL)) && spellProto->SpellFamilyName)
castTime = int32(float(castTime) * GetFloatValue(UNIT_MOD_CAST_SPEED));
- else if (spellProto->Attributes & SPELL_ATTR_REQ_AMMO && !(spellProto->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG))
+ else if (spellProto->Attributes & SPELL_ATTR0_REQ_AMMO && !(spellProto->AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG))
castTime = int32(float(castTime) * m_modAttackSpeedPct[RANGED_ATTACK]);
else if (spellProto->SpellVisual[0] == 3881 && HasAura(67556)) // cooking with Chef Hat.
castTime = 500;
@@ -13753,7 +13753,7 @@ void CharmInfo::InitPossessCreateSpells()
{
uint32 spellId = m_unit->ToCreature()->m_spells[i];
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
- if (spellInfo && spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD)
+ if (spellInfo && spellInfo->Attributes & SPELL_ATTR0_CASTABLE_WHILE_DEAD)
spellId = 0;
if (IsPassiveSpell(spellId))
m_unit->CastSpell(m_unit, spellId, true);
@@ -13777,7 +13777,7 @@ void CharmInfo::InitCharmCreateSpells()
{
uint32 spellId = m_unit->ToCreature()->m_spells[x];
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
- if (spellInfo && spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD)
+ if (spellInfo && spellInfo->Attributes & SPELL_ATTR0_CASTABLE_WHILE_DEAD)
spellId = 0;
if (!spellId)
@@ -14148,7 +14148,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit * pTarget, uint32 procFlag,
continue;
// Triggered spells not triggering additional spells
- bool triggered= !(spellProto->AttributesEx3 & SPELL_ATTR_EX3_CAN_PROC_TRIGGERED) ?
+ bool triggered= !(spellProto->AttributesEx3 & SPELL_ATTR3_CAN_PROC_TRIGGERED) ?
(procExtra & PROC_EX_INTERNAL_TRIGGERED && !(procFlag & PROC_FLAG_DONE_TRAP_ACTIVATION)) : false;
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
@@ -14195,7 +14195,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit * pTarget, uint32 procFlag,
if (GetTypeId() == TYPEID_PLAYER && i->spellProcEvent && i->spellProcEvent->cooldown)
cooldown = i->spellProcEvent->cooldown;
- if (spellInfo->AttributesEx3 & SPELL_ATTR_EX3_DISABLE_PROC)
+ if (spellInfo->AttributesEx3 & SPELL_ATTR3_DISABLE_PROC)
SetCantProc(true);
// This bool is needed till separate aura effect procs are still here
@@ -14377,7 +14377,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit * pTarget, uint32 procFlag,
if (useCharges && takeCharges)
i->aura->DropCharge();
- if (spellInfo->AttributesEx3 & SPELL_ATTR_EX3_DISABLE_PROC)
+ if (spellInfo->AttributesEx3 & SPELL_ATTR3_DISABLE_PROC)
SetCantProc(false);
}
@@ -14939,7 +14939,7 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura * aura, SpellEntry co
// Additional checks for triggered spells (ignore trap casts)
if (procExtra & PROC_EX_INTERNAL_TRIGGERED && !(procFlag & PROC_FLAG_DONE_TRAP_ACTIVATION))
{
- if (!(spellProto->AttributesEx3 & SPELL_ATTR_EX3_CAN_PROC_TRIGGERED))
+ if (!(spellProto->AttributesEx3 & SPELL_ATTR3_CAN_PROC_TRIGGERED))
return false;
}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 1086bc2f514..663213d7968 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -552,7 +552,7 @@ enum UnitFlags
UNIT_FLAG_DISABLE_MOVE = 0x00000004,
UNIT_FLAG_PVP_ATTACKABLE = 0x00000008, // allow apply pvp rules to attackable state in addition to faction dependent state
UNIT_FLAG_RENAME = 0x00000010,
- UNIT_FLAG_PREPARATION = 0x00000020, // don't take reagents for spells with SPELL_ATTR_EX5_NO_REAGENT_WHILE_PREP
+ UNIT_FLAG_PREPARATION = 0x00000020, // don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_WHILE_PREP
UNIT_FLAG_UNK_6 = 0x00000040,
UNIT_FLAG_NOT_ATTACKABLE_1 = 0x00000080, // ?? (UNIT_FLAG_PVP_ATTACKABLE | UNIT_FLAG_NOT_ATTACKABLE_1) is NON_PVP_ATTACKABLE
UNIT_FLAG_OOC_NOT_ATTACKABLE = 0x00000100, // 2.0.8 - (OOC Out Of Combat) Can not be attacked when not in combat. Removed if unit for some reason enter combat.
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index 904d27d2dd9..be3058be2d4 100755
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -1645,7 +1645,7 @@ void LoadLootTemplates_Spell()
{
// not report about not trainable spells (optionally supported by DB)
// ignore 61756 (Northrend Inscription Research (FAST QA VERSION) for example
- if (!(spellInfo->Attributes & SPELL_ATTR_NOT_SHAPESHIFT) || (spellInfo->Attributes & SPELL_ATTR_TRADESPELL))
+ if (!(spellInfo->Attributes & SPELL_ATTR0_NOT_SHAPESHIFT) || (spellInfo->Attributes & SPELL_ATTR0_TRADESPELL))
{
LootTemplates_Spell.ReportNotExistedId(spell_id);
}
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 5165f5593b0..2cfd5a919ab 100755
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -263,278 +263,278 @@ const uint32 ItemQualityColors[MAX_ITEM_QUALITY] = {
enum SpellAttr0
{
- SPELL_ATTR_UNK0 = 0x00000001, // 0
- SPELL_ATTR_REQ_AMMO = 0x00000002, // 1
- SPELL_ATTR_ON_NEXT_SWING = 0x00000004, // 2 on next swing
- SPELL_ATTR_UNK3 = 0x00000008, // 3 not set in 3.0.3
- SPELL_ATTR_UNK4 = 0x00000010, // 4
- SPELL_ATTR_TRADESPELL = 0x00000020, // 5 trade spells, will be added by client to a sublist of profession spell
- SPELL_ATTR_PASSIVE = 0x00000040, // 6 Passive spell
- SPELL_ATTR_UNK7 = 0x00000080, // 7 visible?
- SPELL_ATTR_UNK8 = 0x00000100, // 8
- SPELL_ATTR_UNK9 = 0x00000200, // 9
- SPELL_ATTR_UNK10 = 0x00000400, // 10 on next swing 2
- SPELL_ATTR_UNK11 = 0x00000800, // 11
- SPELL_ATTR_DAYTIME_ONLY = 0x00001000, // 12 only useable at daytime, not set in 2.4.2
- SPELL_ATTR_NIGHT_ONLY = 0x00002000, // 13 only useable at night, not set in 2.4.2
- SPELL_ATTR_INDOORS_ONLY = 0x00004000, // 14 only useable indoors, not set in 2.4.2
- SPELL_ATTR_OUTDOORS_ONLY = 0x00008000, // 15 Only useable outdoors.
- SPELL_ATTR_NOT_SHAPESHIFT = 0x00010000, // 16 Not while shapeshifted
- SPELL_ATTR_ONLY_STEALTHED = 0x00020000, // 17 Must be in stealth
- SPELL_ATTR_UNK18 = 0x00040000, // 18
- SPELL_ATTR_LEVEL_DAMAGE_CALCULATION = 0x00080000, // 19 spelldamage depends on caster level
- SPELL_ATTR_STOP_ATTACK_TARGET = 0x00100000, // 20 Stop attack after use this spell (and not begin attack if use)
- SPELL_ATTR_IMPOSSIBLE_DODGE_PARRY_BLOCK = 0x00200000, // 21 Cannot be dodged/parried/blocked
- SPELL_ATTR_UNK22 = 0x00400000, // 22 shoot spells
- SPELL_ATTR_CASTABLE_WHILE_DEAD = 0x00800000, // 23 castable while dead?
- SPELL_ATTR_CASTABLE_WHILE_MOUNTED = 0x01000000, // 24 castable while mounted
- SPELL_ATTR_DISABLED_WHILE_ACTIVE = 0x02000000, // 25 Activate and start cooldown after aura fade or remove summoned creature or go
- SPELL_ATTR_NEGATIVE_1 = 0x04000000, // 26 Many negative spells have this attr
- SPELL_ATTR_CASTABLE_WHILE_SITTING = 0x08000000, // 27 castable while sitting
- SPELL_ATTR_CANT_USED_IN_COMBAT = 0x10000000, // 28 Cannot be used in combat
- SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY = 0x20000000, // 29 unaffected by invulnerability (hmm possible not...)
- SPELL_ATTR_BREAKABLE_BY_DAMAGE = 0x40000000, // 30
- SPELL_ATTR_CANT_CANCEL = 0x80000000 // 31 positive aura can't be canceled
+ SPELL_ATTR0_UNK0 = 0x00000001, // 0
+ SPELL_ATTR0_REQ_AMMO = 0x00000002, // 1
+ SPELL_ATTR0_ON_NEXT_SWING = 0x00000004, // 2 on next swing
+ SPELL_ATTR0_UNK3 = 0x00000008, // 3 not set in 3.0.3
+ SPELL_ATTR0_UNK4 = 0x00000010, // 4
+ SPELL_ATTR0_TRADESPELL = 0x00000020, // 5 trade spells, will be added by client to a sublist of profession spell
+ SPELL_ATTR0_PASSIVE = 0x00000040, // 6 Passive spell
+ SPELL_ATTR0_UNK7 = 0x00000080, // 7 visible?
+ SPELL_ATTR0_UNK8 = 0x00000100, // 8
+ SPELL_ATTR0_UNK9 = 0x00000200, // 9
+ SPELL_ATTR0_UNK10 = 0x00000400, // 10 on next swing 2
+ 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_UNK18 = 0x00040000, // 18
+ 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_UNK22 = 0x00400000, // 22 shoot spells
+ 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_BREAKABLE_BY_DAMAGE = 0x40000000, // 30
+ SPELL_ATTR0_CANT_CANCEL = 0x80000000 // 31 positive aura can't be canceled
};
enum SpellAttr1
{
- SPELL_ATTR_EX_DISMISS_PET = 0x00000001, // 0 dismiss pet and not allow to summon new one?
- SPELL_ATTR_EX_DRAIN_ALL_POWER = 0x00000002, // 1 use all power (Only paladin Lay of Hands and Bunyanize)
- SPELL_ATTR_EX_CHANNELED_1 = 0x00000004, // 2 channeled target
- SPELL_ATTR_EX_PUT_CASTER_IN_COMBAT = 0x00000008, // 3 spells that cause a caster to enter a combat
- SPELL_ATTR_EX_UNK4 = 0x00000010, // 4 stealth and whirlwind
- SPELL_ATTR_EX_NOT_BREAK_STEALTH = 0x00000020, // 5 Not break stealth
- SPELL_ATTR_EX_CHANNELED_2 = 0x00000040, // 6 channeled self
- SPELL_ATTR_EX_NEGATIVE = 0x00000080, // 7
- SPELL_ATTR_EX_NOT_IN_COMBAT_TARGET = 0x00000100, // 8 Spell req target not to be in combat state
- SPELL_ATTR_EX_UNK9 = 0x00000200, // 9 melee spells
- SPELL_ATTR_EX_NO_THREAT = 0x00000400, // 10 no generates threat on cast 100% (old NO_INITIAL_AGGRO)
- SPELL_ATTR_EX_UNK11 = 0x00000800, // 11 aura
- SPELL_ATTR_EX_UNK12 = 0x00001000, // 12
- SPELL_ATTR_EX_USE_RADIUS_AS_MAX_DISTANCE = 0x00002000, // 13
- SPELL_ATTR_EX_STACK_FOR_DIFF_CASTERS = 0x00004000, // 14
- SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY = 0x00008000, // 15 remove auras on immunity
- SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE = 0x00010000, // 16 on immuniy
- SPELL_ATTR_EX_UNAUTOCASTABLE_BY_PET = 0x00020000, // 17
- SPELL_ATTR_EX_UNK18 = 0x00040000, // 18
- SPELL_ATTR_EX_CANT_TARGET_SELF = 0x00080000, // 19 Applies only to unit target - for example Divine Intervention (19752)
- SPELL_ATTR_EX_REQ_COMBO_POINTS1 = 0x00100000, // 20 Req combo points on target
- SPELL_ATTR_EX_UNK21 = 0x00200000, // 21
- SPELL_ATTR_EX_REQ_COMBO_POINTS2 = 0x00400000, // 22 Req combo points on target
- SPELL_ATTR_EX_UNK23 = 0x00800000, // 23
- SPELL_ATTR_EX_UNK24 = 0x01000000, // 24 Req fishing pole??
- SPELL_ATTR_EX_UNK25 = 0x02000000, // 25
- SPELL_ATTR_EX_UNK26 = 0x04000000, // 26 works correctly with [target=focus] and [target=mouseover] macros?
- SPELL_ATTR_EX_UNK27 = 0x08000000, // 27
- SPELL_ATTR_EX_IGNORE_IMMUNITY = 0x10000000, // 28 removed from Chains of Ice 3.3.0
- SPELL_ATTR_EX_UNK29 = 0x20000000, // 29
- SPELL_ATTR_EX_ENABLE_AT_DODGE = 0x40000000, // 30 Overpower, Wolverine Bite
- SPELL_ATTR_EX_UNK31 = 0x80000000 // 31
+ SPELL_ATTR1_DISMISS_PET = 0x00000001, // 0 dismiss pet and not allow to summon new one?
+ SPELL_ATTR1_DRAIN_ALL_POWER = 0x00000002, // 1 use all power (Only paladin Lay of Hands and Bunyanize)
+ SPELL_ATTR1_CHANNELED_1 = 0x00000004, // 2 channeled target
+ SPELL_ATTR1_PUT_CASTER_IN_COMBAT = 0x00000008, // 3 spells that cause a caster to enter a combat
+ SPELL_ATTR1_UNK4 = 0x00000010, // 4 stealth and whirlwind
+ SPELL_ATTR1_NOT_BREAK_STEALTH = 0x00000020, // 5 Not break stealth
+ SPELL_ATTR1_CHANNELED_2 = 0x00000040, // 6 channeled self
+ SPELL_ATTR1_NEGATIVE = 0x00000080, // 7
+ SPELL_ATTR1_NOT_IN_COMBAT_TARGET = 0x00000100, // 8 Spell req target not to be in combat state
+ SPELL_ATTR1_UNK9 = 0x00000200, // 9 melee spells
+ SPELL_ATTR1_NO_THREAT = 0x00000400, // 10 no generates threat on cast 100% (old NO_INITIAL_AGGRO)
+ SPELL_ATTR1_UNK11 = 0x00000800, // 11 aura
+ SPELL_ATTR1_UNK12 = 0x00001000, // 12
+ SPELL_ATTR1_USE_RADIUS_AS_MAX_DISTANCE = 0x00002000, // 13
+ SPELL_ATTR1_STACK_FOR_DIFF_CASTERS = 0x00004000, // 14
+ 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
+ SPELL_ATTR1_CANT_TARGET_SELF = 0x00080000, // 19 Applies only to unit target - for example Divine Intervention (19752)
+ 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_UNK24 = 0x01000000, // 24 Req fishing pole??
+ SPELL_ATTR1_UNK25 = 0x02000000, // 25
+ SPELL_ATTR1_UNK26 = 0x04000000, // 26 works correctly with [target=focus] and [target=mouseover] macros?
+ SPELL_ATTR1_UNK27 = 0x08000000, // 27
+ SPELL_ATTR1_IGNORE_IMMUNITY = 0x10000000, // 28 removed from Chains of Ice 3.3.0
+ SPELL_ATTR1_UNK29 = 0x20000000, // 29
+ SPELL_ATTR1_ENABLE_AT_DODGE = 0x40000000, // 30 Overpower, Wolverine Bite
+ SPELL_ATTR1_UNK31 = 0x80000000 // 31
};
enum SpellAttr2
{
- SPELL_ATTR_EX2_ALLOW_DEAD_TARGET = 0x00000001, // 0
- SPELL_ATTR_EX2_UNK1 = 0x00000002, // 1 ? many triggered spells have this flag
- SPELL_ATTR_EX2_CANT_REFLECTED = 0x00000004, // 2 ? used for detect can or not spell reflected
- SPELL_ATTR_EX2_UNK3 = 0x00000008, // 3
- SPELL_ATTR_EX2_ALWAYS_APPLY_MODIFIERS = 0x00000010, // 4 ? spell modifiers are applied dynamically (even if aura is not passive)
- SPELL_ATTR_EX2_AUTOREPEAT_FLAG = 0x00000020, // 5
- SPELL_ATTR_EX2_UNK6 = 0x00000040, // 6
- SPELL_ATTR_EX2_UNK7 = 0x00000080, // 7
- SPELL_ATTR_EX2_UNK8 = 0x00000100, // 8 not set in 3.0.3
- SPELL_ATTR_EX2_UNK9 = 0x00000200, // 9
- SPELL_ATTR_EX2_UNK10 = 0x00000400, // 10
- SPELL_ATTR_EX2_HEALTH_FUNNEL = 0x00000800, // 11
- SPELL_ATTR_EX2_UNK12 = 0x00001000, // 12
- SPELL_ATTR_EX2_UNK13 = 0x00002000, // 13 Items enchanted by spells with this flag preserve the enchant to arenas
- SPELL_ATTR_EX2_UNK14 = 0x00004000, // 14
- SPELL_ATTR_EX2_UNK15 = 0x00008000, // 15 not set in 3.0.3
- SPELL_ATTR_EX2_TAME_BEAST = 0x00010000, // 16
- SPELL_ATTR_EX2_NOT_RESET_AUTO_ACTIONS = 0x00020000, // 17 don't reset timers for melee autoattacks (swings) or ranged autoattacks (autoshoots)
- SPELL_ATTR_EX2_UNK18 = 0x00040000, // 18 Only Revive pet - possible req dead pet
- SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT = 0x00080000, // 19 does not necessarly need shapeshift
- SPELL_ATTR_EX2_UNK20 = 0x00100000, // 20
- SPELL_ATTR_EX2_DAMAGE_REDUCED_SHIELD = 0x00200000, // 21 for ice blocks, pala immunity buffs, priest absorb shields, but used also for other spells -> not sure!
- SPELL_ATTR_EX2_UNK22 = 0x00400000, // 22
- SPELL_ATTR_EX2_UNK23 = 0x00800000, // 23 Only mage Arcane Concentration have this flag
- SPELL_ATTR_EX2_UNK24 = 0x01000000, // 24
- SPELL_ATTR_EX2_UNK25 = 0x02000000, // 25
- SPELL_ATTR_EX2_UNK26 = 0x04000000, // 26 unaffected by school immunity
- SPELL_ATTR_EX2_UNK27 = 0x08000000, // 27
- SPELL_ATTR_EX2_UNK28 = 0x10000000, // 28 no breaks stealth if it fails??
- SPELL_ATTR_EX2_CANT_CRIT = 0x20000000, // 29 Spell can't crit
- SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER = 0x40000000, // 30 spell can trigger even if triggered
- SPELL_ATTR_EX2_FOOD_BUFF = 0x80000000 // 31 Food or Drink Buff (like Well Fed)
+ SPELL_ATTR2_ALLOW_DEAD_TARGET = 0x00000001, // 0
+ SPELL_ATTR2_UNK1 = 0x00000002, // 1 ? many triggered spells have this flag
+ SPELL_ATTR2_CANT_REFLECTED = 0x00000004, // 2 ? used for detect can or not spell reflected
+ SPELL_ATTR2_UNK3 = 0x00000008, // 3
+ SPELL_ATTR2_ALWAYS_APPLY_MODIFIERS = 0x00000010, // 4 ? spell modifiers are applied dynamically (even if aura is not passive)
+ SPELL_ATTR2_AUTOREPEAT_FLAG = 0x00000020, // 5
+ SPELL_ATTR2_UNK6 = 0x00000040, // 6
+ 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
+ SPELL_ATTR2_HEALTH_FUNNEL = 0x00000800, // 11
+ SPELL_ATTR2_UNK12 = 0x00001000, // 12
+ SPELL_ATTR2_UNK13 = 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_UNK18 = 0x00040000, // 18 Only Revive pet - possible req dead pet
+ 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
+ SPELL_ATTR2_UNK23 = 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 no breaks stealth if it fails??
+ SPELL_ATTR2_CANT_CRIT = 0x20000000, // 29 Spell can't crit
+ SPELL_ATTR2_TRIGGERED_CAN_TRIGGER = 0x40000000, // 30 spell can trigger even if triggered
+ SPELL_ATTR2_FOOD_BUFF = 0x80000000 // 31 Food or Drink Buff (like Well Fed)
};
enum SpellAttr3
{
- SPELL_ATTR_EX3_UNK0 = 0x00000001, // 0
- SPELL_ATTR_EX3_UNK1 = 0x00000002, // 1
- SPELL_ATTR_EX3_UNK2 = 0x00000004, // 2
- SPELL_ATTR_EX3_BLOCKABLE_SPELL = 0x00000008, // 3 Only dmg class melee in 3.1.3
- SPELL_ATTR_EX3_UNK4 = 0x00000010, // 4 Druid Rebirth only this spell have this flag
- SPELL_ATTR_EX3_UNK5 = 0x00000020, // 5
- SPELL_ATTR_EX3_UNK6 = 0x00000040, // 6
- SPELL_ATTR_EX3_STACK_FOR_DIFF_CASTERS = 0x00000080, // 7 separate stack for every caster
- SPELL_ATTR_EX3_PLAYERS_ONLY = 0x00000100, // 8 Player only?
- SPELL_ATTR_EX3_TRIGGERED_CAN_TRIGGER_2 = 0x00000200, // 9 triggered from effect?
- SPELL_ATTR_EX3_MAIN_HAND = 0x00000400, // 10 Main hand weapon required
- SPELL_ATTR_EX3_BATTLEGROUND = 0x00000800, // 11 Can casted only on battleground
- SPELL_ATTR_EX3_REQUIRE_DEAD_TARGET = 0x00001000, // 12
- SPELL_ATTR_EX3_UNK13 = 0x00002000, // 13
- SPELL_ATTR_EX3_UNK14 = 0x00004000, // 14 "Honorless Target" only this spells have this flag
- SPELL_ATTR_EX3_UNK15 = 0x00008000, // 15 Auto Shoot, Shoot, Throw, - this is autoshot flag
- SPELL_ATTR_EX3_UNK16 = 0x00010000, // 16 no triggers effects that trigger on casting a spell?? (15290 - 2.2ptr change)
- SPELL_ATTR_EX3_NO_INITIAL_AGGRO = 0x00020000, // 17 Soothe Animal, 39758, Mind Soothe
- SPELL_ATTR_EX3_UNK18 = 0x00040000, // 18 added to Explosive Trap Effect 3.3.0, removed from Mutilate 3.3.0
- SPELL_ATTR_EX3_DISABLE_PROC = 0x00080000, // 19 during aura proc no spells can trigger (20178, 20375)
- SPELL_ATTR_EX3_DEATH_PERSISTENT = 0x00100000, // 20 Death persistent spells
- SPELL_ATTR_EX3_UNK21 = 0x00200000, // 21
- SPELL_ATTR_EX3_REQ_WAND = 0x00400000, // 22 Req wand
- SPELL_ATTR_EX3_UNK23 = 0x00800000, // 23
- SPELL_ATTR_EX3_REQ_OFFHAND = 0x01000000, // 24 Req offhand weapon
- SPELL_ATTR_EX3_UNK25 = 0x02000000, // 25 no cause spell pushback ?
- SPELL_ATTR_EX3_CAN_PROC_TRIGGERED = 0x04000000, // 26
- SPELL_ATTR_EX3_DRAIN_SOUL = 0x08000000, // 27 only drain soul has this flag
- SPELL_ATTR_EX3_UNK28 = 0x10000000, // 28
- SPELL_ATTR_EX3_NO_DONE_BONUS = 0x20000000, // 29 Ignore caster spellpower and done damage mods?
- SPELL_ATTR_EX3_UNK30 = 0x40000000, // 30 Shaman's Fire Nova 3.3.0, Sweeping Strikes 3.3.0
- SPELL_ATTR_EX3_UNK31 = 0x80000000 // 31
+ 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_UNK4 = 0x00000010, // 4 Druid Rebirth only this spell have this flag
+ 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_PLAYERS_ONLY = 0x00000100, // 8 Player only?
+ SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_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_REQUIRE_DEAD_TARGET = 0x00001000, // 12
+ SPELL_ATTR3_UNK13 = 0x00002000, // 13
+ SPELL_ATTR3_UNK14 = 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_UNK16 = 0x00010000, // 16 no triggers effects that trigger on casting a spell?? (15290 - 2.2ptr change)
+ SPELL_ATTR3_NO_INITIAL_AGGRO = 0x00020000, // 17 Soothe Animal, 39758, Mind Soothe
+ SPELL_ATTR3_UNK18 = 0x00040000, // 18 added to Explosive Trap Effect 3.3.0, removed from Mutilate 3.3.0
+ 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
+ SPELL_ATTR3_REQ_WAND = 0x00400000, // 22 Req wand
+ SPELL_ATTR3_UNK23 = 0x00800000, // 23
+ SPELL_ATTR3_REQ_OFFHAND = 0x01000000, // 24 Req offhand weapon
+ SPELL_ATTR3_UNK25 = 0x02000000, // 25 no cause spell pushback ?
+ SPELL_ATTR3_CAN_PROC_TRIGGERED = 0x04000000, // 26
+ 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?
+ SPELL_ATTR3_UNK30 = 0x40000000, // 30 Shaman's Fire Nova 3.3.0, Sweeping Strikes 3.3.0
+ SPELL_ATTR3_UNK31 = 0x80000000 // 31
};
enum SpellAttr4
{
- SPELL_ATTR_EX4_UNK0 = 0x00000001, // 0
- SPELL_ATTR_EX4_UNK1 = 0x00000002, // 1 proc on finishing move?
- SPELL_ATTR_EX4_UNK2 = 0x00000004, // 2
- SPELL_ATTR_EX4_CANT_PROC_FROM_SELFCAST = 0x00000008, // 3
- SPELL_ATTR_EX4_UNK4 = 0x00000010, // 4 This will no longer cause guards to attack on use??
- SPELL_ATTR_EX4_UNK5 = 0x00000020, // 5
- SPELL_ATTR_EX4_NOT_STEALABLE = 0x00000040, // 6 although such auras might be dispellable, they cannot be stolen
- SPELL_ATTR_EX4_TRIGGERED = 0x00000080, // 7 spells forced to be triggered
- SPELL_ATTR_EX4_FIXED_DAMAGE = 0x00000100, // 8 decimate, share damage?
- SPELL_ATTR_EX4_UNK9 = 0x00000200, // 9
- SPELL_ATTR_EX4_SPELL_VS_EXTEND_COST = 0x00000400, // 10 Rogue Shiv have this flag
- SPELL_ATTR_EX4_UNK11 = 0x00000800, // 11
- SPELL_ATTR_EX4_UNK12 = 0x00001000, // 12
- SPELL_ATTR_EX4_UNK13 = 0x00002000, // 13
- SPELL_ATTR_EX4_UNK14 = 0x00004000, // 14
- SPELL_ATTR_EX4_UNK15 = 0x00008000, // 15
- SPELL_ATTR_EX4_NOT_USABLE_IN_ARENA = 0x00010000, // 16 not usable in arena
- SPELL_ATTR_EX4_USABLE_IN_ARENA = 0x00020000, // 17 usable in arena
- SPELL_ATTR_EX4_UNK18 = 0x00040000, // 18
- SPELL_ATTR_EX4_UNK19 = 0x00080000, // 19
- SPELL_ATTR_EX4_NOT_CHECK_SELFCAST_POWER = 0x00100000, // 20 supersedes message "More powerful spell applied" for self casts.
- SPELL_ATTR_EX4_UNK21 = 0x00200000, // 21
- SPELL_ATTR_EX4_UNK22 = 0x00400000, // 22
- SPELL_ATTR_EX4_UNK23 = 0x00800000, // 23
- SPELL_ATTR_EX4_UNK24 = 0x01000000, // 24
- SPELL_ATTR_EX4_UNK25 = 0x02000000, // 25 pet scaling auras
- SPELL_ATTR_EX4_CAST_ONLY_IN_OUTLAND = 0x04000000, // 26 Can only be used in Outland.
- SPELL_ATTR_EX4_UNK27 = 0x08000000, // 27
- SPELL_ATTR_EX4_UNK28 = 0x10000000, // 28
- SPELL_ATTR_EX4_UNK29 = 0x20000000, // 29
- SPELL_ATTR_EX4_UNK30 = 0x40000000, // 30
- SPELL_ATTR_EX4_UNK31 = 0x80000000 // 31
+ SPELL_ATTR4_UNK0 = 0x00000001, // 0
+ SPELL_ATTR4_UNK1 = 0x00000002, // 1 proc on finishing move?
+ SPELL_ATTR4_UNK2 = 0x00000004, // 2
+ SPELL_ATTR4_CANT_PROC_FROM_SELFCAST = 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_TRIGGERED = 0x00000080, // 7 spells forced to be triggered
+ SPELL_ATTR4_FIXED_DAMAGE = 0x00000100, // 8 decimate, share damage?
+ SPELL_ATTR4_UNK9 = 0x00000200, // 9
+ 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_UNK14 = 0x00004000, // 14
+ SPELL_ATTR4_UNK15 = 0x00008000, // 15
+ SPELL_ATTR4_NOT_USABLE_IN_ARENA = 0x00010000, // 16 not usable in arena
+ SPELL_ATTR4_USABLE_IN_ARENA = 0x00020000, // 17 usable in arena
+ SPELL_ATTR4_UNK18 = 0x00040000, // 18
+ SPELL_ATTR4_UNK19 = 0x00080000, // 19
+ SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER = 0x00100000, // 20 supersedes message "More powerful spell applied" for self casts.
+ SPELL_ATTR4_UNK21 = 0x00200000, // 21
+ SPELL_ATTR4_UNK22 = 0x00400000, // 22
+ SPELL_ATTR4_UNK23 = 0x00800000, // 23
+ SPELL_ATTR4_UNK24 = 0x01000000, // 24
+ SPELL_ATTR4_UNK25 = 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
+ SPELL_ATTR4_UNK29 = 0x20000000, // 29
+ SPELL_ATTR4_UNK30 = 0x40000000, // 30
+ SPELL_ATTR4_UNK31 = 0x80000000 // 31
};
enum SpellAttr5
{
- SPELL_ATTR_EX5_UNK0 = 0x00000001, // 0
- SPELL_ATTR_EX5_NO_REAGENT_WHILE_PREP = 0x00000002, // 1 not need reagents if UNIT_FLAG_PREPARATION
- SPELL_ATTR_EX5_UNK2 = 0x00000004, // 2
- SPELL_ATTR_EX5_USABLE_WHILE_STUNNED = 0x00000008, // 3 usable while stunned
- SPELL_ATTR_EX5_UNK4 = 0x00000010, // 4
- SPELL_ATTR_EX5_SINGLE_TARGET_SPELL = 0x00000020, // 5 Only one target can be apply at a time
- SPELL_ATTR_EX5_UNK6 = 0x00000040, // 6
- SPELL_ATTR_EX5_UNK7 = 0x00000080, // 7
- SPELL_ATTR_EX5_UNK8 = 0x00000100, // 8
- SPELL_ATTR_EX5_START_PERIODIC_AT_APPLY = 0x00000200, // 9 begin periodic tick at aura apply
- SPELL_ATTR_EX5_UNK10 = 0x00000400, // 10
- SPELL_ATTR_EX5_UNK11 = 0x00000800, // 11
- SPELL_ATTR_EX5_UNK12 = 0x00001000, // 12
- SPELL_ATTR_EX5_UNK13 = 0x00002000, // 13
- SPELL_ATTR_EX5_UNK14 = 0x00004000, // 14
- SPELL_ATTR_EX5_UNK15 = 0x00008000, // 15
- SPELL_ATTR_EX5_UNK16 = 0x00010000, // 16
- SPELL_ATTR_EX5_USABLE_WHILE_FEARED = 0x00020000, // 17 usable while feared
- SPELL_ATTR_EX5_USABLE_WHILE_CONFUSED = 0x00040000, // 18 usable while confused
- SPELL_ATTR_EX5_UNK19 = 0x00080000, // 19
- SPELL_ATTR_EX5_UNK20 = 0x00100000, // 20
- SPELL_ATTR_EX5_UNK21 = 0x00200000, // 21
- SPELL_ATTR_EX5_UNK22 = 0x00400000, // 22
- SPELL_ATTR_EX5_UNK23 = 0x00800000, // 23
- SPELL_ATTR_EX5_UNK24 = 0x01000000, // 24
- SPELL_ATTR_EX5_UNK25 = 0x02000000, // 25
- SPELL_ATTR_EX5_UNK26 = 0x04000000, // 26
- SPELL_ATTR_EX5_UNK27 = 0x08000000, // 27
- SPELL_ATTR_EX5_UNK28 = 0x10000000, // 28
- SPELL_ATTR_EX5_UNK29 = 0x20000000, // 29
- SPELL_ATTR_EX5_UNK30 = 0x40000000, // 30
- SPELL_ATTR_EX5_UNK31 = 0x80000000 // 31 Forces all nearby enemies to focus attacks caster
+ SPELL_ATTR5_UNK0 = 0x00000001, // 0
+ SPELL_ATTR5_NO_REAGENT_WHILE_PREP = 0x00000002, // 1 not need reagents if UNIT_FLAG_PREPARATION
+ SPELL_ATTR5_UNK2 = 0x00000004, // 2
+ 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_UNK10 = 0x00000400, // 10
+ SPELL_ATTR5_UNK11 = 0x00000800, // 11
+ SPELL_ATTR5_UNK12 = 0x00001000, // 12
+ SPELL_ATTR5_UNK13 = 0x00002000, // 13
+ SPELL_ATTR5_UNK14 = 0x00004000, // 14
+ SPELL_ATTR5_UNK15 = 0x00008000, // 15
+ SPELL_ATTR5_UNK16 = 0x00010000, // 16
+ SPELL_ATTR5_USABLE_WHILE_FEARED = 0x00020000, // 17 usable while feared
+ SPELL_ATTR5_USABLE_WHILE_CONFUSED = 0x00040000, // 18 usable while confused
+ SPELL_ATTR5_UNK19 = 0x00080000, // 19
+ 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_UNK26 = 0x04000000, // 26
+ SPELL_ATTR5_UNK27 = 0x08000000, // 27
+ SPELL_ATTR5_UNK28 = 0x10000000, // 28
+ SPELL_ATTR5_UNK29 = 0x20000000, // 29
+ SPELL_ATTR5_UNK30 = 0x40000000, // 30
+ SPELL_ATTR5_UNK31 = 0x80000000 // 31 Forces all nearby enemies to focus attacks caster
};
enum SpellAttr6
{
- SPELL_ATTR_EX6_UNK0 = 0x00000001, // 0 Only Move spell have this flag
- SPELL_ATTR_EX6_ONLY_IN_ARENA = 0x00000002, // 1 only usable in arena
- SPELL_ATTR_EX6_IGNORE_CASTER_AURAS = 0x00000004, // 2
- SPELL_ATTR_EX6_UNK3 = 0x00000008, // 3
- SPELL_ATTR_EX6_UNK4 = 0x00000010, // 4
- SPELL_ATTR_EX6_UNK5 = 0x00000020, // 5
- SPELL_ATTR_EX6_UNK6 = 0x00000040, // 6
- SPELL_ATTR_EX6_UNK7 = 0x00000080, // 7
- SPELL_ATTR_EX6_UNK8 = 0x00000100, // 8
- SPELL_ATTR_EX6_UNK9 = 0x00000200, // 9
- SPELL_ATTR_EX6_UNK10 = 0x00000400, // 10
- SPELL_ATTR_EX6_NOT_IN_RAID_INSTANCE = 0x00000800, // 11 not usable in raid instance
- SPELL_ATTR_EX6_UNK12 = 0x00001000, // 12
- SPELL_ATTR_EX6_UNK13 = 0x00002000, // 13
- SPELL_ATTR_EX6_UNK14 = 0x00004000, // 14
- SPELL_ATTR_EX6_UNK15 = 0x00008000, // 15 not set in 3.0.3
- SPELL_ATTR_EX6_UNK16 = 0x00010000, // 16
- SPELL_ATTR_EX6_UNK17 = 0x00020000, // 17
- SPELL_ATTR_EX6_UNK18 = 0x00040000, // 18
- SPELL_ATTR_EX6_UNK19 = 0x00080000, // 19
- SPELL_ATTR_EX6_UNK20 = 0x00100000, // 20
- SPELL_ATTR_EX6_CLIENT_UI_TARGET_EFFECTS = 0x00200000, // 21 it's only client-side attribute
- SPELL_ATTR_EX6_UNK22 = 0x00400000, // 22
- SPELL_ATTR_EX6_UNK23 = 0x00800000, // 23 not set in 3.0.3
- SPELL_ATTR_EX6_UNK24 = 0x01000000, // 24 not set in 3.0.3
- SPELL_ATTR_EX6_UNK25 = 0x02000000, // 25 not set in 3.0.3
- SPELL_ATTR_EX6_UNK26 = 0x04000000, // 26 not set in 3.0.3
- SPELL_ATTR_EX6_UNK27 = 0x08000000, // 27 not set in 3.0.3
- SPELL_ATTR_EX6_UNK28 = 0x10000000, // 28 not set in 3.0.3
- SPELL_ATTR_EX6_UNK29 = 0x20000000, // 29 not set in 3.0.3
- SPELL_ATTR_EX6_UNK30 = 0x40000000, // 30 not set in 3.0.3
- SPELL_ATTR_EX6_UNK31 = 0x80000000 // 31 not set in 3.0.3
+ SPELL_ATTR6_UNK0 = 0x00000001, // 0 Only Move spell have this flag
+ SPELL_ATTR6_ONLY_IN_ARENA = 0x00000002, // 1 only usable in arena
+ SPELL_ATTR6_IGNORE_CASTER_AURAS = 0x00000004, // 2
+ SPELL_ATTR6_UNK3 = 0x00000008, // 3
+ SPELL_ATTR6_UNK4 = 0x00000010, // 4
+ SPELL_ATTR6_UNK5 = 0x00000020, // 5
+ SPELL_ATTR6_UNK6 = 0x00000040, // 6
+ SPELL_ATTR6_UNK7 = 0x00000080, // 7
+ SPELL_ATTR6_UNK8 = 0x00000100, // 8
+ SPELL_ATTR6_UNK9 = 0x00000200, // 9
+ SPELL_ATTR6_UNK10 = 0x00000400, // 10
+ SPELL_ATTR6_NOT_IN_RAID_INSTANCE = 0x00000800, // 11 not usable in raid instance
+ SPELL_ATTR6_UNK12 = 0x00001000, // 12
+ SPELL_ATTR6_UNK13 = 0x00002000, // 13
+ SPELL_ATTR6_UNK14 = 0x00004000, // 14
+ SPELL_ATTR6_UNK15 = 0x00008000, // 15 not set in 3.0.3
+ SPELL_ATTR6_UNK16 = 0x00010000, // 16
+ SPELL_ATTR6_UNK17 = 0x00020000, // 17
+ SPELL_ATTR6_UNK18 = 0x00040000, // 18
+ SPELL_ATTR6_UNK19 = 0x00080000, // 19
+ SPELL_ATTR6_UNK20 = 0x00100000, // 20
+ SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS = 0x00200000, // 21 it's only client-side attribute
+ SPELL_ATTR6_UNK22 = 0x00400000, // 22
+ SPELL_ATTR6_UNK23 = 0x00800000, // 23 not set in 3.0.3
+ SPELL_ATTR6_UNK24 = 0x01000000, // 24 not set in 3.0.3
+ SPELL_ATTR6_UNK25 = 0x02000000, // 25 not set in 3.0.3
+ SPELL_ATTR6_UNK26 = 0x04000000, // 26 not set in 3.0.3
+ SPELL_ATTR6_UNK27 = 0x08000000, // 27 not set in 3.0.3
+ SPELL_ATTR6_UNK28 = 0x10000000, // 28 not set in 3.0.3
+ SPELL_ATTR6_UNK29 = 0x20000000, // 29 not set in 3.0.3
+ SPELL_ATTR6_UNK30 = 0x40000000, // 30 not set in 3.0.3
+ SPELL_ATTR6_UNK31 = 0x80000000 // 31 not set in 3.0.3
};
enum SpellAttr7
{
- SPELL_ATTR_EX7_UNK0 = 0x00000001, // 0 Shaman's new spells (Call of the ...), Feign Death.
- SPELL_ATTR_EX7_UNK1 = 0x00000002, // 1 Not set in 3.2.2a.
- SPELL_ATTR_EX7_REACTIVATE_AT_RESURRECT = 0x00000004, // 2 Paladin's auras and 65607 only.
- SPELL_ATTR_EX7_DISABLED_CLIENT_SIDE = 0x00000008, // 3 used only by client to disable spells client-side. some sort of special player flag (0x40000) bypasses that restriction
- SPELL_ATTR_EX7_UNK4 = 0x00000010, // 4 Only 66109 test spell.
- SPELL_ATTR_EX7_SUMMON_PLAYER_TOTEM = 0x00000020, // 5 Only Shaman player totems.
- SPELL_ATTR_EX7_UNK6 = 0x00000040, // 6 Dark Surge, Surge of Light, Burning Breath triggers (boss spells).
- SPELL_ATTR_EX7_UNK7 = 0x00000080, // 7 66218 (Launch) spell.
- SPELL_ATTR_EX7_UNK8 = 0x00000100, // 8 Teleports, mounts and other spells.
- SPELL_ATTR_EX7_UNK9 = 0x00000200, // 9 Teleports, mounts and other spells.
- SPELL_ATTR_EX7_DISPEL_CHARGES = 0x00000400, // 10 Dispel and Spellsteal individual charges instead of whole aura.
- SPELL_ATTR_EX7_INTERRUPT_ONLY_NONPLAYER = 0x00000800, // 11 Only non-player casts interrupt, though Feral Charge - Bear has it.
- SPELL_ATTR_EX7_UNK12 = 0x00001000, // 12 Not set in 3.2.2a.
- SPELL_ATTR_EX7_UNK13 = 0x00002000, // 13 Not set in 3.2.2a.
- SPELL_ATTR_EX7_UNK14 = 0x00004000, // 14 Only 52150 (Raise Dead - Pet) spell.
- SPELL_ATTR_EX7_UNK15 = 0x00008000, // 15 Exorcism. Usable on players? 100% crit chance on undead and demons?
- SPELL_ATTR_EX7_UNK16 = 0x00010000, // 16 Druid spells (29166, 54833, 64372, 68285).
- SPELL_ATTR_EX7_UNK17 = 0x00020000, // 17 Only 27965 (Suicide) spell.
- SPELL_ATTR_EX7_HAS_CHARGE_EFFECT = 0x00040000, // 18 Only spells that have Charge among effects.
- SPELL_ATTR_EX7_ZONE_TELEPORT = 0x00080000 // 19 Teleports to specific zones.
+ SPELL_ATTR7_UNK0 = 0x00000001, // 0 Shaman's new spells (Call of the ...), Feign Death.
+ SPELL_ATTR7_UNK1 = 0x00000002, // 1 Not set in 3.2.2a.
+ SPELL_ATTR7_REACTIVATE_AT_RESURRECT = 0x00000004, // 2 Paladin's auras and 65607 only.
+ SPELL_ATTR7_DISABLED_CLIENT_SIDE = 0x00000008, // 3 used only by client to disable spells client-side. some sort of special player flag (0x40000) bypasses that restriction
+ SPELL_ATTR7_UNK4 = 0x00000010, // 4 Only 66109 test spell.
+ SPELL_ATTR7_SUMMON_PLAYER_TOTEM = 0x00000020, // 5 Only Shaman player totems.
+ SPELL_ATTR7_UNK6 = 0x00000040, // 6 Dark Surge, Surge of Light, Burning Breath triggers (boss spells).
+ SPELL_ATTR7_UNK7 = 0x00000080, // 7 66218 (Launch) spell.
+ SPELL_ATTR7_UNK8 = 0x00000100, // 8 Teleports, mounts and other spells.
+ SPELL_ATTR7_UNK9 = 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_UNK16 = 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.
};
#define MIN_TALENT_SPEC 0
diff --git a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
index 82bf2e10f2f..4d54bb6981a 100755
--- a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
@@ -85,7 +85,7 @@ void WorldSession::HandlePetAction(WorldPacket & recv_data)
SpellEntry const* spell = (flag == ACT_ENABLED || flag == ACT_PASSIVE) ? sSpellStore.LookupEntry(spellid) : NULL;
if (!spell)
return;
- if (!(spell->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD))
+ if (!(spell->Attributes & SPELL_ATTR0_CASTABLE_WHILE_DEAD))
return;
}
diff --git a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp
index 1e40b48e23e..eccd40e3379 100755
--- a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp
@@ -424,8 +424,8 @@ void WorldSession::HandleCancelAuraOpcode(WorldPacket& recvPacket)
if (!spellInfo)
return;
- // not allow remove non positive spells and spells with attr SPELL_ATTR_CANT_CANCEL
- if (!IsPositiveSpell(spellId) || (spellInfo->Attributes & SPELL_ATTR_CANT_CANCEL))
+ // not allow remove non positive spells and spells with attr SPELL_ATTR0_CANT_CANCEL
+ if (!IsPositiveSpell(spellId) || (spellInfo->Attributes & SPELL_ATTR0_CANT_CANCEL))
return;
// don't allow cancelling passive auras (some of them are visible)
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 823d8b7f031..4f8ddd423fa 100755
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -848,14 +848,14 @@ void AuraEffect::CalculatePeriodic(Unit * caster, bool create)
if (create)
{
// Start periodic on next tick or at aura apply
- if (m_amplitude && !(m_spellProto->AttributesEx5 & SPELL_ATTR_EX5_START_PERIODIC_AT_APPLY))
+ if (m_amplitude && !(m_spellProto->AttributesEx5 & SPELL_ATTR5_START_PERIODIC_AT_APPLY))
m_periodicTimer += m_amplitude;
}
else if (m_amplitude) // load aura from character_aura
{
m_tickNumber = GetBase()->GetDuration() / m_amplitude;
m_periodicTimer = GetBase()->GetDuration() % m_amplitude;
- if (m_spellProto->AttributesEx5 & SPELL_ATTR_EX5_START_PERIODIC_AT_APPLY)
+ if (m_spellProto->AttributesEx5 & SPELL_ATTR5_START_PERIODIC_AT_APPLY)
++m_tickNumber;
}
}
@@ -1025,7 +1025,7 @@ void AuraEffect::ApplySpellMod(Unit * target, bool apply)
Aura * aura = iter->second->GetBase();
// only passive auras-active auras should have amount set on spellcast and not be affected
// if aura is casted by others, it will not be affected
- if ((aura->IsPassive() || aura->GetSpellProto()->AttributesEx2 & SPELL_ATTR_EX2_ALWAYS_APPLY_MODIFIERS) && aura->GetCasterGUID() == guid && sSpellMgr.IsAffectedByMod(aura->GetSpellProto(), m_spellmod))
+ if ((aura->IsPassive() || aura->GetSpellProto()->AttributesEx2 & SPELL_ATTR2_ALWAYS_APPLY_MODIFIERS) && aura->GetCasterGUID() == guid && sSpellMgr.IsAffectedByMod(aura->GetSpellProto(), m_spellmod))
{
if (GetMiscValue() == SPELLMOD_ALL_EFFECTS)
{
@@ -1538,7 +1538,7 @@ void AuraEffect::PeriodicTick(AuraApplication * aurApp, Unit * caster) const
}
// heal for caster damage (must be alive)
- if (target != caster && GetSpellProto()->AttributesEx2 & SPELL_ATTR_EX2_HEALTH_FUNNEL && !caster->isAlive())
+ if (target != caster && GetSpellProto()->AttributesEx2 & SPELL_ATTR2_HEALTH_FUNNEL && !caster->isAlive())
break;
if (GetBase()->GetDuration() == -1 && target->IsFullHealth())
@@ -1611,7 +1611,7 @@ void AuraEffect::PeriodicTick(AuraApplication * aurApp, Unit * caster) const
// Health Funnel
// damage caster for heal amount
- if (target != caster && GetSpellProto()->AttributesEx2 & SPELL_ATTR_EX2_HEALTH_FUNNEL)
+ if (target != caster && GetSpellProto()->AttributesEx2 & SPELL_ATTR2_HEALTH_FUNNEL)
{
uint32 damage = SpellMgr::CalculateSpellEffectAmount(GetSpellProto(), 0); // damage is not affected by spell power
if ((int32)damage > gain)
@@ -2584,7 +2584,7 @@ void AuraEffect::HandleShapeshiftBoosts(Unit * target, bool apply) const
if (itr->second->state == PLAYERSPELL_REMOVED || itr->second->disabled) continue;
if (itr->first == spellId || itr->first == spellId2) continue;
SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first);
- if (!spellInfo || !(spellInfo->Attributes & (SPELL_ATTR_PASSIVE | SPELL_ATTR_UNK7))) continue;
+ if (!spellInfo || !(spellInfo->Attributes & (SPELL_ATTR0_PASSIVE | SPELL_ATTR0_UNK7))) continue;
if (spellInfo->Stances & (1<<(GetMiscValue()-1)))
target->CastSpell(target, itr->first, true, NULL, this);
}
@@ -4352,7 +4352,7 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const * aurApp, uint
target->RemoveAurasByType(SPELL_AURA_MOD_DECREASE_SPEED);
}
- if (apply && GetSpellProto()->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)
+ if (apply && GetSpellProto()->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY)
for (std::list <AuraType>::iterator iter = immunity_list.begin(); iter != immunity_list.end(); ++iter)
target->RemoveAurasByType(*iter);
@@ -4397,7 +4397,7 @@ void AuraEffect::HandleModMechanicImmunity(AuraApplication const * aurApp, uint8
break;
}
- if (apply && GetSpellProto()->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)
+ if (apply && GetSpellProto()->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY)
target->RemoveAurasWithMechanic(mechanic, AURA_REMOVE_BY_DEFAULT, GetId());
}
@@ -4434,7 +4434,7 @@ void AuraEffect::HandleAuraModStateImmunity(AuraApplication const * aurApp, uint
Unit * target = aurApp->GetTarget();
- if ((apply) && GetSpellProto()->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)
+ if ((apply) && GetSpellProto()->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY)
{
target->RemoveAurasByType(AuraType(GetMiscValue()), NULL , GetBase());
}
@@ -4455,13 +4455,13 @@ void AuraEffect::HandleAuraModSchoolImmunity(AuraApplication const * aurApp, uin
target->ApplySpellImmune(GetId(),IMMUNITY_SCHOOL,GetMiscValue(),(apply));
// remove all flag auras (they are positive, but they must be removed when you are immune)
- if (GetSpellProto()->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY
- && GetSpellProto()->AttributesEx2 & SPELL_ATTR_EX2_DAMAGE_REDUCED_SHIELD)
+ if (GetSpellProto()->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY
+ && GetSpellProto()->AttributesEx2 & SPELL_ATTR2_DAMAGE_REDUCED_SHIELD)
target->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION);
// TODO: optimalize this cycle - use RemoveAurasWithInterruptFlags call or something else
if ((apply)
- && GetSpellProto()->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY
+ && GetSpellProto()->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY
&& IsPositiveSpell(GetId())) //Only positive immunity removes auras
{
uint32 school_mask = GetMiscValue();
@@ -4808,8 +4808,8 @@ void AuraEffect::HandleModTotalPercentStat(AuraApplication const * aurApp, uint8
}
}
- //recalculate current HP/MP after applying aura modifications (only for spells with SPELL_ATTR_UNK4 0x00000010 flag)
- if ((GetMiscValue() == STAT_STAMINA) && (maxHPValue > 0) && (m_spellProto->Attributes & SPELL_ATTR_UNK4))
+ //recalculate current HP/MP after applying aura modifications (only for spells with SPELL_ATTR0_UNK4 0x00000010 flag)
+ if ((GetMiscValue() == STAT_STAMINA) && (maxHPValue > 0) && (m_spellProto->Attributes & SPELL_ATTR0_UNK4))
{
uint32 newHPValue = target->CountPctFromMaxHealth(int32(100.0f * curHPValue / maxHPValue));
target->SetHealth(newHPValue);
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index fdedea53aa4..01138aea7f3 100755
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -408,7 +408,7 @@ void Aura::_ApplyForTarget(Unit * target, Unit * caster, AuraApplication * auraA
// set infinity cooldown state for spells
if (caster && caster->GetTypeId() == TYPEID_PLAYER)
{
- if (m_spellProto->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE)
+ if (m_spellProto->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE)
{
Item* castItem = m_castItemGuid ? caster->ToPlayer()->GetItemByGuid(m_castItemGuid) : NULL;
caster->ToPlayer()->AddSpellAndCategoryCooldowns(m_spellProto,castItem ? castItem->GetEntry() : 0, NULL,true);
@@ -439,7 +439,7 @@ void Aura::_UnapplyForTarget(Unit * target, Unit * caster, AuraApplication * aur
// reset cooldown state for spells
if (caster && caster->GetTypeId() == TYPEID_PLAYER)
{
- if (GetSpellProto()->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE)
+ if (GetSpellProto()->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE)
// note: item based cooldowns and cooldown spell mods with charges ignored (unknown existed cases)
caster->ToPlayer()->SendCooldownEvent(GetSpellProto());
}
@@ -884,7 +884,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
if (apply)
{
// Apply linked auras (On first aura apply)
- if (sSpellMgr.GetSpellCustomAttr(GetId()) & SPELL_ATTR_CU_LINK_AURA)
+ if (sSpellMgr.GetSpellCustomAttr(GetId()) & SPELL_ATTR0_CU_LINK_AURA)
{
if (const std::vector<int32> *spell_triggered = sSpellMgr.GetSpellLinked(GetId() + SPELL_LINK_AURA))
for (std::vector<int32>::const_iterator itr = spell_triggered->begin(); itr != spell_triggered->end(); ++itr)
@@ -1090,7 +1090,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
{
if (uint32 customAttr = sSpellMgr.GetSpellCustomAttr(GetId()))
{
- if (customAttr & SPELL_ATTR_CU_LINK_REMOVE)
+ if (customAttr & SPELL_ATTR0_CU_LINK_REMOVE)
{
if (const std::vector<int32> *spell_triggered = sSpellMgr.GetSpellLinked(-(int32)GetId()))
for (std::vector<int32>::const_iterator itr = spell_triggered->begin(); itr != spell_triggered->end(); ++itr)
@@ -1101,7 +1101,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
target->CastSpell(target, *itr, true, NULL, NULL, GetCasterGUID());
}
}
- if (customAttr & SPELL_ATTR_CU_LINK_AURA)
+ if (customAttr & SPELL_ATTR0_CU_LINK_AURA)
{
if (const std::vector<int32> *spell_triggered = sSpellMgr.GetSpellLinked(GetId() + SPELL_LINK_AURA))
for (std::vector<int32>::const_iterator itr = spell_triggered->begin(); itr != spell_triggered->end(); ++itr)
diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h
index 84f593a4c66..6b619ef2e9a 100755
--- a/src/server/game/Spells/Auras/SpellAuras.h
+++ b/src/server/game/Spells/Auras/SpellAuras.h
@@ -135,7 +135,7 @@ class Aura
bool IsPassive() const;
bool IsDeathPersistent() const;
- bool IsRemovedOnShapeLost(Unit * target) const { return (GetCasterGUID() == target->GetGUID() && m_spellProto->Stances && !(m_spellProto->AttributesEx2 & SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT) && !(m_spellProto->Attributes & SPELL_ATTR_NOT_SHAPESHIFT)); }
+ bool IsRemovedOnShapeLost(Unit * target) const { return (GetCasterGUID() == target->GetGUID() && m_spellProto->Stances && !(m_spellProto->AttributesEx2 & SPELL_ATTR2_NOT_NEED_SHAPESHIFT) && !(m_spellProto->Attributes & SPELL_ATTR0_NOT_SHAPESHIFT)); }
bool CanBeSaved() const;
bool IsRemoved() const { return m_isRemoved; }
bool IsVisible() const;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index bd9f466fb86..5bafca4c376 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -441,7 +441,7 @@ m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo))
switch (m_spellInfo->DmgClass)
{
case SPELL_DAMAGE_CLASS_MELEE:
- if (m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_REQ_OFFHAND)
+ if (m_spellInfo->AttributesEx3 & SPELL_ATTR3_REQ_OFFHAND)
m_attackType = OFF_ATTACK;
else
m_attackType = BASE_ATTACK;
@@ -451,7 +451,7 @@ m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo))
break;
default:
// Wands
- if (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG)
+ if (m_spellInfo->AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG)
m_attackType = RANGED_ATTACK;
else
m_attackType = BASE_ATTACK;
@@ -485,7 +485,7 @@ m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo))
m_spellState = SPELL_STATE_NULL;
- m_IsTriggeredSpell = bool(triggered || (info->AttributesEx4 & SPELL_ATTR_EX4_TRIGGERED));
+ m_IsTriggeredSpell = bool(triggered || (info->AttributesEx4 & SPELL_ATTR4_TRIGGERED));
m_CastItem = NULL;
unitTarget = NULL;
@@ -511,7 +511,7 @@ m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo))
// determine reflection
m_canReflect = false;
- if (m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MAGIC && !IsAreaOfEffectSpell(m_spellInfo) && !(m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_CANT_REFLECTED))
+ if (m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MAGIC && !IsAreaOfEffectSpell(m_spellInfo) && !(m_spellInfo->AttributesEx2 & SPELL_ATTR2_CANT_REFLECTED))
{
for (int j = 0; j < MAX_SPELL_EFFECTS; ++j)
{
@@ -521,7 +521,7 @@ m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo))
if (!IsPositiveTarget(m_spellInfo->EffectImplicitTargetA[j], m_spellInfo->EffectImplicitTargetB[j]))
m_canReflect = true;
else
- m_canReflect = (m_spellInfo->AttributesEx & SPELL_ATTR_EX_NEGATIVE) ? true : false;
+ m_canReflect = (m_spellInfo->AttributesEx & SPELL_ATTR1_NEGATIVE) ? true : false;
if (m_canReflect)
continue;
@@ -758,7 +758,7 @@ void Spell::SelectSpellTargets()
break;
case SPELL_EFFECT_APPLY_AREA_AURA_PARTY:
// AreaAura
- if (m_spellInfo->Attributes & (SPELL_ATTR_CASTABLE_WHILE_SITTING | SPELL_ATTR_CASTABLE_WHILE_MOUNTED | SPELL_ATTR_UNK18 | SPELL_ATTR_NOT_SHAPESHIFT) || m_spellInfo->Attributes == SPELL_ATTR_NOT_SHAPESHIFT)
+ if (m_spellInfo->Attributes & (SPELL_ATTR0_CASTABLE_WHILE_SITTING | SPELL_ATTR0_CASTABLE_WHILE_MOUNTED | SPELL_ATTR0_UNK18 | SPELL_ATTR0_NOT_SHAPESHIFT) || m_spellInfo->Attributes == SPELL_ATTR0_NOT_SHAPESHIFT)
SelectEffectTargets(i, TARGET_UNIT_PARTY_TARGET);
break;
case SPELL_EFFECT_SKIN_PLAYER_CORPSE:
@@ -857,7 +857,7 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * /*triggeredByAura*/)
break;
case SPELL_DAMAGE_CLASS_RANGED:
// Auto attack
- if (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG)
+ if (m_spellInfo->AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG)
{
m_procAttacker = PROC_FLAG_DONE_RANGED_AUTO_ATTACK;
m_procVictim = PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK;
@@ -871,7 +871,7 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * /*triggeredByAura*/)
default:
if (m_spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON &&
m_spellInfo->EquippedItemSubClassMask & (1<<ITEM_SUBCLASS_WEAPON_WAND)
- && m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG) // Wands auto attack
+ && m_spellInfo->AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG) // Wands auto attack
{
m_procAttacker = PROC_FLAG_DONE_RANGED_AUTO_ATTACK;
m_procVictim = PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK;
@@ -905,8 +905,8 @@ void Spell::prepareDataForTriggerSystem(AuraEffect const * /*triggeredByAura*/)
if (!(m_procAttacker & PROC_FLAG_DONE_RANGED_AUTO_ATTACK))
{
if (m_IsTriggeredSpell &&
- (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER ||
- m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_TRIGGERED_CAN_TRIGGER_2))
+ (m_spellInfo->AttributesEx2 & SPELL_ATTR2_TRIGGERED_CAN_TRIGGER ||
+ m_spellInfo->AttributesEx3 & SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_2))
m_procEx |= PROC_EX_INTERNAL_CANT_PROC;
else if (m_IsTriggeredSpell)
m_procEx |= PROC_EX_INTERNAL_TRIGGERED;
@@ -1168,7 +1168,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
//Spells with this flag cannot trigger if effect is casted on self
// Slice and Dice, relentless strikes, eviscerate
- bool canEffectTrigger = unitTarget->CanProc() && (m_spellInfo->AttributesEx4 & (SPELL_ATTR_EX4_CANT_PROC_FROM_SELFCAST) ? m_caster != unitTarget : true);
+ bool canEffectTrigger = unitTarget->CanProc() && (m_spellInfo->AttributesEx4 & (SPELL_ATTR4_CANT_PROC_FROM_SELFCAST) ? m_caster != unitTarget : true);
Unit * spellHitTarget = NULL;
if (missInfo == SPELL_MISS_NONE) // In case spell hit target, do all effect on that target
@@ -1296,7 +1296,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
if (canEffectTrigger && missInfo != SPELL_MISS_REFLECT)
{
caster->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, damageInfo.damage, m_attackType, m_spellInfo, m_triggeredByAuraSpell);
- if (caster->GetTypeId() == TYPEID_PLAYER && (m_spellInfo->Attributes & SPELL_ATTR_STOP_ATTACK_TARGET) == 0 &&
+ if (caster->GetTypeId() == TYPEID_PLAYER && (m_spellInfo->Attributes & SPELL_ATTR0_STOP_ATTACK_TARGET) == 0 &&
(m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE || m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_RANGED))
caster->ToPlayer()->CastItemCombatSpell(unitTarget, m_attackType, procVictim, procEx);
}
@@ -1322,7 +1322,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
// Failed Pickpocket, reveal rogue
if (missInfo == SPELL_MISS_RESIST
- && m_customAttr & SPELL_ATTR_CU_PICKPOCKET
+ && m_customAttr & SPELL_ATTR0_CU_PICKPOCKET
&& unitTarget->GetTypeId() == TYPEID_UNIT)
{
m_caster->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_TALK);
@@ -1333,9 +1333,9 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
if (missInfo != SPELL_MISS_EVADE && m_caster && !m_caster->IsFriendlyTo(unit) && !IsPositiveSpell(m_spellInfo->Id))
{
- m_caster->CombatStart(unit, !(m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_NO_INITIAL_AGGRO));
+ m_caster->CombatStart(unit, !(m_spellInfo->AttributesEx3 & SPELL_ATTR3_NO_INITIAL_AGGRO));
- if (m_customAttr & SPELL_ATTR_CU_AURA_CC)
+ if (m_customAttr & SPELL_ATTR0_CU_AURA_CC)
if (!unit->IsStandState())
unit->SetStandState(UNIT_STAND_STATE_STAND);
}
@@ -1411,7 +1411,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask, bool
{
unit->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_HITBYSPELL);
//TODO: This is a hack. But we do not know what types of stealth should be interrupted by CC
- if ((m_customAttr & SPELL_ATTR_CU_AURA_CC) && unit->IsControlledByPlayer())
+ if ((m_customAttr & SPELL_ATTR0_CU_AURA_CC) && unit->IsControlledByPlayer())
unit->RemoveAurasByType(SPELL_AURA_MOD_STEALTH);
}
else
@@ -1430,7 +1430,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask, bool
if (m_caster->GetTypeId() == TYPEID_PLAYER)
m_caster->ToPlayer()->UpdatePvP(true);
}
- if (unit->isInCombat() && !(m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_NO_INITIAL_AGGRO))
+ if (unit->isInCombat() && !(m_spellInfo->AttributesEx3 & SPELL_ATTR3_NO_INITIAL_AGGRO))
{
m_caster->SetInCombatState(unit->GetCombatTimer() > 0, unit);
unit->getHostileRefManager().threatAssist(m_caster, 0.0f);
@@ -1554,7 +1554,7 @@ void Spell::DoTriggersOnSpellHit(Unit *unit)
}
// spells with this flag can trigger only if not selfcast (eviscerate for example)
- if (m_ChanceTriggerSpells.size() && (!((m_spellInfo->AttributesEx4 & SPELL_ATTR_EX4_CANT_PROC_FROM_SELFCAST) && unit == m_caster)))
+ if (m_ChanceTriggerSpells.size() && (!((m_spellInfo->AttributesEx4 & SPELL_ATTR4_CANT_PROC_FROM_SELFCAST) && unit == m_caster)))
{
int _duration=0;
for (ChanceTriggerSpells::const_iterator i = m_ChanceTriggerSpells.begin(); i != m_ChanceTriggerSpells.end(); ++i)
@@ -1582,7 +1582,7 @@ void Spell::DoTriggersOnSpellHit(Unit *unit)
}
}
- if (m_customAttr & SPELL_ATTR_CU_LINK_HIT)
+ if (m_customAttr & SPELL_ATTR0_CU_LINK_HIT)
{
if (const std::vector<int32> *spell_triggered = sSpellMgr.GetSpellLinked(m_spellInfo->Id + SPELL_LINK_HIT))
for (std::vector<int32>::const_iterator i = spell_triggered->begin(); i != spell_triggered->end(); ++i)
@@ -1840,15 +1840,15 @@ void Spell::SearchAreaTarget(std::list<Unit*> &TagUnitMap, float radius, SpellNo
break;
}
- bool requireDeadTarget = bool(m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_REQUIRE_DEAD_TARGET);
+ bool requireDeadTarget = bool(m_spellInfo->AttributesEx3 & SPELL_ATTR3_REQUIRE_DEAD_TARGET);
Trinity::SpellNotifierCreatureAndPlayer notifier(m_caster, TagUnitMap, radius, type, TargetType, pos, entry, requireDeadTarget);
- if ((m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_PLAYERS_ONLY)
+ if ((m_spellInfo->AttributesEx3 & SPELL_ATTR3_PLAYERS_ONLY)
|| (TargetType == SPELL_TARGETS_ENTRY && !entry))
m_caster->GetMap()->VisitWorld(pos->m_positionX, pos->m_positionY, radius, notifier);
else
m_caster->GetMap()->VisitAll(pos->m_positionX, pos->m_positionY, radius, notifier);
- if (m_customAttr & SPELL_ATTR_CU_EXCLUDE_SELF)
+ if (m_customAttr & SPELL_ATTR0_CU_EXCLUDE_SELF)
TagUnitMap.remove(m_caster);
}
@@ -2131,9 +2131,9 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
break;
case TARGET_TYPE_AREA_CONE:
- if (m_customAttr & SPELL_ATTR_CU_CONE_BACK)
+ if (m_customAttr & SPELL_ATTR0_CU_CONE_BACK)
pushType = PUSH_IN_BACK;
- else if (m_customAttr & SPELL_ATTR_CU_CONE_LINE)
+ else if (m_customAttr & SPELL_ATTR0_CU_CONE_LINE)
pushType = PUSH_IN_LINE;
else
pushType = PUSH_IN_FRONT;
@@ -2155,7 +2155,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
float angle, dist;
float objSize = m_caster->GetObjectSize();
- if (m_spellInfo->AttributesEx & SPELL_ATTR_EX_USE_RADIUS_AS_MAX_DISTANCE)
+ if (m_spellInfo->AttributesEx & SPELL_ATTR1_USE_RADIUS_AS_MAX_DISTANCE)
dist = 0.0f;
else
dist = GetSpellRadiusForFriend(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i]));
@@ -3327,7 +3327,7 @@ void Spell::cast(bool skipCheck)
}
}
- if (m_customAttr & SPELL_ATTR_CU_DIRECT_DAMAGE)
+ if (m_customAttr & SPELL_ATTR0_CU_DIRECT_DAMAGE)
CalculateDamageDoneForAllTargets();
// CAST SPELL
@@ -3375,7 +3375,7 @@ void Spell::cast(bool skipCheck)
handle_immediate();
}
- if (m_customAttr & SPELL_ATTR_CU_LINK_CAST)
+ if (m_customAttr & SPELL_ATTR0_CU_LINK_CAST)
{
if (const std::vector<int32> *spell_triggered = sSpellMgr.GetSpellLinked(m_spellInfo->Id))
{
@@ -3621,7 +3621,7 @@ void Spell::SendSpellCooldown()
}
// have infinity cooldown but set at aura apply // do not set cooldown for triggered spells (needed by reincarnation)
- if (m_spellInfo->Attributes & (SPELL_ATTR_DISABLED_WHILE_ACTIVE | SPELL_ATTR_PASSIVE) || m_IsTriggeredSpell)
+ if (m_spellInfo->Attributes & (SPELL_ATTR0_DISABLED_WHILE_ACTIVE | SPELL_ATTR0_PASSIVE) || m_IsTriggeredSpell)
return;
_player->AddSpellAndCategoryCooldowns(m_spellInfo,m_CastItem ? m_CastItem->GetEntry() : 0, this);
@@ -3781,7 +3781,7 @@ void Spell::finish(bool ok)
break;
}
}
- if (!found && !(m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_RESET_AUTO_ACTIONS))
+ if (!found && !(m_spellInfo->AttributesEx2 & SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS))
{
m_caster->resetAttackTimer(BASE_ATTACK);
if (m_caster->haveOffhandWeapon())
@@ -3810,7 +3810,7 @@ void Spell::finish(bool ok)
}
// Stop Attack for some spells
- if (m_spellInfo->Attributes & SPELL_ATTR_STOP_ATTACK_TARGET)
+ if (m_spellInfo->Attributes & SPELL_ATTR0_STOP_ATTACK_TARGET)
m_caster->AttackStop();
}
@@ -3904,7 +3904,7 @@ void Spell::SendSpellStart()
//sLog.outDebug("Sending SMSG_SPELL_START id=%u", m_spellInfo->Id);
uint32 castFlags = CAST_FLAG_UNKNOWN_2;
- if (m_spellInfo->Attributes & SPELL_ATTR_REQ_AMMO)
+ if (m_spellInfo->Attributes & SPELL_ATTR0_REQ_AMMO)
castFlags |= CAST_FLAG_AMMO;
if ((m_caster->GetTypeId() == TYPEID_PLAYER ||
(m_caster->GetTypeId() == TYPEID_UNIT && m_caster->ToCreature()->isPet()))
@@ -3957,7 +3957,7 @@ void Spell::SendSpellGo()
if ((m_IsTriggeredSpell && !IsAutoRepeatRangedSpell(m_spellInfo)) || m_triggeredByAuraSpell)
castFlags |= CAST_FLAG_PENDING;
- if (m_spellInfo->Attributes & SPELL_ATTR_REQ_AMMO)
+ if (m_spellInfo->Attributes & SPELL_ATTR0_REQ_AMMO)
castFlags |= CAST_FLAG_AMMO; // arrows/bullets visual
if ((m_caster->GetTypeId() == TYPEID_PLAYER ||
(m_caster->GetTypeId() == TYPEID_UNIT && m_caster->ToCreature()->isPet()))
@@ -4743,11 +4743,11 @@ void Spell::HandleEffects(Unit *pUnitTarget,Item *pItemTarget,GameObject *pGOTar
SpellCastResult Spell::CheckCast(bool strict)
{
// check death state
- if (!m_IsTriggeredSpell && !m_caster->isAlive() && !(m_spellInfo->Attributes & SPELL_ATTR_PASSIVE) && !(m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD))
+ if (!m_IsTriggeredSpell && !m_caster->isAlive() && !(m_spellInfo->Attributes & SPELL_ATTR0_PASSIVE) && !(m_spellInfo->Attributes & SPELL_ATTR0_CASTABLE_WHILE_DEAD))
return SPELL_FAILED_CASTER_DEAD;
// check cooldowns to prevent cheating
- if (m_caster->GetTypeId() == TYPEID_PLAYER && !(m_spellInfo->Attributes & SPELL_ATTR_PASSIVE))
+ if (m_caster->GetTypeId() == TYPEID_PLAYER && !(m_spellInfo->Attributes & SPELL_ATTR0_PASSIVE))
{
//can cast triggered (by aura only?) spells while have this flag
if (!m_IsTriggeredSpell && m_caster->ToPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY))
@@ -4771,11 +4771,11 @@ SpellCastResult Spell::CheckCast(bool strict)
if(m_caster->GetTypeId() == TYPEID_PLAYER && VMAP::VMapFactory::createOrGetVMapManager()->isLineOfSightCalcEnabled())
{
- if(m_spellInfo->Attributes & SPELL_ATTR_OUTDOORS_ONLY &&
+ if(m_spellInfo->Attributes & SPELL_ATTR0_OUTDOORS_ONLY &&
!m_caster->GetMap()->IsOutdoors(m_caster->GetPositionX(), m_caster->GetPositionY(), m_caster->GetPositionZ()))
return SPELL_FAILED_ONLY_OUTDOORS;
- if(m_spellInfo->Attributes & SPELL_ATTR_INDOORS_ONLY &&
+ if(m_spellInfo->Attributes & SPELL_ATTR0_INDOORS_ONLY &&
m_caster->GetMap()->IsOutdoors(m_caster->GetPositionX(), m_caster->GetPositionY(), m_caster->GetPositionZ()))
return SPELL_FAILED_ONLY_INDOORS;
}
@@ -4801,7 +4801,7 @@ SpellCastResult Spell::CheckCast(bool strict)
if (shapeError != SPELL_CAST_OK)
return shapeError;
- if ((m_spellInfo->Attributes & SPELL_ATTR_ONLY_STEALTHED) && !(m_caster->HasStealthAura()))
+ if ((m_spellInfo->Attributes & SPELL_ATTR0_ONLY_STEALTHED) && !(m_caster->HasStealthAura()))
return SPELL_FAILED_ONLY_STEALTHED;
}
}
@@ -4868,7 +4868,7 @@ SpellCastResult Spell::CheckCast(bool strict)
if (m_spellInfo->excludeTargetAuraSpell && target->HasAura(m_spellInfo->excludeTargetAuraSpell))
return SPELL_FAILED_TARGET_AURASTATE;
- if (!m_IsTriggeredSpell && target == m_caster && m_spellInfo->AttributesEx & SPELL_ATTR_EX_CANT_TARGET_SELF)
+ if (!m_IsTriggeredSpell && target == m_caster && m_spellInfo->AttributesEx & SPELL_ATTR1_CANT_TARGET_SELF)
return SPELL_FAILED_BAD_TARGETS;
bool non_caster_target = target != m_caster && !sSpellMgr.IsSpellWithCasterSourceTargetsOnly(m_spellInfo);
@@ -4894,7 +4894,7 @@ SpellCastResult Spell::CheckCast(bool strict)
if (targetCreature->hasLootRecipient() && !targetCreature->isTappedBy(m_caster->ToPlayer()))
return SPELL_FAILED_CANT_CAST_ON_TAPPED;
- if (m_customAttr & SPELL_ATTR_CU_PICKPOCKET)
+ if (m_customAttr & SPELL_ATTR0_CU_PICKPOCKET)
{
if (target->GetTypeId() == TYPEID_PLAYER)
return SPELL_FAILED_BAD_TARGETS;
@@ -5001,7 +5001,7 @@ SpellCastResult Spell::CheckCast(bool strict)
return SPELL_FAILED_TARGET_AURASTATE;
//Must be behind the target.
- if (m_spellInfo->AttributesEx2 == SPELL_ATTR_EX2_UNK20 && m_spellInfo->AttributesEx & SPELL_ATTR_EX_UNK9 && target->HasInArc(static_cast<float>(M_PI), m_caster)
+ if (m_spellInfo->AttributesEx2 == SPELL_ATTR2_UNK20 && m_spellInfo->AttributesEx & SPELL_ATTR1_UNK9 && target->HasInArc(static_cast<float>(M_PI), m_caster)
//Exclusion for Pounce: Facing Limitation was removed in 2.0.1, but it still uses the same, old Ex-Flags
&& (!(m_spellInfo->SpellFamilyName == SPELLFAMILY_DRUID && m_spellInfo->SpellFamilyFlags.IsEqual(0x20000,0,0)))
//Mutilate no longer requires you be behind the target as of patch 3.0.3
@@ -5014,27 +5014,27 @@ SpellCastResult Spell::CheckCast(bool strict)
}
//Target must be facing you.
- if ((m_spellInfo->Attributes == (SPELL_ATTR_UNK4 | SPELL_ATTR_NOT_SHAPESHIFT | SPELL_ATTR_UNK18 | SPELL_ATTR_STOP_ATTACK_TARGET)) && !target->HasInArc(static_cast<float>(M_PI), m_caster))
+ if ((m_spellInfo->Attributes == (SPELL_ATTR0_UNK4 | SPELL_ATTR0_NOT_SHAPESHIFT | SPELL_ATTR0_UNK18 | SPELL_ATTR0_STOP_ATTACK_TARGET)) && !target->HasInArc(static_cast<float>(M_PI), m_caster))
{
SendInterrupted(2);
return SPELL_FAILED_NOT_INFRONT;
}
// check if target is in combat
- if (non_caster_target && (m_spellInfo->AttributesEx & SPELL_ATTR_EX_NOT_IN_COMBAT_TARGET) && target->isInCombat())
+ if (non_caster_target && (m_spellInfo->AttributesEx & SPELL_ATTR1_NOT_IN_COMBAT_TARGET) && target->isInCombat())
return SPELL_FAILED_TARGET_AFFECTING_COMBAT;
}
// Spell casted only on battleground
- if ((m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_BATTLEGROUND) && m_caster->GetTypeId() == TYPEID_PLAYER)
+ if ((m_spellInfo->AttributesEx3 & SPELL_ATTR3_BATTLEGROUND) && m_caster->GetTypeId() == TYPEID_PLAYER)
if (!m_caster->ToPlayer()->InBattleground())
return SPELL_FAILED_ONLY_BATTLEGROUNDS;
// do not allow spells to be cast in arenas
- // - with greater than 10 min CD without SPELL_ATTR_EX4_USABLE_IN_ARENA flag
- // - with SPELL_ATTR_EX4_NOT_USABLE_IN_ARENA flag
- if ((m_spellInfo->AttributesEx4 & SPELL_ATTR_EX4_NOT_USABLE_IN_ARENA) ||
- (GetSpellRecoveryTime(m_spellInfo) > 10 * MINUTE * IN_MILLISECONDS && !(m_spellInfo->AttributesEx4 & SPELL_ATTR_EX4_USABLE_IN_ARENA)))
+ // - with greater than 10 min CD without SPELL_ATTR4_USABLE_IN_ARENA flag
+ // - with SPELL_ATTR4_NOT_USABLE_IN_ARENA flag
+ if ((m_spellInfo->AttributesEx4 & SPELL_ATTR4_NOT_USABLE_IN_ARENA) ||
+ (GetSpellRecoveryTime(m_spellInfo) > 10 * MINUTE * IN_MILLISECONDS && !(m_spellInfo->AttributesEx4 & SPELL_ATTR4_USABLE_IN_ARENA)))
if (MapEntry const* mapEntry = sMapStore.LookupEntry(m_caster->GetMapId()))
if (mapEntry->IsBattleArena())
return SPELL_FAILED_NOT_IN_ARENA;
@@ -5053,7 +5053,7 @@ SpellCastResult Spell::CheckCast(bool strict)
// not let players cast spells at mount (and let do it to creatures)
if (m_caster->IsMounted() && m_caster->GetTypeId() == TYPEID_PLAYER && !m_IsTriggeredSpell &&
- !IsPassiveSpell(m_spellInfo->Id) && !(m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_MOUNTED))
+ !IsPassiveSpell(m_spellInfo->Id) && !(m_spellInfo->Attributes & SPELL_ATTR0_CASTABLE_WHILE_MOUNTED))
{
if (m_caster->isInFlight())
return SPELL_FAILED_NOT_ON_TAXI;
@@ -5658,7 +5658,7 @@ SpellCastResult Spell::CheckCast(bool strict)
SpellCastResult Spell::CheckPetCast(Unit* target)
{
- if (!m_caster->isAlive() && !(m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD))
+ if (!m_caster->isAlive() && !(m_spellInfo->Attributes & SPELL_ATTR0_CASTABLE_WHILE_DEAD))
return SPELL_FAILED_CASTER_DEAD;
if (m_caster->HasUnitState(UNIT_STAT_CASTING) && !m_IsTriggeredSpell) //prevent spellcast interruption by another spellcast
@@ -5706,7 +5706,7 @@ SpellCastResult Spell::CheckPetCast(Unit* target)
SpellCastResult Spell::CheckCasterAuras() const
{
// spells totally immuned to caster auras (wsg flag drop, give marks etc)
- if (m_spellInfo->AttributesEx6& SPELL_ATTR_EX6_IGNORE_CASTER_AURAS)
+ if (m_spellInfo->AttributesEx6& SPELL_ATTR6_IGNORE_CASTER_AURAS)
return SPELL_CAST_OK;
uint8 school_immune = 0;
@@ -5715,7 +5715,7 @@ SpellCastResult Spell::CheckCasterAuras() const
// Check if the spell grants school or mechanic immunity.
// We use bitmasks so the loop is done only once and not on every aura check below.
- if (m_spellInfo->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)
+ if (m_spellInfo->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY)
{
for (int i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
@@ -5735,11 +5735,11 @@ SpellCastResult Spell::CheckCasterAuras() const
SpellCastResult prevented_reason = SPELL_CAST_OK;
// Have to check if there is a stun aura. Otherwise will have problems with ghost aura apply while logging out
uint32 unitflag = m_caster->GetUInt32Value(UNIT_FIELD_FLAGS); // Get unit state
- if (unitflag & UNIT_FLAG_STUNNED && !(m_spellInfo->AttributesEx5 & SPELL_ATTR_EX5_USABLE_WHILE_STUNNED))
+ if (unitflag & UNIT_FLAG_STUNNED && !(m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_STUNNED))
prevented_reason = SPELL_FAILED_STUNNED;
- else if (unitflag & UNIT_FLAG_CONFUSED && !(m_spellInfo->AttributesEx5 & SPELL_ATTR_EX5_USABLE_WHILE_CONFUSED))
+ else if (unitflag & UNIT_FLAG_CONFUSED && !(m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_CONFUSED))
prevented_reason = SPELL_FAILED_CONFUSED;
- else if (unitflag & UNIT_FLAG_FLEEING && !(m_spellInfo->AttributesEx5 & SPELL_ATTR_EX5_USABLE_WHILE_FEARED))
+ else if (unitflag & UNIT_FLAG_FLEEING && !(m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_FEARED))
prevented_reason = SPELL_FAILED_FLEEING;
else if (unitflag & UNIT_FLAG_SILENCED && m_spellInfo->PreventionType == SPELL_PREVENTION_TYPE_SILENCE)
prevented_reason = SPELL_FAILED_SILENCED;
@@ -5772,15 +5772,15 @@ SpellCastResult Spell::CheckCasterAuras() const
switch(part->GetAuraType())
{
case SPELL_AURA_MOD_STUN:
- if (!(m_spellInfo->AttributesEx5 & SPELL_ATTR_EX5_USABLE_WHILE_STUNNED))
+ if (!(m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_STUNNED))
return SPELL_FAILED_STUNNED;
break;
case SPELL_AURA_MOD_CONFUSE:
- if (!(m_spellInfo->AttributesEx5 & SPELL_ATTR_EX5_USABLE_WHILE_CONFUSED))
+ if (!(m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_CONFUSED))
return SPELL_FAILED_CONFUSED;
break;
case SPELL_AURA_MOD_FEAR:
- if (!(m_spellInfo->AttributesEx5 & SPELL_ATTR_EX5_USABLE_WHILE_FEARED))
+ if (!(m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_FEARED))
return SPELL_FAILED_FLEEING;
break;
case SPELL_AURA_MOD_SILENCE:
@@ -6405,7 +6405,7 @@ SpellCastResult Spell::CheckItems()
if (m_spellInfo->EquippedItemClass >=0)
{
// main hand weapon required
- if (m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_MAIN_HAND)
+ if (m_spellInfo->AttributesEx3 & SPELL_ATTR3_MAIN_HAND)
{
Item* item = m_caster->ToPlayer()->GetWeaponForAttack(BASE_ATTACK);
@@ -6419,7 +6419,7 @@ SpellCastResult Spell::CheckItems()
}
// offhand hand weapon required
- if (m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_REQ_OFFHAND)
+ if (m_spellInfo->AttributesEx3 & SPELL_ATTR3_REQ_OFFHAND)
{
Item* item = m_caster->ToPlayer()->GetWeaponForAttack(OFF_ATTACK);
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index cb4660b3637..688a661e055 100755
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -511,7 +511,7 @@ class Spell
void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; }
bool IsNextMeleeSwingSpell() const
{
- return m_spellInfo->Attributes & SPELL_ATTR_ON_NEXT_SWING;
+ return m_spellInfo->Attributes & SPELL_ATTR0_ON_NEXT_SWING;
}
bool IsTriggered() const {return m_IsTriggeredSpell;};
bool IsChannelActive() const { return m_caster->GetUInt32Value(UNIT_CHANNEL_SPELL) != 0; }
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 380771a4061..1f4f61b193b 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -333,7 +333,7 @@ void Spell::SpellDamageSchoolDmg(SpellEffIndex effIndex)
case SPELLFAMILY_GENERIC:
{
// Meteor like spells (divided damage to targets)
- if (m_customAttr & SPELL_ATTR_CU_SHARE_DAMAGE)
+ if (m_customAttr & SPELL_ATTR0_CU_SHARE_DAMAGE)
{
uint32 count = 0;
for (std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
@@ -3126,7 +3126,7 @@ void Spell::EffectDispel(SpellEffIndex effIndex)
{
if (aura->GetSpellProto()->Dispel == DISPEL_MAGIC)
{
- bool positive = aurApp->IsPositive() ? (!(aura->GetSpellProto()->AttributesEx & SPELL_ATTR_EX_NEGATIVE)) : false;
+ bool positive = aurApp->IsPositive() ? (!(aura->GetSpellProto()->AttributesEx & SPELL_ATTR1_NEGATIVE)) : false;
// do not remove positive auras if friendly target
// negative auras if non-friendly target
@@ -3137,7 +3137,7 @@ void Spell::EffectDispel(SpellEffIndex effIndex)
// The charges / stack amounts don't count towards the total number of auras that can be dispelled.
// Ie: A dispel on a target with 5 stacks of Winters Chill and a Polymorph has 1 / (1 + 1) -> 50% chance to dispell
// Polymorph instead of 1 / (5 + 1) -> 16%.
- bool dispel_charges = aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR_EX7_DISPEL_CHARGES;
+ bool dispel_charges = aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES;
uint8 charges = dispel_charges ? aura->GetCharges() : aura->GetStackAmount();
if (charges > 0)
dispel_list.push_back(std::make_pair(aura, charges));
@@ -6515,13 +6515,13 @@ void Spell::EffectStealBeneficialBuff(SpellEffIndex effIndex)
if ((1<<aura->GetSpellProto()->Dispel) & dispelMask)
{
// Need check for passive? this
- if (!aurApp->IsPositive() || aura->IsPassive() || aura->GetSpellProto()->AttributesEx4 & SPELL_ATTR_EX4_NOT_STEALABLE)
+ if (!aurApp->IsPositive() || aura->IsPassive() || aura->GetSpellProto()->AttributesEx4 & SPELL_ATTR4_NOT_STEALABLE)
continue;
// The charges / stack amounts don't count towards the total number of auras that can be dispelled.
// Ie: A dispel on a target with 5 stacks of Winters Chill and a Polymorph has 1 / (1 + 1) -> 50% chance to dispell
// Polymorph instead of 1 / (5 + 1) -> 16%.
- bool dispel_charges = aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR_EX7_DISPEL_CHARGES;
+ bool dispel_charges = aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES;
uint8 charges = dispel_charges ? aura->GetCharges() : aura->GetStackAmount();
if (charges > 0)
steal_list.push_back(std::make_pair(aura, charges));
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 9a27d4ea2b6..233e97d06f1 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -330,7 +330,7 @@ uint32 GetSpellCastTime(SpellEntry const* spellInfo, Spell * spell)
if (spell && spell->GetCaster())
spell->GetCaster()->ModSpellCastTime(spellInfo, castTime, spell);
- if (spellInfo->Attributes & SPELL_ATTR_REQ_AMMO && (!spell || !(spell->IsAutoRepeat())))
+ if (spellInfo->Attributes & SPELL_ATTR0_REQ_AMMO && (!spell || !(spell->IsAutoRepeat())))
castTime += 500;
return (castTime > 0) ? uint32(castTime) : 0;
@@ -346,7 +346,7 @@ bool IsPassiveSpell(uint32 spellId)
bool IsPassiveSpell(SpellEntry const * spellInfo)
{
- if (spellInfo->Attributes & SPELL_ATTR_PASSIVE)
+ if (spellInfo->Attributes & SPELL_ATTR0_PASSIVE)
return true;
return false;
}
@@ -356,9 +356,9 @@ bool IsAutocastableSpell(uint32 spellId)
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
if (!spellInfo)
return false;
- if (spellInfo->Attributes & SPELL_ATTR_PASSIVE)
+ if (spellInfo->Attributes & SPELL_ATTR0_PASSIVE)
return false;
- if (spellInfo->AttributesEx & SPELL_ATTR_EX_UNAUTOCASTABLE_BY_PET)
+ if (spellInfo->AttributesEx & SPELL_ATTR1_UNAUTOCASTABLE_BY_PET)
return false;
return true;
}
@@ -371,7 +371,7 @@ bool IsHigherHankOfSpell(uint32 spellId_1, uint32 spellId_2)
uint32 CalculatePowerCost(SpellEntry const * spellInfo, Unit const * caster, SpellSchoolMask schoolMask)
{
// Spell drain all exist power on cast (Only paladin lay of Hands)
- if (spellInfo->AttributesEx & SPELL_ATTR_EX_DRAIN_ALL_POWER)
+ if (spellInfo->AttributesEx & SPELL_ATTR1_DRAIN_ALL_POWER)
{
// If power type - health drain all
if (spellInfo->powerType == POWER_HEALTH)
@@ -416,13 +416,13 @@ uint32 CalculatePowerCost(SpellEntry const * spellInfo, Unit const * caster, Spe
// Flat mod from caster auras by spell school
powerCost += caster->GetInt32Value(UNIT_FIELD_POWER_COST_MODIFIER + school);
// Shiv - costs 20 + weaponSpeed*10 energy (apply only to non-triggered spell with energy cost)
- if (spellInfo->AttributesEx4 & SPELL_ATTR_EX4_SPELL_VS_EXTEND_COST)
+ if (spellInfo->AttributesEx4 & SPELL_ATTR4_SPELL_VS_EXTEND_COST)
powerCost += caster->GetAttackTime(OFF_ATTACK)/100;
// Apply cost mod by spell
if (Player* modOwner = caster->GetSpellModOwner())
modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_COST, powerCost);
- if (spellInfo->Attributes & SPELL_ATTR_LEVEL_DAMAGE_CALCULATION)
+ if (spellInfo->Attributes & SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION)
powerCost = int32(powerCost/ (1.117f* spellInfo->spellLevel / caster->getLevel() -0.1327f));
// PCT mod from user auras by school
@@ -750,7 +750,7 @@ bool SpellMgr::_isPositiveEffect(uint32 spellId, uint32 effIndex, bool deep) con
if (!spellproto) return false;
// not found a single positive spell with this attribute
- if (spellproto->Attributes & SPELL_ATTR_NEGATIVE_1)
+ if (spellproto->Attributes & SPELL_ATTR0_NEGATIVE_1)
return false;
switch (spellproto->SpellFamilyName)
@@ -854,7 +854,7 @@ bool SpellMgr::_isPositiveEffect(uint32 spellId, uint32 effIndex, bool deep) con
case SPELL_AURA_MOD_CRIT_PCT:
case SPELL_AURA_MOD_SPELL_CRIT_CHANCE:
if (SpellMgr::CalculateSpellEffectAmount(spellproto, effIndex) > 0)
- return true; // some expected positive spells have SPELL_ATTR_EX_NEGATIVE
+ return true; // some expected positive spells have SPELL_ATTR1_NEGATIVE
break;
case SPELL_AURA_ADD_TARGET_TRIGGER:
return true;
@@ -908,7 +908,7 @@ bool SpellMgr::_isPositiveEffect(uint32 spellId, uint32 effIndex, bool deep) con
if (spellproto->EffectImplicitTargetA[effIndex] != TARGET_UNIT_CASTER)
return false;
// but not this if this first effect (didn't find better check)
- if (spellproto->Attributes & SPELL_ATTR_NEGATIVE_1 && effIndex == 0)
+ if (spellproto->Attributes & SPELL_ATTR0_NEGATIVE_1 && effIndex == 0)
return false;
break;
case SPELL_AURA_MECHANIC_IMMUNITY:
@@ -969,7 +969,7 @@ bool SpellMgr::_isPositiveEffect(uint32 spellId, uint32 effIndex, bool deep) con
return false;
// AttributesEx check
- if (spellproto->AttributesEx & SPELL_ATTR_EX_NEGATIVE)
+ if (spellproto->AttributesEx & SPELL_ATTR1_NEGATIVE)
return false;
if (!deep && spellproto->EffectTriggerSpell[effIndex]
@@ -986,7 +986,7 @@ bool IsPositiveSpell(uint32 spellId)
{
if (!sSpellStore.LookupEntry(spellId)) // non-existing spells
return false;
- return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR_CU_NEGATIVE);
+ return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR0_CU_NEGATIVE);
}
bool IsPositiveEffect(uint32 spellId, uint32 effIndex)
@@ -996,9 +996,9 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex)
switch(effIndex)
{
default:
- case 0: return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR_CU_NEGATIVE_EFF0);
- case 1: return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR_CU_NEGATIVE_EFF1);
- case 2: return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR_CU_NEGATIVE_EFF2);
+ case 0: return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR0_CU_NEGATIVE_EFF0);
+ case 1: return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR0_CU_NEGATIVE_EFF1);
+ case 2: return !(sSpellMgr.GetSpellCustomAttr(spellId) & SPELL_ATTR0_CU_NEGATIVE_EFF2);
}
}
@@ -1018,7 +1018,7 @@ bool SpellMgr::_isPositiveSpell(uint32 spellId, bool deep) const
bool IsSingleTargetSpell(SpellEntry const *spellInfo)
{
// all other single target spells have if it has AttributesEx5
- if (spellInfo->AttributesEx5 & SPELL_ATTR_EX5_SINGLE_TARGET_SPELL)
+ if (spellInfo->AttributesEx5 & SPELL_ATTR5_SINGLE_TARGET_SPELL)
return true;
switch(GetSpellSpecific(spellInfo))
@@ -1088,7 +1088,7 @@ SpellCastResult GetErrorAtShapeshiftedCast (SpellEntry const *spellInfo, uint32
if (actAsShifted)
{
- if (spellInfo->Attributes & SPELL_ATTR_NOT_SHAPESHIFT) // not while shapeshifted
+ if (spellInfo->Attributes & SPELL_ATTR0_NOT_SHAPESHIFT) // not while shapeshifted
return SPELL_FAILED_NOT_SHAPESHIFT;
else if (spellInfo->Stances != 0) // needs other shapeshift
return SPELL_FAILED_ONLY_SHAPESHIFT;
@@ -1096,7 +1096,7 @@ SpellCastResult GetErrorAtShapeshiftedCast (SpellEntry const *spellInfo, uint32
else
{
// needs shapeshift
- if (!(spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT) && spellInfo->Stances != 0)
+ if (!(spellInfo->AttributesEx2 & SPELL_ATTR2_NOT_NEED_SHAPESHIFT) && spellInfo->Stances != 0)
return SPELL_FAILED_ONLY_SHAPESHIFT;
}
@@ -1876,7 +1876,7 @@ int32 SpellMgr::CalculateSpellEffectAmount(SpellEntry const * spellEntry, uint8
value = caster->ApplyEffectModifiers(spellEntry, effIndex, value);
// amount multiplication based on caster's level
- if (!basePointsPerLevel && (spellEntry->Attributes & SPELL_ATTR_LEVEL_DAMAGE_CALCULATION && spellEntry->spellLevel) &&
+ if (!basePointsPerLevel && (spellEntry->Attributes & SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION && spellEntry->spellLevel) &&
spellEntry->Effect[effIndex] != SPELL_EFFECT_WEAPON_PERCENT_DAMAGE &&
spellEntry->Effect[effIndex] != SPELL_EFFECT_KNOCK_BACK &&
spellEntry->EffectApplyAuraName[effIndex] != SPELL_AURA_MOD_SPEED_ALWAYS &&
@@ -2504,7 +2504,7 @@ void SpellMgr::LoadSpellAreas()
if (const SpellEntry* spellInfo = sSpellStore.LookupEntry(spell))
{
if (spellArea.autocast)
- const_cast<SpellEntry*>(spellInfo)->Attributes |= SPELL_ATTR_CANT_CANCEL;
+ const_cast<SpellEntry*>(spellInfo)->Attributes |= SPELL_ATTR0_CANT_CANCEL;
}
else
{
@@ -2687,7 +2687,7 @@ SpellCastResult SpellMgr::GetSpellAllowedInLocationError(SpellEntry const *spell
}
// continent limitation (virtual continent)
- if (spellInfo->AttributesEx4 & SPELL_ATTR_EX4_CAST_ONLY_IN_OUTLAND)
+ if (spellInfo->AttributesEx4 & SPELL_ATTR4_CAST_ONLY_IN_OUTLAND)
{
uint32 v_map = GetVirtualMapForMapAndZone(map_id, zone_id);
MapEntry const *mapEntry = sMapStore.LookupEntry(v_map);
@@ -2696,7 +2696,7 @@ SpellCastResult SpellMgr::GetSpellAllowedInLocationError(SpellEntry const *spell
}
// raid instance limitation
- if (spellInfo->AttributesEx6 & SPELL_ATTR_EX6_NOT_IN_RAID_INSTANCE)
+ if (spellInfo->AttributesEx6 & SPELL_ATTR6_NOT_IN_RAID_INSTANCE)
{
MapEntry const *mapEntry = sMapStore.LookupEntry(map_id);
if (!mapEntry || mapEntry->IsRaid())
@@ -3142,8 +3142,8 @@ bool SpellMgr::CanAurasStack(SpellEntry const *spellInfo_1, SpellEntry const *sp
if (!sameCaster)
{
- if (spellInfo_1->AttributesEx & SPELL_ATTR_EX_STACK_FOR_DIFF_CASTERS
- || spellInfo_1->AttributesEx3 & SPELL_ATTR_EX3_STACK_FOR_DIFF_CASTERS)
+ if (spellInfo_1->AttributesEx & SPELL_ATTR1_STACK_FOR_DIFF_CASTERS
+ || spellInfo_1->AttributesEx3 & SPELL_ATTR3_STACK_FOR_DIFF_CASTERS)
return true;
// check same periodic auras
@@ -3192,19 +3192,19 @@ bool SpellMgr::CanAurasStack(SpellEntry const *spellInfo_1, SpellEntry const *sp
bool CanSpellDispelAura(SpellEntry const * dispelSpell, SpellEntry const * aura)
{
// These auras (like ressurection sickness) can't be dispelled
- if (aura->Attributes & SPELL_ATTR_NEGATIVE_1)
+ if (aura->Attributes & SPELL_ATTR0_NEGATIVE_1)
return false;
// These spells (like Mass Dispel) can dispell all auras
- if (dispelSpell->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
+ if (dispelSpell->Attributes & SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)
return true;
// These auras (like Divine Shield) can't be dispelled
- if (aura->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
+ if (aura->Attributes & SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)
return false;
// These auras (Cyclone for example) are not dispelable
- if (aura->AttributesEx & SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE)
+ if (aura->AttributesEx & SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE)
return false;
return true;
@@ -3213,11 +3213,11 @@ bool CanSpellDispelAura(SpellEntry const * dispelSpell, SpellEntry const * aura)
bool CanSpellPierceImmuneAura(SpellEntry const * pierceSpell, SpellEntry const * aura)
{
// these spells pierce all avalible spells (Resurrection Sickness for example)
- if (pierceSpell->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
+ if (pierceSpell->Attributes & SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)
return true;
// these spells (Cyclone for example) can pierce all...
- if ((pierceSpell->AttributesEx & SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE)
+ if ((pierceSpell->AttributesEx & SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE)
// ...but not these (Divine shield for example)
&& !(aura && (aura->Mechanic == MECHANIC_IMMUNE_SHIELD || aura->Mechanic == MECHANIC_INVULNERABILITY)))
return true;
@@ -3478,7 +3478,7 @@ void SpellMgr::LoadSpellCustomAttr()
case SPELL_EFFECT_NORMALIZED_WEAPON_DMG:
case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE:
case SPELL_EFFECT_HEAL:
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_DIRECT_DAMAGE;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_DIRECT_DAMAGE;
count++;
break;
case SPELL_EFFECT_CHARGE:
@@ -3488,11 +3488,11 @@ void SpellMgr::LoadSpellCustomAttr()
case SPELL_EFFECT_LEAP_BACK:
if (!spellInfo->speed && !spellInfo->SpellFamilyName)
spellInfo->speed = SPEED_CHARGE;
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_CHARGE;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_CHARGE;
count++;
break;
case SPELL_EFFECT_PICKPOCKET:
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_PICKPOCKET;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_PICKPOCKET;
break;
case SPELL_EFFECT_TRIGGER_SPELL:
if (IsPositionTarget(spellInfo->EffectImplicitTargetA[j]) ||
@@ -3524,7 +3524,7 @@ void SpellMgr::LoadSpellCustomAttr()
case SPELL_AURA_AOE_CHARM:
case SPELL_AURA_MOD_FEAR:
case SPELL_AURA_MOD_STUN:
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_AURA_CC;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_AURA_CC;
count++;
break;
}
@@ -3532,29 +3532,29 @@ void SpellMgr::LoadSpellCustomAttr()
if (!_isPositiveEffect(i, 0, false))
{
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_NEGATIVE_EFF0;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_NEGATIVE_EFF0;
count++;
}
if (!_isPositiveEffect(i, 1, false))
{
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_NEGATIVE_EFF1;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_NEGATIVE_EFF1;
count++;
}
if (!_isPositiveEffect(i, 2, false))
{
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_NEGATIVE_EFF2;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_NEGATIVE_EFF2;
count++;
}
if (spellInfo->SpellVisual[0] == 3879)
{
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_CONE_BACK;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_CONE_BACK;
count++;
}
if (spellInfo->activeIconID == 2158) // flight
{
- spellInfo->Attributes |= SPELL_ATTR_PASSIVE;
+ spellInfo->Attributes |= SPELL_ATTR0_PASSIVE;
count++;
}
@@ -3588,7 +3588,7 @@ void SpellMgr::LoadSpellCustomAttr()
// Glyph of Life Tap
case 63320:
// Entries were not updated after spell effect change, we have to do that manually :/
- spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_CAN_PROC_TRIGGERED;
+ spellInfo->AttributesEx3 |= SPELL_ATTR3_CAN_PROC_TRIGGERED;
count++;
break;
case 16007: // Draco-Incarcinatrix 900
@@ -3600,7 +3600,7 @@ void SpellMgr::LoadSpellCustomAttr()
case 26029: // dark glare
case 37433: // spout
case 43140: case 43215: // flame breath
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_CONE_LINE;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_CONE_LINE;
count++;
break;
case 24340: case 26558: case 28884: // Meteor
@@ -3618,7 +3618,7 @@ void SpellMgr::LoadSpellCustomAttr()
case 70492: case 72505: // Ooze Eruption
case 72624: case 72625: // Ooze Eruption
// ONLY SPELLS WITH SPELLFAMILY_GENERIC and EFFECT_SCHOOL_DAMAGE
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_SHARE_DAMAGE;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_SHARE_DAMAGE;
count++;
break;
case 59725: // Improved Spell Reflection - aoe aura
@@ -3635,7 +3635,7 @@ void SpellMgr::LoadSpellCustomAttr()
case 69538: case 69553: case 69610: // Ooze Combine
case 71447: case 71481: // Bloodbolt Splash
case 71482: case 71483: // Bloodbolt Splash
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_EXCLUDE_SELF;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_EXCLUDE_SELF;
count++;
break;
case 44978: case 45001: case 45002: // Wild Magic
@@ -3801,7 +3801,7 @@ void SpellMgr::LoadSpellCustomAttr()
case 51735: // Ebon Plague
case 51734:
case 51726:
- spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_STACK_FOR_DIFF_CASTERS;
+ spellInfo->AttributesEx3 |= SPELL_ATTR3_STACK_FOR_DIFF_CASTERS;
spellInfo->SpellFamilyFlags[2] = 0x10;
count++;
break;
@@ -3819,7 +3819,7 @@ void SpellMgr::LoadSpellCustomAttr()
count++;
break;
case 48743: // Death Pact
- spellInfo->AttributesEx &= ~SPELL_ATTR_EX_CANT_TARGET_SELF;
+ spellInfo->AttributesEx &= ~SPELL_ATTR1_CANT_TARGET_SELF;
count++;
break;
// target allys instead of enemies, target A is src_caster, spells with effect like that have ally target
@@ -3843,7 +3843,7 @@ void SpellMgr::LoadSpellCustomAttr()
// spell should dispel area aura, but doesn't have the attribute
// may be db data bug, or blizz may keep reapplying area auras every update with checking immunity
// that will be clear if we get more spells with problem like this
- spellInfo->AttributesEx |= SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY;
+ spellInfo->AttributesEx |= SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY;
count++;
break;
case 69055: // Saber Lash
@@ -3873,7 +3873,7 @@ void SpellMgr::LoadSpellCustomAttr()
case 67860: // Impale
case 69293: // Wing Buffet
case 74439: // Machine Gun
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_IGNORE_ARMOR;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_IGNORE_ARMOR;
count++;
break;
// Strength of the Pack
@@ -3895,7 +3895,7 @@ void SpellMgr::LoadSpellCustomAttr()
count++;
break;
case 63675: // Improved Devouring Plague
- spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_NO_DONE_BONUS;
+ spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_DONE_BONUS;
count++;
break;
case 53241: // Marked for Death (Rank 1)
@@ -3965,7 +3965,7 @@ void SpellMgr::LoadSpellCustomAttr()
case 72785: // Empowered Flare
case 72786: // Empowered Flare
case 72787: // Empowered Flare
- spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_NO_DONE_BONUS;
+ spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_DONE_BONUS;
count++;
break;
case 71340: // Pact of the Darkfallen
@@ -3981,7 +3981,7 @@ void SpellMgr::LoadSpellCustomAttr()
case SPELLFAMILY_WARRIOR:
// Shout
if (spellInfo->SpellFamilyFlags[0] & 0x20000 || spellInfo->SpellFamilyFlags[1] & 0x20)
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_AURA_CC;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_AURA_CC;
else
break;
count++;
@@ -3992,10 +3992,10 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->MaxAffectedTargets = 2;
// Starfall AOE Damage
else if (spellInfo->SpellFamilyFlags[2] & 0x800000)
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_EXCLUDE_SELF;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_EXCLUDE_SELF;
// Roar
else if (spellInfo->SpellFamilyFlags[0] & 0x8)
- mSpellCustomAttr[i] |= SPELL_ATTR_CU_AURA_CC;
+ mSpellCustomAttr[i] |= SPELL_ATTR0_CU_AURA_CC;
else
break;
count++;
@@ -4003,7 +4003,7 @@ void SpellMgr::LoadSpellCustomAttr()
// Do not allow Deadly throw and Slice and Dice to proc twice
case SPELLFAMILY_ROGUE:
if (spellInfo->SpellFamilyFlags[1] & 0x1 || spellInfo->SpellFamilyFlags[0] & 0x40000)
- spellInfo->AttributesEx4 |= SPELL_ATTR_EX4_CANT_PROC_FROM_SELFCAST;
+ spellInfo->AttributesEx4 |= SPELL_ATTR4_CANT_PROC_FROM_SELFCAST;
else
break;
count++;
@@ -4044,7 +4044,7 @@ void SpellMgr::LoadEnchantCustomAttr()
continue;
// TODO: find a better check
- if (!(spellInfo->AttributesEx2 & SPELL_ATTR_EX2_UNK13) || !(spellInfo->Attributes & SPELL_ATTR_NOT_SHAPESHIFT))
+ if (!(spellInfo->AttributesEx2 & SPELL_ATTR2_UNK13) || !(spellInfo->Attributes & SPELL_ATTR0_NOT_SHAPESHIFT))
continue;
for (uint32 j = 0; j < MAX_SPELL_EFFECTS; ++j)
@@ -4111,14 +4111,14 @@ void SpellMgr::LoadSpellLinked()
{
switch(type)
{
- case 0: mSpellCustomAttr[trigger] |= SPELL_ATTR_CU_LINK_CAST; break;
- case 1: mSpellCustomAttr[trigger] |= SPELL_ATTR_CU_LINK_HIT; break;
- case 2: mSpellCustomAttr[trigger] |= SPELL_ATTR_CU_LINK_AURA; break;
+ case 0: mSpellCustomAttr[trigger] |= SPELL_ATTR0_CU_LINK_CAST; break;
+ case 1: mSpellCustomAttr[trigger] |= SPELL_ATTR0_CU_LINK_HIT; break;
+ case 2: mSpellCustomAttr[trigger] |= SPELL_ATTR0_CU_LINK_AURA; break;
}
}
else
{
- mSpellCustomAttr[-trigger] |= SPELL_ATTR_CU_LINK_REMOVE;
+ mSpellCustomAttr[-trigger] |= SPELL_ATTR0_CU_LINK_REMOVE;
}
if (type) //we will find a better way when more types are needed
diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h
index e2069cb143f..acea5e068e7 100755
--- a/src/server/game/Spells/SpellMgr.h
+++ b/src/server/game/Spells/SpellMgr.h
@@ -309,17 +309,17 @@ inline bool IsPassiveSpellStackableWithRanks(SpellEntry const* spellProto)
inline bool IsDeathPersistentSpell(SpellEntry const *spellInfo)
{
- return spellInfo->AttributesEx3 & SPELL_ATTR_EX3_DEATH_PERSISTENT;
+ return spellInfo->AttributesEx3 & SPELL_ATTR3_DEATH_PERSISTENT;
}
inline bool IsRequiringDeadTargetSpell(SpellEntry const *spellInfo)
{
- return spellInfo->AttributesEx3 & SPELL_ATTR_EX3_REQUIRE_DEAD_TARGET;
+ return spellInfo->AttributesEx3 & SPELL_ATTR3_REQUIRE_DEAD_TARGET;
}
inline bool IsAllowingDeadTargetSpell(SpellEntry const *spellInfo)
{
- return spellInfo->AttributesEx2 & SPELL_ATTR_EX2_ALLOW_DEAD_TARGET;
+ return spellInfo->AttributesEx2 & SPELL_ATTR2_ALLOW_DEAD_TARGET;
}
inline bool IsDeadTargetSpell(SpellEntry const *spellInfo)
@@ -329,7 +329,7 @@ inline bool IsDeadTargetSpell(SpellEntry const *spellInfo)
inline bool IsNonCombatSpell(SpellEntry const *spellInfo)
{
- return (spellInfo->Attributes & SPELL_ATTR_CANT_USED_IN_COMBAT) != 0;
+ return (spellInfo->Attributes & SPELL_ATTR0_CANT_USED_IN_COMBAT) != 0;
}
bool IsPositiveSpell(uint32 spellId);
@@ -468,12 +468,12 @@ inline bool IsDispelSpell(SpellEntry const *spellInfo)
inline bool isSpellBreakStealth(SpellEntry const* spellInfo)
{
- return !(spellInfo->AttributesEx & SPELL_ATTR_EX_NOT_BREAK_STEALTH);
+ return !(spellInfo->AttributesEx & SPELL_ATTR1_NOT_BREAK_STEALTH);
}
inline bool IsAutoRepeatRangedSpell(SpellEntry const* spellInfo)
{
- return spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG;
+ return spellInfo->AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG;
}
inline bool IsRangedWeaponSpell(SpellEntry const* spellInfo)
@@ -487,12 +487,12 @@ SpellCastResult GetErrorAtShapeshiftedCast (SpellEntry const *spellInfo, uint32
inline bool IsChanneledSpell(SpellEntry const* spellInfo)
{
- return (spellInfo->AttributesEx & (SPELL_ATTR_EX_CHANNELED_1 | SPELL_ATTR_EX_CHANNELED_2));
+ return (spellInfo->AttributesEx & (SPELL_ATTR1_CHANNELED_1 | SPELL_ATTR1_CHANNELED_2));
}
inline bool NeedsComboPoints(SpellEntry const* spellInfo)
{
- return (spellInfo->AttributesEx & (SPELL_ATTR_EX_REQ_COMBO_POINTS1 | SPELL_ATTR_EX_REQ_COMBO_POINTS2));
+ return (spellInfo->AttributesEx & (SPELL_ATTR1_REQ_COMBO_POINTS1 | SPELL_ATTR1_REQ_COMBO_POINTS2));
}
inline SpellSchoolMask GetSpellSchoolMask(SpellEntry const* spellInfo)
@@ -876,23 +876,23 @@ inline bool IsProfessionSkill(uint32 skill)
return IsPrimaryProfessionSkill(skill) || skill == SKILL_FISHING || skill == SKILL_COOKING || skill == SKILL_FIRST_AID;
}
-#define SPELL_ATTR_CU_CONE_BACK 0x00000002
-#define SPELL_ATTR_CU_CONE_LINE 0x00000004
-#define SPELL_ATTR_CU_SHARE_DAMAGE 0x00000008
-#define SPELL_ATTR_CU_AURA_CC 0x00000040
-#define SPELL_ATTR_CU_DIRECT_DAMAGE 0x00000100
-#define SPELL_ATTR_CU_CHARGE 0x00000200
-#define SPELL_ATTR_CU_LINK_CAST 0x00000400
-#define SPELL_ATTR_CU_LINK_HIT 0x00000800
-#define SPELL_ATTR_CU_LINK_AURA 0x00001000
-#define SPELL_ATTR_CU_LINK_REMOVE 0x00002000
-#define SPELL_ATTR_CU_PICKPOCKET 0x00004000
-#define SPELL_ATTR_CU_EXCLUDE_SELF 0x00008000
-#define SPELL_ATTR_CU_NEGATIVE_EFF0 0x00010000
-#define SPELL_ATTR_CU_NEGATIVE_EFF1 0x00020000
-#define SPELL_ATTR_CU_NEGATIVE_EFF2 0x00040000
-#define SPELL_ATTR_CU_NEGATIVE 0x00070000
-#define SPELL_ATTR_CU_IGNORE_ARMOR 0x00080000
+#define SPELL_ATTR0_CU_CONE_BACK 0x00000002
+#define SPELL_ATTR0_CU_CONE_LINE 0x00000004
+#define SPELL_ATTR0_CU_SHARE_DAMAGE 0x00000008
+#define SPELL_ATTR0_CU_AURA_CC 0x00000040
+#define SPELL_ATTR0_CU_DIRECT_DAMAGE 0x00000100
+#define SPELL_ATTR0_CU_CHARGE 0x00000200
+#define SPELL_ATTR0_CU_LINK_CAST 0x00000400
+#define SPELL_ATTR0_CU_LINK_HIT 0x00000800
+#define SPELL_ATTR0_CU_LINK_AURA 0x00001000
+#define SPELL_ATTR0_CU_LINK_REMOVE 0x00002000
+#define SPELL_ATTR0_CU_PICKPOCKET 0x00004000
+#define SPELL_ATTR0_CU_EXCLUDE_SELF 0x00008000
+#define SPELL_ATTR0_CU_NEGATIVE_EFF0 0x00010000
+#define SPELL_ATTR0_CU_NEGATIVE_EFF1 0x00020000
+#define SPELL_ATTR0_CU_NEGATIVE_EFF2 0x00040000
+#define SPELL_ATTR0_CU_NEGATIVE 0x00070000
+#define SPELL_ATTR0_CU_IGNORE_ARMOR 0x00080000
typedef std::vector<uint32> SpellCustomAttribute;
typedef std::vector<bool> EnchantCustomAttribute;
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
index 52d30755e63..2536bc6ed41 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
@@ -124,11 +124,11 @@ public:
if (TempSpell->SpellIconID == 2294)
TempSpell->SpellIconID = 2295;
TempSpell = GET_SPELL(SPELL_VAPOR_TRIGGER);
- if ((TempSpell->Attributes & SPELL_ATTR_PASSIVE) == 0)
- TempSpell->Attributes |= SPELL_ATTR_PASSIVE;
+ if ((TempSpell->Attributes & SPELL_ATTR0_PASSIVE) == 0)
+ TempSpell->Attributes |= SPELL_ATTR0_PASSIVE;
TempSpell = GET_SPELL(SPELL_FOG_CHARM2);
- if ((TempSpell->Attributes & SPELL_ATTR_PASSIVE) == 0)
- TempSpell->Attributes |= SPELL_ATTR_PASSIVE;*/
+ if ((TempSpell->Attributes & SPELL_ATTR0_PASSIVE) == 0)
+ TempSpell->Attributes |= SPELL_ATTR0_PASSIVE;*/
}
InstanceScript *pInstance;