{ "schemaVersion": 2, "dungeonId": "lair-demon-dragon", "sourceDungeonConfigId": "lair_demon_dragon", "zoneId": 119, "expectedActiveRows": 532, "expectedBossSpawns": 0, "runtimeIdPrefix": "rw-lair-demon-dragon", "coordinateSystem": { "metersPerSourceUnit": 0.1, "directionUnitsPerTurn": 360, "maximumProjectionDistance": 4 }, "files": { "environmentRecipe": "scripts/runewaker-pipeline/recipes/lair-demon-dragon.json", "snapshot": "scripts/runewaker-pipeline/snapshots/lair-demon-dragon-zone-119.json", "generatedSource": "src/game/generated/lairDemonDragonPopulation.generated.ts", "report": "src/assets/game/dungeons/lair-demon-dragon/population-import-report.json", "mechanicsReport": "src/assets/game/dungeons/lair-demon-dragon/mechanics-audit.json", "mechanicsSource": "src/game/generated/lairDemonDragonMechanics.generated.ts", "environmentMetadata": "src/assets/game/dungeons/lair-demon-dragon/import-metadata.json", "navigation": "src/assets/game/dungeons/lair-demon-dragon/lair-demon-dragon-navigation.glb", "actorManifest": "public/assets/creatures/lair-demon-dragon/manifest.json", "actorOutput": "public/assets/creatures/lair-demon-dragon" }, "source": { "rootEnvironmentVariable": "RUNEWAKER_ROOT", "relativeDefault": "../rom-pvt-server-backups/Runewaker", "resourceRoot": "Resource", "dungeonConfig": "Tools/dungeon_config.json", "dungeonConfigId": "lair_demon_dragon", "luaRoot": "Resource/luascript", "catalogs": [ "Resource/data/npcobject.db", "Resource/data/imageobject.db", "Resource/data/string_enus.db" ], "backups": { "global": "../rom-pvt-server-backups/OneForAll/SQL/databases/ROM_Global.bak", "objects": "../rom-pvt-server-backups/OneForAll/SQL/databases/ObjectEdit.bak" }, "serverEnvironmentVariable": "RUNEWAKER_SQL_SERVER", "serverDefault": ".\\HEALERMAN_RW" }, "actors": [ { "id": "albino-tiger", "sourceModel": "model/character/creature/tiger/act_albino_tiger.ros", "runtimeRotationY": 0 }, { "id": "crystal-lizard-red", "sourceModel": "model/character/creature/lizard/act_crystal_lizard_red.ros", "runtimeRotationY": 0 }, { "id": "elder-myconid", "sourceModel": "model/character/creature/elder_myconid/act_elder_myconid.ros", "runtimeRotationY": 0 }, { "id": "ghastly-bat-red", "sourceModel": "model/character/creature/ghastly_bat/act_ghastly_bat_red.ros", "runtimeRotationY": 0 }, { "id": "pureblood-naga-female", "sourceModel": "model/character/creature/pureblood-naga_female/act_pureblood-naga_female.ros", "runtimeRotationY": 0 }, { "id": "pureblood-naga-paperdoll", "sourceModel": "model/character/creature/pureblood-naga_male/act_pureblood-naga_paperdoll.ros", "runtimeRotationY": 0 }, { "id": "salamander-red", "sourceModel": "model/character/creature/salamander/act_salamander_red.ros", "runtimeRotationY": 0 } ], "templates": [ { "primaryColor": "hsl(283 22% 38%)", "accentColor": "hsl(311 38% 64%)", "id": 100469, "name": "Template 100469", "level": 50, "classification": "combat", "archetype": "humanoid", "actor": "albino-tiger", "source": { "imageId": 570002, "modelPath": "model/character/creature/tiger/act_albino_tiger.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(19 22% 38%)", "accentColor": "hsl(47 38% 64%)", "id": 102677, "name": "Template 102677", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 579499, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(113 22% 38%)", "accentColor": "hsl(141 38% 64%)", "id": 102679, "name": "Template 102679", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 579501, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(160 22% 38%)", "accentColor": "hsl(188 38% 64%)", "id": 102680, "name": "Template 102680", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 579502, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(287 22% 38%)", "accentColor": "hsl(315 38% 64%)", "id": 102721, "name": "Scarlet Snake Flame Breaker", "level": 57, "classification": "combat", "archetype": "serpent", "actor": "pureblood-naga-paperdoll", "source": { "imageId": 579783, "modelPath": "model/character/creature/pureblood-naga_male/act_pureblood-naga_paperdoll.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(334 22% 38%)", "accentColor": "hsl(2 38% 64%)", "id": 102722, "name": "Scarlet Snake Night Singer", "level": 57, "classification": "combat", "archetype": "serpent", "actor": "pureblood-naga-female", "source": { "imageId": 579784, "modelPath": "model/character/creature/pureblood-naga_female/act_pureblood-naga_female.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(21 22% 38%)", "accentColor": "hsl(49 38% 64%)", "id": 102723, "name": "Wingsnake Guard", "level": 57, "classification": "combat", "archetype": "serpent", "actor": "pureblood-naga-paperdoll", "source": { "imageId": 579785, "modelPath": "model/character/creature/pureblood-naga_male/act_pureblood-naga_paperdoll.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(68 22% 38%)", "accentColor": "hsl(96 38% 64%)", "id": 102724, "name": "Wingsnake Imprisoner", "level": 57, "classification": "combat", "archetype": "serpent", "actor": "pureblood-naga-female", "source": { "imageId": 579786, "modelPath": "model/character/creature/pureblood-naga_female/act_pureblood-naga_female.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(115 22% 38%)", "accentColor": "hsl(143 38% 64%)", "id": 102725, "name": "Volcano Newt", "level": 56, "classification": "combat", "archetype": "lizard", "actor": "salamander-red", "source": { "imageId": 570197, "modelPath": "model/character/creature/salamander/act_salamander_red.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(162 22% 38%)", "accentColor": "hsl(190 38% 64%)", "id": 102726, "name": "Lava Bat", "level": 56, "classification": "combat", "archetype": "winged", "actor": "ghastly-bat-red", "source": { "imageId": 574472, "modelPath": "model/character/creature/ghastly_bat/act_ghastly_bat_red.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(306 22% 38%)", "accentColor": "hsl(334 38% 64%)", "id": 102798, "name": "Scarlet Snake Flame Master", "level": 56, "classification": "combat", "archetype": "serpent", "actor": "pureblood-naga-female", "source": { "imageId": 579784, "modelPath": "model/character/creature/pureblood-naga_female/act_pureblood-naga_female.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(40 22% 38%)", "accentColor": "hsl(68 38% 64%)", "id": 102800, "name": "Fire Lizard", "level": 56, "classification": "combat", "archetype": "lizard", "actor": "crystal-lizard-red", "source": { "imageId": 572910, "modelPath": "model/character/creature/lizard/act_crystal_lizard_red.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(276 22% 38%)", "accentColor": "hsl(304 38% 64%)", "id": 102828, "name": "Template 102828", "level": 1, "classification": "deferred-object", "archetype": "humanoid", "reason": "Positive-level source object has no static character ROS and is retained for mechanics review.", "source": { "imageId": 576261, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(323 22% 38%)", "accentColor": "hsl(351 38% 64%)", "id": 102829, "name": "Template 102829", "level": 1, "classification": "combat", "archetype": "plant", "actor": "elder-myconid", "source": { "imageId": 576437, "modelPath": "model/character/creature/elder_myconid/act_elder_myconid.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(10 22% 38%)", "accentColor": "hsl(38 38% 64%)", "id": 102830, "name": "Template 102830", "level": 1, "classification": "combat", "archetype": "plant", "actor": "elder-myconid", "source": { "imageId": 576437, "modelPath": "model/character/creature/elder_myconid/act_elder_myconid.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(57 22% 38%)", "accentColor": "hsl(85 38% 64%)", "id": 102831, "name": "Template 102831", "level": 1, "classification": "combat", "archetype": "plant", "actor": "elder-myconid", "source": { "imageId": 576437, "modelPath": "model/character/creature/elder_myconid/act_elder_myconid.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(104 22% 38%)", "accentColor": "hsl(132 38% 64%)", "id": 102832, "name": "Template 102832", "level": 53, "classification": "combat", "archetype": "plant", "actor": "elder-myconid", "source": { "imageId": 576437, "modelPath": "model/character/creature/elder_myconid/act_elder_myconid.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(198 22% 38%)", "accentColor": "hsl(226 38% 64%)", "id": 102834, "name": "Template 102834", "level": 53, "classification": "combat", "archetype": "plant", "actor": "elder-myconid", "source": { "imageId": 576437, "modelPath": "model/character/creature/elder_myconid/act_elder_myconid.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(206 22% 38%)", "accentColor": "hsl(234 38% 64%)", "id": 110578, "name": "Template 110578", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(168 22% 38%)", "accentColor": "hsl(196 38% 64%)", "id": 112224, "name": "Template 112224", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(89 22% 38%)", "accentColor": "hsl(117 38% 64%)", "id": 780007, "name": "Template 780007", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(295 22% 38%)", "accentColor": "hsl(323 38% 64%)", "id": 780425, "name": "Template 780425", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(342 22% 38%)", "accentColor": "hsl(10 38% 64%)", "id": 780426, "name": "Template 780426", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(280 22% 38%)", "accentColor": "hsl(308 38% 64%)", "id": 780440, "name": "Template 780440", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(250 22% 38%)", "accentColor": "hsl(278 38% 64%)", "id": 780470, "name": "Template 780470", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(78 22% 38%)", "accentColor": "hsl(106 38% 64%)", "id": 780474, "name": "Template 780474", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(266 22% 38%)", "accentColor": "hsl(294 38% 64%)", "id": 780478, "name": "Template 780478", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(141 22% 38%)", "accentColor": "hsl(169 38% 64%)", "id": 780483, "name": "Template 780483", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 0, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } } ], "deferred": [ "Doors, summons, patrols, phases, interactables, and loot require reviewed mechanics mappings.", "Direct GR2 actors and exact paperdoll appearances use recovered native animation when validated; explicit pose-only/proxy exceptions retain procedural presentation." ] }