diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-07-26 18:52:28 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-07-26 18:52:28 +0200 |
| commit | d7f2ce64960ef8fc776a6da0f834524238e9ecae (patch) | |
| tree | 8954b83313cbb8685cf3f390939801f1db157bf9 | |
| parent | 5c813f6f028aa36c374d7039fd1186802bc8e8af (diff) | |
Core/Garrisons: Fixed entering/leaving garrisons from a different map than Draenor
| -rw-r--r-- | src/server/game/Garrison/Garrison.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
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); + } } } |
