From c604f800e367e4807d513638b1656cd54a0e9504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E4=BD=A9=E8=8C=B9?= Date: Mon, 27 Mar 2023 10:40:15 -0600 Subject: [PATCH] Fix travel to Azuremyst via Elune's Blessing --- src/IndividualProgression.h | 3 ++- src/IndividualProgressionPlayer.cpp | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/IndividualProgression.h b/src/IndividualProgression.h index 034eb07..4d8fb40 100644 --- a/src/IndividualProgression.h +++ b/src/IndividualProgression.h @@ -82,7 +82,8 @@ enum ProgressionZones ZONE_EVERSONG = 3430, ZONE_EXODAR = 3557, ZONE_SILVERMOON = 3487, - ZONE_QUELDANAS = 4080 + ZONE_QUELDANAS = 4080, + ZONE_VEILED_SEA = 3479 }; enum ProgressionAreas diff --git a/src/IndividualProgressionPlayer.cpp b/src/IndividualProgressionPlayer.cpp index 2d39b9c..2cfdbdb 100644 --- a/src/IndividualProgressionPlayer.cpp +++ b/src/IndividualProgressionPlayer.cpp @@ -2,6 +2,17 @@ class IndividualPlayerProgression : public PlayerScript { + +private: + static bool IsTBCRaceStartingZone(uint32 mapid, float x, float y, float z) + { + Map const *map = sMapMgr->FindMap(mapid, 0); + uint32 zoneId = map->GetZoneId(0, x, y, z); + return (zoneId == ZONE_AZUREMYST || zoneId == ZONE_BLOODMYST || zoneId == ZONE_GHOSTLANDS || + zoneId == ZONE_EVERSONG || zoneId == ZONE_EXODAR || zoneId == ZONE_SILVERMOON || + zoneId == ZONE_VEILED_SEA); + } + public: IndividualPlayerProgression() : PlayerScript("IndividualProgression") { } @@ -161,13 +172,13 @@ public: } if (mapid == MAP_OUTLANDS) { - Map const* map = sMapMgr->FindMap(mapid, 0); - uint32 zoneId = map->GetZoneId(0, x, y, z); if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40)) { // The player may be in the Azuremyst area which is on the outlands map - check the area ID - return (zoneId == ZONE_AZUREMYST || zoneId == ZONE_BLOODMYST || zoneId == ZONE_GHOSTLANDS || zoneId == ZONE_EVERSONG || zoneId == ZONE_EXODAR || zoneId == ZONE_SILVERMOON); + return IsTBCRaceStartingZone(mapid, x, y, z); } + Map const *map = sMapMgr->FindMap(mapid, 0); + uint32 zoneId = map->GetZoneId(0, x, y, z); if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_4) && zoneId == ZONE_QUELDANAS) { return false;