aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells
diff options
context:
space:
mode:
authorTraesh <nicolas.queniro@gmail.com>2024-10-12 17:10:50 +0200
committerShauren <shauren.trinity@gmail.com>2024-10-12 17:10:50 +0200
commitc7a073140cb9cc41aefaff76eca5355acceff409 (patch)
tree7534afd70f829aacfc544730c5dd1a3c7e1d062c /src/server/game/Spells
parenta9e4f5a9ceaf88dc9de8a07b6ed3f1d114553899 (diff)
Core/Auras: Implemented SPELL_AURA_ADV_FLYING
Diffstat (limited to 'src/server/game/Spells')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp20
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h1
3 files changed, 21 insertions, 2 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index db2dcaac82e..16524552f3a 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -537,7 +537,7 @@ enum AuraType : uint32
SPELL_AURA_MOD_LEECH = 443, // NYI
SPELL_AURA_444 = 444,
SPELL_AURA_445 = 445,
- SPELL_AURA_446 = 446,
+ SPELL_AURA_ADV_FLYING = 446,
SPELL_AURA_MOD_XP_FROM_CREATURE_TYPE = 447,
SPELL_AURA_448 = 448,
SPELL_AURA_449 = 449,
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 9f40f1731fc..3b04455db88 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -515,7 +515,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //443 SPELL_AURA_MOD_LEECH
&AuraEffect::HandleNULL, //444
&AuraEffect::HandleNULL, //445
- &AuraEffect::HandleNULL, //446
+ &AuraEffect::HandleModAdvFlying, //446 SPELL_AURA_ADV_FLYING
&AuraEffect::HandleNoImmediateEffect, //447 SPELL_AURA_MOD_XP_FROM_CREATURE_TYPE implemented in KillRewarder::_RewardXP
&AuraEffect::HandleNULL, //448
&AuraEffect::HandleNULL, //449
@@ -2795,8 +2795,13 @@ void AuraEffect::HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bo
// cast speed aura
if (mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK)
+ {
if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(GetAmount()))
+ {
+ target->SetFlightCapabilityID(mountCapability->FlightCapabilityID, true);
target->CastSpell(target, mountCapability->ModSpellAuraID, this);
+ }
+ }
}
else
{
@@ -2813,6 +2818,8 @@ void AuraEffect::HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bo
// remove speed aura
if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(GetAmount()))
target->RemoveAurasDueToSpell(mountCapability->ModSpellAuraID, target->GetGUID());
+
+ target->SetFlightCapabilityID(0, true);
}
}
@@ -2941,6 +2948,17 @@ void AuraEffect::HandleAuraCanTurnWhileFalling(AuraApplication const* aurApp, ui
target->SetCanTurnWhileFalling(apply);
}
+void AuraEffect::HandleModAdvFlying(AuraApplication const* aurApp, uint8 mode, bool apply) const
+{
+ if (!(mode & AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK))
+ return;
+
+ Unit* target = aurApp->GetTarget();
+ target->SetCanDoubleJump(apply || target->HasAura(SPELL_DH_DOUBLE_JUMP));
+ target->SetCanFly(apply);
+ target->SetCanAdvFly(apply);
+}
+
void AuraEffect::HandleIgnoreMovementForces(AuraApplication const* aurApp, uint8 mode, bool apply) const
{
if (!(mode & AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK))
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index 07610b2dff8..aab03b03cf9 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -186,6 +186,7 @@ class TC_GAME_API AuraEffect
void HandleWaterBreathing(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleForceMoveForward(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraCanTurnWhileFalling(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleModAdvFlying(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;
void HandleSetCantSwim(AuraApplication const* aurApp, uint8 mode, bool apply) const;