Core/Spells: Rename SpellAttr0 to use official attribute names
This commit is contained in:
1 parent
24b84ba980
commit
d448ea4370
15 files changed
+104
-104
No files matched your search
@@ -684,8 +684,8 @@ m_caster((info->HasAttribute(SPELL_ATTR6_CAST_BY_CHARMER) && caster->GetCharmerO
|
||||
|
||||
// Determine if spell can be reflected back to the caster
|
||||
// Patch 1.2 notes: Spell Reflection no longer reflects abilities
|
||||
m_canReflect = m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MAGIC && !m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY)
|
||||
&& !m_spellInfo->HasAttribute(SPELL_ATTR1_CANT_BE_REFLECTED) && !m_spellInfo->HasAttribute(SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)
|
||||
m_canReflect = m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MAGIC && !m_spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY)
|
||||
&& !m_spellInfo->HasAttribute(SPELL_ATTR1_CANT_BE_REFLECTED) && !m_spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES)
|
||||
&& !m_spellInfo->IsPassive();
|
||||
|
||||
CleanupTargetList();
|
||||
@@ -2587,7 +2587,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
case SPELL_DAMAGE_CLASS_MAGIC:
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR3_TREAT_AS_PERIODIC))
|
||||
procAttacker |= PROC_FLAG_DEAL_PERIODIC;
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY))
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY))
|
||||
{
|
||||
if (positive)
|
||||
procAttacker |= PROC_FLAG_DEAL_HELPFUL_ABILITY;
|
||||
@@ -2613,7 +2613,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
case SPELL_DAMAGE_CLASS_MAGIC:
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR3_TREAT_AS_PERIODIC))
|
||||
procVictim |= PROC_FLAG_TAKE_PERIODIC;
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY))
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY))
|
||||
{
|
||||
if (positive)
|
||||
procVictim |= PROC_FLAG_TAKE_HELPFUL_ABILITY;
|
||||
@@ -2706,7 +2706,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
if (Unit* summoner = caster->ToTempSummon()->GetSummoner())
|
||||
summoner->ProcSkillsAndAuras(unitTarget, procAttacker, procVictim, PROC_SPELL_TYPE_DAMAGE, PROC_SPELL_PHASE_HIT, hitMask, this, &spellDamageInfo, nullptr);
|
||||
|
||||
if (caster->GetTypeId() == TYPEID_PLAYER && !m_spellInfo->HasAttribute(SPELL_ATTR0_STOP_ATTACK_TARGET) && !m_spellInfo->HasAttribute(SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS) &&
|
||||
if (caster->GetTypeId() == TYPEID_PLAYER && !m_spellInfo->HasAttribute(SPELL_ATTR0_CANCELS_AUTO_ATTACK_COMBAT) && !m_spellInfo->HasAttribute(SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS) &&
|
||||
(m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE || m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_RANGED))
|
||||
caster->ToPlayer()->CastItemCombatSpell(spellDamageInfo);
|
||||
}
|
||||
@@ -2723,7 +2723,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
DamageInfo spellNoDamageInfo(damageInfo, NODAMAGE, m_attackType, hitMask);
|
||||
caster->ProcSkillsAndAuras(unitTarget, procAttacker, procVictim, PROC_SPELL_TYPE_NO_DMG_HEAL, PROC_SPELL_PHASE_HIT, hitMask, this, &spellNoDamageInfo, nullptr);
|
||||
|
||||
if (caster->GetTypeId() == TYPEID_PLAYER && !m_spellInfo->HasAttribute(SPELL_ATTR0_STOP_ATTACK_TARGET) && !m_spellInfo->HasAttribute(SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS) &&
|
||||
if (caster->GetTypeId() == TYPEID_PLAYER && !m_spellInfo->HasAttribute(SPELL_ATTR0_CANCELS_AUTO_ATTACK_COMBAT) && !m_spellInfo->HasAttribute(SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS) &&
|
||||
(m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE || m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_RANGED))
|
||||
caster->ToPlayer()->CastItemCombatSpell(spellNoDamageInfo);
|
||||
}
|
||||
@@ -3212,7 +3212,7 @@ void Spell::prepare(SpellCastTargets const& targets, AuraEffect const* triggered
|
||||
// Don't allow to interrupt channeled spells that are not allowed to be cancelled
|
||||
if (Spell* curSpell = m_caster->GetCurrentSpell(CURRENT_CHANNELED_SPELL))
|
||||
{
|
||||
if (curSpell->m_spellInfo->HasAttribute(SPELL_ATTR0_CANT_CANCEL) && !m_spellInfo->HasAttribute(SPELL_ATTR4_CAN_CAST_WHILE_CASTING))
|
||||
if (curSpell->m_spellInfo->HasAttribute(SPELL_ATTR0_NO_AURA_CANCEL) && !m_spellInfo->HasAttribute(SPELL_ATTR4_CAN_CAST_WHILE_CASTING))
|
||||
{
|
||||
SendCastResult(SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW);
|
||||
finish(false);
|
||||
@@ -3674,7 +3674,7 @@ void Spell::_cast(bool skipCheck)
|
||||
{
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR3_TREAT_AS_PERIODIC))
|
||||
procAttacker |= PROC_FLAG_DEAL_PERIODIC;
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY))
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY))
|
||||
{
|
||||
if (IsPositive())
|
||||
procAttacker |= PROC_FLAG_DEAL_HELPFUL_ABILITY;
|
||||
@@ -3897,7 +3897,7 @@ void Spell::_handle_finish_phase()
|
||||
{
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR3_TREAT_AS_PERIODIC))
|
||||
procAttacker |= PROC_FLAG_DEAL_PERIODIC;
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY))
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY))
|
||||
{
|
||||
if (IsPositive())
|
||||
procAttacker |= PROC_FLAG_DEAL_HELPFUL_ABILITY;
|
||||
@@ -4095,7 +4095,7 @@ void Spell::finish(bool ok, bool sendChannelUpdate /* = false */)
|
||||
}
|
||||
|
||||
// Stop Attack for some spells
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_STOP_ATTACK_TARGET))
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_CANCELS_AUTO_ATTACK_COMBAT))
|
||||
m_caster->AttackStop();
|
||||
}
|
||||
|
||||
@@ -4338,7 +4338,7 @@ void Spell::SendSpellStart()
|
||||
if (((IsTriggered() && !m_spellInfo->IsAutoRepeatRangedSpell()) || m_triggeredByAuraSpell) && !m_cast_count)
|
||||
castFlags |= CAST_FLAG_PENDING;
|
||||
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO))
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT))
|
||||
castFlags |= CAST_FLAG_PROJECTILE;
|
||||
|
||||
if ((m_caster->GetTypeId() == TYPEID_PLAYER ||
|
||||
@@ -4433,7 +4433,7 @@ void Spell::SendSpellGo()
|
||||
if (((IsTriggered() && !m_spellInfo->IsAutoRepeatRangedSpell()) || m_triggeredByAuraSpell) && !m_cast_count)
|
||||
castFlags |= CAST_FLAG_PENDING;
|
||||
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO))
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT))
|
||||
castFlags |= CAST_FLAG_PROJECTILE; // arrows/bullets visual
|
||||
|
||||
if ((m_caster->GetTypeId() == TYPEID_PLAYER ||
|
||||
@@ -5445,7 +5445,7 @@ void Spell::HandleEffects(Unit* pUnitTarget, Item* pItemTarget, GameObject* pGoT
|
||||
SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint32* param2 /*= nullptr*/, MountResult* mountResult /*= nullptr*/)
|
||||
{
|
||||
// check death state
|
||||
if (!m_caster->IsAlive() && !m_spellInfo->IsPassive() && !(m_spellInfo->HasAttribute(SPELL_ATTR0_CASTABLE_WHILE_DEAD) || (IsTriggered() && !m_triggeredByAuraSpell)))
|
||||
if (!m_caster->IsAlive() && !m_spellInfo->IsPassive() && !(m_spellInfo->HasAttribute(SPELL_ATTR0_ALLOW_CAST_WHILE_DEAD) || (IsTriggered() && !m_triggeredByAuraSpell)))
|
||||
return SPELL_FAILED_CASTER_DEAD;
|
||||
|
||||
// Prevent cheating in case the player has an immunity effect and tries to interact with a non-allowed gameobject. The error message is handled by the client so we don't report anything here
|
||||
@@ -5465,7 +5465,7 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint
|
||||
{
|
||||
// These two auras check SpellFamilyName defined by dbc class data instead of current spell SpellFamilyName
|
||||
if (m_caster->HasAuraType(SPELL_AURA_DISABLE_CASTING_EXCEPT_ABILITIES)
|
||||
&& !m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO)
|
||||
&& !m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT)
|
||||
&& !m_spellInfo->HasEffect(SPELL_EFFECT_ATTACK)
|
||||
&& !m_caster->HasAuraTypeWithFamilyFlags(SPELL_AURA_DISABLE_CASTING_EXCEPT_ABILITIES, sChrClassesStore.AssertEntry(m_caster->getClass())->SpellClassSet, m_spellInfo->SpellFamilyFlags))
|
||||
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
|
||||
@@ -5474,7 +5474,7 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint
|
||||
{
|
||||
if (!m_caster->HasAuraTypeWithFamilyFlags(SPELL_AURA_DISABLE_ATTACKING_EXCEPT_ABILITIES, sChrClassesStore.AssertEntry(m_caster->getClass())->SpellClassSet, m_spellInfo->SpellFamilyFlags))
|
||||
{
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO)
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT)
|
||||
|| m_spellInfo->IsNextMeleeSwingSpell()
|
||||
|| m_spellInfo->HasAttribute(SPELL_ATTR1_MELEE_COMBAT_START)
|
||||
|| m_spellInfo->HasAttribute(SPELL_ATTR2_INITIATE_COMBAT_POST_CAST)
|
||||
@@ -5510,7 +5510,7 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint
|
||||
|
||||
// Check global cooldown
|
||||
if (strict && !(_triggeredCastFlags & TRIGGERED_IGNORE_GCD) && HasGlobalCooldown())
|
||||
return !m_spellInfo->HasAttribute(SPELL_ATTR0_DISABLED_WHILE_ACTIVE) ? SPELL_FAILED_NOT_READY : SPELL_FAILED_DONT_REPORT;
|
||||
return !m_spellInfo->HasAttribute(SPELL_ATTR0_COOLDOWN_ON_EVENT) ? SPELL_FAILED_NOT_READY : SPELL_FAILED_DONT_REPORT;
|
||||
|
||||
// only triggered spells can be processed an ended battleground
|
||||
if (!IsTriggered() && m_caster->GetTypeId() == TYPEID_PLAYER)
|
||||
@@ -5520,11 +5520,11 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint
|
||||
|
||||
if (m_caster->GetTypeId() == TYPEID_PLAYER && VMAP::VMapFactory::createOrGetVMapManager()->isLineOfSightCalcEnabled())
|
||||
{
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_OUTDOORS_ONLY) &&
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_ONLY_OUTDOORS) &&
|
||||
!m_caster->IsOutdoors())
|
||||
return SPELL_FAILED_ONLY_OUTDOORS;
|
||||
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_INDOORS_ONLY) &&
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_ONLY_INDOORS) &&
|
||||
!m_caster->IsOutdoors())
|
||||
return SPELL_FAILED_ONLY_INDOORS;
|
||||
}
|
||||
@@ -5741,7 +5741,7 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint
|
||||
|
||||
// not let players cast spells at mount (and let do it to creatures)
|
||||
if (m_caster->IsMounted() && m_caster->GetTypeId() == TYPEID_PLAYER && !(_triggeredCastFlags & TRIGGERED_IGNORE_CASTER_MOUNTED_OR_ON_VEHICLE) &&
|
||||
!m_spellInfo->IsPassive() && !m_spellInfo->HasAttribute(SPELL_ATTR0_CASTABLE_WHILE_MOUNTED))
|
||||
!m_spellInfo->IsPassive() && !m_spellInfo->HasAttribute(SPELL_ATTR0_ALLOW_WHILE_MOUNTED))
|
||||
{
|
||||
if (m_caster->IsInFlight())
|
||||
return SPELL_FAILED_NOT_ON_TAXI;
|
||||
@@ -6776,7 +6776,7 @@ std::pair<float, float> Spell::GetMinMaxRange(bool strict) const
|
||||
rangeMod += 8.0f / 3.0f;
|
||||
}
|
||||
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO) && m_caster->GetTypeId() == TYPEID_PLAYER)
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) && m_caster->GetTypeId() == TYPEID_PLAYER)
|
||||
if (Item* ranged = m_caster->ToPlayer()->GetWeaponForAttack(RANGED_ATTACK, true))
|
||||
maxRange *= ranged->GetTemplate()->GetRangedModRange() * 0.01f;
|
||||
|
||||
@@ -8358,7 +8358,7 @@ void Spell::TriggerGlobalCooldown()
|
||||
// Apply haste rating
|
||||
if (m_spellInfo->StartRecoveryCategory == 133 && m_spellInfo->StartRecoveryTime == 1500 &&
|
||||
m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MELEE && m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_RANGED &&
|
||||
!m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO) && !m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY))
|
||||
!m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) && !m_spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY))
|
||||
{
|
||||
gcd = int32(float(gcd) * m_caster->GetFloatValue(UNIT_MOD_CAST_SPEED));
|
||||
RoundToInterval<int32>(gcd, MIN_GCD, MAX_GCD);
|
||||
|
||||
Reference in new issue
Block a user