Files
gtav-src/script/dev_ng/singleplayer/scripts/missions/Armenian/Armenian3.sc
T
2025-09-29 00:52:08 +02:00

12029 lines
448 KiB
Python
Executable File

//
//
// Author: Alan Litobarski Date: 06/07/2010
//
//
//
// Meet Michael - (Armenian3.sc)
//
// Franklin tries to take Michael's sons car. Michael stops ║
// him and tells him to drive to near car showroom gives
// him a slap gives his son a slap and finds out who the
// car dealer is and then ram raids the car back into the
// dealership and beats up the owner.
//
//
// HEADERS
//Compile out Title Update changes to header functions.
//Must be before includes.
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_misc.sch"
USING "commands_pad.sch"
USING "commands_script.sch"
USING "commands_player.sch"
USING "commands_streaming.sch"
USING "commands_cutscene.sch"
USING "commands_vehicle.sch"
USING "commands_camera.sch"
USING "commands_path.sch"
USING "commands_fire.sch"
USING "commands_graphics.sch"
USING "commands_object.sch"
USING "commands_task.sch"
USING "commands_misc.sch"
USING "commands_entity.sch"
USING "commands_event.sch"
USING "streamed_scripts.sch"
USING "cellphone_public.sch"
USING "flow_public_core_override.sch"
USING "model_enums.sch"
USING "script_player.sch"
USING "selector_public.sch"
USING "player_ped_public.sch"
USING "dialogue_public.sch"
USING "locates_public.sch"
USING "building_control_public.sch"
USING "replay_public.sch"
USING "chase_hint_cam.sch"
USING "help_at_location.sch"
USING "cutscene_public.sch"
USING "mission_stat_public.sch"
USING "CompletionPercentage_public.sch"
USING "taxi_functions.sch"
USING "timeLapse.sch"
USING "script_heist.sch"
USING "shop_public.sch"
USING "vehicle_gen_public.sch"
USING "clearmissionarea.sch"
USING "tv_control_public.sch"
USING "commands_recording.sch"
#IF IS_DEBUG_BUILD
USING "script_debug.sch"
USING "select_mission_stage.sch"
#ENDIF
// VARIABLES
//Integers
INT iCutsceneStage
INT iDialogueStage = 0
INT iDialogueLineCount[5]
INT iDialogueTimer
INT iTimer
INT iFailTimer
INT iFailUprightTimer
INT iHelpTimer = -1
INT iInterruptTimer
INT iStoppedTimer = -1
INT iClimbTimer
INT iAlertTimer
INT iCarHealth = 1000
FLOAT iCarGasTank = 1000.0
FLOAT iCarEngineHealth = 1000.0
INT iAutowalkTimeout
//Vehicle Zoom Level
BOOL bVehicleZoomInOut
VEHICLE_ZOOM_LEVEL vehicleZoomLevel
BOOL bZoomLevel = FALSE
CAM_VIEW_MODE camViewModeOnFoot
//INT iGardenTimer
//INT iGardenPoint
//VECTOR vGardenPoints[7]
//FLOAT fGardenPoints[7]
//FLOAT fBlowStrenth
FLOAT fDistLastFrame
FLOAT fDistThisFrame
//Declare a TIMEOFDAY struct, a camera index and a stage tracker for the cutscene.
structTimelapse sTimelapse
//Bools
BOOL bVideoRecording
BOOL bInitStage
BOOL bCleanupStage
BOOL bRadar
BOOL bPinnedMansion
BOOL bPinnedGarage
BOOL bPassed //Passed the mission
#IF IS_DEBUG_BUILD
BOOL bDebugAudio
#ENDIF
BOOL bTimeOfDayRunning
BOOL bTimeOfDayComplete //Check TOD has finished
//Used for J-skipping and Mid Mission Replay
#IF IS_DEBUG_BUILD
BOOL bAutoSkipping
#ENDIF
BOOL bSkipped
BOOL bReplaySkip
BOOL bShitSkip
BOOL bCutsceneSkipped //Tracks if WAS_CUTSCENE_SKIPPED() returns TRUE
BOOL bJimmyTVPLayingGame
BOOL bProjectorTVDisabled
BOOL bPreloaded //For Preloaded Cutscene
BOOL bPlayerExitCar
BOOL bPlayerHasEnteredMansion
BOOL bCameraViewToggle //Used to wait a frame for camera view toggle
//BOOL bCarDoorSlam
//INT iCarDoorSlam
//Vectors and Floats
VECTOR VECTOR_ZERO = <<0.0, 0.0, 0.0>>
VECTOR vIntroCutscenePos = <<-43.6345, -1110.6049, 25.9582>>
CONST_FLOAT fIntroCutsceneRot 178.9958
VECTOR vIntroCutsceneRot = <<0.0, 0.0, fIntroCutsceneRot>>
VECTOR vPlayerStart = <<-63.0336, -1107.3502, 25.3198>>
CONST_FLOAT fPlayerStart 113.3946
VECTOR vMichaelStart = <<-818.4653, 180.4985, 71.5139>>
CONST_FLOAT fMichaelStart 26.8488
VECTOR vSonStart = <<-806.9441, 171.6912, 75.3206>>
CONST_FLOAT fSonStart 110.1351
VECTOR vDaughterStart = <<-803.2621, 176.0598, 75.7406>>
CONST_FLOAT fDaughterStart 50.0651
VECTOR vWifeStart = <<-797.7103, 181.8636, 72.7925>>
CONST_FLOAT fWifeStart 0.3001
VECTOR vCoachStart = <<-798.1318, 181.0491, 72.7808>>
CONST_FLOAT fCoachStart -3.4667
//VECTOR vDriveTo = <<-17.4662, -1079.5088, 25.6721>> //<<-27.5891, -1082.9415, 25.6017>>
CONST_FLOAT fDriveTo 125.9719 //69.2213
VECTOR vCarStart = <<-811.1514, 187.6124, 71.4744>>
CONST_FLOAT fCarStart 111.6656
//FLOAT fCutsceneHeading
VECTOR vMansion = <<-846.1608, 158.1691, 65.7346>>
//VECTOR vGarage = <<-815.4069, 185.8932, 71.4748>>
//VECTOR vClimbPoint = <<-801.3589, 167.5939, 70.5588>>
VECTOR vDealership = <<-60.3707, -1098.9924, 25.4262>> //<<-42.1335, -1111.1772, 25.4353>>
//VECTOR vGaragePosition = <<-815.3447, 185.9302, 73.0253>>
//VECTOR vGarageRotate = <<0.0, 0.0, -69.06>>
VECTOR vBlipDaughterRoute //Coordinates to follow for blip
//#IF IS_DEBUG_BUILD //Debug Temp
// //Position + Rotation
// VECTOR vPos, vRot
//
// //Input for Gamepad thumbsticks (LTS = Left Thumbstick, RTS = Right Thumbstick)
// INT iLTSx
// INT iLTSy
// INT iRTSx
// INT iRTSy
//#ENDIF
//Strings
TEXT_LABEL_23 txtConversationPoint
//Animation Dictionaries
STRING sAnimDictArm3 = "missarmenian3"
STRING sAnimDictArm3Argue = "missarmenian3mcs2"
STRING sAnimDictArm3LeadInOut = "missarmenian3leadinoutArmenian_3_int"
STRING sAnimDictArm3Climb = "missarmenian3mcs_1a"
STRING sAnimDictAngry = "missarmenian3@simeon_tauntsidle_b"
//STRING sAnimDictSlam = "missarmenian3doorslam_"
STRING sAnimDictGardenerMoveClipSet = "MOVE_M@LEAF_BLOWER"
STRING sAnimDictGarden = "missarmenian3_gardener"
STRING sAnimDictDoor = "missarmenian3_tryopendoor"
STRING sAnimDictLeadInMCS8 = "missarmenian3leadinoutarm3_mcs_8"
//Scenes
INT sceneClimbIn
VECTOR sceneClimbInPos = <<-802.411, 166.269, 70.557>>
VECTOR sceneClimbInRot = <<0.0, 0.0, 20.640>>
INT sceneTryDoor1, sceneTryDoor2, sceneTryDoor3, sceneTryDoor4
// INDEXES
//Ped
PED_INDEX pedSon
PED_INDEX pedDaughter
PED_INDEX pedWife
PED_INDEX pedCoach
PED_INDEX pedOwner
PED_INDEX pedGardener
PED_INDEX pedIntro
//Vehicle
VEHICLE_INDEX vehDriveTo
VEHICLE_INDEX vehClimb
VEHICLE_INDEX vehCar
VEHICLE_INDEX vehIntro
VEHICLE_INDEX vehGarage[5]
VEHICLE_INDEX vehGarageOutside[2]
VEHICLE_INDEX vehOutside[2]
//Blip
BLIP_INDEX blipGardener
BLIP_INDEX blipSon
BLIP_INDEX blipDaughter
BLIP_INDEX blipWife
BLIP_INDEX blipCoach
BLIP_INDEX blipCar
BLIP_INDEX blipDestination
BLIP_INDEX blipOwner
BLIP_INDEX blipFranklin
BLIP_INDEX blipMichael
//Camera
CAMERA_INDEX camMain
CAMERA_INDEX camCinematic
//Sequence
SEQUENCE_INDEX seqMain
//Interior
INTERIOR_INSTANCE_INDEX intMansion
INTERIOR_INSTANCE_INDEX intGarage
//Object
OBJECT_INDEX objWindow
OBJECT_INDEX objTennisA
OBJECT_INDEX objTennisB
OBJECT_INDEX objBag
OBJECT_INDEX objGamepad
OBJECT_INDEX objHeadset
OBJECT_INDEX objGun
OBJECT_INDEX objGlass
OBJECT_INDEX objPhone
OBJECT_INDEX objLeafblower
OBJECT_INDEX objSeats
// Rayfire
RAYFIRE_INDEX iTVObject
//Shapetest
SHAPETEST_INDEX shapeTestIndex
//Doors
INT iBathroomDoor = ENUM_TO_INT(DOORHASH_M_MANSION_BATHROOM)
INT iJimmyDoor = ENUM_TO_INT(DOORHASH_M_MANSION_SON)
INT iTraceyDoor = ENUM_TO_INT(DOORHASH_M_MANSION_DAUGHTER)
INT iMichaelDoor = ENUM_TO_INT(DOORHASH_M_MANSION_BEDROOM)
INT iGarageDoor = HASH("GARAGE_DOOR")
INT iDealershipDoor1 = ENUM_TO_INT(DOORHASH_ARM2_SIMEON_OFFICE)
INT iDealershipDoor2 = HASH("DEALERSHIP_DOOR2")
INT iDealershipDoor3 = ENUM_TO_INT(DOORHASH_DEALERSHIP_FRONT_L)
INT iDealershipDoor4 = ENUM_TO_INT(DOORHASH_DEALERSHIP_FRONT_R)
INT iSideGate = ENUM_TO_INT(DOORHASH_M_MANSION_GA_SM)
DOOR_DATA_STRUCT sHouseDoorData[7]
//Navmesh
INT iNavBlock = -1
//Scene
INT sceneWifeCoachFlirt
INT sceneLeadOutMCS1
INT sceneLeadInMCS8
//Sound
INT sIDLeaf = -1
//Particle
PTFX_ID ptfxLeaf
//Cover
COVERPOINT_INDEX covPoint[3]
//Model Names
MODEL_NAMES modGamepad = PROP_CONTROLLER_01
MODEL_NAMES modHeadset = PROP_HEADSET_01
MODEL_NAMES modTennis = PROP_TENNIS_RACK_01
MODEL_NAMES modBag = P_TENNIS_BAG_01_S
//Weapons
WEAPON_TYPE wtPistol = WEAPONTYPE_PISTOL
//Relationship Groups
REL_GROUP_HASH relGroupBuddy
REL_GROUP_HASH relGroupEnemy
//Locates Struct
LOCATES_HEADER_DATA sLocatesData
//Hint Cam Struct
CHASE_HINT_CAM_STRUCT localChaseHintCamStruct
//Rayfire
RAYFIRE_INDEX rfShowroomCrash1
// ENUMS
ENUM MissionObjective
initMission,
cutIntro,
stageGoToMansion,
// stageBreakIn,
stageClimbUp,
cutArgue,
stageSneakThrough,
stageStealCar,
stageDriveTo,
cutArrive,
stageRammingSpeed,
cutWindowSmash,
stageBeatDown,
// stageExitDealership,
// stageSwitchTutorial,
passMission,
failMission
ENDENUM
MissionObjective eMissionObjective = InitMission
#IF IS_DEBUG_BUILD
MissionObjective eMissionObjectiveAutoSkip = InitMission
#ENDIF
ENUM MissionFail
failDefault,
failPlayerDied,
failMichaelDied,
failFranklinDied,
failSonDied,
failWalkedInOnSon,
failDaughterDied,
failWalkedInOnDaughter,
failWifeDied,
failCoachDied,
failGardenerDied,
failSimeonDied,
failSimeonDisrupted,
failWalkedInOnWifeCoach,
failWalkedInOnWifeCoachTrySneak,
failWalkedInOnWifeCoachLivingRoom,
failSpotted,
failNoise,
failLeftRoute,
failFledOwner,
failCarDestroyed,
failExplosion,
failWanted
ENDENUM
MissionFail eMissionFail = failDefault
ENUM PrestreamCutscene
roomNone,
roomSon,
roomDaughter,
roomWifeCoach
ENDENUM
PrestreamCutscene ePrestreamCutscene = roomNone
BOOL bPrestreamCutsceneLockedIn[COUNT_OF(PrestreamCutscene)]
//Audio
ENUM AUDIO_TRACK
NO_AUDIO,
ARM3_START,
ARM3_RESTART_1,
ARM3_WINDOW,
ARM3_RESTART_2,
ARM3_RESTART_3,
ARM3_GARAGE_STOP,
ARM3_CAR,
ARM3_RESTART_4,
ARM3_CALL,
ARM3_MIC,
ARM3_RESTART_5,
ARM3_CS,
ARM3_RESTART_6,
ARM3_SPEED,
ARM3_RESTART_7,
ARM3_HIT,
ARM3_HIT_STOP,
ARM3_RESTART_8,
ARM3_FAIL
ENDENUM
AUDIO_TRACK ePrepAudioTrack = NO_AUDIO
AUDIO_TRACK ePlayAudioTrack = NO_AUDIO
#IF IS_DEBUG_BUILD
//Stage Selector
INT iStageSkipMenu
CONST_INT MAX_SKIP_MENU_LENGTH COUNT_OF(MissionObjective) - 2 //Number of stages in mission minus Pass/Fail
MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH]
PROC MissionNames()
SkipMenuStruct[0].sTxtLabel = "initMission"
SkipMenuStruct[1].sTxtLabel = "cutIntro - (Armenian_3_int)"
SkipMenuStruct[2].sTxtLabel = "stageGoToMansion"
// SkipMenuStruct[?].sTxtLabel = "stageBreakIn"
SkipMenuStruct[3].sTxtLabel = "stageClimbUp"
SkipMenuStruct[4].sTxtLabel = "cutArgue"
SkipMenuStruct[5].sTxtLabel = "stageSneakThrough"
SkipMenuStruct[6].sTxtLabel = "stageStealCar"
SkipMenuStruct[7].sTxtLabel = "stageDriveTo - (Armenian_3_mcs_6 | Armenian_3_mcs_7)"
SkipMenuStruct[8].sTxtLabel = "cutArrive - (Armenian_3_mcs_6)"
SkipMenuStruct[9].sTxtLabel = "stageRammingSpeed"
SkipMenuStruct[10].sTxtLabel = "cutWindowSmash - (Armenian_3_mcs_8)"
SkipMenuStruct[11].sTxtLabel = "stageBeatDown - (Armenian_3_MCS_9_concat)"
// SkipMenuStruct[12].sTxtLabel = "stageExitDealership"
// SkipMenuStruct[13].sTxtLabel = "stageSwitchTutorial"
ENDPROC
#ENDIF
//Text
STRING sConversationBlock = "ARM3AUD"
INT iTriggeredTextHashes[120]
INT iNumTextHashesStored = 0
PROC REMOVE_LABEL_ARRAY_SPACES()
INT iArrayLength = COUNT_OF(iTriggeredTextHashes)
INT i = 0
REPEAT (iArrayLength - 1) i
IF iTriggeredTextHashes[i] = 0
IF iTriggeredTextHashes[i+1] != 0
iTriggeredTextHashes[i] = iTriggeredTextHashes[i+1]
iTriggeredTextHashes[i+1] = 0
ENDIF
ENDIF
ENDREPEAT
ENDPROC
FUNC INT GET_LABEL_INDEX(INT iLabelHash)
INT i = 0
REPEAT iNumTextHashesStored i
IF iTriggeredTextHashes[i] = iLabelHash
RETURN i
ENDIF
ENDREPEAT
RETURN -1
ENDFUNC
FUNC BOOL HAS_LABEL_BEEN_TRIGGERED(STRING strLabel)
INT iHash = GET_HASH_KEY(strLabel)
IF GET_LABEL_INDEX(iHash) != -1
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC SET_LABEL_AS_TRIGGERED(STRING strLabel, BOOL bTrigger)
INT iHash = GET_HASH_KEY(strLabel)
IF bTrigger
IF NOT HAS_LABEL_BEEN_TRIGGERED(strLabel)
INT iArraySize = COUNT_OF(iTriggeredTextHashes)
IF iNumTextHashesStored < iArraySize
iTriggeredTextHashes[iNumTextHashesStored] = iHash
iNumTextHashesStored++
ELSE
#IF IS_DEBUG_BUILD
SCRIPT_ASSERT("SET_LABEL_AS_TRIGGERED: Label array is full.")
#ENDIF
ENDIF
ENDIF
ELSE
INT iIndex = GET_LABEL_INDEX(iHash)
IF iIndex != -1
iTriggeredTextHashes[iIndex] = 0
REMOVE_LABEL_ARRAY_SPACES()
iNumTextHashesStored--
ENDIF
ENDIF
ENDPROC
PROC CLEAR_TRIGGERED_LABELS()
INT iArraySize = COUNT_OF(iTriggeredTextHashes)
INT i = 0
REPEAT iArraySize i
iTriggeredTextHashes[i] = 0
ENDREPEAT
iNumTextHashesStored = 0
ENDPROC
//Models
INT iLoadedModelHashes[20]
FUNC BOOL HAS_MODEL_BEEN_LOADED(MODEL_NAMES mnModel)
INT iHash = ENUM_TO_INT(mnModel)
INT i
REPEAT COUNT_OF(iLoadedModelHashes) i
IF iLoadedModelHashes[i] = iHash
RETURN TRUE
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC
PROC SET_MODEL_AS_LOADED(MODEL_NAMES mnModel, BOOL bIsLoaded)
INT iHash = ENUM_TO_INT(mnModel)
INT i = 0
BOOL bQuitLoop = FALSE
WHILE i < COUNT_OF(iLoadedModelHashes) AND NOT bQuitLoop
IF bIsLoaded
IF iLoadedModelHashes[i] = 0
iLoadedModelHashes[i] = iHash
bQuitLoop = TRUE
ENDIF
ELSE
IF iLoadedModelHashes[i] = iHash
iLoadedModelHashes[i] = 0
bQuitLoop = TRUE
ENDIF
ENDIF
i++
ENDWHILE
ENDPROC
PROC CLEAR_LOADED_MODELS()
INT i = 0
REPEAT COUNT_OF(iLoadedModelHashes) i
iLoadedModelHashes[i] = 0
ENDREPEAT
ENDPROC
FUNC BOOL HAS_MODEL_LOADED_CHECK(MODEL_NAMES mnModel)
IF NOT HAS_MODEL_BEEN_LOADED(mnModel)
REQUEST_MODEL(mnModel) #IF IS_DEBUG_BUILD PRINTLN("LOADING MODEL #", ENUM_TO_INT(mnModel)) #ENDIF
IF HAS_MODEL_LOADED(mnModel)
SET_MODEL_AS_LOADED(mnModel, TRUE) #IF IS_DEBUG_BUILD PRINTLN("MODEL #", ENUM_TO_INT(mnModel), " LOADED") #ENDIF
ENDIF
ELSE
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
//Recordings
INT iLoadedRecordingHashes[30]
FUNC BOOL HAS_RECORDING_BEEN_LOADED(INT iFileNumber, STRING sRecordingName)
TEXT_LABEL txtHash
txtHash = iFileNumber
txtHash += sRecordingName
INT iHash = GET_HASH_KEY(txtHash)
INT i
REPEAT COUNT_OF(iLoadedRecordingHashes) i
IF iLoadedRecordingHashes[i] = iHash
RETURN TRUE
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC
PROC SET_RECORDING_AS_LOADED(INT iFileNumber, STRING sRecordingName, BOOL bIsLoaded)
TEXT_LABEL txtHash
txtHash = iFileNumber
txtHash += sRecordingName
INT iHash = GET_HASH_KEY(txtHash)
INT i = 0
BOOL bQuitLoop = FALSE
WHILE i < COUNT_OF(iLoadedRecordingHashes) AND NOT bQuitLoop
IF bIsLoaded
IF iLoadedRecordingHashes[i] = 0
iLoadedRecordingHashes[i] = iHash
bQuitLoop = TRUE
ENDIF
ELSE
IF iLoadedRecordingHashes[i] = iHash
iLoadedRecordingHashes[i] = 0
bQuitLoop = TRUE
ENDIF
ENDIF
i++
ENDWHILE
ENDPROC
PROC CLEAR_LOADED_RECORDINGS()
INT i = 0
REPEAT COUNT_OF(iLoadedRecordingHashes) i
iLoadedRecordingHashes[i] = 0
ENDREPEAT
ENDPROC
FUNC BOOL HAS_RECORDING_LOADED_CHECK(INT iFileNumber, STRING sRecordingName)
IF NOT HAS_RECORDING_BEEN_LOADED(iFileNumber, sRecordingName)
REQUEST_VEHICLE_RECORDING(iFileNumber, sRecordingName)
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(iFileNumber, sRecordingName)
SET_RECORDING_AS_LOADED(iFileNumber, sRecordingName, TRUE)
PRINTSTRING("RECORDING ") PRINTINT(iFileNumber) PRINTSTRING(" ") PRINTSTRING(sRecordingName) PRINTSTRING(" LOADED")
PRINTNL()
ELSE
PRINTSTRING("LOADING RECORDING ") PRINTINT(iFileNumber) PRINTSTRING(" ") PRINTSTRING(sRecordingName)
PRINTNL()
ENDIF
ELSE
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
//Animation Dictionaries
INT iAnimDictHashes[20]
FUNC BOOL HAS_ANIM_DICT_BEEN_LOADED(STRING strAnimDict)
INT iHash = GET_HASH_KEY(strAnimDict)
INT iNumHashes = COUNT_OF(iAnimDictHashes)
INT i = 0
REPEAT iNumHashes i
IF iAnimDictHashes[i] = iHash
RETURN TRUE
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC
PROC SET_ANIM_DICT_AS_LOADED(STRING strAnimDict, BOOL bIsLoaded)
INT iHash = GET_HASH_KEY(strAnimDict)
INT iNumHashes = COUNT_OF(iAnimDictHashes)
INT i = 0
BOOL bQuitLoop = FALSE
WHILE i < iNumHashes AND NOT bQuitLoop
IF bIsLoaded
IF iAnimDictHashes[i] = 0
iAnimDictHashes[i] = iHash
bQuitLoop = TRUE
ENDIF
ELSE
IF iAnimDictHashes[i] = iHash
iAnimDictHashes[i] = 0
bQuitLoop = TRUE
ENDIF
ENDIF
i++
ENDWHILE
ENDPROC
PROC CLEAR_LOADED_ANIM_DICTS()
INT iNumHashes = COUNT_OF(iAnimDictHashes)
INT i = 0
REPEAT iNumHashes i
iAnimDictHashes[i] = 0
ENDREPEAT
ENDPROC
FUNC BOOL HAS_ANIM_DICT_LOADED_CHECK(STRING strAnimDict)
IF NOT HAS_ANIM_DICT_BEEN_LOADED(strAnimDict)
REQUEST_ANIM_DICT(strAnimDict) #IF IS_DEBUG_BUILD PRINTLN("LOADING ANIM DICT ", strAnimDict) #ENDIF
IF HAS_ANIM_DICT_LOADED(strAnimDict)
SET_ANIM_DICT_AS_LOADED(strAnimDict, TRUE) #IF IS_DEBUG_BUILD PRINTLN("ANIM DICT ", strAnimDict, " LOADED") #ENDIF
ENDIF
ELSE
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC UNLOAD_ANIM_DICT(STRING strAnimDict)
IF HAS_ANIM_DICT_BEEN_LOADED(strAnimDict)
REMOVE_ANIM_DICT(strAnimDict)
SET_ANIM_DICT_AS_LOADED(strAnimDict, FALSE)
ENDIF
ENDPROC
// STRUCTURES
//Hotswap
SELECTOR_PED_STRUCT sSelectorPeds
//SELECTOR_CAM_STRUCT sCamDetails
//Dialogue
structPedsForConversation sPedsForConversation
#IF IS_DEBUG_BUILD
WIDGET_GROUP_ID widGroup
#ENDIF
// FUNCTIONS
BOOL bPlayerControl = TRUE
PROC SAFE_SET_PLAYER_CONTROL(PLAYER_INDEX iPlayerIndex, BOOL bSetControlOn, SET_PLAYER_CONTROL_FLAGS iFlags = 0)
SET_PLAYER_CONTROL(iPlayerIndex, bSetControlOn, iFlags)
bPlayerControl = bSetControlOn
ENDPROC
FUNC BOOL SAFE_IS_PLAYER_CONTROL_ON()
IF bPlayerControl
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC ADVANCE_CUTSCENE()
SETTIMERA(0)
iCutsceneStage++
ENDPROC
PROC ADVANCE_STAGE()
bCleanupStage = TRUE
ENDPROC
FUNC BOOL SKIPPED_STAGE()
IF bSkipped = TRUE
bSkipped = FALSE
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
FUNC BOOL INIT_STAGE()
IF bInitStage = FALSE
SETTIMERA(0)
bInitStage = TRUE
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
PROC SWAP_INTS(INT &iA, INT &iB)
iA = iA + iB
iB = iA - iB
iA = iA - iB
ENDPROC
FUNC INT WRAP_INT(INT iValue, INT iMinValue, INT iMaxValue)
IF iMaxValue < iMinValue
SWAP_INTS(iMaxValue, iMinValue)
ENDIF
IF iValue < 0
iValue = iValue + (10 + (ABSI(iValue) / 10) * 10)
ENDIF
RETURN (iValue % ABSI(iMaxValue - iMinValue)) + iMinValue
ENDFUNC
FUNC BOOL CLEANUP_STAGE()
IF bCleanupStage = TRUE
SETTIMERA(0)
bInitStage = FALSE
bCleanupStage = FALSE
iCutsceneStage = 0
iDialogueStage = 0
INT i
REPEAT COUNT_OF(iDialogueLineCount) i
iDialogueLineCount[i] = -1
ENDREPEAT
iDialogueTimer = 0
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
PROC SAFE_CLEAR_HELP(BOOL bClearNow = TRUE)
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP(bClearNow)
ENDIF
ENDPROC
PROC CLEAR_TEXT()
CLEAR_PRINTS()
SAFE_CLEAR_HELP(TRUE)
CLEAR_ALL_FLOATING_HELP()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDPROC
FUNC BOOL PRINT_ADV(STRING sPrint, INT iDuration = DEFAULT_GOD_TEXT_TIME, BOOL bOnce = TRUE)
IF NOT HAS_LABEL_BEEN_TRIGGERED(sPrint)
PRINT_NOW(sPrint, iDuration, 1)
SET_LABEL_AS_TRIGGERED(sPrint, bOnce)
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
PROC PRINT_HELP_ADV(STRING sPrint, BOOL bOnce = TRUE, INT iOverrideTime = -1)
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
OR (IS_HELP_MESSAGE_BEING_DISPLAYED()
AND GET_GAME_TIMER() > iHelpTimer)
IF NOT HAS_LABEL_BEEN_TRIGGERED(sPrint)
PRINT_HELP(sPrint, iOverrideTime)
SET_LABEL_AS_TRIGGERED(sPrint, bOnce)
PRINTLN("PRINTHELP ", sPrint)
iHelpTimer = GET_GAME_TIMER() + 2000
ENDIF
ENDIF
ENDPROC
/// PURPOSE:
/// Sets visual field angles and ranges for specified ped.
/// PARAMS:
/// PedIndex - Ped index to change.
/// fSeeingRange - How far the vision extends.
/// fPeripheralSeeingRange - How far the peripheral vision extends.
/// fCenterAngle - The angle that defines field of view.
/// fMinAngle - The minimum angle that defines peripheral field of view.
/// fMaxAngle - The maximum angle that defines peripheral field of view.
PROC SET_PED_VISUAL_FIELD_PROPERTIES(PED_INDEX PedIndex, FLOAT fSeeingRange = 60.0, FLOAT fPeripheralSeeingRange = 5.0,
FLOAT fCenterAngle = 120.0, FLOAT fMinAngle = -90.0, FLOAT fMaxAngle = 90.0)
IF NOT IS_PED_INJURED(PedIndex)
SET_PED_SEEING_RANGE(PedIndex, fSeeingRange)
SET_PED_VISUAL_FIELD_PERIPHERAL_RANGE(PedIndex, fPeripheralSeeingRange)
SET_PED_VISUAL_FIELD_CENTER_ANGLE(PedIndex, fCenterAngle / 2.0)
SET_PED_VISUAL_FIELD_MIN_ANGLE(PedIndex, fMinAngle)
SET_PED_VISUAL_FIELD_MAX_ANGLE(PedIndex, fMaxAngle)
ENDIF
ENDPROC
FUNC PED_INDEX PLAYER_PED(enumCharacterList CHAR_TYPE)
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TYPE
RETURN PLAYER_PED_ID()
ELSE
RETURN sSelectorPeds.pedID[GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(CHAR_TYPE)]
ENDIF
ENDFUNC
FUNC PED_INDEX NOT_PLAYER_PED_ID()
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
RETURN sSelectorPeds.pedID[GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(CHAR_TREVOR)]
ELSE //GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR
RETURN sSelectorPeds.pedID[GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(CHAR_MICHAEL)]
ENDIF
ENDFUNC
PROC SET_PED_POSITION(PED_INDEX pedIndex, VECTOR vCoords, FLOAT fHeading, BOOL bKeepVehicle = TRUE)
IF DOES_ENTITY_EXIST(pedIndex)
IF NOT IS_PED_INJURED(pedIndex)
IF bKeepVehicle = TRUE
SET_PED_COORDS_KEEP_VEHICLE(pedIndex, vCoords)
ELSE
SET_ENTITY_COORDS(pedIndex, vCoords)
ENDIF
CLEAR_PED_WETNESS(pedIndex)
SET_ENTITY_HEADING(pedIndex, fHeading)
ENDIF
ENDIF
ENDPROC
PROC SET_VEHICLE_POSITION(VEHICLE_INDEX vehicleIndex, VECTOR vCoords, FLOAT fHeading)
SET_ENTITY_COORDS(vehicleIndex, vCoords)
SET_ENTITY_HEADING(vehicleIndex, fHeading)
ENDPROC
PROC SPAWN_PLAYER(PED_INDEX &pedIndex, enumCharacterList eChar, VECTOR vStart, FLOAT fStart = 0.0, BOOL bDefault = FALSE)
IF NOT DOES_ENTITY_EXIST(pedIndex)
WHILE NOT CREATE_PLAYER_PED_ON_FOOT(pedIndex, eChar, vStart, fStart)
WAIT(0)
ENDWHILE
IF bDefault = TRUE
SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex)
ENDIF
ENDIF
ENDPROC
PROC SPAWN_PED(PED_INDEX &pedIndex, MODEL_NAMES eModel, VECTOR vStart, FLOAT fStart = 0.0, BOOL bDefault = TRUE)
IF NOT DOES_ENTITY_EXIST(pedIndex)
pedIndex = CREATE_PED(PEDTYPE_MISSION, eModel, vStart, fStart)
IF bDefault = TRUE
SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex)
ENDIF
ENDIF
ENDPROC
PROC SPAWN_VEHICLE(VEHICLE_INDEX &vehIndex, MODEL_NAMES eModel, VECTOR vStart, FLOAT fStart = 0.0, INT iColour = -1, FLOAT fDirt = 0.0)
IF NOT DOES_ENTITY_EXIST(vehIndex)
vehIndex = CREATE_VEHICLE(eModel, vStart, fStart)
IF iColour >= 0
SET_VEHICLE_COLOURS(vehIndex, iColour, iColour)
ENDIF
SET_VEHICLE_DIRT_LEVEL(vehIndex, fDirt)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehIndex, TRUE)
ENDIF
ENDPROC
FUNC BOOL SAFE_DEATH_CHECK_PED(PED_INDEX &pedIndex)
IF DOES_ENTITY_EXIST(pedIndex)
IF IS_ENTITY_DEAD(pedIndex)
OR IS_PED_INJURED(pedIndex)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL SAFE_DEATH_CHECK_VEHICLE(VEHICLE_INDEX &vehIndex)
IF DOES_ENTITY_EXIST(vehIndex)
IF IS_ENTITY_DEAD(vehIndex)
OR NOT IS_VEHICLE_DRIVEABLE(vehIndex, TRUE)
OR IS_VEHICLE_PERMANENTLY_STUCK(vehIndex)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC SAFE_SET_ENTITY_VISIBLE(ENTITY_INDEX EntityIndex, BOOL VisibleFlag)
IF DOES_ENTITY_EXIST(EntityIndex)
IF NOT IS_ENTITY_DEAD(EntityIndex)
IF VisibleFlag
IF NOT IS_ENTITY_VISIBLE(EntityIndex)
SET_ENTITY_VISIBLE(EntityIndex, TRUE)
ENDIF
ELSE
IF IS_ENTITY_VISIBLE(EntityIndex)
SET_ENTITY_VISIBLE(EntityIndex, FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC SAFE_ADD_BLIP_LOCATION(BLIP_INDEX &blipIndex, VECTOR vCoords, BOOL bRoute = FALSE)
IF NOT DOES_BLIP_EXIST(blipIndex)
blipIndex = CREATE_BLIP_FOR_COORD(vCoords, bRoute)
SET_BLIP_PRIORITY(blipIndex, BLIPPRIORITY_HIGHEST)
ENDIF
ENDPROC
PROC SAFE_ADD_BLIP_PED(BLIP_INDEX &blipIndex, PED_INDEX &pedIndex, BOOL bEnemy = TRUE)
IF NOT DOES_BLIP_EXIST(blipIndex)
IF DOES_ENTITY_EXIST(pedIndex)
IF NOT IS_PED_INJURED(pedIndex)
blipIndex = CREATE_BLIP_FOR_PED(pedIndex, bEnemy)
IF bEnemy = FALSE
SET_BLIP_PRIORITY(blipIndex, BLIPPRIORITY_HIGH)
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC SAFE_ADD_BLIP_VEHICLE(BLIP_INDEX &blipIndex, VEHICLE_INDEX &vehIndex, BOOL bEnemy = TRUE)
IF NOT DOES_BLIP_EXIST(blipIndex)
IF DOES_ENTITY_EXIST(vehIndex)
IF NOT IS_ENTITY_DEAD(vehIndex)
blipIndex = CREATE_BLIP_FOR_VEHICLE(vehIndex, bEnemy)
IF bEnemy = FALSE
SET_BLIP_PRIORITY(blipIndex, BLIPPRIORITY_HIGH)
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC SAFE_REMOVE_BLIP(BLIP_INDEX &blipIndex)
IF DOES_BLIP_EXIST(blipIndex)
REMOVE_BLIP(blipIndex)
ENDIF
ENDPROC
PROC SAFE_DELETE_PED(PED_INDEX &pedIndex)
IF DOES_ENTITY_EXIST(pedIndex)
DELETE_PED(pedIndex)
ENDIF
ENDPROC
PROC SAFE_DELETE_VEHICLE(VEHICLE_INDEX &vehicleIndex)
IF DOES_ENTITY_EXIST(vehicleIndex)
DELETE_VEHICLE(vehicleIndex)
ENDIF
ENDPROC
PROC SAFE_DELETE_OBJECT(OBJECT_INDEX &objectIndex)
IF DOES_ENTITY_EXIST(objectIndex)
DELETE_OBJECT(objectIndex)
ENDIF
ENDPROC
PROC SAFE_FREEZE_ENTITY_POSITION(ENTITY_INDEX EntityIndex, BOOL FrozenByScriptFlag)
IF NOT IS_ENTITY_ATTACHED(EntityIndex)
IF (IS_ENTITY_A_PED(EntityIndex)
AND NOT IS_PED_IN_ANY_VEHICLE(GET_PED_INDEX_FROM_ENTITY_INDEX(EntityIndex)))
OR NOT IS_ENTITY_A_PED(EntityIndex)
FREEZE_ENTITY_POSITION(EntityIndex, FrozenByScriptFlag)
ENDIF
ENDIF
ENDPROC
//Borrowed from locates_private.sch!
PROC EMPTY_VEHICLE_OF_PEDS(VEHICLE_INDEX inVehicle)
PED_INDEX pedTemp
INT i
INT iMaxNumberOfPassengers
//Clear tasks of any passengers or drivers
IF DOES_ENTITY_EXIST(inVehicle)
IF IS_VEHICLE_DRIVEABLE(inVehicle)
//Driver
pedTemp = GET_PED_IN_VEHICLE_SEAT(inVehicle)
IF DOES_ENTITY_EXIST(pedTemp)
IF NOT IS_PED_INJURED(pedTemp)
CLEAR_PED_TASKS_IMMEDIATELY(pedTemp)
ENDIF
ENDIF
iMaxNumberOfPassengers = GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(inVehicle)
//Passengers
REPEAT iMaxNumberOfPassengers i
IF NOT IS_VEHICLE_SEAT_FREE(inVehicle, INT_TO_ENUM(VEHICLE_SEAT, i))
pedTemp = GET_PED_IN_VEHICLE_SEAT(inVehicle, INT_TO_ENUM(VEHICLE_SEAT, i))
IF DOES_ENTITY_EXIST(pedTemp)
IF NOT IS_PED_INJURED(pedTemp)
CLEAR_PED_TASKS_IMMEDIATELY(pedTemp)
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDIF
ENDPROC
FUNC BOOL SETUP_JIMMYS_CAR(VEHICLE_INDEX vehIndex)
IF DOES_ENTITY_EXIST(vehIndex)
AND NOT IS_ENTITY_DEAD(vehIndex)
SET_VEHICLE_AS_RESTRICTED(vehIndex, 0)
SET_VEHICLE_NUMBER_PLATE_TEXT(vehIndex, "57EIG117")
SET_VEHICLE_CAN_SAVE_IN_GARAGE(vehIndex, FALSE)
SET_VEHICLE_HAS_STRONG_AXLES(vehIndex, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehIndex, TRUE)
SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehIndex, SC_DOOR_FRONT_LEFT, FALSE)
SET_VEHICLE_TYRES_CAN_BURST(vehIndex, FALSE)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC STRUCT_ENTITY_ID CONSTRUCT_ENTITY_ID()
STRUCT_ENTITY_ID structEntityID
RETURN structEntityID
ENDFUNC
FLOAT SMALL_FLOAT = 0.000001
//FLOAT fHoodSpringConstant = 700.0
//FLOAT fHoodDampingRatio = 1.0
//VECTOR vHoodVelocity
//VECTOR vHoodResult
FUNC FLOAT DAMPED_SPRING_CAM(FLOAT &fVelocity, FLOAT &fResult, FLOAT fTarget, FLOAT fSpringConstant, FLOAT fDampingRatio)
//If spring constant is too small, snap to the fTarget.
IF (fSpringConstant < SMALL_FLOAT)
fVelocity = 0.0
fResult = fTarget
ELSE
IF (TIMESTEP() >= SMALL_FLOAT)
//NOTE: The spring equations have been normalised for unit mass.
FLOAT fIntialDisplacement = fResult - fTarget
FLOAT fHalfDampingCoeff = fDampingRatio * SQRT(fSpringConstant)
FLOAT fOmegaSqr = fSpringConstant - (fHalfDampingCoeff * fHalfDampingCoeff)
FLOAT fSpringDisplacementToApply = 0.0
IF(fOmegaSqr >= SMALL_FLOAT)
//Under-damped.
FLOAT fOmega = SQRT(fOmegaSqr)
FLOAT fC = (fVelocity + (fHalfDampingCoeff * fIntialDisplacement)) / fOmega
fSpringDisplacementToApply = POW(2.718281828, -fHalfDampingCoeff * TIMESTEP()) * ((fIntialDisplacement * COS(fOmega * TIMESTEP())) +
(fC * SIN(fOmega * TIMESTEP())))
fVelocity = POW(2.718281828, -fHalfDampingCoeff * TIMESTEP()) * ((-fHalfDampingCoeff *
((fIntialDisplacement * COS(fOmega * TIMESTEP())) + (fC * SIN(fOmega * TIMESTEP())))) +
(fOmega * ((fC * COS(fOmega * TIMESTEP())) - (fIntialDisplacement * SIN(fOmega * TIMESTEP())))))
ELSE
//Critically- or over-damped.
//NOTE: We must negate (and clamp) the square fOmega term and use an alternate equation to avoid computing the square root of a
//negative number.
FLOAT fNegatedfOmegaSqr = MAX_VALUE(-fOmegaSqr, 0.0)
FLOAT fOmega = SQRT(fNegatedfOmegaSqr)
fSpringDisplacementToApply = fIntialDisplacement * POW(2.718281828, (-fHalfDampingCoeff + fOmega) * TIMESTEP())
fVelocity = (-fHalfDampingCoeff + fOmega) * fSpringDisplacementToApply
ENDIF
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// NOTE: The equation for critical damping should actually be as below, but the solution for an over-damped spring works adequately for
// our purposes.
//
// const float fAlpha = fVelocity + (fHalfDampingCoeff * fIntialDisplacement);
// fSpringDisplacementToApply = ((fAlpha * TIMESTEP()) + fIntialDisplacement) * EXP(-fHalfDampingCoeff * TIMESTEP());
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
fResult = fTarget + fSpringDisplacementToApply
ENDIF
ENDIF
RETURN fResult
ENDFUNC
FUNC FLOAT GET_HEADING_BETWEEN_VECTORS(VECTOR V1, VECTOR V2)
RETURN GET_HEADING_FROM_VECTOR_2D(V2.x-V1.x, V2.y-V1.y)
ENDFUNC
INT iTakeFrameCount
BOOL bOverHoodCinematicCam
PROC OVER_HOOD_CINEMATIC_CAM()
IF iTakeFrameCount != GET_FRAME_COUNT()
iTakeFrameCount = GET_FRAME_COUNT()
IF NOT DOES_CAM_EXIST(camCinematic)
camCinematic = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", FALSE)
SET_CAM_FOV(camCinematic, 28.6103) //30.0)
SHAKE_CAM(camCinematic, "HAND_SHAKE", 1.0)
SET_CAM_ACTIVE(camCinematic, TRUE)
// vHoodVelocity = VECTOR_ZERO
// vHoodResult = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<-0.0481, 2.0908, 0.5994>>)
//Vehicle Zoom Level
IF NOT bZoomLevel
vehicleZoomLevel = GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()
camViewModeOnFoot = GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)
PRINTLN("Store Zoom Level GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL() = ", ENUM_TO_INT(GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()))
PRINTLN("Store Zoom Level GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = ", ENUM_TO_INT(GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)))
bZoomLevel = TRUE
ENDIF
ENDIF
IF bOverHoodCinematicCam
AND IS_ENTITY_UPRIGHT(vehCar)
IF DOES_CAM_EXIST(camCinematic)
IF NOT IS_CAM_RENDERING(camCinematic)
HIDE_HUD_AND_RADAR_THIS_FRAME()
IF IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
ENDIF
//Special Ability
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), FALSE)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
OVERRIDE_LODSCALE_THIS_FRAME(1.0)
CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE(0.5)
CASCADE_SHADOWS_SET_SHADOW_SAMPLE_TYPE("CSM_ST_BOX4x4")
CASCADE_SHADOWS_ENABLE_FREEZER(FALSE)
SET_TIMECYCLE_MODIFIER("Hint_cam")
ELSE
OVERRIDE_LODSCALE_THIS_FRAME(1.0)
ENDIF
ENDIF
ELSE
bOverHoodCinematicCam = FALSE
IF DOES_CAM_EXIST(camCinematic)
IF IS_CAM_RENDERING(camCinematic)
OR eMissionObjective = cutArrive
RENDER_SCRIPT_CAMS(FALSE, FALSE)
CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE(1.0)
CASCADE_SHADOWS_INIT_SESSION()
CASCADE_SHADOWS_ENABLE_FREEZER(TRUE)
IF GET_TIMECYCLE_MODIFIER_INDEX() != -1
CLEAR_TIMECYCLE_MODIFIER()
ENDIF
IF eMissionObjective != stageDriveTo
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_CAM_EXIST(camCinematic)
AND eMissionObjective != cutArrive
// VECTOR vCamCinematic = GET_CAM_COORD(camCinematic)
// VECTOR vTrack = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<-0.0481, 2.0908, 0.5994>>) //<<-0.9, 2.2, 0.479107>>)
//
// vCamCinematic.X = vTrack.X -@ (((vTrack.X - vCamCinematic.X) / 6) * 15) //vCamCinematic.X = vCamCinematic.X +@ (((vTrack.X - vCamCinematic.X) / 1.2) * 15)
// vCamCinematic.Y = vTrack.Y -@ (((vTrack.Y - vCamCinematic.Y) / 6) * 15) //vCamCinematic.Y = vCamCinematic.Y +@ (((vTrack.Y - vCamCinematic.Y) / 1.2) * 15)
// vCamCinematic.Z = vTrack.Z -@ (((vTrack.Z - vCamCinematic.Z) / 6) * 15) //vCamCinematic.Z = vCamCinematic.Z +@ (((vTrack.Z - vCamCinematic.Z) / 1.2) * 15)
//
// ATTACH_CAM_TO_ENTITY(camCinematic, vehCar, GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehCar, vCamCinematic)) //SET_CAM_COORD(camCinematic, vCamCinematic)
//
// POINT_CAM_AT_ENTITY(camCinematic, vehCar, <<-0.2945, -0.8930, 0.4086>>) //<<0.0, 0.0, 0.5>>)
//
// VECTOR vTrack = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<-0.0481, 2.0908, 0.5994>>)
//
// DAMPED_SPRING_CAM(vHoodVelocity.X, vHoodResult.X, vTrack.X, fHoodSpringConstant, fHoodDampingRatio)
// DAMPED_SPRING_CAM(vHoodVelocity.Y, vHoodResult.Y, vTrack.Y, fHoodSpringConstant, fHoodDampingRatio)
// DAMPED_SPRING_CAM(vHoodVelocity.Z, vHoodResult.Z, vTrack.Z, fHoodSpringConstant, fHoodDampingRatio)
ATTACH_CAM_TO_ENTITY(camCinematic, vehCar, <<-0.0481, 2.0908, 0.5994>>)
POINT_CAM_AT_ENTITY(camCinematic, vehCar, <<-0.2945, -0.8930, 0.4086>>)
// #IF IS_DEBUG_BUILD
// VECTOR vTempOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehCar, GET_CAM_COORD(camCinematic))
// PRINTLN("Speed: ", GET_ENTITY_SPEED(vehCar), " camCinematic offset: ", vTempOffset)
// #ENDIF
ENDIF
IF GET_INTERIOR_FROM_ENTITY(vehCar) != NULL
SET_ROOM_FOR_GAME_VIEWPORT_BY_KEY(GET_ROOM_KEY_FROM_ENTITY(vehCar))
ENDIF
//Stats
IF DOES_CAM_EXIST(camCinematic)
AND IS_CAM_ACTIVE(camCinematic)
INFORM_MISSION_STATS_SYSTEM_OF_ACTION_CAM_START()
ELSE
INFORM_MISSION_STATS_SYSTEM_OF_ACTION_CAM_END()
ENDIF
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
BOOL bInputNextCameraPressed
bInputNextCameraPressed = FALSE
IF bCameraViewToggle
IF NOT IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
AND NOT IS_CUSTOM_MENU_ON_SCREEN() AND NOT IS_GAMEPLAY_HINT_ACTIVE()
bInputNextCameraPressed = TRUE
bCameraViewToggle = FALSE
ENDIF
IF IS_CUSTOM_MENU_ON_SCREEN() OR IS_GAMEPLAY_HINT_ACTIVE()
bCameraViewToggle = FALSE
ENDIF
ENDIF
IF IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
bCameraViewToggle = TRUE
ENDIF
IF bInputNextCameraPressed
PRINTLN("DISABLED_CONTROL_JUST_PRESSED(INPUT_NEXT_CAMERA)")
PRINTLN("vehicleZoomLevel=", vehicleZoomLevel)
PRINTLN("bVehicleZoomInOut=", bVehicleZoomInOut)
PRINTLN("------------------------------")
IF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_BONNET
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_MEDIUM)
ELIF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_NEAR
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_MEDIUM)
ELIF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_MEDIUM
IF bVehicleZoomInOut
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_FAR)
ELSE
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_NEAR)
ENDIF
bVehicleZoomInOut = !bVehicleZoomInOut
ELIF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_FAR
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_MEDIUM)
ENDIF
vehicleZoomLevel = GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()
PRINTLN("vehicleZoomLevel=", vehicleZoomLevel)
PRINTLN("bVehicleZoomInOut=", bVehicleZoomInOut)
PRINTLN("------------------------------")
ENDIF
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
ENDIF
ENDPROC
ENUM DOORS_LIST
BATHROOM_DOOR, //V_ILEV_MM_DOORW, <<-804.95, 171.86, 76.89>>
JIMMY_DOOR, //V_ILEV_MM_DOORSON, <<-806.77, 174.02, 76.89>>
TRACEY_DOOR, //V_ILEV_MM_DOORDAUGHTER, <<-802.70, 176.18, 76.89>>
MICHAEL_DOOR, //V_ILEV_MM_DOORW, <<-809.28, 177.86, 76.89>>
GARAGE_DOOR //V_ILEV_MM_DOOR, <<-806.28, 186.02, 72.62>>
ENDENUM
FUNC BOOL SMOOTH_CLOSE_DOOR(DOORS_LIST eDoorsList, MODEL_NAMES modelName, VECTOR vCoords, BOOL bLock, FLOAT fSpeed = 0.2, FLOAT fTolerance = 0.01, FLOAT fOpenRatioIn = 0.0, BOOL bRemoveSpring = FALSE)
FLOAT fOpenRatio
INT iFrontDoor
SWITCH eDoorsList
CASE BATHROOM_DOOR
iFrontDoor = iBathroomDoor
BREAK
CASE JIMMY_DOOR
iFrontDoor = iJimmyDoor
BREAK
CASE TRACEY_DOOR
iFrontDoor = iTraceyDoor
BREAK
CASE MICHAEL_DOOR
iFrontDoor = iMichaelDoor
BREAK
CASE GARAGE_DOOR
iFrontDoor = iGarageDoor
BREAK
ENDSWITCH
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iFrontDoor)
DOOR_STATE_ENUM eDoorState = DOOR_SYSTEM_GET_DOOR_STATE(iFrontDoor)
FLOAT fDoorOpenRatio = DOOR_SYSTEM_GET_OPEN_RATIO(iFrontDoor)
//Release...
fDoorOpenRatio = fDoorOpenRatio
eDoorState = eDoorState
modelName = modelName
DOOR_SYSTEM_SET_SPRING_REMOVED(iFrontDoor, bRemoveSpring)
IF fOpenRatio <= fOpenRatioIn + -fTolerance
OR fOpenRatio >= fOpenRatioIn + fTolerance
IF fOpenRatio > fOpenRatioIn
fOpenRatio -= fSpeed
ELIF fOpenRatio < fOpenRatioIn
fOpenRatio += fSpeed
ENDIF
DOOR_SYSTEM_SET_OPEN_RATIO(iFrontDoor, fOpenRatio, FALSE)
CLEAR_AREA_OF_OBJECTS(vCoords, 2.0)
IF bLock
DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_LOCKED, FALSE, TRUE)
ELSE
DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_UNLOCKED, FALSE, TRUE)
ENDIF
RETURN FALSE
ELSE
fOpenRatio = fOpenRatioIn
DOOR_SYSTEM_SET_OPEN_RATIO(iFrontDoor, fOpenRatio, FALSE)
IF bLock
DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_LOCKED, FALSE, TRUE)
ELSE
DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_UNLOCKED, FALSE, TRUE)
ENDIF
RETURN TRUE
ENDIF
ELSE
RETURN FALSE
ENDIF
ENDFUNC
PROC UNLOCK_DOOR(DOORS_LIST eDoorsList, MODEL_NAMES modelName, BOOL bRemoveSpring = FALSE)
INT iFrontDoor
SWITCH eDoorsList
CASE BATHROOM_DOOR
iFrontDoor = iBathroomDoor
BREAK
CASE JIMMY_DOOR
iFrontDoor = iJimmyDoor
BREAK
CASE TRACEY_DOOR
iFrontDoor = iTraceyDoor
BREAK
CASE MICHAEL_DOOR
iFrontDoor = iMichaelDoor
BREAK
CASE GARAGE_DOOR
iFrontDoor = iGarageDoor
BREAK
ENDSWITCH
//Release...
modelName = modelName
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iFrontDoor)
DOOR_STATE_ENUM eDoorState = DOOR_SYSTEM_GET_DOOR_STATE(iFrontDoor)
IF eDoorState = DOORSTATE_LOCKED
DOOR_SYSTEM_SET_SPRING_REMOVED(iFrontDoor, bRemoveSpring, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_UNLOCKED, FALSE, TRUE)
ELSE
DOOR_SYSTEM_SET_SPRING_REMOVED(iFrontDoor, bRemoveSpring, FALSE, TRUE)
ENDIF
ENDIF
ENDPROC
//ARM3_START = /2
//ARM3_RESTART_1 =
//ARM3_WINDOW =
//ARM3_RESTART_2 =
//ARM3_RESTART_3 =
//ARM3_GARAGE_STOP =
//ARM3_CAR =
//ARM3_RESTART_4 =
//ARM3_CALL =
//ARM3_MIC = /2
//ARM3_RESTART_5 =
//ARM3_CS =
//ARM3_RESTART_6 =
//ARM3_SPEED =
//ARM3_RESTART_7 =
//ARM3_HIT = /2
//ARM3_HIT_STOP =
//ARM3_RESTART_8 =
//ARM3_FAIL =
STRING sAudioEvent
INT iAudioPrepareTimer //This is an override in case an audio event is prepared but never used
PROC AUDIO_CONTROLLER() #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("<<<<<<<< AUDIO_CONTROLLER >>>>>>>> (sAudioEvent = ", sAudioEvent, ")") ENDIF #ENDIF
IF ePlayAudioTrack = NO_AUDIO
AND (NOT IS_MUSIC_ONESHOT_PLAYING()
OR GET_GAME_TIMER() > iAudioPrepareTimer)
SWITCH ePrepAudioTrack
CASE ARM3_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - ARM3_START") ENDIF #ENDIF
IF IS_STRING_NULL_OR_EMPTY(sAudioEvent)
OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "ARM3_START")
IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent)
#IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF
ENDIF
sAudioEvent = "ARM3_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF
ELSE
IF PREPARE_MUSIC_EVENT("ARM3_START")
ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - ARM3_START") ENDIF #ENDIF
ENDIF
ENDIF
BREAK
CASE ARM3_MIC #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - ARM3_MIC") ENDIF #ENDIF
IF IS_STRING_NULL_OR_EMPTY(sAudioEvent)
OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "ARM3_MIC")
IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent)
#IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF
ENDIF
sAudioEvent = "ARM3_MIC" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF
ELSE
IF PREPARE_MUSIC_EVENT("ARM3_MIC")
ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - ARM3_MIC") ENDIF #ENDIF
ENDIF
ENDIF
BREAK
CASE ARM3_HIT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - ARM3_HIT") ENDIF #ENDIF
IF IS_STRING_NULL_OR_EMPTY(sAudioEvent)
OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "ARM3_HIT")
IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent)
#IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF
ENDIF
sAudioEvent = "ARM3_HIT" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF
ELSE
IF PREPARE_MUSIC_EVENT("ARM3_HIT")
ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - ARM3_HIT") ENDIF #ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
SWITCH ePlayAudioTrack
CASE ARM3_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_START") ENDIF #ENDIF
IF IS_STRING_NULL_OR_EMPTY(sAudioEvent)
OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "ARM3_START")
IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent)
#IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF
ENDIF
sAudioEvent = "ARM3_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF
ELSE
IF PREPARE_MUSIC_EVENT("ARM3_START")
IF TRIGGER_MUSIC_EVENT("ARM3_START")
iAudioPrepareTimer = GET_GAME_TIMER() + 5000 //Assumes 5 seconds is long enough for the one shot to play
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_START") ENDIF #ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_1 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_1") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_1")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_1") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_WINDOW #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_WINDOW") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_WINDOW")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_WINDOW") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_2 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_2") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_2")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_2") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_3 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_3") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_3")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_3") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_GARAGE_STOP #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_GARAGE_STOP") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_GARAGE_STOP")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_GARAGE_STOP") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_CAR #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_CAR") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_CAR")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_CAR") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_4 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_4") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_4")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_4") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_CALL #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_CALL") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_CALL")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_CALL") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_MIC #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_MIC") ENDIF #ENDIF
IF IS_STRING_NULL_OR_EMPTY(sAudioEvent)
OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "ARM3_MIC")
IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent)
#IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF
ENDIF
sAudioEvent = "ARM3_MIC" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF
ELSE
IF PREPARE_MUSIC_EVENT("ARM3_MIC")
IF TRIGGER_MUSIC_EVENT("ARM3_MIC")
iAudioPrepareTimer = GET_GAME_TIMER() + 5000 //Assumes 5 seconds is long enough for the one shot to play
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_MIC") ENDIF #ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_5 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_5") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_5")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_5") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_CS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_CS") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_CS")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_CS") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_6 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_6") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_6")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_6") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_SPEED #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_SPEED") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_SPEED")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_SPEED") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_7 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_7") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_7")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_7") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_HIT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_HIT") ENDIF #ENDIF
IF IS_STRING_NULL_OR_EMPTY(sAudioEvent)
OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "ARM3_HIT")
IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent)
#IF IS_DEBUG_BUILD IF #ENDIF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Cancelled audio - sAudioEvent = ", sAudioEvent) ENDIF ENDIF #ENDIF
ENDIF
sAudioEvent = "ARM3_HIT" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF
ELSE
IF PREPARE_MUSIC_EVENT("ARM3_HIT")
IF TRIGGER_MUSIC_EVENT("ARM3_HIT")
iAudioPrepareTimer = GET_GAME_TIMER() + 5000 //Assumes 5 seconds is long enough for the one shot to play
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_HIT") ENDIF #ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE ARM3_HIT_STOP #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_HIT_STOP") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_HIT_STOP")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_HIT_STOP") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_RESTART_8 #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_RESTART_8") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_RESTART_8")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_RESTART_8") ENDIF #ENDIF
ENDIF
BREAK
CASE ARM3_FAIL #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - ARM3_FAIL") ENDIF #ENDIF
IF TRIGGER_MUSIC_EVENT("ARM3_FAIL")
ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - ARM3_FAIL") ENDIF #ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC LOAD_AUDIO(AUDIO_TRACK eSetAudioTrack)
ePrepAudioTrack = eSetAudioTrack
AUDIO_CONTROLLER()
ENDPROC
PROC PLAY_AUDIO(AUDIO_TRACK eSetAudioTrack)
ePlayAudioTrack = eSetAudioTrack
AUDIO_CONTROLLER()
ENDPROC
PROC CLEANUP_TENNIS_PROPS()
IF DOES_ENTITY_EXIST(objTennisA)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
STOP_SYNCHRONIZED_ENTITY_ANIM(objTennisA, 0.0, TRUE)
ENDIF
DETACH_ENTITY(objTennisA, FALSE)
FREEZE_ENTITY_POSITION(objTennisA, FALSE)
ACTIVATE_PHYSICS(objTennisA)
ENDIF
IF DOES_ENTITY_EXIST(objTennisB)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
STOP_SYNCHRONIZED_ENTITY_ANIM(objTennisB, 0.0, TRUE)
ENDIF
DETACH_ENTITY(objTennisB, FALSE)
FREEZE_ENTITY_POSITION(objTennisB, FALSE)
ACTIVATE_PHYSICS(objTennisB)
ENDIF
IF DOES_ENTITY_EXIST(objBag)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
STOP_SYNCHRONIZED_ENTITY_ANIM(objBag, 0.0, TRUE)
ENDIF
DETACH_ENTITY(objBag, FALSE)
FREEZE_ENTITY_POSITION(objBag, FALSE)
ACTIVATE_PHYSICS(objBag)
ENDIF
ENDPROC
PROC CLEANUP_GAME_PROPS()
IF DOES_ENTITY_EXIST(objGamepad)
DETACH_ENTITY(objGamepad, FALSE)
FREEZE_ENTITY_POSITION(objGamepad, FALSE)
ACTIVATE_PHYSICS(objGamepad)
ENDIF
IF DOES_ENTITY_EXIST(objHeadset)
DETACH_ENTITY(objHeadset, FALSE)
FREEZE_ENTITY_POSITION(objHeadset, FALSE)
ACTIVATE_PHYSICS(objHeadset)
ENDIF
ENDPROC
//Cleanup
PROC MISSION_CLEANUP(BOOL bRestart = FALSE)
//Fade Out
// IF NOT IS_PLAYER_PLAYING(PLAYER_ID())
// IF NOT IS_SCREEN_FADING_OUT()
// AND NOT IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_OUT(500)
// ENDIF
//
// WHILE NOT IS_SCREEN_FADED_OUT()
// WAIT(0)
// ENDWHILE
// ENDIF
IF bVideoRecording
REPLAY_STOP_EVENT()
bVideoRecording = FALSE
ENDIF
bCameraViewToggle = FALSE
//GPS
//SET_IGNORE_NO_GPS_FLAG(FALSE)
//Stats
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL)
//Player
IF IS_PLAYER_PLAYING(PLAYER_ID())
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(), FALSE)
//Dialogue
STOP_PED_SPEAKING(PLAYER_PED_ID(), FALSE)
ENDIF
IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_FRANKLIN))
AND NOT IS_PED_INJURED(PLAYER_PED(CHAR_FRANKLIN))
RESET_PED_IN_VEHICLE_CONTEXT(PLAYER_PED(CHAR_FRANKLIN))
ENDIF
IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_MICHAEL))
AND NOT IS_PED_INJURED(PLAYER_PED(CHAR_MICHAEL))
SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(PLAYER_PED(CHAR_MICHAEL), TRUE)
ENDIF
SET_PLAYER_SNEAKING_NOISE_MULTIPLIER(PLAYER_ID(), 1.0)
SET_PLAYER_NOISE_MULTIPLIER(PLAYER_ID(), 1.0)
SET_PLAYER_CAN_DO_DRIVE_BY(PLAYER_ID(), TRUE)
DISABLE_PLAYER_FIRING(PLAYER_ID(), FALSE)
//Unlock Car Doors
IF DOES_ENTITY_EXIST(vehCar)
IF NOT IS_ENTITY_DEAD(vehCar)
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_UNLOCKED)
ENDIF
ENDIF
//Doors
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iBathroomDoor)
REMOVE_DOOR_FROM_SYSTEM(iBathroomDoor)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iJimmyDoor)
REMOVE_DOOR_FROM_SYSTEM(iJimmyDoor)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iTraceyDoor)
REMOVE_DOOR_FROM_SYSTEM(iTraceyDoor)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iMichaelDoor)
REMOVE_DOOR_FROM_SYSTEM(iMichaelDoor)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarageDoor)
REMOVE_DOOR_FROM_SYSTEM(iGarageDoor)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor1)
REMOVE_DOOR_FROM_SYSTEM(iDealershipDoor1)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor2)
REMOVE_DOOR_FROM_SYSTEM(iDealershipDoor2)
ENDIF
//Audio - Door Portals
REMOVE_PORTAL_SETTINGS_OVERRIDE("V_MICHAEL_PS_BATHROOM_WITH_WINDOW")
//Unlock Mansion Door
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MICHAEL_MANSION_GATE, PLAYER_PED_ID())
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_MICHAEL_MANSION_GATE].doorID, DOORSTATE_UNLOCKED, TRUE, TRUE)
//Dealership Shutter
// IF intGarage != NULL
// IF IS_INTERIOR_ENTITY_SET_ACTIVE(intGarage, "shutter_closed")
// DEACTIVATE_INTERIOR_ENTITY_SET(intGarage, "shutter_closed")
// ENDIF
//
// IF NOT IS_INTERIOR_ENTITY_SET_ACTIVE(intGarage, "shutter_open")
// ACTIVATE_INTERIOR_ENTITY_SET(intGarage, "shutter_open")
// ENDIF
// ENDIF
//LOD
IF bPassed = FALSE
SET_BUILDING_STATE(BUILDINGNAME_IPL_CAR_SHOWROOM_LOD_BOARD, BUILDINGSTATE_NORMAL, FALSE)
ENDIF
//Portals
IF bPassed = FALSE
IF HAS_LABEL_BEEN_TRIGGERED("WindowSmashed")
REMOVE_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN")
SET_LABEL_AS_TRIGGERED("WindowSmashed", FALSE)
ENDIF
ENDIF
//Unpin
bPinnedMansion = FALSE
//New Load Scene
IF IS_NEW_LOAD_SCENE_ACTIVE()
NEW_LOAD_SCENE_STOP()
ENDIF
//Mod Shop
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(FALSE)
//Ints/Bools
CLEAR_MISSION_LOCATE_STUFF(sLocatesData, TRUE)
iCarHealth = 1000
iCarGasTank = 1000.0
iCarEngineHealth = 1000.0
iStoppedTimer = -1
//Radar
bRadar = TRUE
//Camera
SET_CINEMATIC_BUTTON_ACTIVE(TRUE)
CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE(1.0)
CASCADE_SHADOWS_INIT_SESSION()
CASCADE_SHADOWS_ENABLE_FREEZER(TRUE)
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
RENDER_SCRIPT_CAMS(FALSE, FALSE)
DESTROY_ALL_CAMS()
STOP_GAMEPLAY_HINT(TRUE)
//Particles
IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxLeaf)
STOP_PARTICLE_FX_LOOPED(ptfxLeaf)
ENDIF
//Anims
IF bPassed = FALSE
IF IS_PLAYER_PLAYING(PLAYER_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
ENDIF
ENDIF
INT i
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
ENDIF
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
ENDIF
IF DOES_ENTITY_EXIST(pedOwner)
SET_PED_AS_NO_LONGER_NEEDED(pedOwner)
ENDIF
IF DOES_ENTITY_EXIST(pedSon)
SET_PED_AS_NO_LONGER_NEEDED(pedSon)
ENDIF
IF DOES_ENTITY_EXIST(pedDaughter)
SET_PED_AS_NO_LONGER_NEEDED(pedDaughter)
ENDIF
IF DOES_ENTITY_EXIST(pedWife)
SET_PED_AS_NO_LONGER_NEEDED(pedWife)
ENDIF
IF DOES_ENTITY_EXIST(pedCoach)
SET_PED_AS_NO_LONGER_NEEDED(pedCoach)
ENDIF
IF DOES_ENTITY_EXIST(pedIntro)
SET_PED_AS_NO_LONGER_NEEDED(pedIntro)
ENDIF
IF DOES_ENTITY_EXIST(pedGardener)
SET_PED_AS_NO_LONGER_NEEDED(pedGardener)
SET_OBJECT_AS_NO_LONGER_NEEDED(objLeafblower)
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_GARDENER_01)
REMOVE_ANIM_DICT(sAnimDictGarden)
IF HAS_CLIP_SET_LOADED(sAnimDictGardenerMoveClipSet)
REMOVE_CLIP_SET(sAnimDictGardenerMoveClipSet)
ENDIF
ENDIF
//Vehicle
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
IF IS_ENTITY_A_MISSION_ENTITY(vehDriveTo) AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehDriveTo)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehDriveTo)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehIntro)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehIntro)
ENDIF
IF DOES_ENTITY_EXIST(vehClimb)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehClimb)
ENDIF
IF NOT bPassed
IF DOES_ENTITY_EXIST(vehCar)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCar)
ENDIF
ENDIF
REPEAT COUNT_OF(vehGarage) i
IF DOES_ENTITY_EXIST(vehGarage[i])
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehGarage[i])
ENDIF
ENDREPEAT
REPEAT COUNT_OF(vehGarageOutside) i
IF DOES_ENTITY_EXIST(vehGarageOutside[i])
AND NOT IS_ENTITY_DEAD(vehGarageOutside[i])
IF IS_ENTITY_A_MISSION_ENTITY(vehGarageOutside[i]) AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehGarageOutside[i])
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehGarageOutside[i])
ENDIF
ENDIF
ENDREPEAT
REPEAT COUNT_OF(vehOutside) i
IF DOES_ENTITY_EXIST(vehOutside[i])
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehOutside[i])
ENDIF
ENDREPEAT
//Objects
IF DOES_ENTITY_EXIST(objWindow)
IF NOT IS_ENTITY_ON_SCREEN(objWindow)
OR IS_ENTITY_OCCLUDED(objWindow)
SAFE_DELETE_OBJECT(objWindow)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(objWindow)
SET_OBJECT_AS_NO_LONGER_NEEDED(objWindow)
ENDIF
IF DOES_ENTITY_EXIST(objTennisA)
SET_OBJECT_AS_NO_LONGER_NEEDED(objTennisA)
ENDIF
IF DOES_ENTITY_EXIST(objTennisB)
SET_OBJECT_AS_NO_LONGER_NEEDED(objTennisB)
ENDIF
IF DOES_ENTITY_EXIST(objBag)
SET_OBJECT_AS_NO_LONGER_NEEDED(objBag)
ENDIF
IF DOES_ENTITY_EXIST(objGamepad)
SET_OBJECT_AS_NO_LONGER_NEEDED(objGamepad)
ENDIF
IF DOES_ENTITY_EXIST(objHeadset)
SET_OBJECT_AS_NO_LONGER_NEEDED(objHeadset)
ENDIF
IF DOES_ENTITY_EXIST(objGun)
SET_OBJECT_AS_NO_LONGER_NEEDED(objGun)
ENDIF
IF DOES_ENTITY_EXIST(objGlass)
SET_OBJECT_AS_NO_LONGER_NEEDED(objGlass)
ENDIF
IF DOES_ENTITY_EXIST(objPhone)
SET_OBJECT_AS_NO_LONGER_NEEDED(objPhone)
ENDIF
IF DOES_ENTITY_EXIST(objSeats)
SET_OBJECT_AS_NO_LONGER_NEEDED(objSeats)
ENDIF
REMOVE_MODEL_HIDE(<<-802.73, 167.50, 77.58>>, 1.0, V_ILEV_MM_WINDOWWC)
IF bPassed
IF DOES_ENTITY_EXIST(vehCar)
IF GET_ENTITY_MODEL(vehCar) = BJXL
SET_VEHICLE_ON_GROUND_PROPERLY(vehCar)
FREEZE_ENTITY_POSITION(vehCar, FALSE)
ACTIVATE_PHYSICS(vehCar)
SET_VEHICLE_TYRES_CAN_BURST(vehCar, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_BJXL_CRASH_POST_ARM3, TRUE)
SET_VEHICLE_GEN_VEHICLE(VEHGEN_BJXL_CRASH_POST_ARM3, vehCar)
ENDIF
ENDIF
REPEAT COUNT_OF(vehGarage) i
IF DOES_ENTITY_EXIST(vehGarage[i])
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehGarage[i])
ENDIF
ENDREPEAT
REPEAT COUNT_OF(vehGarageOutside) i
IF DOES_ENTITY_EXIST(vehGarageOutside[i])
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehGarageOutside[i])
ENDIF
ENDREPEAT
REPEAT COUNT_OF(vehOutside) i
IF DOES_ENTITY_EXIST(vehOutside[i])
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehOutside[i])
ENDIF
ENDREPEAT
ENDIF
//Stealth
IF HAS_LABEL_BEEN_TRIGGERED("ACT_stealth_kill_a_gardener")
ACTION_MANAGER_ENABLE_ACTION(HASH("ACT_stealth_kill_a_gardener"), FALSE)
ENDIF
//Action Mode
SET_PED_USING_ACTION_MODE(PLAYER_PED_ID(), FALSE)
IF bZoomLevel
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(vehicleZoomLevel)
SET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT, camViewModeOnFoot)
PRINTLN("vehicleZoomLevel = ", ENUM_TO_INT(vehicleZoomLevel))
PRINTLN("camViewModeOnFoot = ", ENUM_TO_INT(camViewModeOnFoot))
bZoomLevel = FALSE
ENDIF
//Cover
REPEAT COUNT_OF(covPoint) i
REMOVE_COVER_POINT(covPoint[i])
ENDREPEAT
REMOVE_ALL_COVER_BLOCKING_AREAS()
//Navmesh Blocking
IF iNavBlock <> -1
REMOVE_NAVMESH_BLOCKING_OBJECT(iNavBlock)
iNavBlock = -1
ENDIF
SET_VEHICLE_MODEL_IS_SUPPRESSED(BJXL, FALSE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(PATRIOT, FALSE)
// SET_VEHICLE_MODEL_IS_SUPPRESSED(VOLTIC, FALSE)
// SET_VEHICLE_MODEL_IS_SUPPRESSED(GAUNTLET, FALSE)
//Wanted
SET_MAX_WANTED_LEVEL(6)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, TRUE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_CRUISING, TRUE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER, TRUE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, TRUE)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, TRUE)
ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, TRUE)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, TRUE)
SET_DISPATCH_COPS_FOR_PLAYER(PLAYER_ID(), TRUE)
SET_CREATE_RANDOM_COPS(TRUE)
//Roads
SET_ROADS_BACK_TO_ORIGINAL(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>)
SET_ROADS_BACK_TO_ORIGINAL(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>)
SET_ROADS_BACK_TO_ORIGINAL(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>)
SET_ROADS_BACK_TO_ORIGINAL(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>)
SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<-57.644516, -1097.634033, 35.422352>>, <<-145.066711, -1156.563843, 23.026037>>, 20.0)
SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<-801.065796, 187.031311, 71.605469>>, <<-797.865540, 178.343643, 74.834709>>, 9.0)
//Car Gens
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-46.890217, -1105.479004, 29.436941>> - <<20.0, 20.0, 5.0>>, <<-46.890217, -1105.479004, 29.436941>> + <<20.0, 20.0, 5.0>>, TRUE)
CLEAR_VEHICLE_GENERATOR_AREA_OF_INTEREST()
SET_ALL_VEHICLE_GENERATORS_ACTIVE()
//Blip
SAFE_REMOVE_BLIP(blipWife)
SAFE_REMOVE_BLIP(blipCoach)
SAFE_REMOVE_BLIP(blipSon)
SAFE_REMOVE_BLIP(blipDaughter)
SAFE_REMOVE_BLIP(blipGardener)
SAFE_REMOVE_BLIP(blipMichael)
SAFE_REMOVE_BLIP(blipCar)
SAFE_REMOVE_BLIP(blipDestination)
SAFE_REMOVE_BLIP(blipOwner)
SAFE_REMOVE_BLIP(blipFranklin)
CLEAR_GPS_MULTI_ROUTE()
//Sound
IF sIDLeaf != -1
STOP_SOUND(sIDLeaf)
RELEASE_SOUND_ID(sIDLeaf)
sIDLeaf = -1
ENDIF
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
STOP_AUDIO_SCENE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_PHONE_SIMEON")
STOP_AUDIO_SCENE("ARM_3_DRIVE_PHONE_SIMEON")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_CLIMB_INTO_GARDEN")
STOP_AUDIO_SCENE("ARM_3_CLIMB_INTO_GARDEN")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TAKE_OUT_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TAKE_OUT_GARDENER")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TARGET_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TARGET_GARDENER")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_ENTER_HOUSE")
STOP_AUDIO_SCENE("ARM_3_ENTER_HOUSE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_INSIDE_HOUSE")
STOP_AUDIO_SCENE("ARM_3_INSIDE_HOUSE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_ENTER_GARAGE")
STOP_AUDIO_SCENE("ARM_3_ENTER_GARAGE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_STEAL_CAR")
STOP_AUDIO_SCENE("ARM_3_STEAL_CAR")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_EXIT_THROUGH_GATE")
STOP_AUDIO_SCENE("ARM_3_EXIT_THROUGH_GATE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_TO_DEALERSHIP")
STOP_AUDIO_SCENE("ARM_3_DRIVE_TO_DEALERSHIP")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_RAM_DEALERSHIP")
STOP_AUDIO_SCENE("ARM_3_RAM_DEALERSHIP")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_WINDOW_FOCUS_CAM")
STOP_AUDIO_SCENE("ARM_3_WINDOW_FOCUS_CAM")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_BEAT_DOWN")
STOP_AUDIO_SCENE("ARM_3_BEAT_DOWN")
ENDIF
//Audio
PLAY_AUDIO(ARM3_FAIL)
STOP_STREAM()
RELEASE_SCRIPT_AUDIO_BANK()
UNREGISTER_SCRIPT_WITH_AUDIO()
//Radio
SET_USER_RADIO_CONTROL_ENABLED(TRUE)
//Dialogue
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 1)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 3)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 4)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 5)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 6)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 7)
//Interface
DISPLAY_RADAR(TRUE)
DISPLAY_HUD(TRUE)
ALLOW_SONAR_BLIPS(TRUE)
//Taxi
DISABLE_TAXI_HAILING(FALSE)
//Cutscene State
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
//Michael Unavailable
SET_PLAYER_PED_AVAILABLE(CHAR_MICHAEL, FALSE)
Set_Mission_Flow_Flag_State(FLOWFLAG_PLAYER_PED_INTRODUCED_M, FALSE)
//Special Ability
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), TRUE)
//Relationship Groups
REMOVE_RELATIONSHIP_GROUP(relGroupBuddy)
REMOVE_RELATIONSHIP_GROUP(relGroupEnemy)
//Reset Labels
CLEAR_TRIGGERED_LABELS()
CLEAR_LOADED_MODELS()
CLEAR_LOADED_RECORDINGS()
CLEAR_LOADED_ANIM_DICTS()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
CLEAR_TEXT()
SETTIMERA(0)
iCutsceneStage = 0
iDialogueStage = 0
REPEAT COUNT_OF(iDialogueLineCount) i
iDialogueLineCount[i] = -1
ENDREPEAT
iDialogueTimer = 0
iHelpTimer = -1
bInitStage = FALSE
bReplaySkip = FALSE
bShitSkip = FALSE
bCutsceneSkipped = FALSE
bPassed = FALSE //Reset the bool
IF bRestart = FALSE
TERMINATE_THIS_THREAD()
ENDIF
ENDPROC
//Mission Passed
PROC missionPassed()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
ENDIF
CLEAR_TEXT()
IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_MICHAEL)) AND NOT IS_ENTITY_DEAD(PLAYER_PED(CHAR_MICHAEL))
GIVE_WEAPON_TO_PED(PLAYER_PED(CHAR_MICHAEL), wtPistol, 120, FALSE)
SET_CURRENT_PED_WEAPON(PLAYER_PED(CHAR_MICHAEL), WEAPONTYPE_UNARMED, TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[0]) AND NOT IS_ENTITY_DEAD(vehGarage[0])
SET_VEHICLE_DOORS_LOCKED(vehGarage[0], VEHICLELOCK_UNLOCKED)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[0], TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[1]) AND NOT IS_ENTITY_DEAD(vehGarage[1])
SET_VEHICLE_DOORS_LOCKED(vehGarage[1], VEHICLELOCK_UNLOCKED)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[1], TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[2]) AND NOT IS_ENTITY_DEAD(vehGarage[2])
SET_VEHICLE_DOORS_LOCKED(vehGarage[2], VEHICLELOCK_UNLOCKED)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[2], TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[3]) AND NOT IS_ENTITY_DEAD(vehGarage[3])
SET_VEHICLE_DOORS_LOCKED(vehGarage[3], VEHICLELOCK_UNLOCKED)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[3], TRUE)
ENDIF
Mission_Flow_Mission_Passed()
bPassed = TRUE
MISSION_CLEANUP()
ENDPROC
/// PURPOSE:
/// if mission failed as Michael, warp Franklin to outside showroom
PROC HANDLE_FAIL_AS_MICHAEL()
IF GET_PLAYER_PED_ENUM(PLAYER_PED_ID()) = CHAR_MICHAEL
CPRINTLN(DEBUG_REPLAY, "Arm3: Failed as Michael, do warp")
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<-27.8311, -1084.0056, 25.5727>>, 339.9998)
SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<<-26.5693, -1082.2946, 25.5820>>, 70.3239)
ENDIF
ENDPROC
//Mission Failed
PROC missionFailed()
CLEAR_PRINTS() //CLEAR_TEXT()
SAFE_CLEAR_HELP(TRUE)
//Audio
PLAY_AUDIO(ARM3_FAIL)
SWITCH eMissionFail
CASE failDefault
MISSION_FLOW_SET_FAIL_REASON("ARM3_FAIL")
BREAK
CASE failPlayerDied
MISSION_FLOW_SET_FAIL_REASON("ARM3_FAIL")
BREAK
CASE failMichaelDied
IF eMissionObjective < stageDriveTo
MISSION_FLOW_SET_FAIL_REASON("ARM3_BLOWN")
ELSE
MISSION_FLOW_SET_FAIL_REASON("CMN_MDIED")
ENDIF
BREAK
CASE failFranklinDied
MISSION_FLOW_SET_FAIL_REASON("CMN_FDIED")
BREAK
CASE failSonDied
MISSION_FLOW_SET_FAIL_REASON("ARM3_BLOWN")
BREAK
CASE failWalkedInOnSon
MISSION_FLOW_SET_FAIL_REASON("ARM3_FNOISE")
BREAK
CASE failDaughterDied
MISSION_FLOW_SET_FAIL_REASON("ARM3_BLOWN")
BREAK
CASE failWalkedInOnDaughter
MISSION_FLOW_SET_FAIL_REASON("ARM3_FNOISE")
BREAK
CASE failWifeDied
MISSION_FLOW_SET_FAIL_REASON("ARM3_BLOWN")
BREAK
CASE failCoachDied
MISSION_FLOW_SET_FAIL_REASON("ARM3_BLOWN")
BREAK
CASE failGardenerDied
MISSION_FLOW_SET_FAIL_REASON("ARM3_BLOWN")
BREAK
CASE failWalkedInOnWifeCoach
MISSION_FLOW_SET_FAIL_REASON("ARM3_FNOISE")
BREAK
CASE failWalkedInOnWifeCoachTrySneak
MISSION_FLOW_SET_FAIL_REASON("ARM3_FNOISE2")
BREAK
CASE failWalkedInOnWifeCoachLivingRoom
MISSION_FLOW_SET_FAIL_REASON("ARM3_FNOISE3")
BREAK
CASE failSpotted
MISSION_FLOW_SET_FAIL_REASON("ARM3_BLOWN")
BREAK
CASE failNoise
MISSION_FLOW_SET_FAIL_REASON("ARM3_FNOISE")
BREAK
CASE failLeftRoute
MISSION_FLOW_SET_FAIL_REASON("ARM3_IGNORE")
BREAK
CASE failFledOwner
MISSION_FLOW_SET_FAIL_REASON("ARM3_FLED")
BREAK
CASE failCarDestroyed
MISSION_FLOW_SET_FAIL_REASON("CMN_GENDEST")
BREAK
CASE failExplosion
MISSION_FLOW_SET_FAIL_REASON("ARM3_FEXP")
BREAK
CASE failWanted
IF eMissionObjective < stageDriveTo //Before Michael Appears
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-74.615479, -1102.602295, 24.006918>>, <<-28.391909, -1119.143555, 41.558163>>, 50.0) //You bring cops to Simeon's deal
MISSION_FLOW_SET_FAIL_REASON("ARM3_FDISRUPT")
ELSE
MISSION_FLOW_SET_FAIL_REASON("ARM3_FCOPSALERT")
ENDIF
ELIF eMissionObjective < stageBeatDown //Michael has gun to Franklin
MISSION_FLOW_SET_FAIL_REASON("ARM3_FCOPSALERT")
ELSE //Michael is fighting Simeon
MISSION_FLOW_SET_FAIL_REASON("ARM3_FCOPSALERT")
ENDIF
BREAK
CASE failSimeonDied
MISSION_FLOW_SET_FAIL_REASON("ARM3_FSIMEON")
BREAK
CASE failSimeonDisrupted
MISSION_FLOW_SET_FAIL_REASON("ARM3_FDISRUPT")
BREAK
ENDSWITCH
IF NOT IS_CUTSCENE_PLAYING()
CLEANUP_TENNIS_PROPS()
ENDIF
IF DOES_ENTITY_EXIST(pedGardener)
AND IS_PED_INJURED(pedGardener)
IF DOES_ENTITY_EXIST(objLeafblower)
AND IS_ENTITY_ATTACHED(objLeafblower)
DETACH_ENTITY(objLeafblower, TRUE, FALSE)
ENDIF
ENDIF
Mission_Flow_Mission_Failed()
WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
//Maintain anything that could look weird during fade out (e.g. enemies walking off).
WAIT(0)
ENDWHILE
//Cutscene
WHILE NOT HAS_CUTSCENE_FINISHED()
STOP_CUTSCENE(TRUE)
PRINTLN("STOPPING CUTSCENE...")
WAIT(0)
ENDWHILE
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
PRINTLN("REMOVING CUTSCENE...")
WAIT(0)
ENDWHILE
HANDLE_FAIL_AS_MICHAEL()
// check if we need to respawn the player in a different position,
// if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-23.302967, -1107.541504, 24.672077>>, <<-61.430489, -1093.553101, 35.486015>>, 40.0)
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<-63.1009, -1092.9005, 25.5257>>, 71.4989)
SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<<-70.5736, -1088.5961, 25.5754>>, 340.4931)
ELIF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-807.414978, 135.218811, 57.205853>>, <<-807.604614, 199.880859, 94.741600>>, 90.0)
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<-853.5109, 179.5495, 68.8114>>, 173.1056)
SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<<-855.8997, 172.3890, 66.9269>>, 355.1980)
ENDIF
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1) != RFMO_STATE_END
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1, RFMO_STATE_ENDING)
ENDIF
ENDIF
//SET_BUILDING_STATE(BUILDINGNAME_ES_CAR_SHOWROOOM_SHUTTERS, BUILDINGSTATE_NORMAL) // Open the rear shutters - The shutters are now closed after Armenian 2 - SteveR LDS
MISSION_CLEANUP() // must only take 1 frame and terminate the thread
ENDPROC
PROC DEATH_CHECKS()
IF IS_ENTITY_DEAD(PLAYER_PED_ID())
eMissionFail = failPlayerDied
missionFailed()
ENDIF
IF SAFE_DEATH_CHECK_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
eMissionFail = failMichaelDied
missionFailed()
ENDIF
IF SAFE_DEATH_CHECK_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
AND IS_SCREEN_FADED_IN()
eMissionFail = failFranklinDied
missionFailed()
ENDIF
IF SAFE_DEATH_CHECK_PED(pedSon)
eMissionFail = failSonDied
IF DOES_ENTITY_EXIST(pedDaughter)
IF NOT IS_PED_INJURED(pedDaughter)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
IF NOT IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
TASK_PLAY_ANIM_ADVANCED(pedDaughter, sAnimDictArm3, "tracey_fail", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
ELSE
TASK_REACT_AND_FLEE_PED(pedDaughter, PLAYER_PED_ID())
ENDIF
ENDIF
SET_PED_KEEP_TASK(pedDaughter, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWife)
IF NOT IS_PED_INJURED(pedWife)
CLEAR_PED_TASKS(pedWife)
TASK_REACT_AND_FLEE_PED(pedWife, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedWife, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedCoach)
IF NOT IS_PED_INJURED(pedCoach)
CLEAR_PED_TASKS(pedCoach)
TASK_REACT_AND_FLEE_PED(pedCoach, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedCoach, TRUE)
ENDIF
ENDIF
missionFailed()
ENDIF
IF SAFE_DEATH_CHECK_PED(pedDaughter)
eMissionFail = failDaughterDied
IF DOES_ENTITY_EXIST(pedSon)
IF NOT IS_PED_INJURED(pedSon)
CLEANUP_GAME_PROPS()
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
//TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_fail", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.250)
INT sceneJimmyFail = CREATE_SYNCHRONIZED_SCENE(<<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>)
TASK_SYNCHRONIZED_SCENE(pedSon, sceneJimmyFail, sAnimDictArm3, "jimmy_playingvideogame_fail", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objGamepad, sceneJimmyFail, "jimmy_playingvideogame_fail_controller", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objHeadset, sceneJimmyFail, "jimmy_playingvideogame_fail_headset", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_PHASE(sceneJimmyFail, 0.250)
ENDIF
SET_PED_KEEP_TASK(pedSon, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWife)
IF NOT IS_PED_INJURED(pedWife)
CLEAR_PED_TASKS(pedWife)
TASK_REACT_AND_FLEE_PED(pedWife, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedWife, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedCoach)
IF NOT IS_PED_INJURED(pedCoach)
CLEAR_PED_TASKS(pedCoach)
TASK_REACT_AND_FLEE_PED(pedCoach, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedCoach, TRUE)
ENDIF
ENDIF
missionFailed()
ENDIF
IF SAFE_DEATH_CHECK_PED(pedWife)
eMissionFail = failWifeDied
IF DOES_ENTITY_EXIST(pedSon)
IF NOT IS_PED_INJURED(pedSon)
CLEANUP_GAME_PROPS()
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
//TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_fail", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.250)
INT sceneJimmyFail = CREATE_SYNCHRONIZED_SCENE(<<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>)
TASK_SYNCHRONIZED_SCENE(pedSon, sceneJimmyFail, sAnimDictArm3, "jimmy_playingvideogame_fail", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objGamepad, sceneJimmyFail, "jimmy_playingvideogame_fail_controller", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objHeadset, sceneJimmyFail, "jimmy_playingvideogame_fail_headset", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_PHASE(sceneJimmyFail, 0.250)
ENDIF
SET_PED_KEEP_TASK(pedSon, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDaughter)
IF NOT IS_PED_INJURED(pedDaughter)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
IF NOT IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
TASK_PLAY_ANIM_ADVANCED(pedDaughter, sAnimDictArm3, "tracey_fail", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
ELSE
TASK_REACT_AND_FLEE_PED(pedDaughter, PLAYER_PED_ID())
ENDIF
ENDIF
SET_PED_KEEP_TASK(pedDaughter, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedCoach)
IF NOT IS_PED_INJURED(pedCoach)
CLEAR_PED_TASKS(pedCoach)
TASK_REACT_AND_FLEE_PED(pedCoach, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedCoach, TRUE)
ENDIF
ENDIF
missionFailed()
ENDIF
IF SAFE_DEATH_CHECK_PED(pedCoach)
eMissionFail = failCoachDied
IF DOES_ENTITY_EXIST(pedSon)
IF NOT IS_PED_INJURED(pedSon)
CLEANUP_GAME_PROPS()
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
//TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_fail", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.250)
INT sceneJimmyFail = CREATE_SYNCHRONIZED_SCENE(<<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>)
TASK_SYNCHRONIZED_SCENE(pedSon, sceneJimmyFail, sAnimDictArm3, "jimmy_playingvideogame_fail", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objGamepad, sceneJimmyFail, "jimmy_playingvideogame_fail_controller", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objHeadset, sceneJimmyFail, "jimmy_playingvideogame_fail_headset", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_PHASE(sceneJimmyFail, 0.250)
ENDIF
SET_PED_KEEP_TASK(pedSon, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDaughter)
IF NOT IS_PED_INJURED(pedDaughter)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
IF NOT IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
TASK_PLAY_ANIM_ADVANCED(pedDaughter, sAnimDictArm3, "tracey_fail", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
ELSE
TASK_REACT_AND_FLEE_PED(pedDaughter, PLAYER_PED_ID())
ENDIF
ENDIF
SET_PED_KEEP_TASK(pedDaughter, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWife)
IF NOT IS_PED_INJURED(pedWife)
CLEAR_PED_TASKS(pedWife)
SET_PED_KEEP_TASK(pedWife, TRUE)
ENDIF
ENDIF
missionFailed()
ENDIF
// IF SAFE_DEATH_CHECK_PED(pedGardener)
// eMissionFail = failGardenerDied
//
// missionFailed()
// ENDIF
IF SAFE_DEATH_CHECK_PED(pedOwner)
eMissionFail = failSimeonDied
missionFailed()
ENDIF
IF SAFE_DEATH_CHECK_VEHICLE(vehCar)
OR (DOES_ENTITY_EXIST(vehCar)
AND NOT IS_ENTITY_DEAD(vehCar)
AND ((IS_VEHICLE_DOOR_DAMAGED(vehCar, SC_DOOR_FRONT_LEFT)
OR IS_VEHICLE_DOOR_DAMAGED(vehCar, SC_DOOR_FRONT_RIGHT)
OR IS_VEHICLE_DOOR_DAMAGED(vehCar, SC_DOOR_REAR_LEFT)
OR IS_VEHICLE_DOOR_DAMAGED(vehCar, SC_DOOR_REAR_RIGHT))))
//OR IS_ENTITY_IN_WATER(vehCar)))
IF NOT IS_CUTSCENE_PLAYING()
IF eMissionObjective < cutWindowSmash
eMissionFail = failCarDestroyed
missionFailed()
ENDIF
ENDIF
ENDIF
IF IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE, <<-26.944561, -1103.164185, 25.434294>>, <<-59.328949, -1091.362061, 28.628263>>, 18.0)
OR IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE, <<-41.243816, -1087.122314, 25.434362>>, <<-26.133615, -1092.687378, 28.433880>>, 11.75)
IF eMissionObjective < stageDriveTo
eMissionFail = failExplosion
missionFailed()
ENDIF
ENDIF
IF IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(), 0)
IF eMissionObjective >= stageClimbUp
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-741.353210, 175.701065, 44.151825>>, <<-871.869812, 171.457581, 116.676941>>, 100.0)
OR (eMissionObjective = stageGoToMansion
AND DOES_ENTITY_EXIST(pedOwner) AND DOES_ENTITY_EXIST(pedIntro)
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-74.615479, -1102.602295, 24.006918>>, <<-28.391909, -1119.143555, 41.558163>>, 50.0))
eMissionFail = failWanted
missionFailed()
ENDIF
ENDIF
ENDPROC
PROC WAIT_WITH_DEATH_CHECKS(INT iWait = 0)
INT iGameTime = GET_GAME_TIMER() + iWait
WHILE GET_GAME_TIMER() <= iGameTime
WAIT(0)
//Video Recorder
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_Complications")
DEATH_CHECKS()
ENDWHILE
ENDPROC
PROC LOAD_SCENE_ADV(VECTOR vCoords, FLOAT fRadius = 20.0)
NEW_LOAD_SCENE_START_SPHERE(vCoords, fRadius)
INT iTimeOut = GET_GAME_TIMER() + 20000
WHILE IS_NEW_LOAD_SCENE_ACTIVE()
AND NOT IS_NEW_LOAD_SCENE_LOADED()
AND GET_GAME_TIMER() < iTimeOut
#IF IS_DEBUG_BUILD
PRINTLN("NEW_LOAD_SCENE_START_SPHERE(", vCoords.X, ", ", vCoords.Y, ", ", vCoords.Z, ", ", fRadius, ")...")
#ENDIF
PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iTimeOut)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
#IF IS_DEBUG_BUILD
IF GET_GAME_TIMER() > iTimeOut
SCRIPT_ASSERT("NEW_LOAD_SCENE_START_SPHERE timed out, see log for details.")
ENDIF
#ENDIF
NEW_LOAD_SCENE_STOP()
ENDPROC
PROC CREATE_CONVERSATION_ADV(STRING sLabel, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE, enumSubtitlesState eSubtitles = DISPLAY_SUBTITLES)
IF NOT HAS_LABEL_BEEN_TRIGGERED(sLabel)
WHILE NOT CREATE_CONVERSATION(sPedsForConversation, sConversationBlock, sLabel, eConvPriority, eSubtitles)
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
PRINTSTRING("TRYING TO PLAY ") PRINTSTRING(sLabel) PRINTSTRING(" CONVERSATION")
PRINTNL()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_LABEL_AS_TRIGGERED(sLabel, bOnce)
ENDIF
ENDPROC
PROC CREATE_CONVERSATION_FROM_SPECIFIC_LINE_ADV(STRING sLabel, STRING sLabelSub, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE)
IF NOT HAS_LABEL_BEEN_TRIGGERED(sLabelSub)
WHILE NOT CREATE_CONVERSATION_FROM_SPECIFIC_LINE(sPedsForConversation, sConversationBlock, sLabel, sLabelSub, eConvPriority)
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
PRINTSTRING("TRYING TO PLAY ") PRINTSTRING(sLabel) PRINTSTRING(" CONVERSATION")
PRINTNL()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_LABEL_AS_TRIGGERED(sLabel, bOnce)
ENDIF
ENDPROC
PROC PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(STRING sLabel, STRING sLabelSub, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE)
IF NOT HAS_LABEL_BEEN_TRIGGERED(sLabelSub)
WHILE NOT PLAY_SINGLE_LINE_FROM_CONVERSATION(sPedsForConversation, sConversationBlock, sLabel, sLabelSub, eConvPriority)
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
PRINTSTRING("TRYING TO PLAY ") PRINTSTRING(sLabel) PRINTSTRING(", ") PRINTSTRING(sLabelSub) PRINTSTRING(" CONVERSATION")
PRINTNL()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_LABEL_AS_TRIGGERED(sLabelSub, bOnce)
ENDIF
ENDPROC
FUNC BOOL IS_THIS_CONVERSATION_ONGOING_OR_QUEUED(STRING sRoot)
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
TEXT_LABEL txtRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
IF ARE_STRINGS_EQUAL(sRoot, txtRoot)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL SAFE_START_CUTSCENE(FLOAT fRadius = 0.0, BOOL bUseBlinders = TRUE)
IF CAN_PLAYER_START_CUTSCENE() = TRUE
IF fRadius <> 0.0
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), fRadius, TRUE, TRUE)
ENDIF
CLEAR_TEXT()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE,DEFAULT,bUseBlinders)
ENDIF
RETURN CAN_PLAYER_START_CUTSCENE()
ENDFUNC
FUNC BOOL IS_CURRENT_PED_WEAPON_NOISY(PED_INDEX pedIndex)
WEAPON_TYPE wpType
WEAPON_GROUP wpGroup
GET_CURRENT_PED_WEAPON(pedIndex, wpType)
wpGroup = GET_WEAPONTYPE_GROUP(wpType)
IF wpGroup = WEAPONGROUP_PISTOL
OR wpGroup = WEAPONGROUP_SMG
OR wpGroup = WEAPONGROUP_RIFLE
OR wpGroup = WEAPONGROUP_MG
OR wpGroup = WEAPONGROUP_SHOTGUN
OR wpGroup = WEAPONGROUP_SNIPER
OR wpGroup = WEAPONGROUP_HEAVY
OR wpGroup = WEAPONGROUP_RUBBERGUN
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC CAUGHT_SNEAKING()
IF DOES_ENTITY_EXIST(pedSon)
OR DOES_ENTITY_EXIST(pedDaughter)
OR DOES_ENTITY_EXIST(pedWife)
OR DOES_ENTITY_EXIST(pedCoach)
//Player is spotted by son
IF NOT IS_CUTSCENE_PLAYING()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.127502, 167.657471, 75.740723>>, <<-807.444336, 178.842728, 78.990883>>, 3.25) //Son
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-806.724182, 167.141739, 75.740883>>, <<-809.218567, 173.508331, 79.240883>>, 5.0)
IF ePrestreamCutscene <> roomSon
IF HAS_CUTSCENE_LOADED()
AND NOT HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_3")
REMOVE_CUTSCENE()
ELSE
REQUEST_CUTSCENE("Armenian_3_mcs_3")
//Request Cutscene Variations - Armenian_3_mcs_3
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Jimmy", pedSon)
SET_CUTSCENE_PED_COMPONENT_VARIATION("Jimmy", PED_COMP_BERD, 1, 0)
ENDIF
IF HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_3")
ePrestreamCutscene = roomSon
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF ePrestreamCutscene = roomSon
IF (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-806.724182, 167.141739, 75.740883>>, <<-809.218567, 173.508331, 79.240883>>, 5.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-806.769714, 174.020981, 75.740738>>, <<-806.312378, 172.810135, 78.240738>>, 0.75))
OR bPrestreamCutsceneLockedIn[roomSon]
bPrestreamCutsceneLockedIn[roomSon] = TRUE
IF HAS_THIS_CUTSCENE_LOADED_WITH_FAILSAFE("Armenian_3_mcs_3")
CLEAR_TEXT()
REGISTER_ENTITY_FOR_CUTSCENE(pedSon, "Jimmy", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE)
START_CUTSCENE()
WAIT_WITH_DEATH_CHECKS(0)
SET_CUTSCENE_CAN_BE_SKIPPED(FALSE)
CLEAR_AREA(<<-808.4632, 171.2454, 75.7504>>, 50.0, TRUE)
SAFE_DELETE_OBJECT(objGamepad)
SAFE_DELETE_OBJECT(objHeadset)
WHILE NOT HAS_CUTSCENE_FINISHED()
IF GET_CUTSCENE_TIME() >= 7000 - (FAIL_EFFECT_TIME + FAIL_OUT_EFFECT_TIME) - (100)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
eMissionFail = failWalkedInOnSon
missionFailed()
ENDIF
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
eMissionFail = failWalkedInOnSon
missionFailed()
ENDIF
ENDIF
ENDIF
//Player is spotted by daughter
IF NOT IS_CUTSCENE_PLAYING()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-802.1136, 176.5611, 73.9906>>, <<-805.7435, 185.8805, 79.0034>>, 5.0) //Daughter
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-799.644775, 169.060883, 75.740883>>, <<-802.533997, 176.084854, 79.240883>>, 4.0)
IF ePrestreamCutscene <> roomDaughter
IF HAS_CUTSCENE_LOADED()
AND NOT HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_4")
REMOVE_CUTSCENE()
ELSE
REQUEST_CUTSCENE("Armenian_3_mcs_4")
//Request Cutscene Variations - Armenian_3_mcs_4
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Tracy", pedDaughter)
ENDIF
IF HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_4")
ePrestreamCutscene = roomDaughter
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF ePrestreamCutscene = roomDaughter
IF (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-799.644775, 169.060883, 75.740883>>, <<-802.533997, 176.084854, 79.240883>>, 4.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-802.704712, 176.176849, 75.740738>>, <<-803.911987, 175.712753, 78.240738>>, 0.75))
OR bPrestreamCutsceneLockedIn[roomDaughter]
bPrestreamCutsceneLockedIn[roomDaughter] = TRUE
IF HAS_THIS_CUTSCENE_LOADED_WITH_FAILSAFE("Armenian_3_mcs_4")
CLEAR_TEXT()
REGISTER_ENTITY_FOR_CUTSCENE(pedDaughter, "Tracy", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE)
START_CUTSCENE()
WAIT_WITH_DEATH_CHECKS(0)
SET_CUTSCENE_CAN_BE_SKIPPED(FALSE)
CLEAR_AREA(<<-801.2631, 173.2075, 75.7504>>, 50.0, TRUE)
SAFE_DELETE_OBJECT(objPhone)
WHILE NOT HAS_CUTSCENE_FINISHED()
IF GET_CUTSCENE_TIME() >= 11000 - (FAIL_EFFECT_TIME + FAIL_OUT_EFFECT_TIME) - (100)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
eMissionFail = failWalkedInOnDaughter
missionFailed()
ENDIF
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
eMissionFail = failWalkedInOnDaughter
missionFailed()
ENDIF
ENDIF
ENDIF
//Player is spotted by wife/tennis coach
IF NOT IS_CUTSCENE_PLAYING()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-794.927551, 184.106979, 70.834709>>, <<-815.375916, 176.086212, 74.153091>>, 25.0)
IF ePrestreamCutscene <> roomWifeCoach
IF HAS_CUTSCENE_LOADED()
AND NOT HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_5")
REMOVE_CUTSCENE()
ELSE
REQUEST_CUTSCENE("Armenian_3_mcs_5")
//Request Cutscene Variations - Armenian_3_mcs_5
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Amanda", pedWife)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("TennisCoach", pedCoach)
ENDIF
IF HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_5")
ePrestreamCutscene = roomWifeCoach
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF ePrestreamCutscene = roomWifeCoach
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-795.923584,177.496185,70.834709>>, <<-799.760986,187.485031,74.605469>>, 5.5)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-800.222656, 185.655441, 71.605469>>, <<-804.654663, 184.058044, 75.357430>>, 2.75)
OR HAS_LABEL_BEEN_TRIGGERED("CaughtWifeCoach")
OR bPrestreamCutsceneLockedIn[roomWifeCoach]
bPrestreamCutsceneLockedIn[roomWifeCoach] = TRUE
IF HAS_THIS_CUTSCENE_LOADED_WITH_FAILSAFE("Armenian_3_mcs_5")
CLEAR_TEXT()
eMissionFail = failWalkedInOnWifeCoach
REGISTER_ENTITY_FOR_CUTSCENE(pedWife, "Amanda", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(pedCoach, "TennisCoach", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE)
START_CUTSCENE()
WAIT_WITH_DEATH_CHECKS(0)
IF DOES_ENTITY_EXIST(objTennisA)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
STOP_SYNCHRONIZED_ENTITY_ANIM(objTennisA, 0.0, TRUE)
ENDIF
DETACH_ENTITY(objTennisA, FALSE)
FREEZE_ENTITY_POSITION(objTennisA, TRUE)
SET_ENTITY_COORDS_NO_OFFSET(objTennisA, <<-796.5159, 183.8585, 72.0977>>)
SET_ENTITY_ROTATION(objTennisA, <<-17.1906, -143.6059, -99.3626>>)
ENDIF
IF DOES_ENTITY_EXIST(objTennisB)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
STOP_SYNCHRONIZED_ENTITY_ANIM(objTennisB, 0.0, TRUE)
ENDIF
DETACH_ENTITY(objTennisB, FALSE)
FREEZE_ENTITY_POSITION(objTennisB, TRUE)
SET_ENTITY_COORDS_NO_OFFSET(objTennisB, <<-796.4891, 183.8672, 72.1020>>)
SET_ENTITY_ROTATION(objTennisB, <<-17.1865, -146.0179, -99.3660>>)
ENDIF
IF DOES_ENTITY_EXIST(objBag)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
STOP_SYNCHRONIZED_ENTITY_ANIM(objBag, 0.0, TRUE)
ENDIF
DETACH_ENTITY(objBag, FALSE)
FREEZE_ENTITY_POSITION(objBag, TRUE)
SET_ENTITY_COORDS_NO_OFFSET(objBag, <<-796.1265, 184.2115, 71.8298>>)
SET_ENTITY_ROTATION(objBag, <<-10.7331, 12.3450, -171.9909>>)
ENDIF
SET_CUTSCENE_CAN_BE_SKIPPED(FALSE)
CLEAR_AREA(<<-801.7021, 183.1848, 71.6055>>, 50.0, TRUE)
WHILE NOT HAS_CUTSCENE_FINISHED()
IF GET_CUTSCENE_TIME() >= 10000 + 2500 - (FAIL_EFFECT_TIME + FAIL_OUT_EFFECT_TIME) - (100)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
missionFailed()
ENDIF
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
missionFailed()
ENDIF
ENDIF
ENDIF
//Player shoots weapon
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-815.675537, 173.802322, 70.683334>>, <<-793.942444, 182.043564, 81.835121>>, 30.0)
IF IS_PED_SHOOTING(PLAYER_PED_ID())
AND NOT IS_PED_PLANTING_BOMB(PLAYER_PED_ID())
AND NOT IS_PED_CURRENT_WEAPON_SILENCED(PLAYER_PED_ID())
AND IS_CURRENT_PED_WEAPON_NOISY(PLAYER_PED_ID())
OR (GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = intMansion
AND IS_CALLING_ANY_CONTACT())
WAIT_WITH_DEATH_CHECKS(200)
CLEAR_TEXT()
VECTOR vPlayerCoords = GET_ENTITY_COORDS(PLAYER_PED_ID())
VECTOR vSonCoords = GET_ENTITY_COORDS(pedSon)
VECTOR vDaughterCoords = GET_ENTITY_COORDS(pedDaughter)
VECTOR vWifeCoords = GET_ENTITY_COORDS(pedWife)
IF NOT IS_PED_INJURED(pedSon)
CLEANUP_GAME_PROPS()
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
//TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_fail", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.250)
INT sceneJimmyFail = CREATE_SYNCHRONIZED_SCENE(<<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>)
TASK_SYNCHRONIZED_SCENE(pedSon, sceneJimmyFail, sAnimDictArm3, "jimmy_playingvideogame_fail", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objGamepad, sceneJimmyFail, "jimmy_playingvideogame_fail_controller", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objHeadset, sceneJimmyFail, "jimmy_playingvideogame_fail_headset", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_PHASE(sceneJimmyFail, 0.250)
ENDIF
SET_PED_KEEP_TASK(pedSon, TRUE)
IF vPlayerCoords.Z > vSonCoords.Z - 2.0 AND vPlayerCoords.Z < vSonCoords.Z + 2.0
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vSonCoords) < 10.0
AND GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vSonCoords) < GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vDaughterCoords)
AND GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vSonCoords) < GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vWifeCoords)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, pedSon, "JIMMY")
CREATE_CONVERSATION_ADV("ARM3_JIMF")
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedDaughter)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
IF NOT IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
TASK_PLAY_ANIM_ADVANCED(pedDaughter, sAnimDictArm3, "tracey_fail", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
ELSE
TASK_REACT_AND_FLEE_PED(pedDaughter, PLAYER_PED_ID())
ENDIF
ENDIF
SET_PED_KEEP_TASK(pedDaughter, TRUE)
IF vPlayerCoords.Z > vDaughterCoords.Z - 2.0 AND vPlayerCoords.Z < vDaughterCoords.Z + 2.0
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vDaughterCoords) < 10.0
AND GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vDaughterCoords) < GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vSonCoords)
AND GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vDaughterCoords) < GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vWifeCoords)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedDaughter, "TRACEY")
CREATE_CONVERSATION_ADV("ARM3_TRCF")
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedWife)
CLEAR_PED_TASKS(pedWife)
TASK_REACT_AND_FLEE_PED(pedWife, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedWife, TRUE)
ENDIF
IF NOT IS_PED_INJURED(pedCoach)
CLEAR_PED_TASKS(pedCoach)
TASK_REACT_AND_FLEE_PED(pedCoach, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedCoach, TRUE)
ENDIF
IF NOT IS_PED_INJURED(pedWife)
AND NOT IS_PED_INJURED(pedCoach)
IF vPlayerCoords.Z > vWifeCoords.Z - 2.0 AND vPlayerCoords.Z < vWifeCoords.Z + 2.0
IF GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vWifeCoords) < 10.0
AND GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vWifeCoords) < GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vSonCoords)
AND GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vWifeCoords) < GET_DISTANCE_BETWEEN_COORDS(vPlayerCoords, vDaughterCoords)
CREATE_CONVERSATION_ADV("ARM3_WIFF")
ENDIF
ENDIF
ENDIF
CLEANUP_TENNIS_PROPS()
WAIT_WITH_DEATH_CHECKS(2000)
eMissionFail = failSpotted
missionFailed()
ENDIF
ENDIF
//Player makes too much noise
IF eMissionObjective > stageSneakThrough
OR (eMissionObjective = stageSneakThrough
AND iCutsceneStage > 0)
IF NOT IS_CUTSCENE_PLAYING()
AND IS_SCREEN_FADED_IN()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-815.675537, 173.802322, 70.683334>>, <<-793.942444, 182.043564, 81.835121>>, 30.0)
AND NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-802.759766, 168.739212, 77.240700>>, <<0.5, 0.5, 1.5>>)
IF DOES_ENTITY_EXIST(pedSon)
IF ((CAN_PED_HEAR_PLAYER(PLAYER_ID(), pedSon) OR IS_PED_RAGDOLL(PLAYER_PED_ID()) OR IS_PED_JUMPING(PLAYER_PED_ID()))
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-807.628662, 170.721909, 75.273582>>, <<-804.664063, 176.914963, 78.248291>>, 1.5))
OR IS_BULLET_IN_ANGLED_AREA(<<-808.930420, 173.655380, 74.240143>>, <<-806.430176, 166.974716, 79.240738>>, 4.25)
OR IS_PROJECTILE_IN_AREA(GET_ENTITY_COORDS(pedSon) - <<2.0, 2.0, 1.5>>, GET_ENTITY_COORDS(pedSon) + <<2.0, 2.0, 1.5>>, TRUE)
CLEANUP_GAME_PROPS()
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
//TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_fail", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.250)
INT sceneJimmyFail = CREATE_SYNCHRONIZED_SCENE(<<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>)
TASK_SYNCHRONIZED_SCENE(pedSon, sceneJimmyFail, sAnimDictArm3, "jimmy_playingvideogame_fail", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objGamepad, sceneJimmyFail, "jimmy_playingvideogame_fail_controller", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objHeadset, sceneJimmyFail, "jimmy_playingvideogame_fail_headset", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_PHASE(sceneJimmyFail, 0.250)
ENDIF
SET_PED_KEEP_TASK(pedSon, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, pedSon, "JIMMY")
CREATE_CONVERSATION_ADV("ARM3_JIMF")
WAIT_WITH_DEATH_CHECKS(2800) PRINTLN("ARM3_JIMF - 2800")
eMissionFail = failNoise
missionFailed()
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDaughter)
AND NOT IS_PED_INJURED(pedDaughter)
IF ((CAN_PED_HEAR_PLAYER(PLAYER_ID(), pedDaughter) OR IS_PED_RAGDOLL(PLAYER_PED_ID()) OR IS_PED_JUMPING(PLAYER_PED_ID()))
AND (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-802.033020, 172.513489, 75.740738>>, <<-806.918396, 185.424911, 78.504135>>, 2.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.714233,176.140182,75.740738>>, <<-806.804749,179.297256,79.240799>>, 3.0)))
OR IS_BULLET_IN_ANGLED_AREA(<<-802.397827, 176.155319, 74.240738>>, <<-799.630249, 168.990707, 79.240738>>, 4.0)
OR IS_PROJECTILE_IN_AREA(GET_ENTITY_COORDS(pedDaughter) - <<2.0, 2.0, 1.5>>, GET_ENTITY_COORDS(pedDaughter) + <<2.0, 2.0, 1.5>>, TRUE)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
IF NOT IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
TASK_PLAY_ANIM_ADVANCED(pedDaughter, sAnimDictArm3, "tracey_fail", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
ELSE
TASK_REACT_AND_FLEE_PED(pedDaughter, PLAYER_PED_ID())
ENDIF
ENDIF
SET_PED_KEEP_TASK(pedDaughter, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedDaughter, "TRACEY")
CREATE_CONVERSATION_ADV("ARM3_TRCF")
WAIT_WITH_DEATH_CHECKS(2000)
eMissionFail = failNoise
missionFailed()
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWife)
AND NOT IS_PED_INJURED(pedWife)
AND DOES_ENTITY_EXIST(pedCoach)
AND NOT IS_PED_INJURED(pedCoach)
IF (((((CAN_PED_HEAR_PLAYER(PLAYER_ID(), pedWife) OR CAN_PED_HEAR_PLAYER(PLAYER_ID(), pedCoach))
OR IS_PED_RAGDOLL(PLAYER_PED_ID()) OR IS_PED_JUMPING(PLAYER_PED_ID()))
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-794.927551, 184.106979, 70.834709>>, <<-815.375916, 176.086212, 74.153091>>, 25.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-807.373352, 189.048904, 71.477020>>, <<-815.239929, 185.997620, 74.978661>>, 6.5))
OR ((NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()) AND GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()) >= 1.0)
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-806.069885, 179.881195, 71.153091>>, <<-794.953186, 184.097305, 73.834709>>, 10.0)))
AND (IS_ENTITY_IN_ANGLED_AREA(pedWife, <<-796.043823, 184.979950, 71.605469>>, <<-801.097717, 183.009598, 74.605469>>, 2.0)
AND IS_ENTITY_IN_ANGLED_AREA(pedCoach, <<-796.043823, 184.979950, 71.605469>>, <<-801.097717, 183.009598, 74.605469>>, 2.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-817.577026, 179.869705, 71.153091>>, <<-807.613342, 183.736298, 75.804718>>, 4.25)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-806.888123, 183.775513, 71.347801>>, <<-805.190063, 184.442764, 73.847801>>, 3.5)))
OR IS_BULLET_IN_ANGLED_AREA(<<-803.297241, 186.043411, 70.105469>>, <<-801.107117, 180.297043, 75.334709>>, 4.0)
OR IS_PROJECTILE_IN_AREA(GET_ENTITY_COORDS(pedWife) - <<2.0, 2.0, 1.5>>, GET_ENTITY_COORDS(pedWife) + <<2.0, 2.0, 1.5>>, TRUE)
OR IS_PROJECTILE_IN_AREA(GET_ENTITY_COORDS(pedCoach) - <<2.0, 2.0, 1.5>>, GET_ENTITY_COORDS(pedCoach) + <<2.0, 2.0, 1.5>>, TRUE)
IF NOT HAS_LABEL_BEEN_TRIGGERED("CaughtWifeCoach")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-810.335632, 179.167435, 71.153091>>, <<-796.086731, 184.913010, 74.355469>>, 2.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-801.065796, 187.031311, 71.605469>>, <<-797.865540, 178.343643, 74.834709>>, 9.0)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
SET_LABEL_AS_TRIGGERED("CaughtWifeCoach", TRUE)
ELSE
CLEAR_PED_TASKS(pedWife)
TASK_REACT_AND_FLEE_PED(pedWife, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedWife, TRUE)
CLEAR_PED_TASKS(pedCoach)
TASK_REACT_AND_FLEE_PED(pedCoach, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedCoach, TRUE)
CLEANUP_TENNIS_PROPS()
CREATE_CONVERSATION_ADV("ARM3_WIFF")
WAIT_WITH_DEATH_CHECKS(2000)
eMissionFail = failNoise
missionFailed()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//Player shoots weapon
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-757.253113, 167.176361, 57.202972>>, <<-854.173096, 169.951111, 82.609200>>, 70.0)
IF IS_PED_SHOOTING(PLAYER_PED_ID())
AND NOT IS_PED_PLANTING_BOMB(PLAYER_PED_ID())
AND NOT IS_PED_CURRENT_WEAPON_SILENCED(PLAYER_PED_ID())
AND IS_CURRENT_PED_WEAPON_NOISY(PLAYER_PED_ID())
eMissionFail = failSpotted
missionFailed()
ENDIF
ENDIF
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF eMissionObjective < stageSneakThrough
IF (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-846.891785, 183.005066, 55.978630>>, <<-767.868469, 178.762039, 97.749275>>, 28.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-843.800232, 155.699295, 50.815834>>, <<-766.042786, 152.706650, 91.474686>>, 27.0))
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-760.663513, 190.646255, 68.497238>>, <<-775.100037, 201.882339, 84.696632>>, 10.0)
eMissionFail = failNoise
missionFailed()
ENDIF
ENDIF
ENDIF
ENDPROC
//Mid Mission Replay
ENUM MissionReplay
replayStart,
replayClimb,
replayMansion,
replayGarage,
replayDealer,
replayFight,
replayPass
ENDENUM
PROC MISSION_REPLAY(MissionReplay eMissionReplay = replayStart)
//- Replay Specific Position
VECTOR vStartReplay
FLOAT fStartReplay
SWITCH eMissionReplay
CASE replayStart
vStartReplay = vPlayerStart
fStartReplay = fPlayerStart
BREAK
CASE replayClimb
vStartReplay = <<-851.8660, 178.7462, 68.6477>>
fStartReplay = 262.7337
BREAK
CASE replayMansion
vStartReplay = <<-802.6609, 168.6319, 75.7407>>
fStartReplay = 31.0258
BREAK
CASE replayGarage
vStartReplay = vCarStart
fStartReplay = fCarStart
BREAK
CASE replayDealer
vStartReplay = <<-72.6144, -1106.4908, 25.0423>>
fStartReplay = 299.8838
BREAK
CASE replayFight
vStartReplay = <<-58.1243, -1095.0555, 25.4345>>
fStartReplay = 314.0250
BREAK
CASE replayPass
vStartReplay = <<-63.8593, -1092.5178, 25.5585>>
fStartReplay = 71.5067
BREAK
ENDSWITCH
START_REPLAY_SETUP(vStartReplay, fStartReplay, FALSE)
END_REPLAY_SETUP(NULL, VS_DRIVER, FALSE)
SWITCH eMissionReplay
CASE replayStart
SET_PED_POSITION(PLAYER_PED_ID(), vPlayerStart, fPlayerStart)
CREATE_VEHICLE_FOR_REPLAY(vehDriveTo, <<-58.3923, -1114.5612, 25.4358>>, 74.8206, FALSE, FALSE, FALSE, FALSE, FALSE)
IF DOES_ENTITY_EXIST(vehDriveTo)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
ENDIF
// WHILE intGarage = NULL
// OR NOT IS_INTERIOR_READY(intGarage)
// IF intGarage = NULL
// intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(vDealership, "v_carshowroom")
// ELSE
// IF bPinnedGarage = FALSE
// PIN_INTERIOR_IN_MEMORY(intGarage)
//
// IF NOT IS_INTERIOR_READY(intGarage)
// PRINTLN("PINNING INTERIOR...")
// ELSE
// bPinnedGarage = TRUE
// ENDIF
// ENDIF
// ENDIF
//
// WAIT(0)
// ENDWHILE
// WHILE NOT CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)
// WAIT(0)
// ENDWHILE
//Load Scene
//LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID()))
eMissionObjective = stageGoToMansion
BREAK
CASE replayClimb
SET_PED_POSITION(PLAYER_PED_ID(), <<-851.8660, 178.7462, 68.6477>>, 262.7337)
CREATE_VEHICLE_FOR_REPLAY(vehDriveTo, <<-855.5760, 172.7193, 67.1646>>, 352.4847, FALSE, FALSE, FALSE, FALSE)
IF DOES_ENTITY_EXIST(vehDriveTo)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
SET_VEHICLE_POSITION(vehDriveTo, <<-855.5760, 172.7193, 67.1646>>, 352.4847)
SET_VEHICLE_FIXED(vehDriveTo)
SET_VEHICLE_ON_GROUND_PROPERLY(vehDriveTo)
SET_VEHICLE_DOORS_SHUT(vehDriveTo, TRUE)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
ENDIF
// REQUEST_MODEL(BJXL)
// REQUEST_MODEL(PROP_HD_SEATS_01)
//
// WHILE NOT HAS_MODEL_LOADED(BJXL)
// OR NOT HAS_MODEL_LOADED(PROP_HD_SEATS_01)
// WAIT(0)
// ENDWHILE
//
// SPAWN_VEHICLE(vehCar, BJXL, vCarStart, fCarStart, 126)
// SETUP_JIMMYS_CAR(vehCar)
// SET_VEHICLE_EXTRA(vehCar, 5, TRUE)
// SET_ENTITY_COORDS_NO_OFFSET(vehCar, vCarStart)
// SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
//
// objSeats = CREATE_OBJECT(PROP_HD_SEATS_01, vCarStart)
// SET_ENTITY_COLLISION(objSeats, FALSE)
// ATTACH_ENTITY_TO_ENTITY(objSeats, vehCar, 0, VECTOR_ZERO, VECTOR_ZERO)
// SET_MODEL_AS_NO_LONGER_NEEDED(PROP_HD_SEATS_01)
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
eMissionObjective = stageClimbUp
BREAK
CASE replayMansion
CREATE_VEHICLE_FOR_REPLAY(vehDriveTo, <<-855.5760, 172.7193, 67.1646>>, 352.4847, FALSE, FALSE, FALSE, FALSE, FALSE)
IF DOES_ENTITY_EXIST(vehDriveTo)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
SET_VEHICLE_POSITION(vehDriveTo, <<-855.5760, 172.7193, 67.1646>>, 352.4847)
SET_VEHICLE_FIXED(vehDriveTo)
SET_VEHICLE_ON_GROUND_PROPERLY(vehDriveTo)
SET_VEHICLE_DOORS_SHUT(vehDriveTo, TRUE)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
ENDIF
REQUEST_MODEL(BJXL)
//REQUEST_MODEL(PROP_HD_SEATS_01)
WHILE NOT HAS_MODEL_LOADED(BJXL)
//OR NOT HAS_MODEL_LOADED(PROP_HD_SEATS_01)
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehCar, BJXL, vCarStart, fCarStart, 126)
SETUP_JIMMYS_CAR(vehCar)
SET_VEHICLE_EXTRA(vehCar, 5, FALSE)
SET_ENTITY_COORDS_NO_OFFSET(vehCar, vCarStart)
SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
// objSeats = CREATE_OBJECT(PROP_HD_SEATS_01, vCarStart)
// SET_ENTITY_COLLISION(objSeats, FALSE)
// ATTACH_ENTITY_TO_ENTITY(objSeats, vehCar, 0, VECTOR_ZERO, VECTOR_ZERO)
// SET_MODEL_AS_NO_LONGER_NEEDED(PROP_HD_SEATS_01)
REQUEST_MODEL(BISON3)
WHILE NOT HAS_MODEL_LOADED(BISON3)
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehClimb, BISON3, <<-800.1796, 164.9729, 70.5296>>, 111.0221, 132)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehClimb, TRUE)
SET_VEHICLE_DOORS_LOCKED(vehClimb, VEHICLELOCK_LOCKED)
SET_VEHICLE_ALARM(vehClimb, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(BISON3)
// Reset the TV script brain.
REACTIVATE_NAMED_OBJECT_BRAINS_WAITING_TILL_OUT_OF_RANGE("ob_tv")
// Reset TV object - It's a rayfire object, so needs special treatment.
iTVObject = GET_RAYFIRE_MAP_OBJECT( <<-809.9620, 170.9190, 75.7407>>, 3, "des_tvsmash" )
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(iTVObject)
SET_STATE_OF_RAYFIRE_MAP_OBJECT(iTVObject, RFMO_STATE_RESET)
ENDIF
eMissionObjective = stageSneakThrough
BREAK
CASE replayGarage
//Pin Interior
intMansion = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-812.1879, 179.9663, 71.1639>>, "V_Michael")
PIN_INTERIOR_IN_MEMORY(intMansion)
CREATE_VEHICLE_FOR_REPLAY(vehDriveTo, <<-855.5760, 172.7193, 67.1646>>, 352.4847, FALSE, FALSE, FALSE, FALSE, FALSE)
IF DOES_ENTITY_EXIST(vehDriveTo)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
SET_VEHICLE_POSITION(vehDriveTo, <<-855.5760, 172.7193, 67.1646>>, 352.4847)
SET_VEHICLE_FIXED(vehDriveTo)
SET_VEHICLE_ON_GROUND_PROPERLY(vehDriveTo)
SET_VEHICLE_DOORS_SHUT(vehDriveTo, TRUE)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
ENDIF
REQUEST_MODEL(BJXL)
//REQUEST_MODEL(PROP_HD_SEATS_01)
WHILE NOT HAS_MODEL_LOADED(BJXL)
//OR NOT HAS_MODEL_LOADED(PROP_HD_SEATS_01)
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehCar, BJXL, vCarStart, fCarStart, 126)
SETUP_JIMMYS_CAR(vehCar)
SET_VEHICLE_EXTRA(vehCar, 5, FALSE)
SET_ENTITY_COORDS_NO_OFFSET(vehCar, vCarStart)
SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
// objSeats = CREATE_OBJECT(PROP_HD_SEATS_01, vCarStart)
// SET_ENTITY_COLLISION(objSeats, FALSE)
// ATTACH_ENTITY_TO_ENTITY(objSeats, vehCar, 0, VECTOR_ZERO, VECTOR_ZERO)
// SET_MODEL_AS_NO_LONGER_NEEDED(PROP_HD_SEATS_01)
//Mod Shop
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
eMissionObjective = stageStealCar
BREAK
CASE replayDealer
REQUEST_MODEL(BJXL)
//REQUEST_MODEL(PROP_HD_SEATS_01)
REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
WHILE NOT HAS_MODEL_LOADED(BJXL)
//OR NOT HAS_MODEL_LOADED(PROP_HD_SEATS_01)
OR NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehCar, BJXL, vCarStart, fCarStart, 126)
SETUP_JIMMYS_CAR(vehCar)
SET_VEHICLE_EXTRA(vehCar, 5, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
//objSeats = CREATE_OBJECT(PROP_HD_SEATS_01, vCarStart)
//SET_ENTITY_COLLISION(objSeats, FALSE)
//ATTACH_ENTITY_TO_ENTITY(objSeats, vehCar, 0, VECTOR_ZERO, VECTOR_ZERO)
//SET_MODEL_AS_NO_LONGER_NEEDED(PROP_HD_SEATS_01)
SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStart, fMichaelStart)
SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_DENIM, FALSE)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_UNARMED, TRUE)
IF NOT DOES_ENTITY_EXIST(objGun)
objGun = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL), vMichaelStart)
ENDIF
ATTACH_ENTITY_TO_ENTITY(objGun, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy)
SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
SET_LABEL_AS_TRIGGERED("ARM3_GUN", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNA", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNB", TRUE)
//Mod Shop
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
IF g_bShitskipAccepted = TRUE
eMissionObjective = cutArrive
ELSE
eMissionObjective = stageRammingSpeed
ENDIF
BREAK
CASE replayFight
intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(vDealership, "v_carshowroom")
PIN_INTERIOR_IN_MEMORY(intGarage)
WHILE NOT IS_INTERIOR_READY(intGarage)
PRINTLN("PINNING INTERIOR...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
bPinnedGarage = TRUE
REQUEST_MODEL(BJXL)
//REQUEST_MODEL(PROP_HD_SEATS_01)
REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
REQUEST_MODEL(GET_NPC_PED_MODEL(CHAR_SIMEON))
WHILE NOT HAS_MODEL_LOADED(BJXL)
//OR NOT HAS_MODEL_LOADED(PROP_HD_SEATS_01)
OR NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
OR NOT HAS_MODEL_LOADED(GET_NPC_PED_MODEL(CHAR_SIMEON))
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehCar, BJXL, vCarStart, fCarStart, 126)
SETUP_JIMMYS_CAR(vehCar)
SET_VEHICLE_EXTRA(vehCar, 5, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
//objSeats = CREATE_OBJECT(PROP_HD_SEATS_01, vCarStart)
//SET_ENTITY_COLLISION(objSeats, FALSE)
//ATTACH_ENTITY_TO_ENTITY(objSeats, vehCar, 0, VECTOR_ZERO, VECTOR_ZERO)
//SET_MODEL_AS_NO_LONGER_NEEDED(PROP_HD_SEATS_01)
SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStart, fMichaelStart)
SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_DENIM, FALSE)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_UNARMED, TRUE)
SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedOwner, CHAR_SIMEON, <<-56.4360, -1098.8176, 25.4345>>, 31.1490)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_PED_SUFFERS_CRITICAL_HITS(pedOwner, FALSE)
SET_ENTITY_HEALTH(pedOwner, 200 + 200)
SET_PED_MAX_HEALTH(pedOwner, 200 + 200)
TASK_LOOK_AT_ENTITY(pedOwner, vehCar, 3000)
SET_ENTITY_INVINCIBLE(pedOwner, TRUE)
SAFE_SET_ENTITY_VISIBLE(pedOwner, FALSE)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_SIMEON))
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedOwner, "SIMEON")
SET_LABEL_AS_TRIGGERED("ARM3_GUN", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNA", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNB", TRUE)
//Mod Shop
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
eMissionObjective = stageBeatDown
BREAK
CASE replayPass
intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(vDealership, "v_carshowroom")
PIN_INTERIOR_IN_MEMORY(intGarage)
WHILE NOT IS_INTERIOR_READY(intGarage)
PRINTLN("PINNING INTERIOR...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
bPinnedGarage = TRUE
REQUEST_MODEL(BJXL)
//REQUEST_MODEL(PROP_HD_SEATS_01)
REQUEST_MODEL(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
REQUEST_MODEL(GET_NPC_PED_MODEL(CHAR_SIMEON))
WHILE NOT HAS_MODEL_LOADED(BJXL)
//OR NOT HAS_MODEL_LOADED(PROP_HD_SEATS_01)
OR NOT HAS_MODEL_LOADED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
OR NOT HAS_MODEL_LOADED(GET_NPC_PED_MODEL(CHAR_SIMEON))
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehCar, BJXL, vCarStart, fCarStart, 126)
SETUP_JIMMYS_CAR(vehCar)
SET_VEHICLE_EXTRA(vehCar, 5, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
//objSeats = CREATE_OBJECT(PROP_HD_SEATS_01, vCarStart)
//SET_ENTITY_COLLISION(objSeats, FALSE)
//ATTACH_ENTITY_TO_ENTITY(objSeats, vehCar, 0, VECTOR_ZERO, VECTOR_ZERO)
//SET_MODEL_AS_NO_LONGER_NEEDED(PROP_HD_SEATS_01)
SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStart, fMichaelStart)
SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_DENIM, FALSE)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_UNARMED, TRUE)
SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedOwner, CHAR_SIMEON, <<-56.4360, -1098.8176, 25.4345>>, 31.1490)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_PED_SUFFERS_CRITICAL_HITS(pedOwner, FALSE)
SET_ENTITY_HEALTH(pedOwner, 200 + 200)
SET_PED_MAX_HEALTH(pedOwner, 200 + 200)
TASK_LOOK_AT_ENTITY(pedOwner, vehCar, 3000)
SET_ENTITY_INVINCIBLE(pedOwner, TRUE)
SAFE_SET_ENTITY_VISIBLE(pedOwner, FALSE)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_SIMEON))
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedOwner, "SIMEON")
SET_LABEL_AS_TRIGGERED("ARM3_GUN", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNA", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNB", TRUE)
//Mod Shop
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
bShitSkip = TRUE
eMissionObjective = stageBeatDown
BREAK
ENDSWITCH
bSkipped = TRUE
bReplaySkip = TRUE
#IF IS_DEBUG_BUILD
PRINTLN("eMissionObjective = ", eMissionObjective)
#ENDIF
ENDPROC
PROC LOAD_UNLOAD_ASSETS()
//Stages Reference
//stageGoToMansion,
//stageClimbUp,
//cutArgue,
//stageSneakThrough,
//stageStealCar,
//stageDriveTo,
//cutArrive,
//stageRammingSpeed,
//cutWindowSmash,
//stageBeatDown,
//stageExitDealership,
//passMission,
//failMission
//Mission Peds:
//
//Mission Cars:
//
//Mission Props:
//
//Request Models
//GET_NPC_PED_MODEL(CHAR_JIMMY) - Son
IF (eMissionObjective = stageClimbUp) //AND HAS_LABEL_BEEN_TRIGGERED("ARM3_CLIMB"))
OR eMissionObjective >= cutArgue AND eMissionObjective <= stageSneakThrough
HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_JIMMY))
ENDIF
//GET_NPC_PED_MODEL(CHAR_TRACEY) - Daughter
IF (eMissionObjective = stageClimbUp) //AND HAS_LABEL_BEEN_TRIGGERED("ARM3_CLIMB"))
OR eMissionObjective >= cutArgue AND eMissionObjective <= stageSneakThrough
HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_TRACEY))
ENDIF
//GET_NPC_PED_MODEL(CHAR_AMANDA) - Wife
IF eMissionObjective >= cutArgue AND eMissionObjective <= stageSneakThrough
HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_AMANDA))
ENDIF
//GET_NPC_PED_MODEL(CHAR_TENNIS_COACH) - Coach
IF eMissionObjective >= cutArgue AND eMissionObjective <= stageSneakThrough
HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_TENNIS_COACH))
ENDIF
//BJXL - Car
IF (eMissionObjective = stageGoToMansion AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vMansion) < 200.0)
OR (eMissionObjective >= stageClimbUp AND eMissionObjective <= stageBeatDown)
IF NOT DOES_ENTITY_EXIST(vehCar)
HAS_MODEL_LOADED_CHECK(BJXL)
//HAS_MODEL_LOADED_CHECK(PROP_HD_SEATS_01)
ENDIF
ENDIF
//GET_PLAYER_PED_MODEL(CHAR_MICHAEL)
IF eMissionObjective = stageSneakThrough OR eMissionObjective = stageStealCar
HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
ENDIF
//PROP_SHOWROOM_GLASS_1B - Dealership Window
IF eMissionObjective >= cutArrive
AND eMissionObjective <= stageRammingSpeed
HAS_MODEL_LOADED_CHECK(PROP_SHOWROOM_GLASS_1B)
ENDIF
//GET_NPC_PED_MODEL(CHAR_SIMEON) - Simeon
IF eMissionObjective >= stageRammingSpeed
AND eMissionObjective <= cutWindowSmash
HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_SIMEON))
ENDIF
//GET_NPC_PED_MODEL(CHAR_SIMEON) - Simeon
IF eMissionObjective >= stageSneakThrough
AND eMissionObjective <= cutWindowSmash
HAS_MODEL_LOADED_CHECK(GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL))
ENDIF
//Vehicle Recordings
//001
//004
// IF eMissionObjective = stageDriveTo
// IF NOT HAS_RECORDING_LOADED_CHECK(001, sCarrec)
// REQUEST_VEHICLE_RECORDING(001, sCarrec)
// ENDIF
//
// IF NOT HAS_RECORDING_LOADED_CHECK(004, sCarrec)
// REQUEST_VEHICLE_RECORDING(004, sCarrec)
// ENDIF
// ENDIF
//Waypoint Recordings
//Animation Dictionaries
IF (eMissionObjective = stageGoToMansion AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vMansion) < 200.0)
OR (eMissionObjective >= stageClimbUp AND eMissionObjective <= stageRammingSpeed)
HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
ELSE
UNLOAD_ANIM_DICT(sAnimDictArm3)
ENDIF
IF (eMissionObjective >= stageClimbUp AND eMissionObjective <= stageSneakThrough)
HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3Argue)
ELSE
UNLOAD_ANIM_DICT(sAnimDictArm3Argue)
ENDIF
IF (eMissionObjective >= stageClimbUp AND eMissionObjective <= cutArgue)
HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3Climb)
ELSE
UNLOAD_ANIM_DICT(sAnimDictArm3Climb)
ENDIF
IF NOT (eMissionObjective = stageClimbUp)
UNLOAD_ANIM_DICT(sAnimDictDoor)
ENDIF
IF eMissionObjective >= cutWindowSmash AND eMissionObjective <= stageBeatDown
HAS_ANIM_DICT_LOADED_CHECK(sAnimDictAngry)
ELSE
UNLOAD_ANIM_DICT(sAnimDictAngry)
ENDIF
IF eMissionObjective >= stageRammingSpeed AND eMissionObjective <= cutWindowSmash
HAS_ANIM_DICT_LOADED_CHECK(sAnimDictLeadInMCS8)
ELSE
UNLOAD_ANIM_DICT(sAnimDictLeadInMCS8)
ENDIF
// IF eMissionObjective >= cutWindowSmash AND eMissionObjective <= stageBeatDown
// HAS_ANIM_DICT_LOADED_CHECK(sAnimDictSlam)
// ELSE
// UNLOAD_ANIM_DICT(sAnimDictSlam)
// ENDIF
//Audio
IF eMissionObjective = stageSneakThrough OR eMissionObjective = stageStealCar OR eMissionObjective = stageDriveTo
REQUEST_SCRIPT_AUDIO_BANK("ARM_3_01")
ENDIF
IF eMissionObjective = stageRammingSpeed OR eMissionObjective = cutWindowSmash
REQUEST_SCRIPT_AUDIO_BANK("ARM_3_02_CAR_CRASH")
ENDIF
//Switch Tutorial
// IF eMissionObjective = stageBeatDown
// OR eMissionObjective = stageExitDealership
// OR eMissionObjective = stageSwitchTutorial
// REQUEST_ANIM_DICT("amb@smoking@standing@male@enter")
// REQUEST_ANIM_DICT("amb@smoking@standing@male@idle_a")
// REQUEST_ANIM_DICT("weapon@w_j_rpg_aa_h_hi")
// REQUEST_ANIM_DICT("mini@golf")
// REQUEST_MODEL(PROP_CS_CIGGY_01)
// REQUEST_MODEL(PROP_BSKBALL_01)
// ENDIF
ENDPROC
FUNC FLOAT GET_HEADING_FROM_VECTOR(VECTOR vVector)
RETURN vVector.Z
ENDFUNC
// SETUP PROCEDURES
// OBJECTIVE PROCEDURES
PROC initialiseMission()
IF INIT_STAGE()
//INFORM_MISSION_STATS_OF_MISSION_START_ARMENIAN_THREE()
//GPS
//SET_IGNORE_NO_GPS_FLAG(TRUE)
//Car Gens
ADD_SCENARIO_BLOCKING_AREA(GET_STATIC_BLIP_POSITION(STATIC_BLIP_MISSION_ARMENIAN_3) - <<25.0, 25.0, 15.0>>, GET_STATIC_BLIP_POSITION(STATIC_BLIP_MISSION_CAR_STEAL_1) + <<25.0, 25.0, 15.0>>)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-46.890217, -1105.479004, 29.436941>> - <<20.0, 20.0, 5.0>>, <<-46.890217, -1105.479004, 29.436941>> + <<20.0, 20.0, 5.0>>, FALSE)
IF NOT IS_CUTSCENE_PLAYING()
CLEAR_AREA(<<-46.890217, -1105.479004, 29.436941>>, 20.0, TRUE)
ENDIF
CLEAR_AREA(<<-47.07522, -1114.47644, 25.43581>>, 7.5, TRUE)
CLEAR_AREA(<<-40.14164, -1113.71350, 25.43738>>, 5.0, TRUE)
CLEAR_AREA(<<-57.75611, -1112.76880, 25.43581>>, 10.0, TRUE)
#IF IS_DEBUG_BUILD
//Auto Skipping
IF bAutoSkipping = TRUE
IF NOT IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_OUT(500)
ENDIF
ENDIF
#ENDIF
bJimmyTVPLayingGame = FALSE
bProjectorTVDisabled = FALSE
//Prepare Mission
CLEAR_AREA(vMansion, 500.0, TRUE)
ADD_SCENARIO_BLOCKING_AREA(<<-804.983521, 166.219025, 70.562447>> - <<50.0, 35.0, 15.0>>, <<-804.983521, 166.219025, 70.562447>> + <<50.0, 35.0, 15.0>>)
//Cover Blocking (Michael's house)
ADD_COVER_BLOCKING_AREA(<<-807.365112, 173.095642, 77.240707>> - <<1.0, 1.0, 1.5>>, <<-807.365112, 173.095642, 77.240707>> + <<1.0, 1.0, 1.5>>, TRUE, TRUE, TRUE, TRUE)
ADD_COVER_BLOCKING_AREA(<<-801.839478, 174.241882, 77.240738>> - <<1.5, 2.0, 1.5>>, <<-801.839478, 174.241882, 77.240738>> + <<1.5, 2.0, 1.5>>, TRUE, TRUE, TRUE, TRUE)
ADD_COVER_BLOCKING_AREA(<<-797.673828, 181.633575, 73.345284>> - <<3.5, 4.0, 2.0>>, <<-797.673828, 181.633575, 73.345284>> + <<3.5, 4.0, 2.0>>, TRUE, TRUE, TRUE, TRUE)
ADD_COVER_BLOCKING_AREA(<<-799.448975, 184.006149, 73.355469>> - <<4.5, 4.5, 2.0>>, <<-799.448975, 184.006149, 73.355469>> + <<4.5, 4.5, 2.0>>, TRUE, TRUE, TRUE, TRUE)
//Request Additional Text
REQUEST_ADDITIONAL_TEXT("ARM3", MISSION_TEXT_SLOT)
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT)
WAIT(0) PRINTLN("LOADING TEXT")
ENDWHILE
//Doors
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iBathroomDoor)
ADD_DOOR_TO_SYSTEM(iBathroomDoor, V_ILEV_MM_DOORW, <<-804.95, 171.86, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iJimmyDoor)
ADD_DOOR_TO_SYSTEM(iJimmyDoor, V_ILEV_MM_DOORSON, <<-806.77, 174.02, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iTraceyDoor)
ADD_DOOR_TO_SYSTEM(iTraceyDoor, V_ILEV_MM_DOORDAUGHTER, <<-802.70, 176.18, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iMichaelDoor)
ADD_DOOR_TO_SYSTEM(iMichaelDoor, V_ILEV_MM_DOORW, <<-809.28, 177.86, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iGarageDoor)
ADD_DOOR_TO_SYSTEM(iGarageDoor, V_ILEV_MM_DOOR, <<-806.28, 186.02, 72.62>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor1)
ADD_DOOR_TO_SYSTEM(iDealershipDoor1, V_ILEV_FIB_DOOR1, <<-31.72, -1101.85, 26.57>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor2)
ADD_DOOR_TO_SYSTEM(iDealershipDoor2, V_ILEV_FIB_DOOR1, <<-33.81, -1107.58, 26.57>>)
ENDIF
//Audio
REGISTER_SCRIPT_WITH_AUDIO()
//Widgets
#IF IS_DEBUG_BUILD
IF NOT DOES_WIDGET_GROUP_EXIST(widGroup)
widGroup = START_WIDGET_GROUP("Armenian 3")
START_WIDGET_GROUP("Debug Print")
ADD_WIDGET_BOOL("Audio", bDebugAudio)
STOP_WIDGET_GROUP()
START_WIDGET_GROUP("Debug Fail")
ADD_WIDGET_INT_SLIDER("Fail Timer Override", iFailTimer, 0, 2147483647, 1000)
STOP_WIDGET_GROUP()
// START_WIDGET_GROUP("Debug Hood Cam")
// ADD_WIDGET_FLOAT_SLIDER("fSpringConstant", fHoodSpringConstant, 0.0, 10000.0, 1.0)
// ADD_WIDGET_FLOAT_SLIDER("fDampingRatio", fHoodDampingRatio, 0.0, 100.0, 0.1)
// STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
SET_LOCATES_HEADER_WIDGET_GROUP(widGroup)
ENDIF
#ENDIF
//Relationships
ADD_RELATIONSHIP_GROUP("BUDDIES", relGroupBuddy)
ADD_RELATIONSHIP_GROUP("ENEMIES", relGroupEnemy)
//Buddy
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupBuddy, RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, relGroupBuddy)
//Enemy
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, relGroupBuddy, relGroupEnemy)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, relGroupEnemy, relGroupBuddy)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, RELGROUPHASH_PLAYER, relGroupEnemy)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE, relGroupEnemy, RELGROUPHASH_PLAYER)
//Assisted Movement Routes
ASSISTED_MOVEMENT_REQUEST_ROUTE("Mansion_1")
//Vehicle Gens
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-46.890217, -1105.479004, 29.436941>> - <<20.0, 20.0, 5.0>>, <<-46.890217, -1105.479004, 29.436941>> + <<20.0, 20.0, 5.0>>, FALSE)
//Suppress
SET_VEHICLE_MODEL_IS_SUPPRESSED(BJXL, TRUE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(PATRIOT, TRUE)
// SET_VEHICLE_MODEL_IS_SUPPRESSED(VOLTIC, TRUE)
// SET_VEHICLE_MODEL_IS_SUPPRESSED(GAUNTLET, TRUE)
//Car Gens
//SET_CAR_GENERATORS_CAN_UPDATE_DURING_CUTSCENE(TRUE)
//Set Player
WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_FRANKLIN)
WAIT(0) PRINTLN("SET_CURRENT_SELECTOR_PED(SELECTOR_PED_FRANKLIN)")
ENDWHILE
WHILE GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN
WAIT(0) PRINTLN("GET_CURRENT_PLAYER_PED_ENUM() != CHAR_FRANKLIN")
ENDWHILE
//Lock Mansion Door
UNREGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MICHAEL_MANSION_GATE, PLAYER_PED_ID())
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_MICHAEL_MANSION_GATE].doorID, DOORSTATE_LOCKED, TRUE, TRUE)
//Dialogue
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 3, PLAYER_PED_ID(), "FRANKLIN")
//ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, NULL, "SIMEON")
IF intGarage = NULL
intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(vDealership, "v_carshowroom")
ENDIF
REQUEST_MODEL(TAILGATER)
REQUEST_MODEL(BJXL)
WHILE NOT HAS_MODEL_LOADED(TAILGATER)
OR NOT HAS_MODEL_LOADED(BJXL)
REQUEST_MODEL(TAILGATER)
REQUEST_MODEL(BJXL)
WAIT(0) PRINTLN("HAS_MODEL_LOADED(TAILGATER) OR HAS_MODEL_LOADED(BJXL)")
ENDWHILE
IF NOT DOES_ENTITY_EXIST(vehGarage[0])
SPAWN_VEHICLE(vehGarage[0], BJXL, <<-36.6411, -1102.1914, 25.4223>>, 154.2468)
RETAIN_ENTITY_IN_INTERIOR(vehGarage[0], intGarage)
ENDIF
IF NOT DOES_ENTITY_EXIST(vehGarage[1])
SPAWN_VEHICLE(vehGarage[1], TAILGATER, <<-41.7113, -1100.0415, 25.4223>>, 138.7067)
RETAIN_ENTITY_IN_INTERIOR(vehGarage[1], intGarage)
ENDIF
IF NOT DOES_ENTITY_EXIST(vehGarage[2])
SPAWN_VEHICLE(vehGarage[2], BJXL, <<-46.3951, -1097.7783, 25.4223>>, 108.3411)
RETAIN_ENTITY_IN_INTERIOR(vehGarage[2], intGarage)
ENDIF
IF NOT DOES_ENTITY_EXIST(vehGarage[3])
SPAWN_VEHICLE(vehGarage[3], TAILGATER, <<-50.0989, -1094.5341, 25.4223>>, 88.9621)
RETAIN_ENTITY_IN_INTERIOR(vehGarage[3], intGarage)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[0])
AND NOT IS_ENTITY_DEAD(vehGarage[0])
SET_VEHICLE_COLOURS(vehGarage[0], 39, 39)
SET_VEHICLE_EXTRA_COLOURS(vehGarage[0], 29, 134)
SET_VEHICLE_EXTRA(vehGarage[0], 10, TRUE)
SET_VEHICLE_EXTRA(vehGarage[0], 11, TRUE)
SET_VEHICLE_EXTRA(vehGarage[0], 12, TRUE)
SET_VEHICLE_DOORS_LOCKED(vehGarage[0], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[0], FALSE)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[1])
AND NOT IS_ENTITY_DEAD(vehGarage[1])
SET_VEHICLE_COLOURS(vehGarage[1], 68, 68)
SET_VEHICLE_EXTRA_COLOURS(vehGarage[1], 68, 134)
SET_VEHICLE_EXTRA(vehGarage[1], 1, TRUE)
SET_VEHICLE_EXTRA(vehGarage[1], 2, TRUE)
SET_VEHICLE_EXTRA(vehGarage[1], 3, TRUE)
SET_VEHICLE_DOORS_LOCKED(vehGarage[1], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[1], FALSE)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[2])
AND NOT IS_ENTITY_DEAD(vehGarage[2])
SET_VEHICLE_COLOURS(vehGarage[2], 6, 3)
SET_VEHICLE_EXTRA_COLOURS(vehGarage[2], 10, 134)
SET_VEHICLE_EXTRA(vehGarage[2], 10, TRUE)
SET_VEHICLE_EXTRA(vehGarage[2], 11, TRUE)
SET_VEHICLE_EXTRA(vehGarage[2], 12, TRUE)
SET_VEHICLE_DOORS_LOCKED(vehGarage[2], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[2], FALSE)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[3])
AND NOT IS_ENTITY_DEAD(vehGarage[3])
SET_VEHICLE_COLOURS(vehGarage[3], 42, 42)
SET_VEHICLE_EXTRA_COLOURS(vehGarage[3], 42, 134)
SET_VEHICLE_EXTRA(vehGarage[3], 1, TRUE)
SET_VEHICLE_EXTRA(vehGarage[3], 2, TRUE)
SET_VEHICLE_EXTRA(vehGarage[3], 3, TRUE)
SET_VEHICLE_DOORS_LOCKED(vehGarage[3], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[3], FALSE)
ENDIF
IF NOT DOES_ENTITY_EXIST(vehGarageOutside[0])
SPAWN_VEHICLE(vehGarageOutside[0], TAILGATER, <<-57.1048, -1105.8546, 25.4364>> + (<<4.32, -1.55, 0.00>> * 0.0), 190.0401)
SET_VEHICLE_EXTRA(vehGarageOutside[0], 1, TRUE)
SET_VEHICLE_EXTRA(vehGarageOutside[0], 2, TRUE)
SET_VEHICLE_EXTRA(vehGarageOutside[0], 3, TRUE)
IF NOT IS_REPLAY_IN_PROGRESS()
#IF IS_DEBUG_BUILD AND bAutoSkipping = FALSE #ENDIF
SAFE_SET_ENTITY_VISIBLE(vehGarageOutside[0], FALSE)
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(vehGarageOutside[1])
SPAWN_VEHICLE(vehGarageOutside[1], TAILGATER, <<-57.1048, -1105.8546, 25.4364>> + (<<4.32, -1.55, 0.00>> * 1.0), 190.0401)
SET_VEHICLE_EXTRA(vehGarageOutside[1], 1, TRUE)
SET_VEHICLE_EXTRA(vehGarageOutside[1], 2, TRUE)
SET_VEHICLE_EXTRA(vehGarageOutside[1], 3, TRUE)
IF NOT IS_REPLAY_IN_PROGRESS()
#IF IS_DEBUG_BUILD AND bAutoSkipping = FALSE #ENDIF
SAFE_SET_ENTITY_VISIBLE(vehGarageOutside[1], FALSE)
ENDIF
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(TAILGATER)
IF SKIPPED_STAGE()
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
ADVANCE_STAGE()
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) PRINTLN("eMissionObjective = ", eMissionObjective)
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
//Your mission is being replayed
IF IS_REPLAY_IN_PROGRESS()
IF g_bShitskipAccepted = TRUE
MISSION_REPLAY(INT_TO_ENUM(MissionReplay, GET_REPLAY_MID_MISSION_STAGE() + 1))
ELSE
MISSION_REPLAY(INT_TO_ENUM(MissionReplay, GET_REPLAY_MID_MISSION_STAGE()))
ENDIF
ELSE //Reset Globals
g_iArmenian3HelpText = 0
ENDIF
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
//SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayStart), "initMission")
ENDIF
ENDPROC
PROC cutsceneIntro()
IF INIT_STAGE()
//Set player
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
//Radar
bRadar = FALSE
#IF IS_DEBUG_BUILD
IF bAutoSkipping = TRUE
#ENDIF
//Drive to Vehicle
// IF vehDriveTo = NULL
//// WHILE NOT CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)
//// WAIT(0) #IF IS_DEBUG_BUILD PRINTLN("CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)") #ENDIF
//// ENDWHILE
// ELSE
// IF DOES_ENTITY_EXIST(vehDriveTo)
// IF NOT IS_ENTITY_DEAD(vehDriveTo)
// VECTOR vTemp1, vTemp2
// GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(vehDriveTo), vTemp1, vTemp2)
// #IF IS_DEBUG_BUILD
// PRINTLN("vMin = <<", vTemp1.X, ", ", vTemp1.Y, ", ", vTemp1.Z, ">>")
// PRINTLN("vMax = <<", vTemp2.X, ", ", vTemp2.Y, ", ", vTemp2.Z, ">>")
// PRINTLN("Total Size (vMax - vMin) = <<", vTemp2.X - vTemp1.X, ", ", vTemp2.Y - vTemp1.Y, ", ", vTemp2.Z - vTemp1.Z, ">>")
// #ENDIF
// IF vTemp2.X - vTemp1.X < 1.0
// SET_VEHICLE_POSITION(vehDriveTo, vDriveTo, fDriveTo) #IF IS_DEBUG_BUILD PRINTLN("vTemp2.X - vTemp1.X < 1.0") #ENDIF
// ELIF vTemp2.X - vTemp1.X < 2.5
// SET_VEHICLE_POSITION(vehDriveTo, <<-17.5816, -1080.1884, 25.6721>>, 126.9052) #IF IS_DEBUG_BUILD PRINTLN("vTemp2.X - vTemp1.X < 2.5") #ENDIF //<<-27.5891, -1082.9415, 25.6017>>, 69.2213
// ELIF vTemp2.X - vTemp1.X < 4.0
// SET_VEHICLE_POSITION(vehDriveTo, <<-17.5528, -1080.9896, 25.6721>>, 126.7335) #IF IS_DEBUG_BUILD PRINTLN("vTemp2.X - vTemp1.X < 4.0") #ENDIF //<<-25.6398, -1082.7731, 25.5949>>, 70.0363
//// ELSE
//// SET_VEHICLE_AS_NO_LONGER_NEEDED(vehDriveTo)
////
//// vehDriveTo = NULL
////
//// CLEAR_AREA(vDriveTo, 20.0, TRUE, TRUE)
////
//// WHILE NOT CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)
//// WAIT(0) #IF IS_DEBUG_BUILD PRINTLN("CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)") #ENDIF
//// ENDWHILE
//// SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
// ENDIF
// ENDIF
// ENDIF
// ENDIF
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
//If this runs then we must be on a TOD so it's ok to hang around and load the model
IF NOT DOES_ENTITY_EXIST(vehIntro)
REQUEST_MODEL(PREMIER)
WHILE NOT HAS_MODEL_LOADED(PREMIER)
WAIT(0) PRINTLN("HAS_MODEL_LOADED(PREMIER)")
ENDWHILE
SPAWN_VEHICLE(vehIntro, PREMIER, vIntroCutscenePos, fIntroCutsceneRot) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehIntro, "vehIntro") #ENDIF
SET_VEHICLE_COLOURS(vehIntro, 43, 43)
SET_VEHICLE_EXTRA(vehIntro, 10, TRUE)
SET_VEHICLE_EXTRA(vehIntro, 11, TRUE)
SET_VEHICLE_EXTRA(vehIntro, 12, TRUE)
SET_VEHICLE_EXTRA_COLOURS(vehIntro, 43, 134)
SET_VEHICLE_DOORS_LOCKED(vehIntro, VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehIntro, FALSE)
PLAY_ENTITY_ANIM(vehIntro, "_leadout_action_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_IN, FALSE, TRUE, FALSE, 0.0, ENUM_TO_INT(AF_USE_KINEMATIC_PHYSICS))
ENDIF
//Cutscene
IF bReplaySkip = FALSE
AND bPreloaded = FALSE
REQUEST_CUTSCENE("Armenian_3_int")
ENDIF
IF SKIPPED_STAGE()
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
SWITCH iCutsceneStage
CASE 0
IF bReplaySkip = FALSE
AND bPreloaded = FALSE
//Request Cutscene Variations - Armenian_3_int
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
//SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("CS_SiemonYetarian", pedOwner)
//SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("A_M_M_BevHills_02", pedIntro)
ENDIF
ENDIF
IF bReplaySkip = TRUE
OR bPreloaded = TRUE
OR HAS_THIS_CUTSCENE_LOADED("Armenian_3_int")
IF bReplaySkip = FALSE
AND bPreloaded = FALSE
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
IF DOES_ENTITY_EXIST(pedOwner)
AND NOT IS_PED_INJURED(pedOwner)
REGISTER_ENTITY_FOR_CUTSCENE(pedOwner, "Siemon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_NPC_PED_MODEL(CHAR_SIMEON))
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Siemon", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, GET_NPC_PED_MODEL(CHAR_SIMEON))
ENDIF
IF DOES_ENTITY_EXIST(pedIntro)
AND NOT IS_PED_INJURED(pedIntro)
REGISTER_ENTITY_FOR_CUTSCENE(pedIntro, "customer", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, A_M_M_BevHills_02)
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "customer", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, A_M_M_BevHills_02)
ENDIF
// IF DOES_ENTITY_EXIST(vehGarage[0])
// AND NOT IS_ENTITY_DEAD(vehGarage[0])
// REGISTER_ENTITY_FOR_CUTSCENE(vehGarage[0], "Showroom_farleft", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, BJXL)
// ELSE
// REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Showroom_farleft", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, BJXL)
// ENDIF
//
// IF DOES_ENTITY_EXIST(vehGarage[1])
// AND NOT IS_ENTITY_DEAD(vehGarage[1])
// REGISTER_ENTITY_FOR_CUTSCENE(vehGarage[1], "Customer_Car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, TAILGATER)
// ELSE
// REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Customer_Car", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, TAILGATER)
// ENDIF
//
// IF DOES_ENTITY_EXIST(vehGarage[2])
// AND NOT IS_ENTITY_DEAD(vehGarage[2])
// REGISTER_ENTITY_FOR_CUTSCENE(vehGarage[2], "Showroom_3rdleft", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, BJXL)
// ELSE
// REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Showroom_3rdleft", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, BJXL)
// ENDIF
IF DOES_ENTITY_EXIST(vehIntro)
AND NOT IS_ENTITY_DEAD(vehIntro)
STOP_SYNCHRONIZED_ENTITY_ANIM(vehIntro, INSTANT_BLEND_OUT, TRUE)
REGISTER_ENTITY_FOR_CUTSCENE(vehIntro, "Showroom_Car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, PREMIER)
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Showroom_Car", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, PREMIER)
ENDIF
START_CUTSCENE() #IF IS_DEBUG_BUILD PRINTLN("START_CUTSCENE() - Armenian_3_int") #ENDIF
WAIT_WITH_DEATH_CHECKS(0)
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-36.443756, -1114.312988, 24.939146>>, <<-58.570412, -1111.051758, 37.435764>>, 20.0, <<-58.3923, -1114.5612, 25.4358>>, 74.8206, GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR())
CLEAR_AREA(<<-48.88689, -1111.56702, 25.43577>>, 12.0, TRUE)
SET_ROADS_IN_ANGLED_AREA(<<-801.065796, 187.031311, 71.605469>>, <<-797.865540, 178.343643, 74.834709>>, 9.0, FALSE, FALSE)
STOP_GAMEPLAY_HINT(TRUE)
CLEAR_TEXT()
//When you want to cut the camera and go back into gameplay or the intro mocap scene call
IF bTimeOfDayRunning
SET_TODS_CUTSCENE_RUNNING(sTimelapse, FALSE)
bTimeOfDayComplete = TRUE
ENDIF
SAFE_SET_ENTITY_VISIBLE(vehGarageOutside[0], TRUE)
SAFE_SET_ENTITY_VISIBLE(vehGarageOutside[1], TRUE)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
//Drive to Vehicle
// IF vehDriveTo = NULL
//// WHILE NOT CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)
//// WAIT(0) #IF IS_DEBUG_BUILD PRINTLN("CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)") #ENDIF
//// ENDWHILE
// ELSE
// IF DOES_ENTITY_EXIST(vehDriveTo)
// IF NOT IS_ENTITY_DEAD(vehDriveTo)
// VECTOR vTemp1, vTemp2
// GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(vehDriveTo), vTemp1, vTemp2)
// #IF IS_DEBUG_BUILD
// PRINTLN("vMin = <<", vTemp1.X, ", ", vTemp1.Y, ", ", vTemp1.Z, ">>")
// PRINTLN("vMax = <<", vTemp2.X, ", ", vTemp2.Y, ", ", vTemp2.Z, ">>")
// PRINTLN("Total Size (vMax - vMin) = <<", vTemp2.X - vTemp1.X, ", ", vTemp2.Y - vTemp1.Y, ", ", vTemp2.Z - vTemp1.Z, ">>")
// #ENDIF
// IF vTemp2.X - vTemp1.X < 1.0
// SET_VEHICLE_POSITION(vehDriveTo, vDriveTo, fDriveTo) #IF IS_DEBUG_BUILD PRINTLN("vTemp2.X - vTemp1.X < 1.0") #ENDIF
// ELIF vTemp2.X - vTemp1.X < 2.5
// SET_VEHICLE_POSITION(vehDriveTo, <<-17.5816, -1080.1884, 25.6721>>, 126.9052) #IF IS_DEBUG_BUILD PRINTLN("vTemp2.X - vTemp1.X < 2.5") #ENDIF //<<-27.5891, -1082.9415, 25.6017>>, 69.2213
// ELIF vTemp2.X - vTemp1.X < 4.0
// SET_VEHICLE_POSITION(vehDriveTo, <<-17.5528, -1080.9896, 25.6721>>, 126.7335) #IF IS_DEBUG_BUILD PRINTLN("vTemp2.X - vTemp1.X < 4.0") #ENDIF //<<-25.6398, -1082.7731, 25.5949>>, 70.0363
//// ELSE
//// SET_VEHICLE_AS_NO_LONGER_NEEDED(vehDriveTo)
////
//// vehDriveTo = NULL
////
//// CLEAR_AREA(vDriveTo, 20.0, TRUE, TRUE)
////
//// WHILE NOT CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)
//// WAIT(0) #IF IS_DEBUG_BUILD PRINTLN("CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)") #ENDIF
//// ENDWHILE
//// SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
// ENDIF
// ENDIF
// ENDIF
// ENDIF
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
SET_VEHICLE_ON_GROUND_PROPERLY(vehDriveTo)
ACTIVATE_PHYSICS(vehDriveTo)
ENDIF
ADVANCE_CUTSCENE()
ENDIF
BREAK
CASE 1
IF NOT DOES_ENTITY_EXIST(pedOwner)
ENTITY_INDEX entityOwner
entityOwner = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Siemon")
IF DOES_ENTITY_EXIST(entityOwner)
pedOwner = GET_PED_INDEX_FROM_ENTITY_INDEX(entityOwner)
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupBuddy)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedOwner, TRUE)
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(pedIntro)
ENTITY_INDEX entityIntro
entityIntro = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("customer")
IF DOES_ENTITY_EXIST(entityIntro)
pedIntro = GET_PED_INDEX_FROM_ENTITY_INDEX(entityIntro)
SET_PED_RELATIONSHIP_GROUP_HASH(pedIntro, relGroupBuddy)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedIntro, TRUE)
ENDIF
ENDIF
// IF NOT DOES_ENTITY_EXIST(vehGarage[0])
// IF NOT DOES_ENTITY_EXIST(vehGarage[0])
// ENTITY_INDEX entityIntro
// entityIntro = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_farleft")
//
// IF DOES_ENTITY_EXIST(entityIntro)
// vehGarage[0] = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(entityIntro) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehGarage[0], "vehGarage[0]") #ENDIF
//
// SET_VEHICLE_COLOURS(vehGarage[0], 39, 39)
// SET_VEHICLE_EXTRA_COLOURS(vehGarage[0], 29, 134)
// SET_VEHICLE_DOORS_LOCKED(vehGarage[0], VEHICLELOCK_CANNOT_ENTER)
// SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[0], FALSE)
// ENDIF
// ENDIF
// ENDIF
//
// IF NOT DOES_ENTITY_EXIST(vehGarage[1])
// IF NOT DOES_ENTITY_EXIST(vehGarage[1])
// ENTITY_INDEX entityIntro
// entityIntro = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Customer_Car")
//
// IF DOES_ENTITY_EXIST(entityIntro)
// vehGarage[1] = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(entityIntro) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehGarage[1], "vehGarage[1]") #ENDIF
//
// SET_VEHICLE_COLOURS(vehGarage[1], 68, 68)
// SET_VEHICLE_EXTRA_COLOURS(vehGarage[1], 68, 134)
// SET_VEHICLE_DOORS_LOCKED(vehGarage[1], VEHICLELOCK_CANNOT_ENTER)
// SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[1], FALSE)
// ENDIF
// ENDIF
// ENDIF
//
// IF NOT DOES_ENTITY_EXIST(vehGarage[2])
// IF NOT DOES_ENTITY_EXIST(vehGarage[2])
// ENTITY_INDEX entityIntro
// entityIntro = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_3rdleft")
//
// IF DOES_ENTITY_EXIST(entityIntro)
// vehGarage[2] = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(entityIntro) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehGarage[2], "vehGarage[2]") #ENDIF
//
// SET_VEHICLE_COLOURS(vehGarage[2], 6, 3)
// SET_VEHICLE_EXTRA_COLOURS(vehGarage[2], 10, 134)
// SET_VEHICLE_DOORS_LOCKED(vehGarage[2], VEHICLELOCK_CANNOT_ENTER)
// SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[2], FALSE)
// ENDIF
// ENDIF
// ENDIF
IF NOT DOES_ENTITY_EXIST(vehIntro)
IF NOT DOES_ENTITY_EXIST(vehIntro)
ENTITY_INDEX entityIntro
entityIntro = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_Car")
IF DOES_ENTITY_EXIST(entityIntro)
vehIntro = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(entityIntro) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehIntro, "vehIntro") #ENDIF
SET_VEHICLE_COLOURS(vehIntro, 43, 43)
SET_VEHICLE_EXTRA_COLOURS(vehIntro, 43, 134)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_CAMERA()
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10.0)
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Showroom_Car")
IF DOES_ENTITY_EXIST(vehIntro)
AND NOT IS_ENTITY_DEAD(vehIntro)
SET_VEHICLE_POSITION(vehIntro, vIntroCutscenePos, fIntroCutsceneRot)
SET_VEHICLE_DOORS_LOCKED(vehIntro, VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehIntro, FALSE)
PLAY_ENTITY_ANIM(vehIntro, "_leadout_action_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_IN, FALSE, TRUE, FALSE, 0.0, ENUM_TO_INT(AF_USE_KINEMATIC_PHYSICS))
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Siemon")
IF DOES_ENTITY_EXIST(pedOwner)
AND NOT IS_ENTITY_DEAD(pedOwner)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedOwner, "SIMEON")
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3LeadInOut, "_leadout_action_simeon", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3LeadInOut, "_leadout_loop_simeon", vIntroCutscenePos, vIntroCutsceneRot, SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedOwner, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
// TASK_PLAY_ANIM_ADVANCED(pedOwner, sAnimDictArm3LeadInOut, "_leadout_loop_simeon", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED)
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedOwner)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("customer")
IF DOES_ENTITY_EXIST(pedIntro)
AND NOT IS_ENTITY_DEAD(pedIntro)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 7, pedIntro, "MrKenneth")
IF DOES_ENTITY_EXIST(vehIntro)
AND NOT IS_ENTITY_DEAD(vehIntro)
VECTOR scenePosition
VECTOR sceneRotation
scenePosition = VECTOR_ZERO
sceneRotation = VECTOR_ZERO
sceneLeadOutMCS1 = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneLeadOutMCS1, vehIntro, GET_ENTITY_BONE_INDEX_BY_NAME(vehIntro, "seat_dside_f"))
TASK_SYNCHRONIZED_SCENE(pedIntro, sceneLeadOutMCS1, sAnimDictArm3LeadInOut, "_leadout_action_customer", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneLeadOutMCS1, TRUE)
ENDIF
// TASK_PLAY_ANIM_ADVANCED(pedIntro, sAnimDictArm3LeadInOut, "_leadout_action_customer", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_HOLD_LAST_FRAME)
// IF DOES_ENTITY_EXIST(vehIntro)
// AND NOT IS_ENTITY_DEAD(vehIntro)
// SET_ENTITY_NO_COLLISION_ENTITY(pedIntro, vehIntro, TRUE)
// ENDIF
// IF DOES_ENTITY_EXIST(vehIntro)
// AND NOT IS_ENTITY_DEAD(vehIntro)
// SET_PED_INTO_VEHICLE(pedIntro, vehIntro)
// TASK_PLAY_ANIM(pedIntro, sAnimDictArm3LeadInOut, "_leadout_loop_customer", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY | AF_LOOPING)
// ENDIF
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedIntro)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin")
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 2000)
FORCE_PED_MOTION_STATE(PLAYER_PED(CHAR_FRANKLIN), MS_ON_FOOT_WALK, TRUE, FAUS_CUTSCENE_EXIT)
ENDIF
#IF IS_DEBUG_BUILD
IF HAS_CUTSCENE_FINISHED()
PRINTLN("HAS_CUTSCENE_FINISHED() = TRUE")
ENDIF
#ENDIF
IF bReplaySkip = TRUE
OR HAS_CUTSCENE_FINISHED()
IF NOT DOES_ENTITY_EXIST(vehIntro)
REQUEST_MODEL(PREMIER)
WHILE NOT HAS_MODEL_LOADED(PREMIER)
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehIntro, PREMIER, vIntroCutscenePos, fIntroCutsceneRot) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehIntro, "vehIntro") #ENDIF
SET_VEHICLE_COLOURS(vehIntro, 43, 43)
SET_VEHICLE_EXTRA(vehIntro, 10, TRUE)
SET_VEHICLE_EXTRA(vehIntro, 11, TRUE)
SET_VEHICLE_EXTRA(vehIntro, 12, TRUE)
SET_VEHICLE_EXTRA_COLOURS(vehIntro, 43, 134)
SET_VEHICLE_DOORS_LOCKED(vehIntro, VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehIntro, FALSE)
PLAY_ENTITY_ANIM(vehIntro, "_leadout_action_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_IN, FALSE, TRUE, FALSE, 0.0, ENUM_TO_INT(AF_USE_KINEMATIC_PHYSICS))
ENDIF
IF NOT DOES_ENTITY_EXIST(pedOwner)
REQUEST_MODEL(GET_NPC_PED_MODEL(CHAR_SIMEON))
WHILE NOT HAS_MODEL_LOADED(GET_NPC_PED_MODEL(CHAR_SIMEON))
WAIT(0)
ENDWHILE
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedOwner, CHAR_SIMEON, <<-42.4751, -1110.9316, 25.4343>>, 312.8127)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupBuddy)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedOwner, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_SIMEON))
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedOwner, "SIMEON")
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3LeadInOut, "_leadout_action_simeon", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3LeadInOut, "_leadout_loop_simeon", vIntroCutscenePos, vIntroCutsceneRot, SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedOwner, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
// TASK_PLAY_ANIM_ADVANCED(pedOwner, sAnimDictArm3LeadInOut, "_leadout_loop_simeon", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED)
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedOwner)
ENDIF
IF NOT DOES_ENTITY_EXIST(pedIntro)
REQUEST_MODEL(A_M_M_BevHills_02)
WHILE NOT HAS_MODEL_LOADED(A_M_M_BevHills_02)
WAIT(0)
ENDWHILE
SPAWN_PED(pedIntro, A_M_M_BevHills_02, <<-39.8746, -1100.5786, 25.4343>>, 139.6499)
SET_PED_COMPONENT_VARIATION(pedIntro, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedIntro, PED_COMP_TORSO, 0, 0)
SET_PED_COMPONENT_VARIATION(pedIntro, PED_COMP_LEG, 0, 0)
SET_PED_RELATIONSHIP_GROUP_HASH(pedIntro, relGroupBuddy)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedIntro, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_BevHills_02)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 7, pedIntro, "MrKenneth")
IF DOES_ENTITY_EXIST(vehIntro)
AND NOT IS_ENTITY_DEAD(vehIntro)
VECTOR scenePosition
VECTOR sceneRotation
scenePosition = VECTOR_ZERO
sceneRotation = VECTOR_ZERO
sceneLeadOutMCS1 = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneLeadOutMCS1, vehIntro, GET_ENTITY_BONE_INDEX_BY_NAME(vehIntro, "seat_dside_f"))
TASK_SYNCHRONIZED_SCENE(pedIntro, sceneLeadOutMCS1, sAnimDictArm3LeadInOut, "_leadout_action_customer", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneLeadOutMCS1, TRUE)
ENDIF
// TASK_PLAY_ANIM_ADVANCED(pedIntro, sAnimDictArm3LeadInOut, "_leadout_action_customer", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_HOLD_LAST_FRAME)
// IF DOES_ENTITY_EXIST(vehIntro)
// AND NOT IS_ENTITY_DEAD(vehIntro)
// SET_ENTITY_NO_COLLISION_ENTITY(pedIntro, vehIntro, TRUE)
// ENDIF
// IF DOES_ENTITY_EXIST(vehIntro)
// AND NOT IS_ENTITY_DEAD(vehIntro)
// SET_PED_INTO_VEHICLE(pedIntro, vehIntro)
// TASK_PLAY_ANIM(pedIntro, sAnimDictArm3LeadInOut, "_leadout_loop_customer", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY | AF_LOOPING)
// ENDIF
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedIntro)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(PREMIER)
SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
SET_MODEL_AS_NO_LONGER_NEEDED(TAILGATER)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
ADVANCE_STAGE()
ENDIF
BREAK
ENDSWITCH
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_BEHIND)
ENDIF
IF CLEANUP_STAGE()
REPLAY_STOP_EVENT()
//Cleanup (Blips, peds, variables etc.)
SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<-801.065796, 187.031311, 71.605469>>, <<-797.865540, 178.343643, 74.834709>>, 9.0)
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) #IF IS_DEBUG_BUILD PRINTLN("eMissionObjective = ", ENUM_TO_INT(eMissionObjective)) #ENDIF
ENDIF
ENDPROC
PROC GoToMansion()
IF INIT_STAGE()
//Set player
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
//Radar
bRadar = TRUE
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
// PRINT_ADV("ARM3_GO")
//Blips
// SAFE_ADD_BLIP_LOCATION(blipDestination, <<-853.2845, 178.8083, 68.6371>>, TRUE)
//Drive to Vehicle
// IF vehDriveTo = NULL
//// WHILE NOT CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)
//// WAIT(0)
//// ENDWHILE
// ELSE
// IF DOES_ENTITY_EXIST(vehDriveTo)
// IF NOT IS_ENTITY_DEAD(vehDriveTo)
// VECTOR vTemp1, vTemp2
// GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(vehDriveTo), vTemp1, vTemp2)
// #IF IS_DEBUG_BUILD
// PRINTLN("vMin = <<", vTemp1.X, ", ", vTemp1.Y, ", ", vTemp1.Z, ">>")
// PRINTLN("vMax = <<", vTemp2.X, ", ", vTemp2.Y, ", ", vTemp2.Z, ">>")
// PRINTLN("Total Size (vMax - vMin) = <<", vTemp2.X - vTemp1.X, ", ", vTemp2.Y - vTemp1.Y, ", ", vTemp2.Z - vTemp1.Z, ">>")
// #ENDIF
// IF vTemp2.X - vTemp1.X < 1.0
// SET_VEHICLE_POSITION(vehDriveTo, vDriveTo, fDriveTo)
// ELIF vTemp2.X - vTemp1.X < 2.5
// SET_VEHICLE_POSITION(vehDriveTo, <<-17.5816, -1080.1884, 25.6721>>, 126.9052) //<<-27.5891, -1082.9415, 25.6017>>, 69.2213
// ELIF vTemp2.X - vTemp1.X < 4.0
// SET_VEHICLE_POSITION(vehDriveTo, <<-17.5528, -1080.9896, 25.6721>>, 126.7335) //<<-25.6398, -1082.7731, 25.5949>>, 70.0363
//// ELSE
//// SET_VEHICLE_AS_NO_LONGER_NEEDED(vehDriveTo)
////
//// vehDriveTo = NULL
////
//// CLEAR_AREA(vDriveTo, 20.0, TRUE)
////
//// WHILE NOT CREATE_PLAYER_VEHICLE(vehDriveTo, CHAR_FRANKLIN, vDriveTo, fDriveTo, TRUE, VEHICLE_TYPE_CAR)
//// WAIT(0)
//// ENDWHILE
//// SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
// ENDIF
// ENDIF
// ENDIF
// ENDIF
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
//Radar
bRadar = TRUE
IF SKIPPED_STAGE()
//Set Positions
SET_PED_POSITION(PLAYER_PED_ID(), <<-50.0827, -1114.9438, 25.4358>>, 88.4128)
IF NOT DOES_ENTITY_EXIST(vehIntro)
REQUEST_MODEL(PREMIER)
ENDIF
IF NOT DOES_ENTITY_EXIST(pedOwner)
REQUEST_MODEL(GET_NPC_PED_MODEL(CHAR_SIMEON))
ENDIF
IF NOT DOES_ENTITY_EXIST(pedIntro)
REQUEST_MODEL(A_M_M_BevHills_02)
ENDIF
WHILE (NOT DOES_ENTITY_EXIST(vehIntro) AND NOT HAS_MODEL_LOADED(PREMIER))
OR (NOT DOES_ENTITY_EXIST(pedOwner) AND NOT HAS_MODEL_LOADED(GET_NPC_PED_MODEL(CHAR_SIMEON)))
OR (NOT DOES_ENTITY_EXIST(pedIntro) AND NOT HAS_MODEL_LOADED(A_M_M_BevHills_02))
WAIT(0)
ENDWHILE
IF NOT DOES_ENTITY_EXIST(vehIntro)
REQUEST_MODEL(PREMIER)
WHILE NOT HAS_MODEL_LOADED(PREMIER)
WAIT(0)
ENDWHILE
SPAWN_VEHICLE(vehIntro, PREMIER, vIntroCutscenePos, fIntroCutsceneRot) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehIntro, "vehIntro") #ENDIF
SET_VEHICLE_COLOURS(vehIntro, 43, 43)
SET_VEHICLE_EXTRA(vehIntro, 10, TRUE)
SET_VEHICLE_EXTRA(vehIntro, 11, TRUE)
SET_VEHICLE_EXTRA(vehIntro, 12, TRUE)
SET_VEHICLE_EXTRA_COLOURS(vehIntro, 43, 134)
SET_VEHICLE_DOORS_LOCKED(vehIntro, VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehIntro, FALSE)
SET_MODEL_AS_NO_LONGER_NEEDED(PREMIER)
PLAY_ENTITY_ANIM(vehIntro, "_leadout_action_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_IN, FALSE, TRUE, FALSE, 0.0, ENUM_TO_INT(AF_USE_KINEMATIC_PHYSICS))
ENDIF
IF NOT DOES_ENTITY_EXIST(pedOwner)
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedOwner, CHAR_SIMEON, <<-42.4751, -1110.9316, 25.4343>>, 312.8127)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupBuddy)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedOwner, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_SIMEON))
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedOwner, "SIMEON")
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3LeadInOut, "_leadout_action_simeon", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3LeadInOut, "_leadout_loop_simeon", vIntroCutscenePos, vIntroCutsceneRot, SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedOwner, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
// TASK_PLAY_ANIM_ADVANCED(pedOwner, sAnimDictArm3LeadInOut, "_leadout_loop_simeon", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED)
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedOwner)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_SIMEON))
ENDIF
IF NOT DOES_ENTITY_EXIST(pedIntro)
SPAWN_PED(pedIntro, A_M_M_BevHills_02, <<-39.8746, -1100.5786, 25.4343>>, 139.6499)
SET_PED_COMPONENT_VARIATION(pedIntro, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedIntro, PED_COMP_TORSO, 0, 0)
SET_PED_COMPONENT_VARIATION(pedIntro, PED_COMP_LEG, 0, 0)
SET_PED_RELATIONSHIP_GROUP_HASH(pedIntro, relGroupBuddy)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedIntro, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_BevHills_02)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 7, pedIntro, "MrKenneth")
IF DOES_ENTITY_EXIST(vehIntro)
AND NOT IS_ENTITY_DEAD(vehIntro)
VECTOR scenePosition
VECTOR sceneRotation
scenePosition = VECTOR_ZERO
sceneRotation = VECTOR_ZERO
sceneLeadOutMCS1 = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneLeadOutMCS1, vehIntro, GET_ENTITY_BONE_INDEX_BY_NAME(vehIntro, "seat_dside_f"))
TASK_SYNCHRONIZED_SCENE(pedIntro, sceneLeadOutMCS1, sAnimDictArm3LeadInOut, "_leadout_action_customer", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT )
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneLeadOutMCS1, TRUE)
ENDIF
// TASK_PLAY_ANIM_ADVANCED(pedIntro, sAnimDictArm3LeadInOut, "_leadout_action_customer", vIntroCutscenePos, vIntroCutsceneRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION | AF_HOLD_LAST_FRAME)
// IF DOES_ENTITY_EXIST(vehIntro)
// AND NOT IS_ENTITY_DEAD(vehIntro)
// SET_ENTITY_NO_COLLISION_ENTITY(pedIntro, vehIntro, TRUE)
// ENDIF
// IF DOES_ENTITY_EXIST(vehIntro)
// AND NOT IS_ENTITY_DEAD(vehIntro)
// SET_PED_INTO_VEHICLE(pedIntro, vehIntro)
// TASK_PLAY_ANIM(pedIntro, sAnimDictArm3LeadInOut, "_leadout_loop_customer", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY | AF_LOOPING)
// ENDIF
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedIntro)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_BevHills_02)
ENDIF
//On a mission replay
SET_CLOCK_TIME(10, 0, 0)
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10.0)
WAIT_WITH_DEATH_CHECKS(10)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
// IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-54.782204, -1111.912720, 34.447197>>, <<40.0, 40.0, 10.0>>)
// PRINT_HELP_ADV("ARM3HLP_CARVIEW")
// ENDIF
// ENDIF
IF DOES_ENTITY_EXIST(pedOwner)
AND DOES_ENTITY_EXIST(pedIntro)
AND DOES_ENTITY_EXIST(vehIntro)
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(pedOwner, FALSE), <<200.0, 200.0, 10.0>>)
IF NOT IS_ENTITY_DEAD(vehIntro)
PRINTLN("[MF] - Removing animation from intro ped vehicle....")
SET_VEHICLE_DOORS_LOCKED(vehIntro, VEHICLELOCK_UNLOCKED)
STOP_ENTITY_ANIM(vehIntro, "_leadout_loop_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_OUT)
SET_VEHICLE_DOORS_SHUT(vehIntro, TRUE)
ENDIF
FREEZE_ENTITY_POSITION(vehIntro, FALSE)
SAFE_DELETE_PED(pedOwner) //SET_PED_AS_NO_LONGER_NEEDED(pedOwner)
SAFE_DELETE_PED(pedIntro) //SET_PED_AS_NO_LONGER_NEEDED(pedIntro)
SAFE_DELETE_VEHICLE(vehIntro) //SET_VEHICLE_AS_NO_LONGER_NEEDED(vehIntro)
ELSE
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(pedOwner, FALSE), <<15.0, 15.0, 5.0>>)
AND NOT IS_PROJECTILE_IN_AREA(GET_ENTITY_COORDS(pedOwner, FALSE) - <<7.5, 7.5, 5.0>>, GET_ENTITY_COORDS(pedOwner, FALSE) + <<7.5, 7.5, 5.0>>, TRUE)
enumSubtitlesState eSubtitles
IF NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0
eSubtitles = DISPLAY_SUBTITLES
ELSE
eSubtitles = DO_NOT_DISPLAY_SUBTITLES
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_INT_LO")
CREATE_CONVERSATION_ADV("ARM3_INT_LO", CONV_PRIORITY_MEDIUM, TRUE, eSubtitles)
ELSE
IF NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0
IF GET_GAME_TIMER() > iDialogueTimer
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC1_1")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC1", "ARM3_LOC1_1")
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC1_2")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC1", "ARM3_LOC1_2")
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC1_3")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC1", "ARM3_LOC1_3")
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_HANG_01")
CREATE_CONVERSATION_ADV("ARM3_HANG", CONV_PRIORITY_MEDIUM, FALSE)
TASK_LOOK_AT_ENTITY(pedOwner, PLAYER_PED(CHAR_FRANKLIN), 2000)
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
SET_LABEL_AS_TRIGGERED("ARM3_HANG_01", TRUE)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC2_1")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC2", "ARM3_LOC2_1")
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC2_2")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC2", "ARM3_LOC2_2")
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC2_3")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC2", "ARM3_LOC2_3")
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_HANG_02")
CREATE_CONVERSATION_ADV("ARM3_HANG", CONV_PRIORITY_MEDIUM, FALSE)
TASK_LOOK_AT_ENTITY(pedOwner, PLAYER_PED(CHAR_FRANKLIN), 2000)
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
SET_LABEL_AS_TRIGGERED("ARM3_HANG_02", TRUE)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC3_1")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC3", "ARM3_LOC3_1")
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC3_2")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC3", "ARM3_LOC3_2")
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_HANG_03")
CREATE_CONVERSATION_ADV("ARM3_HANG", CONV_PRIORITY_MEDIUM, FALSE)
TASK_LOOK_AT_ENTITY(pedOwner, PLAYER_PED(CHAR_FRANKLIN), 2000)
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
SET_LABEL_AS_TRIGGERED("ARM3_HANG_03", TRUE)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC4_1")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC4", "ARM3_LOC4_1")
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOC4_2")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_LOC4", "ARM3_LOC4_2")
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
ELSE
IF iDialogueLineCount[iDialogueStage] = -1
iDialogueLineCount[iDialogueStage] = 4
ELIF iDialogueLineCount[iDialogueStage] > 0
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 8000)
iDialogueLineCount[iDialogueStage]--
IF iDialogueStage = 0
CREATE_CONVERSATION_ADV("ARM3_LOCS", CONV_PRIORITY_MEDIUM, FALSE)
iDialogueStage++
ELIF iDialogueStage = 1
CREATE_CONVERSATION_ADV("ARM3_LOCM", CONV_PRIORITY_MEDIUM, FALSE)
iDialogueStage = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(vehIntro)
IF GET_VEHICLE_DOOR_ANGLE_RATIO(vehIntro, SC_DOOR_FRONT_LEFT) < 0.6 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehIntro, SC_DOOR_FRONT_LEFT) > 0.7
SET_VEHICLE_DOOR_CONTROL(vehIntro, SC_DOOR_FRONT_LEFT, DT_DOOR_INTACT, 0.64)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("AchievedDoorAngle")
IF GET_VEHICLE_DOOR_ANGLE_RATIO(vehIntro, SC_DOOR_FRONT_LEFT) > 0.6 AND GET_VEHICLE_DOOR_ANGLE_RATIO(vehIntro, SC_DOOR_FRONT_LEFT) < 0.7
SET_LABEL_AS_TRIGGERED("AchievedDoorAngle", TRUE)
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedIntro)
// IF IS_ENTITY_PLAYING_ANIM(pedIntro, sAnimDictArm3LeadInOut, "_leadout_action_customer")
// AND GET_ENTITY_ANIM_CURRENT_TIME(pedIntro, sAnimDictArm3LeadInOut, "_leadout_action_customer") >= 1.0
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeadOutMCS1)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneLeadOutMCS1) >= 1.0
CLEAR_PED_TASKS(pedIntro)
IF DOES_ENTITY_EXIST(vehIntro)
AND NOT IS_ENTITY_DEAD(vehIntro)
SET_PED_INTO_VEHICLE(pedIntro, vehIntro)
ENDIF
TASK_PLAY_ANIM(pedIntro, sAnimDictArm3LeadInOut, "_leadout_loop_customer", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_SECONDARY | AF_LOOPING)
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedIntro)
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(vehIntro)
IF IS_ENTITY_PLAYING_ANIM(vehIntro, sAnimDictArm3LeadInOut, "_leadout_action_simeon_car")
IF NOT IS_PED_INJURED(pedOwner)
IF IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictArm3LeadInOut, "_leadout_action_simeon")
SET_ENTITY_ANIM_CURRENT_TIME(vehIntro, sAnimDictArm3LeadInOut, "_leadout_action_simeon_car", GET_ENTITY_ANIM_CURRENT_TIME(pedOwner, sAnimDictArm3LeadInOut, "_leadout_action_simeon"))
ENDIF
ENDIF
IF GET_ENTITY_ANIM_CURRENT_TIME(vehIntro, sAnimDictArm3LeadInOut, "_leadout_action_simeon_car") >= 1.0
PLAY_ENTITY_ANIM(vehIntro, "_leadout_loop_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_IN, TRUE, FALSE, FALSE, 0.0, ENUM_TO_INT(AF_USE_KINEMATIC_PHYSICS))
ENDIF
ENDIF
ENDIF
VEHICLE_INDEX vehLast = GET_PLAYERS_LAST_VEHICLE()
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
OR (DOES_ENTITY_EXIST(vehLast)
AND NOT IS_ENTITY_DEAD(vehLast)
AND IS_ENTITY_AT_COORD(vehLast, vIntroCutscenePos, <<10.0, 10.0, 10.0>>)
AND GET_ENTITY_SPEED(vehLast) > 1.0)
OR IS_PROJECTILE_IN_AREA(GET_ENTITY_COORDS(vehIntro, FALSE) - <<3.0, 3.0, 3.0>>, GET_ENTITY_COORDS(vehIntro, FALSE) - <<3.0, 3.0, 3.0>>)
FREEZE_ENTITY_POSITION(vehIntro, FALSE)
SET_LABEL_AS_TRIGGERED("AchievedDoorAngle", FALSE)
ELSE
IF HAS_LABEL_BEEN_TRIGGERED("AchievedDoorAngle")
FREEZE_ENTITY_POSITION(vehIntro, TRUE)
ENDIF
ENDIF
IF IS_BULLET_IN_ANGLED_AREA(<<-49.792606, -1109.161133, 24.935764>>, <<-31.390413, -1115.629639, 32.422321>>, 16.0)
OR IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE, <<-49.792606, -1109.161133, 24.935764>>, <<-31.390413, -1115.629639, 32.422321>>, 16.0)
OR GET_NUMBER_OF_FIRES_IN_RANGE(GET_ENTITY_COORDS(vehIntro, FALSE), 10.0) > 0
OR ((NOT IS_ENTITY_DEAD(vehIntro)
AND HAS_COLLISION_LOADED_AROUND_ENTITY(vehIntro))
AND (NOT IS_ENTITY_AT_COORD(vehIntro, vIntroCutscenePos, <<0.25, 0.25, 1.0>>)
OR (IS_PED_ON_VEHICLE(PLAYER_PED_ID())
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehIntro, <<0.0, 2.15, -2.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehIntro, <<0.0, -2.07, 5.0>>), 2.0))))
OR (NOT IS_ENTITY_DEAD(vehIntro)
AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehIntro, PLAYER_PED_ID()))
OR (NOT IS_PED_INJURED(pedOwner)
AND (NOT IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictArm3LeadInOut, "_leadout_action_simeon")
AND NOT IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictArm3LeadInOut, "_leadout_loop_simeon"))
OR IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedOwner)
OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedOwner))
OR (NOT IS_PED_INJURED(pedIntro)
AND (NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeadOutMCS1) //NOT IS_ENTITY_PLAYING_ANIM(pedIntro, sAnimDictArm3LeadInOut, "_leadout_action_customer")
AND NOT (IS_ENTITY_PLAYING_ANIM(pedIntro, sAnimDictArm3LeadInOut, "_leadout_loop_customer")
OR IS_PED_IN_VEHICLE(pedIntro, vehIntro)))
OR IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedIntro)
OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedIntro))
OR IS_PED_RAGDOLL(pedOwner)
OR (IS_PED_INJURED(pedOwner) OR IS_PED_INJURED(pedIntro) OR IS_ENTITY_DEAD(vehIntro))
OR (NOT IS_ENTITY_DEAD(vehIntro)
AND (HAS_LABEL_BEEN_TRIGGERED("AchievedDoorAngle")
AND (GET_VEHICLE_DOOR_ANGLE_RATIO(vehIntro, SC_DOOR_FRONT_LEFT) < 0.6 OR GET_VEHICLE_DOOR_ANGLE_RATIO(vehIntro, SC_DOOR_FRONT_LEFT) > 0.7)))
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeadOutMCS1)
OR GET_SYNCHRONIZED_SCENE_PHASE(sceneLeadOutMCS1) < 0.568
IF NOT IS_PED_INJURED(pedOwner)
CLEAR_PED_TASKS(pedOwner)
TASK_TURN_PED_TO_FACE_ENTITY(pedOwner, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedOwner, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedOwner, "SIMEON")
CREATE_CONVERSATION_ADV("ARM3_DISRUPT")
ENDIF
IF NOT IS_PED_INJURED(pedIntro)
CLEAR_PED_TASKS(pedIntro)
CLEAR_PED_SECONDARY_TASK(pedIntro)
// IF DOES_ENTITY_EXIST(vehIntro)
// AND NOT IS_ENTITY_DEAD(vehIntro)
// SET_PED_INTO_VEHICLE(pedIntro, vehIntro)
// ENDIF
OPEN_SEQUENCE_TASK(seqMain)
IF IS_PED_IN_ANY_VEHICLE(pedIntro)
TASK_LEAVE_ANY_VEHICLE(NULL)
ENDIF
TASK_TURN_PED_TO_FACE_ENTITY(NULL, PLAYER_PED_ID())
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedIntro, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
SET_PED_KEEP_TASK(pedIntro, TRUE)
ENDIF
IF NOT IS_ENTITY_DEAD(vehIntro)
IF IS_ENTITY_PLAYING_ANIM(vehIntro, sAnimDictArm3LeadInOut, "_leadout_action_simeon_car")
STOP_ENTITY_ANIM(vehIntro, "_leadout_action_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_OUT)
ENDIF
IF IS_ENTITY_PLAYING_ANIM(vehIntro, sAnimDictArm3LeadInOut, "_leadout_loop_simeon_car")
STOP_ENTITY_ANIM(vehIntro, "_leadout_loop_simeon_car", sAnimDictArm3LeadInOut, INSTANT_BLEND_OUT)
ENDIF
ENDIF
ENDIF
eMissionFail = failSimeonDisrupted
missionFailed()
ENDIF
ENDIF
ENDIF
// IF IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(), 0)
// SAFE_REMOVE_BLIP(blipDestination)
//
// PRINT_ADV("LOSE_WANTED")
// ELSE
// IF NOT DOES_BLIP_EXIST(blipDestination)
// IF NOT DOES_BLIP_EXIST(blipDestination)
// SAFE_ADD_BLIP_LOCATION(blipDestination, <<-851.6385, 178.6945, 68.6414>>, TRUE)
// ENDIF
//
// SET_LABEL_AS_TRIGGERED("LOSE_WANTED", FALSE)
// ENDIF
// IF NOT IS_PED_IN_FLYING_VEHICLE(PLAYER_PED_ID())
// IF ((IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-848.303101, 172.890610, 78.180351 + 20.0>>, <<-766.600525, 169.531998, 59.253189>>, 50.0, FALSE, TRUE)
// OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-848.897766, 184.735779, 74.680779>>, <<-850.007751, 172.118652, 66.604118>>, 15.0))
// AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-760.663513, 190.646255, 68.497238>>, <<-775.100037, 201.882339, 84.696632>>, 10.0))
// OR NOT SAFE_IS_PLAYER_CONTROL_ON()
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
// IF SAFE_IS_PLAYER_CONTROL_ON()
// SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
//
// SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
// ENDIF
//
// IF IS_VEHICLE_STOPPED(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()))
// IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_LEAVE_ANY_VEHICLE) <> PERFORMING_TASK
// TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID())
// ENDIF
// ENDIF
// ENDIF
// ENDIF
// ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_ARV")
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
START_AUDIO_SCENE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
ENDIF
ENDIF
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vMansion) < 1000.0
AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vMansion) > 100.0
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, NULL, "SIMEON")
PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_SIMEON, "ARM3AUD", "ARM3_ARV", CONV_PRIORITY_HIGH, TRUE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN, TRUE)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
STOP_AUDIO_SCENE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
ENDIF
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_PHONE_SIMEON")
START_AUDIO_SCENE("ARM_3_DRIVE_PHONE_SIMEON")
ENDIF
SET_LABEL_AS_TRIGGERED("ARM3_ARV", TRUE)
ENDIF
ELSE
//Has the phone been hung up before it could be answered?
IF CHECK_CELLPHONE_LAST_CALL_REJECTED()
OR WAS_LAST_CELLPHONE_CALL_INTERRUPTED()
IF NOT HAS_LABEL_BEEN_TRIGGERED("RejectedCall")
SETTIMERB(0)
SET_LABEL_AS_TRIGGERED("RejectedCall", TRUE)
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("RejectedCall")
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_CALLTXT")
AND TIMERB() > 2000
SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER(CHAR_SIMEON, "ARM3_CALLTXT", TXTMSG_UNLOCKED, TXTMSG_CRITICAL)
SET_LABEL_AS_TRIGGERED("ARM3_CALLTXT", TRUE)
ENDIF
ENDIF
ENDIF
//Spawn Climb Car
IF NOT DOES_ENTITY_EXIST(vehClimb)
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), vMansion) < 150.0
IF HAS_MODEL_LOADED_CHECK(BISON3)
SPAWN_VEHICLE(vehClimb, BISON3, <<-800.1796, 164.9729, 70.5296>>, 111.0221, 132)
SET_VEHICLE_DOORS_LOCKED(vehClimb, VEHICLELOCK_LOCKED)
SET_VEHICLE_ALARM(vehClimb, TRUE)
ENDIF
ENDIF
ENDIF
BOOL bPlayerHasArrivedMansion
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-809.689331, 167.738159, 80.499176>>, <<55.0, 35.0, 25.0>>)
bPlayerHasArrivedMansion = IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-847.812927, 182.998001, 66.362663>>, <<-811.278198, 180.250854, 81.592949>>, 30.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-843.973389, 159.883316, 65.309196>>, <<-809.686829, 159.163422, 76.786880>>, 22.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-818.617554,161.953323,59.905128>>, <<-765.113220,168.867889,104.219299>>, 40.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-772.186829,136.951172,65.974167>>, <<-772.276367,151.575790,101.474510>>, 20.5)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-823.994324,190.366592,71.401894>>, <<-773.834778,189.717102,107.483505>>, 10.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-776.787048,185.335403,71.335213>>, <<-770.144592,190.454834,107.858650>>, 10.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-850.643372,145.596069,58.643929>>, <<-783.199402,146.322983,97.667755>>, 10.0)
ENDIF
#IF IS_DEBUG_BUILD DONT_DO_J_SKIP(sLocatesData) #ENDIF
IF IS_PLAYER_AT_LOCATION_ANY_MEANS(sLocatesData, <<-853.2845, 178.8083, 68.6371>>, <<LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_ANY_MEANS, LOCATE_SIZE_HEIGHT>>, TRUE, "ARM3_GO", TRUE, TRUE)
OR bPlayerHasArrivedMansion
// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-741.353210, 175.701065, 44.151825>>, <<-871.869812, 171.457581, 116.676941>>, 100.0) //<<-864.316040, 170.810455, 56.566391>>, <<-757.057434, 167.819778, 77.386490 + 20.0>>, 55.0, FALSE, TRUE)
// OR NOT SAFE_IS_PLAYER_CONTROL_ON()
// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
// OR (IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
// AND IS_PED_IN_FLYING_VEHICLE(PLAYER_PED_ID()))
ADVANCE_STAGE()
// ENDIF
ENDIF
// ENDIF
IF intGarage <> NULL
IF GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = intGarage
IF vehGarage[0] = NULL
OR NOT DOES_ENTITY_EXIST(vehGarage[0])
vehGarage[0] = GET_CLOSEST_VEHICLE(<<-36.5853, -1101.4738, 26.3444>>, 5.0, BJXL, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
ELIF DOES_ENTITY_EXIST(vehGarage[0])
AND NOT IS_ENTITY_DEAD(vehGarage[0])
SET_VEHICLE_DOORS_LOCKED(vehGarage[0], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[0], FALSE)
ENDIF
IF vehGarage[1] = NULL
OR NOT DOES_ENTITY_EXIST(vehGarage[1])
vehGarage[1] = GET_CLOSEST_VEHICLE(<<-41.4259, -1099.6481, 26.0534>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
ELIF DOES_ENTITY_EXIST(vehGarage[1])
AND NOT IS_ENTITY_DEAD(vehGarage[1])
SET_VEHICLE_DOORS_LOCKED(vehGarage[1], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[1], FALSE)
ENDIF
IF vehGarage[2] = NULL
OR NOT DOES_ENTITY_EXIST(vehGarage[2])
vehGarage[2] = GET_CLOSEST_VEHICLE(<<-46.2594, -1097.8386, 26.3444>>, 5.0, BJXL, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
ELIF DOES_ENTITY_EXIST(vehGarage[2])
AND NOT IS_ENTITY_DEAD(vehGarage[2])
SET_VEHICLE_DOORS_LOCKED(vehGarage[2], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[2], FALSE)
ENDIF
IF vehGarage[3] = NULL
OR NOT DOES_ENTITY_EXIST(vehGarage[3])
vehGarage[3] = GET_CLOSEST_VEHICLE(<<-50.0800, -1094.4625, 26.0671>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
ELIF DOES_ENTITY_EXIST(vehGarage[3])
AND NOT IS_ENTITY_DEAD(vehGarage[3])
SET_VEHICLE_DOORS_LOCKED(vehGarage[3], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[3], FALSE)
ENDIF
IF vehGarage[4] = NULL
OR NOT DOES_ENTITY_EXIST(vehGarage[4])
vehGarage[4] = GET_CLOSEST_VEHICLE(<<-37.4128, -1088.5618, 26.0671>>, 5.0, TAILGATER, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
ELIF DOES_ENTITY_EXIST(vehGarage[4])
AND NOT IS_ENTITY_DEAD(vehGarage[4])
SET_VEHICLE_DOORS_LOCKED(vehGarage[4], VEHICLELOCK_CANNOT_ENTER)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehGarage[4], FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData, TRUE)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
STOP_AUDIO_SCENE("ARM_3_DRIVE_TO_MICHAELS_HOUSE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_PHONE_SIMEON")
STOP_AUDIO_SCENE("ARM_3_DRIVE_PHONE_SIMEON")
ENDIF
SAFE_DELETE_PED(pedIntro)
SAFE_DELETE_PED(pedOwner)
// #IF IS_DEBUG_BUILD
// IF bAutoSkipping = FALSE
// #ENDIF
//
// IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
// AND NOT IS_PED_IN_FLYING_VEHICLE(PLAYER_PED_ID())
// TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID())
// ENDIF
//
// #IF IS_DEBUG_BUILD
// ENDIF
// #ENDIF
CLEAR_PRINTS()
SAFE_REMOVE_BLIP(blipCar)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 8)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
PROC ClimbUp()
IF INIT_STAGE()
//Set player
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
//Special Ability
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), FALSE)
//Checkpoint
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayClimb), "stageClimbUp", FALSE, FALSE, PLAYER_PED_ID())
//Fetch vehPlayer
IF NOT DOES_ENTITY_EXIST(vehDriveTo)
IF GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) != NULL
vehDriveTo = GET_VEHICLE_PED_IS_USING(PLAYER_PED_ID()) #IF IS_DEBUG_BUILD PRINTLN("vehDriveTo = ", GET_MODEL_NAME_OF_VEHICLE_FOR_DEBUG_ONLY(vehDriveTo)) #ENDIF
SET_VEHICLE_DOORS_SHUT(vehDriveTo, TRUE)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
ELIF GET_PLAYERS_LAST_VEHICLE() != NULL
vehDriveTo = GET_PLAYERS_LAST_VEHICLE()
IF (IS_ENTITY_DEAD(vehDriveTo)
OR NOT IS_VEHICLE_DRIVEABLE(vehDriveTo))
OR (NOT IS_ENTITY_DEAD(vehDriveTo)
AND IS_VEHICLE_DRIVEABLE(vehDriveTo)
AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehDriveTo)) > 75.0)
#IF IS_DEBUG_BUILD PRINTLN("vehDriveTo = ", GET_MODEL_NAME_OF_VEHICLE_FOR_DEBUG_ONLY(vehDriveTo), " but is too far away (", GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(vehDriveTo)), ") or destroyed (", IS_ENTITY_DEAD(vehDriveTo), ").") #ENDIF
#IF IS_DEBUG_BUILD
VECTOR vTemp = GET_ENTITY_COORDS(vehDriveTo)
PRINTLN("vehDriveTo = <<", vTemp.X, ", ", vTemp.Y, ", ", vTemp.Z, ">>")
#ENDIF
vehDriveTo = NULL
ELSE
#IF IS_DEBUG_BUILD PRINTLN("vehDriveTo = ", GET_MODEL_NAME_OF_VEHICLE_FOR_DEBUG_ONLY(vehDriveTo)) #ENDIF
//SET_VEHICLE_DOORS_SHUT(vehDriveTo, TRUE)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
OVERRIDE_REPLAY_CHECKPOINT_VEHICLE(vehDriveTo)
ENDIF
bPlayerHasEnteredMansion = FALSE
//Radar
bRadar = TRUE
DISPLAY_RADAR(TRUE)
DISPLAY_HUD(TRUE)
//Spawn Climb Car
IF NOT DOES_ENTITY_EXIST(vehClimb)
SPAWN_VEHICLE(vehClimb, BISON3, <<-800.1796, 164.9729, 70.5296>>, 111.0221, 132)
SET_VEHICLE_DOORS_LOCKED(vehClimb, VEHICLELOCK_LOCKED)
SET_VEHICLE_ALARM(vehClimb, TRUE)
ENDIF
//Cleanup Climb Car
SET_MODEL_AS_NO_LONGER_NEEDED(BISON3)
//Spawn Car
SPAWN_VEHICLE(vehCar, BJXL, vCarStart, fCarStart, 126)
SETUP_JIMMYS_CAR(vehCar)
SET_VEHICLE_EXTRA(vehCar, 5, TRUE)
SET_ENTITY_COORDS_NO_OFFSET(vehCar, vCarStart)
//objSeats = CREATE_OBJECT(PROP_HD_SEATS_01, vCarStart)
//SET_ENTITY_COLLISION(objSeats, FALSE)
//ATTACH_ENTITY_TO_ENTITY(objSeats, vehCar, 0, VECTOR_ZERO, VECTOR_ZERO)
//Cleanup Car
SET_MODEL_AS_NO_LONGER_NEEDED(BJXL)
//SET_MODEL_AS_NO_LONGER_NEEDED(PROP_HD_SEATS_01)
//Retain Car
// INTERIOR_INSTANCE_INDEX GarageInterior = GET_INTERIOR_AT_COORDS(vCarStart)
//
// IF GarageInterior <> NULL
// RETAIN_ENTITY_IN_INTERIOR(vehCar, GarageInterior)
// ELSE
// SCRIPT_ASSERT("Armenian3 - failed to find garage interior")
// ENDIF
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_CLIMB_INTO_GARDEN")
START_AUDIO_SCENE("ARM_3_CLIMB_INTO_GARDEN")
ENDIF
//Audio
WHILE NOT REQUEST_SCRIPT_AUDIO_BANK("ARM_3_03")
#IF IS_DEBUG_BUILD PRINTLN("LOADING AUDIO BANK = ARM_3_03") #ENDIF
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
//Blips
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE) //SAFE_ADD_BLIP_LOCATION(blipDestination, vClimbPoint + <<0.0, 0.0, 5.0 + 5.0>>, FALSE)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
IF SKIPPED_STAGE()
//Set Positions
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_PED_POSITION(PLAYER_PED_ID(), <<-851.8660, 178.7462, 68.6477>>, 262.7337)
//Load Scene
IF NOT bReplaySkip
LOAD_SCENE_ADV(<<-851.8660, 178.7462, 68.6477>>, 50.0)
ENDIF
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
WAIT_WITH_DEATH_CHECKS(1500)
//Audio
PLAY_AUDIO(ARM3_RESTART_1)
//Set Franklin Unarmed
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
CLEAR_AREA(<<-851.8660, 178.7462, 68.6477>>, 10.0, TRUE)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
//Objective Text
IF IS_SCREEN_FADED_IN()
IF PRINT_ADV("ARM3_FIND")
REPLAY_RECORD_BACK_FOR_TIME(3.0, 9.0, REPLAY_IMPORTANCE_HIGH)
ENDIF
ENDIF
SET_DOOR_STATE(DOORNAME_M_MANSION_G1, DOORSTATE_FORCE_LOCKED_THIS_FRAME) //Big metal garage door
//Audio
IF NOT HAS_LABEL_BEEN_TRIGGERED("AudioTrackStart")
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
AND ((IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-852.523376, 171.691620, 56.972511>>, <<-816.684448, 169.059662, 90.509804>>, 50.75)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-762.316162, 171.466705, 58.854210>>, <<-821.178406, 164.802994, 90.092186>>, 45.0))
OR bPlayerHasEnteredMansion)
PLAY_AUDIO(ARM3_START)
SET_LABEL_AS_TRIGGERED("AudioTrackStart", TRUE)
ENDIF
ENDIF
//Ragdoll Door Try Anim Blocking
IF IS_PED_RAGDOLL(PLAYER_PED_ID())
SET_LABEL_AS_TRIGGERED("RagdollBlock", TRUE)
ELIF HAS_LABEL_BEEN_TRIGGERED("RagdollBlock")
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-818.040466, 180.161285, 70.227814>>, <<-816.377197, 175.832733, 75.227814>>, 5.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-797.383240, 175.260773, 71.834908>>, <<-792.335388, 177.306122, 74.834908>>, 4.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-791.347900, 179.441803, 71.834908>>, <<-793.324829, 184.544281, 74.834908>>, 4.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-816.472473, 182.131744, 70.827103>>, <<-818.861328, 188.388443, 75.319893>>, 5.0)
SET_LABEL_AS_TRIGGERED("RagdollBlock", FALSE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("TryFrontDoor1")
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-817.4048, 178.4506, 71.2278 - 10.0>>, <<100.0, 100.0, 100.0>>)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictDoor)
AND NOT HAS_LABEL_BEEN_TRIGGERED("RagdollBlock")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-818.040466, 180.161285, 71.227814>>, <<-816.377197, 175.832733, 75.227814>>, 2.0)
OR (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-818.040466, 180.161285, 70.227814>>, <<-816.377197, 175.832733, 75.227814>>, 5.0)
AND (GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()) > 1.0 AND NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
AND (GET_ENTITY_HEADING(PLAYER_PED_ID()) > 217.7497 OR GET_ENTITY_HEADING(PLAYER_PED_ID()) < 9.0051))
AND NOT IS_PHONE_ONSCREEN()
IF IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE(FALSE)
ENDIF
SET_CURRENT_PED_WEAPON(PLAYER_PED(CHAR_FRANKLIN), WEAPONTYPE_UNARMED, TRUE)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-816.445, 178.149, 71.270>>, <<0.0, 0.0, -70.0>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-816.445, 178.149, 71.270>>, <<0.0, 0.0, -70.0>>)))
ELSE
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "lockeddoor_tryopen", <<-816.445, 178.149, 71.270>>, <<0.0, 0.0, -70.0>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictDoor, "lockeddoor_tryopen", <<-816.445, 178.149, 71.270>>, <<0.0, 0.0, -70.0>>)))
ENDIF
iAutowalkTimeout = GET_GAME_TIMER() + 10000
SET_LABEL_AS_TRIGGERED("TryFrontDoor1", TRUE)
ENDIF
ENDIF
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOCK_1")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor1)
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = PERFORMING_TASK
IF NOT IS_PED_RUNNING(PLAYER_PED_ID()) OR IS_PED_SPRINTING(PLAYER_PED_ID())
IF (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-816.445, 178.149, 71.270>>, <<0.0, 0.0, -70.0>>), <<0.2, 0.2, 3.0>>) AND GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "lockeddoor_tryopen", <<-816.445, 178.149, 71.270>>, <<0.0, 0.0, -70.0>>), <<0.2, 0.2, 3.0>>)
sceneTryDoor1 = CREATE_SYNCHRONIZED_SCENE(<<-816.445, 178.149, 71.270>>, <<0.0, 0.0, -70.0>>)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor1, sAnimDictDoor, "LockedDoor_TryOpen_Stealth", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ELSE
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor1, sAnimDictDoor, "lockeddoor_tryopen", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ENDIF
SET_SYNCHRONIZED_SCENE_LOOPED(sceneTryDoor1, FALSE)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneTryDoor1, FALSE)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.5)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor1)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
// IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
// DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
// ENDIF
ENDIF
IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor1)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneTryDoor1) >= 0.9)
OR GET_GAME_TIMER() > iAutowalkTimeout
CLEAR_PED_TASKS(PLAYER_PED_ID())
SET_LABEL_AS_TRIGGERED("ARM3_LOCK_1", TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("TryFrontDoor2")
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-795.440, 177.572, 71.825 - 10.0>>, <<100.0, 100.0, 100.0>>)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictDoor)
AND NOT HAS_LABEL_BEEN_TRIGGERED("RagdollBlock")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-796.575806, 177.106079, 71.835190>>, <<-794.429504, 177.950287, 75.335190>>, 2.0)
OR (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-797.383240, 175.260773, 71.834908>>, <<-792.335388, 177.306122, 74.834908>>, 4.0)
AND (GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()) > 1.0 AND NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
AND (GET_ENTITY_HEADING(PLAYER_PED_ID()) < 107.1689 AND GET_ENTITY_HEADING(PLAYER_PED_ID()) > 32.9229))
AND NOT IS_PHONE_ONSCREEN()
IF IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE(FALSE)
ENDIF
SET_CURRENT_PED_WEAPON(PLAYER_PED(CHAR_FRANKLIN), WEAPONTYPE_UNARMED, TRUE)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-795.440, 177.572, 71.825>>, <<0.0, 0.0, 18.802>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-795.440, 177.572, 71.825>>, <<0.0, 0.0, 18.802>>)))
ELSE
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "lockeddoor_tryopen", <<-795.440, 177.572, 71.825>>, <<0.0, 0.0, 18.802>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictDoor, "lockeddoor_tryopen", <<-795.440, 177.572, 71.825>>, <<0.0, 0.0, 18.802>>)))
ENDIF
iAutowalkTimeout = GET_GAME_TIMER() + 10000
SET_LABEL_AS_TRIGGERED("TryFrontDoor2", TRUE)
ENDIF
ENDIF
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOCK_2")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor2)
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = PERFORMING_TASK
IF NOT IS_PED_RUNNING(PLAYER_PED_ID()) OR IS_PED_SPRINTING(PLAYER_PED_ID())
IF (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-795.440, 177.572, 71.825>>, <<0.0, 0.0, 18.802>>), <<0.2, 0.2, 3.0>>) AND GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "lockeddoor_tryopen", <<-795.440, 177.572, 71.825>>, <<0.0, 0.0, 18.802>>), <<0.2, 0.2, 3.0>>)
sceneTryDoor2 = CREATE_SYNCHRONIZED_SCENE(<<-795.440, 177.572, 71.825>>, <<0.0, 0.0, 18.802>>)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor2, sAnimDictDoor, "LockedDoor_TryOpen_Stealth", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ELSE
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor2, sAnimDictDoor, "lockeddoor_tryopen", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ENDIF
SET_SYNCHRONIZED_SCENE_LOOPED(sceneTryDoor2, FALSE)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneTryDoor2, FALSE)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.5)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor2)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
// IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
// DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
// ENDIF
ENDIF
IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor2)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneTryDoor2) >= 0.9)
OR GET_GAME_TIMER() > iAutowalkTimeout
CLEAR_PED_TASKS(PLAYER_PED_ID())
SET_LABEL_AS_TRIGGERED("ARM3_LOCK_2", TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("TryFrontDoor3")
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-793.703, 181.647, 71.825 - 10.0>>, <<100.0, 100.0, 100.0>>)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictDoor)
AND NOT HAS_LABEL_BEEN_TRIGGERED("RagdollBlock")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-793.298889, 180.489944, 71.835190>>, <<-794.130127, 182.651276, 75.335190>>, 2.0)
OR (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-791.347900, 179.441803, 71.834908>>, <<-793.324829, 184.544281, 74.834908>>, 4.0)
AND (GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()) > 1.0 AND NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
AND (GET_ENTITY_HEADING(PLAYER_PED_ID()) > 34.2561 AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < 176.6008))
AND NOT IS_PHONE_ONSCREEN()
IF IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE(FALSE)
ENDIF
SET_CURRENT_PED_WEAPON(PLAYER_PED(CHAR_FRANKLIN), WEAPONTYPE_UNARMED, TRUE)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-793.703, 181.647, 71.825>>, <<0.0, 0.0, 100.0>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-793.703, 181.647, 71.825>>, <<0.0, 0.0, 100.0>>)))
ELSE
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "lockeddoor_tryopen", <<-793.703, 181.647, 71.825>>, <<0.0, 0.0, 100.0>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictDoor, "lockeddoor_tryopen", <<-793.703, 181.647, 71.825>>, <<0.0, 0.0, 100.0>>)))
ENDIF
iAutowalkTimeout = GET_GAME_TIMER() + 10000
SET_LABEL_AS_TRIGGERED("TryFrontDoor3", TRUE)
ENDIF
ENDIF
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOCK_3")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor3)
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = PERFORMING_TASK
IF NOT IS_PED_RUNNING(PLAYER_PED_ID()) OR IS_PED_SPRINTING(PLAYER_PED_ID())
IF (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "LockedDoor_TryOpen_Stealth", <<-793.703, 181.647, 71.825>>, <<0.0, 0.0, 100.0>>), <<0.2, 0.2, 3.0>>) AND GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictDoor, "lockeddoor_tryopen", <<-793.703, 181.647, 71.825>>, <<0.0, 0.0, 100.0>>), <<0.2, 0.2, 3.0>>)
sceneTryDoor3 = CREATE_SYNCHRONIZED_SCENE(<<-793.703, 181.647, 71.825>>, <<0.0, 0.0, 100.0>>)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor3, sAnimDictDoor, "LockedDoor_TryOpen_Stealth", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ELSE
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor3, sAnimDictDoor, "lockeddoor_tryopen", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ENDIF
SET_SYNCHRONIZED_SCENE_LOOPED(sceneTryDoor3, FALSE)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneTryDoor3, FALSE)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.4)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor3)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
// IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
// DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
// ENDIF
ENDIF
IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor3)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneTryDoor3) >= 0.9)
OR GET_GAME_TIMER() > iAutowalkTimeout
CLEAR_PED_TASKS(PLAYER_PED_ID())
SET_LABEL_AS_TRIGGERED("ARM3_LOCK_3", TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("TryFrontDoor4")
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-793.703, 181.647, 71.825 - 10.0>>, <<100.0, 100.0, 100.0>>)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictDoor)
AND NOT HAS_LABEL_BEEN_TRIGGERED("RagdollBlock")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-816.382141, 188.409729, 71.478989>>, <<-815.038452, 182.721573, 74.925827>>, 2.5)
OR (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-816.472473, 182.131744, 70.827103>>, <<-818.861328, 188.388443, 75.319893>>, 5.0)
AND (GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()) > 1.0 AND NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
AND (GET_ENTITY_HEADING(PLAYER_PED_ID()) > 217.7497 OR GET_ENTITY_HEADING(PLAYER_PED_ID()) < 9.0051))
AND NOT IS_PHONE_ONSCREEN()
IF IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE(FALSE)
ENDIF
SET_CURRENT_PED_WEAPON(PLAYER_PED(CHAR_FRANKLIN), WEAPONTYPE_UNARMED, TRUE)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3, "open_garage_fail_stealth", <<-815.940, 185.655, 72.4578>>, <<0.0, 0.0, -69.0>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictArm3, "open_garage_fail_stealth", <<-815.940, 185.655, 72.4578>>, <<0.0, 0.0, -69.0>>)))
ELSE
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3, "open_garage_fail", <<-815.840, 185.695, 72.465>>, <<0.0, 0.0, -69.0>>), PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictArm3, "open_garage_fail", <<-815.840, 185.695, 72.465>>, <<0.0, 0.0, -69.0>>)))
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.5)
iAutowalkTimeout = GET_GAME_TIMER() + 10000
SET_LABEL_AS_TRIGGERED("TryFrontDoor4", TRUE)
ENDIF
ENDIF
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_LOCK_4")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor4)
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = PERFORMING_TASK
IF NOT IS_PED_RUNNING(PLAYER_PED_ID()) OR IS_PED_SPRINTING(PLAYER_PED_ID())
IF (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3, "open_garage_fail_stealth", <<-815.940, 185.655, 72.4578>>, <<0.0, 0.0, -69.0>>), <<0.2, 0.2, 3.0>>) AND GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID()))
OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3, "open_garage_fail", <<-815.840, 185.695, 72.465>>, <<0.0, 0.0, -69.0>>), <<0.2, 0.2, 3.0>>)
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
sceneTryDoor4 = CREATE_SYNCHRONIZED_SCENE(<<-815.940, 185.655, 72.4578>>, <<0.0, 0.0, -69.0>>)
ELSE
sceneTryDoor4 = CREATE_SYNCHRONIZED_SCENE(<<-815.840, 185.695, 72.465>>, <<0.0, 0.0, -69.0>>)
ENDIF
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor4, sAnimDictArm3, "open_garage_fail_stealth", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ELSE
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneTryDoor4, sAnimDictArm3, "open_garage_fail", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
ENDIF
SET_SYNCHRONIZED_SCENE_LOOPED(sceneTryDoor4, FALSE)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneTryDoor4, FALSE)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 3.5)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor4)
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
// IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
// DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
// ENDIF
ENDIF
IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneTryDoor4)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneTryDoor4) >= 0.9)
OR GET_GAME_TIMER() > iAutowalkTimeout
CLEAR_PED_TASKS(PLAYER_PED_ID())
SET_LABEL_AS_TRIGGERED("ARM3_LOCK_4", TRUE)
ENDIF
ENDIF
IF HAS_ANIM_EVENT_FIRED(PLAYER_PED_ID(), HASH("Interrupt"))
CLEAR_PED_TASKS(PLAYER_PED_ID())
ENDIF
//Stealth help text
IF bPlayerHasEnteredMansion
IF DOES_BLIP_EXIST(blipGardener)
IF DOES_ENTITY_EXIST(pedGardener)
AND NOT IS_PED_INJURED(pedGardener)
IF IS_ENTITY_ON_SCREEN(pedGardener)
AND NOT IS_ENTITY_OCCLUDED(pedGardener)
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("ARM3_FIND")
PRINT_ADV("ARM3_GARDEN")
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_SNEAK") //Sneaking help
PRINT_HELP_ADV("ARM3HLP_SNEAK")
g_iArmenian3HelpText = 1
//SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(), TRUE)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_SNEAK2") //Player blip colouring help
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP_ADV("ARM3HLP_SNEAK2")
g_iArmenian3HelpText = 2
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("AH_H_TAKEDOWN") //Stealth takedown help
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(pedGardener, FALSE), <<4.0, 4.0, 2.0>>)
AND IS_SCREEN_FADED_IN()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-829.605652, 194.842453, 62.430786>>, <<-832.317444, 151.827423, 87.163620>>, 30.0)
PRINT_HELP_FOREVER("AH_H_TAKEDOWN")
iHelpTimer = GET_GAME_TIMER() + DEFAULT_HELP_TEXT_TIME
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_STEALTH_TAKEDOWN)
//Trigger global to indicate the help has been displayed
SET_LABEL_AS_TRIGGERED("AH_H_TAKEDOWN", TRUE)
ENDIF
ENDIF
// ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_STEALTH1") //Player blip colouring help
// IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
// OR WAS_PED_KILLED_BY_STEALTH(pedGardener)
// OR WAS_PED_KILLED_BY_TAKEDOWN(pedGardener)
// OR WAS_PED_KNOCKED_OUT(pedGardener)
// PRINT_HELP_ADV("ARM3HLP_STEALTH1")
// g_iArmenian3HelpText = 3
// ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_STAT") //Stealth stat help
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(pedGardener, FALSE), <<8.0, 8.0, 4.0>>)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("AH_H_TAKEDOWN")
IF GET_GAME_TIMER() > iHelpTimer
SAFE_CLEAR_HELP()
ENDIF
ENDIF
ENDIF
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
OR WAS_PED_KILLED_BY_STEALTH(pedGardener)
OR WAS_PED_KILLED_BY_TAKEDOWN(pedGardener)
OR WAS_PED_KNOCKED_OUT(pedGardener)
OR IS_PED_INJURED(pedGardener)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("AH_H_TAKEDOWN")
SAFE_CLEAR_HELP()
ELSE
PRINT_HELP_ADV("ARM3HLP_STAT")
REPLAY_RECORD_BACK_FOR_TIME(2.5, 4.0, REPLAY_IMPORTANCE_HIGH)
g_iArmenian3HelpText = 3
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM3HLP_SNEAK")
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
SAFE_CLEAR_HELP()
ENDIF
ENDIF
bPlayerHasEnteredMansion = IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-847.812927, 182.998001, 66.362663>>, <<-811.278198, 180.250854, 81.592949>>, 30.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-843.973389, 159.883316, 65.309196>>, <<-809.686829, 159.163422, 76.786880>>, 22.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-818.617554,161.953323,59.905128>>, <<-765.113220,168.867889,104.219299>>, 40.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-772.186829,136.951172,65.974167>>, <<-772.276367,151.575790,101.474510>>, 20.5)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-823.994324,190.366592,71.401894>>, <<-773.834778,189.717102,107.483505>>, 10.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-776.787048,185.335403,71.335213>>, <<-770.144592,190.454834,107.858650>>, 10.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-850.643372,145.596069,58.643929>>, <<-783.199402,146.322983,97.667755>>, 10.0)
IF NOT HAS_LABEL_BEEN_TRIGGERED("GardenerTakedown")
IF bPlayerHasEnteredMansion
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_CLIMB_INTO_GARDEN")
STOP_AUDIO_SCENE("ARM_3_CLIMB_INTO_GARDEN")
ENDIF
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_TAKE_OUT_GARDENER")
START_AUDIO_SCENE("ARM_3_TAKE_OUT_GARDENER")
ENDIF
ELSE
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TAKE_OUT_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TAKE_OUT_GARDENER")
ENDIF
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_CLIMB_INTO_GARDEN")
START_AUDIO_SCENE("ARM_3_CLIMB_INTO_GARDEN")
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedGardener)
AND NOT IS_PED_INJURED(pedGardener)
AND IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedGardener)
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_TARGET_GARDENER")
START_AUDIO_SCENE("ARM_3_TARGET_GARDENER")
ENDIF
ELSE
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TARGET_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TARGET_GARDENER")
ENDIF
ENDIF
ELSE
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_CLIMB_INTO_GARDEN")
STOP_AUDIO_SCENE("ARM_3_CLIMB_INTO_GARDEN")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TAKE_OUT_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TAKE_OUT_GARDENER")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TARGET_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TARGET_GARDENER")
ENDIF
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_ENTER_HOUSE")
START_AUDIO_SCENE("ARM_3_ENTER_HOUSE")
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-800.966431, 162.509369, 69.059227>>, <<-785.860901, 168.498703, 80.872543>>, 17.0)
PRINT_HELP_ADV("ARM3HLP_CLIMB", TRUE, DEFAULT_HELP_TEXT_TIME + 2000)
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-801.685486, 164.185196, 70.537521>>, <<-792.507080, 167.969635, 77.397369>>, 7.0)
OR (IS_PED_ON_VEHICLE(PLAYER_PED_ID())
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehClimb, <<0.0, 2.15, -2.0>>), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehClimb, <<0.0, -2.07, 5.0>>), 2.0))
TASK_LOOK_AT_COORD(PLAYER_PED_ID(), <<-802.1, 167.1, 76.5>>, 8000, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_HIGH)
INCREASE_PLAYER_JUMP_SUPPRESSION_RANGE(PLAYER_ID())
ENDIF
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_EAVDROP_1")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-799.534729, 160.426956, 73.342880>>, <<-804.091125, 172.133453, 79.740311>>, 10.0)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, NULL, "TRACEY")
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, NULL, "JIMMY")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_EAVDROP", "ARM3_EAVDROP_1")
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_EAVDROP_2")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-799.534729, 160.426956, 73.342880>>, <<-804.091125, 172.133453, 79.740311>>, 10.0)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, NULL, "TRACEY")
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, NULL, "JIMMY")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_EAVDROP", "ARM3_EAVDROP_2")
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_EAVDROP_3")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-799.534729, 160.426956, 73.342880>>, <<-804.091125, 172.133453, 79.740311>>, 10.0)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, NULL, "TRACEY")
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, NULL, "JIMMY")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_EAVDROP", "ARM3_EAVDROP_3")
ENDIF
ENDIF
ENDIF
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM3HLP_CLIMB")
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-804.265625, 163.107071, 76.963020>>, <<5.0, 5.0, 2.0>>)
SAFE_CLEAR_HELP()
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-801.263367, 164.741470, 74.864861>>, <<-802.518921, 168.107956, 79.740738>>, 4.0)
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(), PEDMOVE_WALK)
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_DisablePlayerAutoVaulting, TRUE)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
ENDIF
IF IS_PLAYER_CONTROL_ON(PLAYER_ID())
IF HAS_LABEL_BEEN_TRIGGERED("ClimbInTrigger")
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = WAITING_TO_START_TASK
OR GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = PERFORMING_TASK
OR GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = DORMANT_TASK
CLEAR_PED_TASKS(PLAYER_PED_ID())
SET_LABEL_AS_TRIGGERED("ClimbInTrigger", FALSE)
ENDIF
ENDIF
IF (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-801.670105, 166.004623, 74.841263>>, <<-802.518921, 168.107956, 79.740738>>, 2.0)
AND NOT IS_PHONE_ONSCREEN()
AND NOT IS_CELLPHONE_DISABLED()
AND NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
AND NOT IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID()))
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.039734, 169.529953, 75.740639>>, <<-802.293152, 167.590179, 79.057426>>, 1.5)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
CLEAR_PED_TASKS(PLAYER_PED_ID())
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot), PEDMOVEBLENDRATIO_WALK, DEFAULT_TIME_BEFORE_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot)))
SET_LABEL_AS_TRIGGERED("ClimbInTrigger", TRUE)
ENDIF
ELSE
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot), <<0.5, 0.5, 3.0>>)
AND NOT IS_PED_RAGDOLL(PLAYER_PED_ID()) AND NOT IS_PED_GETTING_UP(PLAYER_PED_ID())
ADVANCE_STAGE()
ELIF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-801.670105, 166.004623, 74.841263>>, <<-802.518921, 168.107956, 79.740738>>, 2.0)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
CLEAR_PED_TASKS(PLAYER_PED_ID())
ENDIF
ENDIF
SET_PLAYER_SNEAKING_NOISE_MULTIPLIER(PLAYER_ID(), 0.1)
SET_PLAYER_NOISE_MULTIPLIER(PLAYER_ID(), 1.0)
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_CLIMB_INTO_GARDEN")
STOP_AUDIO_SCENE("ARM_3_CLIMB_INTO_GARDEN")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TAKE_OUT_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TAKE_OUT_GARDENER")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_TARGET_GARDENER")
STOP_AUDIO_SCENE("ARM_3_TARGET_GARDENER")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_ENTER_HOUSE")
STOP_AUDIO_SCENE("ARM_3_ENTER_HOUSE")
ENDIF
//Particles
IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxLeaf)
STOP_PARTICLE_FX_LOOPED(ptfxLeaf)
ENDIF
//Sound - Leafblower
IF sIDLeaf != -1
STOP_SOUND(sIDLeaf)
RELEASE_SOUND_ID(sIDLeaf)
sIDLeaf = -1
ENDIF
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
IF DOES_ENTITY_EXIST(pedGardener)
SAFE_DELETE_PED(pedGardener)
SAFE_DELETE_OBJECT(objLeafblower)
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_GARDENER_01)
REMOVE_ANIM_DICT(sAnimDictGarden)
IF HAS_CLIP_SET_LOADED(sAnimDictGardenerMoveClipSet)
REMOVE_CLIP_SET(sAnimDictGardenerMoveClipSet)
ENDIF
ENDIF
DISABLE_CELLPHONE(FALSE)
//Audio
RELEASE_NAMED_SCRIPT_AUDIO_BANK("ARM_3_03")
SAFE_REMOVE_BLIP(blipDestination)
// CLEAR_PRINTS()
SAFE_CLEAR_HELP()
// KILL_FACE_TO_FACE_CONVERSATION()
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
PROC cutsceneArgue()
IF INIT_STAGE()
//Checkpoint
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayMansion), "stageSneakThrough")
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
OVERRIDE_REPLAY_CHECKPOINT_VEHICLE(vehDriveTo)
ENDIF
//Player Control
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
//Radar
bRadar = TRUE
//Son
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedSon, CHAR_JIMMY, vSonStart, fSonStart)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_ENTITY_HEALTH(pedSon, 101)
SET_PED_COMPONENT_VARIATION(pedSon, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(pedSon, PED_COMP_DECL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedSon, PED_COMP_FEET, 3, 0)
SET_PED_CONFIG_FLAG(pedSon, PCF_RunFromFiresAndExplosions, FALSE)
SET_PED_CONFIG_FLAG(pedSon, PCF_DisableExplosionReactions, TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedSon, TRUE)
TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_base", <<-804.750, 175.550, 75.750>>, <<0.0, 0.0, 111.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_IGNORE_GRAVITY | AF_TURN_OFF_COLLISION | AF_OVERRIDE_PHYSICS)
FREEZE_ENTITY_POSITION(pedSon, TRUE)
SET_PED_POSITION(pedSon, vSonStart, fSonStart)
//Cleanup Son
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_JIMMY))
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
//Daughter
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedDaughter, CHAR_TRACEY, vDaughterStart, fDaughterStart)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_ENTITY_HEALTH(pedDaughter, 101)
SET_PED_COMPONENT_VARIATION(pedDaughter, PED_COMP_TORSO, 3, 0)
SET_PED_COMPONENT_VARIATION(pedDaughter, PED_COMP_LEG, 3, 0)
SET_PED_COMPONENT_VARIATION(pedDaughter, PED_COMP_FEET, 2, 0)
SET_PED_CONFIG_FLAG(pedDaughter, PCF_RunFromFiresAndExplosions, FALSE)
SET_PED_CONFIG_FLAG(pedDaughter, PCF_DisableExplosionReactions, TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDaughter, TRUE)
//Cleanup Daughter
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_TRACEY))
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
//Audio
PLAY_AUDIO(ARM3_WINDOW)
//Son
SAFE_SET_ENTITY_VISIBLE(pedSon, FALSE)
//Daughter
SAFE_SET_ENTITY_VISIBLE(pedDaughter, FALSE)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
IF SKIPPED_STAGE()
SET_PED_POSITION(PLAYER_PED_ID(), <<-802.1424, 166.1851, 75.4634>>, 19.1130)
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
CLEAR_PED_TASKS(PLAYER_PED_ID())
TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot), PEDMOVEBLENDRATIO_WALK, DEFAULT_TIME_BEFORE_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot)))
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Audio
PLAY_AUDIO(ARM3_RESTART_2)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_EAVDROP_3")
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedDaughter, "TRACEY")
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, pedSon, "JIMMY")
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_EAVDROP", "ARM3_EAVDROP_3")
ENDIF
ENDIF
SWITCH iCutsceneStage
CASE 0
// SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
//
// TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
//
// CLEAR_PED_TASKS(PLAYER_PED_ID())
//
// //TASK_FOLLOW_NAV_MESH_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot), PEDMOVEBLENDRATIO_WALK, DEFAULT_TIME_BEFORE_WARP, DEFAULT_NAVMESH_RADIUS, ENAV_STOP_EXACTLY | ENAV_GO_FAR_AS_POSSIBLE_IF_TARGET_NAVMESH_NOT_LOADED, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot)))
// TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot), PEDMOVEBLENDRATIO_WALK, DEFAULT_TIME_BEFORE_WARP, GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_ROTATION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot)))
ADVANCE_CUTSCENE()
BREAK
CASE 1
IF (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictArm3Climb, "climb_in_window_v2", sceneClimbInPos, sceneClimbInRot), <<0.2, 0.2, 3.0>>)
AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDaughter))
OR TIMERA() > 5000
sceneClimbIn = CREATE_SYNCHRONIZED_SCENE(sceneClimbInPos, sceneClimbInRot)
TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneClimbIn, sAnimDictArm3Climb, "climb_in_window_v2", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneClimbIn, FALSE)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
REPLAY_RECORD_BACK_FOR_TIME(8.0, 10.0)
ADVANCE_CUTSCENE()
ENDIF
BREAK
CASE 2
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneClimbIn) //IS_ENTITY_PLAYING_ANIM(PLAYER_PED_ID(), sAnimDictArm3Climb, "climb_in_window_v2")
OR (IS_SYNCHRONIZED_SCENE_RUNNING(sceneClimbIn)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneClimbIn) >= 0.95)
CLEAR_PED_TASKS(PLAYER_PED_ID())
ADVANCE_STAGE()
ENDIF
BREAK
ENDSWITCH
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
// REMOVE_CUTSCENE()
//
// WHILE HAS_CUTSCENE_LOADED()
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
VEHICLE_INDEX vehLast = GET_PLAYERS_LAST_VEHICLE()
IF vehLast != vehDriveTo
IF DOES_ENTITY_EXIST(vehLast)
AND NOT IS_ENTITY_DEAD(vehLast)
vehDriveTo = vehLast
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
SET_VEHICLE_POSITION(vehDriveTo, <<-855.5760, 172.7193, 67.1646>>, 352.4847)
SET_VEHICLE_FIXED(vehDriveTo)
SET_VEHICLE_ON_GROUND_PROPERLY(vehDriveTo)
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<-855.5760, 172.7193, 67.1646>>, 352.4847, FALSE, CHAR_FRANKLIN)
ENDIF
// KILL_ANY_CONVERSATION()
//Son
SAFE_SET_ENTITY_VISIBLE(pedSon, TRUE)
TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_loop_d", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE | AF_LOOPING)
//Daughter
SAFE_SET_ENTITY_VISIBLE(pedDaughter, TRUE)
SET_PED_POSITION(pedDaughter, <<-800.5298, 170.2849, 75.7406>>, 180.0982)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3Argue, "tracey_argument", <<-806.166, 170.525, 76.460>>, <<0.0, 0.0, 110.0>>, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED, 0.900) //TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_enter", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED, 0.05)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_a", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_b", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_c", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_d", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE | AF_LOOPING, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
//TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_e", <<-801.470, 171.426, 76.520>>, <<-0.063, 0.027, -67.146>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedDaughter, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
IF NOT DOES_ENTITY_EXIST(objPhone)
objPhone = CREATE_OBJECT(prop_phone_ing_02, GET_ENTITY_COORDS(pedDaughter))
ATTACH_ENTITY_TO_ENTITY(objPhone, pedDaughter, GET_PED_BONE_INDEX(pedDaughter, BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO, TRUE, TRUE)
ENDIF
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedDaughter)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
/// PURPOSE:
/// Handles Jimmy's TV playing RIGHTEOUS SLAUGHTER(tm)
PROC HANDLE_JIMMY_TV()
IF bJimmyTVPLayingGame = FALSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.094299, 167.774826, 75.240730>>, <<-808.853943, 184.658707, 79.762192>>, 11.75)
IF IS_THIS_TV_AVAILABLE_FOR_USE(TV_LOC_JIMMY_BEDROOM)
START_AMBIENT_TV_PLAYBACK(TV_LOC_JIMMY_BEDROOM, TVCHANNELTYPE_CHANNEL_1, TV_PLAYLIST_LO_RIGHTEOUS_SLAUGHTER_CUTSCENE)
SET_TV_VOLUME(0.0)
bJimmyTVPLayingGame = TRUE
ENDIF
ENDIF
ENDIF
ENDPROC
/// PURPOSE:
/// Handles disabling the projector TV
PROC HANDLE_PROJECTOR_TV()
IF bProjectorTVDisabled = FALSE
IF IS_THIS_TV_AVAILABLE_FOR_USE(TV_LOC_MICHAEL_PROJECTOR)
DISABLE_TV_CONTROLS(TV_LOC_MICHAEL_PROJECTOR, TRUE)
bProjectorTVDisabled = TRUE
ENDIF
ENDIF
ENDPROC
PROC SneakThrough()
IF INIT_STAGE()
//Checkpoint
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayMansion), "stageSneakThrough")
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
OVERRIDE_REPLAY_CHECKPOINT_VEHICLE(vehDriveTo)
ENDIF
//Set player
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
//Radar
bRadar = TRUE
//Cutscenes
ePrestreamCutscene = roomNone
bPrestreamCutsceneLockedIn[roomSon] = FALSE
bPrestreamCutsceneLockedIn[roomDaughter] = FALSE
bPrestreamCutsceneLockedIn[roomWifeCoach] = FALSE
//Blanket in car
SET_VEHICLE_EXTRA(vehCar, 5, FALSE)
//Son
IF NOT DOES_ENTITY_EXIST(pedSon)
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedSon, CHAR_JIMMY, vSonStart, fSonStart)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_ENTITY_HEALTH(pedSon, 101)
SET_PED_COMPONENT_VARIATION(pedSon, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(pedSon, PED_COMP_DECL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedSon, PED_COMP_FEET, 3, 0)
SET_PED_CONFIG_FLAG(pedSon, PCF_RunFromFiresAndExplosions, FALSE)
SET_PED_CONFIG_FLAG(pedSon, PCF_DisableExplosionReactions, TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedSon, TRUE)
TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_base", <<-806.657, 170.139, 76.470>>, <<0.0, 0.0, 111.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_IGNORE_GRAVITY | AF_TURN_OFF_COLLISION | AF_OVERRIDE_PHYSICS)
FREEZE_ENTITY_POSITION(pedSon, TRUE)
SET_PED_POSITION(pedSon, vSonStart, fSonStart)
//Cleanup Son
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_JIMMY))
TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_loop_d", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE | AF_LOOPING)
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
ENDIF
//Daughter
IF NOT DOES_ENTITY_EXIST(pedDaughter)
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedDaughter, CHAR_TRACEY, vDaughterStart, fDaughterStart)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_ENTITY_HEALTH(pedDaughter, 101)
SET_PED_COMPONENT_VARIATION(pedDaughter, PED_COMP_TORSO, 3, 0)
SET_PED_COMPONENT_VARIATION(pedDaughter, PED_COMP_LEG, 3, 0)
SET_PED_COMPONENT_VARIATION(pedDaughter, PED_COMP_FEET, 2, 0)
SET_PED_CONFIG_FLAG(pedDaughter, PCF_RunFromFiresAndExplosions, FALSE)
SET_PED_CONFIG_FLAG(pedDaughter, PCF_DisableExplosionReactions, TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDaughter, TRUE)
WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedDaughter)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF intMansion = NULL
intMansion = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-812.1879, 179.9663, 71.1639>>, "V_Michael")
ENDIF
RETAIN_ENTITY_IN_INTERIOR(pedDaughter, intMansion)
//Cleanup Daughter
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_TRACEY))
SET_PED_POSITION(pedDaughter, <<-800.5298, 170.2849, 75.7406>>, 180.0982)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3Argue, "tracey_argument", <<-806.166, 170.525, 76.460>>, <<0.0, 0.0, 110.0>>, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED, 0.900) //TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_enter", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_a", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_b", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_c", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_d", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_NOT_INTERRUPTABLE | AF_LOOPING, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
//TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictArm3, "tracey_idle_e", <<-801.470, 171.426, 76.520>>, <<-0.063, 0.027, -67.146>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedDaughter, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
IF NOT DOES_ENTITY_EXIST(objPhone)
objPhone = CREATE_OBJECT(prop_phone_ing_02, GET_ENTITY_COORDS(pedDaughter))
ATTACH_ENTITY_TO_ENTITY(objPhone, pedDaughter, GET_PED_BONE_INDEX(pedDaughter, BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO, TRUE, TRUE)
ENDIF
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
ENDIF
//Wife
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedWife, CHAR_AMANDA, vWifeStart, fWifeStart)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_PED_COMPONENT_VARIATION(pedWife, PED_COMP_HAIR, 0, 1)
SET_PED_COMPONENT_VARIATION(pedWife, PED_COMP_TORSO, 0, 1)
SET_PED_COMPONENT_VARIATION(pedWife, PED_COMP_LEG, 0, 1)
SET_ENTITY_HEALTH(pedWife, 101)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedWife, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedWife, "AMANDA")
IF intMansion = NULL
intMansion = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-812.1879, 179.9663, 71.1639>>, "V_Michael")
ENDIF
RETAIN_ENTITY_IN_INTERIOR(pedWife, intMansion)
//Cleanup Wife
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_AMANDA))
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
//Coach
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedCoach, CHAR_TENNIS_COACH, vCoachStart, fCoachStart)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_ENTITY_HEALTH(pedCoach, 101)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCoach, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 7, pedCoach, "TENNISCOACH")
IF intMansion = NULL
intMansion = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-812.1879, 179.9663, 71.1639>>, "V_Michael")
ENDIF
RETAIN_ENTITY_IN_INTERIOR(pedCoach, intMansion)
//Cleanup Coach
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_TENNIS_COACH))
IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<-805.8604, 172.6347, 75.7407>>)
covPoint[0] = ADD_COVER_POINT(<<-808.0162, 178.5150, 71.1531>>, -70.0, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_180, TRUE)
ENDIF
IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<-805.7504, 172.4508, 75.7407>>)
covPoint[1] = ADD_COVER_POINT(<<-805.7504, 172.4508, 75.7407>>, 111.0, COVUSE_WALLTOLEFT, COVHEIGHT_TOOHIGH, COVARC_180, TRUE)
ENDIF
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_INSIDE_HOUSE")
START_AUDIO_SCENE("ARM_3_INSIDE_HOUSE")
ENDIF
//Audio
PLAY_AUDIO(ARM3_WINDOW)
#IF IS_DEBUG_BUILD
IF bSkipped = FALSE
#ENDIF
SET_PORTAL_SETTINGS_OVERRIDE("V_MICHAEL_PS_BATHROOM_WITH_WINDOW", "V_MICHAEL_PS_BATHROOM_WITHOUT_WINDOW")
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
//Blip
SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE) //SAFE_ADD_BLIP_LOCATION(blipDestination, vCarStart)
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
//Object
objGamepad = CREATE_OBJECT(modGamepad, <<-801.49, 179.15, 72.32>>)
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
objHeadset = CREATE_OBJECT(modHeadset, <<-801.49, 179.15, 72.32>>)
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
objTennisA = CREATE_OBJECT(modTennis, <<-801.49, 179.35, 72.32>>)
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
objTennisB = CREATE_OBJECT(modTennis, <<-801.49, 179.85, 72.32>>)
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
objBag = CREATE_OBJECT(modBag, <<-801.49, 179.55, 72.32>>)
WAIT_WITH_DEATH_CHECKS(0) //Delay entity creation
ATTACH_ENTITY_TO_ENTITY(objGamepad, pedSon, GET_PED_BONE_INDEX(pedSon, BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
ATTACH_ENTITY_TO_ENTITY(objHeadset, pedSon, GET_PED_BONE_INDEX(pedSon, BONETAG_HEAD), <<0.01, 0.0, 0.0>>, <<-180.0, 90.0, 0.0>>)
ATTACH_ENTITY_TO_ENTITY(objTennisA, pedWife, GET_PED_BONE_INDEX(pedWife, BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
ATTACH_ENTITY_TO_ENTITY(objTennisB, pedCoach, GET_PED_BONE_INDEX(pedCoach, BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
ATTACH_ENTITY_TO_ENTITY(objBag, pedCoach, GET_PED_BONE_INDEX(pedCoach, BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
IF SKIPPED_STAGE()
//Freeze
SET_PED_POSITION(PLAYER_PED_ID(), <<-802.6609, 168.6319, 75.7407>>, 31.0258)
SET_VEHICLE_POSITION(vehCar, vCarStart, fCarStart)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
FREEZE_ENTITY_POSITION(pedDaughter, TRUE)
FREEZE_ENTITY_POSITION(pedSon, TRUE)
FREEZE_ENTITY_POSITION(pedWife, TRUE)
FREEZE_ENTITY_POSITION(pedCoach, TRUE)
FREEZE_ENTITY_POSITION(vehCar, TRUE)
//Pin Interior
intMansion = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-812.1879, 179.9663, 71.1639>>, "V_Michael")
PIN_INTERIOR_IN_MEMORY(intMansion)
WHILE NOT IS_INTERIOR_READY(intMansion)
PRINTLN("PINNING INTERIOR...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
bPinnedMansion = TRUE
//Unfreeze
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
FREEZE_ENTITY_POSITION(pedDaughter, FALSE)
FREEZE_ENTITY_POSITION(pedSon, FALSE)
FREEZE_ENTITY_POSITION(pedWife, FALSE)
FREEZE_ENTITY_POSITION(pedCoach, FALSE)
FREEZE_ENTITY_POSITION(vehCar, FALSE)
IF NOT bReplaySkip
LOAD_SCENE_ADV(<<-802.1, 167.9, 77.7>>, 20.0)
ENDIF
//Franklin
SET_PED_POSITION(PLAYER_PED_ID(), <<-802.6609, 168.6319, 75.7407>>, 31.0258)
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_ON_FOOT_IDLE)
SET_VEHICLE_POSITION(vehCar, vCarStart, fCarStart)
ACTIVATE_PHYSICS(vehCar)
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Audio
PLAY_AUDIO(ARM3_RESTART_3)
//Cam
IF NOT DOES_CAM_EXIST(camMain)
camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
ENDIF
SET_CAM_PARAMS(camMain, <<-802.733154, 167.991272, 77.422760>>, <<-11.807504, 0.0, 17.053619>>, 50.0)
SET_CAM_ACTIVE(camMain, TRUE)
WAIT_WITH_DEATH_CHECKS(0)
STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP(FALSE, 0.0, CAM_SPLINE_SLOW_IN_SMOOTH)
WAIT_WITH_DEATH_CHECKS(10)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(), PEDMOVE_RUN)
IF DOES_ENTITY_EXIST(objPhone)
IF DOES_ENTITY_EXIST(pedDaughter) AND NOT IS_PED_INJURED(pedDaughter)
IF IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
IF IS_ENTITY_VISIBLE(objPhone)
SET_ENTITY_VISIBLE(objPhone, FALSE)
ENDIF
ELSE
IF NOT IS_ENTITY_VISIBLE(objPhone)
SET_ENTITY_VISIBLE(objPhone, TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
SWITCH iCutsceneStage
CASE 0
PRINT_HELP_ADV("ARM3HLP_AVOID")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
UNPIN_INTERIOR(intMansion)
//Dialogue
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, pedSon, "JIMMY")
CREATE_CONVERSATION_ADV("ARM3_JIM1.5")
ADVANCE_CUTSCENE()
ENDIF
BREAK
CASE 1
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINT_ADV("ARM3_GETCAR")
ENDIF
// IF HAS_LABEL_BEEN_TRIGGERED("ARM3_WIFEA")
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
IF NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneWifeCoachFlirt)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneWifeCoachFlirt) = 1.0
AND DOES_ENTITY_HAVE_DRAWABLE(objTennisA)
sceneWifeCoachFlirt = CREATE_SYNCHRONIZED_SCENE(<<-796.971, 185.839, 72.717>>, <<0.0, 0.0, 51.0>>)
TASK_SYNCHRONIZED_SCENE(pedWife, sceneWifeCoachFlirt, sAnimDictArm3, "tennis_coach_loop_wife", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_ON_ABORT_STOP_SCENE, RBF_NONE, INSTANT_BLEND_IN, AIK_DISABLE_HEAD_IK)
TASK_SYNCHRONIZED_SCENE(pedCoach, sceneWifeCoachFlirt, sAnimDictArm3, "tennis_coach_loop_coach", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_ON_ABORT_STOP_SCENE, RBF_NONE, INSTANT_BLEND_IN, AIK_DISABLE_HEAD_IK)
SET_SYNCHRONIZED_SCENE_LOOPED(sceneWifeCoachFlirt, TRUE)
SET_SYNCHRONIZED_SCENE_PHASE(sceneWifeCoachFlirt, 0.0)
DETACH_ENTITY(objTennisA, FALSE)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objTennisA, sceneWifeCoachFlirt, "tennis_coach_loop_racketa", sAnimDictArm3, INSTANT_BLEND_IN)
// DETACH_ENTITY(objTennisA, FALSE)
// FREEZE_ENTITY_POSITION(objTennisA, TRUE)
DETACH_ENTITY(objTennisB, FALSE)
FREEZE_ENTITY_POSITION(objTennisB, TRUE)
DETACH_ENTITY(objBag, FALSE)
FREEZE_ENTITY_POSITION(objBag, TRUE)
SETTIMERA(0)
ENDIF
// ELSE
// IF TIMERA() > 15000
// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-810.335632, 179.167435, 71.153091>>, <<-796.086731, 184.913010, 74.355469>>, 2.0)
// IF NOT HAS_LABEL_BEEN_TRIGGERED("CaughtWifeCoach")
// SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
//
// SET_LABEL_AS_TRIGGERED("CaughtWifeCoach", TRUE)
// ENDIF
// ENDIF
// ENDIF
ENDIF
ENDIF
// ENDIF
enumSubtitlesState eDisplaySubtitles
eDisplaySubtitles = DISPLAY_SUBTITLES
IF IS_MESSAGE_BEING_DISPLAYED()
eDisplaySubtitles = DO_NOT_DISPLAY_SUBTITLES
ENDIF
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF iDialogueLineCount[iDialogueStage] = -1
iDialogueLineCount[iDialogueStage] = 9
ELIF iDialogueLineCount[iDialogueStage] > 0
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.127502, 167.657471, 75.740723>>, <<-807.444336, 178.842728, 78.990883>>, 3.25)
IF TIMERB() > iTimer
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_JIM")
CREATE_CONVERSATION_ADV("ARM3_JIM", CONV_PRIORITY_HIGH, FALSE, eDisplaySubtitles)
iTimer = GET_RANDOM_INT_IN_RANGE(5500, 10000)
SETTIMERB(0)
iDialogueLineCount[iDialogueStage]--
ENDIF
ENDIF
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.127502, 167.657471, 75.740723>>, <<-807.444336, 178.842728, 78.990883>>, 3.25)
IF TIMERB() > iTimer
PLAY_PED_AMBIENT_SPEECH(pedSon, "GENERIC_CURSE_HIGH", SPEECH_PARAMS_FORCE)
iTimer = GET_RANDOM_INT_IN_RANGE(5500, 10000)
SETTIMERB(0)
ENDIF
ENDIF
ENDIF
ENDIF
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-802.1136, 176.5611, 73.9906>>, <<-804.4435, 182.1805, 79.0034>>, 5.0)
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_TRCYA")
OR NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_TRCYB")
OR NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_TRCYC")
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedDaughter, "TRACEY")
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_TRCYA")
CREATE_CONVERSATION_ADV("ARM3_TRCYA", CONV_PRIORITY_HIGH)
REPLAY_RECORD_BACK_FOR_TIME(3.5, 4.0, REPLAY_IMPORTANCE_HIGH)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_TRCYB")
CREATE_CONVERSATION_ADV("ARM3_TRCYB", CONV_PRIORITY_HIGH)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_TRCYC")
CREATE_CONVERSATION_ADV("ARM3_TRCYC", CONV_PRIORITY_HIGH)
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_TRCYA")
AND HAS_LABEL_BEEN_TRIGGERED("ARM3_TRCYB")
AND HAS_LABEL_BEEN_TRIGGERED("ARM3_TRCYC")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_TRCYA")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_TRCYB")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_TRCYC")
IF NOT IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3, "tracey_idle_a")
TASK_PLAY_ANIM_ADVANCED(pedDaughter, sAnimDictArm3, "tracey_idle_a", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_LOOPING)
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-794.927551, 184.106979, 70.834709>>, <<-815.375916, 176.086212, 74.153091>>, 25.0)
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
AND DOES_ENTITY_HAVE_DRAWABLE(objTennisA)
AND DOES_ENTITY_HAVE_DRAWABLE(objTennisB)
AND DOES_ENTITY_HAVE_DRAWABLE(objBag)
sceneWifeCoachFlirt = CREATE_SYNCHRONIZED_SCENE(<<-796.971, 185.839, 72.717>>, <<0.0, 0.0, 51.0>>)
TASK_SYNCHRONIZED_SCENE(pedWife, sceneWifeCoachFlirt, sAnimDictArm3, "tennis_coach_intro_wife", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_ON_ABORT_STOP_SCENE, RBF_NONE, INSTANT_BLEND_IN, AIK_DISABLE_HEAD_IK)
TASK_SYNCHRONIZED_SCENE(pedCoach, sceneWifeCoachFlirt, sAnimDictArm3, "tennis_coach_intro_coach", INSTANT_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_ON_ABORT_STOP_SCENE, RBF_NONE, INSTANT_BLEND_IN, AIK_DISABLE_HEAD_IK)
DETACH_ENTITY(objTennisA, FALSE)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objTennisA, sceneWifeCoachFlirt, "tennis_coach_intro_racketa", sAnimDictArm3, INSTANT_BLEND_IN)
DETACH_ENTITY(objTennisB, FALSE)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objTennisB, sceneWifeCoachFlirt, "tennis_coach_intro_racketb", sAnimDictArm3, INSTANT_BLEND_IN)
DETACH_ENTITY(objBag, FALSE)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objBag, sceneWifeCoachFlirt, "tennis_coach_intro_bag", sAnimDictArm3, INSTANT_BLEND_IN)
ENDIF
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWifeCoachFlirt)
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_WIFE_1")
IF NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneWifeCoachFlirt)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneWifeCoachFlirt) >= 0.125
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_WIFE", "ARM3_WIFE_1")
REPLAY_RECORD_BACK_FOR_TIME(1.0, 4.0, REPLAY_IMPORTANCE_HIGHEST)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_WIFE_2")
IF NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneWifeCoachFlirt)
AND GET_SYNCHRONIZED_SCENE_PHASE(sceneWifeCoachFlirt) >= 0.335
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_WIFE", "ARM3_WIFE_2")
ENDIF
ENDIF
IF IS_SYNCHRONIZED_SCENE_LOOPED(sceneWifeCoachFlirt)
OR GET_SYNCHRONIZED_SCENE_PHASE(sceneWifeCoachFlirt) >= 0.39
IF NOT HAS_LABEL_BEEN_TRIGGERED("GarageDoorSmoothClosed")
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_WIFEA")
OR NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_WIFEB")
OR NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_WIFEC")
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_WIFEA")
CREATE_CONVERSATION_ADV("ARM3_WIFEA", CONV_PRIORITY_HIGH)
REPLAY_RECORD_BACK_FOR_TIME(4.5, 6.0, REPLAY_IMPORTANCE_HIGH)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_WIFEB")
CREATE_CONVERSATION_ADV("ARM3_WIFEB", CONV_PRIORITY_HIGH)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_WIFEC")
CREATE_CONVERSATION_ADV("ARM3_WIFEC", CONV_PRIORITY_HIGH)
// ELIF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
// IF GET_GAME_TIMER() > iDialogueTimer
// CREATE_CONVERSATION_ADV("ARM3_WIFER", CONV_PRIORITY_HIGH, FALSE)
//
// iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5500, 10000)
// ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.127502, 167.657471, 75.740723>>, <<-807.444336, 178.842728, 78.990883>>, 3.25)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-802.1136, 176.5611, 73.9906>>, <<-805.7435, 185.8805, 79.0034>>, 5.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-794.927551, 184.106979, 70.834709>>, <<-815.375916, 176.086212, 74.153091>>, 25.0)
OR HAS_LABEL_BEEN_TRIGGERED("GarageDoorSmoothClosed")
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_JIM")
SET_LABEL_AS_TRIGGERED("ARM3_JIM", FALSE)
ENDIF
IF NOT IS_PHONE_ONSCREEN()
AND IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
KILL_ANY_CONVERSATION()
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("SneakReminder")
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF NOT GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-809.956543, 175.541382, 75.740738>>, <<-801.040466, 178.926025, 79.240738>>, 3.75)
OR NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-805.785767,179.748779,75.740738>>, <<-801.420898, 168.294800, 79.240738>>, 11.0)
SET_LABEL_AS_TRIGGERED("ARM3HLP_SNEAK", FALSE)
PRINT_HELP_ADV("ARM3HLP_SNEAK")
SET_LABEL_AS_TRIGGERED("SneakReminder", TRUE)
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("ARM3HLP_SNEAK", TRUE)
SET_LABEL_AS_TRIGGERED("SneakReminder", TRUE)
ENDIF
ENDIF
ENDIF
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM3HLP_SNEAK")
IF GET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID())
SAFE_CLEAR_HELP()
ENDIF
ENDIF
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_SNEAK") //Sneaking help
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_SNEAK2") //Stealth mode info
IF g_iArmenian3HelpText < 2
PRINT_HELP_ADV("ARM3HLP_SNEAK2")
g_iArmenian3HelpText = 2
ELSE
SET_LABEL_AS_TRIGGERED("ARM3HLP_SNEAK2", TRUE)
ENDIF
// ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_STEALTH1") //Player blip colouring help
// IF g_iArmenian3HelpText < 3
// PRINT_HELP_ADV("ARM3HLP_STEALTH1")
// g_iArmenian3HelpText = 3
// ELSE
// SET_LABEL_AS_TRIGGERED("ARM3HLP_STEALTH1", TRUE)
// ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_STAT") //Stealth stat help
IF g_iArmenian3HelpText < 3
PRINT_HELP_ADV("ARM3HLP_STAT")
g_iArmenian3HelpText = 3
ELSE
SET_LABEL_AS_TRIGGERED("ARM3HLP_STAT", TRUE)
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_SOUNDBLIPS") //Sound Blips
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-805.785767,179.748779,75.740738>>, <<-801.420898, 168.294800, 79.240738>>, 11.0)
PRINT_HELP_ADV("ARM3HLP_SOUNDBLIPS")
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
IF IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(), PEDMOVE_WALK)
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME()
IF GET_ENTITY_ANIM_CURRENT_TIME(pedDaughter, sAnimDictArm3Argue, "tracey_argument") >= 0.950
AND GET_ENTITY_ANIM_CURRENT_TIME(pedDaughter, sAnimDictArm3Argue, "tracey_argument") < 1.0
SET_ENTITY_ANIM_CURRENT_TIME(pedDaughter, sAnimDictArm3Argue, "tracey_argument", 1.0)
ENDIF
ENDIF
// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-807.361633, 188.988678, 71.474586>>, <<-815.295715, 185.975479, 74.975128>>, 6.0, FALSE, TRUE)
// //Blips
// SAFE_REMOVE_BLIP(blipDestination)
//
// SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE)
//
// //Text
// PRINT_ADV("ARM3_GO") //PRINT_ADV("ARM3_CAR1")
// ENDIF
HANDLE_JIMMY_TV()
HANDLE_PROJECTOR_TV()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-807.402283, 189.004593, 71.478920>>, <<-815.288208, 185.978165, 74.954453>>, 6.5)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_INSIDE_HOUSE")
STOP_AUDIO_SCENE("ARM_3_INSIDE_HOUSE")
ENDIF
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_ENTER_GARAGE")
START_AUDIO_SCENE("ARM_3_ENTER_GARAGE")
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("EnterGarageAudio")
PLAY_AUDIO(ARM3_GARAGE_STOP)
SET_LABEL_AS_TRIGGERED("EnterGarageAudio", TRUE)
ENDIF
ENDIF
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
AND NOT IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID())
ADVANCE_STAGE()
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-805.785767,179.748779,75.740738>>, <<-801.420898, 168.294800, 79.240738>>, 11.0)
IF NOT DOES_BLIP_EXIST(blipSon)
AND DOES_ENTITY_EXIST(pedSon)
SAFE_ADD_BLIP_PED(blipSon, pedSon)
ENDIF
IF NOT DOES_BLIP_EXIST(blipDaughter)
AND DOES_ENTITY_EXIST(pedDaughter)
blipDaughter = ADD_BLIP_FOR_COORD(GET_ENTITY_COORDS(pedDaughter))
SET_BLIP_COLOUR(blipDaughter, BLIP_COLOUR_RED)
SET_BLIP_SCALE(blipDaughter, 0.75)
SET_BLIP_PRIORITY(blipDaughter, BLIPPRIORITY_HIGHEST)
SET_BLIP_NAME_FROM_TEXT_FILE(blipDaughter, "ARM3_BLIPPED")
vBlipDaughterRoute = GET_ENTITY_COORDS(pedDaughter)
ENDIF
IF DOES_BLIP_EXIST(blipDaughter)
IF IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
vBlipDaughterRoute = GET_ENTITY_COORDS(pedDaughter)
ELSE
VECTOR vPedDaughterRoute = GET_ENTITY_COORDS(pedDaughter)
vBlipDaughterRoute.X = vBlipDaughterRoute.X +@ ((vPedDaughterRoute.X - vBlipDaughterRoute.X) / 1.0) * CLAMP(GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()), 1.0, 2.0)
vBlipDaughterRoute.Y = vBlipDaughterRoute.Y +@ ((vPedDaughterRoute.Y - vBlipDaughterRoute.Y) / 1.0) * CLAMP(GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()), 1.0, 2.0)
vBlipDaughterRoute.Z = vBlipDaughterRoute.Z +@ ((vPedDaughterRoute.Z - vBlipDaughterRoute.Z) / 1.0) * CLAMP(GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()), 1.0, 2.0)
ENDIF
VECTOR vPedDaughter
VECTOR vBlipDaughter
vPedDaughter = vBlipDaughterRoute
vBlipDaughter = GET_BLIP_COORDS(blipDaughter)
vBlipDaughter.X = vBlipDaughter.X +@ ((vPedDaughter.X - vBlipDaughter.X) / 1.0) * CLAMP(GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()), 1.0, 2.0)
vBlipDaughter.Y = vBlipDaughter.Y +@ ((vPedDaughter.Y - vBlipDaughter.Y) / 1.0) * CLAMP(GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()), 1.0, 2.0)
vBlipDaughter.Z = vBlipDaughter.Z +@ ((vPedDaughter.Z - vBlipDaughter.Z) / 1.0) * CLAMP(GET_PED_DESIRED_MOVE_BLEND_RATIO(PLAYER_PED_ID()), 1.0, 2.0)
SET_BLIP_COORDS(blipDaughter, vBlipDaughter)
ENDIF
IF DOES_BLIP_EXIST(blipCoach)
SAFE_REMOVE_BLIP(blipCoach)
ENDIF
IF DOES_BLIP_EXIST(blipWife)
SAFE_REMOVE_BLIP(blipWife)
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("GarageDoorSmoothClosed")
IF NOT DOES_BLIP_EXIST(blipCoach)
AND DOES_ENTITY_EXIST(pedCoach)
SAFE_ADD_BLIP_PED(blipCoach, pedCoach)
ENDIF
IF NOT DOES_BLIP_EXIST(blipWife)
AND DOES_ENTITY_EXIST(pedWife)
SAFE_ADD_BLIP_PED(blipWife, pedWife)
ENDIF
ELSE
IF DOES_BLIP_EXIST(blipCoach)
SAFE_REMOVE_BLIP(blipCoach)
ENDIF
IF DOES_BLIP_EXIST(blipWife)
SAFE_REMOVE_BLIP(blipWife)
ENDIF
ENDIF
IF DOES_BLIP_EXIST(blipSon)
SAFE_REMOVE_BLIP(blipSon)
ENDIF
IF DOES_BLIP_EXIST(blipDaughter)
SAFE_REMOVE_BLIP(blipDaughter)
ENDIF
ENDIF
//Flashlight Fails
IF IS_PLAYER_FREE_AIMING(PLAYER_ID())
OR (IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedSon)
OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedDaughter)
OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedWife)
OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedCoach))
IF IS_FLASH_LIGHT_ON(PLAYER_PED_ID())
IF GET_ENTITY_HEADING(PLAYER_PED_ID()) > 32.1361 AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < 179.8933
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.474304, 169.566299, 75.740326>>, <<-806.659363, 177.858795, 78.240738>>, 2.5)
CLEANUP_GAME_PROPS()
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
//TASK_PLAY_ANIM_ADVANCED(pedSon, sAnimDictArm3, "jimmy_playingvideogame_fail", <<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.250)
INT sceneJimmyFail = CREATE_SYNCHRONIZED_SCENE(<<-806.520, 169.751, 75.693>>, <<0.0, 0.0, -50.0>>)
TASK_SYNCHRONIZED_SCENE(pedSon, sceneJimmyFail, sAnimDictArm3, "jimmy_playingvideogame_fail", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objGamepad, sceneJimmyFail, "jimmy_playingvideogame_fail_controller", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
PLAY_SYNCHRONIZED_ENTITY_ANIM(objHeadset, sceneJimmyFail, "jimmy_playingvideogame_fail_headset", sAnimDictArm3, NORMAL_BLEND_IN, NORMAL_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_PHASE(sceneJimmyFail, 0.250)
ENDIF
SET_PED_KEEP_TASK(pedSon, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 6, pedSon, "JIMMY")
CREATE_CONVERSATION_ADV("ARM3_JIMF")
WAIT_WITH_DEATH_CHECKS(2000)
eMissionFail = failNoise
missionFailed()
ENDIF
IF GET_ENTITY_HEADING(PLAYER_PED_ID()) > 162.1006 AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < 240.0467
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-803.476868,175.870285,73.990738>>, <<-807.128113,185.345871,78.254265>>, 3.25)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
IF NOT IS_ENTITY_PLAYING_ANIM(pedDaughter, sAnimDictArm3Argue, "tracey_argument")
TASK_PLAY_ANIM_ADVANCED(pedDaughter, sAnimDictArm3, "tracey_fail", <<-800.835, 170.158, 75.79>>, <<0.0, 0.0, -64.0>>, SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXIT_AFTER_INTERRUPTED | AF_HOLD_LAST_FRAME, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK)
ELSE
TASK_REACT_AND_FLEE_PED(pedDaughter, PLAYER_PED_ID())
ENDIF
ENDIF
SET_PED_KEEP_TASK(pedDaughter, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedDaughter, "TRACEY")
CREATE_CONVERSATION_ADV("ARM3_TRCF")
WAIT_WITH_DEATH_CHECKS(2000)
eMissionFail = failNoise
missionFailed()
ENDIF
IF (GET_ENTITY_HEADING(PLAYER_PED_ID()) > 262.5618 AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < 315.2036
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-815.792542, 177.144836, 69.403091>>, <<-796.055664, 184.881302, 73.855469>>, 3.25))
OR (GET_ENTITY_HEADING(PLAYER_PED_ID()) > 291.0086 AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < 330.7509
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-801.407410, 186.814575, 71.605469>>, <<-797.243835, 177.114365, 74.834709>>, 8.0))
OR (GET_ENTITY_HEADING(PLAYER_PED_ID()) > 313.1061 AND GET_ENTITY_HEADING(PLAYER_PED_ID()) < 337.2681
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-796.149414, 185.406311, 71.105469>>, <<-806.553406, 170.221832, 74.834709>>, 6.0))
CLEAR_PED_TASKS(pedWife)
TASK_REACT_AND_FLEE_PED(pedWife, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedWife, TRUE)
CLEAR_PED_TASKS(pedCoach)
TASK_REACT_AND_FLEE_PED(pedCoach, PLAYER_PED_ID())
SET_PED_KEEP_TASK(pedCoach, TRUE)
CLEANUP_TENNIS_PROPS()
CREATE_CONVERSATION_ADV("ARM3_WIFF")
WAIT_WITH_DEATH_CHECKS(2000)
eMissionFail = failNoise
missionFailed()
ENDIF
ENDIF
ENDIF
IF IS_PED_JUMPING(PLAYER_PED_ID())
OR IS_PED_RAGDOLL(PLAYER_PED_ID())
SET_PLAYER_SNEAKING_NOISE_MULTIPLIER(PLAYER_ID(), 2.0)
ELSE
SET_PLAYER_SNEAKING_NOISE_MULTIPLIER(PLAYER_ID(), 1.0)
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-805.785767,179.748779,75.740738>>, <<-801.420898, 168.294800, 79.240738>>, 11.0)
AND NOT IS_PED_JUMPING(PLAYER_PED_ID())
AND NOT IS_PED_RAGDOLL(PLAYER_PED_ID())
SET_PLAYER_NOISE_MULTIPLIER(PLAYER_ID(), 0.75)
ELSE
SET_PLAYER_NOISE_MULTIPLIER(PLAYER_ID(), 1.0)
ENDIF
FORCE_SONAR_BLIPS_THIS_FRAME()
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_INSIDE_HOUSE")
STOP_AUDIO_SCENE("ARM_3_INSIDE_HOUSE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_ENTER_GARAGE")
STOP_AUDIO_SCENE("ARM_3_ENTER_GARAGE")
ENDIF
IF bJimmyTVPLayingGame
STOP_TV_PLAYBACK(TRUE, TV_LOC_JIMMY_BEDROOM )
bJimmyTVPLayingGame = FALSE
ENDIF
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(), FALSE)
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
KILL_ANY_CONVERSATION()
//Blip
SAFE_REMOVE_BLIP(blipGardener)
SAFE_REMOVE_BLIP(blipSon)
SAFE_REMOVE_BLIP(blipDaughter)
SAFE_REMOVE_BLIP(blipCoach)
SAFE_REMOVE_BLIP(blipWife)
SAFE_REMOVE_BLIP(blipMichael)
SAFE_REMOVE_BLIP(blipDestination)
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME()
//Cleanup Peds
SET_PED_KEEP_TASK(pedSon, TRUE)
SET_PED_AS_NO_LONGER_NEEDED(pedSon)
SET_PED_KEEP_TASK(pedDaughter, TRUE)
SET_PED_AS_NO_LONGER_NEEDED(pedDaughter)
SET_PED_KEEP_TASK(pedWife, TRUE)
SET_PED_AS_NO_LONGER_NEEDED(pedWife)
SET_PED_KEEP_TASK(pedCoach, TRUE)
SET_PED_AS_NO_LONGER_NEEDED(pedCoach)
//Vehicle
SAFE_DELETE_VEHICLE(vehClimb)
//Dialogue
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 4)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 5)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 6)
REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 7)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
PROC StealCar()
IF INIT_STAGE()
//Checkpoint
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayGarage), "stageStealCar")
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
OVERRIDE_REPLAY_CHECKPOINT_VEHICLE(vehDriveTo)
ENDIF
SET_WANTED_LEVEL_MULTIPLIER(0.1)
//Mod Shop
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
//Interior
INTERIOR_INSTANCE_INDEX interiorID = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-49.9775, -1097.2866, 25.4223>>, "v_carshowroom")
IF IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_beforeMission")
DEACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_beforeMission")
ENDIF
IF IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_afterMissionA")
DEACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_afterMissionA")
ENDIF
IF IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_afterMissionB")
DEACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_afterMissionB")
ENDIF
IF NOT IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_inMission")
ACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_inMission")
ENDIF
SET_BUILDING_STATE(BUILDINGNAME_ES_CAR_SHOWROOOM_SHUTTERS, BUILDINGSTATE_DESTROYED) // Close the rear shutters
REFRESH_INTERIOR(interiorID)
bPinnedGarage = FALSE //REFRESH_INTERIOR unpins the interior
//Player Control
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
//Radar
bRadar = TRUE
//Camera
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
//Door
UNLOCK_DOOR(GARAGE_DOOR, V_ILEV_MM_DOOR)
//Car
IF DOES_ENTITY_EXIST(vehCar) AND NOT IS_ENTITY_DEAD(vehCar)
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_LOCKED_PLAYER_INSIDE)
ENDIF
bPlayerExitCar = FALSE
//Special Ability
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), TRUE)
//Unlock Mansion Door
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MICHAEL_MANSION_GATE, PLAYER_PED_ID())
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_MICHAEL_MANSION_GATE].doorID, DOORSTATE_UNLOCKED, TRUE, TRUE)
//Dialogue
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 3, PLAYER_PED_ID(), "FRANKLIN")
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, NULL, "SIMEON")
STOP_PED_SPEAKING(PLAYER_PED(CHAR_FRANKLIN), TRUE)
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStart, fMichaelStart)
SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_DENIM, FALSE)
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_UNARMED, TRUE)
SAFE_SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy)
SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar, VS_BACK_RIGHT)
ENDIF
SET_ENTITY_PROOFS(PLAYER_PED(CHAR_MICHAEL), TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_MICHAEL), PCF_RunFromFiresAndExplosions, FALSE)
SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_MICHAEL), PCF_DisableExplosionReactions, TRUE)
STOP_PED_SPEAKING(PLAYER_PED(CHAR_MICHAEL), TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(PLAYER_PED(CHAR_MICHAEL), TRUE)
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_STEAL_CAR")
START_AUDIO_SCENE("ARM_3_STEAL_CAR")
ENDIF
//Audio
PLAY_AUDIO(ARM3_CAR)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
IF SKIPPED_STAGE()
//Freeze
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
//Pin Interior
intMansion = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-812.1879, 179.9663, 71.1639>>, "V_Michael")
PIN_INTERIOR_IN_MEMORY(intMansion)
WHILE NOT IS_INTERIOR_READY(intMansion)
PRINTLN("PINNING INTERIOR...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
bPinnedMansion = TRUE
SET_LABEL_AS_TRIGGERED("GarageDoorLockedSkip", TRUE)
//Unfreeze
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
//Set Positions
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehCar)
//Load Scene
IF NOT bReplaySkip
LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID()), 20.0)
ENDIF
SET_VEHICLE_ON_GROUND_PROPERLY(vehCar)
ACTIVATE_PHYSICS(vehCar)
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
WAIT_WITH_DEATH_CHECKS(750)
//Audio
PLAY_AUDIO(ARM3_RESTART_4)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
IF TIMERA() > 1000
SET_DOOR_STATE(DOORNAME_M_MANSION_G1, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME) //Big metal garage door
ENDIF
IF NOT DOES_BLIP_EXIST(blipDestination)
CLEAR_PRINTS()
PRINT_ADV("ARM3_DEST")
SAFE_REMOVE_BLIP(blipCar)
// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-622.7947, -362.5217, 33.8123>>, <<-762.1870, -119.8490, 56.8795>>, 250.0, FALSE, TRUE)
// SAFE_ADD_BLIP_LOCATION(blipDestination, <<-675.3372, -299.9155, 34.4508>>, TRUE)
// ELSE
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-148.7715, -1149.9026, 23.2067>>, TRUE)
START_GPS_MULTI_ROUTE(HUD_COLOUR_OBJECTIVE_ROUTE, TRUE)
ADD_POINT_TO_GPS_MULTI_ROUTE(<<-273.014679, -1140.789917, 22.784359>>)
ADD_POINT_TO_GPS_MULTI_ROUTE(<<-148.7715, -1149.9026, 23.2067>>)
SET_GPS_MULTI_ROUTE_RENDER(TRUE)
// ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_DEST")
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_INCAR")
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-811.17505, 187.60080, 73.30764>>) > 100.0
AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
IF IS_PLAYER_PED_IN_PERSONAL_VEHICLE(PLAYER_PED_ID())
PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_SIMEON, "ARM3AUD", "ARM3_INCARA", CONV_PRIORITY_HIGH)
ELSE
PLAYER_CALL_CHAR_CELLPHONE(sPedsForConversation, CHAR_SIMEON, "ARM3AUD", "ARM3_INCARB", CONV_PRIORITY_HIGH)
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(10.0, 8.0)
//Audio
// PLAY_AUDIO(ARM3_CALL)
SET_LABEL_AS_TRIGGERED("ARM3_INCAR", TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_INCAR")
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_INCARA")
OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_INCARB")
IF IS_SPECIAL_ABILITY_ENABLED(PLAYER_ID())
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), FALSE)
ENDIF
ELSE
IF NOT IS_SPECIAL_ABILITY_ENABLED(PLAYER_ID())
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), TRUE)
ENDIF
ENDIF
ENDIF
//Damages Car (Crashes)
// IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
// AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_SCRATCH")
IF GET_ENTITY_HEALTH(vehCar) < iCarHealth
OR GET_VEHICLE_PETROL_TANK_HEALTH(vehCar) < iCarGasTank
OR GET_VEHICLE_ENGINE_HEALTH(vehCar) < iCarEngineHealth
//CREATE_CONVERSATION_ADV("ARM3_SCRATCH", CONV_PRIORITY_HIGH)
INTERRUPT_CONVERSATION(PLAYER_PED(CHAR_FRANKLIN), "ARM3_BRAA", "FRANKLIN") PRINTLN("INTERRUPT_CONVERSATION - Damages Car (Crashes)")
iCarHealth = GET_ENTITY_HEALTH(vehCar)
iCarGasTank = GET_VEHICLE_PETROL_TANK_HEALTH(vehCar)
iCarEngineHealth = GET_VEHICLE_ENGINE_HEALTH(vehCar)
ENDIF
// ENDIF
ELSE
IF NOT DOES_BLIP_EXIST(blipCar)
CLEAR_PRINTS()
PRINT_ADV("ARM3_CAR2")
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE)
ENDIF
ENDIF
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-845.286560, 162.103363, 64.669838>>, <<-845.331665, 155.965317, 70.589340>>, 4.0)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_STEAL_CAR")
STOP_AUDIO_SCENE("ARM_3_STEAL_CAR")
ENDIF
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_EXIT_THROUGH_GATE")
START_AUDIO_SCENE("ARM_3_EXIT_THROUGH_GATE")
ENDIF
ENDIF
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
AND NOT IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID())
IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_ENTER)
OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_EXIT)
bPlayerExitCar = TRUE
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehCar) AND NOT IS_ENTITY_DEAD(vehCar)
IF IS_ENTITY_UPRIGHT(vehCar)
iFailUprightTimer = GET_GAME_TIMER() + 10000
IF IS_VEHICLE_ON_ALL_WHEELS(vehCar)
IF (GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-60.72, -1100.55, 25.40>>) < 1200.0
OR bPlayerExitCar = TRUE)
AND IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
AND NOT IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID())
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_INCARA")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_INCARB")
IF SAFE_START_CUTSCENE(DEFAULT,FALSE) //B* 2164324: Don't activate blinders while driving
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_LOCKED_PLAYER_INSIDE)
//SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
//Spawn Michael
IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStart, fMichaelStart)
SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_DENIM, FALSE)
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_UNARMED, TRUE)
ENDIF
IF NOT DOES_ENTITY_EXIST(objGun)
objGun = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL), vMichaelStart)
ENDIF
ATTACH_ENTITY_TO_ENTITY(objGun, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar, VS_BACK_RIGHT)
//TASK_LOOK_AT_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_PED_ID(), -1)
WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
//Disable Player Movement
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_intro_franklin", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY, 0.31)
//TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_loop_franklin", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING | AF_SECONDARY)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_intro_michael", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1)
TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_loop_michael", NORMAL_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtPistol, 120, TRUE)
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtPistol, TRUE)
WAIT_WITH_DEATH_CHECKS(0)
SET_GAMEPLAY_ENTITY_HINT(vehCar, <<-0.1, 1.0, 1.1>>, TRUE, 2000, 6000, 2000, HINTTYPE_ARM3_VEHICLE)
IF NOT bZoomLevel
vehicleZoomLevel = GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()
camViewModeOnFoot = GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)
PRINTLN("Store Zoom Level GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL() = ", ENUM_TO_INT(GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()))
PRINTLN("Store Zoom Level GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = ", ENUM_TO_INT(GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)))
bZoomLevel = TRUE
ENDIF
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_NEAR)
SAFE_SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
REPLAY_RECORD_BACK_FOR_TIME(0.0, 15.0)
ADVANCE_STAGE()
ENDIF
ENDIF
ENDIF
ELIF GET_ENTITY_SPEED(vehCar) < 1.0
AND GET_GAME_TIMER() > iFailUprightTimer
eMissionFail = failCarDestroyed
missionFailed()
ENDIF
ENDIF
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
IF DOES_ENTITY_EXIST(vehCar) AND NOT IS_ENTITY_DEAD(vehCar)
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_LOCKED_PLAYER_INSIDE)
ENDIF
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_STEAL_CAR")
STOP_AUDIO_SCENE("ARM_3_STEAL_CAR")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_EXIT_THROUGH_GATE")
STOP_AUDIO_SCENE("ARM_3_EXIT_THROUGH_GATE")
ENDIF
//Special Ability
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), FALSE)
IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
//Spawn Michael
DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CHAR_MICHAEL, vMichaelStart, fMichaelStart)
SET_PED_COMP_ITEM_CURRENT_SP(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], COMP_TYPE_OUTFIT, OUTFIT_P0_DENIM, FALSE)
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], WEAPONTYPE_UNARMED, TRUE)
IF NOT DOES_ENTITY_EXIST(objGun)
objGun = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL), vMichaelStart)
ENDIF
ATTACH_ENTITY_TO_ENTITY(objGun, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy)
SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar, VS_BACK_RIGHT)
//TASK_LOOK_AT_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PLAYER_PED_ID(), -1)
WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
// OVER_HOOD_CINEMATIC_CAM()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
SET_GAMEPLAY_ENTITY_HINT(vehCar, <<-0.1, 1.0, 1.1>>, TRUE, 2000, 6000, 2000, HINTTYPE_ARM3_VEHICLE)
IF NOT bZoomLevel
vehicleZoomLevel = GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()
camViewModeOnFoot = GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)
PRINTLN("Store Zoom Level GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL() = ", ENUM_TO_INT(GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()))
PRINTLN("Store Zoom Level GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = ", ENUM_TO_INT(GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)))
bZoomLevel = TRUE
ENDIF
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_NEAR)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_intro_franklin", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY)
// TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_loop_franklin", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING | AF_SECONDARY)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_intro_michael")
TASK_PLAY_ANIM(NULL, sAnimDictArm3, "michaelappears_loop_michael", NORMAL_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtPistol, 120, TRUE)
SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtPistol, TRUE)
// SET_PED_CAN_SWITCH_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE)
ENDIF
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
SAFE_SET_ENTITY_VISIBLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE)
//Cleanup Michael
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
SET_DOOR_STATE(DOORNAME_M_MANSION_G1, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME) //Big metal garage door
SAFE_REMOVE_BLIP(blipCar)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
BOOL bHintCamFrameDelay
PROC DriveTo()
IF INIT_STAGE()
//Player Control
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
//Door
SET_LABEL_AS_TRIGGERED("GarageDoorLockedSkip", TRUE)
//Radar
bRadar = TRUE
HANG_UP_AND_PUT_AWAY_PHONE()
DISABLE_CELLPHONE(TRUE)
//Dialogue
STOP_PED_SPEAKING(PLAYER_PED(CHAR_FRANKLIN), TRUE)
STOP_PED_SPEAKING(PLAYER_PED(CHAR_MICHAEL), TRUE)
//Camera
IF bPlayerExitCar = FALSE
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
ENDIF
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar)
STOP_PLAYBACK_RECORDED_VEHICLE(vehCar)
ENDIF
//Anim Clip Set
REQUEST_CLIP_SET("clipset@missarmenian3@franklin_driving")
WHILE NOT HAS_CLIP_SET_LOADED("clipset@missarmenian3@franklin_driving")
REQUEST_CLIP_SET("clipset@missarmenian3@franklin_driving")
OVER_HOOD_CINEMATIC_CAM()
WAIT_WITH_DEATH_CHECKS(0) #IF IS_DEBUG_BUILD PRINTLN("LOADING CLIP SET: clipset@missarmenian3@franklin_driving...") #ENDIF
ENDWHILE
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_TO_DEALERSHIP")
START_AUDIO_SCENE("ARM_3_DRIVE_TO_DEALERSHIP")
ENDIF
iFailTimer = GET_GAME_TIMER() + 180000
//Cutscene
REQUEST_CUTSCENE("Armenian_3_mcs_6")
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
SET_ROADS_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
SET_ROADS_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
SET_ROADS_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
SET_ROADS_IN_AREA(<<-149.3830, -1150.3278, 23.1441>> - <<5.0, 5.0, 5.0>>, <<-149.3830, -1150.3278, 23.1441>> + <<5.0, 5.0, 5.0>>, FALSE)
CLEAR_AREA(<<-149.3830, -1150.3278, 23.1441>>, 10.0, TRUE)
CLEAR_AREA(<<-149.3830, -1150.3278, 23.1441>>, 10.0, TRUE)
CLEAR_AREA(<<-149.3830, -1150.3278, 23.1441>>, 10.0, TRUE)
CLEAR_AREA(<<-149.3830, -1150.3278, 23.1441>>, 10.0, TRUE)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
shapeTestIndex = NULL
IF SKIPPED_STAGE()
//Set Positions
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehCar)
IF DOES_ENTITY_EXIST(vehCar) AND NOT IS_ENTITY_DEAD(vehCar)
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_LOCKED_PLAYER_INSIDE)
SET_VEHICLE_POSITION(vehCar, <<-676.2552, -278.2624, 35.1000>>, 209.8584)
ENDIF
//Load Scene
IF NOT bReplaySkip
LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID()))
ENDIF
WAIT_WITH_DEATH_CHECKS(0)
SET_VEHICLE_ENGINE_ON(vehCar, TRUE, TRUE)
SET_VEHICLE_FORWARD_SPEED(vehCar, 20.0)
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Objective
PRINT_ADV("ARM3_DEST")
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-148.7715, -1149.9026, 23.2067>>, TRUE)
START_GPS_MULTI_ROUTE(HUD_COLOUR_OBJECTIVE_ROUTE, TRUE)
ADD_POINT_TO_GPS_MULTI_ROUTE(<<-273.014679, -1140.789917, 22.784359>>)
ADD_POINT_TO_GPS_MULTI_ROUTE(<<-148.7715, -1149.9026, 23.2067>>)
SET_GPS_MULTI_ROUTE_RENDER(TRUE)
//Audio
// PLAY_AUDIO(ARM3_RESTART_5)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
//Request Cutscene Variations - Armenian_3_mcs_6
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL))
ENDIF
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vMansion, <<40.0, 40.0, 40.0>>)
SET_DOOR_STATE(DOORNAME_M_MANSION_G1, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME) //Big metal garage door
ENDIF
IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael")
IF NOT HAS_LABEL_BEEN_TRIGGERED("PistolCock")
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2112958
IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") > 0.4
PLAY_SOUND_FRONTEND(-1, "ARM_3_PISTOL_COCK")
SET_LABEL_AS_TRIGGERED("PistolCock", TRUE)
ENDIF
ENDIF
IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") > 0.45
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_GUN")
SET_PED_IN_VEHICLE_CONTEXT(PLAYER_PED_ID(), GET_HASH_KEY("MISS_ARMENIAN3_FRANKLIN_TENSE"))
SET_VEHICLE_EXTRA(vehCar, 5, TRUE)
//PLAY_SOUND_FRONTEND(-1, "ARM_3_PISTOL_COCK")
//Audio
PLAY_AUDIO(ARM3_MIC)
ENDIF
CREATE_CONVERSATION_ADV("ARM3_GUN")
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_GUN")
AND NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_GUNA")
AND NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_GUNB")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF ABSF(GET_ENTITY_SPEED(vehCar)) >= 1.0
CREATE_CONVERSATION_ADV("ARM3_GUNA")
ELSE
CREATE_CONVERSATION_ADV("ARM3_GUNB")
ENDIF
ENDIF
ENDIF
IF (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") > 0.57)
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop2_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop3_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop4_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop5_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop6_michael")
IF (HAS_LABEL_BEEN_TRIGGERED("ARM3_GUNA")
OR HAS_LABEL_BEEN_TRIGGERED("ARM3_GUNB"))
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF (NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<-289.8, -1141.7, 67.078789>>, 90.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<-101.7, -1383.3, 73.342819>>, 90.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<81.4, -1129.5, 73.334045>>, 90.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<-22.4, -914.9, 72.966431>>, 90.0))
AND NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_STOP")
CREATE_CONVERSATION_ADV("ARM3_DRIV")
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_INCAR")
IF IS_FOLLOW_VEHICLE_CAM_ACTIVE()
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(), TRUE)
VEHICLE_ZOOM_LEVEL tempZoomLevel = GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()
IF ((tempZoomLevel = VEHICLE_ZOOM_LEVEL_NEAR)
OR (tempZoomLevel = VEHICLE_ZOOM_LEVEL_MEDIUM)
OR (tempZoomLevel = VEHICLE_ZOOM_LEVEL_FAR))
AND NOT IS_GAMEPLAY_CAM_LOOKING_BEHIND()
SET_CINEMATIC_BUTTON_ACTIVE(FALSE)
PRINT_HELP_ADV("ARM3HLP_INCAR")
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
// IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael")
// AND ((bPlayerExitCar = TRUE
// AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") >= 0.31
// OR GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") >= 0.4) //0.31
// AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") <= 0.55) //0.47)
// IF ABSF(GET_ENTITY_SPEED(vehCar)) >= 5.0
// IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_VEHICLE_DRIVE_WANDER) != PERFORMING_TASK
// TASK_VEHICLE_DRIVE_WANDER(PLAYER_PED_ID(), vehCar, 20.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS)
// ENDIF
// ENDIF
// ELSE
// IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_VEHICLE_DRIVE_WANDER) = PERFORMING_TASK
// CLEAR_PED_TASKS(PLAYER_PED_ID())
// ENDIF
// ENDIF
BOOL bHintActive
IF NOT bHintCamFrameDelay
AND SHOULD_CONTROL_CHASE_HINT_CAM(localChaseHintCamStruct)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM3HLP_INCAR")
SAFE_CLEAR_HELP()
ENDIF
bHintActive = TRUE
ENDIF
IF IS_CUSTOM_MENU_ON_SCREEN()
bHintCamFrameDelay = TRUE
ELSE
bHintCamFrameDelay = FALSE
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_GUN")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael")
IF NOT IS_PHONE_ONSCREEN()
AND bHintActive
// OR (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael")
// AND ((bPlayerExitCar = TRUE
// AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") >= 0.31
// OR GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") >= 0.4) //0.31
// AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") <= 0.55)) //0.47))
bOverHoodCinematicCam = TRUE
// IF SHOULD_CONTROL_CHASE_HINT_CAM(localChaseHintCamStruct)
OVER_HOOD_CINEMATIC_CAM()
// ENDIF
ELSE
bOverHoodCinematicCam = FALSE
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_GUN")
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
AND IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar)
SAFE_REMOVE_BLIP(blipFranklin)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
AND IS_GAMEPLAY_CAM_RENDERING()
IF NOT DOES_BLIP_EXIST(blipDestination)
CLEAR_PRINTS()
PRINT_ADV("ARM3_TAKE", DEFAULT_GOD_TEXT_TIME, FALSE)
SAFE_REMOVE_BLIP(blipCar)
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-148.7715, -1149.9026, 23.2067>>, TRUE)
START_GPS_MULTI_ROUTE(HUD_COLOUR_OBJECTIVE_ROUTE, TRUE)
ADD_POINT_TO_GPS_MULTI_ROUTE(<<-273.014679, -1140.789917, 22.784359>>)
ADD_POINT_TO_GPS_MULTI_ROUTE(<<-148.7715, -1149.9026, 23.2067>>)
SET_GPS_MULTI_ROUTE_RENDER(TRUE)
ENDIF
ENDIF
ELSE
IF NOT DOES_BLIP_EXIST(blipCar)
CLEAR_PRINTS()
PRINT_ADV("ARM3_CAR2")
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE)
ENDIF
ENDIF
ENDIF
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
AND IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar)
IF NOT HAS_LABEL_BEEN_TRIGGERED("Destination1")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination2")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination3")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination4")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<-289.8, -1141.7, 67.078789>>, 90.0)
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
CREATE_CONVERSATION_ADV("ARM3_STOP")
ENDIF
SET_LABEL_AS_TRIGGERED("Destination1", TRUE)
ENDIF
ELIF HAS_LABEL_BEEN_TRIGGERED("Destination1")
IF HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND (BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehCar))
//OR GET_ENTITY_SPEED(vehCar) < 1.0)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
// WAIT_WITH_DEATH_CHECKS(750)
//
// WHILE IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
// OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
//
// ADVANCE_STAGE()
// bug 2006108
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
ADVANCE_STAGE()
ENDIF
ENDIF
//<<-148.7715, -1149.9026, 23.2067>>, 271.8071
IF NOT HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND IS_ENTITY_AT_COORD(vehCar, <<-148.7715, -1149.9026, 23.2067>>, <<3.0, 3.0, LOCATE_SIZE_HEIGHT>>, TRUE)
AND IS_ENTITY_UPRIGHT(vehCar)
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
IF NOT DOES_BLIP_EXIST(blipDestination)
CLEAR_GPS_MULTI_ROUTE()
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-148.7715, -1149.9026, 23.2067>>, TRUE)
ENDIF
SET_LABEL_AS_TRIGGERED("HaltVehicle", TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("Destination1")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination2")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination3")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination4")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<-101.7, -1383.3, 73.342819>>, 90.0)
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
CLEAR_GPS_MULTI_ROUTE()
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-91.7239, -1180.3030, 25.3327>>, TRUE)
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
CREATE_CONVERSATION_ADV("ARM3_STOP")
ENDIF
SET_LABEL_AS_TRIGGERED("Destination2", TRUE)
ENDIF
ELIF HAS_LABEL_BEEN_TRIGGERED("Destination2")
IF HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND (BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehCar))
//OR GET_ENTITY_SPEED(vehCar) < 1.0)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
// WAIT_WITH_DEATH_CHECKS(750)
//
// WHILE IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
// OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
//
// ADVANCE_STAGE()
// bug 2006108
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
ADVANCE_STAGE()
ENDIF
ENDIF
//<<-91.7239, -1180.3030, 25.3327>>, 3.5979
IF NOT HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND IS_ENTITY_AT_COORD(vehCar, <<-91.7239, -1180.3030, 25.3327>>, <<3.0, 3.0, LOCATE_SIZE_HEIGHT>>, TRUE)
AND IS_ENTITY_UPRIGHT(vehCar)
SET_LABEL_AS_TRIGGERED("HaltVehicle", TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("Destination1")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination2")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination3")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination4")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<81.4, -1129.5, 73.334045>>, 90.0)
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
CLEAR_GPS_MULTI_ROUTE()
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-64.8446, -1130.0518, 24.7219>>, TRUE)
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
CREATE_CONVERSATION_ADV("ARM3_STOP")
ENDIF
SET_LABEL_AS_TRIGGERED("Destination3", TRUE)
ENDIF
ELIF HAS_LABEL_BEEN_TRIGGERED("Destination3")
IF HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND (BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehCar))
//OR GET_ENTITY_SPEED(vehCar) < 1.0)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
// WAIT_WITH_DEATH_CHECKS(750)
//
// WHILE IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
// OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
//
// ADVANCE_STAGE()
// bug 2006108
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
ADVANCE_STAGE()
ENDIF
ENDIF
//<<-64.8446, -1130.0518, 24.7219>>, 92.7692
IF NOT HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND IS_ENTITY_AT_COORD(vehCar, <<-64.8446, -1130.0518, 24.7219>>, <<3.0, 3.0, LOCATE_SIZE_HEIGHT>>, TRUE)
AND IS_ENTITY_UPRIGHT(vehCar)
SET_LABEL_AS_TRIGGERED("HaltVehicle", TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("Destination1")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination2")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination3")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination4")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-97.467453, -1140.700806, 19.820740>>, <<-22.4, -914.9, 72.966431>>, 90.0)
SET_GPS_MULTI_ROUTE_RENDER(FALSE)
CLEAR_GPS_MULTI_ROUTE()
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-97.2467, -1087.5890, 25.2988>>, TRUE)
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
CREATE_CONVERSATION_ADV("ARM3_STOP")
ENDIF
SET_LABEL_AS_TRIGGERED("Destination4", TRUE)
ENDIF
ELIF HAS_LABEL_BEEN_TRIGGERED("Destination4")
IF HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND (BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehCar))
//OR GET_ENTITY_SPEED(vehCar) < 1.0)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
// WAIT_WITH_DEATH_CHECKS(750)
//
// WHILE IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
// OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
//
// ADVANCE_STAGE()
// bug 2006108
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_STOP")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
ADVANCE_STAGE()
ENDIF
ENDIF
//<<-97.2467, -1087.5890, 25.2988>>, 161.1787
IF NOT HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
AND IS_ENTITY_AT_COORD(vehCar, <<-97.2467, -1087.5890, 25.2988>>, <<3.0, 3.0, LOCATE_SIZE_HEIGHT>>, TRUE, TRUE, TM_IN_VEHICLE)
AND IS_ENTITY_UPRIGHT(vehCar)
SET_LABEL_AS_TRIGGERED("HaltVehicle", TRUE)
ENDIF
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(objGlass)
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-59.80, -1098.78, 24.92>>, <<100.0, 100.0, 50.0>>)
objGlass = CREATE_OBJECT_NO_OFFSET(PROP_SHOWROOM_GLASS_1B, <<-59.8700, -1098.8400, 27.20>>) //objGlass = GET_CLOSEST_OBJECT_OF_TYPE(<<-59.80, -1098.78, 24.92>>, 1.0, PROP_SHOWROOM_GLASS_1B)
SET_ENTITY_ROTATION(objGlass, <<0.0, 0.0, 121.5>>)
FREEZE_ENTITY_POSITION(objGlass, TRUE)
ENDIF
ENDIF
//Disable Player Movement
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ATTACK)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ATTACK2)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_AIM) //Until driveby control mapping is fixed
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON)
//Fail Timer
IF GET_GAME_TIMER() > iFailTimer
IF HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_7")
IF IS_ENTRY_POINT_FOR_SEAT_CLEAR(PLAYER_PED(CHAR_MICHAEL), vehCar, VS_BACK_RIGHT)
WHILE NOT BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehCar, 10.0, 10)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
INTERIOR_INSTANCE_INDEX intCurrent = GET_INTERIOR_FROM_ENTITY(vehCar)
ENTITY_INDEX hitEntity
VECTOR vTempMin
VECTOR vTempMax
VECTOR vHitPos
VECTOR vHitNorm
INT iReturnValue = -1
//Now run a shapetest to check if the vehicle will collide with any game objects
GET_MODEL_DIMENSIONS(BJXL, vTempMin, vTempMax)
PRINTLN("MODEL_DIMENSIONS(BJXL) = ", vTempMin, ", ", vTempMax)
IF shapeTestIndex = NULL
PRINTLN("shapeTestIndex = NULL")
shapeTestIndex = START_SHAPE_TEST_BOX(GET_ENTITY_COORDS(vehCar), vTempMax - vTempMin, GET_ENTITY_ROTATION(vehCar), DEFAULT, SCRIPT_INCLUDE_VEHICLE | SCRIPT_INCLUDE_OBJECT | SCRIPT_INCLUDE_FOLIAGE | SCRIPT_INCLUDE_RAGDOLL | SCRIPT_INCLUDE_GLASS, vehCar)
ENDIF
IF shapeTestIndex != NULL
PRINTLN("shapeTestIndex != NULL")
SHAPETEST_STATUS shapeTestResult
shapeTestResult = GET_SHAPE_TEST_RESULT(shapeTestIndex, iReturnValue, vHitPos, vHitNorm, hitEntity)
#IF IS_DEBUG_BUILD
IF shapeTestResult = SHAPETEST_STATUS_RESULTS_NOTREADY
PRINTLN("shapeTestResult = SHAPETEST_STATUS_RESULTS_NOTREADY")
ENDIF
IF shapeTestResult = SHAPETEST_STATUS_NONEXISTENT
PRINTLN("shapeTestResult = SHAPETEST_STATUS_NONEXISTENT")
ENDIF
#ENDIF
IF shapeTestResult = SHAPETEST_STATUS_RESULTS_READY
PRINTLN("shapeTestResult = SHAPETEST_STATUS_RESULTS_READY")
shapeTestIndex = NULL
ENDIF
PRINTLN("iReturnValue = ", iReturnValue)
IF shapeTestResult != SHAPETEST_STATUS_RESULTS_NOTREADY
IF iReturnValue < 1
AND IS_ENTITY_UPRIGHT(vehCar, 90)
AND NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-52.025787, -1095.310791, 32.230316>>, <<50.0, 50.0, 8.0>>)
AND NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-148.7715, -1149.9026, 23.2067>>, <<20.0, 20.0, 8.0>>)
AND NOT (intCurrent != NULL AND GET_INTERIOR_GROUP_ID(intCurrent) = 1)
REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(vehCar, "Franklins_Car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
//SET_CUTSCENE_TRIGGER_AREA(VECTOR_ZERO, 0.0, GET_ENTITY_HEADING(vehCar), 0.0)
SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE)
//START_CUTSCENE_AT_COORDS(GET_ENTITY_COORDS(vehCar))
START_CUTSCENE()
IF NOT IS_ENTITY_UPRIGHT(vehCar, 45)
SET_VEHICLE_ON_GROUND_PROPERLY(vehCar)
ENDIF
SET_CUTSCENE_ORIGIN_AND_ORIENTATION(GET_ENTITY_COORDS(vehCar), GET_ENTITY_ROTATION(vehCar), 0)
WAIT_WITH_DEATH_CHECKS(0)
SET_CUTSCENE_CAN_BE_SKIPPED(FALSE)
SAFE_DELETE_OBJECT(objGun)
WHILE NOT HAS_CUTSCENE_FINISHED()
IF GET_CUTSCENE_TIME() >= 18000 - (FAIL_EFFECT_TIME + FAIL_OUT_EFFECT_TIME) - (100)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
eMissionFail = failLeftRoute
missionFailed()
ENDIF
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
eMissionFail = failLeftRoute
missionFailed()
ELSE
eMissionFail = failLeftRoute
missionFailed()
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF HAS_CUTSCENE_LOADED()
REMOVE_CUTSCENE()
ELSE
REQUEST_CUTSCENE("Armenian_3_mcs_7")
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehCar)
AND NOT IS_ENTITY_DEAD(vehCar)
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
AND NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
IF NOT IS_PED_SITTING_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar)
eMissionFail = failCarDestroyed
missionFailed()
ENDIF
ENDIF
ENDIF
//Bonnet Camera
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
//bOverHoodCinematicCam = FALSE
IF NOT HAS_THIS_CUTSCENE_LOADED("Armenian_3_mcs_6")
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
ENDIF
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_DRIVE_TO_DEALERSHIP")
STOP_AUDIO_SCENE("ARM_3_DRIVE_TO_DEALERSHIP")
ENDIF
//Phone
DISABLE_CELLPHONE(FALSE)
IF DOES_CAM_EXIST(camCinematic)
IF IS_CAM_RENDERING(camCinematic)
//RENDER_SCRIPT_CAMS(FALSE, FALSE)
ENABLE_SPECIAL_ABILITY(PLAYER_ID(), TRUE)
ENDIF
ENDIF
// CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE(1.0)
// CASCADE_SHADOWS_INIT_SESSION()
// CASCADE_SHADOWS_ENABLE_FREEZER(TRUE)
//
// IF GET_TIMECYCLE_MODIFIER_INDEX() != -1
// CLEAR_TIMECYCLE_MODIFIER()
// ENDIF
//
// SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
SET_CINEMATIC_BUTTON_ACTIVE(TRUE)
SET_VEHICLE_EXTRA(vehCar, 5, TRUE)
SAFE_REMOVE_BLIP(blipCar)
SAFE_REMOVE_BLIP(blipFranklin)
CLEAR_GPS_MULTI_ROUTE()
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
PROC CutsceneArrive()
IF INIT_STAGE()
//Player Control
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
//Cutscene
REQUEST_CUTSCENE("Armenian_3_mcs_6")
// CREATE_CONVERSATION_ADV("ARM3_ARIV")
//Audio
PLAY_AUDIO(ARM3_CS)
//Bonnet Camera
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
IF SKIPPED_STAGE()
//Set Positions
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehCar)
IF DOES_ENTITY_EXIST(vehCar) AND NOT IS_ENTITY_DEAD(vehCar)
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_LOCKED_PLAYER_INSIDE)
SET_VEHICLE_POSITION(vehCar, <<-148.7715, -1149.9026, 23.2067>>, 271.8071)
ENDIF
//Load Scene
IF NOT bReplaySkip
LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID()))
ENDIF
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Audio
PLAY_AUDIO(ARM3_RESTART_6)
//Fade In
// IF IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_IN(500)
// ENDIF
ENDIF
ELSE
//Request Cutscene Variations - Armenian_3_mcs_6
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL))
ENDIF
IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY()
CLEAR_PRINTS()
ADVANCE_STAGE()
ENDIF
SWITCH iCutsceneStage
CASE 0
IF NOT IS_NEW_LOAD_SCENE_ACTIVE()
NEW_LOAD_SCENE_START_SPHERE(GET_ENTITY_COORDS(vehCar), 200.0)
ENDIF
IF HAS_THIS_CUTSCENE_LOADED_WITH_FAILSAFE("Armenian_3_mcs_6")
IF DOES_CAM_EXIST(camCinematic)
DETACH_CAM(camCinematic)
ENDIF
VECTOR vCutsceneCoords
FLOAT fCutsceneHeading
REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "Franklin", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, DEFAULT, CEO_PRESERVE_HAIR_SCALE | CEO_INSTANT_HAIR_SCALE_SETUP)
REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, DEFAULT, CEO_PRESERVE_HAIR_SCALE | CEO_INSTANT_HAIR_SCALE_SETUP)
REGISTER_ENTITY_FOR_CUTSCENE(vehCar, "Jimmys_Car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
//<<-148.7715, -1149.9026, 23.2067>>, 271.8071
//IF IS_ENTITY_AT_COORD(vehCar, <<-148.7715, -1149.9026, 23.2067>>, <<3.0, 3.0, 3.0>>)
vCutsceneCoords = <<-148.7715, -1149.9026, 23.2067>>
fCutsceneHeading = 271.8071
//ENDIF
//<<-91.7239, -1180.3030, 25.3327>>, 3.5979
IF IS_ENTITY_AT_COORD(vehCar, <<-91.7239, -1180.3030, 25.3327>>, <<3.0, 3.0, 3.0>>)
vCutsceneCoords = <<-91.7239, -1180.3030, 25.3327>>
fCutsceneHeading = 3.5979
ENDIF
//<<-64.8446, -1130.0518, 24.7219>>, 92.7692
IF IS_ENTITY_AT_COORD(vehCar, <<-64.8446, -1130.0518, 24.7219>>, <<3.0, 3.0, 3.0>>)
vCutsceneCoords = <<-64.8446, -1130.0518, 24.7219>>
fCutsceneHeading = 92.7692
ENDIF
//<<-97.2467, -1087.5890, 25.2988>>, 161.1787
IF IS_ENTITY_AT_COORD(vehCar, <<-97.2467, -1087.5890, 25.2988>>, <<3.0, 3.0, 3.0>>)
vCutsceneCoords = <<-97.2467, -1087.5890, 25.2988>>
fCutsceneHeading = 161.1787
ENDIF
PRINTLN("vCutsceneCoords = <<", vCutsceneCoords.X, ", ", vCutsceneCoords.Y, ", ", vCutsceneCoords.Z, ">>")
PRINTLN("fCutsceneHeading = ", fCutsceneHeading)
SET_CUTSCENE_TRIGGER_AREA(VECTOR_ZERO, 0.0, fCutsceneHeading - 270.0, 0.0)
START_CUTSCENE_AT_COORDS(vCutsceneCoords + <<0.0, 0.0, 1.0>>, CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH)
WAIT_WITH_DEATH_CHECKS(0)
// --- Bug 1871015
bOverHoodCinematicCam = FALSE
OVER_HOOD_CINEMATIC_CAM()
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
//KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
// ---
CLEAR_AREA(GET_ENTITY_COORDS(vehCar), 25.0, TRUE)
SAFE_SET_ENTITY_VISIBLE(objGun, FALSE)
CLEAR_TEXT()
SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE(vehCar, TRUE)
//Radar
bRadar = FALSE
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
ADVANCE_CUTSCENE()
ENDIF
BREAK
CASE 1
//HD Vehicle
SET_FORCE_HD_VEHICLE(vehCar, TRUE)
//Hide Traffic
SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
//Rain Particle Effects
IF IS_CUTSCENE_PLAYING()
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_1")
SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE(vehCar, TRUE)
SET_LABEL_AS_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_1", TRUE)
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_2")
IF GET_CUTSCENE_TIME() > ROUND(4.799000 * 1000.0)
AND HAS_CUTSCENE_CUT_THIS_FRAME()
SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE(vehCar, FALSE)
SET_LABEL_AS_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_2", TRUE)
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_3")
IF GET_CUTSCENE_TIME() > ROUND(14.99900 * 1000.0)
AND HAS_CUTSCENE_CUT_THIS_FRAME()
SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE(vehCar, TRUE)
SET_LABEL_AS_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_3", TRUE)
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_4")
IF GET_CUTSCENE_TIME() > ROUND(17.165668 * 1000.0)
AND HAS_CUTSCENE_CUT_THIS_FRAME()
SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE(vehCar, FALSE)
SET_LABEL_AS_TRIGGERED("ARMENIAN_3_MCS_6_SHOT_4", TRUE)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin")
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehCar)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar)
SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar, VS_BACK_RIGHT)
ENDIF
IF NOT DOES_ENTITY_EXIST(objGun)
objGun = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL), vMichaelStart)
ENDIF
ATTACH_ENTITY_TO_ENTITY(objGun, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
// WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael")
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Jimmys_Car")
// //<<-148.7715, -1149.9026, 23.2067>>, 271.8071
// IF IS_ENTITY_AT_COORD(vehCar, <<-148.7715, -1149.9026, 23.2067>>, <<3.0, 3.0, 3.0>>)
// //SET_VEHICLE_POSITION(vehCar, <<-148.7509, -1149.9504, 23.2053>>, 271.7903)
// SET_ENTITY_COORDS_NO_OFFSET(vehCar, <<-148.7664, -1149.9998, 24.1124>>)
// SET_ENTITY_ROTATION(vehCar, <<3.3850, 2.9552, -88.1208>>)
// ENDIF
//
// //<<-91.7239, -1180.3030, 25.3327>>, 3.5979
// IF IS_ENTITY_AT_COORD(vehCar, <<-91.7239, -1180.3030, 25.3327>>, <<3.0, 3.0, 3.0>>)
// SET_VEHICLE_POSITION(vehCar, <<-91.7239, -1180.3030, 25.3327>>, 3.5979)
// ENDIF
//
// //<<-64.8446, -1130.0518, 24.7219>>, 92.7692
// IF IS_ENTITY_AT_COORD(vehCar, <<-64.8446, -1130.0518, 24.7219>>, <<3.0, 3.0, 3.0>>)
// SET_VEHICLE_POSITION(vehCar, <<-64.8446, -1130.0518, 24.7219>>, 92.7692)
// ENDIF
//
// //<<-97.2467, -1087.5890, 25.2988>>, 161.1787
// IF IS_ENTITY_AT_COORD(vehCar, <<-97.2467, -1087.5890, 25.2988>>, <<3.0, 3.0, 3.0>>)
// SET_VEHICLE_POSITION(vehCar, <<-97.2467, -1087.5890, 25.2988>>, 161.1787)
// ENDIF
SET_VEHICLE_ENGINE_ON(vehCar, TRUE, TRUE)
ACTIVATE_PHYSICS(vehCar)
SET_VEHICLE_ON_GROUND_PROPERLY(vehCar)
// SET_LABEL_AS_TRIGGERED("WheelCompression[vehCar](Armenian_3_mcs_6)", TRUE)
ENDIF
SET_VEHICLE_BRAKE_LIGHTS(vehCar, FALSE)
// IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehCar](Armenian_3_mcs_6)")
// SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehCar)
// ENDIF
IF CAN_SET_EXIT_STATE_FOR_CAMERA()
SET_GAMEPLAY_CAM_RELATIVE_HEADING(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-56.13, -1097.60, 25.16>>) - GET_ENTITY_HEADING(PLAYER_PED_ID()))
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Clear a path
VECTOR vPlayerCoords
vPlayerCoords = GET_ENTITY_COORDS(vehCar)
CLEAR_ANGLED_AREA_OF_VEHICLES(<<vPlayerCoords.X, vPlayerCoords.Y, 30.0>>, <<-55.8188, -1096.4149, 20.0>>, 30.0)
ENDIF
IF HAS_CUTSCENE_FINISHED()
IF WAS_CUTSCENE_SKIPPED()
//<<-148.7715, -1149.9026, 23.2067>>, 271.8071
IF IS_ENTITY_AT_COORD(vehCar, <<-148.7715, -1149.9026, 23.2067>>, <<3.0, 3.0, 3.0>>)
//SET_VEHICLE_POSITION(vehCar, <<-148.7509, -1149.9504, 23.2053>>, 271.7903)
SET_ENTITY_COORDS_NO_OFFSET(vehCar, <<-148.7664, -1149.9998, 24.1124>>)
SET_ENTITY_ROTATION(vehCar, <<3.3850, 2.9552, -88.1208>>)
ENDIF
//<<-91.7239, -1180.3030, 25.3327>>, 3.5979
IF IS_ENTITY_AT_COORD(vehCar, <<-91.7239, -1180.3030, 25.3327>>, <<3.0, 3.0, 3.0>>)
SET_VEHICLE_POSITION(vehCar, <<-91.7239, -1180.3030, 25.3327>>, 3.5979)
ENDIF
//<<-64.8446, -1130.0518, 24.7219>>, 92.7692
IF IS_ENTITY_AT_COORD(vehCar, <<-64.8446, -1130.0518, 24.7219>>, <<3.0, 3.0, 3.0>>)
SET_VEHICLE_POSITION(vehCar, <<-64.8446, -1130.0518, 24.7219>>, 92.7692)
ENDIF
//<<-97.2467, -1087.5890, 25.2988>>, 161.1787
IF IS_ENTITY_AT_COORD(vehCar, <<-97.2467, -1087.5890, 25.2988>>, <<3.0, 3.0, 3.0>>)
SET_VEHICLE_POSITION(vehCar, <<-97.2467, -1087.5890, 25.2988>>, 161.1787)
ENDIF
ENDIF
SET_ROADS_IN_ANGLED_AREA(<<-57.644516, -1097.634033, 35.422352>>, <<-145.066711, -1156.563843, 23.026037>>, 20.0, FALSE, FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
ADVANCE_STAGE()
ENDIF
BREAK
ENDSWITCH
//Bonnet Camera
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
ENDIF
IF CLEANUP_STAGE()
SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE(vehCar, FALSE)
REMOVE_CUTSCENE()
REPLAY_STOP_EVENT()
WHILE HAS_CUTSCENE_LOADED()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF IS_NEW_LOAD_SCENE_ACTIVE()
NEW_LOAD_SCENE_STOP()
ENDIF
IF NOT IS_PED_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar)
SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar, VS_BACK_RIGHT)
ENDIF
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehCar)
ENDIF
//SET_VEHICLE_ON_GROUND_PROPERLY(vehCar)
CLEAR_TEXT()
SAFE_SET_ENTITY_VISIBLE(objGun, TRUE)
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar)
SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE(vehCar)
ENDIF
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
PROC RammingSpeed()
IF INIT_STAGE()
//Checkpoint
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayDealer), "stageRammingSpeed")
bCameraViewToggle = FALSE
//Phone
DISABLE_CELLPHONE(TRUE)
//Reset
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
//Interior
INTERIOR_INSTANCE_INDEX interiorID = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-49.9775, -1097.2866, 25.4223>>, "v_carshowroom")
IF IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_beforeMission")
DEACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_beforeMission")
ENDIF
IF IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_afterMissionA")
DEACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_afterMissionA")
ENDIF
IF IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_afterMissionB")
DEACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_afterMissionB")
ENDIF
IF NOT IS_INTERIOR_ENTITY_SET_ACTIVE(interiorID, "csr_inMission")
ACTIVATE_INTERIOR_ENTITY_SET(interiorID, "csr_inMission")
ENDIF
SET_BUILDING_STATE(BUILDINGNAME_ES_CAR_SHOWROOOM_SHUTTERS, BUILDINGSTATE_DESTROYED) // Close the rear shutters
//Player Control
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
//Dialogue
STOP_PED_SPEAKING(PLAYER_PED(CHAR_FRANKLIN), TRUE)
STOP_PED_SPEAKING(PLAYER_PED(CHAR_MICHAEL), TRUE)
//Driving Anims
//Anim Clip Set
REQUEST_CLIP_SET("clipset@missarmenian3@franklin_driving")
WHILE NOT HAS_CLIP_SET_LOADED("clipset@missarmenian3@franklin_driving")
REQUEST_CLIP_SET("clipset@missarmenian3@franklin_driving")
OVER_HOOD_CINEMATIC_CAM()
WAIT_WITH_DEATH_CHECKS(0) #IF IS_DEBUG_BUILD PRINTLN("LOADING CLIP SET: clipset@missarmenian3@franklin_driving...") #ENDIF
ENDWHILE
SET_PED_IN_VEHICLE_CONTEXT(PLAYER_PED_ID(), GET_HASH_KEY("MISS_ARMENIAN3_FRANKLIN_TENSE"))
bRadar = TRUE
SET_ENTITY_PROOFS(PLAYER_PED(CHAR_MICHAEL), TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_MICHAEL), PCF_RunFromFiresAndExplosions, FALSE)
SET_PED_CONFIG_FLAG(PLAYER_PED(CHAR_MICHAEL), PCF_DisableExplosionReactions, TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(PLAYER_PED(CHAR_MICHAEL), TRUE)
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
//Cam
SET_CINEMATIC_BUTTON_ACTIVE(FALSE)
//Car
FORCE_USE_AUDIO_GAME_OBJECT(vehCar, "BJXL_ARMENIAN_3")
SET_VEHICLE_ENGINE_ON(vehCar, TRUE, TRUE)
//Gun Prop
IF NOT DOES_ENTITY_EXIST(objGun)
objGun = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL), vMichaelStart)
ENDIF
ATTACH_ENTITY_TO_ENTITY(objGun, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael")
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael", NORMAL_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ENDIF
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL")
CLEAR_TEXT()
SET_LABEL_AS_TRIGGERED("ARM3_GUN", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNA", TRUE)
SET_LABEL_AS_TRIGGERED("ARM3_GUNB", TRUE)
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_LOCATION(blipDestination, vDealership, FALSE)
iFailTimer = GET_GAME_TIMER() + 120000
//Cutscene
REQUEST_CUTSCENE("Armenian_3_mcs_8")
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_RAM_DEALERSHIP")
START_AUDIO_SCENE("ARM_3_RAM_DEALERSHIP")
ENDIF
//Audio
LOAD_AUDIO(ARM3_HIT)
PLAY_AUDIO(ARM3_SPEED)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
SET_VEHICLE_BRAKE_LIGHTS(vehCar, FALSE)
//Vehicle Zoom Level
IF NOT bZoomLevel
vehicleZoomLevel = GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()
camViewModeOnFoot = GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)
PRINTLN("Store Zoom Level GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL() = ", ENUM_TO_INT(GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()))
PRINTLN("Store Zoom Level GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = ", ENUM_TO_INT(GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)))
bZoomLevel = TRUE
ENDIF
//Bonnet Camera
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
//Camera
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
IF SKIPPED_STAGE()
//Audio
PLAY_AUDIO(ARM3_RESTART_7)
//Radio
SET_VEHICLE_RADIO_ENABLED(vehCar, FALSE)
SET_USER_RADIO_CONTROL_ENABLED(FALSE)
//Set Positions
CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
SET_PED_INTO_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar, VS_BACK_RIGHT)
IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael")
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael", NORMAL_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ENDIF
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehCar)
IF DOES_ENTITY_EXIST(vehCar) AND NOT IS_ENTITY_DEAD(vehCar)
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_LOCKED_PLAYER_INSIDE)
SET_VEHICLE_POSITION(vehCar, <<-72.6144, -1106.4908, 25.0423>>, 299.8838)
ENDIF
//Load Scene
CLEAR_AREA(<<-59.80, -1098.78, 24.92>>, 100.0, TRUE)
IF NOT bReplaySkip
LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID()))
ENDIF
REFRESH_INTERIOR(interiorID)
bPinnedGarage = FALSE //REFRESH_INTERIOR unpins the interior
SET_GAMEPLAY_CAM_RELATIVE_HEADING(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-56.13, -1097.60, 25.16>>) - GET_ENTITY_HEADING(PLAYER_PED_ID()))
//Rayfire
rfShowroomCrash1 = GET_RAYFIRE_MAP_OBJECT(<<-56.13, -1097.60, 25.16>>, 10.0, "DES_Showroom")
WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
rfShowroomCrash1 = GET_RAYFIRE_MAP_OBJECT(<<-56.13, -1097.60, 25.16>>, 10.0, "DES_Showroom")
PRINTLN("Getting Rayfire Map Object - DES_Showroom")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1) != RFMO_STATE_START
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1, RFMO_STATE_STARTING)
ENDIF
ENDIF
//Position player again (1st time is so rayfire loads)
SET_ENTITY_COORDS(vehCar, <<-148.7664, -1149.9998, 23.1124>>)
SET_ENTITY_ROTATION(vehCar, <<3.3850, 2.9552, -88.1208>>)
//Clear a path
VECTOR vPlayerCoords = GET_ENTITY_COORDS(vehCar)
CLEAR_AREA(vPlayerCoords, 15.0, TRUE)
CLEAR_ANGLED_AREA_OF_VEHICLES(<<vPlayerCoords.X, vPlayerCoords.Y, 30.0>>, <<-55.8188, -1096.4149, 20.0>>, 20.0)
SET_ROADS_IN_ANGLED_AREA(<<-57.644516, -1097.634033, 35.422352>>, <<-145.066711, -1156.563843, 23.026037>>, 20.0, FALSE, FALSE)
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-56.13, -1097.60, 25.16>>) - GET_ENTITY_HEADING(PLAYER_PED_ID()))
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10.0)
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ELSE
IF TIMERA() < 100
SET_VEHICLE_BRAKE_LIGHTS(vehCar, FALSE)
ENDIF
PRINT_ADV("ARM3_RAM1", 4000)
//Request Cutscene Variations - Armenian_3_mcs_8
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL))
//SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Siemon", pedOwner)
ENDIF
// IF NOT IS_NEW_LOAD_SCENE_ACTIVE()
// NEW_LOAD_SCENE_START_SPHERE(<<-56.313320, -1096.538574, 27.307253>>, 25.0)
// ENDIF
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1) != RFMO_STATE_PRIMED
IF NOT HAS_LABEL_BEEN_TRIGGERED("rfShowroomCrash1")
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1, RFMO_STATE_PRIMING)
SET_LABEL_AS_TRIGGERED("rfShowroomCrash1", TRUE)
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("rfShowroomCrash1", FALSE)
ENDIF
ELSE
rfShowroomCrash1 = GET_RAYFIRE_MAP_OBJECT(<<-56.13, -1097.60, 25.16>>, 10.0, "DES_Showroom")
PRINTLN("Getting Rayfire Map Object - DES_Showroom")
ENDIF
IF NOT DOES_ENTITY_EXIST(objGlass)
objGlass = CREATE_OBJECT_NO_OFFSET(PROP_SHOWROOM_GLASS_1B, <<-59.8700, -1098.8400, 27.20>>) //objGlass = GET_CLOSEST_OBJECT_OF_TYPE(<<-59.80, -1098.78, 24.92>>, 1.0, PROP_SHOWROOM_GLASS_1B)
SET_ENTITY_ROTATION(objGlass, <<0.0, 0.0, 121.5>>)
FREEZE_ENTITY_POSITION(objGlass, TRUE)
ENDIF
IF intGarage <> NULL
SET_INTERIOR_IN_USE(intGarage)
ENDIF
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-60.15, -1098.69, 25.44>>) < 100.0
AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF GET_GAME_TIMER() > iDialogueTimer
IF iDialogueStage = 0
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_RAM", "ARM3_RAM_1")
iDialogueStage++
ELIF iDialogueStage = 1
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_RAM", "ARM3_RAM_2")
iDialogueStage++
ELIF iDialogueStage = 2
PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV("ARM3_RAM", "ARM3_RAM_3")
iDialogueStage++
ENDIF
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(20000, 25000)
ENDIF
ENDIF
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
IF NOT DOES_BLIP_EXIST(blipDestination)
CLEAR_PRINTS()
PRINT_ADV("ARM3_RAM1", DEFAULT_GOD_TEXT_TIME, FALSE)
SAFE_REMOVE_BLIP(blipCar)
SAFE_ADD_BLIP_LOCATION(blipDestination, vDealership, FALSE)
ENDIF
ELSE
IF NOT DOES_BLIP_EXIST(blipCar)
CLEAR_PRINTS()
PRINT_ADV("ARM3_CAR2")
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE)
ENDIF
ENDIF
// VECTOR vVehicleRotation = GET_ENTITY_ROTATION_VELOCITY(vehCar)
// VECTOR vVehicleForwardVector = GET_ENTITY_FORWARD_VECTOR(vehCar)
// VECTOR vVehicleVelocity = GET_ENTITY_VELOCITY(vehCar)
// vVehicleVelocity = NORMALISE_VECTOR(vVehicleVelocity)
fDistLastFrame = fDistThisFrame
fDistThisFrame = GET_DISTANCE_BETWEEN_COORDS(<<-56.71602, -1097.16968, 25.42230>>, GET_ENTITY_COORDS(vehCar))
IF GET_ENTITY_SPEED(vehCar) > 5.0
SET_ENTITY_COLLISION(objGlass, FALSE)
ELSE
SET_ENTITY_COLLISION(objGlass, TRUE)
ENDIF
IF ((IS_POINT_IN_ANGLED_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<-1.0, 2.2, -0.25>>), <<-59.764771, -1098.798828, 25.422319>>, <<-53.614487, -1095.078979, 28.922344>>, 5.25)
OR IS_POINT_IN_ANGLED_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<1.0, 2.2, -0.25>>), <<-59.764771, -1098.798828, 25.422319>>, <<-53.614487, -1095.078979, 28.922344>>, 5.25)
OR IS_POINT_IN_ANGLED_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<-1.0, -2.3, -0.25>>), <<-59.764771, -1098.798828, 25.422319>>, <<-53.614487, -1095.078979, 28.922344>>, 5.25)
OR IS_POINT_IN_ANGLED_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<1.0, -2.3, -0.25>>), <<-59.764771, -1098.798828, 25.422319>>, <<-53.614487, -1095.078979, 28.922344>>, 5.25))
AND GET_ENTITY_SPEED(vehCar) > 5.0
AND fDistThisFrame < fDistLastFrame)
OR (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-32.008007, -1102.252197, 25.434353>>, <<-59.300301, -1092.674316, 29.434353>>, 15.0)
AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-61.387348, -1103.479004, 24.859724>>, <<-58.618919, -1095.799438, 29.434353>>, 10.0))
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
IF SAFE_START_CUTSCENE(10.0)
//LOD
SET_BUILDING_STATE(BUILDINGNAME_IPL_CAR_SHOWROOM_LOD_BOARD, BUILDINGSTATE_DESTROYED, FALSE)
//Audio
PLAY_AUDIO(ARM3_HIT)
//Rayfire
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1) = RFMO_STATE_PRIMED
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1, RFMO_STATE_START_ANIM) #IF IS_DEBUG_BUILD PRINTLN("Start anim on rayfire object rfShowroomCrash1") #ENDIF
ENDIF
#IF IS_DEBUG_BUILD ELSE
PRINTLN("Did not find rayfire object rfShowroomCrash1") #ENDIF
ENDIF
IF DOES_ENTITY_EXIST(objGlass)
SET_ENTITY_COORDS(objGlass, GET_ENTITY_COORDS(objGlass) - <<0.0, 0.0, 10.0>>)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("WindowSmashed")
SET_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN", "V_CARSHOWROOM_PS_WINDOW_BROKEN")
SET_LABEL_AS_TRIGGERED("WindowSmashed", TRUE)
ENDIF
//Sound
PLAY_SOUND_FRONTEND(-1, "ARM_3_CAR_GLASS_CRASH")
//Vibrate
SET_CONTROL_SHAKE(PLAYER_CONTROL, 500, 256)
INT iTimeOut = GET_GAME_TIMER() + 500
WHILE NOT IS_ENTITY_IN_ANGLED_AREA(vehCar, <<-54.038837, -1098.502319, 25.422327>>, <<-57.813641, -1091.971191, 28.422327>>, 4.0)
AND iTimeOut > GET_GAME_TIMER()
AND GET_ENTITY_SPEED(vehCar) > 1.0
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LR)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UD)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_BRAKE)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_MOVE_LR)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_MOVE_UD)
PRINTLN("Timeout: ", GET_GAME_TIMER(), "<", iTimeOut)
IF iTimeOut < GET_GAME_TIMER()
PRINTLN("Timed out Rayfire...")
ENDIF
//Bonnet Camera
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
ADVANCE_STAGE()
ENDIF
ENDIF
ELSE
//Cinematic Cam
CONTROL_COORD_CHASE_HINT_CAM_IN_VEHICLE(localChaseHintCamStruct, <<-55.2, -1095.8, 27.3>>, "ARM3HLP_WINDOW", HINTTYPE_VEHICLE_HIGH_ZOOM)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
BOOL bInputNextCameraPressed
bInputNextCameraPressed = FALSE
IF bCameraViewToggle
IF NOT IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
AND NOT IS_CUSTOM_MENU_ON_SCREEN() AND NOT IS_GAMEPLAY_HINT_ACTIVE()
bInputNextCameraPressed = TRUE
bCameraViewToggle = FALSE
ENDIF
IF IS_CUSTOM_MENU_ON_SCREEN() OR IS_GAMEPLAY_HINT_ACTIVE()
bCameraViewToggle = FALSE
ENDIF
ENDIF
IF IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
bCameraViewToggle = TRUE
ENDIF
IF bInputNextCameraPressed
PRINTLN("DISABLED_CONTROL_JUST_PRESSED(INPUT_NEXT_CAMERA)")
PRINTLN("vehicleZoomLevel=", vehicleZoomLevel)
PRINTLN("bVehicleZoomInOut=", bVehicleZoomInOut)
PRINTLN("------------------------------")
IF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_BONNET
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_MEDIUM)
ELIF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_NEAR
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_MEDIUM)
ELIF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_MEDIUM
IF bVehicleZoomInOut
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_FAR)
ELSE
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_NEAR)
ENDIF
bVehicleZoomInOut = !bVehicleZoomInOut
ELIF vehicleZoomLevel = VEHICLE_ZOOM_LEVEL_FAR
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(VEHICLE_ZOOM_LEVEL_MEDIUM)
ENDIF
vehicleZoomLevel = GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()
PRINTLN("vehicleZoomLevel=", vehicleZoomLevel)
PRINTLN("bVehicleZoomInOut=", bVehicleZoomInOut)
PRINTLN("------------------------------")
ENDIF
ENDIF
IF IS_GAMEPLAY_HINT_ACTIVE()
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_RAM_DEALERSHIP")
STOP_AUDIO_SCENE("ARM_3_RAM_DEALERSHIP")
ENDIF
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_WINDOW_FOCUS_CAM")
START_AUDIO_SCENE("ARM_3_WINDOW_FOCUS_CAM")
ENDIF
ELSE
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_RAM_DEALERSHIP")
START_AUDIO_SCENE("ARM_3_RAM_DEALERSHIP")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_WINDOW_FOCUS_CAM")
STOP_AUDIO_SCENE("ARM_3_WINDOW_FOCUS_CAM")
ENDIF
ENDIF
//Disable Player Movement
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ATTACK)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ATTACK2)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON)
//Bonnet Camera
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
//Fail Timer
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-52.025787, -1095.310791, 32.230316>>, <<28.0, 28.0, 8.0>>)
IF GET_GAME_TIMER() > iFailTimer
OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-60.15, -1098.69, 25.44>>) > 200.0
eMissionFail = failLeftRoute
missionFailed()
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehCar)
AND NOT IS_ENTITY_DEAD(vehCar)
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
AND NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
IF NOT IS_PED_SITTING_IN_VEHICLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], vehCar)
eMissionFail = failCarDestroyed
missionFailed()
ENDIF
ENDIF
ENDIF
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
KILL_CHASE_HINT_CAM(localChaseHintCamStruct)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_RAM_DEALERSHIP")
STOP_AUDIO_SCENE("ARM_3_RAM_DEALERSHIP")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_WINDOW_FOCUS_CAM")
STOP_AUDIO_SCENE("ARM_3_WINDOW_FOCUS_CAM")
ENDIF
SET_CINEMATIC_BUTTON_ACTIVE(TRUE)
IF DOES_CAM_EXIST(camCinematic)
SET_CAM_ACTIVE(camCinematic, FALSE)
RENDER_SCRIPT_CAMS(FALSE, FALSE)
ENDIF
//Camera
IF NOT DOES_CAM_EXIST(camMain)
camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
ENDIF
IF DOES_CAM_EXIST(camMain)
SET_CAM_ACTIVE(camMain, TRUE)
ENDIF
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
CLEAR_TEXT()
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehCar)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), vehCar)
ENDIF
//Anim Clip Set
REMOVE_CLIP_SET("clipset@missarmenian3@franklin_driving")
SAFE_REMOVE_BLIP(blipCar)
SAFE_REMOVE_BLIP(blipDestination)
SAFE_DELETE_OBJECT(objGlass)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
PROC CutsceneWindowSmash()
IF INIT_STAGE()
//Checkpoint
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayFight), "stageBeatDown", TRUE)
//Player Control
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_PREVENT_EVERYBODY_BACKOFF)
bRadar = FALSE
//Attached Gun
IF NOT DOES_ENTITY_EXIST(objGun)
objGun = CREATE_OBJECT(GET_WEAPONTYPE_MODEL(WEAPONTYPE_PISTOL), vMichaelStart)
ENDIF
ATTACH_ENTITY_TO_ENTITY(objGun, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
//Ped Owner
SAFE_DELETE_PED(pedOwner)
WHILE NOT CREATE_NPC_PED_ON_FOOT(pedOwner, CHAR_SIMEON, <<-56.4360, -1098.8176, 25.4345>>, 31.1490)
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
SET_PED_SUFFERS_CRITICAL_HITS(pedOwner, FALSE)
SET_ENTITY_HEALTH(pedOwner, 200 + 200)
SET_PED_MAX_HEALTH(pedOwner, 200 + 200)
TASK_LOOK_AT_ENTITY(pedOwner, vehCar, 3000)
SET_ENTITY_INVINCIBLE(pedOwner, TRUE)
SAFE_SET_ENTITY_VISIBLE(pedOwner, FALSE)
//Cleanup Owner
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_SIMEON))
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedOwner, "SIMEON")
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("WindowSmashed")
SET_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN", "V_CARSHOWROOM_PS_WINDOW_BROKEN")
SET_LABEL_AS_TRIGGERED("WindowSmashed", TRUE)
ENDIF
//Car
SET_VEHICLE_DAMAGE(vehCar, <<-0.84, 2.21, 0.22>>, 100.0, 400.0, TRUE)
SET_VEHICLE_DAMAGE(vehCar, <<0.67, 2.12, -0.06>>, 100.0, 400.0, TRUE)
SET_VEHICLE_DAMAGE(vehCar, <<0.05, 1.97, 0.2>>, 100.0, 400.0, TRUE)
SET_ENTITY_INVINCIBLE(vehCar, TRUE)
//Cutscene
REQUEST_CUTSCENE("Armenian_3_mcs_8", CUTSCENE_REQUESTED_FROM_Z_SKIP)
REPLAY_RECORD_BACK_FOR_TIME(4.0, 4.0)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
//Bonnet Camera
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
IF SKIPPED_STAGE()
//Set Positions
SET_PED_POSITION(PLAYER_PED_ID(), <<-56.13, -1097.60, 25.16>>, 0.0)
//Load Scene
IF NOT bReplaySkip
LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID()))
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-56.13, -1097.60, 25.16>>) - GET_ENTITY_HEADING(PLAYER_PED_ID()))
//Rayfire
rfShowroomCrash1 = GET_RAYFIRE_MAP_OBJECT(<<-56.13, -1097.60, 25.16>>, 10.0, "DES_Showroom")
WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
rfShowroomCrash1 = GET_RAYFIRE_MAP_OBJECT(<<-56.13, -1097.60, 25.16>>, 10.0, "DES_Showroom")
PRINTLN("Getting Rayfire Map Object - DES_Showroom")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1) != RFMO_STATE_END
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1, RFMO_STATE_ENDING)
ENDIF
ENDIF
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Audio
PLAY_AUDIO(ARM3_RESTART_8)
//Fade In
// IF IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_IN(500)
// ENDIF
ENDIF
ELSE
//Request Cutscene Variations - Armenian_3_mcs_8
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Franklin", PLAYER_PED(CHAR_FRANKLIN))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Siemon", pedOwner)
ENDIF
// BOOL bShapeTest
// SHAPETEST_INDEX shapeTest
// SHAPETEST_STATUS shapeTestStatus
// INT bShapeTestHitSomething
// VECTOR vShapeTestPos
// VECTOR vShapeTestNormal
// ENTITY_INDEX shapeTestEntityIndex
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_Complications")
SWITCH iCutsceneStage
CASE 0
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
// BOOL bReposition
//
// shapeTest = START_SHAPE_TEST_CAPSULE(GET_ENTITY_COORDS(vehCar), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<0.0, 2.5, 0.0>>), 0.5, DEFAULT, vehCar)
// PRINTLN("SHAPETEST[STARTING]")
//
// WHILE NOT bShapeTest
// shapeTestStatus = GET_SHAPE_TEST_RESULT(shapeTest, bShapeTestHitSomething, vShapeTestPos, vShapeTestNormal, shapeTestEntityIndex)
// PRINTLN("SHAPETEST[RUNNING]")
// IF shapeTestStatus != SHAPETEST_STATUS_RESULTS_NOTREADY
// IF shapeTestStatus = SHAPETEST_STATUS_RESULTS_READY
// PRINTLN("SHAPETEST[SHAPETEST_STATUS_RESULTS_READY]")
// ELIF shapeTestStatus = SHAPETEST_STATUS_NONEXISTENT
// PRINTLN("SHAPETEST[SHAPETEST_STATUS_NONEXISTENT]")
// ENDIF
// PRINTLN("SHAPETEST[HitSomething=", bShapeTestHitSomething, "]")
// PRINTLN("SHAPETEST[shapeTestEntityIndex=", DOES_ENTITY_EXIST(shapeTestEntityIndex), "]")
// IF bShapeTestHitSomething = 1
// OR DOES_ENTITY_EXIST(shapeTestEntityIndex)
// PRINTLN("SHAPETEST[TRUE]")
// bReposition = TRUE
// ENDIF
//
// bShapeTest = !bShapeTest
// ENDIF
//
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
//
// IF bReposition
SET_ENTITY_COORDS_NO_OFFSET(vehCar, <<-57.3905, -1097.3470, 26.5800>> + <<2.08, 1.23, 0.0>>)
SET_ENTITY_ROTATION(vehCar, <<-8.8082, 0.1836, -58.8950>>)
// ENDIF
//Michael Available
SET_PLAYER_PED_AVAILABLE(CHAR_MICHAEL, TRUE)
Set_Mission_Flow_Flag_State(FLOWFLAG_PLAYER_PED_INTRODUCED_M, TRUE)
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL)
TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE, TCF_CLEAR_TASK_INTERRUPT_CHECKS)
ENDIF
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
VECTOR scenePosition
VECTOR sceneRotation
CAMERA_INDEX sceneCamera
scenePosition = VECTOR_ZERO //<<-15.361, -1451.384, 31.547>>
sceneRotation = VECTOR_ZERO //<<0.0, 0.0, 131.278>>
sceneCamera = CREATE_CAM("DEFAULT_ANIMATED_CAMERA", TRUE)
sceneLeadInMCS8 = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneLeadInMCS8, vehCar, 0)
//TASK_SYNCHRONIZED_SCENE(PLAYER_PED_ID(), sceneLeadInMCS8, sAnimDictLeadInMCS8, "_leadin_mic", INSTANT_BLEND_IN, INSTANT_BLEND_OUT)
CLEAR_PED_TASKS(PLAYER_PED(CHAR_MICHAEL))
SET_PED_INTO_VEHICLE(PLAYER_PED(CHAR_MICHAEL), vehCar, VS_BACK_RIGHT)
TASK_PLAY_ANIM(PLAYER_PED(CHAR_MICHAEL), sAnimDictLeadInMCS8, "_leadin_mic", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
PLAY_FACIAL_ANIM(PLAYER_PED(CHAR_MICHAEL), "_leadin_Mic_facial", sAnimDictLeadInMCS8)
//TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], sceneLeadInMCS8, sAnimDictLeadInMCS8, "_leadin_fra", INSTANT_BLEND_IN, INSTANT_BLEND_OUT)
CLEAR_PED_TASKS(PLAYER_PED(CHAR_FRANKLIN))
CLEAR_PED_TASKS(PLAYER_PED(CHAR_FRANKLIN))
TASK_PLAY_ANIM(PLAYER_PED(CHAR_FRANKLIN), sAnimDictLeadInMCS8, "_leadin_fra", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
PLAY_FACIAL_ANIM(PLAYER_PED(CHAR_FRANKLIN), "_leadin_Fra_facial", sAnimDictLeadInMCS8)
PLAY_SYNCHRONIZED_CAM_ANIM(sceneCamera, sceneLeadInMCS8, "_leadin_cam", sAnimDictLeadInMCS8)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
CREATE_CONVERSATION_ADV("ARM3_SMASH1")
//Fade In
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ADVANCE_CUTSCENE()
BREAK
CASE 1
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehCar, 1.0, 1, 0.0)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
IF GET_ENTITY_UPRIGHT_VALUE(vehCar) < 0.1
APPLY_FORCE_TO_ENTITY(vehCar, APPLY_TYPE_ANGULAR_IMPULSE, -GET_ENTITY_ROTATION_VELOCITY(vehCar), VECTOR_ZERO, 0, TRUE, FALSE, FALSE)
ENDIF
IF (NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeadInMCS8)
OR (IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeadInMCS8)
AND (GET_SYNCHRONIZED_SCENE_PHASE(sceneLeadInMCS8) >= 0.7)))
AND HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
REPLAY_RECORD_BACK_FOR_TIME(6.0, 0.0, REPLAY_IMPORTANCE_HIGH)
REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN], "Franklin", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
//REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(pedOwner, "Siemon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(vehCar, "Jimmys_Car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_VEHICLE_DOOR_CONTROL(vehCar, SC_DOOR_FRONT_LEFT, DT_DOOR_INTACT, 0.0)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
START_CUTSCENE(CUTSCENE_PLAYER_TARGETABLE)
WAIT_WITH_DEATH_CHECKS(0)
SET_VEHICLE_ENGINE_ON(vehCar, FALSE, TRUE)
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SAFE_SET_ENTITY_VISIBLE(pedOwner, TRUE)
CLEAR_AREA(<<-36.6411, -1102.1914, 26.3443>>, 30.0, TRUE)
IF DOES_ENTITY_EXIST(vehGarage[0]) AND NOT IS_ENTITY_DEAD(vehGarage[0])
SET_VEHICLE_POSITION(vehGarage[0], <<-36.6411, -1102.1914, 26.3443>>, 154.2468)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[1]) AND NOT IS_ENTITY_DEAD(vehGarage[1])
SET_VEHICLE_POSITION(vehGarage[1], <<-41.7113, -1100.0415, 26.0671>>, 138.7067)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[2]) AND NOT IS_ENTITY_DEAD(vehGarage[2])
SET_VEHICLE_POSITION(vehGarage[2], <<-46.3951, -1097.7783, 26.3222>>, 108.3411)
ENDIF
IF DOES_ENTITY_EXIST(vehGarage[3]) AND NOT IS_ENTITY_DEAD(vehGarage[3])
SET_VEHICLE_POSITION(vehGarage[3], <<-50.0989, -1094.5341, 26.0671>>, 88.9621)
ENDIF
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
SAFE_DELETE_OBJECT(objGun)
ADVANCE_CUTSCENE()
ENDIF
BREAK
CASE 2
//Hide Peds
SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
// IF CAN_SET_EXIT_STATE_FOR_CAMERA()
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//
// IF NOT WAS_CUTSCENE_SKIPPED()
// IF NOT DOES_CAM_EXIST(camMain)
// camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
// ENDIF
//
// SET_CAM_PARAMS(camMain, GET_FINAL_RENDERED_CAM_COORD(), GET_FINAL_RENDERED_CAM_ROT(), GET_FINAL_RENDERED_CAM_FOV())
//
// RENDER_SCRIPT_CAMS(TRUE, FALSE)
// ENDIF
// ENDIF
IF DOES_ENTITY_EXIST(vehGarage[3])
AND NOT IS_ENTITY_DEAD(vehGarage[3])
SET_FORCE_HD_VEHICLE(vehGarage[3], TRUE)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("SwitchFX[Armenian_3_mcs_8]")
IF GET_CUTSCENE_TIME() > ROUND(12.866668 * 1000.0)
AND HAS_CUTSCENE_CUT_THIS_FRAME()
ANIMPOSTFX_PLAY("SwitchSceneMichael", 0, FALSE)
PLAY_SOUND_FRONTEND(-1, "Hit_1", "LONG_PLAYER_SWITCH_SOUNDS")
SET_LABEL_AS_TRIGGERED("SwitchFX[Armenian_3_mcs_8]", TRUE)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Siemon", IG_SIEMONYETARIAN)
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupEnemy)
SET_PED_AS_ENEMY(pedOwner, TRUE)
// SET_PED_RESET_FLAG(pedOwner, PRF_InstantBlendToAim, TRUE)
// TASK_COMBAT_PED(pedOwner, PLAYER_PED_ID())
TASK_PUT_PED_DIRECTLY_INTO_MELEE(pedOwner, PLAYER_PED(CHAR_MICHAEL), 0.5, -1.0, 0.0)
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedOwner)
SET_ENTITY_INVINCIBLE(pedOwner, FALSE)
PRINTLN("TASK_PUT_PED_DIRECTLY_INTO_MELEE")
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Jimmys_Car")
SET_VEHICLE_DOORS_SHUT(vehCar)
//Commented out for bug 1757182 FREEZE_ENTITY_POSITION(vehCar, TRUE)
// SET_LABEL_AS_TRIGGERED("WheelCompression[vehCar](Armenian_3_mcs_8)", TRUE)
ENDIF
// IF NOT HAS_LABEL_BEEN_TRIGGERED("WheelCompression[vehCar](Armenian_3_mcs_8)")
// SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehCar)
// ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
CLEAR_AREA_OF_COPS(<<-57.6017, -1095.0913, 25.4343>>, 500.0)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_CRUISING, FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER, FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE)
ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE)
SET_DISPATCH_COPS_FOR_PLAYER(PLAYER_ID(), FALSE)
SET_CREATE_RANDOM_COPS(FALSE)
//SET_PED_POSITION(PLAYER_PED_ID(), <<-57.6017, -1095.0913, 25.4343>>, 325.8112)
// TASK_COMBAT_PED(PLAYER_PED_ID(), pedOwner)
TASK_PUT_PED_DIRECTLY_INTO_MELEE(PLAYER_PED(CHAR_MICHAEL), pedOwner, 0.0, -1.0, 0.0)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED(CHAR_MICHAEL))
IF bZoomLevel
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(vehicleZoomLevel)
SET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT, camViewModeOnFoot)
PRINTLN("vehicleZoomLevel = ", ENUM_TO_INT(vehicleZoomLevel))
PRINTLN("camViewModeOnFoot = ", ENUM_TO_INT(camViewModeOnFoot))
bZoomLevel = FALSE
ENDIF
ENDIF
IF HAS_CUTSCENE_FINISHED()
// IF NOT WAS_CUTSCENE_SKIPPED()
// RENDER_SCRIPT_CAMS(FALSE, TRUE, DEFAULT_INTERP_TO_FROM_GAME, FALSE)
// ELSE
// RENDER_SCRIPT_CAMS(FALSE, FALSE)
// ENDIF
//
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
IF bZoomLevel
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(vehicleZoomLevel)
SET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT, camViewModeOnFoot)
PRINTLN("vehicleZoomLevel = ", ENUM_TO_INT(vehicleZoomLevel))
PRINTLN("camViewModeOnFoot = ", ENUM_TO_INT(camViewModeOnFoot))
bZoomLevel = FALSE
ENDIF
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
PRINT_ADV("ARM3_BEAT")
PRINT_HELP_ADV("ARM3HLP_LOCKON")
ADVANCE_CUTSCENE()
ENDIF
BREAK
CASE 3
IF IS_GAMEPLAY_CAM_RENDERING()
AND NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS()
ADVANCE_STAGE()
ENDIF
BREAK
ENDSWITCH
//Bonnet Camera
IF iCutsceneStage < 2
DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE()
ENDIF
SET_PED_RESET_FLAG(pedOwner, PRF_SuspendInitiatedMeleeActions, TRUE)
SET_PED_RESET_FLAG(pedOwner, PRF_ForcePedToStrafe, TRUE)
SET_PED_COMBAT_MOVEMENT(pedOwner, CM_STATIONARY)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON)
ENDIF
IF CLEANUP_STAGE()
REPLAY_STOP_EVENT()
//Cleanup (Blips, peds, variables etc.)
IF IS_NEW_LOAD_SCENE_ACTIVE()
NEW_LOAD_SCENE_STOP()
ENDIF
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar)
SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE(vehCar)
ENDIF
SET_ENTITY_INVINCIBLE(vehCar, FALSE)
#IF IS_DEBUG_BUILD
IF bAutoSkipping = TRUE
SET_VEHICLE_POSITION(vehCar, <<-55.7623, -1096.5033, 25.4766>>, 309.4087)
ENDIF
#ENDIF
SAFE_REMOVE_BLIP(blipOwner)
SAFE_DELETE_OBJECT(objGun)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
BOOL bUnreachable = FALSE
PROC BeatDown()
IF INIT_STAGE()
//Checkpoint
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayFight), "stageBeatDown", TRUE)
//Michael Available
SET_PLAYER_PED_AVAILABLE(CHAR_MICHAEL, TRUE)
Set_Mission_Flow_Flag_State(FLOWFLAG_PLAYER_PED_INTRODUCED_M, TRUE)
//Taxi
DISABLE_TAXI_HAILING(TRUE)
//Player Control
SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
IF bZoomLevel
SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL(vehicleZoomLevel)
SET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT, camViewModeOnFoot)
PRINTLN("vehicleZoomLevel = ", ENUM_TO_INT(vehicleZoomLevel))
PRINTLN("camViewModeOnFoot = ", ENUM_TO_INT(camViewModeOnFoot))
bZoomLevel = FALSE
ENDIF
//Radar
bRadar = TRUE
ALLOW_SONAR_BLIPS(FALSE)
//Phone
DISABLE_CELLPHONE(TRUE)
IF DOES_ENTITY_EXIST(vehCar) AND NOT IS_ENTITY_DEAD(vehCar)
SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_UNLOCKED)
ENDIF
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL
MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL)
TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE)
ENDIF
WAIT_WITH_DEATH_CHECKS(0)
SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID()) PRINTLN("SPECIAL_ABILITY_DEACTIVATE_FAST(PLAYER_ID())")
//Action Mode
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(PLAYER_PED_ID(), FALSE)
SET_PED_USING_ACTION_MODE(PLAYER_PED_ID(), TRUE)
RESTORE_PLAYER_PED_WEAPONS(PLAYER_PED_ID())
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE) //REMOVE_ALL_PED_WEAPONS(PLAYER_PED_ID())
SET_ENTITY_PROOFS(PLAYER_PED_ID(), FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)
SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
SET_PED_COMBAT_MOVEMENT(pedOwner, CM_WILLADVANCE)
SAFE_SET_ENTITY_VISIBLE(pedOwner, TRUE)
#IF IS_DEBUG_BUILD
IF bAutoSkipping = FALSE
#ENDIF
REMOVE_ALL_PED_WEAPONS(pedOwner)
IF NOT IS_ENTITY_DEAD(pedOwner)
SET_ENTITY_INVINCIBLE(pedOwner, FALSE)
ENDIF
SAFE_ADD_BLIP_PED(blipOwner, pedOwner)
//Cutscene
REQUEST_CUTSCENE("Armenian_3_MCS_9_concat")
//Audio Scene
IF NOT IS_AUDIO_SCENE_ACTIVE("ARM_3_BEAT_DOWN")
START_AUDIO_SCENE("ARM_3_BEAT_DOWN")
ENDIF
//Car Door Slam
// bCarDoorSlam = FALSE
// iCarDoorSlam = 0
IF iNavBlock = -1
iNavBlock = ADD_NAVMESH_BLOCKING_OBJECT(<<-53.737026, -1096.983765, 26.494654>>, <<1.25, 0.5, 1.0>>, 30.0)
ENDIF
RECORD_BROKEN_GLASS(<<-57.15079, -1097.26355, 25.42232>>, 3.0)
RECORD_BROKEN_GLASS(<<-51.97326, -1093.50977, 25.42232>>, 3.5)
IF NOT HAS_LABEL_BEEN_TRIGGERED("WindowSmashed")
SET_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN", "V_CARSHOWROOM_PS_WINDOW_BROKEN")
SET_LABEL_AS_TRIGGERED("WindowSmashed", TRUE)
ENDIF
//Wanted
SET_MAX_WANTED_LEVEL(0)
SET_WANTED_LEVEL_MULTIPLIER(0.0)
CLEAR_AREA_OF_COPS(<<-57.6017, -1095.0913, 25.4343>>, 500.0)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_CRUISING, FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER, FALSE)
ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, FALSE)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, FALSE)
ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, FALSE)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, FALSE)
SET_DISPATCH_COPS_FOR_PLAYER(PLAYER_ID(), FALSE)
SET_CREATE_RANDOM_COPS(FALSE)
SET_PED_RESET_FLAG(pedOwner, PRF_SuspendInitiatedMeleeActions, TRUE)
SET_PED_RESET_FLAG(pedOwner, PRF_ForcePedToStrafe, TRUE)
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
bUnreachable = FALSE
IF SKIPPED_STAGE()
//Freeze
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
ENDIF
IF NOT IS_PED_IN_ANY_VEHICLE(pedOwner)
FREEZE_ENTITY_POSITION(pedOwner, TRUE)
ENDIF
//Pin Interior
IF bPinnedGarage = FALSE
intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(vDealership, "v_carshowroom")
PIN_INTERIOR_IN_MEMORY(intGarage)
WHILE NOT IS_INTERIOR_READY(intGarage)
PRINTLN("PINNING INTERIOR...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
bPinnedGarage = TRUE
ENDIF
//Load Scene
IF NOT bReplaySkip
LOAD_SCENE_ADV(<<-58.1243, -1095.0555, 25.4345>>)
ENDIF
//Unfreeze
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
ENDIF
IF NOT IS_PED_IN_ANY_VEHICLE(pedOwner)
FREEZE_ENTITY_POSITION(pedOwner, FALSE)
ENDIF
//Set Positions
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
SET_PED_POSITION(PLAYER_PED_ID(), <<-58.1243, -1095.0555, 25.4345>>, 314.0250)
SET_VEHICLE_POSITION(vehCar, <<-55.8188, -1096.4149, 25.4344>>, 305.0423)
FREEZE_ENTITY_POSITION(vehCar, TRUE)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<-56.13, -1097.60, 25.16>>) - GET_ENTITY_HEADING(PLAYER_PED_ID()))
//Rayfire
rfShowroomCrash1 = GET_RAYFIRE_MAP_OBJECT(<<-56.13, -1097.60, 25.16>>, 10.0, "DES_Showroom")
WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
rfShowroomCrash1 = GET_RAYFIRE_MAP_OBJECT(<<-56.13, -1097.60, 25.16>>, 10.0, "DES_Showroom")
PRINTLN("Getting Rayfire Map Object - DES_Showroom")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfShowroomCrash1)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1) != RFMO_STATE_END
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfShowroomCrash1, RFMO_STATE_ENDING)
ENDIF
ENDIF
WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED(CHAR_MICHAEL))
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
WAIT_WITH_DEATH_CHECKS(500)
//Owner
SET_PED_POSITION(pedOwner, <<-55.6653, -1093.4874, 25.4343>>, 125.8820)
RETAIN_ENTITY_IN_INTERIOR(pedOwner, intGarage)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedOwner, TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupEnemy)
SET_PED_AS_ENEMY(pedOwner, TRUE)
TASK_PUT_PED_DIRECTLY_INTO_MELEE(pedOwner, PLAYER_PED(CHAR_MICHAEL), 0.0, -1.0, 0.0)
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedOwner)
SET_ENTITY_INVINCIBLE(pedOwner, FALSE)
SET_ENTITY_HEALTH(pedOwner, 250 + 200)
SET_PED_MAX_HEALTH(pedOwner, 250 + 200)
//Player
SET_PED_POSITION(PLAYER_PED_ID(), <<-58.1243, -1095.0555, 25.4345>>, 314.0250)
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
TASK_PUT_PED_DIRECTLY_INTO_MELEE(PLAYER_PED(CHAR_MICHAEL), pedOwner, 0.0, -1.0, 0.0)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED(CHAR_MICHAEL))
//Camera Behind Player
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
REPLAY_RECORD_BACK_FOR_TIME(3.0, 4.0)
//Audio
PLAY_AUDIO(ARM3_RESTART_8)
WAIT_WITH_DEATH_CHECKS(500)
//Fade In
IF NOT bShitSkip
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ENDIF
ENDIF
ELSE
PRINT_ADV("ARM3_BEAT")
//Request Cutscene Variations - Armenian_3_MCS_9_concat
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("Michael", PLAYER_PED(CHAR_MICHAEL))
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Siemon", pedOwner)
ENDIF
SWITCH iCutsceneStage
CASE 0
IF NOT IS_CUTSCENE_PLAYING()
OR bShitSkip = TRUE
//Stats
IF IS_PED_PERFORMING_A_COUNTER_ATTACK(PLAYER_PED_ID()) //IS_PED_PERFORMING_A_BLOCK(PLAYER_PED_ID())
IF NOT HAS_LABEL_BEEN_TRIGGERED("Dodged")
INFORM_MISSION_STATS_OF_INCREMENT(ARM3_COUNTERS)
SET_LABEL_AS_TRIGGERED("Dodged", TRUE)
ENDIF
ELIF HAS_LABEL_BEEN_TRIGGERED("Dodged")
SET_LABEL_AS_TRIGGERED("Dodged", FALSE)
ENDIF
IF NOT bUnreachable
IF GET_PED_RESET_FLAG(pedOwner, PRF_IsMeleeTargetUnreachable)
PRINTLN("GET_PED_RESET_FLAG(pedOwner, PRF_IsMeleeTargetUnreachable) = ", GET_PED_RESET_FLAG(pedOwner, PRF_IsMeleeTargetUnreachable))
bUnreachable = TRUE
ENDIF
ELSE
VECTOR vPlayer, vOwner
vPlayer = GET_ENTITY_COORDS(PLAYER_PED_ID())
vOwner = GET_ENTITY_COORDS(pedOwner)
IF GET_DISTANCE_BETWEEN_COORDS(vPlayer, vOwner) < 3.5
AND vPlayer.Z > vOwner.Z - 0.15 AND vPlayer.Z < vOwner.Z + 0.15
AND NOT IS_PED_ON_VEHICLE(PLAYER_PED_ID())
bUnreachable = FALSE
ENDIF
ENDIF
IF ((IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-32.008007, -1102.252197, 25.434353>>, <<-59.300301, -1092.674316, 29.434353>>, 15.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-34.026970, -1115.378784, 25.422327>>, <<-29.336802, -1102.294678, 28.922327>>, 5.5)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-40.934101, -1086.291992, 25.422327>>, <<-25.776924, -1091.713013, 28.921900>>, 10.5)
OR (intGarage != NULL AND GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = intGarage))
AND NOT bUnreachable)
OR bShitSkip = TRUE
PRINTLN("POINT -")
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupEnemy)
SAFE_REMOVE_BLIP(blipDestination)
SAFE_ADD_BLIP_PED(blipOwner, pedOwner)
IF IS_THIS_PRINT_BEING_DISPLAYED("ARM3_BEATBACK")
CLEAR_PRINTS()
ENDIF
IF GET_PED_RELATIONSHIP_GROUP_HASH(pedOwner) = relGroupEnemy
IF GET_SCRIPT_TASK_STATUS(pedOwner, SCRIPT_TASK_COMBAT) <> PERFORMING_TASK
AND GET_SCRIPT_TASK_STATUS(pedOwner, SCRIPT_TASK_PUT_PED_DIRECTLY_INTO_MELEE) <> PERFORMING_TASK
CLEAR_PED_TASKS(pedOwner)
CLEAR_PED_SECONDARY_TASK(pedOwner)
TASK_COMBAT_PED(pedOwner, PLAYER_PED(CHAR_MICHAEL))
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_LOCKON")
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP_ADV("ARM3HLP_LOCKON")
ENDIF
ELIF (NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT") AND NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT_KM"))
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("ARM3HLP_LOCKON")
AND GET_GAME_TIMER() > iHelpTimer
AND IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedOwner)
SAFE_CLEAR_HELP() PRINTLN("SAFE_CLEAR_HELP()")
ENDIF
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
PRINT_HELP_ADV("ARM3HLP_FIGHT_KM")
ELSE
PRINT_HELP_ADV("ARM3HLP_FIGHT")
ENDIF
ENDIF
ELIF (NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT2") AND NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT2_KM"))
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
PRINT_HELP_ADV("ARM3HLP_FIGHT2_KM")
ELSE
PRINT_HELP_ADV("ARM3HLP_FIGHT2")
ENDIF
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FSTAT")
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP_ADV("ARM3HLP_FSTAT")
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FSTAT2")
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP_ADV("ARM3HLP_FSTAT2")
ENDIF
ENDIF
IF TIMERA() > 2000
AND IS_SCREEN_FADED_IN()
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_SLAM")
CREATE_CONVERSATION_ADV("ARM3_SLAM")
ELSE
IF GET_GAME_TIMER() > iDialogueTimer
IF iDialogueLineCount[0] = -1
iDialogueLineCount[0] = 10
ELIF iDialogueLineCount[1] = -1
iDialogueLineCount[1] = 5
ENDIF
IF iDialogueLineCount[iDialogueStage] > 0
IF iDialogueStage = 0
CREATE_CONVERSATION_ADV("ARM3_FIGHTSI", CONV_PRIORITY_MEDIUM, FALSE)
ELIF iDialogueStage = 1
CREATE_CONVERSATION_ADV("ARM3_SLAM2", CONV_PRIORITY_MEDIUM, FALSE)
ENDIF
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000, 8000)
iDialogueLineCount[iDialogueStage]--
ENDIF
IF iDialogueStage = 0
iDialogueStage = 1
ELIF iDialogueStage = 1
iDialogueStage = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_CUTSCENE_LOADED() //If the cutscene hasn't loaded you can't beat up Simeon
SET_ENTITY_INVINCIBLE(pedOwner, FALSE)
SET_PED_RESET_FLAG(pedOwner, PRF_PreventAllMeleeTakedowns, TRUE)
//SET_PED_RESET_FLAG(pedOwner, PRF_ForcePedToStrafe, TRUE)
IF IS_PED_INJURED(pedOwner)
OR GET_ENTITY_HEALTH(pedOwner) < 170
OR bShitSkip = TRUE
bShitSkip = FALSE
//Audio
PLAY_AUDIO(ARM3_HIT_STOP)
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_BEAT_DOWN")
STOP_AUDIO_SCENE("ARM_3_BEAT_DOWN")
ENDIF
REGISTER_ENTITY_FOR_CUTSCENE(pedOwner, "Siemon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_NPC_PED_MODEL(CHAR_SIMEON), CEO_PRESERVE_FACE_BLOOD_DAMAGE | CEO_PRESERVE_BODY_BLOOD_DAMAGE)
REGISTER_ENTITY_FOR_CUTSCENE(vehCar, "Jimmys_Car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
START_CUTSCENE(CUTSCENE_DELAY_ENABLING_PLAYER_CONTROL_FOR_UP_TO_DATE_GAMEPLAY_CAMERA)
WAIT_WITH_DEATH_CHECKS(0)
CLEAR_PRINTS()
//SAFE_CLEAR_HELP()
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
SET_VEHICLE_DOOR_CONTROL(vehCar, SC_DOOR_FRONT_LEFT, DT_DOOR_INTACT, 0.0)
CLEAR_PED_TASKS(PLAYER_PED_ID())
CLEAR_PED_TASKS(pedOwner)
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupBuddy)
CLEAR_AREA(<<-58.1243, -1095.0555, 25.4345>>, 100.0, TRUE)
SET_ENTITY_COLLISION(vehCar, FALSE)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
//Radar
bRadar = FALSE
//Action Mode
SET_PED_USING_ACTION_MODE(PLAYER_PED_ID(), FALSE)
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
ADVANCE_CUTSCENE()
ENDIF
ELSE
SET_ENTITY_INVINCIBLE(pedOwner, TRUE)
ENDIF
SETTIMERB(0)
ELSE
PRINTLN("Player is avoiding Simeon...")
SET_ENTITY_INVINCIBLE(pedOwner, TRUE)
IF NOT (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-32.008007, -1102.252197, 25.434353>>, <<-59.300301, -1092.674316, 29.434353>>, 15.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-34.026970, -1115.378784, 25.422327>>, <<-29.336802, -1102.294678, 28.922327>>, 5.5)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-40.934101, -1086.291992, 25.422327>>, <<-25.776924, -1091.713013, 28.921900>>, 10.5)
OR (intGarage != NULL AND GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = intGarage))
SAFE_REMOVE_BLIP(blipOwner)
SAFE_ADD_BLIP_LOCATION(blipDestination, <<-58.1243, -1095.0555, 25.4345>>)
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_BEATBACK")
CLEAR_TEXT()
ENDIF
PRINT_ADV("ARM3_BEATBACK")
ENDIF
// VECTOR vTemp1, vTemp2
// FLOAT fHeadingOwnerToPlayer
// vTemp1 = GET_ENTITY_COORDS(pedOwner)
// vTemp2 = GET_ENTITY_COORDS(PLAYER_PED_ID())
// fHeadingOwnerToPlayer = GET_ANGLE_BETWEEN_2D_VECTORS(vTemp1.X, vTemp1.Y, vTemp2.X, vTemp2.Y)
IF GET_PED_RELATIONSHIP_GROUP_HASH(pedOwner) = relGroupEnemy
PRINTLN("POINT 0")
CLEAR_PED_TASKS(pedOwner)
CLEAR_PED_SECONDARY_TASK(pedOwner)
SET_PED_RELATIONSHIP_GROUP_HASH(pedOwner, relGroupBuddy)
ENDIF
IF NOT IS_ENTITY_IN_ANGLED_AREA(pedOwner, <<-58.611813, -1093.174194, 25.422327>>, <<-33.443916, -1102.318359, 29.422327>>, 12.5)
IF GET_SCRIPT_TASK_STATUS(pedOwner, SCRIPT_TASK_PERFORM_SEQUENCE) <> PERFORMING_TASK
PRINTLN("POINT 1")
OPEN_SEQUENCE_TASK(seqMain)
IF IS_ENTITY_IN_ANGLED_AREA(pedOwner, <<-62.596004, -1096.740356, 25.352293>>, <<-59.575451, -1102.166016, 29.412632>>, 5.0)
TASK_GO_STRAIGHT_TO_COORD(NULL, <<-59.0830, -1097.8198, 25.4225>>, PEDMOVE_RUN)
ENDIF
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-54.8776, -1092.9445, 25.4344>>, PEDMOVE_RUN)
TASK_TURN_PED_TO_FACE_COORD(NULL, GET_ENTITY_COORDS(PLAYER_PED(CHAR_MICHAEL))) //TASK_GO_STRAIGHT_TO_COORD(NULL, <<-54.8776, -1092.9445, 25.4344>>, PEDMOVE_RUN, DEFAULT_TIME_NEVER_WARP, fHeadingOwnerToPlayer)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictAngry)
TASK_PLAY_ANIM(NULL, sAnimDictAngry, "cmon", WALK_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY)
ENDIF
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedOwner, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
ENDIF
ELSE
IF GET_SCRIPT_TASK_STATUS(pedOwner, SCRIPT_TASK_PERFORM_SEQUENCE) <> PERFORMING_TASK
IF IS_PED_FACING_PED(pedOwner, PLAYER_PED_ID(), 20.0)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictAngry)
PRINTLN("POINT 2")
IF (NOT IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "cmon")
OR (IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "cmon") AND GET_ENTITY_ANIM_CURRENT_TIME(pedOwner, sAnimDictAngry, "cmon") >= 0.8))
AND (NOT IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "areyounotman")
OR (IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "areyounotman") AND GET_ENTITY_ANIM_CURRENT_TIME(pedOwner, sAnimDictAngry, "areyounotman") >= 0.8))
AND (NOT IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "lookathim")
OR (IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "lookathim") AND GET_ENTITY_ANIM_CURRENT_TIME(pedOwner, sAnimDictAngry, "lookathim") >= 0.8))
INT iRandom
iRandom = GET_RANDOM_INT_IN_RANGE(0, 3)
IF iRandom = 0
TASK_PLAY_ANIM(pedOwner, sAnimDictAngry, "cmon", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1)
TASK_LOOK_AT_ENTITY(pedOwner, PLAYER_PED(CHAR_MICHAEL), -1, SLF_USE_TORSO | SLF_WIDEST_PITCH_LIMIT, SLF_LOOKAT_VERY_HIGH)
ELIF iRandom = 1
TASK_PLAY_ANIM(pedOwner, sAnimDictAngry, "areyounotman", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1)
TASK_LOOK_AT_ENTITY(pedOwner, PLAYER_PED(CHAR_MICHAEL), -1, SLF_USE_TORSO | SLF_WIDEST_PITCH_LIMIT, SLF_LOOKAT_VERY_HIGH)
ELIF iRandom = 2
TASK_PLAY_ANIM(pedOwner, sAnimDictAngry, "lookathim", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1)
TASK_LOOK_AT_ENTITY(pedOwner, PLAYER_PED(CHAR_MICHAEL), -1, SLF_USE_TORSO | SLF_WIDEST_PITCH_LIMIT, SLF_LOOKAT_VERY_HIGH)
ENDIF
ENDIF
ENDIF
IF IS_SCREEN_FADED_IN()
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF GET_GAME_TIMER() > iDialogueTimer
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(pedOwner)) < 25.0
iDialogueStage = 1
IF iDialogueLineCount[iDialogueStage] = -1
iDialogueLineCount[iDialogueStage] = 5
ENDIF
IF iDialogueLineCount[iDialogueStage] > 0
CREATE_CONVERSATION_ADV("ARM3_SIMS", CONV_PRIORITY_MEDIUM, FALSE)
iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(10000, 15000)
iDialogueLineCount[iDialogueStage]--
ENDIF
ELSE
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_SIMS")
KILL_FACE_TO_FACE_CONVERSATION()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
//IF HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(pedOwner, PLAYER_PED_ID()) //CAN_PED_SEE_HATED_PED(pedOwner, PLAYER_PED_ID())
IF IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "cmon")
OR IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "areyounotman")
OR IS_ENTITY_PLAYING_ANIM(pedOwner, sAnimDictAngry, "lookathim")
CLEAR_PED_TASKS(pedOwner)
ENDIF
PRINTLN("POINT 3")
IF GET_SCRIPT_TASK_STATUS(pedOwner, SCRIPT_TASK_TURN_PED_TO_FACE_COORD) != WAITING_TO_START_TASK
AND GET_SCRIPT_TASK_STATUS(pedOwner, SCRIPT_TASK_TURN_PED_TO_FACE_COORD) != PERFORMING_TASK
AND GET_SCRIPT_TASK_STATUS(pedOwner, SCRIPT_TASK_TURN_PED_TO_FACE_COORD) != DORMANT_TASK
TASK_TURN_PED_TO_FACE_COORD(pedOwner, GET_ENTITY_COORDS(PLAYER_PED(CHAR_MICHAEL)), 1000)
ENDIF
//ENDIF
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("WantedLevel")
IF TIMERB() > 20000
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 3)
SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID())
SET_LABEL_AS_TRIGGERED("WantedLevel", TRUE)
ENDIF
ENDIF
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(pedOwner)) > 100.0
eMissionFail = failFledOwner
missionFailed()
ENDIF
ENDIF
ENDIF
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
SET_PLAYER_MAY_NOT_ENTER_ANY_VEHICLE(PLAYER_ID())
BREAK
CASE 1
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_LOCKON")
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP_ADV("ARM3HLP_LOCKON")
ENDIF
ELIF (NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT") AND NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT_KM"))
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
PRINT_HELP_ADV("ARM3HLP_FIGHT_KM")
ELSE
PRINT_HELP_ADV("ARM3HLP_FIGHT")
ENDIF
ENDIF
ELIF (NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT2") AND NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FIGHT2_KM"))
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
PRINT_HELP_ADV("ARM3HLP_FIGHT2_KM")
ELSE
PRINT_HELP_ADV("ARM3HLP_FIGHT2")
ENDIF
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FSTAT")
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP_ADV("ARM3HLP_FSTAT")
ENDIF
ELIF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_FSTAT2")
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP_ADV("ARM3HLP_FSTAT2")
ENDIF
ENDIF
// IF NOT HAS_LABEL_BEEN_TRIGGERED("SimeonHeadWound1")
// IF GET_CUTSCENE_TIME() > ROUND(9.233334 * 1000.0)
// ENTITY_INDEX entitySimeon
// entitySimeon = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Siemon", CS_SIEMONYETARIAN)
//
// IF DOES_ENTITY_EXIST(entitySimeon)
// AND NOT IS_ENTITY_DEAD(entitySimeon)
// APPLY_PED_DAMAGE_DECAL(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySimeon), PDZ_TORSO, 0.426, 0.755, 218.157, 1.0, 1.0, 3, TRUE, "bruise")
//
// SET_LABEL_AS_TRIGGERED("SimeonHeadWound1", TRUE)
// ENDIF
// ENDIF
// ENDIF
//
// IF NOT HAS_LABEL_BEEN_TRIGGERED("SimeonHeadWound2")
// IF GET_CUTSCENE_TIME() > ROUND(16.133335 * 1000.0)
// ENTITY_INDEX entitySimeon
// entitySimeon = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Siemon", CS_SIEMONYETARIAN)
//
// IF DOES_ENTITY_EXIST(entitySimeon)
// AND NOT IS_ENTITY_DEAD(entitySimeon)
// APPLY_PED_DAMAGE_DECAL(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySimeon), PDZ_TORSO, 0.448, 0.814, 0.0, 1.0, 1.0, 5, TRUE, "bruise")
// APPLY_PED_DAMAGE_DECAL(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySimeon), PDZ_TORSO, 0.576, 0.715, 0.0, 1.0, 1.0, 3, TRUE, "bruise")
// APPLY_PED_DAMAGE_DECAL(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySimeon), PDZ_TORSO, 0.576, 0.680, 0.0, 1.0, 1.0, 3, TRUE, "bruise")
// APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySimeon), ENUM_TO_INT(PDZ_TORSO), 0.535, 0.547, 222.215, 1.0, 3, 0.0, "NonFatalHeadshot")
//
// SET_LABEL_AS_TRIGGERED("SimeonHeadWound2", TRUE)
// ENDIF
// ENDIF
// ENDIF
// IF CAN_SET_EXIT_STATE_FOR_CAMERA()
//
// ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
// SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 1000)
// FORCE_PED_MOTION_STATE(PLAYER_PED(CHAR_MICHAEL), MS_ON_FOOT_WALK, TRUE, FAUS_CUTSCENE_EXIT)
// SET_PED_POSITION(PLAYER_PED_ID(), <<-62.6231, -1092.8240, 25.5139>>, 71.5533)
//
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(-110.292969 - GET_ENTITY_HEADING(PLAYER_PED_ID()))
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-13.353200)
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Jimmys_Car")
SET_VEHICLE_DOORS_SHUT(vehCar)
SET_ENTITY_COLLISION(vehCar, FALSE)
SET_ENTITY_DYNAMIC(vehCar, TRUE)
FREEZE_ENTITY_POSITION(vehCar, TRUE)
ENDIF
IF WAS_CUTSCENE_SKIPPED()
SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE)
bCutsceneSkipped = TRUE
ENDIF
IF HAS_CUTSCENE_FINISHED()
IF bCutsceneSkipped
LOAD_SCENE_ADV(<<-56.8300, -1094.9470, 25.4223>>, 100.0)
DO_SCREEN_FADE_IN(1000) #IF IS_DEBUG_BUILD PRINTLN("DO_SCREEN_FADE_IN") #ENDIF
ENDIF
bCutsceneSkipped = FALSE
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
ADVANCE_STAGE()
ENDIF
BREAK
ENDSWITCH
IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_ATTACK)
OR IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_MELEE_ATTACK_LIGHT)
OR IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_MELEE_ATTACK_HEAVY)
SET_LABEL_AS_TRIGGERED("FirstPunch", TRUE)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("FirstPunch")
AND TIMERA() < 3000
SET_PED_RESET_FLAG(pedOwner, PRF_SuspendInitiatedMeleeActions, TRUE)
SET_PED_RESET_FLAG(pedOwner, PRF_ForcePedToStrafe, TRUE)
ENDIF
ENDIF
IF CLEANUP_STAGE()
//Cleanup (Blips, peds, variables etc.)
REMOVE_CUTSCENE()
REPLAY_STOP_EVENT()
WHILE HAS_CUTSCENE_LOADED()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
//Audio Scene
IF IS_AUDIO_SCENE_ACTIVE("ARM_3_BEAT_DOWN")
STOP_AUDIO_SCENE("ARM_3_BEAT_DOWN")
ENDIF
SAFE_DELETE_PED(pedOwner)
SAFE_REMOVE_BLIP(blipDestination)
SAFE_REMOVE_BLIP(blipOwner)
//Phone
DISABLE_CELLPHONE(FALSE)
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(165)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//Unload Texture Dictionary
// SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED("SplashScreens")
//Wanted
SET_MAX_WANTED_LEVEL(6)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
ENDIF
ENDPROC
//PROC ExitDealership()
// IF INIT_STAGE()
// //Player Control
// SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
//
// //Radar
// bRadar = FALSE
//
// #IF IS_DEBUG_BUILD
// IF bAutoSkipping = FALSE
// #ENDIF
//
// //Print
// CLEAR_PRINTS()
// SAFE_CLEAR_HELP()
//
//// PRINT_ADV("ARM3_EXIT")
//
// //Blip
// SAFE_ADD_BLIP_LOCATION(blipDestination, <<-58.9105, -1094.3636, 25.4345>>)
//
// //Camera
// IF NOT DOES_CAM_EXIST(camMain)
// camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
// ENDIF
//
// #IF IS_DEBUG_BUILD
// ENDIF
// #ENDIF
//
// //Texture Dictionary
//// REQUEST_STREAMED_TEXTURE_DICT("SplashScreens")
//
// IF SKIPPED_STAGE()
// //Freeze
// SAFE_FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
//
// //Pin Interior
// intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(vDealership, "v_carshowroom")
//
// PIN_INTERIOR_IN_MEMORY(intGarage)
//
// WHILE NOT IS_INTERIOR_READY(intGarage)
// PRINTLN("PINNING INTERIOR...")
//
// WAIT_WITH_DEATH_CHECKS(0)
// ENDWHILE
//
// bPinnedGarage = TRUE
//
// //Unfreeze
// SAFE_FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
//
// //Set Positions
// CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
// SET_PED_POSITION(PLAYER_PED_ID(), <<-58.6544, -1094.2231, 25.4345>>, 67.7985)
//
// SET_VEHICLE_POSITION(vehCar, <<-55.7623, -1096.5033, 25.4766>>, 309.4087)
//
// TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), <<-64.2202, -1092.5787, 25.5570>>, PEDMOVE_WALK)
//
// //Load Scene
// LOAD_SCENE_ADV(GET_ENTITY_COORDS(PLAYER_PED_ID()))
//
// //Camera
// SET_CAM_PARAMS(camMain,
// <<-64.228828, -1090.187012, 25.727079>>,
// <<11.967910, 0.000001, -135.002151>>,
// 30.904352)
//
// SET_CAM_PARAMS(camMain,
// <<-64.306511, -1090.265625, 25.727079>>,
// <<11.967911, 0.000001, -134.579224>>,
// 30.904352,
// 1500)
//
// RENDER_SCRIPT_CAMS(TRUE, FALSE)
// SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
// CLEAR_ROOM_FOR_GAME_VIEWPORT()
//
// //Camera Behind Player
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//
// //Fade In
// IF IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_IN(500)
// ENDIF
// ENDIF
// ELSE
// SWITCH iCutsceneStage
// CASE 0
//// IF HAS_STREAMED_TEXTURE_DICT_LOADED("SplashScreens")
// ADVANCE_CUTSCENE()
//// ENDIF
// BREAK
// CASE 1
// //Wall 1
// // IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-57.246544, -1086.109375, 24.628405>>, <<-61.189556, -1096.419922, 28.965427>>, 1.5)
// // -3.67, 1.23, 0.0
// //Wall 2
// // IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-61.326393, -1096.447510, 24.622618>>, <<-58.424828, -1101.298218, 28.931204>>, 1.5)
// // -3.49, -2.14, 0.0
// //Wall 3
// // IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-58.395573, -1101.279419, 24.431620>>, <<-34.990391, -1109.947510, 28.935814>>, 1.5)
// // -1.39, -3.86, 0.0
// //Wall 4
// // IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-34.855526, -1109.858765, 24.436039>>, <<-36.557720, -1114.361084, 28.935463>>, 1.5)
// // -3.85, 1.39, 0.0
//
//// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-57.246544, -1086.109375, 24.628405>>, <<-61.189556, -1096.419922, 28.965427>>, 1.5)
//// OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-61.326393, -1096.447510, 24.622618>>, <<-58.424828, -1101.298218, 28.931204>>, 1.5)
//// OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-58.395573, -1101.279419, 24.431620>>, <<-34.990391, -1109.947510, 28.935814>>, 1.5)
//// OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-34.855526, -1109.858765, 24.436039>>, <<-36.557720, -1114.361084, 28.935463>>, 1.5)
//// IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
//// IF SAFE_START_CUTSCENE(10.0)
//// bRadar = FALSE
////
//// CLEAR_PRINTS()
//// SAFE_CLEAR_HELP()
////
//// SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
////
//// CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
////
//// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-57.246544, -1086.109375, 24.628405>>, <<-61.189556, -1096.419922, 28.965427>>, 1.5)
//// TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-3.67, 1.23, 0.0>>, PEDMOVE_WALK)
//// SET_CAM_COORD(camMain, GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-3.67 * 2, 1.23 * 2, 1.0>>)
//// ELIF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-61.326393, -1096.447510, 24.622618>>, <<-58.424828, -1101.298218, 28.931204>>, 1.5)
//// TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-3.49, -2.14, 0.0>>, PEDMOVE_WALK)
//// SET_CAM_COORD(camMain, GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-3.49 * 2, -2.14 * 2, 1.0>>)
//// ELIF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-58.395573, -1101.279419, 24.431620>>, <<-34.990391, -1109.947510, 28.935814>>, 1.5)
//// TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-1.39, -3.86, 0.0>>, PEDMOVE_WALK)
//// SET_CAM_COORD(camMain, GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-1.39 * 2, -3.86 * 2, 1.0>>)
//// ELIF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-34.855526, -1109.858765, 24.436039>>, <<-36.557720, -1114.361084, 28.935463>>, 1.5)
//// TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-3.85, 1.39, 0.0>>, PEDMOVE_WALK)
//// SET_CAM_COORD(camMain, GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<-3.85 * 2, 1.39 * 2, 1.0>>)
//// ENDIF
////
//// SET_CAM_FOV(camMain, 20.0)
////
//// POINT_CAM_AT_ENTITY(camMain, PLAYER_PED_ID(), <<0.0, 0.0, 0.5>>)
////
//// RENDER_SCRIPT_CAMS(TRUE, FALSE)
//// SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
//// CLEAR_ROOM_FOR_GAME_VIEWPORT()
////
//// ADVANCE_CUTSCENE()
//// ENDIF
//// ENDIF
//// ENDIF
//
// ADVANCE_CUTSCENE()
// BREAK
// CASE 2
// IF TIMERA() > 1500
// SET_CAM_PARAMS(camMain,
// <<-64.106102,-1092.782837,26.726273>>,
// <<7.561244,0.000000,-106.236137>>,
// 24.746525)
//
// ADVANCE_CUTSCENE()
// ENDIF
// BREAK
// CASE 3
// IF TIMERA() > 1000
//// SET_TIMECYCLE_MODIFIER("CAMERA_BW")
//
// ADVANCE_CUTSCENE()
// ENDIF
// BREAK
// CASE 4
//// SET_GAME_PAUSED(TRUE)
////
//// INT xScreen, yScreen
//// VECTOR vTexture
////
//// GET_SCREEN_RESOLUTION(xScreen, yScreen)
//// vTexture = GET_TEXTURE_RESOLUTION("SplashScreens", "GTAV_PlayerIntroNames_MichaelT")
////
//// DRAW_SPRITE("SplashScreens", "GTAV_PlayerIntroNames_MichaelD", 0.25, 0.3, vTexture.X / xScreen, vTexture.Y / yScreen, 0.0, 255, 255, 255, 255) //"MichaelTSplash", "GTAV_PlayerIntroNames_MichaelTownley"
////
//// DRAW_RECT_FROM_CORNER(0.0, 0.0, 1.0, 0.1, 0, 0, 0, 255)
//// DRAW_RECT_FROM_CORNER(0.0, 0.9, 1.0, 0.1, 0, 0, 0, 255)
////
//// IF TIMERA() > 2250
//// SET_GAME_PAUSED(FALSE)
////
//// CLEAR_TIMECYCLE_MODIFIER()
//
// ADVANCE_CUTSCENE()
//// ENDIF
// BREAK
// CASE 5
// IF TIMERA() > 300
// ADVANCE_STAGE()
// ENDIF
// BREAK
// ENDSWITCH
// ENDIF
//
// IF CLEANUP_STAGE()
// //Cleanup (Blips, peds, variables etc.)
// RENDER_SCRIPT_CAMS(FALSE, FALSE)
//
// //Camera Behind Player
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(165)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
//
// SAFE_REMOVE_BLIP(blipDestination)
//
// //If skipped
// SET_GAME_PAUSED(FALSE)
//
// CLEAR_TIMECYCLE_MODIFIER()
//
// //Unload Texture Dictionary
//// SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED("SplashScreens")
//
// eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1)
// ENDIF
//ENDPROC
// DEBUG
#IF IS_DEBUG_BUILD
PROC debugRoutine()
IF bAutoSkipping = TRUE
IF ENUM_TO_INT(eMissionObjective) >= ENUM_TO_INT(eMissionObjectiveAutoSkip)
// IF IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_IN(500)
//
// WHILE IS_SCREEN_FADING_IN()
// WAIT(0)
// ENDWHILE
// ENDIF
eMissionObjectiveAutoSkip = initMission
bAutoSkipping = FALSE
bSkipped = TRUE
ENDIF
ENDIF
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)
CLEAR_TEXT()
//Cutscene
WHILE NOT HAS_CUTSCENE_FINISHED()
STOP_CUTSCENE(TRUE)
PRINTLN("STOPPING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
PRINTLN("REMOVING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
missionPassed()
ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
CLEAR_TEXT()
//Cutscene
WHILE NOT HAS_CUTSCENE_FINISHED()
STOP_CUTSCENE(TRUE)
PRINTLN("STOPPING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
PRINTLN("REMOVING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
missionFailed()
ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
OR ENUM_TO_INT(eMissionObjective) < ENUM_TO_INT(eMissionObjectiveAutoSkip)
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
bSkipped = TRUE
ENDIF
IF NOT IS_SCREEN_FADED_OUT()
AND NOT IS_SCREEN_FADING_OUT()
DO_SCREEN_FADE_OUT(500)
WHILE NOT IS_SCREEN_FADED_OUT()
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
ENDIF
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
CLEAR_TEXT()
//Cutscene
WHILE NOT HAS_CUTSCENE_FINISHED()
STOP_CUTSCENE(TRUE)
PRINTLN("STOPPING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
PRINTLN("REMOVING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
ADVANCE_STAGE()
TEXT_LABEL txtLabel
txtLabel = ENUM_TO_INT(eMissionObjective)
PRINTSTRING(txtLabel)
PRINTNL()
ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P)
OR LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct, iStageSkipMenu, ENUM_TO_INT(eMissionObjective))
IF bAutoSkipping = FALSE
bAutoSkipping = TRUE
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P)
eMissionObjectiveAutoSkip = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) - 1)
//P-Skip Speciale
IF eMissionObjectiveAutoSkip = cutArgue
eMissionObjectiveAutoSkip = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjectiveAutoSkip) - 1)
ENDIF
ELSE
eMissionObjectiveAutoSkip = INT_TO_ENUM(MissionObjective, iStageSkipMenu)
ENDIF
eMissionObjective = initMission
DO_SCREEN_FADE_OUT(500)
WHILE NOT IS_SCREEN_FADED_OUT()
WAIT(0)
ENDWHILE
//Cutscene
WHILE NOT HAS_CUTSCENE_FINISHED()
STOP_CUTSCENE(TRUE)
PRINTLN("STOPPING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
REMOVE_CUTSCENE()
WHILE HAS_CUTSCENE_LOADED()
PRINTLN("REMOVING CUTSCENE...")
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
MISSION_CLEANUP(TRUE)
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 10000.0, TRUE)
RENDER_SCRIPT_CAMS(FALSE, FALSE)
ENDIF
ENDIF
ENDPROC
#ENDIF
// MISSION SCRIPT
SCRIPT
IF HAS_FORCE_CLEANUP_OCCURRED()
Mission_Flow_Mission_Force_Cleanup()
HANDLE_FAIL_AS_MICHAEL()
MISSION_CLEANUP(FALSE)
ENDIF
SET_MISSION_FLAG(TRUE)
// MISSION LOOP
#IF IS_DEBUG_BUILD
MissionNames()
#ENDIF
//Fetch vehPlayer from armenian3_launcher
IF NOT IS_REPLAY_IN_PROGRESS()
IF NOT DOES_ENTITY_EXIST(vehDriveTo)
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
vehDriveTo = GET_MISSION_START_VEHICLE_INDEX()
IF DOES_ENTITY_EXIST(vehDriveTo)
AND NOT IS_ENTITY_DEAD(vehDriveTo)
#IF IS_DEBUG_BUILD PRINTLN("vehDriveTo = ", GET_MODEL_NAME_OF_VEHICLE_FOR_DEBUG_ONLY(vehDriveTo)) #ENDIF
SET_VEHICLE_DOORS_SHUT(vehDriveTo, TRUE)
SET_ENTITY_AS_MISSION_ENTITY(vehDriveTo, TRUE, TRUE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehDriveTo, TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT g_sTriggerSceneAssets.flag
IF NOT IS_REPLAY_IN_PROGRESS()
bTimeOfDayRunning = FALSE
WHILE NOT DO_TIMELAPSE(SP_MISSION_ARMENIAN_3, sTimelapse, FALSE, TRUE, FALSE, TRUE)
bTimeOfDayRunning = TRUE
WAIT(0)
ENDWHILE
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0]) //Simeon
IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[0])
//Transfer the global index to a local index and grab ownership of the entity.
pedOwner = g_sTriggerSceneAssets.ped[0]
SET_ENTITY_AS_MISSION_ENTITY(pedOwner, TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[1]) //Customer
IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[1])
//Transfer the global index to a local index and grab ownership of the entity.
pedIntro = g_sTriggerSceneAssets.ped[1]
SET_ENTITY_AS_MISSION_ENTITY(pedIntro, TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[0]) //Customer Car
IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[0])
//Transfer the global index to a local index and grab ownership of the entity.
vehIntro = g_sTriggerSceneAssets.veh[0]
SET_ENTITY_AS_MISSION_ENTITY(vehIntro, TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[1]) //Outside Car 1
IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[1])
//Transfer the global index to a local index and grab ownership of the entity.
vehGarageOutside[0] = g_sTriggerSceneAssets.veh[1]
SET_ENTITY_AS_MISSION_ENTITY(vehGarageOutside[0], TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[2]) //Outside Car 2
IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[2])
//Transfer the global index to a local index and grab ownership of the entity.
vehGarageOutside[1] = g_sTriggerSceneAssets.veh[2]
SET_ENTITY_AS_MISSION_ENTITY(vehGarageOutside[1], TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[3]) //Garage Car 1
IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[3])
//Transfer the global index to a local index and grab ownership of the entity.
vehGarage[0] = g_sTriggerSceneAssets.veh[3]
SET_ENTITY_AS_MISSION_ENTITY(vehGarage[0], TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[4]) //Garage Car 2
IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[4])
//Transfer the global index to a local index and grab ownership of the entity.
vehGarage[1] = g_sTriggerSceneAssets.veh[4]
SET_ENTITY_AS_MISSION_ENTITY(vehGarage[1], TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[5]) //Garage Car 3
IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[5])
//Transfer the global index to a local index and grab ownership of the entity.
vehGarage[2] = g_sTriggerSceneAssets.veh[5]
SET_ENTITY_AS_MISSION_ENTITY(vehGarage[2], TRUE, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.veh[6]) //Garage Car 4
IF NOT IS_ENTITY_DEAD(g_sTriggerSceneAssets.veh[6])
//Transfer the global index to a local index and grab ownership of the entity.
vehGarage[3] = g_sTriggerSceneAssets.veh[6]
SET_ENTITY_AS_MISSION_ENTITY(vehGarage[3], TRUE, TRUE)
ENDIF
ENDIF
MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_ARMENIAN_3)
IF NOT IS_REPLAY_IN_PROGRESS()
IF HAS_CUTSCENE_LOADED()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
IF DOES_ENTITY_EXIST(pedOwner)
AND NOT IS_PED_INJURED(pedOwner)
REGISTER_ENTITY_FOR_CUTSCENE(pedOwner, "Siemon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_NPC_PED_MODEL(CHAR_SIMEON))
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Siemon", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, GET_NPC_PED_MODEL(CHAR_SIMEON))
ENDIF
IF DOES_ENTITY_EXIST(pedIntro)
AND NOT IS_PED_INJURED(pedIntro)
REGISTER_ENTITY_FOR_CUTSCENE(pedIntro, "customer", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, A_M_M_BevHills_02)
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "customer", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, A_M_M_BevHills_02)
ENDIF
IF DOES_ENTITY_EXIST(vehIntro)
AND NOT IS_ENTITY_DEAD(vehIntro)
// STOP_SYNCHRONIZED_ENTITY_ANIM(vehIntro, INSTANT_BLEND_OUT, TRUE)
REGISTER_ENTITY_FOR_CUTSCENE(vehIntro, "Showroom_Car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, PREMIER)
ELSE
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "Showroom_Car", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, PREMIER)
ENDIF
START_CUTSCENE()
WAIT(0)
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-36.443756, -1114.312988, 24.939146>>, <<-58.570412, -1111.051758, 37.435764>>, 20.0, <<-58.3923, -1114.5612, 25.4358>>, 74.8206, GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR())
//When you want to cut the camera and go back into gameplay or the intro mocap scene call
IF bTimeOfDayRunning
SET_TODS_CUTSCENE_RUNNING(sTimelapse, FALSE)
bTimeOfDayComplete = TRUE
ENDIF
CLEAR_AREA(<<-47.07522, -1114.47644, 25.43581>>, 7.5, TRUE)
CLEAR_AREA(<<-40.14164, -1113.71350, 25.43738>>, 5.0, TRUE)
CLEAR_AREA(<<-57.75611, -1112.76880, 25.43581>>, 10.0, TRUE)
SET_ROADS_IN_ANGLED_AREA(<<-801.065796, 187.031311, 71.605469>>, <<-797.865540, 178.343643, 74.834709>>, 9.0, FALSE, FALSE)
STOP_GAMEPLAY_HINT(TRUE)
CLEAR_TEXT()
bPreloaded = TRUE
ENDIF
ENDIF
WHILE (TRUE)
//Video Recorder
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_Complications")
//Fail ChecksNew Search
DEATH_CHECKS()
CAUGHT_SNEAKING()
IF bTimeOfDayRunning
IF NOT IS_REPLAY_IN_PROGRESS()
IF bTimeOfDayComplete = FALSE
IF IS_CUTSCENE_PLAYING()
//When you want to cut the camera and go back into gameplay or the intro mocap scene call
SET_TODS_CUTSCENE_RUNNING(sTimelapse, FALSE)
bTimeOfDayComplete = TRUE
ENDIF
ENDIF
ELSE
bTimeOfDayComplete = TRUE
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("ARM3_GUN")
IF eMissionObjective >= stageDriveTo AND eMissionObjective <= cutWindowSmash
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_AIM) //INPUT_FRONTEND_LT
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_DUCK)
ENDIF
ENDIF
//Interior Pinning
//Mansion
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-856.007996, 170.520981, 56.539825>>, <<-764.767883, 168.507111, 86.732788>>, 45.0)
IF intMansion = NULL
intMansion = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<-812.1879, 179.9663, 71.1639>>, "V_Michael")
ELSE
IF bPinnedMansion = FALSE
PIN_INTERIOR_IN_MEMORY(intMansion)
IF NOT IS_INTERIOR_READY(intMansion)
PRINTLN("PINNING INTERIOR...")
ELSE
bPinnedMansion = TRUE
ENDIF
ENDIF
ENDIF
//Window
CREATE_MODEL_HIDE(<<-802.73, 167.50, 77.58>>, 1.0, V_ILEV_MM_WINDOWWC, FALSE)
IF NOT DOES_ENTITY_EXIST(objWindow)
IF HAS_MODEL_LOADED_CHECK(V_ILEV_MM_WINDOWWC)
CLEAR_AREA(<<-801.900024, 167.699997, 76.300002>>, 10.0, TRUE)
objWindow = CREATE_OBJECT(V_ILEV_MM_WINDOWWC, <<-801.900024, 167.699997, 76.300002>>)
FREEZE_ENTITY_POSITION(objWindow, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(V_ILEV_MM_WINDOWWC)
ENDIF
ENDIF
//Mansion Doors
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iBathroomDoor)
ADD_DOOR_TO_SYSTEM(iBathroomDoor, V_ILEV_MM_DOORW, <<-804.95, 171.86, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iJimmyDoor)
ADD_DOOR_TO_SYSTEM(iJimmyDoor, V_ILEV_MM_DOORSON, <<-806.77, 174.02, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iTraceyDoor)
ADD_DOOR_TO_SYSTEM(iTraceyDoor, V_ILEV_MM_DOORDAUGHTER, <<-802.70, 176.18, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iMichaelDoor)
ADD_DOOR_TO_SYSTEM(iMichaelDoor, V_ILEV_MM_DOORW, <<-809.28, 177.86, 76.89>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iGarageDoor)
ADD_DOOR_TO_SYSTEM(iGarageDoor, V_ILEV_MM_DOOR, <<-806.28, 186.02, 72.62>>)
ENDIF
IF eMissionObjective <= stageDriveTo
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iBathroomDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iBathroomDoor) <> -1.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iBathroomDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iBathroomDoor, -1.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iBathroomDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iJimmyDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iJimmyDoor) <> -1.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iJimmyDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iJimmyDoor, -1.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iJimmyDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iTraceyDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iTraceyDoor) <> 1.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iTraceyDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iTraceyDoor, 1.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iTraceyDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("GarageDoorLockedSkip")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DoorLocked")
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarageDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor) < -0.4 - 0.05
OR DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor) > -0.4 + 0.05
OR DOOR_SYSTEM_GET_DOOR_STATE(iGarageDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
FLOAT fOpenRation = DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor)
IF fOpenRation < -0.4
fOpenRation = fOpenRation +@ 0.1
ELIF fOpenRation > -0.4
fOpenRation = fOpenRation +@ -0.1
ENDIF
DOOR_SYSTEM_SET_OPEN_RATIO(iGarageDoor, fOpenRation, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iGarageDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-806.888123, 183.775513, 71.347801>>, <<-805.190063, 184.442764, 73.847801>>, 3.5)
SET_LABEL_AS_TRIGGERED("DoorLocked", TRUE)
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-807.402283, 189.004593, 71.478920>>, <<-815.288208, 185.978165, 74.954453>>, 6.5)
IF SMOOTH_CLOSE_DOOR(GARAGE_DOOR, V_ILEV_MM_DOOR, <<-806.28, 186.02, 72.62>>, TRUE)
SET_LABEL_AS_TRIGGERED("GarageDoorSmoothClosed", TRUE)
ELSE
SET_LABEL_AS_TRIGGERED("GarageDoorSmoothClosed", FALSE)
ENDIF
ELIF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-806.958984, 186.046143, 70.974792>>, <<-804.708191, 180.184219, 74.347801>>, 7.0)
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarageDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor) < -0.4 - 0.05
OR DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor) > -0.4 + 0.05
OR DOOR_SYSTEM_GET_DOOR_STATE(iGarageDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
FLOAT fOpenRation = DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor)
IF fOpenRation < -0.4
fOpenRation = fOpenRation +@ 0.1
ELIF fOpenRation > -0.4
fOpenRation = fOpenRation +@ -0.1
ENDIF
DOOR_SYSTEM_SET_OPEN_RATIO(iGarageDoor, fOpenRation, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iGarageDoor, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
ELSE
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarageDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor) < -0.4 - 0.05
OR DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor) > -0.4 + 0.05
OR DOOR_SYSTEM_GET_DOOR_STATE(iGarageDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
FLOAT fOpenRation = DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor)
IF fOpenRation < -0.4
fOpenRation = fOpenRation +@ 0.1
ELIF fOpenRation > -0.4
fOpenRation = fOpenRation +@ -0.1
ENDIF
DOOR_SYSTEM_SET_OPEN_RATIO(iGarageDoor, fOpenRation, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iGarageDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iGarageDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iGarageDoor) <> 0.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iGarageDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iGarageDoor, 0.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iGarageDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iMichaelDoor)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iMichaelDoor) <> 0.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iMichaelDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iMichaelDoor, 0.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iMichaelDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
// SMOOTH_CLOSE_DOOR(V_ILEV_MM_DOORW, <<-807.3, 175.0, 71.2>>, TRUE, 1.0, 1.0)
ENDIF
ELIF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-864.316040, 170.810455, 56.566391>>, <<-757.057434, 167.819778, 77.386490>>, 55.0)
IF intMansion <> NULL
IF bPinnedMansion = TRUE
UNPIN_INTERIOR(intMansion)
bPinnedMansion = FALSE
ENDIF
ENDIF
ENDIF
//Dealership Door
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor1)
ADD_DOOR_TO_SYSTEM(iDealershipDoor1, V_ILEV_FIB_DOOR1, <<-31.72, -1101.85, 26.57>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor2)
ADD_DOOR_TO_SYSTEM(iDealershipDoor2, V_ILEV_FIB_DOOR1, <<-33.81, -1107.58, 26.57>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor3)
ADD_DOOR_TO_SYSTEM(iDealershipDoor3, V_ILEV_CSR_DOOR_L, <<-59.89, -1092.95, 26.88>>)
ENDIF
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor4)
ADD_DOOR_TO_SYSTEM(iDealershipDoor4, V_ILEV_CSR_DOOR_R, <<-60.55, -1094.75, 26.89>>)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor1)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iDealershipDoor1) <> 0.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iDealershipDoor1) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iDealershipDoor1, 0.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iDealershipDoor1, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor2)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iDealershipDoor2) <> 0.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iDealershipDoor2) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iDealershipDoor2, 0.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iDealershipDoor2, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor3)
IF DOOR_SYSTEM_GET_DOOR_STATE(iDealershipDoor3) != DOORSTATE_FORCE_UNLOCKED_THIS_FRAME
DOOR_SYSTEM_SET_DOOR_STATE(iDealershipDoor3, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iDealershipDoor4)
IF DOOR_SYSTEM_GET_DOOR_STATE(iDealershipDoor4) != DOORSTATE_FORCE_UNLOCKED_THIS_FRAME
DOOR_SYSTEM_SET_DOOR_STATE(iDealershipDoor4, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
//Michael's House Side Gate
IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iSideGate)
ADD_DOOR_TO_SYSTEM(iSideGate, PROP_BH1_48_GATE_1, <<-8489343, 179.3079, 70.0247>>)
ENDIF
IF IS_DOOR_REGISTERED_WITH_SYSTEM(iSideGate)
IF DOOR_SYSTEM_GET_OPEN_RATIO(iSideGate) <> 0.0
OR DOOR_SYSTEM_GET_DOOR_STATE(iSideGate) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(iSideGate, 0.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(iSideGate, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
//Michael's House Doors
IF sHouseDoorData[0].doorHash <> ENUM_TO_INT(DOORHASH_M_MANSION_F_L)
sHouseDoorData[0] = GET_DOOR_DATA(DOORNAME_M_MANSION_F_L)
sHouseDoorData[1] = GET_DOOR_DATA(DOORNAME_M_MANSION_F_R)
sHouseDoorData[2] = GET_DOOR_DATA(DOORNAME_M_MANSION_R_L1)
sHouseDoorData[3] = GET_DOOR_DATA(DOORNAME_M_MANSION_R_R1)
sHouseDoorData[4] = GET_DOOR_DATA(DOORNAME_M_MANSION_R_L2)
sHouseDoorData[5] = GET_DOOR_DATA(DOORNAME_M_MANSION_R_R2)
sHouseDoorData[6] = GET_DOOR_DATA(DOORNAME_M_MANSION_BW)
ENDIF
INT iHouseDoor
REPEAT COUNT_OF(sHouseDoorData) iHouseDoor
IF IS_DOOR_REGISTERED_WITH_SYSTEM(sHouseDoorData[iHouseDoor].doorHash)
IF DOOR_SYSTEM_GET_OPEN_RATIO(sHouseDoorData[iHouseDoor].doorHash) <> 0.0
OR DOOR_SYSTEM_GET_DOOR_STATE(sHouseDoorData[iHouseDoor].doorHash) != DOORSTATE_FORCE_LOCKED_THIS_FRAME
DOOR_SYSTEM_SET_OPEN_RATIO(sHouseDoorData[iHouseDoor].doorHash, 0.0, FALSE, FALSE)
DOOR_SYSTEM_SET_DOOR_STATE(sHouseDoorData[iHouseDoor].doorHash, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE)
ENDIF
ENDIF
ENDREPEAT
//Garage
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-160.906296, -1036.915771, 41.273239>>, <<95.394714, -1132.606201, 18.234772>>, 280.0)
OR (eMissionObjective >= cutArrive
AND eMissionObjective <= stageRammingSpeed)
IF intGarage = NULL
intGarage = GET_INTERIOR_AT_COORDS_WITH_TYPE(vDealership, "v_carshowroom")
ELSE
IF bPinnedGarage = FALSE
PIN_INTERIOR_IN_MEMORY(intGarage)
IF NOT IS_INTERIOR_READY(intGarage)
PRINTLN("PINNING INTERIOR...")
ELSE
bPinnedGarage = TRUE
ENDIF
ENDIF
ENDIF
ELIF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-255.981781, -1028.398804, 42.458290>>, <<135.906250, -1172.973267, 21.366043>>, 280.0)
IF intGarage <> NULL
IF bPinnedGarage = TRUE
UNPIN_INTERIOR(intGarage)
bPinnedGarage = FALSE
ENDIF
ENDIF
ENDIF
IF intGarage != NULL
IF eMissionObjective > stageDriveTo
IF NOT HAS_LABEL_BEEN_TRIGGERED("ShowroomShutter")
SET_BUILDING_STATE(BUILDINGNAME_ES_CAR_SHOWROOOM_SHUTTERS, BUILDINGSTATE_DESTROYED, TRUE) //Close the shutters
SET_LABEL_AS_TRIGGERED("ShowroomShutter", TRUE)
ENDIF
ENDIF
ENDIF
IF GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = intMansion
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-802.754333, 167.437836, 75.595863>>, <<-804.581543, 172.115005, 79.240799>>, 3.0)
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_DisablePlayerAutoVaulting, TRUE)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
ENDIF
ENDIF
IF (IS_BULLET_IN_BOX(<<-850.43, 139.94, 61.96>>, <<-770.38, 191.25, 74.20>>)
AND NOT IS_PED_PLANTING_BOMB(PLAYER_PED_ID())
AND NOT IS_PED_CURRENT_WEAPON_SILENCED(PLAYER_PED_ID())
AND IS_CURRENT_PED_WEAPON_NOISY(PLAYER_PED_ID()))
OR IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE, <<-848.457703, 168.873795, 58.593575>>, <<-768.442993, 168.834671, 93.190750>>, 55.0)
OR (DOES_ENTITY_EXIST(vehClimb)
AND NOT IS_ENTITY_DEAD(vehClimb)
AND IS_VEHICLE_ALARM_ACTIVATED(vehClimb))
eMissionFail = failNoise
missionFailed()
ENDIF
//Idle Anims
IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_MICHAEL))
SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS(PLAYER_PED(CHAR_MICHAEL), FALSE)
ENDIF
IF DOES_ENTITY_EXIST(PLAYER_PED(CHAR_FRANKLIN))
SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS(PLAYER_PED(CHAR_FRANKLIN), FALSE)
ENDIF
//Debug Routine
#IF IS_DEBUG_BUILD
debugRoutine()
#ENDIF
//Hide HUD/Radar
IF bRadar = FALSE
OR bOverHoodCinematicCam = TRUE
DISPLAY_RADAR(FALSE)
DISPLAY_HUD(FALSE)
ELSE
DISPLAY_RADAR(TRUE)
DISPLAY_HUD(TRUE)
ENDIF
// IF IS_INTERPOLATING_TO_SCRIPT_CAMS()
// OR IS_INTERPOLATING_FROM_SCRIPT_CAMS()
// OR (DOES_CAM_EXIST(camMain)
// AND IS_CAM_INTERPOLATING(camMain))
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_LR)
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_LEFT)
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_RIGHT)
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_UD)
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_UP)
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_DOWN)
// DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_BEHIND)
// ENDIF
IF eMissionObjective = stageGoToMansion OR eMissionObjective = stageClimbUp
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-843.0493, 172.7284, 68.7735>>, <<150.0, 150.0, 150.0>>)
IF HAS_MODEL_LOADED_CHECK(S_M_M_GARDENER_01)
IF NOT DOES_ENTITY_EXIST(pedGardener)
SPAWN_PED(pedGardener, S_M_M_GARDENER_01, <<-835.3764, 184.7189, 70.8434>>, 331.4128)
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_GARDENER_01)
SET_ENTITY_HEALTH(pedGardener, 101)
SET_PED_MAX_HEALTH(pedGardener, 101)
SET_PED_COMPONENT_VARIATION(pedGardener, PED_COMP_HEAD, 0, 1)
SET_PED_COMPONENT_VARIATION(pedGardener, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(pedGardener, PED_COMP_LEG, 1, 1)
SET_PED_COMPONENT_VARIATION(pedGardener, PED_COMP_SPECIAL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedGardener, PED_COMP_DECL, 2, 0)
SET_PED_PROP_INDEX(pedGardener, ANCHOR_HEAD, 0, 1)
BLOCK_PED_FROM_GENERATING_DEAD_BODY_EVENTS_WHEN_DEAD(pedGardener, TRUE)
SET_PED_HEARING_RANGE(pedGardener, 10.0)
SET_PED_VISUAL_FIELD_PROPERTIES(pedGardener, 40, 10, 30, -80, 80)
SET_PED_CONFIG_FLAG(pedGardener, PCF_DontInfluenceWantedLevel, TRUE)
//SET_PED_COMBAT_ATTRIBUTES(pedGardener, CA_ALWAYS_FLEE, TRUE)
ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, pedGardener, "GARDENER")
objLeafblower = CREATE_OBJECT(PROP_LEAF_BLOWER_01, <<-837.1777, 181.6656, 70.1302>>)
ATTACH_ENTITY_TO_ENTITY(objLeafblower, pedGardener, GET_PED_BONE_INDEX(pedGardener, BONETAG_PH_R_HAND), VECTOR_ZERO, VECTOR_ZERO)
// vGardenPoints[0] = <<-837.5160, 183.0201, 70.4801>>
// fGardenPoints[0] = 313.7573
// vGardenPoints[1] = <<-838.4312, 183.6012, 70.5555>>
// fGardenPoints[1] = 339.2294
// vGardenPoints[2] = <<-836.5823, 183.6595, 70.6604>>
// fGardenPoints[2] = 340.9408
// vGardenPoints[3] = <<-835.6536, 183.2167, 70.5513>>
// fGardenPoints[3] = 298.2337
// vGardenPoints[4] = <<-836.5137, 182.1445, 70.2603>>
// fGardenPoints[4] = 285.9332
// vGardenPoints[5] = <<-837.2863, 182.6584, 70.3903>>
// fGardenPoints[5] = 328.3498
// vGardenPoints[6] = <<-838.3234, 182.7076, 70.3408>>
// fGardenPoints[6] = 320.1913
ELSE
IF IS_ENTITY_ATTACHED(objLeafblower)
//Sound
IF sIDLeaf = -1
IF REQUEST_AMBIENT_AUDIO_BANK("GARDEN_LEAF_BLOWER")
sIDLeaf = GET_SOUND_ID()
PLAY_SOUND_FROM_ENTITY(sIDLeaf, "GARDENING_LEAFBLOWER_ANIM_TRIGGERED", objLeafblower)
ENDIF
ENDIF
//Particles
IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxLeaf)
REQUEST_PTFX_ASSET()
IF HAS_PTFX_ASSET_LOADED()
ptfxLeaf = START_PARTICLE_FX_LOOPED_ON_ENTITY("ent_anim_leaf_blower", objLeafblower, <<1.0, 0.0, -0.25>>, <<0.0, -45.0, 0.0>>)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedGardener)
AND IS_SCREEN_FADED_IN()
IF IS_PED_INJURED(pedGardener)
IF IS_THIS_PRINT_BEING_DISPLAYED("ARM3_GARDEN")
CLEAR_PRINTS()
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedGardener)
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictGarden)
IF NOT IS_ENTITY_PLAYING_ANIM(pedGardener, sAnimDictGarden, "Blower_Idle_a")
AND GET_SCRIPT_TASK_STATUS(pedGardener, SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK
TASK_PLAY_ANIM(pedGardener, sAnimDictGarden, "Blower_Idle_a", REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED)
ENDIF
ENDIF
IF NOT HAS_CLIP_SET_LOADED(sAnimDictGardenerMoveClipSet)
REQUEST_CLIP_SET(sAnimDictGardenerMoveClipSet)
ENDIF
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictGarden)
AND HAS_CLIP_SET_LOADED(sAnimDictGardenerMoveClipSet)
IF HAS_LABEL_BEEN_TRIGGERED("ARM3HLP_SNEAK")
IF NOT HAS_LABEL_BEEN_TRIGGERED("GardenerAdvance")
IF GET_GAME_TIMER() > iClimbTimer
//TASK_PLAY_ANIM(pedGardener, sAnimDictGarden, "Blower_Idle_a", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY | AF_LOOPING)
SET_PED_MOVEMENT_CLIPSET(pedGardener, sAnimDictGardenerMoveClipSet)
SET_PED_WEAPON_MOVEMENT_CLIPSET(pedGardener, sAnimDictGardenerMoveClipSet)
OPEN_SEQUENCE_TASK(seqMain)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-827.8197, 191.4635, 72.2064>>, 0.5 /*PEDMOVE_WALK*/, DEFAULT_TIME_NEVER_WARP, DEFAULT_NAVMESH_RADIUS, ENAV_DEFAULT, 299.3068)
TASK_PLAY_ANIM(NULL, sAnimDictGarden, "Blower_Idle_a", REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_LOOPING | AF_EXIT_AFTER_INTERRUPTED)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedGardener, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
SET_LABEL_AS_TRIGGERED("GardenerAdvance", TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
// IF NOT IS_PED_IN_COMBAT(pedGardener)
// SET_PED_MOVE_RATE_OVERRIDE(pedGardener, 0.5)
// ENDIF
ENDIF
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictGarden)
IF NOT HAS_LABEL_BEEN_TRIGGERED("ACT_stealth_kill_a_gardener")
ACTION_MANAGER_ENABLE_ACTION(HASH("ACT_stealth_kill_a_gardener"), TRUE)
SET_LABEL_AS_TRIGGERED("ACT_stealth_kill_a_gardener", TRUE)
ENDIF
ENDIF
IF IS_PLAYER_CLIMBING(PLAYER_ID())
iClimbTimer = GET_GAME_TIMER() + 3000
ENDIF
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), GET_ENTITY_COORDS(pedGardener, FALSE), <<8.0, 8.0, 2.0>>)
TASK_LOOK_AT_ENTITY(PLAYER_PED_ID(), pedGardener, 3000)
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-847.812927, 182.998001, 66.362663>>, <<-811.278198, 180.250854, 81.592949>>, 30.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-843.973389, 159.883316, 65.309196>>, <<-809.686829, 159.163422, 76.786880>>, 22.0)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-796.666016, 190.556183, 71.834915>>, <<-819.054932, 191.735168, 84.225395>>, 7.0)
SUPPRESS_SHOCKING_EVENTS_NEXT_FRAME()
IF IS_PED_PLANTING_BOMB(PLAYER_PED_ID())
OR IS_PED_CURRENT_WEAPON_SILENCED(PLAYER_PED_ID())
OR NOT IS_CURRENT_PED_WEAPON_NOISY(PLAYER_PED_ID())
SUPPRESS_CRIME_THIS_FRAME(PLAYER_ID(), CRIME_FIREARM_DISCHARGE)
ENDIF
IF IS_PED_INJURED(pedGardener)
OR HAS_ANIM_EVENT_FIRED(pedGardener, HASH("DROP"))
SAFE_REMOVE_BLIP(blipGardener)
DETACH_ENTITY(objLeafblower, TRUE, FALSE)
IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxLeaf)
STOP_PARTICLE_FX_LOOPED(ptfxLeaf)
ENDIF
IF sIDLeaf != -1
STOP_SOUND(sIDLeaf)
RELEASE_SOUND_ID(sIDLeaf)
sIDLeaf = -1
ENDIF
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(ARM3_GARDEN_KO) #IF IS_DEBUG_BUILD PRINTLN("GardenerTakedown = TRUE") #ENDIF
SET_LABEL_AS_TRIGGERED("GardenerTakedown", TRUE)
ENDIF
IF NOT DOES_BLIP_EXIST(blipGardener)
AND NOT HAS_LABEL_BEEN_TRIGGERED("GardenerTakedown")
SAFE_ADD_BLIP_PED(blipGardener, pedGardener)
ENDIF
IF GET_PED_RELATIONSHIP_GROUP_HASH(pedGardener) != relGroupEnemy
SET_PED_RELATIONSHIP_GROUP_HASH(pedGardener, relGroupEnemy)
ENDIF
IF NOT IS_PED_INJURED(pedGardener)
IF NOT HAS_LABEL_BEEN_TRIGGERED("GardenerAlert")
IF NOT HAS_LABEL_BEEN_TRIGGERED("GardenerTakedown")
OR IS_ENTITY_ATTACHED(objLeafblower)
IF IS_PED_IN_COMBAT(pedGardener)
OR IS_PED_RAGDOLL(pedGardener)
OR (CAN_PED_HEAR_PLAYER(PLAYER_ID(), pedGardener)
AND GET_GAME_TIMER() > iClimbTimer)
OR GET_PED_ALERTNESS(pedGardener) <> AS_NOT_ALERT
OR IS_PED_FLEEING(pedGardener)
OR (NOT IS_ENTITY_PLAYING_ANIM(pedGardener, sAnimDictGarden, "Blower_Idle_a")
AND GET_SCRIPT_TASK_STATUS(pedGardener, SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK)
//OR IS_PED_INJURED(pedGardener)
SET_LABEL_AS_TRIGGERED("ARM3_GARDEN", FALSE)
IF GET_FAILS_COUNT_TOTAL_FOR_THIS_MISSION_SCRIPT() % 2 = 0
CREATE_CONVERSATION_ADV("ARM3_GARDEN")
ELSE
CREATE_CONVERSATION_ADV("ARM3_GARDEN2")
ENDIF
SET_LABEL_AS_TRIGGERED("ARM3_GARDEN", TRUE)
CLEAR_PED_TASKS(pedGardener)
TASK_LOOK_AT_ENTITY(pedGardener, PLAYER_PED_ID(), 1000, SLF_USE_TORSO)
OPEN_SEQUENCE_TASK(seqMain)
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE)
TASK_REACT_AND_FLEE_PED(NULL, PLAYER_PED_ID())
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedGardener, seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
WHILE DOES_ENTITY_EXIST(pedGardener)
AND NOT IS_PED_INJURED(pedGardener)
AND NOT IS_PED_IN_COMBAT(pedGardener)
AND NOT IS_PED_RAGDOLL(pedGardener)
AND GET_SCRIPT_TASK_STATUS(pedGardener, SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK
WAIT_WITH_DEATH_CHECKS(0)
ENDWHILE
IF DOES_ENTITY_EXIST(pedGardener)
AND NOT IS_PED_INJURED(pedGardener)
AND IS_ENTITY_PLAYING_ANIM(pedGardener, sAnimDictGarden, "Blower_Idle_a")
STOP_ANIM_TASK(pedGardener, sAnimDictGarden, "Blower_Idle_a")
ENDIF
DETACH_ENTITY(objLeafblower, TRUE, FALSE)
IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxLeaf)
STOP_PARTICLE_FX_LOOPED(ptfxLeaf)
ENDIF
IF sIDLeaf != -1
STOP_SOUND(sIDLeaf)
RELEASE_SOUND_ID(sIDLeaf)
sIDLeaf = -1
ENDIF
iAlertTimer = GET_GAME_TIMER() + 2000
IF DOES_ENTITY_EXIST(pedGardener)
AND IS_PED_INJURED(pedGardener)
REPLAY_RECORD_BACK_FOR_TIME(5.5, 2.0, REPLAY_IMPORTANCE_HIGH)
ENDIF
SET_LABEL_AS_TRIGGERED("GardenerAlert", TRUE)
ENDIF
ENDIF
ELSE
IF GET_GAME_TIMER() > iAlertTimer
WAIT_WITH_DEATH_CHECKS(500)
eMissionFail = failNoise
missionFailed()
ENDIF
ENDIF
ENDIF
ELSE
//SAFE_REMOVE_BLIP(blipGardener)
IF NOT IS_PED_INJURED(pedGardener)
IF GET_PED_RELATIONSHIP_GROUP_HASH(pedGardener) = relGroupEnemy
IF IS_PED_IN_COMBAT(pedGardener)
CLEAR_PED_TASKS(pedGardener)
ENDIF
SET_PED_RELATIONSHIP_GROUP_HASH(pedGardener, relGroupBuddy)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//Looping Anims
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
AND NOT IS_PED_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
IF (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael") >= 1.0)
OR (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop2_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop2_michael") >= 1.0)
OR (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop3_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop3_michael") >= 1.0)
OR (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop4_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop4_michael") >= 1.0)
OR (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop5_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop5_michael") >= 1.0)
OR (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop6_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop6_michael") >= 1.0)
INT iRandom = GET_RANDOM_INT_IN_RANGE(0, 6)
IF iRandom = 0
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ELIF iRandom = 1
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop2_michael", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ELIF iRandom = 2
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop3_michael", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ELIF iRandom = 3
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop4_michael", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ELIF iRandom = 4
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop5_michael", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ELIF iRandom = 5
TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop6_michael", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ENDIF
ENDIF
ENDIF
//Interrupt Dialogue
IF SAFE_IS_PLAYER_CONTROL_ON()
AND eMissionObjective = stageDriveTo
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
IF (IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael")
AND GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_intro_michael") > 0.75)
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop2_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop3_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop4_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop5_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop6_michael")
IF (HAS_LABEL_BEEN_TRIGGERED("ARM3_DRIV"))
AND GET_GAME_TIMER() > iInterruptTimer
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_STOP")
IF NOT IS_STRING_NULL_OR_EMPTY(txtConversationPoint)
IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF IS_ENTITY_UPRIGHT(vehCar)
AND IS_VEHICLE_ON_ALL_WHEELS(vehCar)
//CREATE_CONVERSATION_FROM_SPECIFIC_LINE_ADV("ARM3_DRIV", txtConversationPoint)
txtConversationPoint = NULL_STRING()
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_PHONE")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_CRASH")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_FLIP")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_HIT")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_ROUTE")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_GOGO")
AND NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_GETOUT")
//Damages Car (Crashes)
IF GET_ENTITY_HEALTH(vehCar) < iCarHealth
OR GET_VEHICLE_PETROL_TANK_HEALTH(vehCar) < iCarGasTank
OR GET_VEHICLE_ENGINE_HEALTH(vehCar) < iCarEngineHealth
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED(txtConversationPoint)
txtConversationPoint = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
ENDIF
//CREATE_CONVERSATION_ADV("ARM3_CRASH", CONV_PRIORITY_HIGH)
INTERRUPT_CONVERSATION(PLAYER_PED(CHAR_MICHAEL), "ARM3_BGAA", "MICHAEL") PRINTLN("INTERRUPT_CONVERSATION - Damages Car (Crashes)")
iCarHealth = GET_ENTITY_HEALTH(vehCar)
iCarGasTank = GET_VEHICLE_PETROL_TANK_HEALTH(vehCar)
iCarEngineHealth = GET_VEHICLE_ENGINE_HEALTH(vehCar)
iInterruptTimer = GET_GAME_TIMER() + 12000
ENDIF
//Flips Car
IF NOT IS_ENTITY_UPRIGHT(vehCar)
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED(txtConversationPoint)
txtConversationPoint = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
ENDIF
//CREATE_CONVERSATION_ADV("ARM3_FLIP", CONV_PRIORITY_HIGH)
INTERRUPT_CONVERSATION(PLAYER_PED(CHAR_MICHAEL), "ARM3_BPAA", "MICHAEL") PRINTLN("INTERRUPT_CONVERSATION - Flips Car")
iInterruptTimer = GET_GAME_TIMER() + 12000
ENDIF
//Hits a Ped
INT iEventCount = 0
STRUCT_ENTITY_ID sei = CONSTRUCT_ENTITY_ID()
EVENT_NAMES eventType
REPEAT GET_NUMBER_OF_EVENTS(SCRIPT_EVENT_QUEUE_AI) iEventCount
eventType = GET_EVENT_AT_INDEX(SCRIPT_EVENT_QUEUE_AI, iEventCount)
SWITCH (eventType)
CASE EVENT_ENTITY_DESTROYED
CASE EVENT_ENTITY_DAMAGED
//Figure out what type of entity it is
GET_EVENT_DATA(SCRIPT_EVENT_QUEUE_AI, iEventCount, sei, SIZE_OF(STRUCT_ENTITY_ID))
IF DOES_ENTITY_EXIST(sei.EntityId)//sei.EntityId
IF IS_ENTITY_A_PED(sei.EntityId)
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED(txtConversationPoint)
txtConversationPoint = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
ENDIF
//CREATE_CONVERSATION_ADV("ARM3_HIT", CONV_PRIORITY_HIGH)
INTERRUPT_CONVERSATION(PLAYER_PED(CHAR_MICHAEL), "ARM3_BHAA", "MICHAEL") PRINTLN("INTERRUPT_CONVERSATION - Hits a Ped")
IF eventType = EVENT_ENTITY_DESTROYED
INFORM_MISSION_STATS_OF_INCREMENT(ARM3_INNOCENTS_KILLED)
ENDIF
iInterruptTimer = GET_GAME_TIMER() + 12000
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDREPEAT
//Off Route
//ARM3_ROUTE
//Doesn't Drive
IF NOT HAS_LABEL_BEEN_TRIGGERED("ARM3_STOP")
IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop2_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop3_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop4_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop5_michael")
OR IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictArm3, "michaelappears_loop6_michael")
IF NOT HAS_LABEL_BEEN_TRIGGERED("Destination1")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination2")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination3")
AND NOT HAS_LABEL_BEEN_TRIGGERED("Destination4")
IF GET_ENTITY_SPEED(vehCar) < 1.0
IF iStoppedTimer = -1
iStoppedTimer = GET_GAME_TIMER() + 3000
ENDIF
ELSE
iStoppedTimer = -1
ENDIF
IF iStoppedTimer != -1
AND GET_GAME_TIMER() > iStoppedTimer
AND NOT HAS_LABEL_BEEN_TRIGGERED("HaltVehicle")
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED(txtConversationPoint)
txtConversationPoint = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
ENDIF
//CREATE_CONVERSATION_ADV("ARM3_GOGO", CONV_PRIORITY_HIGH)
INTERRUPT_CONVERSATION(PLAYER_PED(CHAR_MICHAEL), "ARM3_BJAA", "MICHAEL") PRINTLN("INTERRUPT_CONVERSATION - Doesn't Drive")
iInterruptTimer = GET_GAME_TIMER() + 12000
ENDIF
ENDIF
ENDIF
ENDIF
//Tries to Get Out
IF IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_VEH_EXIT)
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED(txtConversationPoint)
txtConversationPoint = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
ENDIF
//CREATE_CONVERSATION_ADV("ARM3_GETOUT", CONV_PRIORITY_HIGH)
INTERRUPT_CONVERSATION(PLAYER_PED(CHAR_MICHAEL), "ARM3_BKAA", "MICHAEL") PRINTLN("INTERRUPT_CONVERSATION - Tries to Get Out")
iInterruptTimer = GET_GAME_TIMER() + 12000
ENDIF
//Uses Phone
IF IS_PHONE_ONSCREEN(TRUE)
IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("ARM3_DRIV")
OR IS_THIS_CONVERSATION_ONGOING_OR_QUEUED(txtConversationPoint)
txtConversationPoint = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
ENDIF
//CREATE_CONVERSATION_ADV("ARM3_PHONE", CONV_PRIORITY_HIGH)
INTERRUPT_CONVERSATION(PLAYER_PED(CHAR_MICHAEL), "ARM3_BLAA", "MICHAEL") PRINTLN("INTERRUPT_CONVERSATION - Uses Phone")
HANG_UP_AND_PUT_AWAY_PHONE()
DISABLE_CELLPHONE(TRUE)
iInterruptTimer = GET_GAME_TIMER() + 12000
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(PLAYER_PED_ID(), ARM3_DAMAGE)
ENDIF
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), ARM3_CAR_DAMAGE)
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), ARM3_MAX_SPEED)
ELSE
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL, ARM3_CAR_DAMAGE)
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(NULL, ARM3_MAX_SPEED)
ENDIF
//Stop peds attacking player
SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME(PLAYER_ID())
SUPPRESS_CRIME_THIS_FRAME(PLAYER_ID(), CRIME_DRIVE_AGAINST_TRAFFIC)
SUPPRESS_CRIME_THIS_FRAME(PLAYER_ID(), CRIME_RUN_REDLIGHT)
SUPPRESS_CRIME_THIS_FRAME(PLAYER_ID(), CRIME_RECKLESS_DRIVING)
SUPPRESS_CRIME_THIS_FRAME(PLAYER_ID(), CRIME_SPEEDING)
LOAD_UNLOAD_ASSETS()
AUDIO_CONTROLLER()
// PRINTLN("GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL() = ", ENUM_TO_INT(GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL()))
// PRINTLN("GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = ", ENUM_TO_INT(GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)))
//Objective switch
SWITCH eMissionObjective
CASE initMission
initialiseMission()
BREAK
CASE cutIntro
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3LeadInOut)
cutsceneIntro()
ENDIF
BREAK
CASE stageGoToMansion
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3LeadInOut)
GoToMansion()
ENDIF
BREAK
CASE stageClimbUp
IF HAS_MODEL_LOADED_CHECK(BJXL)
//AND HAS_MODEL_LOADED_CHECK(PROP_HD_SEATS_01)
AND HAS_MODEL_LOADED_CHECK(BISON3)
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
ClimbUp()
ENDIF
BREAK
CASE cutArgue
IF HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_JIMMY))
AND HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_TRACEY))
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3Climb)
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3Argue)
cutsceneArgue()
ENDIF
BREAK
CASE stageSneakThrough
IF HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_JIMMY))
AND HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_TRACEY))
AND HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_AMANDA))
AND HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_TENNIS_COACH))
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3Argue)
SneakThrough()
ENDIF
BREAK
CASE stageStealCar
IF HAS_MODEL_LOADED_CHECK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
StealCar()
ENDIF
BREAK
CASE stageDriveTo
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
DriveTo()
ENDIF
OVER_HOOD_CINEMATIC_CAM()
BREAK
CASE cutArrive
CutsceneArrive()
BREAK
CASE stageRammingSpeed
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictArm3)
AND HAS_MODEL_LOADED_CHECK(PROP_SHOWROOM_GLASS_1B)
RammingSpeed()
ENDIF
BREAK
CASE cutWindowSmash
IF HAS_MODEL_LOADED_CHECK(GET_NPC_PED_MODEL(CHAR_SIMEON))
AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictLeadInMCS8)
// AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictSlam)
CutsceneWindowSmash()
ENDIF
BREAK
CASE stageBeatDown
IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictAngry)
// AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictSlam)
BeatDown()
ENDIF
BREAK
// CASE stageExitDealership
// ExitDealership()
// BREAK
// CASE stageSwitchTutorial
// SwitchTutorial()
// BREAK
CASE passMission
missionPassed()
BREAK
CASE failMission
missionFailed()
BREAK
ENDSWITCH
WAIT(0)
ENDWHILE
//Script should never reach here. Always terminate with cleanup function.
ENDSCRIPT