Add and use function for more fast way to get areflag by area id.

This commit is contained in:
VladimirMangos 2008-11-30 05:17:34 +03:00
parent 333146baaf
commit bd3eca6904
3 changed files with 16 additions and 8 deletions

View file

@ -542,14 +542,12 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if(!worldOverlayEntry)
break;
AreaTableEntry const* areaTableEntry = GetAreaEntryByAreaID(worldOverlayEntry->areatableID);
if(!areaTableEntry)
int32 exploreFlag = GetAreaFlagByAreaID(worldOverlayEntry->areatableID);
if(exploreFlag < 0)
break;
uint32 exploreFlag = areaTableEntry->exploreFlag;
uint32 playerIndexOffset = exploreFlag / 32;
uint32 mask = 1<< (exploreFlag % 32);
uint32 playerIndexOffset = uint32(exploreFlag) / 32;
uint32 mask = 1<< (uint32(exploreFlag) % 32);
if(GetPlayer()->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask)
SetCriteriaProgress(achievementCriteria, 1);