From 5af99dc391dcfef4705bab763fca44d9d3761ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Bertelsen?= Date: Mon, 3 Aug 2026 06:17:55 +0200 Subject: [PATCH] fix(Core/DBC): award classic-tier XP in the starter isle ocean zones (#26749) Co-authored-by: Claude Fable 5 --- .../pending_db_world/rev_1784762767399064200.sql | 14 ++++++++++++++ src/server/shared/DataStores/DBCDatabaseLoader.cpp | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1784762767399064200.sql diff --git a/data/sql/updates/pending_db_world/rev_1784762767399064200.sql b/data/sql/updates/pending_db_world/rev_1784762767399064200.sql new file mode 100644 index 000000000..a80322603 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1784762767399064200.sql @@ -0,0 +1,14 @@ +-- +-- The ocean zones around the TBC starting isles live on map 530 (Outland) but have no +-- WorldMapArea entry, so GetVirtualMapForMapAndZone() falls back to map 530 and +-- GetContentLevelsForMapAndZone() classifies them as CONTENT_61_70 (base XP 235 instead +-- of 45). Killing a mob swimming in The Veiled Sea off Azuremyst Isle rewards nearly +-- 4x the XP of the same mob standing on shore. +-- Add server-side WorldMapArea entries mapping these zones to their virtual continents, +-- like the isles themselves (Azuremyst/Bloodmyst -> Kalimdor, Eversong/Ghostlands -> EK). +-- Coordinate extents are the bounding box of the surrounded isles (only used by GM +-- commands .gps / .go zonexy). +DELETE FROM `worldmaparea_dbc` WHERE `ID` IN (1000, 1001); +INSERT INTO `worldmaparea_dbc` (`ID`, `MapID`, `AreaID`, `AreaName`, `LocLeft`, `LocRight`, `LocTop`, `LocBottom`, `DisplayMapID`, `DefaultDungeonFloor`, `ParentWorldMapID`) VALUES +(1000, 530, 3479, 'TheVeiledSea', -10075, -14570.833, -758.3333, -5508.333, 1, 0, 0), +(1001, 530, 3455, 'TheNorthSea', -4487.5, -9412.5, 13568.75, 6066.6665, 0, 0, 0); diff --git a/src/server/shared/DataStores/DBCDatabaseLoader.cpp b/src/server/shared/DataStores/DBCDatabaseLoader.cpp index 44e65653d..6dae29ad4 100644 --- a/src/server/shared/DataStores/DBCDatabaseLoader.cpp +++ b/src/server/shared/DataStores/DBCDatabaseLoader.cpp @@ -31,6 +31,8 @@ DBCDatabaseLoader::DBCDatabaseLoader(char const* tableName, char const* dbcForma // Get sql index position int32 indexPos = -1; _recordSize = DBCFileLoader::GetFormatRecordSize(_dbcFormat, &indexPos); + if (indexPos >= 0) + _sqlIndexPos = indexPos; ASSERT(_recordSize); }