import { WAILING_CAVERNS_ENTITIES, WAILING_CAVERNS_ROAMING_PACKS, WAILING_CAVERNS_STATIC_SPAWNS, } from "../mobPopulation"; import { DUNGEON_DEFINITION_SCHEMA_VERSION, type DungeonDefinition, } from "../dungeonTypes"; import { withWailingServerCombat } from "../wailingCavernsServer"; export const WAILING_CAVERNS_DEFINITION = { schemaVersion: DUNGEON_DEFINITION_SCHEMA_VERSION, id: "wailing-caverns", title: "Wailing Caverns", mapId: 43, lfgDungeonIds: [1], expansion: "classic", environmentMode: "global-wmo", difficultyVariants: [ { id: "normal", difficulty: "normal", spawnMask: 1, levelRange: [15, 25] }, ], defaultDifficultyId: "normal", availability: "available", presentation: { location: "The Barrens", theme: "Living caverns", summary: "Descend into a corrupted cavern and guide your party through its winding depths.", loadingMessage: "Preparing your expedition...", unchartedAreaName: "Uncharted Wailing Caverns", background: "#07110d", fog: { color: "#07110d", near: 32, far: 240 }, ambientLight: { color: "#93b68f", intensity: 0.2 }, hemisphereLight: { skyColor: "#789c80", groundColor: "#090d0a", intensity: 0.65 }, directionalLight: { color: "#b7c88f", intensity: 1.05, offset: [12, 20, -5] }, materials: { cutoutPatterns: ["_B1$"], cutoutNames: ["mat_snktmpvine", "mat_snktmpvine01"], blendPatterns: ["_B2$"], blendNames: ["WailingWater"], additivePatterns: ["_B4$"], additiveNames: [], }, map: { width: 430, height: 300, padding: 24, contours: [ "M24 192 C76 122 119 246 168 170 S249 62 298 128 365 238 412 102", "M42 236 C106 178 141 281 211 214 S316 43 398 74", ], }, }, assets: { visual: [{ id: "main", fileName: "wailing-caverns-visual.glb" }], collision: [{ id: "main", fileName: "wailing-caverns-collision.glb", triangleCount: 90_000 }], navigation: { id: "main", fileName: "wailing-caverns-navigation.glb", triangleCount: 45_732 }, editableSource: "wailing-caverns.source.blend", }, transform: { position: [0, 0, 0], rotation: [0, 0, 0], scale: 1, fromWow: "three(x,y,z)=(-wow.x,wow.z,wow.y)", }, entrance: { name: "The Winding Chasm - Entrance", footPosition: [163.49, -73.66, 132.9], forward: [-0.899, 0, -0.438], yaw: -2.024, }, bounds: { min: [-191.6667, -119.1605, -370.8333], max: [483.4794, 56.469, 554.3612], }, areas: [ { id: "entrance", name: "The Winding Chasm - Entrance", center: [163.49, -73.66, 132.9], radius: 34 }, { id: "lady-anacondra", name: "Lady Anacondra's Lair", center: [-15.34, -87.7, 297.18], radius: 44 }, { id: "kresh", name: "Kresh's Grotto", center: [64.41, -106.7, 319.08], radius: 44 }, { id: "lord-cobrahn", name: "Lord Cobrahn's Lair", center: [151.14, -72.63, 414.37], radius: 44 }, { id: "lord-pythas", name: "Lord Pythas's Lair", center: [-36.81, -79.5, -241.06], radius: 44 }, { id: "skum", name: "Skum's Den", center: [285.58, -69.19, -312.97], radius: 44 }, { id: "lord-serpentis", name: "Lord Serpentis's Lair", center: [120.16, -28.58, -24.62], radius: 44 }, { id: "verdan-the-everliving", name: "Crag of the Everliving", center: [81.86, -30.99, 32.26], radius: 46 }, { id: "naralex", name: "Dreamer's Rock", center: [-115.41, -94.02, 240.02], radius: 48 }, { id: "mutanus", name: "Mutanus's Chamber", center: [-151.27, -102.82, 252.26], radius: 44 }, ], entities: withWailingServerCombat(WAILING_CAVERNS_ENTITIES), staticSpawns: WAILING_CAVERNS_STATIC_SPAWNS, roamingPacks: WAILING_CAVERNS_ROAMING_PACKS, bosses: [ { id: "lady-anacondra-spawn", name: "Lady Anacondra", position: [-15.34, -87.7, 297.18] }, { id: "kresh-patrol:kresh-roaming", name: "Kresh", position: [64.41, -106.7, 319.08] }, { id: "lord-cobrahn-spawn", name: "Lord Cobrahn", position: [151.14, -72.63, 414.37] }, { id: "lord-pythas-spawn", name: "Lord Pythas", position: [-36.81, -79.5, -241.06] }, { id: "skum-spawn", name: "Skum", position: [285.58, -69.19, -312.97] }, { id: "lord-serpentis-spawn", name: "Lord Serpentis", position: [120.16, -28.58, -24.62] }, { id: "verdan-spawn", name: "Verdan the Everliving", position: [81.86, -30.99, 32.26] }, { id: "mutanus-spawn", name: "Mutanus the Devourer", position: [-151.27, -102.82, 252.26], eventOnly: true }, ], objectiveOrder: [ { id: "lady-anacondra-spawn", name: "Lady Anacondra", position: [-15.34, -87.7, 297.18] }, { id: "kresh-patrol:kresh-roaming", name: "Kresh", position: [64.41, -106.7, 319.08] }, { id: "lord-cobrahn-spawn", name: "Lord Cobrahn", position: [151.14, -72.63, 414.37] }, { id: "lord-pythas-spawn", name: "Lord Pythas", position: [-36.81, -79.5, -241.06] }, { id: "skum-spawn", name: "Skum", position: [285.58, -69.19, -312.97] }, { id: "lord-serpentis-spawn", name: "Lord Serpentis", position: [120.16, -28.58, -24.62] }, { id: "verdan-spawn", name: "Verdan the Everliving", position: [81.86, -30.99, 32.26] }, { id: "mutanus-spawn", name: "Mutanus the Devourer", position: [-151.27, -102.82, 252.26], eventOnly: true }, ], navigationLinks: [ { id: "recast-upper-lower-cavern-gap", start: [291.607168, -57.993855, -2.433421], end: [287.852407, -63.96052, 2.616587], bidirectional: true, authoredReason: "Golden-fixture bridge for the Recast discontinuity between upper and lower cavern route surfaces.", }, ], serverGameObjects: [], provenance: { clientBuild: "3.3.5a", clientArchiveHashes: {}, databaseAdapter: "azerothcore-playerbot-e822d7183222", databaseRevision: "e822d718322289dd036fb2daf8867ba41283bf9a+dirty-file-lock", sourceSnapshot: "dungeon-pipeline/fixtures/wailing-caverns/source-snapshot.json", coordinateTransform: "three(x,y,z)=(-wow.x,wow.z,wow.y)", }, validation: { status: "green", report: "dungeon-pipeline/fixtures/wailing-caverns/validation-report.json", blockers: [], warnings: ["An authored off-mesh link bridges the steep upper/lower cavern transition."], }, } as const satisfies DungeonDefinition;