aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-04-30 16:57:32 +0200
committerShauren <shauren.trinity@gmail.com>2022-04-30 16:57:32 +0200
commit88d7b58a3dd8b0eb95c233a20c1608ddce73d9ea (patch)
treedb38ff659b4105a3b60888bbb67339921d6ae2a0 /src/server/game/Entities/Object
parentb409a37c800b9d572048ee409f1bb138e97b8d8c (diff)
Core/Spells: Rename SpellAttr3 to use official attribute names
* Implemented SPELL_ATTR3_NO_AVOIDANCE * Implemented SPELL_ATTR3_ONLY_PROC_OUTDOORS * Implemented SPELL_ATTR3_ONLY_PROC_ON_CASTER * Implemented SPELL_ATTR3_PVP_ENABLING * Implemented SPELL_ATTR3_SUPPRESS_CASTER_PROCS * Implemented SPELL_ATTR3_SUPPRESS_TARGET_PROCS
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 9cad8331c2d..362e9a7bebe 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -2361,7 +2361,7 @@ void WorldObject::ModSpellCastTime(SpellInfo const* spellInfo, int32& castTime,
if (!unitCaster)
return;
- if (!(spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY) || spellInfo->HasAttribute(SPELL_ATTR0_IS_TRADESKILL) || spellInfo->HasAttribute(SPELL_ATTR3_NO_DONE_BONUS)) &&
+ if (!(spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY) || spellInfo->HasAttribute(SPELL_ATTR0_IS_TRADESKILL) || spellInfo->HasAttribute(SPELL_ATTR3_IGNORE_CASTER_MODIFIERS)) &&
((GetTypeId() == TYPEID_PLAYER && spellInfo->SpellFamilyName) || GetTypeId() == TYPEID_UNIT))
castTime = unitCaster->CanInstantCast() ? 0 : int32(float(castTime) * unitCaster->m_unitData->ModCastingSpeed);
else if (spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) && !spellInfo->HasAttribute(SPELL_ATTR2_AUTO_REPEAT))
@@ -2386,7 +2386,7 @@ void WorldObject::ModSpellDurationTime(SpellInfo const* spellInfo, int32& durati
if (!unitCaster)
return;
- if (!(spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY) || spellInfo->HasAttribute(SPELL_ATTR0_IS_TRADESKILL) || spellInfo->HasAttribute(SPELL_ATTR3_NO_DONE_BONUS)) &&
+ if (!(spellInfo->HasAttribute(SPELL_ATTR0_IS_ABILITY) || spellInfo->HasAttribute(SPELL_ATTR0_IS_TRADESKILL) || spellInfo->HasAttribute(SPELL_ATTR3_IGNORE_CASTER_MODIFIERS)) &&
((GetTypeId() == TYPEID_PLAYER && spellInfo->SpellFamilyName) || GetTypeId() == TYPEID_UNIT))
duration = int32(float(duration) * unitCaster->m_unitData->ModCastingSpeed);
else if (spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) && !spellInfo->HasAttribute(SPELL_ATTR2_AUTO_REPEAT))
@@ -2409,6 +2409,9 @@ SpellMissInfo WorldObject::MagicSpellHitResult(Unit* victim, SpellInfo const* sp
if (!victim->IsAlive() && victim->GetTypeId() != TYPEID_PLAYER)
return SPELL_MISS_NONE;
+ if (spellInfo->HasAttribute(SPELL_ATTR3_NO_AVOIDANCE))
+ return SPELL_MISS_NONE;
+
float missChance = [&]()
{
if (spellInfo->HasAttribute(SPELL_ATTR7_NO_ATTACK_MISS))
@@ -2448,7 +2451,7 @@ SpellMissInfo WorldObject::MagicSpellHitResult(Unit* victim, SpellInfo const* sp
modOwner->ApplySpellMod(spellInfo, SpellModOp::HitChance, modHitChance);
// Spells with SPELL_ATTR3_IGNORE_HIT_RESULT will ignore target's avoidance effects
- if (!spellInfo->HasAttribute(SPELL_ATTR3_IGNORE_HIT_RESULT))
+ if (!spellInfo->HasAttribute(SPELL_ATTR3_ALWAYS_HIT))
{
// Chance hit from victim SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE auras
modHitChance += victim->GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE, schoolMask);
@@ -2529,7 +2532,7 @@ SpellMissInfo WorldObject::SpellHitResult(Unit* victim, SpellInfo const* spellIn
return SPELL_MISS_REFLECT;
}
- if (spellInfo->HasAttribute(SPELL_ATTR3_IGNORE_HIT_RESULT))
+ if (spellInfo->HasAttribute(SPELL_ATTR3_ALWAYS_HIT))
return SPELL_MISS_NONE;
switch (spellInfo->DmgClass)