switch to keystone.guru tiles + enemy data

Replaces the upreza-derived 4K dungeon textures + AtlasLoot boss-coord
overlay (which had a consistent positional offset against texture skulls)
with keystone.guru's z=4 tile pyramid stitched to 6144x4096 WebP per floor.

kg's split_floors.js gives per-dungeon enemies, packs (polygons), patrols
(polylines), and map icons calibrated to those tiles, so overlays align
pixel-perfectly. 27/29 classic dungeons now have full enemy/pack data;
ZG + Sunken Temple have maps only.

Pipeline: tools/kg_fetch.py -> tools/kg_stitch.py -> tools/kg_build_data.py.
This commit is contained in:
2026-04-25 22:11:17 +02:00
parent aa1cd9ee40
commit 18c7792935
15 changed files with 178577 additions and 10485 deletions
-54
View File
@@ -1,54 +0,0 @@
{
"_comment": "Maps AtlasLoot dungeon-id → list of webp basenames (or base map names). A bare base like 'Ulduar' expands to every stitched floor: Ulduar_overview, Ulduar_floor1, …. Case-insensitive auto-match handles most names — only put entries here when the names truly differ.",
"AuchAuchenaiCrypts": ["AuchenaiCrypts"],
"AuchManaTombs": ["ManaTombs"],
"AuchSethekkHalls": ["SethekkHalls"],
"AuchShadowLabyrinth": ["ShadowLabyrinth"],
"CFRSerpentshrineCavern": ["CoilfangReservoir"],
"CFRTheSlavePens": ["TheSlavePens"],
"CFRTheSteamvault": ["TheSteamvault"],
"CFRTheUnderbog": ["TheUnderbog"],
"CoTBlackMorass": ["CoTTheBlackMorass"],
"CoTHyjal": ["CoTMountHyjal"],
"CoTOldHillsbrad": ["CoTHillsbradFoothills"],
"CoTOldStratholme": ["CoTStratholme"],
"FHHallsOfReflection": ["HallsofReflection"],
"FHPitOfSaron": ["PitofSaron"],
"FHTheForgeOfSouls": ["TheForgeofSouls"],
"HCBloodFurnace": ["TheBloodFurnace"],
"HCHellfireRamparts": ["HellfireRamparts"],
"HCMagtheridonsLair": ["Magtheridonslair"],
"HCTheShatteredHalls": ["TheShatteredHalls"],
"TempestKeepArcatraz": ["TheArcatraz"],
"TempestKeepBotanica": ["TheBotanica"],
"TempestKeepMechanar": ["TheMechanar"],
"TempestKeepTheEye": ["TempestKeep"],
"Naxxramas60": ["Naxxramas"],
"Onyxia60": ["OnyxiasLair"],
"ObsidianSanctum": ["TheObsidianSanctum"],
"RubySanctum": ["TheRubySanctum"],
"TheRuinsofAhnQiraj": ["RuinsofAhnQiraj"],
"TheTempleofAhnQiraj": ["AhnQiraj"],
"TheSunkenTemple": ["TheTempleofAtalhakkar"],
"ragefire": ["Ragefire"],
"_icc": "AtlasLoot has IcecrownCitadelA/B/C as separate; uprez has only IcecrownCitadel",
"IcecrownCitadelA": ["IcecrownCitadel"],
"IcecrownCitadelB": ["IcecrownCitadel"],
"IcecrownCitadelC": ["IcecrownCitadel"],
"_ulduar": "AtlasLoot has UlduarA/B/C/D/E as separate (5 wings); uprez has multi-floor Ulduar — show all floors for any wing",
"UlduarA": ["Ulduar"],
"UlduarB": ["Ulduar"],
"UlduarC": ["Ulduar"],
"UlduarD": ["Ulduar"],
"UlduarE": ["Ulduar"]
}
File diff suppressed because it is too large Load Diff
+37
View File
@@ -0,0 +1,37 @@
{
"_comment": "Keystone.guru classic dungeon registry. tile_key = used in /tiles/{expansion}/{tile_key}/{floor}/{z}/{x}_{y}.png. data_slug = used in /compiled/<hash>/mapcontext/data/{data_slug}/{mapping_id}/split_floors.js. mapping_ids are the LATEST published versions found 2026-04-25.",
"_max_zoom": 4,
"_tile_size": [384, 256],
"_expansion": "classic",
"dungeons": [
{"name": "Ragefire Chasm", "tile_key": "ragefire_chasm", "data_slug": "ragefire-chasm", "mapping_id": 188},
{"name": "The Deadmines", "tile_key": "deadmines", "data_slug": "the-deadmines", "mapping_id": 196},
{"name": "Wailing Caverns", "tile_key": "wailing_caverns", "data_slug": "wailing-caverns", "mapping_id": 200},
{"name": "Shadowfang Keep", "tile_key": "shadowfang_keep", "data_slug": "shadowfang-keep", "mapping_id": 190},
{"name": "The Stockade", "tile_key": "the_stockade", "data_slug": "the-stockade", "mapping_id": 189},
{"name": "Blackfathom Deeps", "tile_key": "blackfathom_deeps", "data_slug": "blackfathom-deeps", "mapping_id": 197},
{"name": "Gnomeregan", "tile_key": "gnomeregan", "data_slug": "gnomeregan", "mapping_id": 201},
{"name": "Razorfen Kraul", "tile_key": "razorfen_kraul", "data_slug": "razorfen-kraul", "mapping_id": 227},
{"name": "Razorfen Downs", "tile_key": "razorfen_downs", "data_slug": "razorfen-downs", "mapping_id": 228},
{"name": "SM: Armory", "tile_key": "scarlet_monastery_armory", "data_slug": "scarlet-monastery-armory", "mapping_id": 232},
{"name": "SM: Cathedral", "tile_key": "scarlet_monastery_cathedral", "data_slug": "scarlet-monastery-cathedral", "mapping_id": 233},
{"name": "SM: Graveyard", "tile_key": "scarlet_monastery_graveyard", "data_slug": "scarlet-monastery-graveyard", "mapping_id": 202},
{"name": "SM: Library", "tile_key": "scarlet_monastery_library", "data_slug": "scarlet-monastery-library", "mapping_id": 234},
{"name": "Uldaman", "tile_key": "uldaman", "data_slug": "uldaman", "mapping_id": 222},
{"name": "Zul'Farrak", "tile_key": "zul_farrak", "data_slug": "zulfarrak", "mapping_id": 204},
{"name": "Maraudon", "tile_key": "maraudon", "data_slug": "maraudon", "mapping_id": 203},
{"name": "Blackrock Depths", "tile_key": "blackrock_depths", "data_slug": "blackrock-depths", "mapping_id": 206},
{"name": "Lower Blackrock Spire","tile_key": "lower_blackrock_spire", "data_slug": "lower-blackrock-spire", "mapping_id": 247},
{"name": "Upper Blackrock Spire","tile_key": "upper_blackrock_spire", "data_slug": "upper-blackrock-spire", "mapping_id": 246},
{"name": "Stratholme", "tile_key": "stratholme", "data_slug": "stratholme", "mapping_id": 215},
{"name": "Scholomance", "tile_key": "scholomance", "data_slug": "scholomance", "mapping_id": 219},
{"name": "Dire Maul: North", "tile_key": "dire_maul_north", "data_slug": "dire-maul-north", "mapping_id": 218},
{"name": "Dire Maul: East", "tile_key": "dire_maul_east", "data_slug": "dire-maul-east", "mapping_id": 217},
{"name": "Dire Maul: West", "tile_key": "dire_maul_west", "data_slug": "dire-maul-west", "mapping_id": 216},
{"name": "Naxxramas (40)", "tile_key": "naxxramas_classic", "data_slug": "naxxramas", "mapping_id": 60},
{"name": "Molten Core", "tile_key": "moltencore", "data_slug": "molten-core", "mapping_id": 375},
{"name": "Blackwing Lair", "tile_key": "blackwinglair", "data_slug": "blackwing-lair", "mapping_id": 422},
{"name": "Zul'Gurub", "tile_key": "zulgurub", "data_slug": "zulgurub", "mapping_id": 413},
{"name": "Sunken Temple", "tile_key": "the_temple_of_atal_hakkar", "data_slug": null, "mapping_id": null}
]
}