/* Generated by scripts/runewaker-pipeline/generate-runtime-registry.mjs. */ import { DUNGEON_DEFINITION_SCHEMA_VERSION, type DungeonDefinition } from "../dungeonTypes"; import { KALINS_SHRINE_BOSSES, KALINS_SHRINE_ENTITIES, KALINS_SHRINE_OBJECTIVE_ORDER, KALINS_SHRINE_STATIC_SPAWNS } from "./kalinsShrinePopulation.generated"; import { HOTO_BOSSES, HOTO_ENTITIES, HOTO_OBJECTIVE_ORDER, HOTO_STATIC_SPAWNS } from "./hotoPopulation.generated"; import { MYSTIC_ALTAR_BOSSES, MYSTIC_ALTAR_ENTITIES, MYSTIC_ALTAR_OBJECTIVE_ORDER, MYSTIC_ALTAR_STATIC_SPAWNS } from "./mysticAltarPopulation.generated"; import { KAL_TUROK_HIVE_BOSSES, KAL_TUROK_HIVE_ENTITIES, KAL_TUROK_HIVE_OBJECTIVE_ORDER, KAL_TUROK_HIVE_STATIC_SPAWNS } from "./kalTurokHivePopulation.generated"; import { PASPERS_SHRINE_BOSSES, PASPERS_SHRINE_ENTITIES, PASPERS_SHRINE_OBJECTIVE_ORDER, PASPERS_SHRINE_STATIC_SPAWNS } from "./paspersShrinePopulation.generated"; import { TREASURE_TROVE_BOSSES, TREASURE_TROVE_ENTITIES, TREASURE_TROVE_OBJECTIVE_ORDER, TREASURE_TROVE_STATIC_SPAWNS } from "./treasureTrovePopulation.generated"; import { YSTRA_LABYRINTH_BOSS1_BOSSES, YSTRA_LABYRINTH_BOSS1_ENTITIES, YSTRA_LABYRINTH_BOSS1_OBJECTIVE_ORDER, YSTRA_LABYRINTH_BOSS1_STATIC_SPAWNS } from "./ystraLabyrinthBoss1Population.generated"; import { BARREN_CAVES_BOSSES, BARREN_CAVES_ENTITIES, BARREN_CAVES_OBJECTIVE_ORDER, BARREN_CAVES_STATIC_SPAWNS } from "./barrenCavesPopulation.generated"; import { YSTRA_LABYRINTH_BOSS2_BOSSES, YSTRA_LABYRINTH_BOSS2_ENTITIES, YSTRA_LABYRINTH_BOSS2_OBJECTIVE_ORDER, YSTRA_LABYRINTH_BOSS2_STATIC_SPAWNS } from "./ystraLabyrinthBoss2Population.generated"; import { YSTRA_LABYRINTH_BOSS3_BOSSES, YSTRA_LABYRINTH_BOSS3_ENTITIES, YSTRA_LABYRINTH_BOSS3_OBJECTIVE_ORDER, YSTRA_LABYRINTH_BOSS3_STATIC_SPAWNS } from "./ystraLabyrinthBoss3Population.generated"; import { ICE_DWARF_KINGDOM_BOSSES, ICE_DWARF_KINGDOM_ENTITIES, ICE_DWARF_KINGDOM_OBJECTIVE_ORDER, ICE_DWARF_KINGDOM_STATIC_SPAWNS } from "./iceDwarfKingdomPopulation.generated"; import { THE_ORIGIN_BOSSES, THE_ORIGIN_ENTITIES, THE_ORIGIN_OBJECTIVE_ORDER, THE_ORIGIN_STATIC_SPAWNS } from "./theOriginPopulation.generated"; import { HALL_OF_SURVIVORS_BOSSES, HALL_OF_SURVIVORS_ENTITIES, HALL_OF_SURVIVORS_OBJECTIVE_ORDER, HALL_OF_SURVIVORS_STATIC_SPAWNS } from "./hallOfSurvivorsPopulation.generated"; import { CAVE_WATER_DRAGON_BOSSES, CAVE_WATER_DRAGON_ENTITIES, CAVE_WATER_DRAGON_OBJECTIVE_ORDER, CAVE_WATER_DRAGON_STATIC_SPAWNS } from "./caveWaterDragonPopulation.generated"; import { LAIR_DEMON_DRAGON_BOSSES, LAIR_DEMON_DRAGON_ENTITIES, LAIR_DEMON_DRAGON_OBJECTIVE_ORDER, LAIR_DEMON_DRAGON_STATIC_SPAWNS } from "./lairDemonDragonPopulation.generated"; import { ZURHIDON_STRONGHOLD_BOSSES, ZURHIDON_STRONGHOLD_ENTITIES, ZURHIDON_STRONGHOLD_OBJECTIVE_ORDER, ZURHIDON_STRONGHOLD_STATIC_SPAWNS } from "./zurhidonStrongholdPopulation.generated"; import { SAND_VORTEX_BOSSES, SAND_VORTEX_ENTITIES, SAND_VORTEX_OBJECTIVE_ORDER, SAND_VORTEX_STATIC_SPAWNS } from "./sandVortexPopulation.generated"; import { DEMON_STRONGHOLD_BOSSES, DEMON_STRONGHOLD_ENTITIES, DEMON_STRONGHOLD_OBJECTIVE_ORDER, DEMON_STRONGHOLD_STATIC_SPAWNS } from "./demonStrongholdPopulation.generated"; import { ZURHIDON_STRONGHOLD_124_BOSSES, ZURHIDON_STRONGHOLD_124_ENTITIES, ZURHIDON_STRONGHOLD_124_OBJECTIVE_ORDER, ZURHIDON_STRONGHOLD_124_STATIC_SPAWNS } from "./zurhidonStronghold124Population.generated"; import { DEMON_STRONGHOLD_125_BOSSES, DEMON_STRONGHOLD_125_ENTITIES, DEMON_STRONGHOLD_125_OBJECTIVE_ORDER, DEMON_STRONGHOLD_125_STATIC_SPAWNS } from "./demonStronghold125Population.generated"; import { DUNGEON_OF_DALANIS_BOSSES, DUNGEON_OF_DALANIS_ENTITIES, DUNGEON_OF_DALANIS_OBJECTIVE_ORDER, DUNGEON_OF_DALANIS_STATIC_SPAWNS } from "./dungeonOfDalanisPopulation.generated"; import { WARNORKEN_ARENA_BOSSES, WARNORKEN_ARENA_ENTITIES, WARNORKEN_ARENA_OBJECTIVE_ORDER, WARNORKEN_ARENA_STATIC_SPAWNS } from "./warnorkenArenaPopulation.generated"; import { RAKSHA_TEMPLE_BOSSES, RAKSHA_TEMPLE_ENTITIES, RAKSHA_TEMPLE_OBJECTIVE_ORDER, RAKSHA_TEMPLE_STATIC_SPAWNS } from "./rakshaTemplePopulation.generated"; import { KAWAKS_TOMB_BOSSES, KAWAKS_TOMB_ENTITIES, KAWAKS_TOMB_OBJECTIVE_ORDER, KAWAKS_TOMB_STATIC_SPAWNS } from "./kawaksTombPopulation.generated"; import { GRAFU_CASTLE_BOSSES, GRAFU_CASTLE_ENTITIES, GRAFU_CASTLE_OBJECTIVE_ORDER, GRAFU_CASTLE_STATIC_SPAWNS } from "./grafuCastlePopulation.generated"; import { SARDO_CASTLE_BOSSES, SARDO_CASTLE_ENTITIES, SARDO_CASTLE_OBJECTIVE_ORDER, SARDO_CASTLE_STATIC_SPAWNS } from "./sardoCastlePopulation.generated"; import { TOMB_SEVEN_HEROES_BOSSES, TOMB_SEVEN_HEROES_ENTITIES, TOMB_SEVEN_HEROES_OBJECTIVE_ORDER, TOMB_SEVEN_HEROES_STATIC_SPAWNS } from "./tombSevenHeroesPopulation.generated"; import { AETERNAL_CIRCLE_BOSSES, AETERNAL_CIRCLE_ENTITIES, AETERNAL_CIRCLE_OBJECTIVE_ORDER, AETERNAL_CIRCLE_STATIC_SPAWNS } from "./aeternalCirclePopulation.generated"; import { KULECH_BONES_NEST_BOSSES, KULECH_BONES_NEST_ENTITIES, KULECH_BONES_NEST_OBJECTIVE_ORDER, KULECH_BONES_NEST_STATIC_SPAWNS } from "./kulechBonesNestPopulation.generated"; export const RUNEWAKER_DUNGEON_DEFINITIONS = [ { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "kalins-shrine", "title": "Kalin's Shrine", "mapId": 107, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 48, 52 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Kalin's Shrine", "theme": "RuneWaker dungeon import", "summary": "Explore Kalin's Shrine and defeat its source-authored encounters.", "loadingMessage": "Entering Kalin's Shrine...", "unchartedAreaName": "Uncharted Kalin's Shrine", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 641 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 348, "height": 669, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "kalins-shrine-visual.glb", "checksum": "023c43a56253e97fa0526185c61f76e0e9fa8398b7a35771728566c331cd22a9", "size": 8851724, "triangleCount": 202382 } ], "collision": [ { "id": "collision-000", "fileName": "kalins-shrine-collision-000.glb", "checksum": "ed1e713c159e024b4786ef8befadbfedd3849ba580e7f49970e2785b6f4fff7d", "size": 4748976, "triangleCount": 89559 }, { "id": "collision-001", "fileName": "kalins-shrine-collision-001.glb", "checksum": "5fea14212353593c8daced2e303f88dae010f8f73aedb9890a3eee67eb8dd7cd", "size": 4555800, "triangleCount": 89495 }, { "id": "collision-002", "fileName": "kalins-shrine-collision-002.glb", "checksum": "e51d48d1f4521f1a4722fd4c528a90bdfd2978a87d2ace0dd662f23475490565", "size": 1215728, "triangleCount": 23328 } ], "navigation": { "id": "navigation", "fileName": "kalins-shrine-navigation.glb", "checksum": "6b77496f7b46890d401f955f9254ae37d25d9a1287a3bc9e787e9a254f9d9071", "size": 327792, "triangleCount": 6811 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -321.85596, -59.50353, -645.24963 ], "max": [ 25.84111, 53.16821, 23.3187 ] }, "entrance": { "name": "Kalin's Shrine Entrance", "footPosition": [ -191.947523, 4.296562, -99.146711 ], "forward": [ 0, 0, 1 ], "yaw": 0 }, "areas": [ { "id": "entrance", "name": "Kalin's Shrine Entrance", "center": [ -191.947523, 4.296562, -99.146711 ], "radius": 24 } ], "entities": KALINS_SHRINE_ENTITIES, "staticSpawns": KALINS_SHRINE_STATIC_SPAWNS, "roamingPacks": [], "bosses": KALINS_SHRINE_BOSSES, "objectiveOrder": KALINS_SHRINE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "9ceaff03a64a738ec0ac7db5de79791355d757052141d37be4dc00e4b6faf230", "primaryRos": "f4e008bbb1dd3f571e93c448a88b1980a665be6ebde25ade43b5d2517b8e2c43", "populationSnapshot": "fea45d739ae54018ae5882576f0ce1a9635c9bb16e4a1ecca4a84496fcbca4bc" }, "databaseAdapter": "portable RuneWaker Zone 107 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/kalins-shrine-zone-107.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/kalins-shrine/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "hoto", "title": "HOTO", "mapId": 115, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 58 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "HOTO", "theme": "RuneWaker dungeon import", "summary": "Explore HOTO and defeat its source-authored encounters.", "loadingMessage": "Entering HOTO...", "unchartedAreaName": "Uncharted HOTO", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 513 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 496, "height": 342, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "hoto-visual.glb", "checksum": "beff3a180c55166d5ebd7e3610e65b59f8104edfd7596aa22ac3a49c578fcdc0", "size": 6710184, "triangleCount": 189855 } ], "collision": [ { "id": "collision-000", "fileName": "hoto-collision-000.glb", "checksum": "3116529f2d262ff4cab7997e852f9d15caacab6298921360b49dcafd52b8c475", "size": 3088036, "triangleCount": 89550 }, { "id": "collision-001", "fileName": "hoto-collision-001.glb", "checksum": "1f5cbd4b04b5a060029fd7c023ee19db5d8646566fcd01b931473b5b13c13b9f", "size": 2989324, "triangleCount": 86640 }, { "id": "collision-002", "fileName": "hoto-collision-002.glb", "checksum": "0a468a6ef30941c04a20456866f0593f7e1f9f9bf8dc0024176d2128975f1879", "size": 526648, "triangleCount": 13665 } ], "navigation": { "id": "navigation", "fileName": "hoto-navigation.glb", "checksum": "a2bde2e4b8ed0d0bac8c4669a05192ff0a35ae9c64df0c0a29fe3735b65cbf4b", "size": 482260, "triangleCount": 10029 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -269.31494, -52.0522, -185.29417 ], "max": [ 226.07817, 64.31268, 155.95111 ] }, "entrance": { "name": "HOTO Entrance", "footPosition": [ -189.727301, 5.761676, -62.645942 ], "forward": [ 0.422618, 0, 0.906308 ], "yaw": 0.436332 }, "areas": [ { "id": "entrance", "name": "HOTO Entrance", "center": [ -189.727301, 5.761676, -62.645942 ], "radius": 24 } ], "entities": HOTO_ENTITIES, "staticSpawns": HOTO_STATIC_SPAWNS, "roamingPacks": [], "bosses": HOTO_BOSSES, "objectiveOrder": HOTO_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "7b3ee8adca7199c86f8de13695f29db9b0cf7f61ba2328641cbc9ad8ffa138a0", "primaryRos": "a0bd77c09045f8bfa1507484bbb2c2ff0cc72d397df4f769fc4e6d5aab14f8a2", "populationSnapshot": "9ccae313cc75da8347ad18684a021fe651316cff6faf9418be4af05b619fa984" }, "databaseAdapter": "portable RuneWaker Zone 115 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/hoto-zone-115.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/hoto/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "mystic-altar", "title": "Mystic Altar", "mapId": 104, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 36, 43 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Mystic Altar", "theme": "RuneWaker dungeon import", "summary": "Explore Mystic Altar and defeat its source-authored encounters.", "loadingMessage": "Entering Mystic Altar...", "unchartedAreaName": "Uncharted Mystic Altar", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 950 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 593, "height": 946, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "mystic-altar-visual.glb", "checksum": "c37f27643598c8fe6401828be2950bc08f299dfe491df37736fda4662c70a96e", "size": 5552892, "triangleCount": 174521 } ], "collision": [ { "id": "collision-000", "fileName": "mystic-altar-collision-000.glb", "checksum": "f838fc2c8137271d81fad208900bed8c43ce3a35200294d1259594171589d116", "size": 4365348, "triangleCount": 89622 }, { "id": "collision-001", "fileName": "mystic-altar-collision-001.glb", "checksum": "93bd2b0f1486783dcefc96d7d39c5e6a6c903215ca2fe2c09334d1b3f1de4faf", "size": 4256292, "triangleCount": 84899 } ], "navigation": { "id": "navigation", "fileName": "mystic-altar-navigation.glb", "checksum": "3dbf8ce85b83f0d515b6925a784a36191f4b9e760b56205a8b20bb927e389ed1", "size": 499208, "triangleCount": 10497 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -485.47565, -95.06502, -462.67892 ], "max": [ 106.94466, 73.76214, 482.36874 ] }, "entrance": { "name": "Mystic Altar Entrance", "footPosition": [ -16.992301, -1.007893, -28.474958 ], "forward": [ -0.017452, 0, 0.999848 ], "yaw": 6.265732 }, "areas": [ { "id": "entrance", "name": "Mystic Altar Entrance", "center": [ -16.992301, -1.007893, -28.474958 ], "radius": 24 } ], "entities": MYSTIC_ALTAR_ENTITIES, "staticSpawns": MYSTIC_ALTAR_STATIC_SPAWNS, "roamingPacks": [], "bosses": MYSTIC_ALTAR_BOSSES, "objectiveOrder": MYSTIC_ALTAR_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "a46f15797648d56f740f6059c4569dc16b2e6659600de53f125a9a9e86c42ab8", "primaryRos": "14974678994c48a7315a588c7fbcdd6cdcae9c3313cf1b48a470ed736a14b85e", "populationSnapshot": "070d2b10a472ae8b7f17bf115db2a1cf7cb3d6a308fc9e2f1cbdbb87d692be71" }, "databaseAdapter": "portable RuneWaker Zone 104 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/mystic-altar-zone-104.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/mystic-altar/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Source-anchor support pads preserve combat and entrance coordinates where modular WDB sections or primary-ROS collision leave navmesh gaps; full secondary placement assembly remains a visual follow-up.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "kal-turok-hive", "title": "Kal Turok Hive", "mapId": 105, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 60, 60 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Kal Turok Hive", "theme": "RuneWaker dungeon import", "summary": "Explore Kal Turok Hive and defeat its source-authored encounters.", "loadingMessage": "Entering Kal Turok Hive...", "unchartedAreaName": "Uncharted Kal Turok Hive", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 220 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 120, "height": 120, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "kal-turok-hive-visual.glb", "checksum": "75c0c596218cec07003e2def1d74c8e1f5ca3010ed370db558a1786b003f4f1c", "size": 1777728, "triangleCount": 24026 } ], "collision": [ { "id": "collision-000", "fileName": "kal-turok-hive-collision.glb", "checksum": "3db92246df3429613a661563e24d0562232d77b031d6239e767391da2ea97678", "size": 1040732, "triangleCount": 24026 } ], "navigation": { "id": "navigation", "fileName": "kal-turok-hive-navigation.glb", "checksum": "b81cea609f0fa19988f51506e27c44b7541b1d49297ce630c13c5d258a9e39c0", "size": 34360, "triangleCount": 698 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -34.81859, -37.52493, -97.16352 ], "max": [ 36.58556, 40.84839, 6.9261 ] }, "entrance": { "name": "Kal Turok Hive Entrance", "footPosition": [ -0.228921, 1.990129, -12.160218 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Kal Turok Hive Entrance", "center": [ -0.228921, 1.990129, -12.160218 ], "radius": 24 } ], "entities": KAL_TUROK_HIVE_ENTITIES, "staticSpawns": KAL_TUROK_HIVE_STATIC_SPAWNS, "roamingPacks": [], "bosses": KAL_TUROK_HIVE_BOSSES, "objectiveOrder": KAL_TUROK_HIVE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "44347966246ee231eeb72a37817024b86be68c038e54d9a04e4a6cfa8609de0e", "primaryRos": "ca11befddba6597b75b10b8fc58c7e00b7dbd3f1b30dddeaf262035c226129a9", "populationSnapshot": "557a5709d364fa9ec4026a95b9f2245d95507e1756ead43459255a389796e7e2" }, "databaseAdapter": "portable RuneWaker Zone 105 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/kal-turok-hive-zone-105.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/kal-turok-hive/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "paspers-shrine", "title": "Pasper's Shrine", "mapId": 106, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 41, 45 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Pasper's Shrine", "theme": "RuneWaker dungeon import", "summary": "Explore Pasper's Shrine and defeat its source-authored encounters.", "loadingMessage": "Entering Pasper's Shrine...", "unchartedAreaName": "Uncharted Pasper's Shrine", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 568 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 440, "height": 502, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "paspers-shrine-visual.glb", "checksum": "bcf6443e8adb8b7f7dd81f4a97b79aac1c99756a83289bbada31853d2d9adb7c", "size": 5674908, "triangleCount": 169935 } ], "collision": [ { "id": "collision-000", "fileName": "paspers-shrine-collision-000.glb", "checksum": "b6efbe1b90545dd2c2af3bfc7396616147211f6f79b999ccf81ca3680fdc984e", "size": 4291972, "triangleCount": 83993 }, { "id": "collision-001", "fileName": "paspers-shrine-collision-001.glb", "checksum": "1c6f52d7e21171acfbe3fb43335b2c7f3de13217881840947f15fd0722adb4de", "size": 4479896, "triangleCount": 85942 } ], "navigation": { "id": "navigation", "fileName": "paspers-shrine-navigation.glb", "checksum": "4ebba3fb97a99df49c7301dbfcdb8154634cf4e56a85c5ed587c7515221d0a10", "size": 152356, "triangleCount": 3156 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -183.30476, -3.952, -325.79385 ], "max": [ 256.49805, 79.51108, 175.24443 ] }, "entrance": { "name": "Pasper's Shrine Entrance", "footPosition": [ -0.181739, 0.349067, -11.472769 ], "forward": [ -0.999848, 0, -0.017452 ], "yaw": 4.694936 }, "areas": [ { "id": "entrance", "name": "Pasper's Shrine Entrance", "center": [ -0.181739, 0.349067, -11.472769 ], "radius": 24 } ], "entities": PASPERS_SHRINE_ENTITIES, "staticSpawns": PASPERS_SHRINE_STATIC_SPAWNS, "roamingPacks": [], "bosses": PASPERS_SHRINE_BOSSES, "objectiveOrder": PASPERS_SHRINE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "6aba836cef4e8c7b7ac22988e75ea778edcac43078361237b1244d00fa176aaf", "primaryRos": "e4ba1f48e749af0081fb9ed9043388ae80fe21beea3d79f7119280a387c4c72e", "populationSnapshot": "eaed1572fe7ce3bb19701a2cc92a6850d9ef364ba13a8baba9fd5029dab040f2" }, "databaseAdapter": "portable RuneWaker Zone 106 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/paspers-shrine-zone-106.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/paspers-shrine/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "treasure-trove", "title": "Treasure Trove", "mapId": 108, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 53 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Treasure Trove", "theme": "RuneWaker dungeon import", "summary": "Explore Treasure Trove and defeat its source-authored encounters.", "loadingMessage": "Entering Treasure Trove...", "unchartedAreaName": "Uncharted Treasure Trove", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 1137 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 1242, "height": 496, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "treasure-trove-visual.glb", "checksum": "c56d429187fd2ffbe20e11d5e7bbfd2128a779c9251fa2ab4b12286caf0de0b6", "size": 7433780, "triangleCount": 182387 } ], "collision": [ { "id": "collision-000", "fileName": "treasure-trove-collision-000.glb", "checksum": "b3ec3af63594f959b5bb57d90edaedebe9ab2bd86eb3a8ca4ccb26260b8c4298", "size": 4200660, "triangleCount": 89599 }, { "id": "collision-001", "fileName": "treasure-trove-collision-001.glb", "checksum": "c1f733e836f9d600929fb6d016bbaf9c37095223278f6c780397323e2a5c54e2", "size": 3852136, "triangleCount": 89872 }, { "id": "collision-002", "fileName": "treasure-trove-collision-002.glb", "checksum": "7bc7a738d53c8c28df01296e3f93b741a8f30d1a0db624addc7b106c59acd0eb", "size": 193784, "triangleCount": 2916 } ], "navigation": { "id": "navigation", "fileName": "treasure-trove-navigation.glb", "checksum": "73a70fcf482f7d13c9140901d8dd66c5b339a300f0aece69b00e863b83652657", "size": 1133904, "triangleCount": 23861 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -650.12347, -93.98473, -292.04816 ], "max": [ 591.7392, 223.47556, 203.80794 ] }, "entrance": { "name": "Treasure Trove Entrance", "footPosition": [ -1.654956, 5.644075, -9.361712 ], "forward": [ 0, 0, 1 ], "yaw": 0 }, "areas": [ { "id": "entrance", "name": "Treasure Trove Entrance", "center": [ -1.654956, 5.644075, -9.361712 ], "radius": 24 } ], "entities": TREASURE_TROVE_ENTITIES, "staticSpawns": TREASURE_TROVE_STATIC_SPAWNS, "roamingPacks": [], "bosses": TREASURE_TROVE_BOSSES, "objectiveOrder": TREASURE_TROVE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "e44731ea45a0a0a1d283c0e2ed20d65d94b2494f63e85b55be9e05b5a6788644", "primaryRos": "ec3dba6411b342598ce12e66c5761b8dca28a5a96cea043693f7c28a3b5137f4", "populationSnapshot": "0deed5998b613dafcaf6c4fd5abab16dc2aa6bea8e1f787b60f1351614202628" }, "databaseAdapter": "portable RuneWaker Zone 108 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/treasure-trove-zone-108.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/treasure-trove/instance-validation-report.json", "blockers": [], "warnings": [ "All valid static WDB ROS placements are assembled; filename-only dynamic candidates remain static until script evidence maps their behavior.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "The full WDB static assembly replaces the former source-anchor support pads; source-backed switch and drawbridge behavior is represented by encounter world objects pending original object-mesh animation mapping.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "ystra-labyrinth-boss1", "title": "Ystra Labyrinth Boss Rooms", "mapId": 109, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 40, 42 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Ystra Labyrinth Boss Rooms", "theme": "RuneWaker dungeon import", "summary": "Explore Ystra Labyrinth Boss Rooms and defeat its source-authored encounters.", "loadingMessage": "Entering Ystra Labyrinth Boss Rooms...", "unchartedAreaName": "Uncharted Ystra Labyrinth Boss Rooms", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 475 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 389, "height": 400, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "ystra-labyrinth-boss1-visual.glb", "checksum": "5e35eeccf5e207477bfb3a38dee75d53a5c5467433a90270b79a9ba8619a6260", "size": 2709464, "triangleCount": 64284 } ], "collision": [ { "id": "collision-000", "fileName": "ystra-labyrinth-boss1-collision.glb", "checksum": "1b8744f3af52dc8133fabc5439804dc3c16552adaeeb5c44f2012da7b0f66579", "size": 1015324, "triangleCount": 21428 }, { "id": "collision-001", "fileName": "ystra-labyrinth-boss1-collision-placement-002-000.glb", "checksum": "e32e1b5d69da91e124ed6da8aea56c6bead7f17aa7d8aab50c522e6350ff8309", "size": 1012180, "triangleCount": 21428 }, { "id": "collision-002", "fileName": "ystra-labyrinth-boss1-collision-placement-003-000.glb", "checksum": "57c09c9cc94623a42f5e2d6cc7b0821c47310a92f53c90b7955a045fedff5f0d", "size": 1012192, "triangleCount": 21428 } ], "navigation": { "id": "navigation", "fileName": "ystra-labyrinth-boss1-navigation.glb", "checksum": "7c1784a9fa159efe51845612e25c07ce1d57272362f213a78e28aaf27b0ac4ff", "size": 18260, "triangleCount": 1068 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -26.845006, -0.62211, -368.176365 ], "max": [ 361.421964, 41.184389, 31.097006 ] }, "entrance": { "name": "Ystra Labyrinth Boss Rooms Entrance", "footPosition": [ -0.103516, 0.177891, 20.760986 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Ystra Labyrinth Boss Rooms Entrance", "center": [ -0.103516, 0.177891, 20.760986 ], "radius": 24 } ], "entities": YSTRA_LABYRINTH_BOSS1_ENTITIES, "staticSpawns": YSTRA_LABYRINTH_BOSS1_STATIC_SPAWNS, "roamingPacks": [], "bosses": YSTRA_LABYRINTH_BOSS1_BOSSES, "objectiveOrder": YSTRA_LABYRINTH_BOSS1_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "eeb159fee30f93da3864b6d1ee03a12b5567b8e928ad77c5bb8f600f53a4159b", "primaryRos": "31985606b851a999c59acfdaf60c55e76ed1e03c1a057adcb6b5fb2352fbf97c", "populationSnapshot": "1dc2280d9301e59b50488dac774b4fea28475c6a31b5fc9ab2bce7f3046f9d8f" }, "databaseAdapter": "portable RuneWaker Zone 109 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/ystra-labyrinth-boss1-zone-109.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/ystra-labyrinth-boss1/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "barren-caves", "title": "Barren Caves", "mapId": 110, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 8, 10 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Barren Caves", "theme": "RuneWaker dungeon import", "summary": "Explore Barren Caves and defeat its source-authored encounters.", "loadingMessage": "Entering Barren Caves...", "unchartedAreaName": "Uncharted Barren Caves", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 264 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 244, "height": 192, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "barren-caves-visual.glb", "checksum": "e6dc49e6aa6fd20cee1b2afa43324a714f8f8284a6becef8dc514509b432f9bb", "size": 1710188, "triangleCount": 47084 } ], "collision": [ { "id": "collision-000", "fileName": "barren-caves-collision.glb", "checksum": "960ef7fff426931af2a76fa5dfd74c813e8817c8dfbcb1b08807bb7c372f2992", "size": 2359824, "triangleCount": 47084 } ], "navigation": { "id": "navigation", "fileName": "barren-caves-navigation.glb", "checksum": "28282862209625724ec67269e8d4b72f8be01873dacd7554e834098c574b7486", "size": 161664, "triangleCount": 3350 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -44.15004, -11.16734, -89.74606 ], "max": [ 199.77963, 19.2509, 101.62186 ] }, "entrance": { "name": "Barren Caves Entrance", "footPosition": [ 3.754691, 0.325996, 6.887372 ], "forward": [ -0.866025, 0, -0.5 ], "yaw": 4.18879 }, "areas": [ { "id": "entrance", "name": "Barren Caves Entrance", "center": [ 3.754691, 0.325996, 6.887372 ], "radius": 24 } ], "entities": BARREN_CAVES_ENTITIES, "staticSpawns": BARREN_CAVES_STATIC_SPAWNS, "roamingPacks": [], "bosses": BARREN_CAVES_BOSSES, "objectiveOrder": BARREN_CAVES_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "e51d78b4042f9bf40593f208df19136684e1f9814a235863b166a072cf0d3440", "primaryRos": "d2de5b83f63248b9b6f6d17e13104ee3cddbc4e77903d4eb561ca5731556bab7", "populationSnapshot": "5e5b1c6e77ea65945e4872810abbf67d40cc76b7ef3e739b11f600240137dd44" }, "databaseAdapter": "portable RuneWaker Zone 110 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/barren-caves-zone-110.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/barren-caves/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "ystra-labyrinth-boss2", "title": "Ystra Labyrinth Boss Room 2", "mapId": 111, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 46, 46 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Ystra Labyrinth Boss Room 2", "theme": "RuneWaker dungeon import", "summary": "Explore Ystra Labyrinth Boss Room 2 and defeat its source-authored encounters.", "loadingMessage": "Entering Ystra Labyrinth Boss Room 2...", "unchartedAreaName": "Uncharted Ystra Labyrinth Boss Room 2", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 220 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 120, "height": 120, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "ystra-labyrinth-boss2-visual.glb", "checksum": "be717e3d6e6301ff60762552283386d73da04240e6a7d1e36933e83e02d0250a", "size": 2682800, "triangleCount": 21428 } ], "collision": [ { "id": "collision-000", "fileName": "ystra-labyrinth-boss2-collision.glb", "checksum": "d80b20b46a48fe2d17c629257eadb5a44e08885cc9bad80588505926d47854c5", "size": 1015324, "triangleCount": 21428 } ], "navigation": { "id": "navigation", "fileName": "ystra-labyrinth-boss2-navigation.glb", "checksum": "662b36233a72add89c1fddac6d4b20d92ed2f1e62f38cfb04051920d9127cb0b", "size": 17948, "triangleCount": 356 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -26.34901, -0.62211, -32.10283 ], "max": [ 26.15341, 29.58174, 30.27789 ] }, "entrance": { "name": "Ystra Labyrinth Boss Room 2 Entrance", "footPosition": [ -0.00752, 0.177891, 20.334521 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Ystra Labyrinth Boss Room 2 Entrance", "center": [ -0.00752, 0.177891, 20.334521 ], "radius": 24 } ], "entities": YSTRA_LABYRINTH_BOSS2_ENTITIES, "staticSpawns": YSTRA_LABYRINTH_BOSS2_STATIC_SPAWNS, "roamingPacks": [], "bosses": YSTRA_LABYRINTH_BOSS2_BOSSES, "objectiveOrder": YSTRA_LABYRINTH_BOSS2_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "eeb159fee30f93da3864b6d1ee03a12b5567b8e928ad77c5bb8f600f53a4159b", "primaryRos": "31985606b851a999c59acfdaf60c55e76ed1e03c1a057adcb6b5fb2352fbf97c", "populationSnapshot": "25a5dc9d36fbd9a27d7f12c27565e5c7286569056ffe19eb83edda7b79647362" }, "databaseAdapter": "portable RuneWaker Zone 111 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/ystra-labyrinth-boss2-zone-111.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/ystra-labyrinth-boss2/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "ystra-labyrinth-boss3", "title": "Ystra Labyrinth Boss Room 3", "mapId": 112, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 51, 51 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Ystra Labyrinth Boss Room 3", "theme": "RuneWaker dungeon import", "summary": "Explore Ystra Labyrinth Boss Room 3 and defeat its source-authored encounters.", "loadingMessage": "Entering Ystra Labyrinth Boss Room 3...", "unchartedAreaName": "Uncharted Ystra Labyrinth Boss Room 3", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 220 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 120, "height": 120, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "ystra-labyrinth-boss3-visual.glb", "checksum": "be717e3d6e6301ff60762552283386d73da04240e6a7d1e36933e83e02d0250a", "size": 2682800, "triangleCount": 21428 } ], "collision": [ { "id": "collision-000", "fileName": "ystra-labyrinth-boss3-collision.glb", "checksum": "01ccc8815974fcea6b346125a8086c1666bb065bc879f1dc82df8ac44529e9c6", "size": 1015324, "triangleCount": 21428 } ], "navigation": { "id": "navigation", "fileName": "ystra-labyrinth-boss3-navigation.glb", "checksum": "662b36233a72add89c1fddac6d4b20d92ed2f1e62f38cfb04051920d9127cb0b", "size": 17948, "triangleCount": 356 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -26.34901, -0.62211, -32.10283 ], "max": [ 26.15341, 29.58174, 30.27789 ] }, "entrance": { "name": "Ystra Labyrinth Boss Room 3 Entrance", "footPosition": [ 0.12793, 0.177891, 20.84187 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Ystra Labyrinth Boss Room 3 Entrance", "center": [ 0.12793, 0.177891, 20.84187 ], "radius": 24 } ], "entities": YSTRA_LABYRINTH_BOSS3_ENTITIES, "staticSpawns": YSTRA_LABYRINTH_BOSS3_STATIC_SPAWNS, "roamingPacks": [], "bosses": YSTRA_LABYRINTH_BOSS3_BOSSES, "objectiveOrder": YSTRA_LABYRINTH_BOSS3_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "eeb159fee30f93da3864b6d1ee03a12b5567b8e928ad77c5bb8f600f53a4159b", "primaryRos": "31985606b851a999c59acfdaf60c55e76ed1e03c1a057adcb6b5fb2352fbf97c", "populationSnapshot": "eee49d64d6cfd02ef2144fe0dde28aaf56862dde36eeb88b13db88755e160143" }, "databaseAdapter": "portable RuneWaker Zone 112 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/ystra-labyrinth-boss3-zone-112.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/ystra-labyrinth-boss3/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "ice-dwarf-kingdom", "title": "Ice Dwarf Kingdom", "mapId": 114, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 53 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Ice Dwarf Kingdom", "theme": "RuneWaker dungeon import", "summary": "Explore Ice Dwarf Kingdom and defeat its source-authored encounters.", "loadingMessage": "Entering Ice Dwarf Kingdom...", "unchartedAreaName": "Uncharted Ice Dwarf Kingdom", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 567 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 468, "height": 474, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "ice-dwarf-kingdom-visual.glb", "checksum": "41cef8ce1bf6dbf7df0c4e2797a325e4d50a3870d435d46684600894d4aa92e7", "size": 9880304, "triangleCount": 285517 } ], "collision": [ { "id": "collision-000", "fileName": "ice-dwarf-kingdom-collision-000.glb", "checksum": "72e5928dbd38e0e87a6c42bb19609f453f29459bb6477d25904b4e9fa2d69d44", "size": 4271852, "triangleCount": 81636 }, { "id": "collision-001", "fileName": "ice-dwarf-kingdom-collision-001.glb", "checksum": "37f62ddaf67d8e2755ba0d3b7fcd2d1197705b0a8d7aa59e4824f1db282348b2", "size": 4850260, "triangleCount": 88625 }, { "id": "collision-002", "fileName": "ice-dwarf-kingdom-collision-002.glb", "checksum": "0339ba441dd56daf387e19abe7dc53f8ebdb57048342e8a413fb7eb1ec7471e8", "size": 4509768, "triangleCount": 83849 }, { "id": "collision-003", "fileName": "ice-dwarf-kingdom-collision-003.glb", "checksum": "aa2d248b4478b3ae9259c005f2afdf31eef15f1d2f0bc9d6c86b52093cbdf04c", "size": 1347536, "triangleCount": 31407 } ], "navigation": { "id": "navigation", "fileName": "ice-dwarf-kingdom-navigation.glb", "checksum": "05c1a2a9541b5a463b7032b47e509f66bb4db6466b279d3612b7f6add9cd0c46", "size": 437948, "triangleCount": 9106 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -256.0679, -7.4895, -324.12067 ], "max": [ 211.47131, 131.02574, 149.34294 ] }, "entrance": { "name": "Ice Dwarf Kingdom Entrance", "footPosition": [ -18.533362, 5.383546, 10.873819 ], "forward": [ 0, 0, 1 ], "yaw": 0 }, "areas": [ { "id": "entrance", "name": "Ice Dwarf Kingdom Entrance", "center": [ -18.533362, 5.383546, 10.873819 ], "radius": 24 } ], "entities": ICE_DWARF_KINGDOM_ENTITIES, "staticSpawns": ICE_DWARF_KINGDOM_STATIC_SPAWNS, "roamingPacks": [], "bosses": ICE_DWARF_KINGDOM_BOSSES, "objectiveOrder": ICE_DWARF_KINGDOM_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "ba124786df0d83ae5135adf6a113f2ca66087e7405b794e027105c7a6b83c421", "primaryRos": "fc42ca35e6e56e39f7eb814961608165410bbfb4b66daf7066290d1be9969931", "populationSnapshot": "44a034995d4124d8ee7673a503f5eb8e94a622671b252727854e68255fde4678" }, "databaseAdapter": "portable RuneWaker Zone 114 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/ice-dwarf-kingdom-zone-114.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/ice-dwarf-kingdom/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "the-origin", "title": "The Origin", "mapId": 116, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 100 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "The Origin", "theme": "RuneWaker dungeon import", "summary": "Explore The Origin and defeat its source-authored encounters.", "loadingMessage": "Entering The Origin...", "unchartedAreaName": "Uncharted The Origin", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 1195 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 1013, "height": 974, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "the-origin-visual.glb", "checksum": "1f96c2b57a24470a003834a8c91cb0ceda5b01824d5bfa31904afd247c404e88", "size": 28684736, "triangleCount": 1176881 } ], "collision": [ { "id": "collision-000", "fileName": "the-origin-wdb-collision-000.glb", "checksum": "7eb6e18cf11ac9a15b24c6300f8c62773df9d2cb045b16c9c4732e18016b18e7", "size": 2703604, "triangleCount": 78675 }, { "id": "collision-001", "fileName": "the-origin-wdb-collision-001.glb", "checksum": "31ec6603c7c100af9c0177cbbae3f13f029266a13c5b9690731089d8193deeb2", "size": 2757368, "triangleCount": 83558 }, { "id": "collision-002", "fileName": "the-origin-wdb-collision-002.glb", "checksum": "ccce739574edbeef58ed1bc502d9be77cb0565213c381113bcdb9944323b0be0", "size": 2538872, "triangleCount": 84659 }, { "id": "collision-003", "fileName": "the-origin-wdb-collision-003.glb", "checksum": "7f83d131a71bee2fb3f47e7c2fe94c39cb3f3f9bd7f333a994627528465e07d1", "size": 2438228, "triangleCount": 61945 }, { "id": "collision-004", "fileName": "the-origin-wdb-collision-004.glb", "checksum": "044bc594aa521c7b4a441b477c369b03083189068dbe6b17572851beb23531b1", "size": 3127712, "triangleCount": 87835 }, { "id": "collision-005", "fileName": "the-origin-wdb-collision-005.glb", "checksum": "8cd5228f6443dceb983e5e8c457ed97fdfdac2083049dce036157f3573a0f9ff", "size": 2827072, "triangleCount": 88513 }, { "id": "collision-006", "fileName": "the-origin-wdb-collision-006.glb", "checksum": "abca4c48c25d495e40399dfd5a9fbcab8941a056af1b8159ff0b4d3f453b0b52", "size": 3210756, "triangleCount": 86404 }, { "id": "collision-007", "fileName": "the-origin-wdb-collision-007.glb", "checksum": "9693440956d31489d888e30fd97de0427e9bf65bd02174a6bbad34b78a8b6a29", "size": 2364920, "triangleCount": 66883 }, { "id": "collision-008", "fileName": "the-origin-wdb-collision-008.glb", "checksum": "89f95739e8ac2384d0c125c1ab013e1803031f67f11d35fa94355719a4db2251", "size": 2811712, "triangleCount": 87544 }, { "id": "collision-009", "fileName": "the-origin-wdb-collision-009.glb", "checksum": "2bbddf84d5754100c3499d5e35cb1da45dfa920940c59a3007c0848b975d609d", "size": 3077192, "triangleCount": 84937 }, { "id": "collision-010", "fileName": "the-origin-wdb-collision-010.glb", "checksum": "73012e2dcb9892ad3aeccd3536e0c36f4365276226b265f82326a25e45d4ec4e", "size": 2989496, "triangleCount": 88994 }, { "id": "collision-011", "fileName": "the-origin-wdb-collision-011.glb", "checksum": "d19124247096c475e344ae467274be6a0320192cf2292f891970b102eb4fc1be", "size": 3128952, "triangleCount": 89430 }, { "id": "collision-012", "fileName": "the-origin-wdb-collision-012.glb", "checksum": "23870416ad12c179e576959df6f72370e209365e03d3510ceb3b1745f30fe930", "size": 2825584, "triangleCount": 89857 }, { "id": "collision-013", "fileName": "the-origin-wdb-collision-013.glb", "checksum": "5c9bb9f4b5d118c834f3b1d0b515b30d553a1e21423767c9e7dafcbd6d78d1c2", "size": 2856020, "triangleCount": 85511 }, { "id": "collision-014", "fileName": "the-origin-wdb-collision-014.glb", "checksum": "0743835882534516c770766cbbf3585386e05e96e95a2bdc24e3ca5d90482c57", "size": 533188, "triangleCount": 12136 } ], "navigation": { "id": "navigation", "fileName": "the-origin-navigation.glb", "checksum": "70c0a78073d7c3cd7a95e0dc3531c25c0de9815376001f9b80cfbb59a72596cd", "size": 4667144, "triangleCount": 97214 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -630.039165, -94.763691, -431.593932 ], "max": [ 382.64336, 260.724523, 541.440422 ] }, "entrance": { "name": "The Origin Entrance", "footPosition": [ -377.445404, -13.802109, -267.742004 ], "forward": [ -0.292372, 0, 0.956305 ], "yaw": 5.986479 }, "areas": [ { "id": "entrance", "name": "The Origin Entrance", "center": [ -377.445404, -13.802109, -267.742004 ], "radius": 24 } ], "entities": THE_ORIGIN_ENTITIES, "staticSpawns": THE_ORIGIN_STATIC_SPAWNS, "roamingPacks": [], "bosses": THE_ORIGIN_BOSSES, "objectiveOrder": THE_ORIGIN_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "0595a457bca04ed6ad2537a7158f96ae88f0c688d35723fbf650172fb2370028", "primaryRos": "d1c6f6d8bbac92c591aba2663811b7fe6f3b82e54e78f26a9e91b4432b58f500", "populationSnapshot": "801b5ba9085fa2319eaa27c957a163ddd69316e6d82647cb37cd975169c6311b" }, "databaseAdapter": "portable RuneWaker Zone 116 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/the-origin-zone-116.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/the-origin/instance-validation-report.json", "blockers": [], "warnings": [ "All valid static WDB ROS placements are assembled; filename-only dynamic candidates remain static until script evidence maps their behavior.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "The full static WDB collision requires a tiled monotone Recast build because the solo watershed contour triangulator rejects this source geometry.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "hall-of-survivors", "title": "Hall Of Survivors", "mapId": 117, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 58 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Hall Of Survivors", "theme": "RuneWaker dungeon import", "summary": "Explore Hall Of Survivors and defeat its source-authored encounters.", "loadingMessage": "Entering Hall Of Survivors...", "unchartedAreaName": "Uncharted Hall Of Survivors", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 785 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 636, "height": 669, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "hall-of-survivors-visual.glb", "checksum": "96b91b24462b8428e8808295dcea29d26de9be8431ea6667dde92cdded4ddf2a", "size": 15216936, "triangleCount": 380192 } ], "collision": [ { "id": "collision-000", "fileName": "hall-of-survivors-collision-000.glb", "checksum": "fea31ab1470360ac1c72a362f369c59ee7d433572f47bdd744fc7ee811dc989c", "size": 3441916, "triangleCount": 82944 }, { "id": "collision-001", "fileName": "hall-of-survivors-collision-001.glb", "checksum": "b4039daabf8326cabb300176113daec577dc01f63c72cda8ec99e3e9570c3a06", "size": 4063084, "triangleCount": 88495 }, { "id": "collision-002", "fileName": "hall-of-survivors-collision-002.glb", "checksum": "340c5ef677b41c743f9dc7427fbe94e659545ddf9daa777bdd03f823187aea17", "size": 4142660, "triangleCount": 88479 }, { "id": "collision-003", "fileName": "hall-of-survivors-collision-003.glb", "checksum": "831bb1171b6196b220b6958dfda52e1d3ff099bbd2eb1ce35eacd74dfb8aab64", "size": 3494020, "triangleCount": 77219 }, { "id": "collision-004", "fileName": "hall-of-survivors-collision-004.glb", "checksum": "6f93ae0dd2629f9a12c9188ebf673fa25128807f3ffb66a4518927819263a3b5", "size": 2051968, "triangleCount": 43055 } ], "navigation": { "id": "navigation", "fileName": "hall-of-survivors-navigation.glb", "checksum": "cd4e1ef198a8592e1122b791ea730a613edd768872c457d8b5083a11940e4f38", "size": 1323212, "triangleCount": 27549 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -283.26093, -112.1463, -329.32526 ], "max": [ 351.96445, 143.56061, 338.74652 ] }, "entrance": { "name": "Hall Of Survivors Entrance", "footPosition": [ -150.356351, -6.046295, 213.200409 ], "forward": [ 0.999391, 0, -0.034899 ], "yaw": 1.605703 }, "areas": [ { "id": "entrance", "name": "Hall Of Survivors Entrance", "center": [ -150.356351, -6.046295, 213.200409 ], "radius": 24 } ], "entities": HALL_OF_SURVIVORS_ENTITIES, "staticSpawns": HALL_OF_SURVIVORS_STATIC_SPAWNS, "roamingPacks": [], "bosses": HALL_OF_SURVIVORS_BOSSES, "objectiveOrder": HALL_OF_SURVIVORS_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "3d583e5711e4a324cd8e3b0f43002d87520a7630745f9f552beecf8d917b09c7", "primaryRos": "c2c28bc1847d616b450d3462793670b4db8749b625c23a77a548857d9b94fbd0", "populationSnapshot": "cb27992832ac26063e8b9073281fb35964a908738d450065d009d0eb7bdfed18" }, "databaseAdapter": "portable RuneWaker Zone 117 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/hall-of-survivors-zone-117.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/hall-of-survivors/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "cave-water-dragon", "title": "Cave Of The Water Dragon", "mapId": 118, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 55, 60 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Cave Of The Water Dragon", "theme": "RuneWaker dungeon import", "summary": "Explore Cave Of The Water Dragon and defeat its source-authored encounters.", "loadingMessage": "Entering Cave Of The Water Dragon...", "unchartedAreaName": "Uncharted Cave Of The Water Dragon", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 591 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 413, "height": 559, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "cave-water-dragon-visual.glb", "checksum": "dd1887f88d6ee9102da0e34ea2b4087742e37a2b8ce779c722bc124effe1faca", "size": 8893204, "triangleCount": 249082 } ], "collision": [ { "id": "collision-000", "fileName": "cave-water-dragon-collision-000.glb", "checksum": "53514a4ea248bdbf216def19ec1fd4b93b3e41c2e1a292aa60292ecd05862e45", "size": 3577336, "triangleCount": 86285 }, { "id": "collision-001", "fileName": "cave-water-dragon-collision-001.glb", "checksum": "84ceb8f3092f5192807525b8eb43a2946241ed0b54263d245d4806dbb2794f3b", "size": 3200072, "triangleCount": 85210 }, { "id": "collision-002", "fileName": "cave-water-dragon-collision-002.glb", "checksum": "e9664e6bd05ea11e8ba729b1179eca287445f09153072fd04d269fd0bfba88fc", "size": 3033184, "triangleCount": 77587 } ], "navigation": { "id": "navigation", "fileName": "cave-water-dragon-navigation.glb", "checksum": "72325c0ead160be2c7a34722006723a1d2cd330ef370a0e84f3efe635f87f443", "size": 1165152, "triangleCount": 24256 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -80.14738, -64.70341, -531.41003 ], "max": [ 332.05176, 82.83235, 26.59714 ] }, "entrance": { "name": "Cave Of The Water Dragon Entrance", "footPosition": [ 73.911349, 0.07718, -208.197353 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Cave Of The Water Dragon Entrance", "center": [ 73.911349, 0.07718, -208.197353 ], "radius": 24 } ], "entities": CAVE_WATER_DRAGON_ENTITIES, "staticSpawns": CAVE_WATER_DRAGON_STATIC_SPAWNS, "roamingPacks": [], "bosses": CAVE_WATER_DRAGON_BOSSES, "objectiveOrder": CAVE_WATER_DRAGON_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "1f9798522f2a2f627d27ea6f00016f433fc043bdbd94d82d2ad1f030e5568984", "primaryRos": "8b9e19fd56c421a563a88bab24bc1e9cc4b9447356e241519e5a3d991a24a8d1", "populationSnapshot": "133ca1a8f2a53f5afcab18604bb2f48c0689cb61c34ab393774fafb64a310fdb" }, "databaseAdapter": "portable RuneWaker Zone 118 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/cave-water-dragon-zone-118.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/cave-water-dragon/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "lair-demon-dragon", "title": "Lair Of The Demon Dragon", "mapId": 119, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 57 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Lair Of The Demon Dragon", "theme": "RuneWaker dungeon import", "summary": "Explore Lair Of The Demon Dragon and defeat its source-authored encounters.", "loadingMessage": "Entering Lair Of The Demon Dragon...", "unchartedAreaName": "Uncharted Lair Of The Demon Dragon", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 459 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 355, "height": 406, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "lair-demon-dragon-visual.glb", "checksum": "b371465e96ef978915c9a515846ecf9dccb98607fd549617a1c71f45468fa5a7", "size": 4551356, "triangleCount": 64688 } ], "collision": [ { "id": "collision-000", "fileName": "lair-demon-dragon-collision.glb", "checksum": "3e71c7a36411499ff4e7069efc7f9d96fef75cd4eb81274d9bd1d12fa8d210fb", "size": 3194700, "triangleCount": 64688 } ], "navigation": { "id": "navigation", "fileName": "lair-demon-dragon-navigation.glb", "checksum": "3bb62814056d133d0f5942f6b5fb7c4c4f4178ea9df311f0363298beb0c6a8f9", "size": 582772, "triangleCount": 12123 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -222.15836, -150.46245, -217.16605 ], "max": [ 132.09874, 253.71902, 188.63403 ] }, "entrance": { "name": "Lair Of The Demon Dragon Entrance", "footPosition": [ -43.277636, 3.276115, 37.883678 ], "forward": [ -0.34202, 0, -0.939693 ], "yaw": 3.490659 }, "areas": [ { "id": "entrance", "name": "Lair Of The Demon Dragon Entrance", "center": [ -43.277636, 3.276115, 37.883678 ], "radius": 24 } ], "entities": LAIR_DEMON_DRAGON_ENTITIES, "staticSpawns": LAIR_DEMON_DRAGON_STATIC_SPAWNS, "roamingPacks": [], "bosses": LAIR_DEMON_DRAGON_BOSSES, "objectiveOrder": LAIR_DEMON_DRAGON_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "6c08a77ea272d526dfd1656aba5e8c30a192cd690e2175fb3febdd02d027ffa8", "primaryRos": "1892882e43714b92dd801219f1b750e25212d390ac66f8b1fedc5c3b4b238f41", "populationSnapshot": "77b1a4a5b131d3d079b85df33a6d5d678939cfa4764b4b2cdfe5c7b7b74ec4f7" }, "databaseAdapter": "portable RuneWaker Zone 119 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/lair-demon-dragon-zone-119.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/lair-demon-dragon/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "zurhidon-stronghold", "title": "Zurhidon Stronghold", "mapId": 120, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 60 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Zurhidon Stronghold", "theme": "RuneWaker dungeon import", "summary": "Explore Zurhidon Stronghold and defeat its source-authored encounters.", "loadingMessage": "Entering Zurhidon Stronghold...", "unchartedAreaName": "Uncharted Zurhidon Stronghold", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 818 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 674, "height": 686, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "zurhidon-stronghold-visual.glb", "checksum": "58be5be365b14e42772a4560c5c1d10fceb8aa8abb2c1771cc21ba2b2e02872a", "size": 17189904, "triangleCount": 364765 } ], "collision": [ { "id": "collision-000", "fileName": "zurhidon-stronghold-collision-000.glb", "checksum": "face38fc0176b51689d1d27fe1cec4695757bbd40100c18186d7ebfce8ab480d", "size": 4502568, "triangleCount": 88486 }, { "id": "collision-001", "fileName": "zurhidon-stronghold-collision-001.glb", "checksum": "3d8cf2e2e078dc4cba4820994fb88b52c0428ce3b8ea5a54970b60c705f58264", "size": 4565516, "triangleCount": 83897 }, { "id": "collision-002", "fileName": "zurhidon-stronghold-collision-002.glb", "checksum": "e01c1608061e088a6647d3a3ed989263595b71e23aba948a8b6e4ef86130eacf", "size": 5368604, "triangleCount": 89445 }, { "id": "collision-003", "fileName": "zurhidon-stronghold-collision-003.glb", "checksum": "976a545ad35d522f2f23396d5f8336d279fa2542b68ddc5ee084e0cbe5a9ba8b", "size": 4467788, "triangleCount": 88177 }, { "id": "collision-004", "fileName": "zurhidon-stronghold-collision-004.glb", "checksum": "caa59c78bbbfc6ad2a6267f951a15d49dc2b54b2ffe8ad9e29825ebd3e185b08", "size": 671776, "triangleCount": 14760 } ], "navigation": { "id": "navigation", "fileName": "zurhidon-stronghold-navigation.glb", "checksum": "e57509105e15e67b1e4f3075c1c98f082552001a566e01a81fc1c8be9af41f29", "size": 620536, "triangleCount": 12910 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -234.75426, -87.18779, -667.04468 ], "max": [ 439.14551, 123.44698, 18.72949 ] }, "entrance": { "name": "Zurhidon Stronghold Entrance", "footPosition": [ 2.058157, 0.012306, -13.476369 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Zurhidon Stronghold Entrance", "center": [ 2.058157, 0.012306, -13.476369 ], "radius": 24 } ], "entities": ZURHIDON_STRONGHOLD_ENTITIES, "staticSpawns": ZURHIDON_STRONGHOLD_STATIC_SPAWNS, "roamingPacks": [], "bosses": ZURHIDON_STRONGHOLD_BOSSES, "objectiveOrder": ZURHIDON_STRONGHOLD_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "0e4824fec55ce6fcef83d862ae74f28cf7b8cee8f7c8ceb385c77757743cad30", "primaryRos": "df2e45464969e09a9832f4c2b514137fb38b3fe56e4260ca0d1a27d782d57864", "populationSnapshot": "2df81be09c74bb4ee8611d2cd51346b505d10df5d71c614d458ea04b60eb4800" }, "databaseAdapter": "portable RuneWaker Zone 120 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/zurhidon-stronghold-zone-120.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/zurhidon-stronghold/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "sand-vortex", "title": "Sand Vortex", "mapId": 121, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 63, 63 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Sand Vortex", "theme": "RuneWaker dungeon import", "summary": "Explore Sand Vortex and defeat its source-authored encounters.", "loadingMessage": "Entering Sand Vortex...", "unchartedAreaName": "Uncharted Sand Vortex", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 220 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 120, "height": 120, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "sand-vortex-visual.glb", "checksum": "48be6befbd24870a948a5a0f49f22098b44a5a3502c4749e292c42bde1df7baa", "size": 2468, "triangleCount": 12 } ], "collision": [ { "id": "collision-000", "fileName": "sand-vortex-collision.glb", "checksum": "ebaac7f17ba58ce1b7864773526f4b5a67b7f9bf764316c6c1cac2710575b5a0", "size": 1864, "triangleCount": 12 } ], "navigation": { "id": "navigation", "fileName": "sand-vortex-navigation.glb", "checksum": "8dab93dfda9145a6d10c1526281bee6d531e80426300c704b348ab562c7843ef", "size": 2288, "triangleCount": 30 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -45.31445, 0.10969, -70.22585 ], "max": [ 43.25943, 0.50969, 17.10542 ] }, "entrance": { "name": "Sand Vortex Entrance", "footPosition": [ -30.314281, 0.60969, 16.174141 ], "forward": [ 0.681998, 0, 0.731354 ], "yaw": 0.750492 }, "areas": [ { "id": "entrance", "name": "Sand Vortex Entrance", "center": [ -30.314281, 0.60969, 16.174141 ], "radius": 24 } ], "entities": SAND_VORTEX_ENTITIES, "staticSpawns": SAND_VORTEX_STATIC_SPAWNS, "roamingPacks": [], "bosses": SAND_VORTEX_BOSSES, "objectiveOrder": SAND_VORTEX_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "feeb1eacab61588b538bb591e5a54a61f4011641f34c9c87d62283f28b3bd0c6", "primaryRos": "9b545bcb2919610e9ec5fa6906eb14a102c952265b8c68da13b27da103de5288", "populationSnapshot": "968fd12996496437817350e96ab80c18ce768e7493b855722678ca3e6015a487" }, "databaseAdapter": "portable RuneWaker Zone 121 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/sand-vortex-zone-121.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/sand-vortex/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "The source WDB has no terrain ROS; a flat playable arena is derived from source descriptor bounds and must be visually reviewed.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "demon-stronghold", "title": "Demon Stronghold", "mapId": 122, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 60 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Demon Stronghold", "theme": "RuneWaker dungeon import", "summary": "Explore Demon Stronghold and defeat its source-authored encounters.", "loadingMessage": "Entering Demon Stronghold...", "unchartedAreaName": "Uncharted Demon Stronghold", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 1221 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 1108, "height": 914, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "demon-stronghold-visual.glb", "checksum": "664181dc790b9e68cdc7451dbd0b1170a033a71ca19375743b6e66ca25889723", "size": 15167544, "triangleCount": 261609 } ], "collision": [ { "id": "collision-000", "fileName": "demon-stronghold-collision-000.glb", "checksum": "a9d8f0188abd567d488d334981dd99cd047fefb25a0de23f3fd1d846f47e1664", "size": 3924184, "triangleCount": 86618 }, { "id": "collision-001", "fileName": "demon-stronghold-collision-001.glb", "checksum": "aa9d1f991e078bb0c8333b5d8e959a887c9bff99d25933854c25dc29bfe08b6a", "size": 4824964, "triangleCount": 89672 }, { "id": "collision-002", "fileName": "demon-stronghold-collision-002.glb", "checksum": "ef094d6ae970ccacbf3d9e14259088565ba8afbad42c5bb5aeb03af9d151280d", "size": 3882508, "triangleCount": 85319 } ], "navigation": { "id": "navigation", "fileName": "demon-stronghold-navigation.glb", "checksum": "0d10681eec4a2a1648b4d2699371672fea4736e5bc38457ea360916a32f1ba39", "size": 1682796, "triangleCount": 35123 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -478.29916, -446.47934, -562.82562 ], "max": [ 628.80615, 256.92807, 350.58258 ] }, "entrance": { "name": "Demon Stronghold Entrance", "footPosition": [ -5.025092, -0.220868, -0.382562 ], "forward": [ 0, 0, -1 ], "yaw": 3.141593 }, "areas": [ { "id": "entrance", "name": "Demon Stronghold Entrance", "center": [ -5.025092, -0.220868, -0.382562 ], "radius": 24 } ], "entities": DEMON_STRONGHOLD_ENTITIES, "staticSpawns": DEMON_STRONGHOLD_STATIC_SPAWNS, "roamingPacks": [], "bosses": DEMON_STRONGHOLD_BOSSES, "objectiveOrder": DEMON_STRONGHOLD_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "8cbe98f2bb57cc5a4e4797e39db6ac9de6825e25c99826a4297af339f6ea1ffe", "primaryRos": "44f2f455b1895192689e9bc70fa80a5aef70a32c98799540827b30d6c9e7d47b", "populationSnapshot": "d231cda112acecfb7f4066dbc2b18ea99b16d502a60be5f34b8addd3dfd696bc" }, "databaseAdapter": "portable RuneWaker Zone 122 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/demon-stronghold-zone-122.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/demon-stronghold/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Source-anchor support pads preserve combat and entrance coordinates where modular WDB sections or primary-ROS collision leave navmesh gaps; full secondary placement assembly remains a visual follow-up.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "zurhidon-stronghold-124", "title": "Zurhidon Stronghold (124)", "mapId": 124, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 100 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Zurhidon Stronghold (124)", "theme": "RuneWaker dungeon import", "summary": "Explore Zurhidon Stronghold (124) and defeat its source-authored encounters.", "loadingMessage": "Entering Zurhidon Stronghold (124)...", "unchartedAreaName": "Uncharted Zurhidon Stronghold (124)", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 818 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 674, "height": 686, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "zurhidon-stronghold-124-visual.glb", "checksum": "58be5be365b14e42772a4560c5c1d10fceb8aa8abb2c1771cc21ba2b2e02872a", "size": 17189904, "triangleCount": 364765 } ], "collision": [ { "id": "collision-000", "fileName": "zurhidon-stronghold-124-collision-000.glb", "checksum": "7903fdc7c45302143afe85ed92d9cbf12b14fcc4176500d568ce71ca84296d8d", "size": 4502820, "triangleCount": 88486 }, { "id": "collision-001", "fileName": "zurhidon-stronghold-124-collision-001.glb", "checksum": "719c12addff640b0ff6a902d723b752f98460181e6333ebd7151013a043166ec", "size": 4565628, "triangleCount": 83897 }, { "id": "collision-002", "fileName": "zurhidon-stronghold-124-collision-002.glb", "checksum": "a87cf3fab4a2bfb19a2f062739888fa4a2bfb1d89a25c63a1273406d65a5df1f", "size": 5368808, "triangleCount": 89445 }, { "id": "collision-003", "fileName": "zurhidon-stronghold-124-collision-003.glb", "checksum": "df5e5119c7fc4a893216a2a17da420060ca5dc13a711f3abd1ab297a8778b6d5", "size": 4468000, "triangleCount": 88177 }, { "id": "collision-004", "fileName": "zurhidon-stronghold-124-collision-004.glb", "checksum": "469edb669b0b74a61955e4b02e86e3a41ebdde1f90216835298148af41f8da59", "size": 671824, "triangleCount": 14760 } ], "navigation": { "id": "navigation", "fileName": "zurhidon-stronghold-124-navigation.glb", "checksum": "e57509105e15e67b1e4f3075c1c98f082552001a566e01a81fc1c8be9af41f29", "size": 620536, "triangleCount": 12910 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -234.75426, -87.18779, -667.04468 ], "max": [ 439.14551, 123.44698, 18.72949 ] }, "entrance": { "name": "Zurhidon Stronghold (124) Entrance", "footPosition": [ 2.058157, 0.012306, -13.476369 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Zurhidon Stronghold (124) Entrance", "center": [ 2.058157, 0.012306, -13.476369 ], "radius": 24 } ], "entities": ZURHIDON_STRONGHOLD_124_ENTITIES, "staticSpawns": ZURHIDON_STRONGHOLD_124_STATIC_SPAWNS, "roamingPacks": [], "bosses": ZURHIDON_STRONGHOLD_124_BOSSES, "objectiveOrder": ZURHIDON_STRONGHOLD_124_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "0e4824fec55ce6fcef83d862ae74f28cf7b8cee8f7c8ceb385c77757743cad30", "primaryRos": "df2e45464969e09a9832f4c2b514137fb38b3fe56e4260ca0d1a27d782d57864", "populationSnapshot": "7ac111b01c63610141edc1a37e9d555f97e255607a2004dd37b07a0905f897cc" }, "databaseAdapter": "portable RuneWaker Zone 124 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/zurhidon-stronghold-124-zone-124.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/zurhidon-stronghold-124/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "demon-stronghold-125", "title": "Demon Stronghold (125)", "mapId": 125, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 100 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Demon Stronghold (125)", "theme": "RuneWaker dungeon import", "summary": "Explore Demon Stronghold (125) and defeat its source-authored encounters.", "loadingMessage": "Entering Demon Stronghold (125)...", "unchartedAreaName": "Uncharted Demon Stronghold (125)", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 1152 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 1108, "height": 780, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "demon-stronghold-125-visual.glb", "checksum": "e2106115dcc216999d2e37d26eeb52844ce4f41b44e19594699f37a54d7f19b9", "size": 15135060, "triangleCount": 259377 } ], "collision": [ { "id": "collision-000", "fileName": "demon-stronghold-125-collision-000.glb", "checksum": "bf435c2a07cb408c2d44bb4ba2586447f3b24468e081c3b5b28a416ade93b974", "size": 3924388, "triangleCount": 86618 }, { "id": "collision-001", "fileName": "demon-stronghold-125-collision-001.glb", "checksum": "d7f057051cfce64efe165a2430eaacca68be3a3760befcf9efffdeb68364c40e", "size": 4825344, "triangleCount": 89672 }, { "id": "collision-002", "fileName": "demon-stronghold-125-collision-002.glb", "checksum": "d4191c157ff7318bd3fc5e6525e01fd83345f17fe2716a7913eae08e2b1f1a22", "size": 3832628, "triangleCount": 83087 } ], "navigation": { "id": "navigation", "fileName": "demon-stronghold-125-navigation.glb", "checksum": "a19dbc7ddd5e84ffedac76889a8673d8238c8a2240d7c7427886be5088b9863f", "size": 1628548, "triangleCount": 33910 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -478.29916, -446.47934, -562.82562 ], "max": [ 628.80615, 256.92807, 216.47777 ] }, "entrance": { "name": "Demon Stronghold (125) Entrance", "footPosition": [ -5.025092, -0.279327, -0.382562 ], "forward": [ 0, 0, -1 ], "yaw": 3.141593 }, "areas": [ { "id": "entrance", "name": "Demon Stronghold (125) Entrance", "center": [ -5.025092, -0.279327, -0.382562 ], "radius": 24 } ], "entities": DEMON_STRONGHOLD_125_ENTITIES, "staticSpawns": DEMON_STRONGHOLD_125_STATIC_SPAWNS, "roamingPacks": [], "bosses": DEMON_STRONGHOLD_125_BOSSES, "objectiveOrder": DEMON_STRONGHOLD_125_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "8cbe98f2bb57cc5a4e4797e39db6ac9de6825e25c99826a4297af339f6ea1ffe", "primaryRos": "44f2f455b1895192689e9bc70fa80a5aef70a32c98799540827b30d6c9e7d47b", "populationSnapshot": "bb7205548d75b99867b646206d225851cfda12eccbf0c8ae8e5a2f94f4c851cc" }, "databaseAdapter": "portable RuneWaker Zone 125 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/demon-stronghold-125-zone-125.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/demon-stronghold-125/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "dungeon-of-dalanis", "title": "Dungeon Of Dalanis", "mapId": 127, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 56 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Dungeon Of Dalanis", "theme": "RuneWaker dungeon import", "summary": "Explore Dungeon Of Dalanis and defeat its source-authored encounters.", "loadingMessage": "Entering Dungeon Of Dalanis...", "unchartedAreaName": "Uncharted Dungeon Of Dalanis", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 441 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 443, "height": 268, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "dungeon-of-dalanis-visual.glb", "checksum": "45cad819bc348dec8926f7de237c625e9d18697b4200804e0440dd16b8976959", "size": 11937088, "triangleCount": 288949 } ], "collision": [ { "id": "collision-000", "fileName": "dungeon-of-dalanis-collision-000.glb", "checksum": "d713db0f3c12417a895ad731ee18d010132947f9407d1581cbafbd4effded4d0", "size": 4719008, "triangleCount": 85983 }, { "id": "collision-001", "fileName": "dungeon-of-dalanis-collision-001.glb", "checksum": "c88d1671d235b7862e8a8c407eca064ab08d1cdab09feb93649cae59e7812460", "size": 4932496, "triangleCount": 89947 }, { "id": "collision-002", "fileName": "dungeon-of-dalanis-collision-002.glb", "checksum": "0f3096b73ccc0a01a5d51c4d4bcc2d44fdd9bed37eddff42627b7a6400d5b703", "size": 4752216, "triangleCount": 89664 }, { "id": "collision-003", "fileName": "dungeon-of-dalanis-collision-003.glb", "checksum": "e6f94355b6c3bef59c028c36361a6c529669ae65afbeb83be6428b338c2c01e7", "size": 777660, "triangleCount": 23355 } ], "navigation": { "id": "navigation", "fileName": "dungeon-of-dalanis-navigation.glb", "checksum": "db909e4c10d92211eb1f690bb9b7079cf57087a8bfe9614c3367ab17a2c0be3f", "size": 242732, "triangleCount": 5039 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -18.50652, -66.34557, -42.74943 ], "max": [ 423.60254, 71.57201, 224.8251 ] }, "entrance": { "name": "Dungeon Of Dalanis Entrance", "footPosition": [ 10.961772, 0.062411, 0.689291 ], "forward": [ -0.173648, 0, 0.984808 ], "yaw": 6.108652 }, "areas": [ { "id": "entrance", "name": "Dungeon Of Dalanis Entrance", "center": [ 10.961772, 0.062411, 0.689291 ], "radius": 24 } ], "entities": DUNGEON_OF_DALANIS_ENTITIES, "staticSpawns": DUNGEON_OF_DALANIS_STATIC_SPAWNS, "roamingPacks": [], "bosses": DUNGEON_OF_DALANIS_BOSSES, "objectiveOrder": DUNGEON_OF_DALANIS_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "5b93f2d8fe58081122cc7251e171ce864171b811d0bad38ada8dc7b6fe33df4c", "primaryRos": "31031f6ccc3545921ca477073283929e771d0bbe2f0e3a3053465bbda815248e", "populationSnapshot": "ec3f1e3a911d72a6283e87551ae9f5b1483e60eea52c7092326f499a92fb44ec" }, "databaseAdapter": "portable RuneWaker Zone 127 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/dungeon-of-dalanis-zone-127.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/dungeon-of-dalanis/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "warnorken-arena", "title": "Warnorken Arena", "mapId": 129, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 60, 60 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Warnorken Arena", "theme": "RuneWaker dungeon import", "summary": "Explore Warnorken Arena and defeat its source-authored encounters.", "loadingMessage": "Entering Warnorken Arena...", "unchartedAreaName": "Uncharted Warnorken Arena", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 343 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 281, "height": 289, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "warnorken-arena-visual.glb", "checksum": "ee81c9e7c94d624977143297ca6c070c40799fdda1c51b92044c70dff53987ea", "size": 3752248, "triangleCount": 60751 } ], "collision": [ { "id": "collision-000", "fileName": "warnorken-arena-collision.glb", "checksum": "0b1ce7555da0d2900465e3539e1bf17ac244d23a0f5eb57a2106f29570757c5c", "size": 3005760, "triangleCount": 60751 } ], "navigation": { "id": "navigation", "fileName": "warnorken-arena-navigation.glb", "checksum": "2a3982d09b210e223279a7c1d3ae32fc6e3d71bba99228d823de1a7e98def3e0", "size": 94700, "triangleCount": 1955 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -140.19806, -41.14779, -142.47725 ], "max": [ 140.13225, 83.23285, 146.02818 ] }, "entrance": { "name": "Warnorken Arena Entrance", "footPosition": [ -24.792195, -1.896951, 31.207279 ], "forward": [ -0.173648, 0, 0.984808 ], "yaw": 6.108652 }, "areas": [ { "id": "entrance", "name": "Warnorken Arena Entrance", "center": [ -24.792195, -1.896951, 31.207279 ], "radius": 24 } ], "entities": WARNORKEN_ARENA_ENTITIES, "staticSpawns": WARNORKEN_ARENA_STATIC_SPAWNS, "roamingPacks": [], "bosses": WARNORKEN_ARENA_BOSSES, "objectiveOrder": WARNORKEN_ARENA_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "3a1adcca6a54f764b850c40db0cb68bebfb81820eafacdedc5af74804f077c36", "primaryRos": "f96e2a781d7c73e011e849fb97642216f878370ce8a6f87f789e2e5c9af65041", "populationSnapshot": "e18118560cccff5e5c9f6d62bb3d745744427fb13271aa4ce514f59a35f4f8f8" }, "databaseAdapter": "portable RuneWaker Zone 129 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/warnorken-arena-zone-129.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/warnorken-arena/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "raksha-temple", "title": "Raksha Temple", "mapId": 130, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 100 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Raksha Temple", "theme": "RuneWaker dungeon import", "summary": "Explore Raksha Temple and defeat its source-authored encounters.", "loadingMessage": "Entering Raksha Temple...", "unchartedAreaName": "Uncharted Raksha Temple", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 1461 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 1162, "height": 1266, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "raksha-temple-visual.glb", "checksum": "1fad5149acfce870be822f5355369f15dd76fba280bbeda31ff7f371c442082f", "size": 23556584, "triangleCount": 605820 } ], "collision": [ { "id": "collision-000", "fileName": "raksha-temple-wdb-collision-000.glb", "checksum": "22cfdc239b638f906f3cb77c9fb7b94c66eb483cfcbbe59e059bf8d5cbaad8a0", "size": 2584136, "triangleCount": 87109 }, { "id": "collision-001", "fileName": "raksha-temple-wdb-collision-001.glb", "checksum": "3a3f4448aa92276faa94c8b99ae49aa48660423fb42edf0f2403615e5e3b3453", "size": 2785392, "triangleCount": 86228 }, { "id": "collision-002", "fileName": "raksha-temple-wdb-collision-002.glb", "checksum": "b4b9e92646bbaf290263b601e7af7d6547f85a7b3fdae4b931ab930a263c2a36", "size": 2788332, "triangleCount": 89719 }, { "id": "collision-003", "fileName": "raksha-temple-wdb-collision-003.glb", "checksum": "846ac1301549d8e05c8efb59b9ddfc0ebec2fb36cf216a0d5c143ab3eb5ae423", "size": 2676988, "triangleCount": 89776 }, { "id": "collision-004", "fileName": "raksha-temple-wdb-collision-004.glb", "checksum": "100f27d9a2c46f1d30b0e395d60d99a3b62dfabc82474ed574f137c1513fb1bb", "size": 2328332, "triangleCount": 85897 }, { "id": "collision-005", "fileName": "raksha-temple-wdb-collision-005.glb", "checksum": "cb22cb168e559fa8ed6983109bdc02bc4fd11f7d8834649bfab1d9cd0448ba87", "size": 2960700, "triangleCount": 89896 }, { "id": "collision-006", "fileName": "raksha-temple-wdb-collision-006.glb", "checksum": "d8f6bd33ada7b6e0ee1b7cb4aacdf1c32e8ceb614f45d60ac2f24c9f1e0cef18", "size": 2345864, "triangleCount": 77195 } ], "navigation": { "id": "navigation", "fileName": "raksha-temple-navigation.glb", "checksum": "1e1d1ad26907dc8c4fd0a917dba40b52d2aaaea4a0335af06871ee28230eddf1", "size": 8686564, "triangleCount": 180952 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -764.460151, -118.862537, -658.700334 ], "max": [ 397.479134, 368.792163, 606.421358 ] }, "entrance": { "name": "Raksha Temple Entrance", "footPosition": [ 0.021786, 10.664467, 17.560761 ], "forward": [ -0.173648, 0, 0.984808 ], "yaw": 6.108652 }, "areas": [ { "id": "entrance", "name": "Raksha Temple Entrance", "center": [ 0.021786, 10.664467, 17.560761 ], "radius": 24 } ], "entities": RAKSHA_TEMPLE_ENTITIES, "staticSpawns": RAKSHA_TEMPLE_STATIC_SPAWNS, "roamingPacks": [], "bosses": RAKSHA_TEMPLE_BOSSES, "objectiveOrder": RAKSHA_TEMPLE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "75f65a1f2290a91afc740b914cbd620209581c05d55862cefccceff5d64c2950", "primaryRos": "9aba212d542e41951bc205d5439faf6ff12e765fedb52b28f6a616c17dc754d0", "populationSnapshot": "ca3fb8ca917bffd5c32a7431dddc33ba742c36e1b91622760ad3e6f7dd30cb9d" }, "databaseAdapter": "portable RuneWaker Zone 130 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/raksha-temple-zone-130.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/raksha-temple/instance-validation-report.json", "blockers": [], "warnings": [ "All valid static WDB ROS placements are assembled; filename-only dynamic candidates remain static until script evidence maps their behavior.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "The full WDB static assembly replaces the former source-anchor support pads; entrance and combat anchors still require live collision/navigation review.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "kawaks-tomb", "title": "Kawak's Tomb", "mapId": 134, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 65 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Kawak's Tomb", "theme": "RuneWaker dungeon import", "summary": "Explore Kawak's Tomb and defeat its source-authored encounters.", "loadingMessage": "Entering Kawak's Tomb...", "unchartedAreaName": "Uncharted Kawak's Tomb", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 638 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 395, "height": 638, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "kawaks-tomb-visual.glb", "checksum": "3f1755780540c54a1ba9b528e646ebd39b12ab127e41fa2d497fd7749d202018", "size": 8963376, "triangleCount": 161613 } ], "collision": [ { "id": "collision-000", "fileName": "kawaks-tomb-collision-000.glb", "checksum": "b9dc9e502f996a67cf441a49b1b53f65bf571a5df6b26d1c34ecbdde49c6423a", "size": 4709292, "triangleCount": 89544 }, { "id": "collision-001", "fileName": "kawaks-tomb-collision-001.glb", "checksum": "6329f9a710e9f97d0acbbc0f1ba0339683b5b472454554cf533358c466455bc4", "size": 3297708, "triangleCount": 72069 } ], "navigation": { "id": "navigation", "fileName": "kawaks-tomb-navigation.glb", "checksum": "2c16631925e382d6306e29a90f6e8516367e610263287970e55cda20e8149576", "size": 309496, "triangleCount": 6430 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -215.16924, -86.88603, -621.06927 ], "max": [ 179.35709, 49.89988, 16.87044 ] }, "entrance": { "name": "Kawak's Tomb Entrance", "footPosition": [ 29.438293, 11.214058, -32.984692 ], "forward": [ -1, 0, 0 ], "yaw": 4.712389 }, "areas": [ { "id": "entrance", "name": "Kawak's Tomb Entrance", "center": [ 29.438293, 11.214058, -32.984692 ], "radius": 24 } ], "entities": KAWAKS_TOMB_ENTITIES, "staticSpawns": KAWAKS_TOMB_STATIC_SPAWNS, "roamingPacks": [], "bosses": KAWAKS_TOMB_BOSSES, "objectiveOrder": KAWAKS_TOMB_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "eeeebbfabbdf101f59c3d52a9a22fed7a9504342c7156b2ed1ff6a1562f456f6", "primaryRos": "7f0f3940d3313d6b4ba7ae84f3aa822e5f642da504efa18a99d58f54793d037f", "populationSnapshot": "92bdb19479dacb2a8acf0d4de0066261a8e6d2124f3e4403e6651c298642a83b" }, "databaseAdapter": "portable RuneWaker Zone 134 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/kawaks-tomb-zone-134.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/kawaks-tomb/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "grafu-castle", "title": "Grafu Castle", "mapId": 137, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 63 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Grafu Castle", "theme": "RuneWaker dungeon import", "summary": "Explore Grafu Castle and defeat its source-authored encounters.", "loadingMessage": "Entering Grafu Castle...", "unchartedAreaName": "Uncharted Grafu Castle", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 481 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 381, "height": 418, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "grafu-castle-visual.glb", "checksum": "b775778f457d639e3f21982aaa6bd3ee1b0eba951c711d1ba319b0588e24a38f", "size": 11150124, "triangleCount": 207925 } ], "collision": [ { "id": "collision-000", "fileName": "grafu-castle-collision-000.glb", "checksum": "85bceccf70a7b37d12e40d3677112cd59204f48a7e19d269bb347d4c271a6a7f", "size": 4716036, "triangleCount": 89559 }, { "id": "collision-001", "fileName": "grafu-castle-collision-001.glb", "checksum": "03dc483ded6baa06811748d3fa1ab6f7850bdeb3cc5c8a1cc5e15322d848051d", "size": 4881688, "triangleCount": 88023 }, { "id": "collision-002", "fileName": "grafu-castle-collision-002.glb", "checksum": "465126aa6bde698b56343af0c81d2354f7050c25fe2fa4dcc0d52584eee2454d", "size": 1671476, "triangleCount": 30343 } ], "navigation": { "id": "navigation", "fileName": "grafu-castle-navigation.glb", "checksum": "f3925c7005706d5a11dfd9fc6e41c4f8af6993d22b4c84c62419346b16c4556e", "size": 316180, "triangleCount": 6569 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -201.42371, -65.69762, -251.31609 ], "max": [ 179.29362, 40.36582, 166.55455 ] }, "entrance": { "name": "Grafu Castle Entrance", "footPosition": [ 76.099832, -0.497604, 138.520295 ], "forward": [ 0, 0, -1 ], "yaw": 3.141593 }, "areas": [ { "id": "entrance", "name": "Grafu Castle Entrance", "center": [ 76.099832, -0.497604, 138.520295 ], "radius": 24 } ], "entities": GRAFU_CASTLE_ENTITIES, "staticSpawns": GRAFU_CASTLE_STATIC_SPAWNS, "roamingPacks": [], "bosses": GRAFU_CASTLE_BOSSES, "objectiveOrder": GRAFU_CASTLE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "30b885f016b240fd0c36fc3328c933a41b821d73e27a5c9d7bd94e048522f996", "primaryRos": "0c367fa53c973e169cf2d96256247a3fa489456ec68a77889e0d4e36bd8b9061", "populationSnapshot": "0113f241c8bb527a6e0bd365c2cf9586a6f922719098aea009292f3f3c04c801" }, "databaseAdapter": "portable RuneWaker Zone 137 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/grafu-castle-zone-137.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/grafu-castle/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "sardo-castle", "title": "Sardo Castle", "mapId": 139, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 70 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Sardo Castle", "theme": "RuneWaker dungeon import", "summary": "Explore Sardo Castle and defeat its source-authored encounters.", "loadingMessage": "Entering Sardo Castle...", "unchartedAreaName": "Uncharted Sardo Castle", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 450 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 404, "height": 341, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "sardo-castle-visual.glb", "checksum": "191396625e301a41afab38e168848a198a9be5918a071dadda841683a7c6261e", "size": 7756828, "triangleCount": 147586 } ], "collision": [ { "id": "collision-000", "fileName": "sardo-castle-collision-000.glb", "checksum": "993cbaf1436223bff455d41d9bf52587a9ea0d58a264d1085e3210b98ae478a6", "size": 4637588, "triangleCount": 88301 }, { "id": "collision-001", "fileName": "sardo-castle-collision-001.glb", "checksum": "e9c559aa2e8394c894399616b081355cc93dd56168529c9b817fa48b96df3c81", "size": 2834164, "triangleCount": 59285 } ], "navigation": { "id": "navigation", "fileName": "sardo-castle-navigation.glb", "checksum": "8de269c6e8a1e31cec9767dbe37edf5fea888f9f23dd79d393c06d9dc111df1b", "size": 236592, "triangleCount": 4911 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -197.28009, -89.85903, -163.10463 ], "max": [ 206.60098, 47.80756, 177.01823 ] }, "entrance": { "name": "Sardo Castle Entrance", "footPosition": [ 91, -8.259056, 142.1 ], "forward": [ -0.017452, 0, -0.999848 ], "yaw": 3.159046 }, "areas": [ { "id": "entrance", "name": "Sardo Castle Entrance", "center": [ 91, -8.259056, 142.1 ], "radius": 24 } ], "entities": SARDO_CASTLE_ENTITIES, "staticSpawns": SARDO_CASTLE_STATIC_SPAWNS, "roamingPacks": [], "bosses": SARDO_CASTLE_BOSSES, "objectiveOrder": SARDO_CASTLE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "7688b4f001d4dcd0e54c0403d70cacb01afc0872f8e79bdcc5359ca14583bc52", "primaryRos": "abdfca53e73dc6ea8248327545e34b0973ab9ce84893913f8b8a07b2e0e14a6a", "populationSnapshot": "e63ecd8cc1f7e21f1bddb22c39721dad4604cf7900f7b04d2559e09ce5663d4f" }, "databaseAdapter": "portable RuneWaker Zone 139 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/sardo-castle-zone-139.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/sardo-castle/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "tomb-seven-heroes", "title": "Tomb Of The Seven Heroes", "mapId": 142, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 60, 70 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Tomb Of The Seven Heroes", "theme": "RuneWaker dungeon import", "summary": "Explore Tomb Of The Seven Heroes and defeat its source-authored encounters.", "loadingMessage": "Entering Tomb Of The Seven Heroes...", "unchartedAreaName": "Uncharted Tomb Of The Seven Heroes", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 584 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 485, "height": 486, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "tomb-seven-heroes-visual.glb", "checksum": "09250a1fbabf8a03f922c9a3950aee3daa1edc54215cd03ddc9bf5c96e1429bd", "size": 10911104, "triangleCount": 155422 } ], "collision": [ { "id": "collision-000", "fileName": "tomb-seven-heroes-collision-000.glb", "checksum": "cc2be7fbe8ce3f9971ba325eda942c5b2bd8dfe1580457c00c6ae4129d4a69f7", "size": 4875576, "triangleCount": 89543 }, { "id": "collision-001", "fileName": "tomb-seven-heroes-collision-001.glb", "checksum": "2e1eded5fd8c29d73e61cf83064efadf9887367cfa801b13674ae4e974f58e47", "size": 3260248, "triangleCount": 65879 } ], "navigation": { "id": "navigation", "fileName": "tomb-seven-heroes-navigation.glb", "checksum": "617cac4b74b580ca214c241a9ffa9574aa19d1cd59efac71e4f9c4899709df51", "size": 335616, "triangleCount": 6974 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -201.02234, -141.02734, -287.6796 ], "max": [ 283.71048, 132.05325, 198.27583 ] }, "entrance": { "name": "Tomb Of The Seven Heroes Entrance", "footPosition": [ -151.098517, -1.080255, 164.722743 ], "forward": [ 0, 0, 1 ], "yaw": 0 }, "areas": [ { "id": "entrance", "name": "Tomb Of The Seven Heroes Entrance", "center": [ -151.098517, -1.080255, 164.722743 ], "radius": 24 } ], "entities": TOMB_SEVEN_HEROES_ENTITIES, "staticSpawns": TOMB_SEVEN_HEROES_STATIC_SPAWNS, "roamingPacks": [], "bosses": TOMB_SEVEN_HEROES_BOSSES, "objectiveOrder": TOMB_SEVEN_HEROES_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "1a5e1369eb327a811a4baa77e161fae0d53a147eabb24efeed55e260e94137c2", "primaryRos": "67f38908918e04c738608a348a3cbcf82547053b5a2f9a305453cb979425ccab", "populationSnapshot": "a9512dc708afdf919528a2d3799a2aaa220098a720d0d8a7976260941a564e65" }, "databaseAdapter": "portable RuneWaker Zone 142 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/tomb-seven-heroes-zone-142.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/tomb-seven-heroes/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "aeternal-circle", "title": "Aeternal Circle", "mapId": 144, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 72 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Aeternal Circle", "theme": "RuneWaker dungeon import", "summary": "Explore Aeternal Circle and defeat its source-authored encounters.", "loadingMessage": "Entering Aeternal Circle...", "unchartedAreaName": "Uncharted Aeternal Circle", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 855 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 799, "height": 610, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "aeternal-circle-visual.glb", "checksum": "de1ba06b7e3a9237fcff75aff2b00093287975e755cc7e98e77de1b7af6a9c14", "size": 4963968, "triangleCount": 61639 } ], "collision": [ { "id": "collision-000", "fileName": "aeternal-circle-collision.glb", "checksum": "cac818be61620024c44c302a4342af60f7f3140bf16018e2da883f49389e42c6", "size": 3628796, "triangleCount": 61639 } ], "navigation": { "id": "navigation", "fileName": "aeternal-circle-navigation.glb", "checksum": "fd0a68105531bd6d98af11fe67cf633f246a8b49aec029be23892b4a3c9c1441", "size": 312436, "triangleCount": 6557 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -394.7327, -45.93457, -384.10388 ], "max": [ 404.06732, 317.68652, 225.09616 ] }, "entrance": { "name": "Aeternal Circle Entrance", "footPosition": [ 0.16731, 259.079987, -2.696167 ], "forward": [ 0, 0, 1 ], "yaw": 0 }, "areas": [ { "id": "entrance", "name": "Aeternal Circle Entrance", "center": [ 0.16731, 259.079987, -2.696167 ], "radius": 24 } ], "entities": AETERNAL_CIRCLE_ENTITIES, "staticSpawns": AETERNAL_CIRCLE_STATIC_SPAWNS, "roamingPacks": [], "bosses": AETERNAL_CIRCLE_BOSSES, "objectiveOrder": AETERNAL_CIRCLE_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "3ef4efd9c6a6af13a052aeb8bf98400fed1ba92141330d9e62d8a7f43a1b5389", "primaryRos": "2d56edc6da1693a368ff2994c142650b16c3597a65f2ab07947c3d067ee06780", "populationSnapshot": "f85a470d1f0302ef660f79859c1a73feae0283fc7f272be1b0c59030df7b8c99" }, "databaseAdapter": "portable RuneWaker Zone 144 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/aeternal-circle-zone-144.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/aeternal-circle/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "Source-anchor support pads preserve combat and entrance coordinates where modular WDB sections or primary-ROS collision leave navmesh gaps; full secondary placement assembly remains a visual follow-up.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition, { "schemaVersion": DUNGEON_DEFINITION_SCHEMA_VERSION, "id": "kulech-bones-nest", "title": "Kulech Bones Nest", "mapId": 147, "lfgDungeonIds": [], "expansion": "runewaker", "environmentMode": "runewaker-ros", "difficultyVariants": [ { "id": "normal", "difficulty": "normal", "spawnMask": 1, "levelRange": [ 1, 77 ] } ], "defaultDifficultyId": "normal", "availability": "available", "presentation": { "location": "Kulech Bones Nest", "theme": "RuneWaker dungeon import", "summary": "Explore Kulech Bones Nest and defeat its source-authored encounters.", "loadingMessage": "Entering Kulech Bones Nest...", "unchartedAreaName": "Uncharted Kulech Bones Nest", "background": "#09090c", "fog": { "color": "#0b0b10", "near": 34, "far": 463 }, "ambientLight": { "color": "#9d96a7", "intensity": 0.2 }, "hemisphereLight": { "skyColor": "#77768c", "groundColor": "#0a0809", "intensity": 0.48 }, "directionalLight": { "color": "#c9bea6", "intensity": 0.78, "offset": [ 9, 17, -6 ] }, "materials": { "cutoutPatterns": [], "cutoutNames": [], "blendPatterns": [], "blendNames": [], "additivePatterns": [], "additiveNames": [] }, "map": { "width": 344, "height": 421, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "kulech-bones-nest-visual.glb", "checksum": "b06b42b3c7f19abf9d645eec6be78f868cf6966e0b472e2ca4a1c36d3cf4d2d1", "size": 12147008, "triangleCount": 168192 } ], "collision": [ { "id": "collision-000", "fileName": "kulech-bones-nest-collision-000.glb", "checksum": "30d823dbfe739114ad25425682c761c421b59d0993fc8176475f4b17344d5bcc", "size": 3749640, "triangleCount": 89055 }, { "id": "collision-001", "fileName": "kulech-bones-nest-collision-001.glb", "checksum": "1796060f9f50a0b6c4ca9d0d9577a9650bc2610c0452dd7b1308ab2d2e49a606", "size": 2996996, "triangleCount": 79137 } ], "navigation": { "id": "navigation", "fileName": "kulech-bones-nest-navigation.glb", "checksum": "90f76f3ae9da14ba370786a8b5f870636d5c2a44cd31fb0f588ffded831cb6be", "size": 357408, "triangleCount": 7428 } }, "transform": { "position": [ 0, 0, 0 ], "rotation": [ 0, 0, 0 ], "scale": 1, "fromRunewaker": "local=scale(0.1)*inverse(WDB placement)*server; three(x,y,z)=(local.x,local.y,-local.z)" }, "bounds": { "min": [ -176.08028, -743.85529, -265.95306 ], "max": [ 167.8633, 79.6521, 154.81775 ] }, "entrance": { "name": "Kulech Bones Nest Entrance", "footPosition": [ 30.535831, 22.756411, -126.566948 ], "forward": [ 0, 0, -1 ], "yaw": 3.141593 }, "areas": [ { "id": "entrance", "name": "Kulech Bones Nest Entrance", "center": [ 30.535831, 22.756411, -126.566948 ], "radius": 24 } ], "entities": KULECH_BONES_NEST_ENTITIES, "staticSpawns": KULECH_BONES_NEST_STATIC_SPAWNS, "roamingPacks": [], "bosses": KULECH_BONES_NEST_BOSSES, "objectiveOrder": KULECH_BONES_NEST_OBJECTIVE_ORDER, "navigationLinks": [], "serverGameObjects": [], "provenance": { "clientBuild": "preserved RuneWaker source snapshot", "clientArchiveHashes": { "wdb": "b57b124cae3f35f490775303b59c5836c3be32f6aefbea16f785715e768c2ed3", "primaryRos": "c2ae20b884c29cbd7de8b90f799554502f13754c285e7e024aba5ab952d7688e", "populationSnapshot": "473ba18f1e37c6757693d1d8b7251d4ea734e3c17337a25569f2bca493e6b7b2" }, "databaseAdapter": "portable RuneWaker Zone 147 JSON snapshot", "sourceSnapshot": "scripts/runewaker-pipeline/snapshots/kulech-bones-nest-zone-147.json", "coordinateTransform": "threeLocal=(inverse(WDB placement)*server)*(0.1,0.1,-0.1)" }, "validation": { "status": "green", "report": "src/assets/game/dungeons/kulech-bones-nest/instance-validation-report.json", "blockers": [], "warnings": [ "Secondary WDB doodads/effects remain in the audit; this pass exports the primary ROS hierarchy.", "Collision initially includes decorative primary-ROS geometry.", "Original GR2 actor animations are recovered where source graphs and validation permit; scripted encounter mechanics remain evidence-driven per-instance work.", "1 runtime/dynamic actor containers use HealerMan procedural visuals because their ROS files expose no static triangles.", "Boss combat kits are compiled from RuneWaker spell/script evidence; complex doors, patrol scripts, and loot remain review-required." ] } } as const satisfies DungeonDefinition ] as const satisfies readonly DungeonDefinition[];