12029 lines
448 KiB
Python
Executable File
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
|