Files
healer-man/src/assets/game/dungeons/forsaken-abbey/mechanics-audit.json
T
2026-08-14 15:56:39 -04:00

1203 lines
26 KiB
JSON

{
"schemaVersion": 1,
"dungeonId": "forsaken-abbey",
"zoneId": 102,
"status": "review-required",
"source": {
"populationRecipe": "scripts/runewaker-pipeline/recipes/forsaken-abbey-population.json",
"snapshot": "scripts/runewaker-pipeline/snapshots/forsaken-abbey-zone-102.json",
"snapshotContentSha256": "13ef6edd3df6e71389aa92d01201889148c0794cf9ecaafdbaf90d3145d2bf7b",
"dungeonConfig": "../rom-pvt-server-backups/Runewaker/Tools/dungeon_config.json",
"dungeonConfigId": "forsaken_abbey"
},
"configuredBossTemplateIds": [
100071,
100074,
100567
],
"configuredBossPositions": {
"100071": {
"name": "Boss1",
"x": 0,
"y": 0,
"z": 0,
"kx": 0,
"ky": 0,
"kz": 0,
"autoplot": "LuaI_FA_Loc1",
"zone_spawn": true,
"px": 0,
"py": 0,
"pz": 0,
"pdir": 0
},
"100074": {
"name": "Ankaria",
"x": 0,
"y": 0,
"z": 0,
"kx": 0,
"ky": 0,
"kz": 0,
"autoplot": "LuaI_FA_Loc2",
"zone_spawn": true,
"px": 0,
"py": 0,
"pz": 0,
"pdir": 0
},
"100567": {
"name": "Boss3",
"x": 0,
"y": 0,
"z": 0,
"kx": 0,
"ky": 0,
"kz": 0,
"autoplot": "LuaI_FA_Loc3",
"zone_spawn": true,
"px": 0,
"py": 0,
"pz": 0,
"pdir": 0
}
},
"bossRows": [
{
"spawnId": 7379,
"templateId": 100070,
"name": "Necromage",
"sourcePosition": [
2480.133056640625,
148.1143035888672,
3765.718017578125
],
"autoPlot": "LuaI_100_B2Keeper",
"plotClassName": null
},
{
"spawnId": 7384,
"templateId": 100070,
"name": "Necromage",
"sourcePosition": [
1500.166015625,
315.57440185546875,
3215.034912109375
],
"autoPlot": "LuaI_100_B2Keeper",
"plotClassName": null
},
{
"spawnId": 7425,
"templateId": 100070,
"name": "Necromage",
"sourcePosition": [
2979,
122.4717025756836,
2704.009033203125
],
"autoPlot": "LuaI_100_B2Keeper",
"plotClassName": null
},
{
"spawnId": 7426,
"templateId": 100070,
"name": "Necromage",
"sourcePosition": [
2508.112060546875,
124.79119873046875,
2892.949951171875
],
"autoPlot": "LuaI_100_B2Keeper",
"plotClassName": null
},
{
"spawnId": 7472,
"templateId": 100561,
"name": "Flowing Chaos",
"sourcePosition": [
4208.9990234375,
132.5791015625,
2223
],
"autoPlot": "LuaI_100_BOSS1",
"plotClassName": null
},
{
"spawnId": 7755,
"templateId": 100562,
"name": "Cruel Eater",
"sourcePosition": [
4479.166015625,
119.17400360107422,
2919.51611328125
],
"autoPlot": "LuaI_100_BOSS2",
"plotClassName": null
},
{
"spawnId": 7844,
"templateId": 100563,
"name": "Hollow Shell",
"sourcePosition": [
4451.60595703125,
119.17400360107422,
3651.138916015625
],
"autoPlot": "LuaI_100_BOSS3",
"plotClassName": null
},
{
"spawnId": 7854,
"templateId": 100074,
"name": "Demon Witch Ancalon",
"sourcePosition": [
5300,
127.70189666748047,
3278
],
"autoPlot": "AI_ANKARIA",
"plotClassName": null
}
],
"luaSources": [
{
"file": "03242.lua",
"exists": true,
"sha256": "2a1e6b9bdef254501d69717cae35b41b93960865a530e232dc02751eb8d62563",
"functions": [
"LuaI_DQ_Sister",
"DQ_Sister_Touch",
"LuaS_DungeonQueueNPC",
"DQ_EnterBossRush",
"DQ_BossRushEnter",
"DQ_ShowGroupSelect",
"DQ_PickSolo",
"DQ_PickDuo",
"DQ_PickParty",
"DQ_ShowLevelSelect",
"DQ_PickLv1",
"DQ_PickLv5",
"DQ_PickLv10",
"DQ_PickLv20",
"DQ_PickLv30",
"DQ_PickLv40",
"DQ_PickLv50",
"DQ_EnterDungeon",
"DQ_Cancel"
],
"referencedIds": [],
"signalCounts": {
"summon": 1,
"door": 0,
"timer": 2,
"movement": 0,
"spell": 0,
"death": 0,
"phase": 0,
"interaction": 28,
"loot": 0
}
},
{
"file": "00571.lua",
"exists": true,
"sha256": "110efc48ad7a915ca76d269ec577a56c0e9e7b2edced0f146720a446aba33cf7",
"functions": [
"LuaP_CastBersark",
"LuaI_Follow_A",
"LuaI_Follow_B",
"LuaI_Follow_C",
"LuaI_Follow_A_0",
"LuaI_Follow_A_1"
],
"referencedIds": [
100393,
100653,
124245,
124261,
124277,
124293,
124309,
124325,
124351,
124367,
124383,
124399,
124415,
124431,
124447,
124463,
124479,
124495,
124511,
124527,
124543,
124559,
124792,
124793,
124794,
124795,
124796,
124797,
124798,
124799,
124800,
124801,
124802,
124803,
124804,
124805,
124806,
124807,
124808,
124809,
124810,
124811,
780014,
780068,
780069
],
"signalCounts": {
"summon": 2,
"door": 0,
"timer": 6,
"movement": 4,
"spell": 2,
"death": 0,
"phase": 0,
"interaction": 0,
"loot": 0
}
},
{
"file": "00383.lua",
"exists": true,
"sha256": "ac2d0de936808482223f3a8f93ddac844b75a04134aa76557e0110a55f3b5e7e",
"functions": [
"LuaI_B3Door_Zone2A_0",
"LuaI_100_B2Keeper",
"LuaI_B2Keeper_Dead",
"LuaI_B3Door_Zone2A_1",
"LuaI_B2BOSS_Dead",
"LuaI_B3Door_Zone2A_2"
],
"referencedIds": [
100073,
124822,
124823,
124824,
124825,
124826,
124827,
124828,
124829,
124830,
124831,
124832,
124833,
124834,
124835,
124836,
124837,
124838,
124839,
124840,
124841,
780022
],
"signalCounts": {
"summon": 0,
"door": 13,
"timer": 2,
"movement": 0,
"spell": 1,
"death": 4,
"phase": 5,
"interaction": 0,
"loot": 0
}
}
],
"luaSignals": [
{
"file": "03242.lua",
"line": 42,
"kinds": [
"interaction"
],
"text": "CallSpeakLua( TargetID(), OwnerID(), \"LuaS_DungeonQueueNPC\" )"
},
{
"file": "03242.lua",
"line": 46,
"kinds": [
"interaction"
],
"text": "SetSpeakDetail( OwnerID(), \"I can take you to the Forsaken Abbey.\" )"
},
{
"file": "03242.lua",
"line": 47,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Enter the dungeon\", \"DQ_ShowGroupSelect\", 0 )"
},
{
"file": "03242.lua",
"line": 48,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Boss Rush (Solo Lv1)\", \"DQ_EnterBossRush\", 0 )"
},
{
"file": "03242.lua",
"line": 49,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Nevermind\", \"DQ_Cancel\", 0 )"
},
{
"file": "03242.lua",
"line": 60,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 67,
"kinds": [
"timer"
],
"text": "sleep( 5 )"
},
{
"file": "03242.lua",
"line": 76,
"kinds": [
"interaction"
],
"text": "SetSpeakDetail( OwnerID(),"
},
{
"file": "03242.lua",
"line": 81,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Solo (1 player)\", \"DQ_PickSolo\", 0 )"
},
{
"file": "03242.lua",
"line": 82,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Duo (2 players)\", \"DQ_PickDuo\", 0 )"
},
{
"file": "03242.lua",
"line": 83,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Party (6 players)\", \"DQ_PickParty\", 0 )"
},
{
"file": "03242.lua",
"line": 84,
"kinds": [
"summon",
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Back\", \"LuaS_DungeonQueueNPC\", 0 )"
},
{
"file": "03242.lua",
"line": 106,
"kinds": [
"interaction"
],
"text": "SetSpeakDetail( OwnerID(), \"Choose a level bracket:\" )"
},
{
"file": "03242.lua",
"line": 107,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Level 1\", \"DQ_PickLv1\", 0 )"
},
{
"file": "03242.lua",
"line": 108,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Level 5\", \"DQ_PickLv5\", 0 )"
},
{
"file": "03242.lua",
"line": 109,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Level 10\", \"DQ_PickLv10\", 0 )"
},
{
"file": "03242.lua",
"line": 110,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Level 20\", \"DQ_PickLv20\", 0 )"
},
{
"file": "03242.lua",
"line": 111,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Level 30\", \"DQ_PickLv30\", 0 )"
},
{
"file": "03242.lua",
"line": 112,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Level 40\", \"DQ_PickLv40\", 0 )"
},
{
"file": "03242.lua",
"line": 113,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Level 50\", \"DQ_PickLv50\", 0 )"
},
{
"file": "03242.lua",
"line": 114,
"kinds": [
"interaction"
],
"text": "AddSpeakOption( OwnerID(), TargetID(), \"Back\", \"DQ_ShowGroupSelect\", 0 )"
},
{
"file": "03242.lua",
"line": 119,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 125,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 131,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 137,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 143,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 149,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 155,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "03242.lua",
"line": 169,
"kinds": [
"timer"
],
"text": "sleep( 5 )"
},
{
"file": "03242.lua",
"line": 174,
"kinds": [
"interaction"
],
"text": "CloseSpeak( OwnerID() )"
},
{
"file": "00571.lua",
"line": 1,
"kinds": [
"spell"
],
"text": "function LuaP_CastBersark()"
},
{
"file": "00571.lua",
"line": 2,
"kinds": [
"movement"
],
"text": "MoveToFlagEnabled( OwnerID(), false );"
},
{
"file": "00571.lua",
"line": 3,
"kinds": [
"timer"
],
"text": "sleep( 30 )"
},
{
"file": "00571.lua",
"line": 4,
"kinds": [
"spell"
],
"text": "CastSpell( OwnerID() , OwnerID() , 491028 )"
},
{
"file": "00571.lua",
"line": 5,
"kinds": [
"timer"
],
"text": "sleep( 10 )"
},
{
"file": "00571.lua",
"line": 6,
"kinds": [
"movement"
],
"text": "MoveToFlagEnabled( OwnerID(), true );"
},
{
"file": "00571.lua",
"line": 18,
"kinds": [
"timer"
],
"text": "sleep(20)"
},
{
"file": "00571.lua",
"line": 32,
"kinds": [
"timer"
],
"text": "sleep(20)"
},
{
"file": "00571.lua",
"line": 46,
"kinds": [
"timer"
],
"text": "sleep(20)"
},
{
"file": "00571.lua",
"line": 60,
"kinds": [
"movement"
],
"text": "DW_MoveToFlag( OwnerID(), Flag , FlagNum , 10,1 )"
},
{
"file": "00571.lua",
"line": 74,
"kinds": [
"movement"
],
"text": "DW_MoveToFlag( OwnerID(), Flag , FlagNum , 10,1 )"
},
{
"file": "00571.lua",
"line": 118,
"kinds": [
"summon"
],
"text": "ObjMatrix[1] = LuaFunc_CreateNPCByMatrix(mobs.ghoul, Matrix,1,-1)"
},
{
"file": "00571.lua",
"line": 119,
"kinds": [
"summon"
],
"text": "ObjMatrix[2] = LuaFunc_CreateNPCByMatrix(mobs.spider,Matrix,1,1)"
},
{
"file": "00571.lua",
"line": 123,
"kinds": [
"timer"
],
"text": "sleep(20)"
},
{
"file": "00383.lua",
"line": 1,
"kinds": [
"door"
],
"text": "function LuaI_B3Door_Zone2A_0() --�]�w������l�@���A�P�ɭ��m�����ܼ�"
},
{
"file": "00383.lua",
"line": 4,
"kinds": [
"door"
],
"text": "Ver_Zone100_B3_Door[RoomID] = {}"
},
{
"file": "00383.lua",
"line": 5,
"kinds": [
"door"
],
"text": "Ver_Zone100_B3_Door[RoomID][\"Door\"] = OwnerID() --�ǻ��ۤv��ID"
},
{
"file": "00383.lua",
"line": 6,
"kinds": [
"door",
"phase"
],
"text": "Ver_Zone100_B3_Door[RoomID][\"State\"] = 0 --�N�ˬd�Ϊ��ܼ��k�s"
},
{
"file": "00383.lua",
"line": 11,
"kinds": [
"death"
],
"text": "SetPlot( OwnerID() ,\"dead\" , \"LuaI_B2Keeper_Dead\" , 40 )"
},
{
"file": "00383.lua",
"line": 14,
"kinds": [
"death"
],
"text": "function LuaI_B2Keeper_Dead() --���w�k�v�b���`�ɷ|�ˬd��L���w�k�v���F�X�ӡA���F�|��(�[�ۤv)�NIJ�o�۳�����J"
},
{
"file": "00383.lua",
"line": 17,
"kinds": [
"door"
],
"text": "local Door = Ver_Zone100_B3_Door[RoomID][\"Door\"]"
},
{
"file": "00383.lua",
"line": 18,
"kinds": [
"door",
"phase"
],
"text": "local Check = Ver_Zone100_B3_Door[RoomID][\"State\"]"
},
{
"file": "00383.lua",
"line": 20,
"kinds": [
"door",
"phase"
],
"text": "Ver_Zone100_B3_Door[RoomID][\"State\"] = Check"
},
{
"file": "00383.lua",
"line": 23,
"kinds": [
"door",
"phase"
],
"text": "Ver_Zone100_B3_Door[RoomID][\"State\"] = Check"
},
{
"file": "00383.lua",
"line": 30,
"kinds": [
"door"
],
"text": "BeginPlot( Door , \"LuaI_B3Door_Zone2A_1\" , 0 )"
},
{
"file": "00383.lua",
"line": 48,
"kinds": [
"door"
],
"text": "function LuaI_B3Door_Zone2A_1() --���ͷ����J���@��"
},
{
"file": "00383.lua",
"line": 55,
"kinds": [
"death"
],
"text": "SetPlot( Tollker , \"dead\" , \"LuaI_B2BOSS_Dead\" , 40 ) -- �]�w���`�@��"
},
{
"file": "00383.lua",
"line": 57,
"kinds": [
"spell"
],
"text": "CastSpell( Tollker , Tollker , 490101 )"
},
{
"file": "00383.lua",
"line": 62,
"kinds": [
"death"
],
"text": "function LuaI_B2BOSS_Dead() --�����J�����ɭԶ}�Ҫ�"
},
{
"file": "00383.lua",
"line": 68,
"kinds": [
"door"
],
"text": "local Door = Ver_Zone100_B3_Door[RoomID][\"Door\"]"
},
{
"file": "00383.lua",
"line": 69,
"kinds": [
"door",
"timer"
],
"text": "BeginPlot( Door , \"LuaI_B3Door_Zone2A_2\" , 0 ) -- �]���}�Ұʧ@�ݭnSleep�A�����b���`�@���A�G�ΩI�s��"
},
{
"file": "00383.lua",
"line": 73,
"kinds": [
"door"
],
"text": "function LuaI_B3Door_Zone2A_2() --��������}�Ҫ��ʧ@"
},
{
"file": "00383.lua",
"line": 74,
"kinds": [
"phase"
],
"text": "PlayMotionEX( OwnerID(), ruFUSION_ACTORSTATE_ACTIVATE_BEGIN,ruFUSION_ACTORSTATE_ACTIVATE_LOOP )"
},
{
"file": "00383.lua",
"line": 75,
"kinds": [
"timer"
],
"text": "sleep( 40 )"
}
],
"templateCandidates": [
{
"templateId": 100070,
"name": "Necromage",
"classification": "boss",
"spawnCount": 4,
"autoPlots": [
"LuaI_100_B2Keeper"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100071,
"name": "Zombie",
"classification": "combat",
"spawnCount": 35,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100072,
"name": "Ghoul",
"classification": "combat",
"spawnCount": 20,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100074,
"name": "Demon Witch Ancalon",
"classification": "boss",
"spawnCount": 1,
"autoPlots": [
"AI_ANKARIA"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100104,
"name": "Carrion Spider",
"classification": "combat",
"spawnCount": 12,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100109,
"name": "Obsessive Shadow",
"classification": "combat",
"spawnCount": 29,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100194,
"name": "Ooze",
"classification": "combat",
"spawnCount": 9,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100198,
"name": "Ooze",
"classification": "combat",
"spawnCount": 8,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100202,
"name": "Zombie",
"classification": "combat",
"spawnCount": 1,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100392,
"name": "Dark Nightsound Bat",
"classification": "combat",
"spawnCount": 14,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100393,
"name": "Carrion Spider",
"classification": "combat",
"spawnCount": 11,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100561,
"name": "Flowing Chaos",
"classification": "boss",
"spawnCount": 1,
"autoPlots": [
"LuaI_100_BOSS1"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100562,
"name": "Cruel Eater",
"classification": "boss",
"spawnCount": 1,
"autoPlots": [
"LuaI_100_BOSS2"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100563,
"name": "Hollow Shell",
"classification": "boss",
"spawnCount": 1,
"autoPlots": [
"LuaI_100_BOSS3"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100567,
"name": "Treasure Chest",
"classification": "deferred-object",
"spawnCount": 2,
"autoPlots": [
"Zone100_Treasure_Init"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 100614,
"name": "Follower",
"classification": "combat",
"spawnCount": 3,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110201,
"name": "Document Pile",
"classification": "deferred-object",
"spawnCount": 1,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110202,
"name": "Chris",
"classification": "deferred-object",
"spawnCount": 1,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110206,
"name": "Spirit Binding Pearl",
"classification": "deferred-object",
"spawnCount": 1,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110208,
"name": "Luanne",
"classification": "deferred-object",
"spawnCount": 1,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110209,
"name": "Zombie Junk",
"classification": "deferred-object",
"spawnCount": 11,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110426,
"name": "Follower Script Trigger",
"classification": "deferred-object",
"spawnCount": 3,
"autoPlots": [
"LuaI_Follow_A",
"LuaI_Follow_B",
"LuaI_Follow_C"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110478,
"name": "Boss Door Trigger",
"classification": "deferred-object",
"spawnCount": 1,
"autoPlots": [
"LuaI_B3Door_Zone2A_0"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110562,
"name": "Sealed Door",
"classification": "deferred-object",
"spawnCount": 1,
"autoPlots": [
"LuaI_BossDoor_Zone2A"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 110578,
"name": "Transport Trigger",
"classification": "deferred-object",
"spawnCount": 2,
"autoPlots": [
"LuaI_TransPort_Zone2A"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 112799,
"name": "Ancient Fossil",
"classification": "deferred-object",
"spawnCount": 7,
"autoPlots": [
"Lua_Haoplaymusic_00"
],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 780014,
"name": "Scripted Prop 780014",
"classification": "deferred-object",
"spawnCount": 17,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 780022,
"name": "Scripted Prop 780022",
"classification": "deferred-object",
"spawnCount": 3,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 780067,
"name": "Scripted Prop 780067",
"classification": "deferred-object",
"spawnCount": 14,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 780068,
"name": "Scripted Prop 780068",
"classification": "deferred-object",
"spawnCount": 17,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
},
{
"templateId": 780069,
"name": "Scripted Prop 780069",
"classification": "deferred-object",
"spawnCount": 19,
"autoPlots": [],
"plotClassNames": [],
"templateScripts": [],
"spells": []
}
],
"categories": {
"summon": 3,
"door": 15,
"timer": 10,
"movement": 4,
"spell": 3,
"death": 4,
"phase": 5,
"interaction": 28,
"loot": 1
},
"reviewQueue": [
"Map authoritative spell ids/scripts to HealerMan EnemyAttackDefinition data.",
"Implement and test doors/gates as encounter state, not static combat entities.",
"Map summons and waves only after identifying their trigger, lifetime, and reset rules.",
"Convert patrol/AutoPlot routes to navmesh-projected paths.",
"Separate interactables/loot from combat population and define offline state transitions.",
"Add encounter-specific tests and a browser playtest before marking mechanics green."
],
"safety": {
"executableMechanicsGenerated": false,
"reason": "Lua/AutoPlot syntax is audited as evidence; ambiguous behavior is never silently guessed.",
"runtimeSqlDependency": false
}
}