[c12590] Do more checks if a Player can enter a map On Login

This commit is contained in:
Schmoozerd 2013-05-31 10:46:04 +01:00 committed by Antz
parent 58ad20df80
commit de4c1edf9b
2 changed files with 7 additions and 5 deletions

View file

@ -722,13 +722,15 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder)
} }
} }
if (!pCurrChar->GetMap()->Add(pCurrChar)) uint32 miscRequirement = 0;
AreaLockStatus lockStatus = pCurrChar->GetAreaTriggerLockStatus(sObjectMgr.GetMapEntranceTrigger(pCurrChar->GetMapId()), pCurrChar->GetDifficulty(pCurrChar->GetMap()->IsRaid()), miscRequirement);
if (lockStatus != AREA_LOCKSTATUS_OK || !pCurrChar->GetMap()->Add(pCurrChar))
{ {
// normal delayed teleport protection not applied (and this correct) for this case (Player object just created) // normal delayed teleport protection not applied (and this correct) for this case (Player object just created)
AreaTrigger const* at = sObjectMgr.GetGoBackTrigger(pCurrChar->GetMapId()); AreaTrigger const* at = sObjectMgr.GetGoBackTrigger(pCurrChar->GetMapId());
if (at) if (at)
pCurrChar->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, pCurrChar->GetOrientation()); lockStatus = pCurrChar->GetAreaTriggerLockStatus(at, pCurrChar->GetDifficulty(pCurrChar->GetMap()->IsRaid()), miscRequirement);
else if (!at || lockStatus != AREA_LOCKSTATUS_OK || !pCurrChar->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, pCurrChar->GetOrientation()))
pCurrChar->TeleportToHomebind(); pCurrChar->TeleportToHomebind();
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "12589" #define REVISION_NR "12590"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__