Commit Graph

9 Commits

Author SHA1 Message Date
florian.berthold ad511d54e1 scholo: revert image swap experiment, keep kg's native 6144x4096 maps
Tried replacing kg's 4 scholo floors with the upreza Dungeons stitched maps (which have room labels baked in: Reliquary, Chamber of Summoning, Butcher's Sanctum, etc.). But kg renders to 3:2 aspect (6144x4096) while upreza is 4:3 (4096x3072) and the WoW client's source content is positioned differently in each — linear rescale of kg's enemy coords lands bosses outside the rooms.

Better to keep kg's lower-quality but coord-aligned maps. dungeon_replacements / map_image_swaps mechanisms are still there for future cases where we DO have a coord-compatible replacement.

WoWMapUprezClassic doesn't help here — the README notes that vanilla never had in-game dungeon interior maps.
2026-04-26 00:15:02 +02:00
florian.berthold 15b7fdeead revert scholo dungeon-replacement; restore kg 4-floor maps
The Atlas single-room override was too low-res and too lossy (no kg packs/patrols, only 14 hand-curated bosses). Better to keep kg's 4-floor layout and figure out per-floor edge cases as we go.

dungeon_replacements is left in place as a mechanism but with no entries; we'll use it only when we have a high-resolution alternative map.
2026-04-26 00:02:20 +02:00
florian.berthold 5b1c198757 Scholomance: replace kg's Cata 4-floor map with classic single-room layout
kg only ships the post-Cataclysm Scholomance (4 floors split as you ascend the school) but Ascension uses the classic single-floor layout where every wing branches off the central rooms.

Fix: new dungeon_replacements section in ascension_overrides.json. When a tile_key is listed there, build_data skips kg entirely for that dungeon and synthesises a single-floor entry from a manually-supplied map (Atlas-addon Scholomance.blp upscaled to 2048x2048) and AtlasLoot's per-dungeon boss list.

Coords come from AtlasLoot's 0..100 percent space scaled to the new map's pixel space directly. Pin classification: dungeonskull → boss (cls=3), None+name-contains-Rare → rare elite (cls=5), other interactives → cls=2.
2026-04-25 23:56:40 +02:00
florian.berthold 65ae0158f3 Ascension override: Lorgus Jett moves to BFD floor 2 (Moonshrine Sanctum)
kg pinned Lorgus on floor 1 (entrance Pool of Ask'ar) but he actually spawns on floor 2 in Moonshrine Sanctum on Ascension. AtlasLoot's subzone tagging confirms this — Lorgus sits with Twilight Lord Kelris and Aku'mai, not the floor-1 lake bosses.

ascension_overrides.json now also supports relocating an enemy across floors (not just position-changing). build_data.py removes the enemy from its source floor and appends it to the target.
2026-04-25 23:41:57 +02:00
florian.berthold e11dc1eed5 per-floor extras + Ascension overrides + layer toggles
- atlasloot_extras: fit one transform per (kg_dungeon, floor_id) instead of mixing all kg bosses into one fit. Each AL extra is assigned to whichever floor's anchors it's nearest to (in AL coord space). Strat's Stonespine now correctly lands on floor 235 (Undead) instead of being hidden because the mixed-floor fit pushed it off.
- new data/ascension_overrides.json: per-name position/floor patches for places where Ascension diverges from retail. Seeded with Magistrate Barthilas → moved to the southern courtyard (3498, 3300 on Undead Side) per Ascension spawns.
- frontend renders extras only on their assigned floor; previously hard-coded to floor 0.
- new layer-toggle checkboxes (Enemies / Packs / Patrols / Icons) in the toolbar — flip patrols off if mob routes are noise for your route.
2026-04-25 23:26:24 +02:00
florian.berthold 724ae08394 pull AtlasLoot rares + interactives into kg pixel space
- new tools/atlasloot_extras.py: matches AL bosses to kg cls>=3 enemies by name, fits per-(dungeon,wing) affine x/y transform, applies to AL pinType=None entries to recover ~14 rare bosses kg's spawn-bound data model omits (Blind Hunter, Stonespine, Deathsworn Captain, Spirestone Butcher, Bannok Grimaxe, Jed Runewatcher, Tsu'zee, …) plus 140+ AtlasLoot interactives (postboxes, summon stones, levers)
- WING_FORCE map disambiguates multi-wing dungeons (BRS, Dire Maul, Scarlet Monastery) where the same AL coord transforms into multiple wings
- frontend renders rare extras as silver-blue skull pins, non-rare extras as muted squares; both have hover-tooltips with their AtlasLoot name
- start, graveyard, dot_yellow, gateway, door_locked icon types from kg now render with distinct shapes (were silently empty before)
- kg_build_data.py merges atlasloot_extras.json into each dungeon's 'extras' field

Note: Ascension always-spawns rare bosses (vs retail's RNG), so they're now reliably visible on the planner.
2026-04-25 23:18:50 +02:00
florian.berthold 9600ce35c2 drop Sunken Temple — kg has no enemy data for it; the empty entry was just clutter in the picker 2026-04-25 23:08:18 +02:00
florian.berthold 18c7792935 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.
2026-04-25 22:11:17 +02:00
florian.berthold aa1cd9ee40 initial commit: classic-only M+ planner with upreza-derived maps 2026-04-25 21:39:15 +02:00