/* 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": "381bd6f6a79e52f708715f612d913167aa7e28c69132fc1004936a658a7fc78d", "size": 9238144, "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": "b80b60cba6e5a0eb3e13bd7e048f9408f21bf870c0c81fc8de5c195d3a3eaee3", "size": 9478500, "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": "2f65a47df59ac30c244784fdc67b638ed601b7a374d2307ca6b2d894fb915e4d", "size": 5974836, "triangleCount": 174521 } ], "collision": [ { "id": "collision-000", "fileName": "mystic-altar-collision-000.glb", "checksum": "30b6ebb286f95cf80fba9c6899bcf98bed2b8468e4535d6a497bc204a66f2c50", "size": 3240924, "triangleCount": 90000 }, { "id": "collision-001", "fileName": "mystic-altar-collision-001.glb", "checksum": "41cf87743bf057903e411027e8e3e5d4e20f47dbc99e59d5a932cb9737f7dbc8", "size": 2431152, "triangleCount": 67506 } ], "navigation": { "id": "navigation", "fileName": "mystic-altar-navigation.glb", "checksum": "0e12d3009935b49eb45bc38d71622ab65dea3d2e7b9bf4caea0d75e86ca4584c", "size": 1234756, "detourTopology": { "schemaVersion": 1, "polygonCount": 2688, "directedLinkCount": 5244, "detailTriangleCount": 8252, "assetChecksum": "0e12d3009935b49eb45bc38d71622ab65dea3d2e7b9bf4caea0d75e86ca4584c" }, "triangleCount": 8252 } }, "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.02753, 0, -0.999621 ], "yaw": 3.11406 }, "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.", "Physical collision honors native entity collision options; generated source-anchor supports remain explicit fallback 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": "e4dc12d5d03c33f870987e7bf24cb4b559719f07a0fd762cac39a47da2026b38", "size": 1778408, "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": "517562d79058df881c5f10dbb9755cd6973653c9ba151e082d5ef24981217b20", "size": 6140844, "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": "ef8e34f12b62631c6d22e220834045bdf6f73ecdac327e5e0173a760d22c1422", "size": 13195036, "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.992731, 0, 0.120358 ], "yaw": 4.833039 }, "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": "3d41a9dcb3cb2c4eb09b1f5bc72d021fd5ee02f254dba178f50d53417f9adf0a", "size": 2721396, "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": "11b77cfa5e5e903f7599787296dc6f98e1481a8bc66577c29c97b5943b1dd4c0", "size": 2282372, "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": "e755700454a4fc6b6c4d3b077eb3e4886c720ddac34ef791c3d02c501360415d", "size": 2691880, "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": "e755700454a4fc6b6c4d3b077eb3e4886c720ddac34ef791c3d02c501360415d", "size": 2691880, "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": "60291ba4723db252a15d047fd1eb95a48d77a5be602a84069d4f1ca7b9b28746", "size": 11549664, "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.010106, 0, 0.999949 ], "yaw": 6.273079 }, "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": "f56f855c4e4ef2a430d31feacc45b657dc726b0da96870bac37830436846f2ce", "size": 66093672, "triangleCount": 3805785 } ], "collision": [ { "id": "collision-000", "fileName": "the-origin-native-collision-000.glb", "checksum": "e920db8fd8818450b582c6bb16d1f55abc0a12bef8230c9337c881b132bc89fa", "size": 3431320, "triangleCount": 90000 }, { "id": "collision-001", "fileName": "the-origin-native-collision-001.glb", "checksum": "116ab7adc5db36adae1174be707111d69f65d722561be86cbbe37c61027d6426", "size": 173376, "triangleCount": 4513 }, { "id": "collision-002", "fileName": "the-origin-native-collision-002.glb", "checksum": "e783c9ee5f807daa20d6238761d7b03cbb5acd91cb995002f1ffac109a064ee3", "size": 3150024, "triangleCount": 81515 }, { "id": "collision-003", "fileName": "the-origin-native-collision-003.glb", "checksum": "050e36a7a478a62877568cb7e97fcda86b0ec054826e81be6ab0c3a557c39516", "size": 2575912, "triangleCount": 67175 }, { "id": "collision-004", "fileName": "the-origin-native-collision-004.glb", "checksum": "30085458dd2c1b5ea66dd3dcdda2c2aa4af3bee217e53d8832419c095a704c5e", "size": 1990544, "triangleCount": 51154 }, { "id": "collision-005", "fileName": "the-origin-native-collision-005.glb", "checksum": "69ba728c1209d42ea60c42151e79a0368c005ec2b66fa1aef20a1cce56fd34b3", "size": 3480772, "triangleCount": 90000 }, { "id": "collision-006", "fileName": "the-origin-native-collision-006.glb", "checksum": "b3856ea1a880f2266f997447180b5b4319a630a8c5c8b3a8ed7717df228d592e", "size": 30644, "triangleCount": 760 }, { "id": "collision-007", "fileName": "the-origin-native-collision-007.glb", "checksum": "94126c12abb3cbf280b287dca488bed042ff70e048b1c2494de5f3721d8e9912", "size": 3460796, "triangleCount": 90000 }, { "id": "collision-008", "fileName": "the-origin-native-collision-008.glb", "checksum": "10b8834ed470e2e638ab4d85ba72e7ebf5c809d564b5d2deb095476569652cfe", "size": 263232, "triangleCount": 6881 }, { "id": "collision-009", "fileName": "the-origin-native-collision-009.glb", "checksum": "bef23e3be07966f12ba4479c63fb2b304b91eaf9f67a8e5c6656e6113ef79090", "size": 590840, "triangleCount": 14971 }, { "id": "collision-010", "fileName": "the-origin-native-collision-010.glb", "checksum": "4b528f8cc04217918f94ea60254c3f18635aa7b6845c92b201689ced5f861538", "size": 2082000, "triangleCount": 54743 }, { "id": "collision-011", "fileName": "the-origin-native-collision-011.glb", "checksum": "a9c433229e2eb9c3e30cbc0ae3b1822f4352110489aedd6d92597bf931e122a3", "size": 3453884, "triangleCount": 90000 }, { "id": "collision-012", "fileName": "the-origin-native-collision-012.glb", "checksum": "3b992b963f1ba74d70769d1cde7e96802f70c5b2dac45c996b5429c8da91c9f7", "size": 912396, "triangleCount": 23964 }, { "id": "collision-013", "fileName": "the-origin-native-collision-013.glb", "checksum": "899425bb5ea381ec886f7db298ffc31e9eac73c308c664b1f4e4559fb2197d8a", "size": 2063664, "triangleCount": 53577 }, { "id": "collision-014", "fileName": "the-origin-native-collision-014.glb", "checksum": "3cd2ec1e6da5e951b7a9ec48b7955e9b6b2253b0f25f0324f247d0c1398d84e8", "size": 3422108, "triangleCount": 90000 }, { "id": "collision-015", "fileName": "the-origin-native-collision-015.glb", "checksum": "8f43d75604e85ed5b5e88dc7eb29853f3aa413bb1d3c6d0617c6458526e63d45", "size": 875816, "triangleCount": 22996 }, { "id": "collision-016", "fileName": "the-origin-native-collision-016.glb", "checksum": "0670b9fee14b777c56a67b4bd670f541e54dcd6ed36b224e36db3b01e9f78c8f", "size": 356020, "triangleCount": 8774 }, { "id": "collision-017", "fileName": "the-origin-native-collision-017.glb", "checksum": "6ac5c303255024a89be2c50f50c45336511f9bfe8410958a1bcaa66207212095", "size": 515332, "triangleCount": 12993 }, { "id": "collision-018", "fileName": "the-origin-native-collision-018.glb", "checksum": "4a9420a8fd08cfcd66b66041077f58f98ddff599e9673ad93e9f70c2874caa08", "size": 53324, "triangleCount": 1357 }, { "id": "collision-019", "fileName": "the-origin-native-collision-019.glb", "checksum": "7b19361f88834116fc8ca89d9c0bbf78ef63e3315b319847974441789bae6cec", "size": 371380, "triangleCount": 9727 }, { "id": "collision-020", "fileName": "the-origin-terrain-collision.glb", "checksum": "37898c915e062f10c2de198e85bcc73cd282b4e91c2812e17280f401458c8c07", "size": 25738500, "triangleCount": 2094713 } ], "navigation": { "id": "navigation", "fileName": "the-origin-navigation.glb", "checksum": "b5246adc34689968f31ea069a14186d2a748acdfa0c2ff9af3fe7a9795c8d14d", "size": 12187904, "detourTopology": { "schemaVersion": 1, "polygonCount": 24612, "directedLinkCount": 45392, "detailTriangleCount": 103582, "assetChecksum": "b5246adc34689968f31ea069a14186d2a748acdfa0c2ff9af3fe7a9795c8d14d" }, "triangleCount": 103582 } }, "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.040176, -94.76418, -431.593932 ], "max": [ 382.64336, 260.724523, 541.440422 ] }, "entrance": { "name": "The Origin Entrance", "footPosition": [ -370.023404, -13.612361, -256.34201 ], "forward": [ 0.763484, 0, 0.645826 ], "yaw": 0.868691 }, "areas": [ { "id": "entrance", "name": "The Origin Entrance", "center": [ -370.023404, -13.612361, -256.34201 ], "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.", "Runtime entry uses reviewed source path graph 1026 node 854; the authoritative Lua spawn and direction remain in the environment import metadata.", "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": "277b22b6ac7773da9eaeb6379981392c471028cafbd10b87d516223d5bc2d1ab", "size": 16675904, "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": "4ad08f66d3a9334ee724e9a634365f7a74690816c4ed2651533d2a727aa5c5a6", "size": 9103276, "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": "13085988ec816dd889ea6c36d6e3f4a7ff418fc1f683c9c8639e5521275168cb", "size": 4643484, "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": "9e17252f9c3fada377026120f905457cfabe96d81e6cf629b73d8e28ccdefa33", "size": 19045856, "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": 243 }, "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": 202, "height": 202, "padding": 24, "contours": [] } }, "assets": { "visual": [ { "id": "visual-000", "fileName": "sand-vortex-visual.glb", "checksum": "dcd946d3d93a64b66de177b7ddb87cba758d74639542aff03250857eb9f33e00", "size": 2125440, "triangleCount": 82324 } ], "collision": [ { "id": "collision-000", "fileName": "sand-vortex-wdb-collision-000.glb", "checksum": "0f261c0a563abedc4314c9b58726c4471ae82f47c3ecacd6682f58fc9831e042", "size": 1161336, "triangleCount": 82324 } ], "navigation": { "id": "navigation", "fileName": "sand-vortex-navigation.glb", "checksum": "77afca15efad24d91cc0a7bd02544c7bbd615605f9d5631acc3f323be73eba3b", "size": 77852, "triangleCount": 1604 } }, "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": [ -85.007675, -2.690195, -87.772926 ], "max": [ 116.79702, 70.50528, 114.031776 ] }, "entrance": { "name": "Sand Vortex Entrance", "footPosition": [ -30.407673, 1.504397, 17.227081 ], "forward": [ 0.995034, 0, -0.099531 ], "yaw": 1.670493 }, "areas": [ { "id": "entrance", "name": "Sand Vortex Entrance", "center": [ -30.407673, 1.504397, 17.227081 ], "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": [ "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.", "Native terrain uses original chunk topology, packed normals, tile scales, and blend weights; reviewed encounter bounds select nine terrain chunks from the broader zone.", "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": "531b77910664e7139886edfc87060c1c450edc74e8be1a9a3607b3de212d0bd1", "size": 15828828, "triangleCount": 261609 } ], "collision": [ { "id": "collision-000", "fileName": "demon-stronghold-collision-000.glb", "checksum": "44392de2755789dd8648a98817c91d5f3981d65edcfd76046a7faca07935f86c", "size": 2202712, "triangleCount": 61161 } ], "navigation": { "id": "navigation", "fileName": "demon-stronghold-navigation.glb", "checksum": "1691db276ce2167707af0a83df254e18a72b02e6bb0e67decf85efd581379ea0", "size": 1761164, "detourTopology": { "schemaVersion": 1, "polygonCount": 3865, "directedLinkCount": 7294, "detailTriangleCount": 12513, "assetChecksum": "1691db276ce2167707af0a83df254e18a72b02e6bb0e67decf85efd581379ea0" }, "triangleCount": 12513 } }, "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.", "Physical collision honors native entity collision options; generated source-anchor supports remain explicit fallback 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": "9e17252f9c3fada377026120f905457cfabe96d81e6cf629b73d8e28ccdefa33", "size": 19045856, "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": "4c546c6aa06b4b0055bfa3ad91ee9fffc30d35b21f669d3c01270bc76b124300", "size": 15782720, "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": "48eb9ef7a5de68f1ca4331dde37c4de6b971ca2caa0ccdd4f88dc3b860bc0e36", "size": 12696456, "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": "000f433856fb1596ba9f8a27d0586392ba2e4851e12ab2528da9aecc8c1576cb", "size": 3861760, "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.617428, 0, 0.786627 ], "yaw": 0.665469 }, "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": "4d1e03d82485b3091e07eabfbe1d9d20029e11d99ede41c4c2cea8a9861caeab", "size": 23908972, "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": "77b2b22bb89474bfe2bd9974d9f58cd680634d4f7feef6163723bb8f3afe6117", "size": 166048, "detourTopology": { "schemaVersion": 1, "polygonCount": 239, "directedLinkCount": 514, "detailTriangleCount": 653, "assetChecksum": "77b2b22bb89474bfe2bd9974d9f58cd680634d4f7feef6163723bb8f3afe6117" }, "triangleCount": 653 } }, "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.020312, 20.837463, 11.334656 ], "forward": [ -0.173648, 0, 0.984808 ], "yaw": 6.108652 }, "areas": [ { "id": "entrance", "name": "Raksha Temple Entrance", "center": [ -0.020312, 20.837463, 11.334656 ], "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": "69f70466b978d557497e8b8f6ff7b583b2ef9c1427568b70cbe667ebc23d613c", "size": 9859792, "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": [ 63, 68 ] } ], "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": "6fcbc9808c77a529444647a25eb96daa71ad13a244758e92c7f3d5a24f87f189", "size": 11779700, "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": "c517f19f1fc5cb1fa513532d96c1cdd7135ccfb0b5f6eecdc07cc0571cef3d7d", "size": 7981568, "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": "d5a3034bdd25133882603b712370c3b2973f2a0e4969c3d2587425c3b54e8b6f", "size": 11401548, "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": "bf3c3ed9be66627a46cb97f69c7e64d499d10016de7fc8306442e7f6d644fae9", "size": 5020112, "triangleCount": 61627 } ], "collision": [ { "id": "collision-000", "fileName": "aeternal-circle-collision.glb", "checksum": "a3856afbacaca4a00bcef1d18c4dac456f331814de2d28a1b437859ddc72fed6", "size": 381440, "triangleCount": 10570 } ], "navigation": { "id": "navigation", "fileName": "aeternal-circle-navigation.glb", "checksum": "44b28ab8cb007a639244fb9c8a064d1f987142cc08fef0008c548616f9143256", "size": 121004, "navigationComponentPolicy": "all-components", "triangleCount": 1327 } }, "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.", "Physical collision honors native entity collision options; generated source-anchor supports remain explicit fallback 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": "d5d1b96ac8e72f218b971d3bbbb38c6285302db5af161ec7980e33da56f99574", "size": 12249112, "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[];