From ff0c31e103ae23207e3a7c0e7e455ff317dfba54 Mon Sep 17 00:00:00 2001 From: DonTomika Date: Thu, 26 Mar 2009 17:03:30 +0100 Subject: [PATCH] [7545] Fixed exploration achievements for certian areas --- src/game/AchievementMgr.cpp | 22 ++++++++++++++++------ src/shared/Database/DBCStructure.h | 2 +- src/shared/Database/DBCfmt.cpp | 2 +- src/shared/revision_nr.h | 2 +- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index edc8a708c..3e570fcb1 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -725,14 +725,24 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui if(!worldOverlayEntry) break; - int32 exploreFlag = GetAreaFlagByAreaID(worldOverlayEntry->areatableID); - if(exploreFlag < 0) - break; + bool matchFound = false; + for (int i = 0; i < 3; ++i) + { + int32 exploreFlag = GetAreaFlagByAreaID(worldOverlayEntry->areatableID[i]); + if(exploreFlag < 0) + break; - uint32 playerIndexOffset = uint32(exploreFlag) / 32; - uint32 mask = 1<< (uint32(exploreFlag) % 32); + uint32 playerIndexOffset = uint32(exploreFlag) / 32; + uint32 mask = 1<< (uint32(exploreFlag) % 32); - if(GetPlayer()->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask) + if(GetPlayer()->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask) + { + matchFound = true; + break; + } + } + + if(matchFound) SetCriteriaProgress(achievementCriteria, 1); break; } diff --git a/src/shared/Database/DBCStructure.h b/src/shared/Database/DBCStructure.h index 2f1b0b1ae..58c3e5d52 100644 --- a/src/shared/Database/DBCStructure.h +++ b/src/shared/Database/DBCStructure.h @@ -1609,7 +1609,7 @@ struct WorldSafeLocsEntry struct WorldMapOverlayEntry { uint32 ID; // 0 - uint32 areatableID; // 2 + uint32 areatableID[4]; // 2-5 }; // GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some platform diff --git a/src/shared/Database/DBCfmt.cpp b/src/shared/Database/DBCfmt.cpp index 5049fcdf3..c46e8614d 100644 --- a/src/shared/Database/DBCfmt.cpp +++ b/src/shared/Database/DBCfmt.cpp @@ -96,4 +96,4 @@ const char VehicleEntryfmt[]="niffffiiiiiiiiffffiiiiiifffffffffffssssfifi"; const char VehicleSeatEntryfmt[]="niiffffffffffiiiiiifffffffiiifffiiiiiiiffiiiii"; const char WorldMapAreaEntryfmt[]="xinxffffix"; const char WorldSafeLocsEntryfmt[]="nifffxxxxxxxxxxxxxxxxx"; -const char WorldMapOverlayEntryfmt[]="nxixxxxxxxxxxxxxx"; +const char WorldMapOverlayEntryfmt[]="nxiiiixxxxxxxxxxx"; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 06ca28eb3..a102f831d 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7544" + #define REVISION_NR "7545" #endif // __REVISION_NR_H__