{ "schemaVersion": 2, "dungeonId": "grafu-castle", "sourceDungeonConfigId": "grafu_castle", "zoneId": 137, "expectedActiveRows": 249, "expectedBossSpawns": 0, "runtimeIdPrefix": "rw-grafu-castle", "coordinateSystem": { "metersPerSourceUnit": 0.1, "directionUnitsPerTurn": 360, "maximumProjectionDistance": 4 }, "files": { "environmentRecipe": "scripts/runewaker-pipeline/recipes/grafu-castle.json", "snapshot": "scripts/runewaker-pipeline/snapshots/grafu-castle-zone-137.json", "generatedSource": "src/game/generated/grafuCastlePopulation.generated.ts", "report": "src/assets/game/dungeons/grafu-castle/population-import-report.json", "mechanicsReport": "src/assets/game/dungeons/grafu-castle/mechanics-audit.json", "mechanicsSource": "src/game/generated/grafuCastleMechanics.generated.ts", "environmentMetadata": "src/assets/game/dungeons/grafu-castle/import-metadata.json", "navigation": "src/assets/game/dungeons/grafu-castle/grafu-castle-navigation.glb", "actorManifest": "public/assets/creatures/grafu-castle/manifest.json", "actorOutput": "public/assets/creatures/grafu-castle" }, "source": { "rootEnvironmentVariable": "RUNEWAKER_ROOT", "relativeDefault": "../rom-pvt-server-backups/Runewaker", "resourceRoot": "Resource", "dungeonConfig": "Tools/dungeon_config.json", "dungeonConfigId": "grafu_castle", "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": "black-hat-blue", "sourceModel": "model/character/creature/black_hat/act_black_hat_blue.ros", "runtimeRotationY": 0 }, { "id": "bunny", "sourceModel": "model/character/creature/bunny/act_bunny.ros", "runtimeRotationY": 0 }, { "id": "cereus-01", "sourceModel": "model/character/creature/cereus/act_cereus_01.ros", "runtimeRotationY": 0 }, { "id": "controlled-steel-guardian", "sourceModel": "model/character/creature/lost_protector/act_controlled_steel_guardian.ros", "runtimeRotationY": 0 }, { "id": "elder-myconid", "sourceModel": "model/character/creature/elder_myconid/act_elder_myconid.ros", "runtimeRotationY": 0 }, { "id": "ghastly-clown-red", "sourceModel": "model/character/creature/ghastly_clown/act_ghastly_clown_red.ros", "runtimeRotationY": 0 }, { "id": "grinning-clown", "sourceModel": "model/character/creature/grinning_clown/act_grinning_clown.ros", "runtimeRotationY": 0 }, { "id": "hm-male", "sourceModel": "model/character/pc/human/male/act_hm_male.ros", "runtimeRotationY": 0 }, { "id": "karth-01", "sourceModel": "model/character/creature/karth/act_karth_01.ros", "runtimeRotationY": 0 }, { "id": "milk-scarab-blue", "sourceModel": "model/character/creature/milk_scarab/act_milk_scarab_blue.ros", "runtimeRotationY": 0 } ], "templates": [ { "primaryColor": "hsl(66 22% 38%)", "accentColor": "hsl(94 38% 64%)", "id": 102678, "name": "Template 102678", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 579500, "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(320 22% 38%)", "accentColor": "hsl(348 38% 64%)", "id": 103120, "name": "Template 103120", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "actor": "bunny", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 578539, "modelPath": "model/character/creature/bunny/act_bunny.ros", "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(28 22% 38%)", "accentColor": "hsl(56 38% 64%)", "id": 104324, "name": "Template 104324", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 584272, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(190 22% 38%)", "accentColor": "hsl(218 38% 64%)", "id": 104810, "name": "Template 104810", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 585042, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(140 22% 38%)", "accentColor": "hsl(168 38% 64%)", "id": 105100, "name": "Template 105100", "level": 0, "classification": "deferred-object", "archetype": "lizard", "actor": "milk-scarab-blue", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 572362, "modelPath": "model/character/creature/milk_scarab/act_milk_scarab_blue.ros", "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(207 22% 38%)", "accentColor": "hsl(235 38% 64%)", "id": 105201, "name": "Template 105201", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 580999, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(35 22% 38%)", "accentColor": "hsl(63 38% 64%)", "id": 105205, "name": "Template 105205", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 585659, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(270 22% 38%)", "accentColor": "hsl(298 38% 64%)", "id": 105210, "name": "Template 105210", "level": 10, "classification": "combat", "archetype": "humanoid", "actor": "cereus-01", "source": { "imageId": 583949, "modelPath": "model/character/creature/cereus/act_cereus_01.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(317 22% 38%)", "accentColor": "hsl(345 38% 64%)", "id": 105211, "name": "Template 105211", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "hm-male", "source": { "imageId": 585704, "modelPath": "model/character/pc/human/male/act_hm_male.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(4 22% 38%)", "accentColor": "hsl(32 38% 64%)", "id": 105212, "name": "Template 105212", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "hm-male", "source": { "imageId": 585705, "modelPath": "model/character/pc/human/male/act_hm_male.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(51 22% 38%)", "accentColor": "hsl(79 38% 64%)", "id": 105213, "name": "Template 105213", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 583893, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(98 22% 38%)", "accentColor": "hsl(126 38% 64%)", "id": 105214, "name": "Template 105214", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 583896, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(145 22% 38%)", "accentColor": "hsl(173 38% 64%)", "id": 105215, "name": "Template 105215", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 583898, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(192 22% 38%)", "accentColor": "hsl(220 38% 64%)", "id": 105216, "name": "Template 105216", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 583908, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(239 22% 38%)", "accentColor": "hsl(267 38% 64%)", "id": 105217, "name": "Template 105217", "level": 0, "classification": "deferred-object", "archetype": "humanoid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 583911, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(178 22% 38%)", "accentColor": "hsl(206 38% 64%)", "id": 105254, "name": "Template 105254", "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(6 22% 38%)", "accentColor": "hsl(34 38% 64%)", "id": 105258, "name": "Template 105258", "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(194 22% 38%)", "accentColor": "hsl(222 38% 64%)", "id": 105262, "name": "Template 105262", "level": 0, "classification": "deferred-object", "archetype": "plant", "actor": "elder-myconid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 576437, "modelPath": "model/character/creature/elder_myconid/act_elder_myconid.ros", "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(55 22% 38%)", "accentColor": "hsl(83 38% 64%)", "id": 105305, "name": "Template 105305", "level": 0, "classification": "deferred-object", "archetype": "plant", "actor": "elder-myconid", "reason": "Level-zero quest, trigger, prop, or noncombat NPC retained for a later interaction pass.", "source": { "imageId": 576437, "modelPath": "model/character/creature/elder_myconid/act_elder_myconid.ros", "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(52 22% 38%)", "accentColor": "hsl(80 38% 64%)", "id": 105596, "name": "Smirking Castle Clown", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "grinning-clown", "source": { "imageId": 584630, "modelPath": "model/character/creature/grinning_clown/act_grinning_clown.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(99 22% 38%)", "accentColor": "hsl(127 38% 64%)", "id": 105597, "name": "Odd Castle Clown", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "ghastly-clown-red", "source": { "imageId": 584631, "modelPath": "model/character/creature/ghastly_clown/act_ghastly_clown_red.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(146 22% 38%)", "accentColor": "hsl(174 38% 64%)", "id": 105598, "name": "Manipulated Steel Soldier", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "controlled-steel-guardian", "source": { "imageId": 584633, "modelPath": "model/character/creature/lost_protector/act_controlled_steel_guardian.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(240 22% 38%)", "accentColor": "hsl(268 38% 64%)", "id": 105600, "name": "Juggler's Apprentice", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "karth-01", "source": { "imageId": 584635, "modelPath": "model/character/creature/karth/act_karth_01.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(287 22% 38%)", "accentColor": "hsl(315 38% 64%)", "id": 105601, "name": "Conjurer's Apprentice", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "black-hat-blue", "source": { "imageId": 584636, "modelPath": "model/character/creature/black_hat/act_black_hat_blue.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(21 22% 38%)", "accentColor": "hsl(49 38% 64%)", "id": 105603, "name": "Manipulated Steel Soldier", "level": 63, "classification": "combat", "archetype": "humanoid", "actor": "controlled-steel-guardian", "source": { "imageId": 584633, "modelPath": "model/character/creature/lost_protector/act_controlled_steel_guardian.ros", "classificationRule": "positive native level plus static model/character ROS" } }, { "primaryColor": "hsl(68 22% 38%)", "accentColor": "hsl(96 38% 64%)", "id": 105604, "name": "Template 105604", "level": 63, "classification": "deferred-object", "archetype": "humanoid", "reason": "Positive-level source object has no static character ROS and is retained for mechanics review.", "source": { "imageId": 585818, "modelPath": null, "classificationRule": "noncombat/dynamic-display source object" } }, { "primaryColor": "hsl(38 22% 38%)", "accentColor": "hsl(66 38% 64%)", "id": 116434, "name": "Skeleton of an Adventurer", "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(149 22% 38%)", "accentColor": "hsl(177 38% 64%)", "id": 117547, "name": "Locked Iron Gate", "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(72 22% 38%)", "accentColor": "hsl(100 38% 64%)", "id": 780696, "name": "Template 780696", "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(169 22% 38%)", "accentColor": "hsl(197 38% 64%)", "id": 780767, "name": "Template 780767", "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(185 22% 38%)", "accentColor": "hsl(213 38% 64%)", "id": 780775, "name": "Template 780775", "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(311 22% 38%)", "accentColor": "hsl(339 38% 64%)", "id": 780793, "name": "Template 780793", "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": 780838, "name": "Template 780838", "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(313 22% 38%)", "accentColor": "hsl(341 38% 64%)", "id": 780839, "name": "Template 780839", "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(188 22% 38%)", "accentColor": "hsl(216 38% 64%)", "id": 780844, "name": "Template 780844", "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(235 22% 38%)", "accentColor": "hsl(263 38% 64%)", "id": 780845, "name": "Template 780845", "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(173 22% 38%)", "accentColor": "hsl(201 38% 64%)", "id": 780859, "name": "Template 780859", "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(220 22% 38%)", "accentColor": "hsl(248 38% 64%)", "id": 780860, "name": "Template 780860", "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(314 22% 38%)", "accentColor": "hsl(342 38% 64%)", "id": 780862, "name": "Template 780862", "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(111 22% 38%)", "accentColor": "hsl(139 38% 64%)", "id": 780873, "name": "Template 780873", "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(299 22% 38%)", "accentColor": "hsl(327 38% 64%)", "id": 780877, "name": "Template 780877", "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." ] }