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;