diff --git a/data/ascension_overrides.json b/data/ascension_overrides.json index fb18404..452c72c 100644 --- a/data/ascension_overrides.json +++ b/data/ascension_overrides.json @@ -7,6 +7,13 @@ "kg_floor_id": 235, "pos": [3498, 3300], "note": "Ascension moved Barthilas to the southern courtyard of the Undead Side" + }, + { + "tile_key": "blackfathom_deeps", + "name": "Lorgus Jett", + "kg_floor_id": 192, + "pos": [2893, 2827], + "note": "kg places Lorgus on floor 1 (entrance pool) but he's actually in Moonshrine Sanctum on floor 2 — confirmed by AtlasLoot subzone tag" } ] } diff --git a/tools/kg_build_data.py b/tools/kg_build_data.py index ced05ae..e210a3a 100644 --- a/tools/kg_build_data.py +++ b/tools/kg_build_data.py @@ -283,16 +283,28 @@ def main() -> int: for e in extras ] - # Ascension overrides: swap pos / floor for a specific named entity + # Ascension overrides: change pos and/or relocate to a different + # floor. We collect relocations first, then apply them in a + # second pass so iteration semantics stay clean. + relocations = [] # list of (enemy_dict, source_map, target_map) for m in entry["maps"]: - for e in m["enemies"]: + for e in list(m["enemies"]): new_pos, new_floor = apply_overrides(d["tile_key"], e["name"], e["pos"], m.get("kg_floor_id")) - if new_pos is not e["pos"]: - e["pos"] = list(new_pos) - e["ascension_override"] = True + if new_pos is e["pos"] and new_floor == m.get("kg_floor_id"): + continue + e["pos"] = list(new_pos) + e["ascension_override"] = True + if new_floor is not None and new_floor != m.get("kg_floor_id"): + target = next((mm for mm in entry["maps"] if mm.get("kg_floor_id") == new_floor), None) + if target: + relocations.append((e, m, target)) + for e, src, tgt in relocations: + src["enemies"].remove(e) + tgt["enemies"].append(e) + for ex in entry.get("extras", []): new_pos, new_floor = apply_overrides(d["tile_key"], ex["name"], ex["pos"], ex.get("kg_floor_id")) - if new_pos is not ex["pos"]: + if new_pos is not ex["pos"] or new_floor != ex.get("kg_floor_id"): ex["pos"] = list(new_pos) ex["kg_floor_id"] = new_floor ex["ascension_override"] = True diff --git a/web/assets/dungeons.json b/web/assets/dungeons.json index ac4d8f6..adc6f66 100644 --- a/web/assets/dungeons.json +++ b/web/assets/dungeons.json @@ -1486,21 +1486,6 @@ "pack_id": null, "patrol_id": null }, - { - "id": 29965, - "npc_id": 12902, - "name": "Lorgus Jett", - "pos": [ - 3780.0, - 2561.0 - ], - "classification": 3, - "skippable": false, - "required": false, - "kill_priority": null, - "pack_id": null, - "patrol_id": null - }, { "id": 29966, "npc_id": 4807, @@ -4400,6 +4385,22 @@ "kill_priority": null, "pack_id": null, "patrol_id": 1739 + }, + { + "id": 29965, + "npc_id": 12902, + "name": "Lorgus Jett", + "pos": [ + 2893, + 2827 + ], + "classification": 3, + "skippable": false, + "required": false, + "kill_priority": null, + "pack_id": null, + "patrol_id": null, + "ascension_override": true } ], "packs": [