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.
This commit is contained in:
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+18
-6
@@ -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
|
||||
|
||||
+16
-15
@@ -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": [
|
||||
|
||||
Reference in New Issue
Block a user