509 lines
17 KiB
JSON
509 lines
17 KiB
JSON
{
|
|
"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."
|
|
]
|
|
}
|