Chubblot

CRIME DATA COMPANIONS

Oct 25th, 2020
1,271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.09 KB | None | 0 0
  1. COMPANIONS VIA CRIME HANDLING DATA
  2.  
  3. Version 1
  4. SubGoalCombiner SGC_AND
  5. INITSECTION
  6. DB_ReactOutOfRegion((TAG)REALLY_ASTARION_ffd08582-7396-4cac-bcd4-8f9cd0fd8ef3);
  7. DB_ReactOutOfRegion((TAG)REALLY_HELIA_4ce6ddd6-0d46-436f-91ce-86dfe7e58156);
  8. DB_ReactOutOfRegion((TAG)REALLY_LAEZEL_b5682d1d-c395-489c-9675-1f9b0c328ea5);
  9. DB_ReactOutOfRegion((TAG)REALLY_MINSC_2cff7db0-ae50-4267-82ea-84e961d3e3fa);
  10. DB_ReactOutOfRegion((TAG)REALLY_SHADOWHEART_642d2aee-e3df-47e3-9f47-bbcd441bb9e0);
  11. DB_ReactOutOfRegion((TAG)REALLY_GALE_9b0354c0-56d9-4723-8034-918ac9abab19);
  12. DB_ReactOutOfRegion((TAG)AGGRESSIVEBEAST_1ed04fb5-e654-4dbf-893c-a795952e77e1);
  13. DB_ReactOutOfRegion((TAG)REALLY_WYLL_5f40def5-d3ec-4698-a367-01a339888956);
  14. KBSECTION
  15. IF
  16. DB_RegionPrison(_RegionName,(TRIGGER)_PrisonTrigger)
  17. THEN
  18. PROC_TriggerRegisterForPlayers(_PrisonTrigger);
  19.  
  20. QRY
  21. QRY_NPCIsGuard((GUIDSTRING)_NPC)
  22. AND
  23. IsTagged(_Npc,(TAG)GUARD_0b52f35e-fb1f-4865-bcd2-5d21ef7343cd,1)
  24. THEN
  25. DB_Noop(1);
  26.  
  27. //REGION Start Arrest
  28. //Wait for dialog to end to arrest Player // Needs to be removed
  29. IF
  30. FlagSet(Start_Arrest_AfterDialog_efeec3fb-6e2f-41f1-298a-3246c43deb6a, (CHARACTER)_Character, _ID) // flagType: Object
  31. THEN
  32. ClearFlag((FLAG)Start_Arrest_AfterDialog_efeec3fb-6e2f-41f1-298a-3246c43deb6a, _Character, 0); // flagType: Object
  33. DB_ArrestAfterDialog(_Character,_ID);
  34.  
  35.  
  36. ///////// Handle Evidence ////////////
  37. IF
  38. FlagSet(Allow_Arrest_2677bf25-03f3-6323-c72a-0ca61fe5ad01, (CHARACTER)_Player, _ID) // flagType: Object
  39. THEN
  40. DB_ArrestDialog(_Player,_ID);
  41.  
  42. IF
  43. DialogEnded(_,_ID)
  44. AND
  45. DB_ArrestDialog(_Player,_ID)
  46. AND
  47. DB_DialogNPCs(_ID,_NPC,1)
  48. AND
  49. GetFlag((FLAG)CRIME_FoundEvidenceCurrentCrime_65040012-add4-05f8-0924-9d2e27c3e7ed, (CHARACTER)_NPC, 1) // flagType: Object
  50. AND
  51. DB_Interrogation(_NPC,_CrimeID)
  52. THEN
  53. PROC_CrimeHandleEvidence(_Player,_NPC,_CrimeID);
  54.  
  55. PROC
  56. PROC_CrimeHandleEvidence((CHARACTER)_Player,(CHARACTER)_Arrester,(INTEGER)_CrimeID)
  57. AND
  58. CharacterGetCrimeRegion(_Player,_CrimeRegionID)
  59. AND
  60. DB_RegionPrison(_CrimeRegionID,_PrisonTrigger)
  61. AND
  62. DB_PrisonEvidenceChest((TRIGGER)_PrisonTrigger,(ITEM)_EvidenceChest)
  63. THEN
  64. CrimeTransferEvidenceTo(_CrimeID,_EvidenceChest);
  65.  
  66. PROC
  67. PROC_CrimeHandleEvidence((CHARACTER)_Player,(CHARACTER)_Arrester,(INTEGER)_CrimeID)
  68. AND
  69. CharacterGetCrimeRegion(_Player,_CrimeRegionID)
  70. AND
  71. DB_RegionPrison(_CrimeRegionID,_PrisonTrigger)
  72. AND
  73. NOT DB_PrisonEvidenceChest((TRIGGER)_PrisonTrigger,_)
  74. THEN
  75. CrimeTransferEvidenceTo(_CrimeID,_Arrester);
  76.  
  77.  
  78. ///////// Start Arrest ////////////
  79. IF
  80. DialogEnded(_,_ID)
  81. AND
  82. DB_ArrestAfterDialog(_Character,_ID)
  83. THEN
  84. NOT DB_ArrestAfterDialog(_Character,_ID);
  85. PROC_CrimeStartArrest((CHARACTER)_Character,_ID);
  86.  
  87. PROC
  88. PROC_CrimeStartArrest((CHARACTER)_Character,(INTEGER)_ID)
  89. AND
  90. CharacterGetCrimeRegion(_Character,_CrimeRegion)
  91. THEN
  92. PROC_CrimeDoPerformArrest(_ID,_CrimeRegion);
  93.  
  94. PROC
  95. PROC_CrimeDoPerformArrest((INTEGER)_Inst,(STRING)_Region)
  96. AND
  97. DB_DialogNPCs(_Inst,_Player,_)
  98. AND
  99. IsPartyMember((CHARACTER)_Player,0,1)
  100. THEN
  101. PROC_CrimePerformArrest(_Player,_Region);
  102.  
  103. PROC
  104. PROC_CrimeDoPerformArrest((INTEGER)_Inst,(STRING)_Region)
  105. AND
  106. DB_DialogPlayers(_Inst,_Player,_)
  107. AND
  108. IsPartyMember((CHARACTER)_Player,0,1)
  109. THEN
  110. PROC_CrimePerformArrest(_Player,_Region);
  111.  
  112. PROC
  113. PROC_CrimePerformArrest((CHARACTER)_Character,(STRING)_CrimeRegionID)
  114. AND
  115. DB_RegionPrison(_CrimeRegionID,_PrisonTrigger)
  116. THEN
  117. PROC_CrimeTeleportCharacterToPrison(_Character,_PrisonTrigger);
  118.  
  119. PROC //--- can be used outside of the Crime System
  120. PROC_CrimeTeleportCharacterToPrison((CHARACTER)_Character,(TRIGGER)_PrisonTrigger)
  121. THEN
  122. SetFlag((FLAG)IsInPrison_c9b75b21-6eba-065e-7680-fc9a0c5838e4, _Character); // flagType: Object
  123. RemoveStatus(_Character,"GB_FUGITIVE");
  124. DetachFromPartyGroup(_Character);
  125. PROC_TeleportSmoke(_Character);
  126. TeleportTo(_Character,_PrisonTrigger,"",0);
  127. PROC_TeleportSmoke(_Character);
  128. DB_IsArrested(_Character);
  129. FlushOsirisQueue(_Character);
  130. LeaveCombat(_Character);
  131.  
  132. PROC
  133. PROC_CrimeTeleportCharacterToPrison((CHARACTER)_Character,(TRIGGER)_PrisonTrigger)
  134. AND
  135. DB_PrisonChest((TRIGGER)_PrisonTrigger,(ITEM)_PrisonChest)
  136. THEN
  137. MoveAllItemsTo(_Character,_PrisonChest,0,1,1);
  138.  
  139. //END_REGION
  140.  
  141. //REGION Arrest dialog starting
  142.  
  143. IF
  144. CharacterOnCrimeSensibleActionNotification(_Arrester,_CrimeRegion,_CrimeID,"CRIME_OsirisArrest",_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_)
  145. AND
  146. CrimeGetType(_CrimeID,_CrimeName)
  147. THEN
  148. PROC_CRIME_OsirisArrest(_Arrester,_CrimeRegion,_CrimeID,_CrimeName,_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4);
  149.  
  150. // Temporary because Osiris event arrives before Anubis
  151. PROC
  152. PROC_CRIME_OsirisArrest((CHARACTER)_Arrester,(STRING)_CrimeRegion,(INTEGER)_CrimeID,(STRING)_CrimeName,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  153. AND
  154. GUIDToString(_ArrestDialog, _ArrestDialogString)
  155. THEN
  156. SetVarObject(_Arrester,"Criminal1",_Criminal1);
  157. SetVarObject(_Arrester,"Criminal2",_Criminal2);
  158. SetVarObject(_Arrester,"Criminal3",_Criminal3);
  159. SetVarObject(_Arrester,"Criminal4",_Criminal4);
  160. SetVarFixedString(_Arrester,"ArrestDialog",_ArrestDialogString);
  161.  
  162. PROC
  163. PROC_CRIME_OsirisArrest((CHARACTER)_Arrester,(STRING)_CrimeRegion,(INTEGER)_CrimeID,(STRING)_CrimeName,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  164. THEN
  165. PROC_StartArrestDialog(_Arrester);
  166.  
  167.  
  168. IF
  169. EntityEvent(_Arrester,"ArrestOnRequest")
  170. AND
  171. GetHandlingCrimeID((CHARACTER)_Arrester,_CrimeID)
  172. AND
  173. GUIDToString(GEB_Arrest_fabc5060-4331-61ef-a99e-f836fbed25bc, _ArrestDialogString)
  174. THEN
  175. SetVarFixedString(_Arrester,"ArrestDialog",_ArrestDialogString);
  176. PROC_StartArrest((CHARACTER)_Arrester,(INTEGER)_CrimeID);
  177.  
  178. IF
  179. EntityEvent((CHARACTER)_Arrester,"ArrestOnRequest")
  180. AND
  181. DB_Arresting(_Arrester,_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,_ArrestDialog)
  182. THEN
  183. CharacterMoveToAndTalk(_Arrester,_Criminal1,NULL_00000000-0000-0000-0000-000000000000,"GEB_ArrestMove","Run",30.0);
  184.  
  185. IF
  186. EntityEvent((CHARACTER)_Arrester, "CRIME_Perform_Arrest")
  187. AND
  188. GetHandlingCrimeID(_Arrester,_CrimeID)
  189. THEN
  190. PROC_StartArrest(_Arrester,_CrimeID);
  191.  
  192. PROC
  193. PROC_StartArrest((CHARACTER)_Arrester,(INTEGER)_CrimeID)
  194. AND
  195. GetVarObject(_Arrester,"Criminal1",_Criminal1)
  196. AND
  197. GetVarObject(_Arrester,"Criminal2",_Criminal2)
  198. AND
  199. GetVarObject(_Arrester,"Criminal3",_Criminal3)
  200. AND
  201. GetVarObject(_Arrester,"Criminal4",_Criminal4)
  202. AND
  203. GetVarFixedStringUUID(_Arrester,"ArrestDialog",_ArrestDialog)
  204. THEN
  205. DB_Arresting(_Arrester,_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,(DIALOGRESOURCE)_ArrestDialog);
  206. SetHasDialog(_Arrester,0);
  207. BlockNewCrimeReactions(_Arrester,1);
  208. PROC_ForceStopDialog(_Arrester);
  209. FireOsirisEvents();
  210.  
  211.  
  212. IF
  213. DialogEnded(_,_Instance)
  214. AND
  215. DB_DialogPlayers(_Instance,_Criminal,1)
  216. AND
  217. DB_Arresting(_Arrester,_CrimeID,(CHARACTER)_Criminal,_,_,_,_ArrestDialog)
  218. THEN
  219. CharacterMoveToAndTalk(_Arrester,_Criminal,NULL_00000000-0000-0000-0000-000000000000,"GEB_ArrestMove","Run",10.0);
  220.  
  221. PROC
  222. PROC_StartArrest((CHARACTER)_Arrester,(INTEGER)_CrimeID)
  223. AND
  224. NOT DB_Arresting(_Arrester,_CrimeID,_,_,_,_,_)
  225. THEN
  226. CrimeConfrontationDone(_CrimeID,_Arrester);
  227.  
  228. PROC
  229. PROC_CleanupArrest((CHARACTER)_Arrester)
  230. AND
  231. DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
  232. THEN
  233. PROC_CRIME_RestoreWeaponUnsheathed(_Arrester,_CrimeID);
  234. BlockNewCrimeReactions(_Arrester,0);
  235. SetHasDialog(_Arrester,1);
  236. NOT DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog);
  237. SetEntityEvent(_Arrester,"CRIME_StartArrest");
  238.  
  239. IF
  240. CharacterMoveToAndTalkRequestDialog(_Arrester,(CHARACTER)_Criminal,_,"GEB_ArrestMove")
  241. AND
  242. DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
  243. THEN
  244. SetEntityEvent(_Arrester,"CRIME_StartArrest");
  245. PROC_StartArrestDialog(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog);
  246.  
  247. IF
  248. CharacterMoveToAndTalkFailed(_Arrester,_,"GEB_ArrestMove", _)
  249. AND
  250. DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
  251. THEN
  252. CrimeConfrontationDone(_CrimeID,_Arrester);
  253. PROC_CleanupArrest(_Arrester);
  254.  
  255. IF
  256. DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
  257. AND
  258. DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
  259. THEN
  260. CharacterMoveToAndTalkFail(_Arrester,_Criminal,"GEB_ArrestMove","FailedToInterruptStoryDialogs");
  261.  
  262. IF
  263. FlagSet((FLAG)_ActiveFlag, (CHARACTER)_Arrester, _) // flagType: Object
  264. AND
  265. DB_CrimeDialogFlags(_CrimeName,(FLAG)_ActiveFlag)
  266. AND
  267. DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
  268. THEN
  269. PROC_CleanupArrest(_Arrester);
  270.  
  271. IF
  272. EnteredCombat((CHARACTER)_Arrester,_)
  273. AND
  274. DB_Arresting(_Arrester,_,_,_,_,_,_)
  275. THEN
  276. PROC_CleanupArrest(_Arrester);
  277.  
  278.  
  279. //--- StartArrestDialog
  280. QRY
  281. QRY_CrimeGetCustomArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  282. AND
  283. QRY_CrimeGetCustomArrestDialogCustom(_Arrester,_CrimeID,_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4)
  284. THEN
  285. DB_NOOP(1); //Fill this DB to replace the ArrestDialog: DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_CustomArrestDialog)
  286.  
  287. QRY
  288. QRY_CrimeGetCustomArrestDialogCustom((CHARACTER)_Arrester,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  289. AND
  290. 1 == 0
  291. THEN
  292. DB_NOOP(1);
  293.  
  294.  
  295. QRY
  296. QRY_CrimeGetCustomArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  297. AND
  298. NOT DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_)
  299. THEN
  300. DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_ArrestDialog);
  301.  
  302. PROC
  303. PROC_StartArrestDialog((CHARACTER)_Arrester)
  304. AND
  305. GetVarObject(_Arrester,"Criminal1",(CHARACTER)_Criminal1)
  306. AND
  307. GetVarObject(_Arrester,"Criminal2",(CHARACTER)_Criminal2)
  308. AND
  309. GetVarObject(_Arrester,"Criminal3",(CHARACTER)_Criminal3)
  310. AND
  311. GetVarObject(_Arrester,"Criminal4",(CHARACTER)_Criminal4)
  312. AND
  313. GetHandlingCrimeID(_Arrester,_CrimeID)
  314. AND
  315. GetVarFixedStringUUID(_Arrester,"ArrestDialog",_ArrestDialog)
  316. AND
  317. QRY_CrimeGetCustomArrestDialog(_Arrester,_CrimeID,(DIALOGRESOURCE)_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4)
  318. AND
  319. DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_NewArrestDialog)
  320. AND
  321. GUIDToString(_NewArrestDialog, _NewArrestDialogString)
  322. THEN
  323. NOT DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,(DIALOGRESOURCE)_NewArrestDialog);
  324. SetVarFixedString(_Arrester,"ArrestDialog",_NewArrestDialogString);
  325. PROC_StartArrestDialog(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,(DIALOGRESOURCE)_NewArrestDialog);
  326.  
  327. PROC
  328. PROC_StartArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,(DIALOGRESOURCE)_ArrestDialog)
  329. THEN
  330. ClearFlag((FLAG)GEB_Arrest_HavePrison_602741c9-b5be-6479-f456-4781383551ff, _Arrester, 0); // flagType: Object
  331.  
  332. //--- Setup the Arrester's script
  333. PROC
  334. PROC_StartArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,(DIALOGRESOURCE)_ArrestDialog)
  335. AND
  336. CharacterGetCrimeRegion(_Criminal1, _RegionID)
  337. AND
  338. CrimeGetType(_CrimeID,_CrimeType)
  339. THEN
  340. PROC_CrimeSetupCountFlag(_CrimeID,_Arrester,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_CrimeType,_ArrestDialog);
  341. PROC_CrimeStartRegionArrestInterrogation(_RegionID,_CrimeID,_ArrestDialog,_Arrester,_Criminal1,_Criminal2,_Criminal3,_Criminal4);
  342.  
  343. PROC
  344. PROC_CheckStartArrestInterrogation((INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  345. AND
  346. NOT DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
  347. THEN
  348. PROC_CrimeStartArrestInterrogation(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4,1);
  349.  
  350. PROC
  351. PROC_CheckStartArrestInterrogation((INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  352. AND
  353. DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
  354. THEN
  355. PROC_CrimeStartArrestInterrogation(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4,0);
  356. NOT DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  357.  
  358. PROC
  359. PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  360. AND
  361. DB_RegionPrison(_RegionID,_)
  362. THEN
  363. SetFlag((FLAG)GEB_Arrest_HavePrison_602741c9-b5be-6479-f456-4781383551ff, _Arrester); // flagType: Object
  364.  
  365. PROC
  366. PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  367. AND
  368. _RegionID != ""
  369. AND
  370. DialogIsAutomated(_ArrestDialog, 1)
  371. THEN
  372. DebugBreak("Arrest dialog is automated, is assumed to be interactive!");
  373.  
  374. PROC
  375. PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  376. AND
  377. _RegionID != ""
  378. THEN
  379. PROC_CrimeInterruptStoryDialogs(_CrimeID,_ArrestDialog,1,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  380. PROC_CheckStartArrestInterrogation(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  381.  
  382. PROC
  383. PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  384. AND
  385. _RegionID == ""
  386. AND
  387. DB_ReactOutOfRegion(_Tag)
  388. AND
  389. IsTagged(_Arrester,_Tag,1)
  390. AND
  391. NOT DB_ReactingCharOutOfRegion(_Arrester,_)
  392. THEN
  393. PROC_CrimeInterruptStoryDialogs(_CrimeID,_ArrestDialog,1,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  394. PROC_CheckStartArrestInterrogation(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  395. DB_ReactingCharOutOfRegion(_Arrester,_Tag);
  396.  
  397.  
  398. // We change crime dialog in the next section, so replace it in the DB which is used to clean some stuff on crime end
  399. PROC
  400. PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  401. AND
  402. _RegionID == ""
  403. AND
  404. NOT DB_ReactingCharOutOfRegion(_Arrester,_)
  405. THEN
  406. PROC_CrimeStartRegionArrestInterrogation_SubActions(_RegionID,_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  407.  
  408. PROC
  409. PROC_CrimeStartRegionArrestInterrogation_SubActions((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  410. AND
  411. DB_Crime_RequestedDialogWithTension(_CrimeName,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
  412. THEN
  413. NOT DB_Crime_RequestedDialogWithTension(_CrimeName,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  414. DB_Crime_RequestedDialogWithTension(_CrimeName,GEB_Attack_80d78319-8d61-53c6-053c-c40b8657892f,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  415.  
  416. PROC
  417. PROC_CrimeStartRegionArrestInterrogation_SubActions((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  418. THEN
  419. PROC_CrimeInterruptStoryDialogs(_CrimeID,GEB_Attack_80d78319-8d61-53c6-053c-c40b8657892f,1,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  420. PROC_CheckStartArrestInterrogation(_CrimeID,GEB_Attack_80d78319-8d61-53c6-053c-c40b8657892f,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  421.  
  422. PROC
  423. PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
  424. AND
  425. DB_ReactingCharOutOfRegion(_Arrester,_Tag)
  426. THEN
  427. NOT DB_ReactingCharOutOfRegion(_Arrester,_Tag);
  428.  
  429. PROC
  430. PROC_CrimeStartArrestInterrogation((INTEGER)_CrimeID,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,_)
  431. AND
  432. DB_EvidenceFound(_CrimeID,_Interrogator)
  433. AND
  434. DB_Crime_CallingGuards(_Interrogator,_Criminal,_ID)
  435. THEN
  436. NOT DB_Crime_CallingGuards(_Interrogator,_Criminal,_ID);
  437. NOT DB_EvidenceFound(_CrimeID,_Interrogator);
  438. DB_EvidenceFound(_CrimeID,_Arrester);
  439.  
  440. PROC
  441. PROC_CrimeStartArrestInterrogation((INTEGER)_CrimeID,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,1)
  442. AND
  443. DB_EvidenceFound(_CrimeID,_Interrogator)
  444. AND
  445. DB_Crime_CallingGuards(_Interrogator,_Criminal,_ID)
  446. THEN
  447. DB_StopInterrogationAfterDialog(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  448.  
  449. PROC
  450. PROC_CrimeStartArrestInterrogation((INTEGER)_CrimeID,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,0)
  451. AND
  452. DB_Crime_Interrogation(_CrimeID,_,_,_,_,_,_)
  453. THEN
  454. PROC_StopInterrogation(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  455.  
  456. IF
  457. DialogEnded(_,_Instance)
  458. AND
  459. DB_ArrestDialog(_Player,_Instance)
  460. THEN
  461. ClearFlag((FLAG)Allow_Arrest_2677bf25-03f3-6323-c72a-0ca61fe5ad01, _Player, 0); // flagType: Object
  462. NOT DB_ArrestDialog(_Player,_Instance);
  463. PROC_CrimeStartArrest((CHARACTER)_Player,_Instance);
  464.  
  465. IF
  466. DialogEnded(_,_Instance)
  467. AND
  468. DB_DialogNPCs(_Instance,_NPC,1)
  469. AND
  470. DB_StopInterrogationAfterDialog(_CrimeID,(CHARACTER)_NPC,_Criminal,_Criminal2,_Criminal3,_Criminal4)
  471. THEN
  472. PROC_StopInterrogation(_CrimeID,_NPC,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  473. NOT DB_StopInterrogationAfterDialog(_CrimeID,_NPC,_Criminal,_Criminal2,_Criminal3,_Criminal4);
  474.  
  475. // TODO Remove the DB_ReactingCharOutOfRegion(_Arrester,_Tag) On Tag Removed
  476. //END_REGION
  477.  
  478. //REGION Arrest Play As AD
  479. IF
  480. EntityEvent((CHARACTER)_Arrester,"GLO_PlayArrestAsAD")
  481. AND
  482. GetVarFixedStringUUID(_Arrester,"ArrestDialog",_ArrestDialog)
  483. THEN
  484. PROC_TryStartAD((DIALOGRESOURCE)_ArrestDialog,_Arrester);
  485. //END_REGION
  486.  
  487. //REGION Escape Prison
  488. IF
  489. EnteredTrigger(_Player,_PrisonTrigger)
  490. AND
  491. DB_IsArrested(_Player)
  492. AND
  493. DB_Players(_Player)
  494. AND
  495. DB_PlayerPrison_Door(_PrisonTrigger,(ITEM)_CellDoor,(STRING)_KeyName)
  496. THEN
  497. PROC_ItemCloseAndLock(_CellDoor,_KeyName);
  498.  
  499. IF
  500. LeftTrigger(_Player,_PrisonTrigger)
  501. AND
  502. DB_IsArrested(_Player)
  503. AND
  504. DB_Players(_Player)
  505. AND
  506. DB_PlayerPrison((TRIGGER)_PrisonTrigger,(TRIGGER)_CellDoorTrigger,(STRING)_PrisonCrimeName,(STRING)_PrisonCrimeNameAD)
  507. AND
  508. GetPosition(_CellDoorTrigger,_x,_y,_z)
  509. THEN
  510. //ProcRestoreGenericBehaviourAfterScene(_Player);
  511. PROC_CRIME_Prison_Escaped(_Player, _PrisonCrimeName, _PrisonCrimeNameAD);
  512.  
  513. PROC
  514. PROC_CRIME_Prison_Escaped((CHARACTER)_Player, (STRING)_PrisonCrimeName, (STRING)_PrisonCrimeNameAD)
  515. AND
  516. QRY_AnyRegionActive()
  517. THEN
  518. DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD);
  519. ApplyStatus(_Player,"GB_FUGITIVE",100.0,1);
  520.  
  521. PROC
  522. PROC_CRIME_Prison_Escaped((CHARACTER)_Player, (STRING)_PrisonCrimeName, (STRING)_PrisonCrimeNameAD)
  523. THEN
  524. ClearFlag((FLAG)IsInPrison_c9b75b21-6eba-065e-7680-fc9a0c5838e4, _Player, 0); // flagType: Object
  525. NOT DB_IsArrested(_Player);
  526.  
  527. IF
  528. StatusApplied(_Player,"GB_FUGITIVE",_)
  529. AND
  530. DB_Players((CHARACTER)_Player)
  531. AND
  532. DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD)
  533. THEN
  534. SetFlag((FLAG)IsFugitive_44f1d866-f5cc-474c-8d46-80e7c1a7f188, _Player); // flagType: Object // This is for Arrest_EscapedPrison Dialog
  535. PROC_CharacterRegisterCrime(_Player,_PrisonCrimeName,NULL_00000000-0000-0000-0000-000000000000,NULL_00000000-0000-0000-0000-000000000000,0);
  536.  
  537. IF
  538. StatusApplied(_Player,"GB_FUGITIVE",_)
  539. AND
  540. DB_Players((CHARACTER)_Player)
  541. AND
  542. DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD)
  543. AND
  544. _PrisonCrimeNameAD != ""
  545. THEN
  546. PROC_CharacterRegisterCrime(_Player,_PrisonCrimeNameAD,NULL_00000000-0000-0000-0000-000000000000,NULL_00000000-0000-0000-0000-000000000000,0);
  547.  
  548. IF
  549. StatusRemoved(_Player,"GB_FUGITIVE",_)
  550. AND
  551. DB_Players((CHARACTER)_Player)
  552. AND
  553. DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD)
  554. THEN
  555. NOT DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD);
  556. CharacterStopCrime(_Player,_PrisonCrimeName,NULL_00000000-0000-0000-0000-000000000000);
  557. CharacterStopCrime(_Player,_PrisonCrimeNameAD,NULL_00000000-0000-0000-0000-000000000000);
  558. ClearFlag((FLAG)IsFugitive_44f1d866-f5cc-474c-8d46-80e7c1a7f188, _Player, 0); // flagType: Object
  559.  
  560. IF
  561. FlagSet(GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, _) // flagType: Object //set in GEB_Arrest_EscapedPrison
  562. AND
  563. HasActiveStatus(_Player,"GB_FUGITIVE",1)
  564. THEN
  565. RemoveStatus(_Player,"GB_FUGITIVE");
  566.  
  567. IF
  568. FlagSet(GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, _ID) // flagType: Object //set in GEB_Arrest_EscapedPrison
  569. AND
  570. DB_DialogNPCs(_ID,_NPC,1)
  571. THEN
  572. PROC_CrimeBribedGuards(_NPC,_Player);
  573.  
  574. PROC
  575. PROC_CrimeBribedGuards((GUIDSTRING)_NPC,(GUIDSTRING)_Player)
  576. THEN
  577. CrimeIgnoreAllCrimesForCriminal(_Player,_NPC,300000);
  578. IgnoreCrimesInRadiusWithTagsForDuration((CHARACTER)_Player,20.0,"GUARD_0b52f35e-fb1f-4865-bcd2-5d21ef7343cd",300000);
  579.  
  580. IF
  581. FlagSet(GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, _) // flagType: Object //set in GEB_Arrest_EscapedPrison
  582. THEN
  583. ClearFlag((FLAG)GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, 0); // flagType: Object
  584.  
  585. //END_REGION
  586.  
  587. //REGION GUARD CALLING
  588. IF
  589. FlagSet(GEB_Arrest_Player_4434aa46-3370-47e8-8c3f-c9d9f9b7bce5, _NPC, _Inst) // flagType: Object
  590. AND
  591. DB_DialogNPCs(_Inst,_OldLead,1)
  592. THEN
  593. DB_CrimeArrestCallingGuards((CHARACTER)_OldLead,_Inst);
  594.  
  595. IF
  596. FlagSet(GEB_Arrest_Player_4434aa46-3370-47e8-8c3f-c9d9f9b7bce5, _NPC, _Inst) // flagType: Object
  597. AND
  598. DB_DialogNPCs(_Inst,_OldLead,1)
  599. AND
  600. NOT DB_Is_InCombat((CHARACTER)_NPC,_)
  601. AND
  602. NOT DB_PickedLeadToHelp(_,_Inst)
  603. AND
  604. GetHandlingCrimeID((CHARACTER)_OldLead,_CrimeID)
  605. AND
  606. CrimeTransferLeadershipTo((CHARACTER)_OldLead,_CrimeID,_NPC,1)
  607. AND
  608. GetVarObject(_OldLead,"Criminal1",_Criminal1)
  609. AND
  610. GetVarObject(_OldLead,"Criminal2",_Criminal2)
  611. AND
  612. GetVarObject(_OldLead,"Criminal3",_Criminal3)
  613. AND
  614. GetVarObject(_OldLead,"Criminal4",_Criminal4)
  615. AND
  616. GUIDToString(GEB_Arrest_fabc5060-4331-61ef-a99e-f836fbed25bc, _ArrestDialogString)
  617. THEN
  618. SetHasDialog(_OldLead,0);
  619. DB_GuardCaller(_CrimeID,_OldLead,_NPC);
  620. SetEntityEvent(_OldLead,"CRIME_Flee");
  621. DB_PickedLeadToHelp(_NPC,_Inst);
  622. PROC_CRIME_SetWeaponUnsheathed(_Npc,_CrimeID);
  623. SetVarObject(_NPC,"Criminal1",_Criminal1);
  624. SetVarObject(_NPC,"Criminal2",_Criminal2);
  625. SetVarObject(_NPC,"Criminal3",_Criminal3);
  626. SetVarObject(_NPC,"Criminal4",_Criminal4);
  627. SetVarFixedString(_NPC,"ArrestDialog",_ArrestDialogString);
  628. SetEntityEvent(_NPC,"CRIME_Perform_Arrest");
  629.  
  630. IF
  631. DialogEnded(_Dialog,_Inst)
  632. AND
  633. DB_CrimeArrestCallingGuards(_OldLead,_Inst)
  634. AND
  635. NOT DB_PickedLeadToHelp(_,_Inst)
  636. AND
  637. DB_DialogPlayers(_Inst,_Player,1)
  638. THEN
  639. NOT DB_CrimeArrestCallingGuards(_OldLead,_Inst);
  640. //failed to transfer leadership, start combat as fallback
  641. PROC_TryStartAD(GEB_AD_DealWithCrime_2a70dd9f-c256-a987-e4c7-05a629559fd6,_OldLead);
  642. PROC_SetRelationTemporaryHostile((CHARACTER)_Player,_OldLead);
  643.  
  644. IF
  645. DialogEnded(_Dialog,_Inst)
  646. AND
  647. DB_PickedLeadToHelp(_NPC,_Inst)
  648. AND
  649. DB_DialogNPCs(_Inst,_OldLead,1)
  650. THEN
  651. NOT DB_PickedLeadToHelp(_NPC,_Inst);
  652. NOT DB_CrimeArrestCallingGuards((CHARACTER)_OldLead,_Inst);
  653.  
  654. IF
  655. OnCrimeConfrontationDone(_CrimeID,_OldLead,_,_,_,_,_)
  656. AND
  657. DB_GuardCaller(_CrimeID,_OldLead,_NPC)
  658. THEN
  659. SetHasDialog(_OldLead,1);
  660. NOT DB_GuardCaller(_CrimeID,_OldLead,_NPC);
  661.  
  662.  
  663.  
  664. //END_REGION
  665. EXITSECTION
  666.  
  667. ENDEXITSECTION
  668.  
Advertisement
Add Comment
Please, Sign In to add comment