From 07c93c2dfaedafa695f5f868f2b8b527ad25f540 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 22 Dec 2021 17:54:23 +0100 Subject: [PATCH] fix(Core/Movement): Fixed adding wrong flag on root. (#9803) * fix(Core/Movement): Fixed addind wrong flag on root. Fixes #5891 --- src/server/game/Entities/Unit/Unit.cpp | 4 ++-- .../scripts/Northrend/zone_storm_peaks.cpp | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index bc16b413e..6f844fa86 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -17416,11 +17416,11 @@ void Unit::SetRooted(bool apply) if (IsFalling()) { - AddUnitMovementFlag(MOVEMENTFLAG_ROOT); + AddUnitMovementFlag(MOVEMENTFLAG_PENDING_ROOT); } else { - AddUnitMovementFlag(MOVEMENTFLAG_PENDING_ROOT); + AddUnitMovementFlag(MOVEMENTFLAG_ROOT); } // Creature specific diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index 45bd0d932..4008dde9b 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -971,7 +971,27 @@ public: void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply) override { if (apply) + { + class DelayedTransportPositionOffsets : public BasicEvent + { + public: + DelayedTransportPositionOffsets(Unit* owner) : _owner(owner) { } + + bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override + { + _owner->m_movementInfo.transport.pos.Relocate(-3.5f, 0.f, -0.2f, 0.f); + return true; + } + + private: + Unit* _owner; + }; + + if (who->IsPlayer()) + who->m_Events.AddEvent(new DelayedTransportPositionOffsets(who), who->m_Events.CalculateTime(500)); + return; + } if (who->GetEntry() == NPC_HYLDSMEET_DRAKERIDER) _accessoryRespawnTimer = 5 * MINUTE * IN_MILLISECONDS;