diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-07-03 16:07:30 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-07-03 16:07:30 +0200 |
commit | 321f3cc4a7a59874c73ab82d57c2f1c76a820396 (patch) | |
tree | 2664968678558183f4a45f81e2c7f459dd472373 /src | |
parent | af081ea5f01c1252ad7ebfa5a35941aa9e201433 (diff) |
Core/Spells: Implemented caster-is-moving aoe radius bonus and SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 4 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 9ea49ff380b..82b090f1548 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -789,7 +789,7 @@ enum SpellAttr9 : uint32 SPELL_ATTR9_FORCE_CORPSE_TARGET = 0x08000000, // TITLE Force Corpse Target DESCRIPTION Causes the spell to continue executing effects on the target even if one of them kills it SPELL_ATTR9_CANNOT_KILL_TARGET = 0x10000000, // TITLE Cannot Kill Target SPELL_ATTR9_LOG_PASSIVE = 0x20000000, // TITLE Log Passive (client only) DESCRIPTION Allows passive auras to trigger aura applied/refreshed/removed combat log events - SPELL_ATTR9_UNK30 = 0x40000000, // TITLE Unknown attribute 30@Attr9 + SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS = 0x40000000, // TITLE No Movement Radius Bonus SPELL_ATTR9_UNK31 = 0x80000000 // TITLE Unknown attribute 31@Attr9 }; diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index d6cc2d1f0ce..ca16197fff0 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -1465,7 +1465,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr9>::ToString(SpellAttr9 value) case SPELL_ATTR9_FORCE_CORPSE_TARGET: return { "SPELL_ATTR9_FORCE_CORPSE_TARGET", "Force Corpse Target", "Causes the spell to continue executing effects on the target even if one of them kills it" }; case SPELL_ATTR9_CANNOT_KILL_TARGET: return { "SPELL_ATTR9_CANNOT_KILL_TARGET", "Cannot Kill Target", "" }; case SPELL_ATTR9_LOG_PASSIVE: return { "SPELL_ATTR9_LOG_PASSIVE", "Log Passive (client only)", "Allows passive auras to trigger aura applied/refreshed/removed combat log events" }; - case SPELL_ATTR9_UNK30: return { "SPELL_ATTR9_UNK30", "Unknown attribute 30@Attr9", "" }; + case SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS: return { "SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS", "No Movement Radius Bonus", "" }; case SPELL_ATTR9_UNK31: return { "SPELL_ATTR9_UNK31", "Unknown attribute 31@Attr9", "" }; default: throw std::out_of_range("value"); } @@ -1509,7 +1509,7 @@ TC_API_EXPORT SpellAttr9 EnumUtils<SpellAttr9>::FromIndex(size_t index) case 27: return SPELL_ATTR9_FORCE_CORPSE_TARGET; case 28: return SPELL_ATTR9_CANNOT_KILL_TARGET; case 29: return SPELL_ATTR9_LOG_PASSIVE; - case 30: return SPELL_ATTR9_UNK30; + case 30: return SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS; case 31: return SPELL_ATTR9_UNK31; default: throw std::out_of_range("index"); } @@ -1550,7 +1550,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr9>::ToIndex(SpellAttr9 value) case SPELL_ATTR9_FORCE_CORPSE_TARGET: return 27; case SPELL_ATTR9_CANNOT_KILL_TARGET: return 28; case SPELL_ATTR9_LOG_PASSIVE: return 29; - case SPELL_ATTR9_UNK30: return 30; + case SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS: return 30; case SPELL_ATTR9_UNK31: return 31; default: throw std::out_of_range("value"); } diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index ed44f582a2c..8e29ade5a67 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -706,6 +706,10 @@ float SpellEffectInfo::CalcRadius(WorldObject* caster /*= nullptr*/, SpellTarget if (Player* modOwner = caster->GetSpellModOwner()) modOwner->ApplySpellMod(_spellInfo, SpellModOp::Radius, radius, spell); + + if (!_spellInfo->HasAttribute(SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS)) + if (Unit* casterUnit = caster->ToUnit(); casterUnit && casterUnit->isMoving() && !casterUnit->IsWalking()) + radius += 2.0f; } return radius; |