aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorModoX <moardox@gmail.com>2023-12-15 09:57:52 +0100
committerfunjoker <funjoker109@gmail.com>2023-12-19 14:09:17 +0100
commit305ca7aa23e81173f5c0565c0b018838ff7ad4e1 (patch)
tree6d58b0c3343b90ace220ad7ba5b76d21af2b4bed /src
parent31d79bae9c6dc80818c69505999484b310fe82c3 (diff)
Core/Spells: Implemented SPELL_AURA_MOD_FIXATE (#29488)
(cherry picked from commit 8b9eaf0bdf9c6ae463c78d6a952330daaa1dcb63)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp19
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h1
2 files changed, 19 insertions, 1 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 4802d085019..fb748ebaf1b 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -195,7 +195,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNoImmediateEffect, //125 SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN implemented in Unit::MeleeDamageBonus
&AuraEffect::HandleNoImmediateEffect, //126 SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT implemented in Unit::MeleeDamageBonus
&AuraEffect::HandleNoImmediateEffect, //127 SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS implemented in Unit::MeleeDamageBonus
- &AuraEffect::HandleNULL, //128 SPELL_AURA_MOD_FIXATE
+ &AuraEffect::HandleAuraModFixate, //128 SPELL_AURA_MOD_FIXATE
&AuraEffect::HandleAuraModIncreaseSpeed, //129 SPELL_AURA_MOD_SPEED_ALWAYS
&AuraEffect::HandleAuraModIncreaseMountedSpeed, //130 SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS
&AuraEffect::HandleNoImmediateEffect, //131 SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS implemented in Unit::MeleeDamageBonus
@@ -2877,6 +2877,23 @@ void AuraEffect::HandleModDetaunt(AuraApplication const* aurApp, uint8 mode, boo
caster->GetThreatManager().TauntUpdate();
}
+void AuraEffect::HandleAuraModFixate(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & AURA_EFFECT_HANDLE_REAL))
+ return;
+
+ Unit* caster = GetCaster();
+ Unit* target = aurApp->GetTarget();
+
+ if (!caster || !caster->IsAlive() || !target->IsAlive() || !caster->CanHaveThreatList())
+ return;
+
+ if (apply)
+ caster->GetThreatManager().FixateTarget(target);
+ else
+ caster->GetThreatManager().ClearFixate();
+}
+
/*****************************/
/*** CONTROL ***/
/*****************************/
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index d234ceed557..b774c83611e 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -193,6 +193,7 @@ class TC_GAME_API AuraEffect
void HandleAuraModTotalThreat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModTaunt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModDetaunt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleAuraModFixate(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// control
void HandleModConfuse(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModFear(AuraApplication const* aurApp, uint8 mode, bool apply) const;