Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- COMPANIONS VIA CRIME HANDLING DATA
- Version 1
- SubGoalCombiner SGC_AND
- INITSECTION
- DB_ReactOutOfRegion((TAG)REALLY_ASTARION_ffd08582-7396-4cac-bcd4-8f9cd0fd8ef3);
- DB_ReactOutOfRegion((TAG)REALLY_HELIA_4ce6ddd6-0d46-436f-91ce-86dfe7e58156);
- DB_ReactOutOfRegion((TAG)REALLY_LAEZEL_b5682d1d-c395-489c-9675-1f9b0c328ea5);
- DB_ReactOutOfRegion((TAG)REALLY_MINSC_2cff7db0-ae50-4267-82ea-84e961d3e3fa);
- DB_ReactOutOfRegion((TAG)REALLY_SHADOWHEART_642d2aee-e3df-47e3-9f47-bbcd441bb9e0);
- DB_ReactOutOfRegion((TAG)REALLY_GALE_9b0354c0-56d9-4723-8034-918ac9abab19);
- DB_ReactOutOfRegion((TAG)AGGRESSIVEBEAST_1ed04fb5-e654-4dbf-893c-a795952e77e1);
- DB_ReactOutOfRegion((TAG)REALLY_WYLL_5f40def5-d3ec-4698-a367-01a339888956);
- KBSECTION
- IF
- DB_RegionPrison(_RegionName,(TRIGGER)_PrisonTrigger)
- THEN
- PROC_TriggerRegisterForPlayers(_PrisonTrigger);
- QRY
- QRY_NPCIsGuard((GUIDSTRING)_NPC)
- AND
- IsTagged(_Npc,(TAG)GUARD_0b52f35e-fb1f-4865-bcd2-5d21ef7343cd,1)
- THEN
- DB_Noop(1);
- //REGION Start Arrest
- //Wait for dialog to end to arrest Player // Needs to be removed
- IF
- FlagSet(Start_Arrest_AfterDialog_efeec3fb-6e2f-41f1-298a-3246c43deb6a, (CHARACTER)_Character, _ID) // flagType: Object
- THEN
- ClearFlag((FLAG)Start_Arrest_AfterDialog_efeec3fb-6e2f-41f1-298a-3246c43deb6a, _Character, 0); // flagType: Object
- DB_ArrestAfterDialog(_Character,_ID);
- ///////// Handle Evidence ////////////
- IF
- FlagSet(Allow_Arrest_2677bf25-03f3-6323-c72a-0ca61fe5ad01, (CHARACTER)_Player, _ID) // flagType: Object
- THEN
- DB_ArrestDialog(_Player,_ID);
- IF
- DialogEnded(_,_ID)
- AND
- DB_ArrestDialog(_Player,_ID)
- AND
- DB_DialogNPCs(_ID,_NPC,1)
- AND
- GetFlag((FLAG)CRIME_FoundEvidenceCurrentCrime_65040012-add4-05f8-0924-9d2e27c3e7ed, (CHARACTER)_NPC, 1) // flagType: Object
- AND
- DB_Interrogation(_NPC,_CrimeID)
- THEN
- PROC_CrimeHandleEvidence(_Player,_NPC,_CrimeID);
- PROC
- PROC_CrimeHandleEvidence((CHARACTER)_Player,(CHARACTER)_Arrester,(INTEGER)_CrimeID)
- AND
- CharacterGetCrimeRegion(_Player,_CrimeRegionID)
- AND
- DB_RegionPrison(_CrimeRegionID,_PrisonTrigger)
- AND
- DB_PrisonEvidenceChest((TRIGGER)_PrisonTrigger,(ITEM)_EvidenceChest)
- THEN
- CrimeTransferEvidenceTo(_CrimeID,_EvidenceChest);
- PROC
- PROC_CrimeHandleEvidence((CHARACTER)_Player,(CHARACTER)_Arrester,(INTEGER)_CrimeID)
- AND
- CharacterGetCrimeRegion(_Player,_CrimeRegionID)
- AND
- DB_RegionPrison(_CrimeRegionID,_PrisonTrigger)
- AND
- NOT DB_PrisonEvidenceChest((TRIGGER)_PrisonTrigger,_)
- THEN
- CrimeTransferEvidenceTo(_CrimeID,_Arrester);
- ///////// Start Arrest ////////////
- IF
- DialogEnded(_,_ID)
- AND
- DB_ArrestAfterDialog(_Character,_ID)
- THEN
- NOT DB_ArrestAfterDialog(_Character,_ID);
- PROC_CrimeStartArrest((CHARACTER)_Character,_ID);
- PROC
- PROC_CrimeStartArrest((CHARACTER)_Character,(INTEGER)_ID)
- AND
- CharacterGetCrimeRegion(_Character,_CrimeRegion)
- THEN
- PROC_CrimeDoPerformArrest(_ID,_CrimeRegion);
- PROC
- PROC_CrimeDoPerformArrest((INTEGER)_Inst,(STRING)_Region)
- AND
- DB_DialogNPCs(_Inst,_Player,_)
- AND
- IsPartyMember((CHARACTER)_Player,0,1)
- THEN
- PROC_CrimePerformArrest(_Player,_Region);
- PROC
- PROC_CrimeDoPerformArrest((INTEGER)_Inst,(STRING)_Region)
- AND
- DB_DialogPlayers(_Inst,_Player,_)
- AND
- IsPartyMember((CHARACTER)_Player,0,1)
- THEN
- PROC_CrimePerformArrest(_Player,_Region);
- PROC
- PROC_CrimePerformArrest((CHARACTER)_Character,(STRING)_CrimeRegionID)
- AND
- DB_RegionPrison(_CrimeRegionID,_PrisonTrigger)
- THEN
- PROC_CrimeTeleportCharacterToPrison(_Character,_PrisonTrigger);
- PROC //--- can be used outside of the Crime System
- PROC_CrimeTeleportCharacterToPrison((CHARACTER)_Character,(TRIGGER)_PrisonTrigger)
- THEN
- SetFlag((FLAG)IsInPrison_c9b75b21-6eba-065e-7680-fc9a0c5838e4, _Character); // flagType: Object
- RemoveStatus(_Character,"GB_FUGITIVE");
- DetachFromPartyGroup(_Character);
- PROC_TeleportSmoke(_Character);
- TeleportTo(_Character,_PrisonTrigger,"",0);
- PROC_TeleportSmoke(_Character);
- DB_IsArrested(_Character);
- FlushOsirisQueue(_Character);
- LeaveCombat(_Character);
- PROC
- PROC_CrimeTeleportCharacterToPrison((CHARACTER)_Character,(TRIGGER)_PrisonTrigger)
- AND
- DB_PrisonChest((TRIGGER)_PrisonTrigger,(ITEM)_PrisonChest)
- THEN
- MoveAllItemsTo(_Character,_PrisonChest,0,1,1);
- //END_REGION
- //REGION Arrest dialog starting
- IF
- CharacterOnCrimeSensibleActionNotification(_Arrester,_CrimeRegion,_CrimeID,"CRIME_OsirisArrest",_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_)
- AND
- CrimeGetType(_CrimeID,_CrimeName)
- THEN
- PROC_CRIME_OsirisArrest(_Arrester,_CrimeRegion,_CrimeID,_CrimeName,_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4);
- // Temporary because Osiris event arrives before Anubis
- PROC
- PROC_CRIME_OsirisArrest((CHARACTER)_Arrester,(STRING)_CrimeRegion,(INTEGER)_CrimeID,(STRING)_CrimeName,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- GUIDToString(_ArrestDialog, _ArrestDialogString)
- THEN
- SetVarObject(_Arrester,"Criminal1",_Criminal1);
- SetVarObject(_Arrester,"Criminal2",_Criminal2);
- SetVarObject(_Arrester,"Criminal3",_Criminal3);
- SetVarObject(_Arrester,"Criminal4",_Criminal4);
- SetVarFixedString(_Arrester,"ArrestDialog",_ArrestDialogString);
- PROC
- PROC_CRIME_OsirisArrest((CHARACTER)_Arrester,(STRING)_CrimeRegion,(INTEGER)_CrimeID,(STRING)_CrimeName,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- THEN
- PROC_StartArrestDialog(_Arrester);
- IF
- EntityEvent(_Arrester,"ArrestOnRequest")
- AND
- GetHandlingCrimeID((CHARACTER)_Arrester,_CrimeID)
- AND
- GUIDToString(GEB_Arrest_fabc5060-4331-61ef-a99e-f836fbed25bc, _ArrestDialogString)
- THEN
- SetVarFixedString(_Arrester,"ArrestDialog",_ArrestDialogString);
- PROC_StartArrest((CHARACTER)_Arrester,(INTEGER)_CrimeID);
- IF
- EntityEvent((CHARACTER)_Arrester,"ArrestOnRequest")
- AND
- DB_Arresting(_Arrester,_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,_ArrestDialog)
- THEN
- CharacterMoveToAndTalk(_Arrester,_Criminal1,NULL_00000000-0000-0000-0000-000000000000,"GEB_ArrestMove","Run",30.0);
- IF
- EntityEvent((CHARACTER)_Arrester, "CRIME_Perform_Arrest")
- AND
- GetHandlingCrimeID(_Arrester,_CrimeID)
- THEN
- PROC_StartArrest(_Arrester,_CrimeID);
- PROC
- PROC_StartArrest((CHARACTER)_Arrester,(INTEGER)_CrimeID)
- AND
- GetVarObject(_Arrester,"Criminal1",_Criminal1)
- AND
- GetVarObject(_Arrester,"Criminal2",_Criminal2)
- AND
- GetVarObject(_Arrester,"Criminal3",_Criminal3)
- AND
- GetVarObject(_Arrester,"Criminal4",_Criminal4)
- AND
- GetVarFixedStringUUID(_Arrester,"ArrestDialog",_ArrestDialog)
- THEN
- DB_Arresting(_Arrester,_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,(DIALOGRESOURCE)_ArrestDialog);
- SetHasDialog(_Arrester,0);
- BlockNewCrimeReactions(_Arrester,1);
- PROC_ForceStopDialog(_Arrester);
- FireOsirisEvents();
- IF
- DialogEnded(_,_Instance)
- AND
- DB_DialogPlayers(_Instance,_Criminal,1)
- AND
- DB_Arresting(_Arrester,_CrimeID,(CHARACTER)_Criminal,_,_,_,_ArrestDialog)
- THEN
- CharacterMoveToAndTalk(_Arrester,_Criminal,NULL_00000000-0000-0000-0000-000000000000,"GEB_ArrestMove","Run",10.0);
- PROC
- PROC_StartArrest((CHARACTER)_Arrester,(INTEGER)_CrimeID)
- AND
- NOT DB_Arresting(_Arrester,_CrimeID,_,_,_,_,_)
- THEN
- CrimeConfrontationDone(_CrimeID,_Arrester);
- PROC
- PROC_CleanupArrest((CHARACTER)_Arrester)
- AND
- DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
- THEN
- PROC_CRIME_RestoreWeaponUnsheathed(_Arrester,_CrimeID);
- BlockNewCrimeReactions(_Arrester,0);
- SetHasDialog(_Arrester,1);
- NOT DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog);
- SetEntityEvent(_Arrester,"CRIME_StartArrest");
- IF
- CharacterMoveToAndTalkRequestDialog(_Arrester,(CHARACTER)_Criminal,_,"GEB_ArrestMove")
- AND
- DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
- THEN
- SetEntityEvent(_Arrester,"CRIME_StartArrest");
- PROC_StartArrestDialog(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog);
- IF
- CharacterMoveToAndTalkFailed(_Arrester,_,"GEB_ArrestMove", _)
- AND
- DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
- THEN
- CrimeConfrontationDone(_CrimeID,_Arrester);
- PROC_CleanupArrest(_Arrester);
- IF
- DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
- AND
- DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
- THEN
- CharacterMoveToAndTalkFail(_Arrester,_Criminal,"GEB_ArrestMove","FailedToInterruptStoryDialogs");
- IF
- FlagSet((FLAG)_ActiveFlag, (CHARACTER)_Arrester, _) // flagType: Object
- AND
- DB_CrimeDialogFlags(_CrimeName,(FLAG)_ActiveFlag)
- AND
- DB_Arresting(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_ArrestDialog)
- THEN
- PROC_CleanupArrest(_Arrester);
- IF
- EnteredCombat((CHARACTER)_Arrester,_)
- AND
- DB_Arresting(_Arrester,_,_,_,_,_,_)
- THEN
- PROC_CleanupArrest(_Arrester);
- //--- StartArrestDialog
- QRY
- QRY_CrimeGetCustomArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- QRY_CrimeGetCustomArrestDialogCustom(_Arrester,_CrimeID,_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4)
- THEN
- DB_NOOP(1); //Fill this DB to replace the ArrestDialog: DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_CustomArrestDialog)
- QRY
- QRY_CrimeGetCustomArrestDialogCustom((CHARACTER)_Arrester,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- 1 == 0
- THEN
- DB_NOOP(1);
- QRY
- QRY_CrimeGetCustomArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- NOT DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_)
- THEN
- DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_ArrestDialog);
- PROC
- PROC_StartArrestDialog((CHARACTER)_Arrester)
- AND
- GetVarObject(_Arrester,"Criminal1",(CHARACTER)_Criminal1)
- AND
- GetVarObject(_Arrester,"Criminal2",(CHARACTER)_Criminal2)
- AND
- GetVarObject(_Arrester,"Criminal3",(CHARACTER)_Criminal3)
- AND
- GetVarObject(_Arrester,"Criminal4",(CHARACTER)_Criminal4)
- AND
- GetHandlingCrimeID(_Arrester,_CrimeID)
- AND
- GetVarFixedStringUUID(_Arrester,"ArrestDialog",_ArrestDialog)
- AND
- QRY_CrimeGetCustomArrestDialog(_Arrester,_CrimeID,(DIALOGRESOURCE)_ArrestDialog,_Criminal1,_Criminal2,_Criminal3,_Criminal4)
- AND
- DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,_NewArrestDialog)
- AND
- GUIDToString(_NewArrestDialog, _NewArrestDialogString)
- THEN
- NOT DB_CrimeArrest_CustomDialog(_Arrester,_CrimeID,(DIALOGRESOURCE)_NewArrestDialog);
- SetVarFixedString(_Arrester,"ArrestDialog",_NewArrestDialogString);
- PROC_StartArrestDialog(_Arrester,_CrimeID,_Criminal1,_Criminal2,_Criminal3,_Criminal4,(DIALOGRESOURCE)_NewArrestDialog);
- PROC
- PROC_StartArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,(DIALOGRESOURCE)_ArrestDialog)
- THEN
- ClearFlag((FLAG)GEB_Arrest_HavePrison_602741c9-b5be-6479-f456-4781383551ff, _Arrester, 0); // flagType: Object
- //--- Setup the Arrester's script
- PROC
- PROC_StartArrestDialog((CHARACTER)_Arrester,(INTEGER)_CrimeID,(CHARACTER)_Criminal1,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,(DIALOGRESOURCE)_ArrestDialog)
- AND
- CharacterGetCrimeRegion(_Criminal1, _RegionID)
- AND
- CrimeGetType(_CrimeID,_CrimeType)
- THEN
- PROC_CrimeSetupCountFlag(_CrimeID,_Arrester,_Criminal1,_Criminal2,_Criminal3,_Criminal4,_CrimeType,_ArrestDialog);
- PROC_CrimeStartRegionArrestInterrogation(_RegionID,_CrimeID,_ArrestDialog,_Arrester,_Criminal1,_Criminal2,_Criminal3,_Criminal4);
- PROC
- PROC_CheckStartArrestInterrogation((INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- NOT DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
- THEN
- PROC_CrimeStartArrestInterrogation(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4,1);
- PROC
- PROC_CheckStartArrestInterrogation((INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
- THEN
- PROC_CrimeStartArrestInterrogation(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4,0);
- NOT DB_Crime_FailedToInterruptStoryDialogs(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC
- PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- DB_RegionPrison(_RegionID,_)
- THEN
- SetFlag((FLAG)GEB_Arrest_HavePrison_602741c9-b5be-6479-f456-4781383551ff, _Arrester); // flagType: Object
- PROC
- PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- _RegionID != ""
- AND
- DialogIsAutomated(_ArrestDialog, 1)
- THEN
- DebugBreak("Arrest dialog is automated, is assumed to be interactive!");
- PROC
- PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- _RegionID != ""
- THEN
- PROC_CrimeInterruptStoryDialogs(_CrimeID,_ArrestDialog,1,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC_CheckStartArrestInterrogation(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC
- PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- _RegionID == ""
- AND
- DB_ReactOutOfRegion(_Tag)
- AND
- IsTagged(_Arrester,_Tag,1)
- AND
- NOT DB_ReactingCharOutOfRegion(_Arrester,_)
- THEN
- PROC_CrimeInterruptStoryDialogs(_CrimeID,_ArrestDialog,1,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC_CheckStartArrestInterrogation(_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- DB_ReactingCharOutOfRegion(_Arrester,_Tag);
- // We change crime dialog in the next section, so replace it in the DB which is used to clean some stuff on crime end
- PROC
- PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- _RegionID == ""
- AND
- NOT DB_ReactingCharOutOfRegion(_Arrester,_)
- THEN
- PROC_CrimeStartRegionArrestInterrogation_SubActions(_RegionID,_CrimeID,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC
- PROC_CrimeStartRegionArrestInterrogation_SubActions((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- DB_Crime_RequestedDialogWithTension(_CrimeName,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4)
- THEN
- NOT DB_Crime_RequestedDialogWithTension(_CrimeName,_ArrestDialog,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- DB_Crime_RequestedDialogWithTension(_CrimeName,GEB_Attack_80d78319-8d61-53c6-053c-c40b8657892f,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC
- PROC_CrimeStartRegionArrestInterrogation_SubActions((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- THEN
- PROC_CrimeInterruptStoryDialogs(_CrimeID,GEB_Attack_80d78319-8d61-53c6-053c-c40b8657892f,1,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC_CheckStartArrestInterrogation(_CrimeID,GEB_Attack_80d78319-8d61-53c6-053c-c40b8657892f,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC
- PROC_CrimeStartRegionArrestInterrogation((STRING)_RegionID,(INTEGER)_CrimeID,(DIALOGRESOURCE)_ArrestDialog,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4)
- AND
- DB_ReactingCharOutOfRegion(_Arrester,_Tag)
- THEN
- NOT DB_ReactingCharOutOfRegion(_Arrester,_Tag);
- PROC
- PROC_CrimeStartArrestInterrogation((INTEGER)_CrimeID,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,_)
- AND
- DB_EvidenceFound(_CrimeID,_Interrogator)
- AND
- DB_Crime_CallingGuards(_Interrogator,_Criminal,_ID)
- THEN
- NOT DB_Crime_CallingGuards(_Interrogator,_Criminal,_ID);
- NOT DB_EvidenceFound(_CrimeID,_Interrogator);
- DB_EvidenceFound(_CrimeID,_Arrester);
- PROC
- PROC_CrimeStartArrestInterrogation((INTEGER)_CrimeID,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,1)
- AND
- DB_EvidenceFound(_CrimeID,_Interrogator)
- AND
- DB_Crime_CallingGuards(_Interrogator,_Criminal,_ID)
- THEN
- DB_StopInterrogationAfterDialog(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- PROC
- PROC_CrimeStartArrestInterrogation((INTEGER)_CrimeID,(CHARACTER)_Arrester,(CHARACTER)_Criminal,(CHARACTER)_Criminal2,(CHARACTER)_Criminal3,(CHARACTER)_Criminal4,0)
- AND
- DB_Crime_Interrogation(_CrimeID,_,_,_,_,_,_)
- THEN
- PROC_StopInterrogation(_CrimeID,_Arrester,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- IF
- DialogEnded(_,_Instance)
- AND
- DB_ArrestDialog(_Player,_Instance)
- THEN
- ClearFlag((FLAG)Allow_Arrest_2677bf25-03f3-6323-c72a-0ca61fe5ad01, _Player, 0); // flagType: Object
- NOT DB_ArrestDialog(_Player,_Instance);
- PROC_CrimeStartArrest((CHARACTER)_Player,_Instance);
- IF
- DialogEnded(_,_Instance)
- AND
- DB_DialogNPCs(_Instance,_NPC,1)
- AND
- DB_StopInterrogationAfterDialog(_CrimeID,(CHARACTER)_NPC,_Criminal,_Criminal2,_Criminal3,_Criminal4)
- THEN
- PROC_StopInterrogation(_CrimeID,_NPC,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- NOT DB_StopInterrogationAfterDialog(_CrimeID,_NPC,_Criminal,_Criminal2,_Criminal3,_Criminal4);
- // TODO Remove the DB_ReactingCharOutOfRegion(_Arrester,_Tag) On Tag Removed
- //END_REGION
- //REGION Arrest Play As AD
- IF
- EntityEvent((CHARACTER)_Arrester,"GLO_PlayArrestAsAD")
- AND
- GetVarFixedStringUUID(_Arrester,"ArrestDialog",_ArrestDialog)
- THEN
- PROC_TryStartAD((DIALOGRESOURCE)_ArrestDialog,_Arrester);
- //END_REGION
- //REGION Escape Prison
- IF
- EnteredTrigger(_Player,_PrisonTrigger)
- AND
- DB_IsArrested(_Player)
- AND
- DB_Players(_Player)
- AND
- DB_PlayerPrison_Door(_PrisonTrigger,(ITEM)_CellDoor,(STRING)_KeyName)
- THEN
- PROC_ItemCloseAndLock(_CellDoor,_KeyName);
- IF
- LeftTrigger(_Player,_PrisonTrigger)
- AND
- DB_IsArrested(_Player)
- AND
- DB_Players(_Player)
- AND
- DB_PlayerPrison((TRIGGER)_PrisonTrigger,(TRIGGER)_CellDoorTrigger,(STRING)_PrisonCrimeName,(STRING)_PrisonCrimeNameAD)
- AND
- GetPosition(_CellDoorTrigger,_x,_y,_z)
- THEN
- //ProcRestoreGenericBehaviourAfterScene(_Player);
- PROC_CRIME_Prison_Escaped(_Player, _PrisonCrimeName, _PrisonCrimeNameAD);
- PROC
- PROC_CRIME_Prison_Escaped((CHARACTER)_Player, (STRING)_PrisonCrimeName, (STRING)_PrisonCrimeNameAD)
- AND
- QRY_AnyRegionActive()
- THEN
- DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD);
- ApplyStatus(_Player,"GB_FUGITIVE",100.0,1);
- PROC
- PROC_CRIME_Prison_Escaped((CHARACTER)_Player, (STRING)_PrisonCrimeName, (STRING)_PrisonCrimeNameAD)
- THEN
- ClearFlag((FLAG)IsInPrison_c9b75b21-6eba-065e-7680-fc9a0c5838e4, _Player, 0); // flagType: Object
- NOT DB_IsArrested(_Player);
- IF
- StatusApplied(_Player,"GB_FUGITIVE",_)
- AND
- DB_Players((CHARACTER)_Player)
- AND
- DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD)
- THEN
- SetFlag((FLAG)IsFugitive_44f1d866-f5cc-474c-8d46-80e7c1a7f188, _Player); // flagType: Object // This is for Arrest_EscapedPrison Dialog
- PROC_CharacterRegisterCrime(_Player,_PrisonCrimeName,NULL_00000000-0000-0000-0000-000000000000,NULL_00000000-0000-0000-0000-000000000000,0);
- IF
- StatusApplied(_Player,"GB_FUGITIVE",_)
- AND
- DB_Players((CHARACTER)_Player)
- AND
- DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD)
- AND
- _PrisonCrimeNameAD != ""
- THEN
- PROC_CharacterRegisterCrime(_Player,_PrisonCrimeNameAD,NULL_00000000-0000-0000-0000-000000000000,NULL_00000000-0000-0000-0000-000000000000,0);
- IF
- StatusRemoved(_Player,"GB_FUGITIVE",_)
- AND
- DB_Players((CHARACTER)_Player)
- AND
- DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD)
- THEN
- NOT DB_PlayerEscapedPrison(_Player,_PrisonCrimeName,_PrisonCrimeNameAD);
- CharacterStopCrime(_Player,_PrisonCrimeName,NULL_00000000-0000-0000-0000-000000000000);
- CharacterStopCrime(_Player,_PrisonCrimeNameAD,NULL_00000000-0000-0000-0000-000000000000);
- ClearFlag((FLAG)IsFugitive_44f1d866-f5cc-474c-8d46-80e7c1a7f188, _Player, 0); // flagType: Object
- IF
- FlagSet(GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, _) // flagType: Object //set in GEB_Arrest_EscapedPrison
- AND
- HasActiveStatus(_Player,"GB_FUGITIVE",1)
- THEN
- RemoveStatus(_Player,"GB_FUGITIVE");
- IF
- FlagSet(GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, _ID) // flagType: Object //set in GEB_Arrest_EscapedPrison
- AND
- DB_DialogNPCs(_ID,_NPC,1)
- THEN
- PROC_CrimeBribedGuards(_NPC,_Player);
- PROC
- PROC_CrimeBribedGuards((GUIDSTRING)_NPC,(GUIDSTRING)_Player)
- THEN
- CrimeIgnoreAllCrimesForCriminal(_Player,_NPC,300000);
- IgnoreCrimesInRadiusWithTagsForDuration((CHARACTER)_Player,20.0,"GUARD_0b52f35e-fb1f-4865-bcd2-5d21ef7343cd",300000);
- IF
- FlagSet(GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, _) // flagType: Object //set in GEB_Arrest_EscapedPrison
- THEN
- ClearFlag((FLAG)GEB_ClearTag_FUGITIVE_b7e841d0-8b8c-c18b-48af-8d2a283f62e6, _Player, 0); // flagType: Object
- //END_REGION
- //REGION GUARD CALLING
- IF
- FlagSet(GEB_Arrest_Player_4434aa46-3370-47e8-8c3f-c9d9f9b7bce5, _NPC, _Inst) // flagType: Object
- AND
- DB_DialogNPCs(_Inst,_OldLead,1)
- THEN
- DB_CrimeArrestCallingGuards((CHARACTER)_OldLead,_Inst);
- IF
- FlagSet(GEB_Arrest_Player_4434aa46-3370-47e8-8c3f-c9d9f9b7bce5, _NPC, _Inst) // flagType: Object
- AND
- DB_DialogNPCs(_Inst,_OldLead,1)
- AND
- NOT DB_Is_InCombat((CHARACTER)_NPC,_)
- AND
- NOT DB_PickedLeadToHelp(_,_Inst)
- AND
- GetHandlingCrimeID((CHARACTER)_OldLead,_CrimeID)
- AND
- CrimeTransferLeadershipTo((CHARACTER)_OldLead,_CrimeID,_NPC,1)
- AND
- GetVarObject(_OldLead,"Criminal1",_Criminal1)
- AND
- GetVarObject(_OldLead,"Criminal2",_Criminal2)
- AND
- GetVarObject(_OldLead,"Criminal3",_Criminal3)
- AND
- GetVarObject(_OldLead,"Criminal4",_Criminal4)
- AND
- GUIDToString(GEB_Arrest_fabc5060-4331-61ef-a99e-f836fbed25bc, _ArrestDialogString)
- THEN
- SetHasDialog(_OldLead,0);
- DB_GuardCaller(_CrimeID,_OldLead,_NPC);
- SetEntityEvent(_OldLead,"CRIME_Flee");
- DB_PickedLeadToHelp(_NPC,_Inst);
- PROC_CRIME_SetWeaponUnsheathed(_Npc,_CrimeID);
- SetVarObject(_NPC,"Criminal1",_Criminal1);
- SetVarObject(_NPC,"Criminal2",_Criminal2);
- SetVarObject(_NPC,"Criminal3",_Criminal3);
- SetVarObject(_NPC,"Criminal4",_Criminal4);
- SetVarFixedString(_NPC,"ArrestDialog",_ArrestDialogString);
- SetEntityEvent(_NPC,"CRIME_Perform_Arrest");
- IF
- DialogEnded(_Dialog,_Inst)
- AND
- DB_CrimeArrestCallingGuards(_OldLead,_Inst)
- AND
- NOT DB_PickedLeadToHelp(_,_Inst)
- AND
- DB_DialogPlayers(_Inst,_Player,1)
- THEN
- NOT DB_CrimeArrestCallingGuards(_OldLead,_Inst);
- //failed to transfer leadership, start combat as fallback
- PROC_TryStartAD(GEB_AD_DealWithCrime_2a70dd9f-c256-a987-e4c7-05a629559fd6,_OldLead);
- PROC_SetRelationTemporaryHostile((CHARACTER)_Player,_OldLead);
- IF
- DialogEnded(_Dialog,_Inst)
- AND
- DB_PickedLeadToHelp(_NPC,_Inst)
- AND
- DB_DialogNPCs(_Inst,_OldLead,1)
- THEN
- NOT DB_PickedLeadToHelp(_NPC,_Inst);
- NOT DB_CrimeArrestCallingGuards((CHARACTER)_OldLead,_Inst);
- IF
- OnCrimeConfrontationDone(_CrimeID,_OldLead,_,_,_,_,_)
- AND
- DB_GuardCaller(_CrimeID,_OldLead,_NPC)
- THEN
- SetHasDialog(_OldLead,1);
- NOT DB_GuardCaller(_CrimeID,_OldLead,_NPC);
- //END_REGION
- EXITSECTION
- ENDEXITSECTION
Advertisement
Add Comment
Please, Sign In to add comment