From 990dbfe297437bbf696371fc7d9fdeaec74a5dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A1udio=20Costa?= <54484196+claudiodfc@users.noreply.github.com> Date: Thu, 18 Mar 2021 15:51:36 +0000 Subject: [PATCH] fix(Core): Removing auras from spells that trigger taxi (#4820) --- src/server/game/Entities/Player/Player.cpp | 9 +++++++++ src/server/game/Entities/Player/Player.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6bd16ea8d..44e943dac 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -802,6 +802,8 @@ Player::Player(WorldSession* session): Unit(true), m_mover(this) m_deathTimer = 0; m_deathExpireTime = 0; + m_flightSpellActivated = 0; + m_swingErrorMsg = 0; for (uint8 j = 0; j < PLAYER_MAX_BATTLEGROUND_QUEUES; ++j) @@ -21928,6 +21930,7 @@ bool Player::ActivateTaxiPathTo(std::vector const& nodes, Creature* npc } else { + m_flightSpellActivated = spellid; GetSession()->SendActivateTaxiReply(ERR_TAXIOK); GetSession()->SendDoFlight(mount_display_id, sourcepath); } @@ -21951,6 +21954,12 @@ bool Player::ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid /*= 1*/) void Player::CleanupAfterTaxiFlight() { + // For spells that trigger flying paths remove them at arrival + if (m_flightSpellActivated) + { + this->RemoveAurasDueToSpell(m_flightSpellActivated); + m_flightSpellActivated = 0; + } m_taxi.ClearTaxiDestinations(); // not destinations, clear source node Dismount(); RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index e3c21ec8a..1893d1436 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2971,6 +2971,8 @@ private: bool m_isInstantFlightOn; + uint32 m_flightSpellActivated; + // Remote location information uint32 m_cinematicDiff; uint32 m_lastCinematicCheck;