Files
healer-man/src/game/generated/runewakerDungeonDefinitions.generated.ts
T
2026-10-07 13:05:04 -04:00

5595 lines
168 KiB
TypeScript

/* 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[];