diff options
| author | Nay <dnpd.dd@gmail.com> | 2011-08-06 17:23:33 +0100 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2011-08-06 17:23:33 +0100 |
| commit | 548f8ba095872a9b43abfbebaa5ef201ed5b4215 (patch) | |
| tree | 948dbad37cbccd4630ed55b354e72a3ec46e7545 /src/server/game/Globals/ObjectMgr.cpp | |
| parent | a39ea8f3e58fac91a8306d873cf9990ae95a6303 (diff) | |
Core/Player: Teleport the player to a default graveyard (Crossroads/Wesfall) when a zone has no info about graveyards
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rwxr-xr-x | src/server/game/Globals/ObjectMgr.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 060326b8d84..e1b37c121a7 100755 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -5738,6 +5738,21 @@ void ObjectMgr::LoadGraveyardZones() sLog->outString(); } +WorldSafeLocsEntry const *ObjectMgr::GetDefaultGraveYard(uint32 team) +{ + enum DefaultGraveyard + { + HORDE_GRAVEYARD = 10, // Crossroads + ALLIANCE_GRAVEYARD = 4, // Westfall + }; + + if (team == HORDE) + return sWorldSafeLocsStore.LookupEntry(HORDE_GRAVEYARD); + else if (team == ALLIANCE) + return sWorldSafeLocsStore.LookupEntry(ALLIANCE_GRAVEYARD); + else return NULL; +} + WorldSafeLocsEntry const *ObjectMgr::GetClosestGraveYard(float x, float y, float z, uint32 MapId, uint32 team) { // search for zone associated closest graveyard @@ -5746,8 +5761,10 @@ WorldSafeLocsEntry const *ObjectMgr::GetClosestGraveYard(float x, float y, float if (!zoneId) { if (z > -500) + { sLog->outError("ZoneId not found for map %u coords (%f, %f, %f)", MapId, x, y, z); - return NULL; + return GetDefaultGraveYard(team); + } } // Simulate std. algorithm: @@ -5765,7 +5782,7 @@ WorldSafeLocsEntry const *ObjectMgr::GetClosestGraveYard(float x, float y, float if (graveLow == graveUp && !map->IsBattleArena()) { sLog->outErrorDb("Table `game_graveyard_zone` incomplete: Zone %u Team %u does not have a linked graveyard.", zoneId, team); - return NULL; + return GetDefaultGraveYard(team); } // at corpse map |
