diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-02-25 12:37:04 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-02-25 12:37:04 +0100 |
| commit | d945a118db6d2b423a77c419eb8dd7f4732802a2 (patch) | |
| tree | a2bd8a9dba5d7f2a1b973d341d139dc98f64bc37 /src/server/game/Spells | |
| parent | ce49d5615bd041700a253239c864a18f87e79216 (diff) | |
Core/Auras: Implemented SPELL_AURA_DISABLE_INERTIA (506)
Diffstat (limited to 'src/server/game/Spells')
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 4 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 19 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 1 |
3 files changed, 21 insertions, 3 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 23d76d06cd0..a584ab6c243 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -550,7 +550,7 @@ enum AuraType : uint32 SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE = 456, SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE_REGEN = 457, SPELL_AURA_IGNORE_DUAL_WIELD_HIT_PENALTY = 458, - SPELL_AURA_IGNORE_MOVEMENT_FORCES = 459, // NYI + SPELL_AURA_IGNORE_MOVEMENT_FORCES = 459, SPELL_AURA_RESET_COOLDOWNS_ON_DUEL_START = 460, // NYI SPELL_AURA_461 = 461, SPELL_AURA_MOD_HEALING_AND_ABSORB_FROM_CASTER = 462, // NYI @@ -597,7 +597,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_VERSATILITY_HEALING_DONE_BENEFIT = 503, // NYI SPELL_AURA_MOD_HEALING_TAKEN_FROM_CASTER = 504, SPELL_AURA_MOD_PLAYER_CHOICE_REROLLS = 505, // NYI - SPELL_AURA_DISABLE_INERTIA = 506, // NYI + SPELL_AURA_DISABLE_INERTIA = 506, TOTAL_AURAS }; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index d44979988f1..75f7535dcec 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -572,7 +572,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //503 SPELL_AURA_MOD_VERSATILITY_HEALING_DONE_BENEFIT &AuraEffect::HandleNoImmediateEffect, //504 SPELL_AURA_MOD_HEALING_TAKEN_FROM_CASTER implemented in Unit::SpellHealingBonusTaken &AuraEffect::HandleNULL, //505 SPELL_AURA_MOD_PLAYER_CHOICE_REROLLS - &AuraEffect::HandleNULL, //506 SPELL_AURA_DISABLE_INERTIA + &AuraEffect::HandleDisableInertia, //506 SPELL_AURA_DISABLE_INERTIA }; AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, int32 const* baseAmount, Unit* caster) : @@ -2717,6 +2717,23 @@ void AuraEffect::HandleIgnoreMovementForces(AuraApplication const* aurApp, uint8 target->SetIgnoreMovementForces(apply); } +void AuraEffect::HandleDisableInertia(AuraApplication const* aurApp, uint8 mode, bool apply) const +{ + if (!(mode & AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK)) + return; + + Unit* target = aurApp->GetTarget(); + + if (!apply) + { + // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit + if (target->HasAuraType(GetAuraType())) + return; + } + + target->SetDisableInertia(apply); +} + /****************************/ /*** THREAT ***/ /****************************/ diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index d2b05ea29ec..c9f04b647ec 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -183,6 +183,7 @@ class TC_GAME_API AuraEffect void HandleForceMoveForward(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraCanTurnWhileFalling(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleIgnoreMovementForces(AuraApplication const* aurApp, uint8 mode, bool apply) const; + void HandleDisableInertia(AuraApplication const* aurApp, uint8 mode, bool apply) const; // threat void HandleModThreat(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraModTotalThreat(AuraApplication const* aurApp, uint8 mode, bool apply) const; |
