From d7f2ce64960ef8fc776a6da0f834524238e9ecae Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 26 Jul 2015 18:52:28 +0200 Subject: Core/Garrisons: Fixed entering/leaving garrisons from a different map than Draenor --- src/server/game/Garrison/Garrison.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp index d86252cdfb8..b52ebdd9808 100644 --- a/src/server/game/Garrison/Garrison.cpp +++ b/src/server/game/Garrison/Garrison.cpp @@ -277,18 +277,27 @@ void Garrison::Upgrade() void Garrison::Enter() const { - WorldLocation loc(_siteLevel->MapID); - loc.Relocate(_owner); - _owner->TeleportTo(loc, TELE_TO_SEAMLESS); + if (MapEntry const* map = sMapStore.LookupEntry(_siteLevel->MapID)) + { + if (int32(_owner->GetMapId()) == map->ParentMapID) + { + WorldLocation loc(_siteLevel->MapID); + loc.Relocate(_owner); + _owner->TeleportTo(loc, TELE_TO_SEAMLESS); + } + } } void Garrison::Leave() const { if (MapEntry const* map = sMapStore.LookupEntry(_siteLevel->MapID)) { - WorldLocation loc(map->ParentMapID); - loc.Relocate(_owner); - _owner->TeleportTo(loc, TELE_TO_SEAMLESS); + if (_owner->GetMapId() == _siteLevel->MapID) + { + WorldLocation loc(map->ParentMapID); + loc.Relocate(_owner); + _owner->TeleportTo(loc, TELE_TO_SEAMLESS); + } } } -- cgit v1.2.3