//+-----------------------------------------------------------------------------+ //¦ ¦ //¦ Author: Alan Litobarski Date: 06/09/2010 ¦ //¦ ¦ //¦-----------------------------------------------------------------------------¦ //¦ ¦ //¦ Prologue - (Prologue1.sc) ¦ //¦ ¦ //¦ Ludendorff, North Yankton, 2003. Michael, Trevor and Brad ¦ //¦ are holding up a cash depot. The mission introduces all the ¦ //¦ core gameplay (walking, driving, shooting, switching, etc.) ¦ //¦ in a fast paced tutorial mission. At the end of the heist ¦ //¦ Michael is seen getting shot and assumed dead. ¦ //¦ ¦ //+-----------------------------------------------------------------------------+ //---------------------------------¦ HEADERS ¦----------------------------------- 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_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_hud.sch" USING "commands_itemsets.sch" USING "commands_network.sch" USING "cellphone_public.sch" USING "flow_public_core_override.sch" USING "flow_public_game.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 "chase_hint_cam.sch" USING "LineActivation.sch" USING "script_blips.sch" USING "script_heist.sch" USING "script_buttons.sch" USING "replay_public.sch" USING "cam_recording_public.sch" USING "help_at_location.sch" USING "cutscene_public.sch" USING "mission_stat_public.sch" USING "CompletionPercentage_public.sch" USING "cheat_controller_public.sch" USING "commands_recording.sch" USING "script_misc.sch" #IF IS_DEBUG_BUILD USING "script_debug.sch" USING "select_mission_stage.sch" #ENDIF //--------------------------------¦ VARIABLES ¦---------------------------------- //Integers CONST_INT REPLAY_VALUE_CURRENT_TAKE 0 #IF IS_DEBUG_BUILD FLOAT fDistIntoCover = 2.0 FLOAT fTimeIntoCover = 0.9 #ENDIF INT iCutsceneStage INT iDialogueStage = 0 INT iDialogueLineCount[5] INT iDialogueTimer INT iCopPerFrame INT iCarPerFrame INT iAmbientTimer INT iHelpTimer = -1 INT iBulletTimers[6] INT iRespawnTimers[8] INT iFailTimer INT iCreditsStage ENUM BLEND_IN_TIMER BLEND_IN_MICHAEL, BLEND_IN_TREVOR, BLEND_IN_BRAD ENDENUM INT iBlendInTimer[COUNT_OF(BLEND_IN_TIMER)] INT iCoverAnimTimer INT iTrainHornTimer VECTOR vTrainHornLocation INT iAccountBalance CONST_INT iTotalHostages 4 CONST_INT iTotalCops 42 CONST_INT iTotalCopVan 2 CONST_INT iTotalCopCar 20 CONST_INT iTotalVan 2 CONST_INT iTotalTraffic 2 CONST_INT iTotalTrain 8 CONST_INT iTotalCrate 3 CONST_INT iTotalBarrier 4 CONST_INT iTotalScreens 8 //INT iShotScreen[10] //CCTV room //INT iShotScreenTimer[10] INT iHostageAimTimer[iTotalHostages] INT iStuckTimer //Car is stuck in snow INT iTimerCopCars //Timer to track cop cars in cashdepot shootout INT iDeadCopPlus INT iSequenceBuddy, iSequenceBrad VECTOR vSequenceBuddy, vSequenceBrad ENUM PEDRESETFLAG_TIMER MICHAEL_PRF_TIMER, TREVOR_PRF_TIMER, BRAD_PRF_TIMER ENDENUM //INT iPedResetFlagTimer[COUNT_OF(PEDRESETFLAG_TIMER)] //Stats //INT iAmmo = -1 //WEAPON_TYPE wtCurrent //Bools BOOL bVideoRecording BOOL bInitStage BOOL bCleanupStage BOOL bRadar #IF IS_DEBUG_BUILD //Debug BOOL bAutoSkipping #ENDIF BOOL bSkipped //Used for J-skipping and Mid Mission Replay BOOL bReplaySkip BOOL bCutsceneSkipped //Tracks if WAS_CUTSCENE_SKIPPED() returns TRUE BOOL bPassed //Passed the mission BOOL bGarageVisible BOOL bGrabShutter #IF FEATURE_GEN9_EXCLUSIVE BOOL bPlayGarageSound #ENDIF BOOL bSwapTrolley BOOL bPillarCoverRight BOOL bAudioStream //Fix for bug 2284329 #IF IS_DEBUG_BUILD BOOL bDebugDisplayCreditsText BOOL bDebugClearCreditsText FLOAT fDebugCreditsBlockX FLOAT fDebugCreditsBlockY TEXT_WIDGET_ID textWidgetCreditsAlign TEXT_WIDGET_ID textWidgetText1 TEXT_WIDGET_ID textWidgetText2 TEXT_WIDGET_ID textWidgetText3 TEXT_WIDGET_ID textWidgetFont1 TEXT_WIDGET_ID textWidgetFont2 TEXT_WIDGET_ID textWidgetFont3 TEXT_WIDGET_ID textWidgetCreditsColour1 TEXT_WIDGET_ID textWidgetCreditsColour2 TEXT_WIDGET_ID textWidgetCreditsColour3 BOOL bDebugDoors BOOL bDebugHelpText BOOL bDebugAudio #ENDIF //Vectors and Floats VECTOR VECTOR_ZERO = <<0.0, 0.0, 0.0>> VECTOR vPlayerStart = <<5311.2363, -5212.5635, 85.7187 - 3.2>> CONST_FLOAT fPlayerStart 10.6920 VECTOR vTrevorStart = <<5308.4175, -5212.3984, 85.7187 - 3.2>> CONST_FLOAT fTrevorStart 350.4967 VECTOR vBuddyStart = <<5311.9736, -5211.5239, 85.7187 - 3.2>> CONST_FLOAT fBuddyStart 21.6992 VECTOR vCar = <<5428.7910, -5115.1890, 77.2632>> CONST_FLOAT fCar 100.9597 VECTOR vHostageStart[iTotalHostages] FLOAT fHostageStart[iTotalHostages] VECTOR vCopStart[iTotalCops] FLOAT fCopStart[iTotalCops] VECTOR vGaragePosition = <<5320.60, -5188.56, 82.50>> VECTOR vGarageRotate = <<0.0, 0.0, -90.0>> VECTOR vDoorPosition = <<5308.8574, -5208.1560, 86.9186 - 3.2 -0.05>> VECTOR vDoorRotate = <<0.0, 0.0, 0.0>> VECTOR vRoute[40] VECTOR vRoutePoint1[14] VECTOR vRoutePoint2[14] FLOAT fRouteWidth[14] FLOAT fSnowMarks // Path that Brad & Michael take to get to the getaway car VECTOR vPathToGetawayCar[3] INT iNavMeshBlockingID1, iNavMeshBlockingID2, iNavMeshBlockingID3, iNavMeshBlockingID4 INT iNavMeshBlockingNearGarage, iNavMeshBlockingFarm, iNavMeshBlockingCopPath1, iNavMeshBlockingCopPath2 //FLOAT fAnimTotalTime, fAnimProgressTime //Strings TEXT_LABEL_23 txtConversationPoint //Carrec STRING sCarrec = "ALPrologue" //Anim Dicts //STRING sAnimDictSignal = "misscarsteal3" STRING sAnimDictMapObjects = "Map_Objects" //Animation Dictionaries STRING sAnimDictDeepSnow = "missprologuesnow_moves" STRING sAnimDictDeadGuard = "missprologuedead_guard" STRING sAnimDictPrologue1 = "missprologueig_1" STRING sAnimDictPrologue2_MCS1_GuardFacial = "facials@blend_out@static_hostage_2-pro_mcs_1_face@guard-pro_mcs_1" STRING sAnimDictPrologue2 = "missprologueig_2" STRING sAnimDictPrologue2_MCS1 = "missprologuemcs_1" STRING sAnimDictPrologue2_TrevorReturn = "missprologueig_3@get_into_cover" STRING sAnimDictPrologue3 = "missprologueig_3@react_to_explosion" STRING sAnimDictPrologue3_Cam = "missprologueig_3" //"missprologueig_3@react_to_explosion" STRING sAnimDictPrologue3_Impatient = "missprologueig_3@cover_impatient" STRING sAnimDictPrologue3_IdleAtCupboard = "missprologuebrad_alert_idle" STRING sAnimDictPrologue3_IdleInVault = "missbigscore2big_2" STRING sAnimDictPrologue_LeaveVault = "missprologuemcs_2_walkout_vault" STRING sAnimDictPrologue4_Base = "missprologueig_4@hold_head_base" STRING sAnimDictPrologue4_Shot = "missprologueig_4@wipe_blood" STRING sAnimDictPrologue4_PlayerPause = "missprologueig_4_p2" STRING sAnimDictPrologue4_Fail = "missprologueig_4@kill_michael" STRING sAnimDictPrologue5_Start = "missprologueig_5@set_c4_start_loop" STRING sAnimDictPrologue5_Main = "missprologueig_5@set_c4_mainaction" STRING sAnimDictPrologue5_End = "missprologueig_5@set_c4_end_loop" STRING sAnimDictPrologue5_Duck = "missprologueig_5@press_button_duck" STRING sAnimDictPrologue_LeadOut = "missprologueleadinoutpro_mcs_5_p3" STRING sAnimDictPrologue6 = "missprologueig_6" STRING sAnimDictPrologue6FirstPerson = "MISSPROLOGUEIG_6@FIRST_PERSON" STRING sAnimDictPrologue_Cough = "missprologueig_5@cough" STRING sAnimDictPrologue_CleanSmoke = "missprologueig_5@clean_smoke" //Waypoints STRING sWaypointRoute1 = "prolog2" //Trevor follow to the vault STRING sWaypointRoute2 = "prolog5" //Trevor leaves the vault //Scenes INT sceneIntro, sceneIntroTrevor, sceneIntroBradHostage, sceneIntroBrad, sceneIntroHostage VECTOR sceneIntroPos = <<5310.140, -5208.314, 82.557 - 0.04>> VECTOR sceneIntroRot = <<0.0, 0.0, 0.0>> INT sceneIntroCam INT sceneHostage VECTOR sceneHostagesPos = <<5310.140, -5208.270, 82.520>> VECTOR sceneHostagesRot = <<0.0, 0.0, 0.0>> INT sceneVaultReact VECTOR sceneVaultReactPos = <<5310.140, -5208.279, 82.520>> VECTOR sceneVaultReactRot = <<0.0, 0.0, 0.0>> INT sceneVaultReactCam VECTOR sceneVaultReactCamPos = <<5310.083, -5204.825, 82.520>> //<<5310.140, -5208.279, 82.520>> VECTOR sceneVaultReactCamRot = <<0.0, 0.0, 0.0>> INT sceneLoopVault INT sceneLeaveVault VECTOR scenePosition = <<5298.805, -5188.455, 82.540>> VECTOR sceneRotation = <<0.0, 0.0, -90.0>> //INT sceneGuardAmbush VECTOR sceneGuardAmbushPos = <<5297.250, -5192.246, 82.523>> VECTOR sceneGuardAmbushRot = <<0.0, 0.0, 180.0>> INT sceneBlastDoors VECTOR sceneBlastDoorsPos = <<5316.087, -5178.637, 82.519>> VECTOR sceneBlastDoorsRot = <<0.0, 0.0, 0.0>> INT sceneDuckUnder, sceneShutterSwitch VECTOR sceneDuckUnderPos = <<5320.469 + 0.25, -5186.864, 82.519>> VECTOR sceneDuckUnderRot = <<0.0, 0.0, 0.0>> //INT sceneToCover //VECTOR sceneToCoverPos = <<5327.350, -5185.658, 81.823>> //VECTOR sceneToCoverRot = <<0.0, 0.0, 0.0>> INT sceneMichaelDead INT sceneAnimatedFirstPersonCam //---------------------------------¦ INDEXES ¦----------------------------------- //Ped PED_INDEX playerPedID PED_INDEX notPlayerPedID PED_INDEX playerPedMichael PED_INDEX playerPedTrevor PED_INDEX pedBrad PED_INDEX pedGetaway ENUM hostagePeds HostageGuard, HostageFemale, HostageMale1, HostageMale2 ENDENUM PED_INDEX pedHostage[iTotalHostages] PED_INDEX pedGuard PED_INDEX pedCop[iTotalCops] PED_INDEX pedTraffic[iTotalTraffic] PED_INDEX pedDeadGuard AI_BLIP_STRUCT blipStructCop[iTotalCops] //Vehicle VEHICLE_INDEX vehCar VEHICLE_INDEX vehCop[iTotalCopCar] VEHICLE_INDEX vehVan[iTotalVan] VEHICLE_INDEX vehCarInLot VEHICLE_INDEX vehTraffic[iTotalTraffic] VEHICLE_INDEX vehTrain[iTotalTrain] //Cutscene Index ENUM cutsceneEntity CopCarDriver, CopCarShotgun ENDENUM PED_INDEX pedCutscene[COUNT_OF(cutsceneEntity)] VEHICLE_INDEX vehCutscene //Blip BLIP_INDEX blipMichael BLIP_INDEX blipTrevor BLIP_INDEX blipBuddy BLIP_INDEX blipGuard BLIP_INDEX blipCar BLIP_INDEX blipCover BLIP_INDEX blipDestination BLIP_INDEX blipHostage[iTotalHostages] BLIP_INDEX blipCash BLIP_INDEX blipCop[iTotalCops] BLIP_INDEX blipScreen[iTotalScreens] //Camera CAMERA_INDEX camMain CAMERA_INDEX camInterpDOF CAMERA_INDEX camAnim CAMERA_INDEX camCinematic //Sequence SEQUENCE_INDEX seqMain //Interior INTERIOR_INSTANCE_INDEX intDepot //Object ENUM WEAPON_REGISTER WEAPON_MICHAEL, WEAPON_TREVOR, WEAPON_BRAD, WEAPON_DAVE ENDENUM OBJECT_INDEX objWeapon[COUNT_OF(WEAPON_REGISTER)] OBJECT_INDEX objCupboardDoor OBJECT_INDEX objCash OBJECT_INDEX objGarage OBJECT_INDEX objGun OBJECT_INDEX objBomb OBJECT_INDEX objBombGreen OBJECT_INDEX objBomb3 OBJECT_INDEX objBomb2 OBJECT_INDEX objBomb1 OBJECT_INDEX objDoor OBJECT_INDEX objHiddenCollision OBJECT_INDEX objBarrier[iTotalBarrier] //OBJECT_INDEX objScreen[iTotalScreens] OBJECT_INDEX objDebris ENUM BAG_PROPS BRAD_BAG_STATIC, BRAD_BAG_ANIM, BRAD_BAG_ANIM_STRAP, MICHAEL_BAG_STATIC, TREVOR_BAG_STATIC, TREVOR_BAG_DROPPED ENDENUM OBJECT_INDEX objBag[COUNT_OF(BAG_PROPS)] ENUM BALACLAVA_PROPS MICHAEL_BALACLAVA, TREVOR_BALACLAVA, TREVOR_SKIMASK ENDENUM OBJECT_INDEX objBalaclava[COUNT_OF(BALACLAVA_PROPS)] ENUM LIGHTING_RIG_PROPS LIGHTING_RIG_OPENING, LIGHTING_RIG_HOSTAGE, LIGHTING_RIG_VAULT, LIGHTING_RIG_GUARD ENDENUM OBJECT_INDEX objLightingRig[COUNT_OF(LIGHTING_RIG_PROPS)] //Particle PTFX_ID ptfxSmoke, ptfxFog PTFX_ID ptfxRadiator INT iEmberTimer PTFX_ID ptfxEmber, ptfxSmokeCloud //Cover COVERPOINT_INDEX covPoint[5] COVERPOINT_INDEX covPointBlastDoors[4] COVERPOINT_INDEX covPointMap[5] ITEMSET_INDEX itemCover //Weapons WEAPON_TYPE wtPistol = WEAPONTYPE_PISTOL WEAPON_TYPE wtSMG = WEAPONTYPE_SMG WEAPON_TYPE wtCarbineRifle = WEAPONTYPE_CARBINERIFLE WEAPON_TYPE wtShotgun = WEAPONTYPE_PUMPSHOTGUN //Relationship Groups REL_GROUP_HASH relGroupFriendlyFire REL_GROUP_HASH relGroupBuddy REL_GROUP_HASH relGroupEnemy //Kinematic Flag Tracking enumCharacterList eKinematicChar = NO_CHARACTER //Rayfire RAYFIRE_INDEX rfVaultExplosion RAYFIRE_INDEX rfSecDoorExplosion //Sound IDs INT sIDBargeDoor = -1 INT sIDVaultExplosion = -1 INT sIDSecDoorBombBeep = -1 INT sIDSecDoorBlast = -1 INT sIDDistantSirens = -1 INT sIDSecurityDoorAlarm = -1 INT sIDHeadShot = -1 INT sIDCopCarExplosion = -1 INT sIDDistantSirensFarm = -1 INT sIDTrainBell = -1 INT sIDTrainHorn = -1 #IF FEATURE_GEN9_EXCLUSIVE INT sIDGarageDoor = -1 #ENDIF //Model Names //MODEL_NAMES modCash = PROP_CASH_CRATE_01 MODEL_NAMES modBomb = PROP_C4_FINAL MODEL_NAMES modBombGreen = PROP_C4_FINAL_GREEN MODEL_NAMES modBomb3 = PROP_C4_NUM_0003 MODEL_NAMES modBomb2 = PROP_C4_NUM_0002 MODEL_NAMES modBomb1 = PROP_C4_NUM_0001 MODEL_NAMES modBarrier = PROP_BARRIER_WORK06A #IF IS_DEBUG_BUILD WIDGET_GROUP_ID widGroup BOOL bDebugLightingRig BOOL bDebugSwitchCamAnimSide #ENDIF //----------------------------------¦ ENUMS ¦------------------------------------ ENUM MissionObjective initMission, cutIntro, stageLearnWalking, cutTieUp, stageLearnAiming, stageLearnPhone, stageLearnBlips, stageLeaveVault, cutGuard, stageBlastDoors, stageDuckUnderShutter, stageShootOut, cutGetAway, stageGetAway, cutFinale, stageFinale, passMission, failMission ENDENUM MissionObjective eMissionObjective = initMission #IF IS_DEBUG_BUILD MissionObjective eMissionObjectiveAutoJSkip = initMission #ENDIF ENUM MissionFail failDefault, failPlayerDied, failMichaelDied, failTrevorDied, failBradDied, failDriverDied, failHostageDied, failCarDestroyed, failOutOfAmmo, failOffRoute, failStuck, failAbandonedTrevor, failAbandonedMichael, failAbandonedCrew, failAbandonedCar, failRanAway, failHostageGotAway ENDENUM MissionFail eMissionFail = failDefault ENUM AUDIO_TRACK NO_AUDIO, PROLOGUE_TEST_MISSION_START, PROLOGUE_TEST_HOSTAGES, PROLOGUE_TEST_PRE_SAFE_EXPLOSION, PROLOGUE_TEST_COLLECT_MONEY, PROLOGUE_TEST_COLLECT_CASH, PROLOGUE_TEST_GUARD_HOSTAGE_OS, PROLOGUE_TEST_GUARD_HOSTAGE, PROLOGUE_TEST_GUARD_HOSTAGE_RT, PROLOGUE_TEST_GUARD_SWITCH, PROLOGUE_TEST_HEAD_TO_SECURITY_ROOM_MA, PROLOGUE_TEST_COVER_AT_BLAST_DOORS, PROLOGUE_TEST_BLAST_DOORS_EXPLODE, PROLOGUE_TEST_SHUTTER_OPEN_OS, PROLOGUE_TEST_COP_GUNFIGHT, PROLOGUE_TEST_COP_GUNFIGHT_PROGRESS, PROLOGUE_TEST_COP_GUNFIGHT_RT, PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE, PROLOGUE_TEST_GETAWAY_CUTSCENE, PROLOGUE_TEST_GETAWAY_RT, PROLOGUE_TEST_POLICE_CAR_CHASE_OS, PROLOGUE_TEST_POLICE_CAR_CHASE, PROLOGUE_TEST_POLICE_CAR_CRASH, PROLOGUE_TEST_CAR_CHASE, PROLOGUE_TEST_POLICE_DRIVE_BY, PROLOGUE_TEST_ROADBLOCK_WARNING, PROLOGUE_TEST_TRAIN_CRASH, PROLOGUE_TEST_BRAD_DOWN, PROLOGUE_TEST_AFTER_TRAIN, PROLOGUE_TEST_FINALE_RT, PROLOGUE_TEST_GRAB_WOMAN, PROLOGUE_TEST_FINAL_CUTSCENE, PROLOGUE_TEST_FINAL_CUTSCENE_MA, PROLOGUE_TEST_MISSION_END, PROLOGUE_TEST_FAIL, PROLOGUE_TEST_KILL_ONESHOT, PROLOGUE_TEST_MISSION_CLEANUP ENDENUM AUDIO_TRACK ePrepAudioTrack = NO_AUDIO AUDIO_TRACK ePlayAudioTrack = NO_AUDIO //Stage Selector #IF IS_DEBUG_BUILD 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" SkipMenuStruct[2].sTxtLabel = "stageLearnWalking" SkipMenuStruct[3].sTxtLabel = "cutTieUp - (pro_mcs_1)" SkipMenuStruct[4].sTxtLabel = "stageLearnAiming" SkipMenuStruct[5].sTxtLabel = "stageLearnPhone" SkipMenuStruct[6].sTxtLabel = "stageLearnBlips - (pro_mcs_2)" SkipMenuStruct[7].sTxtLabel = "stageLeaveVault" SkipMenuStruct[8].sTxtLabel = "cutGuard - (pro_mcs_3_pt1)" // SkipMenuStruct[9].sTxtLabel = "stageDisableCameras" SkipMenuStruct[9].sTxtLabel = "stageBlastDoors" SkipMenuStruct[10].sTxtLabel = "stageDuckUnderShutter" SkipMenuStruct[11].sTxtLabel = "stageShootOut" SkipMenuStruct[12].sTxtLabel = "cutGetAway - (pro_mcs_5)" SkipMenuStruct[13].sTxtLabel = "stageGetAway" SkipMenuStruct[14].sTxtLabel = "cutFinale - (PRO_MCS_6)" SkipMenuStruct[15].sTxtLabel = "stageFinale - (PRO_MCS_7_Concat)" ENDPROC #ENDIF //Text STRING sConversationBlock = "PROAUD" ENUM TRIGGEREDBOOLS AdvanceCop0, AdvanceCop6, AmbientAnims, AnimStarted, BlastDoorsReady, BradAndHostage, BradHeadWound, BradHostages, BradShot, BradStartCombat, CLEANSMOKE, CMN_GENGETBCK, CMN_GENGETIN, COUGHING, CatchUpCam, ClearShutterTasks, CopCarWave1, CopCarWave2, CopCarWave3, CopCarsBackupPlayback, CopCarsPlayback, CopFarm0, CopFarm1, CopFarm2, CopFarm3, CopFarm4, CopFarm5, CopFarm6, CopFarm7, CopsArrive0, CopsArrive1, CopsArrive2, CopsArrive3, CopsArrive4, CopsArrive5, Cops_Arrive_2, CutsceneBagRemove, DoorIsClosing, DriverDied, FinalCar1Driver, FinalCar1Passenger, FinalCar2Driver, FinalCar2Passenger, FirstSwitchMade, FirstWaveDead, FootstepHostageGuard, FootstepHostageMale1, FootstepHostageMale2, ForceIdlePlayer, GameCamCash, GuardHeadWound, GuardShootMichael, HURRY_HOSTAGES, HintCamBomb, HintCamBombStop, HintSet, HostageGuardScream, HostageMale1Scream, HostageMale2Scream, MichaelBag, MichaelCash, MichaelCashLost, MichaelDeadAnim, MichaelStartCombat, MichaelWillDie, NODES_LOADED, PLAYER_MOVED_AIM, PROHLP_AIM1a, PROHLP_AIM1b, PROHLP_AIM1c, PROHLP_AIM2a, PROHLP_AIM2b, PROHLP_AIM3, PROHLP_TRADAIM, PROHLP_BLIPS1, PROHLP_BLIPS2, PROHLP_BLIPS3, PROHLP_BLIPS4, CMN_FPSHELP, PROHLP_CAR2, PROHLP_CAR3, PROHLP_CAR4, PROHLP_CARSWITCH, PROHLP_COVER1, PROHLP_COVER2, PROHLP_COVER3, PROHLP_DEST1, PROHLP_DEST2, PROHLP_FREEAIM2, PROHLP_FREEAIM3, PROHLP_FREEAIM4, PROHLP_FREEAIMa, PROHLP_FREEAIMb, PROHLP_FREEAIMc, PROHLP_HURRY, PROHLP_RADAR, PROHLP_RELOAD, PROHLP_RUN, PROHLP_RUNANDGUN, PROHLP_SPRINT, PROHLP_SWITCH2, PROHLP_SWITCH3, PROHLP_SWITCH4, PROHLP_SWITCH6, PROHLP_WALK, PRO_AIM, PRO_Advance_1, PRO_BUDDY, PRO_Back, PRO_BackHere, PRO_Bills, PRO_Blockade, PRO_CAR1, PRO_CAR2, PRO_CARCREW, PRO_CASH, PRO_CHARGES, PRO_COP, PRO_COPFARM, PRO_COVER1, PRO_Charges_Set, PRO_Combat2, PRO_Combat3, PRO_CombatB, PRO_CombatM, PRO_CombatT, PRO_Cover, PRO_Door, PRO_Doors_1, PRO_Doors_3, PRO_Doors_4, PRO_Set2, PRO_Set3, PRO_cover1alt, PRO_cover2, PRO_Drive, PRO_Drive1_1, PRO_Drive1_2, PRO_Drive1_3, PRO_Drive1_4, PRO_Drive1_5, PRO_Drive2_1, PRO_Drive2_2, PRO_Drive2_3, PRO_Drive2_4, PRO_Drive2_5, PRO_Drive2_6, PRO_Drive2_7, PRO_Drive2_8, PRO_Drive_1, PRO_Drive_2, PRO_FLAA, PRO_FLAB, PRO_FLAC, PRO_FLAD, PRO_GETAWAY, PRO_Where, PRO_GUARD, PRO_GenIdle, PRO_GetIn_1, PRO_GetIn_3, PRO_HostGap_1, PRO_HostGap_2, PRO_HostGap_3, PRO_Hostage, PRO_HostageF, PRO_HostageP, PRO_Idle1B, PRO_Idle1T, PRO_callit, PRO_detonate, PRO_Idle3_1, PRO_Idle3_2, PRO_Idle3_3, PRO_Idle3_4, PRO_Idle3_5, PRO_Idle3_6, PRO_Idle4, PRO_Under_1, PRO_Under_2, PRO_Idle_1, PRO_Idle_2, PRO_Intro_7, PRO_Intro_8, PRO_quiet, PRO_move_hst, PRO_ToCar, PRO_RespCar, PRO_listen, PRO_call, PRO_see, PRO_shoot, PRO_Leave, PRO_Leave_Preload, PRO_LeftCar, PRO_MCS3LI, PRO_OffRoute, PRO_OffShoot, PRO_Rage_1, PRO_Rage_2, PRO_Rage_3, PRO_Rage_4, PRO_Rage_5, PRO_Rage_6, PRO_Rage_7, PRO_Rage_8, PRO_Rescued, PRO_Return_1, PRO_RunToCar, PRO_STAY1, PRO_STAY2, PRO_SUBTITLE1, PRO_SUBTITLE2, PRO_SUBTITLE3, PRO_SUBTITLE4, PRO_SUBTITLE5, PRO_Safe_1, PRO_Safe_2, PRO_Shutter, PRO_ShutterDoor, PRO_StopYell, PRO_TEAM, PRO_Unmask, PRO_VAULT_PRINT, PRO_Vault, PRO_WALK, PRO_WrongWay, PRO_bradhost_1, PRO_bradhost_2, PRO_bradhost_3, PRO_bradhost_4, PRO_bradhost_5, PRO_bradhost_6, PRO_bradhost_7, // PRO_bradhost_8, PRO_bradhost_9, PRO_hostf, PlayLotWarning, PromptVault, Pullout, RayfireLoaded, ReplaySkipCops, RetaskBuddyEnterVehicle, RoadblockAudio, ShutterOpen, SirensVehCop0, SirensVehCop1, SirensVehCop2, SirensVehCop3, SirensVehCop4, SirensVehCop5, SirensVehCop6, SirensVehCop7, SirensVehCop8, SkipAimIntro, SnowCover, StartShutterAnim, TRIGGER_PROLOGUE_TEST_BRAD_DOWN, TRIGGER_PROLOGUE_TEST_GUARD_HOSTAGE_OS, TRIGGER_PROLOGUE_TEST_POLICE_CAR_CHASE, TRIGGER_PROLOGUE_TEST_POLICE_CAR_CHASE_OS, TRIGGER_PROLOGUE_TEST_POLICE_CAR_CRASH, TRIGGER_PROLOGUE_TEST_PRE_SAFE_EXPLOSION, TRIGGER_PROLOGUE_TEST_TRAIN_CRASH, TRIGGER_V_ILEV_CD_LAMPAL, TRIGGER_V_ILev_CD_Door2, TRIGGER_cutFinale, TaskBradToVehicle, TaskFinalCar, TaskMichaelToVehicle, TaskTrevorToVehicle, TieUpCutsceneSkipped, TrainCrash, TreeCrash, RadiatorSteam, TrevorCash, TrevorCashLost, TrevorIdleVault, TrevorRunsOffA, TrevorRunsOffB, TrevorSetCharge, TriggerBlizzard, Turning, VaultBlast, WindowSmash1, WindowSmash2, WindowSmash3, WindowSmash4, get_into_cover_player_two, pedCop10, pedCop11, pedCop12, pedCop13, pedCop14, pedCop15, pedCop16, pedCop9, shot_guard_player2, SLOWMO_PROLOGUE_VAULT, EndCutsceneCleanup, WoodSplinter, CamEffectIntroShot1, CamEffectIntroShot2, CamEffectIntroShot3, CamEffectIntroShot4, CamEffectIntroShot5, CamEffectIntroShot6, CamEffectIntroShot7, V_CORP_CD_CHAIR_FREEZE_1, V_CORP_CD_CHAIR_FREEZE_2, // RainParticleOverride, FirstPersonRelativeHeadingSpam, FIRST_PERSON_SWITCH_CAM_ANIM, FIRST_PERSON_SWITCH_CAM_FLASH, KICK_DOWN_PLAYER_ZERO_CHECK, FIRST_PERSON_INTRO_CAM_FLASH ENDENUM BOOL bTriggeredBools[COUNT_OF(TRIGGEREDBOOLS)] FUNC BOOL HAS_LABEL_BEEN_TRIGGERED(TRIGGEREDBOOLS bTriggeredBool) IF bTriggeredBools[bTriggeredBool] RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC SET_LABEL_AS_TRIGGERED(TRIGGEREDBOOLS bTriggeredBool, BOOL bTrigger) bTriggeredBools[bTriggeredBool] = bTrigger ENDPROC PROC CLEAR_TRIGGERED_LABELS() INT i = 0 REPEAT COUNT_OF(TRIGGEREDBOOLS) i bTriggeredBools[i] = FALSE ENDREPEAT ENDPROC //Models ENUM TRIGGEREDMODELS MODEL_A_F_M_PROLHOST_01, MODEL_A_M_M_HILLBILLY_01, MODEL_A_M_M_HILLBILLY_02, MODEL_A_M_M_PROLHOST_01, MODEL_CSB_PROLSEC, MODEL_EMPEROR3, MODEL_FREIGHT, MODEL_FREIGHTCONT1, MODEL_FREIGHTCONT2, MODEL_GET_PLAYER_PED_MODEL_CHAR_MICHAEL, MODEL_GET_PLAYER_PED_MODEL_CHAR_TREVOR, MODEL_IG_BRAD, MODEL_IG_PROLSEC_02, MODEL_POLICEOLD1, MODEL_POLICEOLD2, MODEL_PROP_CS_HEIST_BAG_02, MODEL_PROP_GAR_DOOR_A_01, MODEL_PROP_MICHAEL_BALACLAVA, MODEL_P_CSH_STRAP_01_S, MODEL_P_GDOOR1COLOBJECT_S, MODEL_P_LD_HEIST_BAG_S_1, MODEL_P_TREVOR_PROLOGE_BALLY_S, MODEL_P_TREV_SKI_MASK_S, MODEL_RANCHERXL2, MODEL_STOCKADE3, MODEL_S_M_M_SNOWCOP_01, MODEL_TRACTOR3, MODEL_U_M_M_PROLSEC_01, MODEL_U_M_Y_PROLDRIVER_01, MODEL_V_ILev_CD_Door2, MODEL_V_ILev_CD_Dust, MODEL_modBomb, MODEL_modBombGreen, MODEL_modBomb3, MODEL_modBomb2, MODEL_modBomb1, MODEL_PROP_1ST_PROLOGUE_SCENE, MODEL_PROP_1ST_HOSTAGE_SCENE, MODEL_PROP_VAULT_DOOR_SCENE, MODEL_PROP_2ND_HOSTAGE_SCENE ENDENUM BOOL bTriggeredModels[COUNT_OF(TRIGGEREDMODELS)] FUNC BOOL HAS_MODEL_BEEN_LOADED(TRIGGEREDMODELS bTriggeredModel) IF bTriggeredModels[bTriggeredModel] RETURN TRUE ENDIF RETURN FALSE ENDFUNC PROC SET_MODEL_AS_LOADED(TRIGGEREDMODELS bTriggeredModel, BOOL bIsLoaded) bTriggeredModels[bTriggeredModel] = bIsLoaded ENDPROC PROC CLEAR_LOADED_MODELS() INT i = 0 REPEAT COUNT_OF(TRIGGEREDMODELS) i bTriggeredModels[i] = FALSE ENDREPEAT ENDPROC FUNC BOOL HAS_MODEL_LOADED_CHECK(TRIGGEREDMODELS bTriggeredModel, MODEL_NAMES mnModel) IF NOT HAS_MODEL_BEEN_LOADED(bTriggeredModel) REQUEST_MODEL(mnModel) #IF IS_DEBUG_BUILD PRINTLN("LOADING MODEL #", ENUM_TO_INT(mnModel)) #ENDIF IF HAS_MODEL_LOADED(mnModel) SET_MODEL_AS_LOADED(bTriggeredModel, 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[25] 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) #IF IS_DEBUG_BUILD PRINTLN("REMOVE ANIM DICT ", strAnimDict) #ENDIF SET_ANIM_DICT_AS_LOADED(strAnimDict, FALSE) ENDIF ENDPROC //--------------------------------¦ STRUCTURES ¦--------------------------------- //SWITCH SELECTOR_PED_STRUCT sSelectorPeds SELECTOR_CAM_STRUCT sCamDetails //Dialogue structPedsForConversation sPedsForConversation //Locates Struct LOCATES_HEADER_DATA sLocatesData //--------------------------------¦ 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 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 //STRING sFLOATING_HELP_STRING PROC SAFE_CLEAR_HELP(BOOL bClearNow = TRUE) IF IS_HELP_MESSAGE_BEING_DISPLAYED() CLEAR_HELP(bClearNow) #IF IS_DEBUG_BUILD PRINTLN("CLEAR_HELP - Frame ", GET_FRAME_COUNT()) #ENDIF //sFLOATING_HELP_STRING = NULL ENDIF ENDPROC //PROC SAFE_CLEAR_FLOATING_HELP() // IF IS_ANY_FLOATING_HELP_BEING_DISPLAYED() // CLEAR_ALL_FLOATING_HELP() // sFLOATING_HELP_STRING = NULL // ENDIF //ENDPROC PROC CLEAR_TEXT() CLEAR_PRINTS() SAFE_CLEAR_HELP(TRUE) //SAFE_CLEAR_FLOATING_HELP() KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() //sFLOATING_HELP_STRING = NULL #IF IS_DEBUG_BUILD PRINTLN("CLEAR_TEXT") #ENDIF ENDPROC PROC PRINT_ADV(TRIGGEREDBOOLS bTriggeredBool, STRING sPrint, INT iDuration = DEFAULT_GOD_TEXT_TIME, BOOL bOnce = TRUE) IF NOT HAS_LABEL_BEEN_TRIGGERED(bTriggeredBool) PRINT_NOW(sPrint, iDuration, 1) SET_LABEL_AS_TRIGGERED(bTriggeredBool, bOnce) #IF IS_DEBUG_BUILD PRINTLN("PRINT ", sPrint) #ENDIF ENDIF ENDPROC PROC PRINT_HELP_ADV(TRIGGEREDBOOLS bTriggeredBool, STRING sPrint, BOOL bOnce = TRUE, INT iOverrideTime = -1, INT iMinimumHelpTimer = 2000) IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() OR (IS_HELP_MESSAGE_BEING_DISPLAYED() AND GET_GAME_TIMER() > iHelpTimer) IF NOT HAS_LABEL_BEEN_TRIGGERED(bTriggeredBool) PRINT_HELP(sPrint, iOverrideTime) SET_LABEL_AS_TRIGGERED(bTriggeredBool, bOnce) #IF IS_DEBUG_BUILD PRINTLN("PRINTHELP ", sPrint) #ENDIF iHelpTimer = GET_GAME_TIMER() + iMinimumHelpTimer ENDIF ENDIF ENDPROC //INFO: Author - Alan Litobarski //PARAM NOTES: (iHour 0-23, iMinute 0-59, iSecond 0-59) //PURPOSE: Smoothly transitions the clock to a specific time PROC SMOOTH_SET_CLOCK_TIME(INT iHour, INT iMinute, INT iSecond) INT iClockHour, iClockMinute, iClockSecond iClockHour = GET_CLOCK_HOURS() iClockMinute = GET_CLOCK_MINUTES() iClockSecond = 0 //GET_CLOCK_SECONDS() iSecond = iSecond //Temp - remove this IF iClockHour < iHour IF iClockMinute < 59 // IF iClockSecond < 59 // iClockSecond++ // ELSE // iClockSecond = 0 iClockMinute++ // ENDIF ELSE iClockMinute = 0 iClockHour++ ENDIF ELIF iClockHour > iHour IF iClockMinute > 0 // IF iClockSecond > 0 // iClockSecond-- // ELSE // iClockSecond = 59 iClockMinute-- // ENDIF ELSE iClockMinute = 59 iClockHour-- ENDIF ELIF iClockMinute < iMinute // IF iClockSecond < 59 // iClockSecond++ // ELSE // iClockSecond = 0 iClockMinute++ // ENDIF ELIF iClockMinute > iMinute // IF iClockSecond > 0 // iClockSecond-- // ELSE // iClockSecond = 59 iClockMinute-- // ENDIF // ELIF iClockSecond < iSecond // iClockSecond++ // ELIF iClockSecond > iSecond // iClockSecond-- ENDIF SET_CLOCK_TIME(iClockHour, iClockMinute, iClockSecond) ENDPROC //INT iFLOATING_HELP_TIME //BOOL bFLOATING_HELP_UPDATE_ABOVE_PLAYER // //PROC UPDATE_FLOATING_HELP_ABOVE_PLAYER() // #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("|||<<<<<<<<<< UPDATE_FLOATING_HELP_ABOVE_PLAYER() >>>>>>>>>>||") ENDIF #ENDIF // IF NOT IS_STRING_NULL_OR_EMPTY(sFLOATING_HELP_STRING) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF NOT IS_STRING_NULL_OR_EMPTY(", sFLOATING_HELP_STRING, ")") ENDIF #ENDIF // IF bFLOATING_HELP_UPDATE_ABOVE_PLAYER #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF bFLOATING_HELP_UPDATE_ABOVE_PLAYER") ENDIF #ENDIF // IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sFLOATING_HELP_STRING) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(", sFLOATING_HELP_STRING, ")") ENDIF #ENDIF // CLEAR_HELP() #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("CLEAR_HELP()") ENDIF #ENDIF // ENDIF // // IF NOT IS_THIS_FLOATING_HELP_BEING_DISPLAYED(sFLOATING_HELP_STRING) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF NOT IS_THIS_FLOATING_HELP_BEING_DISPLAYED(", sFLOATING_HELP_STRING, ")") ENDIF #ENDIF // IF iFLOATING_HELP_TIME != -1 /*2147483647*/ #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF iFLOATING_HELP_TIME != -1") ENDIF #ENDIF // HELP_AT_ENTITY(sFLOATING_HELP_STRING, playerPedID, HELP_TEXT_SOUTH, iFLOATING_HELP_TIME - GET_GAME_TIMER()) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("HELP_AT_ENTITY(", sFLOATING_HELP_STRING, ", playerPedID, HELP_TEXT_SOUTH, iFLOATING_HELP_TIME(", iFLOATING_HELP_TIME, ") - GET_GAME_TIMER(", GET_GAME_TIMER(), "))") ENDIF #ENDIF // ELSE #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("ELSE") ENDIF #ENDIF // HELP_AT_ENTITY(sFLOATING_HELP_STRING, playerPedID, HELP_TEXT_SOUTH, -1) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("HELP_AT_ENTITY(", sFLOATING_HELP_STRING, ", playerPedID, HELP_TEXT_SOUTH, -1)") ENDIF #ENDIF // ENDIF // ENDIF // ELSE #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("ELSE") ENDIF #ENDIF // IF IS_THIS_FLOATING_HELP_BEING_DISPLAYED(sFLOATING_HELP_STRING) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF IS_THIS_FLOATING_HELP_BEING_DISPLAYED(", sFLOATING_HELP_STRING, ")") ENDIF #ENDIF // CLEAR_ALL_FLOATING_HELP() #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("CLEAR_ALL_FLOATING_HELP()") ENDIF #ENDIF // ENDIF // // IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sFLOATING_HELP_STRING) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(", sFLOATING_HELP_STRING, ")") ENDIF #ENDIF // PRINT_HELP(sFLOATING_HELP_STRING) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("PRINT_HELP(", sFLOATING_HELP_STRING, ")") ENDIF #ENDIF // ENDIF // ENDIF // // IF IS_AIM_CAM_ACTIVE() // OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_GAMEPLAY_CAM_COORD()) < 1.8 // #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF IS_AIM_CAM_ACTIVE() = ", IS_AIM_CAM_ACTIVE(), " OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_GAMEPLAY_CAM_COORD()) < 1.8 = ", GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_GAMEPLAY_CAM_COORD())) ENDIF #ENDIF // IF bFLOATING_HELP_UPDATE_ABOVE_PLAYER = TRUE #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF bFLOATING_HELP_UPDATE_ABOVE_PLAYER = TRUE") ENDIF #ENDIF // bFLOATING_HELP_UPDATE_ABOVE_PLAYER = FALSE #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("bFLOATING_HELP_UPDATE_ABOVE_PLAYER = FALSE") ENDIF #ENDIF // ENDIF // ELSE #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("ELSE") ENDIF #ENDIF // IF bFLOATING_HELP_UPDATE_ABOVE_PLAYER = FALSE #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF bFLOATING_HELP_UPDATE_ABOVE_PLAYER = FALSE") ENDIF #ENDIF // bFLOATING_HELP_UPDATE_ABOVE_PLAYER = TRUE #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("bFLOATING_HELP_UPDATE_ABOVE_PLAYER = TRUE") ENDIF #ENDIF // ENDIF // ENDIF // // IF iFLOATING_HELP_TIME != -1 /*2147483647*/ #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF iFLOATING_HELP_TIME != -1") ENDIF #ENDIF // IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sFLOATING_HELP_STRING) // AND GET_GAME_TIMER() > iFLOATING_HELP_TIME // #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(", sFLOATING_HELP_STRING, ") = ", IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sFLOATING_HELP_STRING), " AND GET_GAME_TIMER()[", GET_GAME_TIMER(), "] > iFLOATING_HELP_TIME[", iFLOATING_HELP_TIME, "]") ENDIF #ENDIF // SAFE_CLEAR_HELP() #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("SAFE_CLEAR_HELP()") ENDIF #ENDIF // ENDIF // // IF NOT IS_STRING_NULL_OR_EMPTY(sFLOATING_HELP_STRING) #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF NOT IS_STRING_NULL_OR_EMPTY(sFLOATING_HELP_STRING)") ENDIF #ENDIF // IF IS_THIS_FLOATING_HELP_BEING_DISPLAYED(sFLOATING_HELP_STRING) // AND GET_GAME_TIMER() > iFLOATING_HELP_TIME // #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(", sFLOATING_HELP_STRING, ") = ", IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sFLOATING_HELP_STRING), " AND GET_GAME_TIMER()[", GET_GAME_TIMER(), "] > iFLOATING_HELP_TIME[", iFLOATING_HELP_TIME, "]") ENDIF #ENDIF // SAFE_CLEAR_FLOATING_HELP() #IF IS_DEBUG_BUILD IF bDebugHelpText PRINTLN("SAFE_CLEAR_FLOATING_HELP()") ENDIF #ENDIF // ENDIF // ENDIF // ENDIF // ENDIF //ENDPROC //PROC PRINT_HELP_ADV_POS(STRING sPrint, VECTOR vLocation, ENTITY_INDEX entIndex = NULL, BOOL bOnce = TRUE, eARROW_DIRECTION eArrow = HELP_TEXT_SOUTH, INT iDuration = 7500) // IF NOT HAS_LABEL_BEEN_TRIGGERED(sPrint) // sFLOATING_HELP_STRING = NULL // // IF NOT ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) // AND vLocation.Z != 0.0 // AND entIndex = NULL // HELP_AT_LOCATION(sPrint, vLocation, eArrow, iDuration) // ELIF NOT ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) // AND vLocation.Z = 0.0 // AND entIndex = NULL // HELP_AT_SCREEN_LOCATION(sPrint, vLocation.X, vLocation.Y, eArrow, iDuration) // ELIF entIndex != NULL // AND ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) // IF GET_PED_INDEX_FROM_ENTITY_INDEX(entIndex) = playerPedID // sFLOATING_HELP_STRING = sPrint // IF iDuration != -1 // iFLOATING_HELP_TIME = GET_GAME_TIMER() + iDuration // ELSE // iFLOATING_HELP_TIME = -1 //2147483647 //Max Value Int // ENDIF // bFLOATING_HELP_UPDATE_ABOVE_PLAYER = TRUE // ENDIF // // HELP_AT_ENTITY(sPrint, entIndex, eArrow, iDuration) // ELIF entIndex != NULL // AND NOT ARE_VECTORS_EQUAL(vLocation, VECTOR_ZERO) // HELP_AT_ENTITY_OFFSET(sPrint, entIndex, vLocation, eArrow, iDuration) // ENDIF // SET_LABEL_AS_TRIGGERED(sPrint, bOnce) // PRINTLN("PRINTHELP ", sPrint) // ENDIF //ENDPROC FUNC PED_INDEX PLAYER_PED(enumCharacterList CHAR_TYPE) IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TYPE RETURN playerPedID 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 UPDATE_PED_REFERENCES() playerPedID = PLAYER_PED_ID() notPlayerPedID = NOT_PLAYER_PED_ID() playerPedMichael = PLAYER_PED(CHAR_MICHAEL) playerPedTrevor = PLAYER_PED(CHAR_TREVOR) ENDPROC PROC SET_PED_POSITION(PED_INDEX pedIndex, VECTOR vCoords, FLOAT fHeading, BOOL bKeepVehicle = TRUE) IF bKeepVehicle = TRUE SET_PED_COORDS_KEEP_VEHICLE(pedIndex, vCoords) ELSE SET_ENTITY_COORDS(pedIndex, vCoords) ENDIF SET_ENTITY_HEADING(pedIndex, fHeading) 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 = TRUE) 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 UPDATE_PED_REFERENCES() 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 IS_DEBUG_BUILD PRINTLN("CREATING PED AT <<", vStart.X, ", ", vStart.Y, ", ", vStart.Z, ">>") #ENDIF IF bDefault = TRUE SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex) ENDIF SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(pedIndex, TRUE) ENDIF ENDPROC PROC SPAWN_VEHICLE(VEHICLE_INDEX &vehIndex, MODEL_NAMES eModel, VECTOR vStart, FLOAT fStart = 0.0, INT iColour = -1, FLOAT fDirt = 15.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_IS_PED_DEAD(PED_INDEX &pedIndex) IF DOES_ENTITY_EXIST(pedIndex) IF IS_PED_INJURED(pedIndex) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC FUNC BOOL SAFE_IS_VEHICLE_DEAD(VEHICLE_INDEX &vehIndex) IF DOES_ENTITY_EXIST(vehIndex) IF IS_ENTITY_DEAD(vehIndex) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC 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) 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 SET_TIME_IN_PLAYBACK_RECORDED_VEHICLE(VEHICLE_INDEX &vehIndex, FLOAT fTime) IF IS_VEHICLE_DRIVEABLE(vehIndex) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehIndex) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehIndex, fTime - GET_TIME_POSITION_IN_RECORDING(vehIndex)) 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 STRUCT BLIP_TIMER BLIP_INDEX blipIndex INT iBlipTimer ENDSTRUCT BLIP_TIMER sBlipTimer[10] PROC SET_BLIP_FLASH_DURATION(BLIP_INDEX blipIndex, INT iDuration = 7500) INT i BOOL bSlotCheck BOOL bFreeSlot REPEAT COUNT_OF(sBlipTimer) i IF sBlipTimer[i].blipIndex = blipIndex bSlotCheck = TRUE ENDIF ENDREPEAT IF bSlotCheck = FALSE REPEAT COUNT_OF(sBlipTimer) i IF bFreeSlot = FALSE IF NOT DOES_BLIP_EXIST(sBlipTimer[i].blipIndex) sBlipTimer[i].blipIndex = blipIndex sBlipTimer[i].iBlipTimer = GET_GAME_TIMER() + iDuration SET_BLIP_FLASHES(sBlipTimer[i].blipIndex, TRUE) bFreeSlot = TRUE ENDIF ENDIF ENDREPEAT IF bFreeSlot = FALSE SCRIPT_ASSERT("No free blip timer slots! Consider expanding array.") ENDIF ENDIF ENDPROC PROC UPDATE_BLIP_FLASH_TIMERS() INT i REPEAT COUNT_OF(sBlipTimer) i IF DOES_BLIP_EXIST(sBlipTimer[i].blipIndex) IF GET_GAME_TIMER() > sBlipTimer[i].iblipTimer SET_BLIP_FLASHES(sBlipTimer[i].blipIndex, FALSE) sBlipTimer[i].blipIndex = NULL sBlipTimer[i].iblipTimer = 0 ENDIF ENDIF ENDREPEAT ENDPROC FUNC FLOAT GET_INTERP_POINT_FLOAT(FLOAT fStartPos, FLOAT fEndPos, FLOAT fStartTime, FLOAT fEndTime, FLOAT fPointTime) RETURN ((((fEndPos - fStartPos) / (fEndTime - fStartTime)) * (fPointTime - fStartTime)) + fStartPos) ENDFUNC FUNC VECTOR GET_INTERP_POINT_VECTOR(VECTOR vStartPos, VECTOR vEndPos, FLOAT fStartTime, FLOAT fEndTime, FLOAT fPointTime) RETURN <> ENDFUNC //This function will return the value of a number after it has been raised to a power FUNC FLOAT TPO(FLOAT fNumber, INT iPower) INT iLoopControl //This will act as a counter to control how long the loop runs FLOAT fInitialValue = fNumber //This will be used in the loop to multiply the new value by its initial value FLOAT fResult = 0 //This is the value that the function returns //Use an if statement to determine how to handle the power function //This loop will determine how many times to multiply the number by itself IF iPower = 0 fResult = 1 //Note n^0 = 1 ELIF iPower = 1 fResult = fNumber ELIF iPower < 0 iLoopControl = -iPower + 1 WHILE iLoopControl > 0 fNumber *= fInitialValue iLoopControl-- ENDWHILE fResult = 1 / fNumber ELIF iPower > 1 iLoopControl = iPower - 1 WHILE iLoopControl > 0 fNumber *= fInitialValue iLoopControl-- ENDWHILE fResult = fNumber ENDIF RETURN fResult ENDFUNC FUNC VECTOR HERMITE_CURVE(VECTOR vStartPoint, VECTOR vStartTangent, VECTOR vEndPoint, VECTOR vEndTangent, FLOAT fStartTime, FLOAT fEndTime, FLOAT fPointTime) FLOAT fScale, H1, H2, H3, H4 VECTOR vPoint fScale = fPointTime / (fEndTime - fStartTime) H1 = 2 * TPO(fScale, 3) - 3 * TPO(fScale, 2) + 1 H2 = -2 * TPO(fScale, 3) + 3 * TPO(fScale, 2) H3 = TPO(fScale, 3) - 2 * TPO(fScale, 2) + fScale H4 = TPO(fScale, 3) - TPO(fScale, 2) vPoint = H1 * vStartPoint + H2 * vEndPoint + H3 * vStartTangent + H4 * vEndTangent RETURN vPoint ENDFUNC INT iCupboardDoor = HASH("CUPBOARD_DOOR") INT iLeftReceptionDoor = HASH("LEFT_RECEPTION_DOOR") INT iRightReceptionDoor = HASH("RIGHT_RECEPTION_DOOR") INT iCCTVRoomDoor = HASH("CCTV_ROOM_DOOR") ENUM DOORS_LIST CUPBOARD_DOOR, //V_ILev_CD_Door2, <<5316.65, -5205.74, 83.67>> LEFT_RECEPTION_DOOR, //V_ILEV_CD_DOOR, <<5307.52, -5204.54, 83.67>> RIGHT_RECEPTION_DOOR, //V_ILEV_CD_DOOR, <<5310.12, -5204.54, 83.67>> CCTV_ROOM_DOOR //v_ilev_cd_door3, <<5305.46, -5177.75, 83.67>> ENDENUM FUNC BOOL SMOOTH_CLOSE_DOOR(DOORS_LIST eDoorsList, MODEL_NAMES modelName, VECTOR vCoords, BOOL bLock, FLOAT fSpeed = 0.02, FLOAT fTolerance = 0.02, FLOAT fOpenRatioIn = 0.0) #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("|||<<<<<<<<<< SMOOTH_CLOSE_DOOR = ", GET_MODEL_NAME_FOR_DEBUG(modelName), ", ", ENUM_TO_INT(eDoorsList), " >>>>>>>>>>|||") ENDIF #ENDIF INT iFrontDoor SWITCH eDoorsList CASE CUPBOARD_DOOR iFrontDoor = iCupboardDoor BREAK CASE LEFT_RECEPTION_DOOR iFrontDoor = iLeftReceptionDoor BREAK CASE RIGHT_RECEPTION_DOOR iFrontDoor = iRightReceptionDoor BREAK CASE CCTV_ROOM_DOOR iFrontDoor = iCCTVRoomDoor BREAK ENDSWITCH DOOR_STATE_ENUM eDoorState = DOOR_SYSTEM_GET_DOOR_STATE(iFrontDoor) #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("eDoorState{", ENUM_TO_INT(eDoorState),"} = DOOR_SYSTEM_GET_DOOR_STATE(", iFrontDoor, ")") ENDIF #ENDIF FLOAT fDoorOpenRatio = DOOR_SYSTEM_GET_OPEN_RATIO(iFrontDoor) #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("fDoorOpenRatio{", fDoorOpenRatio,"} = DOOR_SYSTEM_GET_OPEN_RATIO(", iFrontDoor, ")") ENDIF #ENDIF //Release... eDoorState = eDoorState modelName = modelName IF fDoorOpenRatio <= fOpenRatioIn + -fTolerance OR fDoorOpenRatio >= fOpenRatioIn + fTolerance IF fDoorOpenRatio > fOpenRatioIn fDoorOpenRatio -= fSpeed ELIF fDoorOpenRatio < fOpenRatioIn fDoorOpenRatio += fSpeed ENDIF CLEAR_AREA_OF_OBJECTS(vCoords, 2.0) DOOR_SYSTEM_SET_OPEN_RATIO(iFrontDoor, fDoorOpenRatio, FALSE) #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("DOOR_SYSTEM_SET_OPEN_RATIO(", iFrontDoor, ", ", fDoorOpenRatio, ")") ENDIF #ENDIF IF bLock DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_LOCKED, FALSE, TRUE) ELSE DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_UNLOCKED, FALSE, TRUE) ENDIF #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("RETURN FALSE") ENDIF #ENDIF RETURN FALSE ELSE fDoorOpenRatio = fOpenRatioIn DOOR_SYSTEM_SET_OPEN_RATIO(iFrontDoor, fDoorOpenRatio, FALSE) #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("DOOR_SYSTEM_SET_OPEN_RATIO(", iFrontDoor, ", ", fDoorOpenRatio, ")") ENDIF #ENDIF IF bLock DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_LOCKED, FALSE, TRUE) ELSE DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_UNLOCKED, FALSE, TRUE) ENDIF #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("RETURN TRUE") ENDIF #ENDIF RETURN TRUE ENDIF ENDFUNC PROC UNLOCK_DOOR(DOORS_LIST eDoorsList, MODEL_NAMES modelName) #IF IS_DEBUG_BUILD IF bDebugDoors PRINTLN("|||<<<<<<<<<< UNLOCK_DOOR = ", GET_MODEL_NAME_FOR_DEBUG(modelName), ", ", ENUM_TO_INT(eDoorsList), " >>>>>>>>>>|||") ENDIF #ENDIF INT iFrontDoor SWITCH eDoorsList CASE CUPBOARD_DOOR iFrontDoor = iCupboardDoor BREAK CASE LEFT_RECEPTION_DOOR iFrontDoor = iLeftReceptionDoor BREAK CASE RIGHT_RECEPTION_DOOR iFrontDoor = iRightReceptionDoor BREAK CASE CCTV_ROOM_DOOR iFrontDoor = iCCTVRoomDoor BREAK ENDSWITCH //Release... modelName = modelName DOOR_STATE_ENUM eDoorState = DOOR_SYSTEM_GET_DOOR_STATE(iFrontDoor) IF eDoorState = DOORSTATE_LOCKED DOOR_SYSTEM_SET_DOOR_STATE(iFrontDoor, DOORSTATE_UNLOCKED, FALSE, TRUE) ENDIF ENDPROC FUNC FLOAT HEADING_BETWEEN_COORDS(VECTOR vCoord1, VECTOR vCoord2) VECTOR vDirection = vCoord2 - vCoord1 RETURN ATAN2(vDirection.Y, vDirection.X) ENDFUNC // / PURPOSE: Counts the number of elements in a string, seperated by the delimiter (1 character max). // / // / PARAMS: // / sString - The string you want to parse for elements. // / sDelimiter - The delimiter to seperate the elements in the string. // / RETURNS: Integer equal to number of elements in string. // / //FUNC INT TOTAL_ELEMENTS_IN_STRING(STRING sString, STRING sDelimiter) // INT iElementCount = 1 // // IF NOT IS_STRING_NULL(sString) // AND NOT ARE_STRINGS_EQUAL(sString, "") // INT i // // FOR i = 0 TO GET_LENGTH_OF_LITERAL_STRING(sString) // IF ARE_STRINGS_EQUAL(sDelimiter, GET_STRING_FROM_STRING(sString, i, CLAMP_INT(i + 1, 0, GET_LENGTH_OF_LITERAL_STRING(sString)))) // iElementCount++ // ENDIF // ENDFOR // ELSE // SCRIPT_ASSERT("String is null or empty. Must be greater than 1 character.") // RETURN iElementCount // ENDIF // // RETURN iElementCount //ENDFUNC // / PURPOSE: Gets an element from a string, elements are seperated by the delimiter (1 character max). // / // / PARAMS: // / sString - The string you want to parse for elements. // / iElement - The element you want (an element is the characters between the delimiters in the string. // / sDelimiter - The delimiter to seperate the elements in the string. // / RETURNS: Element as string. // / //FUNC STRING GET_ELEMENT_FROM_STRING(STRING sString, STRING sDelimiter, INT iElement = 0) // IF NOT IS_STRING_NULL(sString) // AND NOT ARE_STRINGS_EQUAL(sString, "") // INT i // INT iCurrentElement // INT iElementStringLength // // FOR i = 0 TO GET_LENGTH_OF_LITERAL_STRING(sString) // IF ARE_STRINGS_EQUAL(sDelimiter, GET_STRING_FROM_STRING(sString, i, CLAMP_INT(i + 1, 0, GET_LENGTH_OF_LITERAL_STRING(sString)))) // OR i = GET_LENGTH_OF_LITERAL_STRING(sString) // IF iElement = iCurrentElement // RETURN GET_STRING_FROM_STRING(sString, i - iElementStringLength, i) // ENDIF // // iCurrentElement++ // iElementStringLength = 0 // ELSE // iElementStringLength++ // ENDIF // ENDFOR // ELSE // SCRIPT_ASSERT("String is null or empty. Must be greater than 1 character.") // RETURN sString // ENDIF // // STRING sEmptyString // RETURN sEmptyString //ENDFUNC FUNC STRUCT_ENTITY_ID CONSTRUCT_ENTITY_ID() STRUCT_ENTITY_ID structEntityID RETURN structEntityID 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 VECTOR vLastAnimCameraCoords, vThisAnimCameraCoords FUNC BOOL HAS_ANIMATED_CAMERA_CUT(CAMERA_INDEX camAnimated) vLastAnimCameraCoords = vThisAnimCameraCoords vThisAnimCameraCoords = GET_CAM_COORD(camAnimated) IF GET_DISTANCE_BETWEEN_COORDS(vLastAnimCameraCoords, vThisAnimCameraCoords) > 0.5 RETURN TRUE ENDIF RETURN FALSE ENDFUNC 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 PROLOGUE_TEST_MISSION_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_MISSION_START") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_MISSION_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 = "PROLOGUE_TEST_MISSION_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_MISSION_START") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_MISSION_START") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_HOSTAGES #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_HOSTAGES") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_HOSTAGES") 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 = "PROLOGUE_TEST_HOSTAGES" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_HOSTAGES") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_HOSTAGES") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_PRE_SAFE_EXPLOSION #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_PRE_SAFE_EXPLOSION") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_PRE_SAFE_EXPLOSION") 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 = "PROLOGUE_TEST_PRE_SAFE_EXPLOSION" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_PRE_SAFE_EXPLOSION") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_PRE_SAFE_EXPLOSION") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GUARD_HOSTAGE_OS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_GUARD_HOSTAGE_OS") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_GUARD_HOSTAGE_OS") 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 = "PROLOGUE_TEST_GUARD_HOSTAGE_OS" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_GUARD_HOSTAGE_OS") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_GUARD_HOSTAGE_OS") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_SHUTTER_OPEN_OS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_SHUTTER_OPEN_OS") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_SHUTTER_OPEN_OS") 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 = "PROLOGUE_TEST_SHUTTER_OPEN_OS" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_SHUTTER_OPEN_OS") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_SHUTTER_OPEN_OS") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") 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 = "PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_POLICE_CAR_CHASE_OS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_POLICE_CAR_CHASE_OS") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_POLICE_CAR_CHASE_OS") 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 = "PROLOGUE_TEST_POLICE_CAR_CHASE_OS" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_POLICE_CAR_CHASE_OS") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_POLICE_CAR_CHASE_OS") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_TRAIN_CRASH #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_TRAIN_CRASH") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_TRAIN_CRASH") 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 = "PROLOGUE_TEST_TRAIN_CRASH" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_TRAIN_CRASH") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_TRAIN_CRASH") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_BRAD_DOWN #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_BRAD_DOWN") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_BRAD_DOWN") 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 = "PROLOGUE_TEST_BRAD_DOWN" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_BRAD_DOWN") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_BRAD_DOWN") ENDIF #ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_FINAL_CUTSCENE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_FINAL_CUTSCENE") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_FINAL_CUTSCENE") 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 = "PROLOGUE_TEST_FINAL_CUTSCENE" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_FINAL_CUTSCENE") ePrepAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepared audio - PROLOGUE_TEST_FINAL_CUTSCENE") ENDIF #ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF SWITCH ePlayAudioTrack CASE PROLOGUE_TEST_MISSION_START #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_MISSION_START") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_MISSION_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 = "PROLOGUE_TEST_MISSION_START" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_MISSION_START") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_MISSION_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 - PROLOGUE_TEST_MISSION_START") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_HOSTAGES #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_HOSTAGES") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_HOSTAGES") 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 = "PROLOGUE_TEST_HOSTAGES" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_HOSTAGES") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_HOSTAGES") 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 - PROLOGUE_TEST_HOSTAGES") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_PRE_SAFE_EXPLOSION #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_PRE_SAFE_EXPLOSION") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_PRE_SAFE_EXPLOSION") 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 = "PROLOGUE_TEST_PRE_SAFE_EXPLOSION" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_PRE_SAFE_EXPLOSION") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_PRE_SAFE_EXPLOSION") 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 - PROLOGUE_TEST_PRE_SAFE_EXPLOSION") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_COLLECT_MONEY #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_COLLECT_MONEY") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_COLLECT_MONEY") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_COLLECT_MONEY") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_COLLECT_CASH #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_COLLECT_CASH") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_COLLECT_CASH") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_COLLECT_CASH") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GUARD_HOSTAGE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_GUARD_HOSTAGE") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_GUARD_HOSTAGE") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_GUARD_HOSTAGE") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GUARD_HOSTAGE_OS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_GUARD_HOSTAGE_OS") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_GUARD_HOSTAGE_OS") 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 = "PROLOGUE_TEST_GUARD_HOSTAGE_OS" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_GUARD_HOSTAGE_OS") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_GUARD_HOSTAGE_OS") 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 - PROLOGUE_TEST_GUARD_HOSTAGE_OS") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GUARD_HOSTAGE_RT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_GUARD_HOSTAGE_RT") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_GUARD_HOSTAGE_RT") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_GUARD_HOSTAGE_RT") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GUARD_SWITCH #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_GUARD_SWITCH") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_GUARD_SWITCH") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_GUARD_SWITCH") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_HEAD_TO_SECURITY_ROOM_MA #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_HEAD_TO_SECURITY_ROOM_MA") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_HEAD_TO_SECURITY_ROOM_MA") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_HEAD_TO_SECURITY_ROOM_MA") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_COVER_AT_BLAST_DOORS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_COVER_AT_BLAST_DOORS") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_COVER_AT_BLAST_DOORS") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_COVER_AT_BLAST_DOORS") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_BLAST_DOORS_EXPLODE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_BLAST_DOORS_EXPLODE") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_BLAST_DOORS_EXPLODE") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_BLAST_DOORS_EXPLODE") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_SHUTTER_OPEN_OS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_SHUTTER_OPEN_OS") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_SHUTTER_OPEN_OS") 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 = "PROLOGUE_TEST_SHUTTER_OPEN_OS" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_SHUTTER_OPEN_OS") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_SHUTTER_OPEN_OS") 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 - PROLOGUE_TEST_SHUTTER_OPEN_OS") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_COP_GUNFIGHT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_COP_GUNFIGHT") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_COP_GUNFIGHT") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_COP_GUNFIGHT") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_COP_GUNFIGHT_PROGRESS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_COP_GUNFIGHT_PROGRESS") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_COP_GUNFIGHT_PROGRESS") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_COP_GUNFIGHT_PROGRESS") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_COP_GUNFIGHT_RT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_COP_GUNFIGHT_RT") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_COP_GUNFIGHT_RT") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_COP_GUNFIGHT_RT") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") 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 = "PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") 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 - PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GETAWAY_CUTSCENE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_GETAWAY_CUTSCENE") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_GETAWAY_CUTSCENE") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_GETAWAY_CUTSCENE") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GETAWAY_RT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_GETAWAY_RT") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_GETAWAY_RT") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_GETAWAY_RT") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_POLICE_CAR_CHASE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_POLICE_CAR_CHASE") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_POLICE_CAR_CHASE") 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 = "PROLOGUE_TEST_POLICE_CAR_CHASE" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_POLICE_CAR_CHASE") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_POLICE_CAR_CHASE") 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 - PROLOGUE_TEST_POLICE_CAR_CHASE") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_POLICE_CAR_CRASH #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_POLICE_CAR_CRASH") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_POLICE_CAR_CRASH") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_POLICE_CAR_CRASH") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_CAR_CHASE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_CAR_CHASE") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_CAR_CHASE") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_CAR_CHASE") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_POLICE_DRIVE_BY #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_POLICE_DRIVE_BY") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_POLICE_DRIVE_BY") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_POLICE_DRIVE_BY") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_ROADBLOCK_WARNING #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_ROADBLOCK_WARNING") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_ROADBLOCK_WARNING") REPLAY_RECORD_BACK_FOR_TIME(3.0, 6.0) ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_ROADBLOCK_WARNING") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_POLICE_CAR_CHASE_OS #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Prepare - PROLOGUE_TEST_POLICE_CAR_CHASE_OS") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_POLICE_CAR_CHASE_OS") 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 = "PROLOGUE_TEST_POLICE_CAR_CHASE_OS" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_POLICE_CAR_CHASE_OS") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_POLICE_CAR_CHASE_OS") 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 - PROLOGUE_TEST_POLICE_CAR_CHASE_OS") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_TRAIN_CRASH #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_TRAIN_CRASH") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_TRAIN_CRASH") 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 = "PROLOGUE_TEST_TRAIN_CRASH" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_TRAIN_CRASH") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_TRAIN_CRASH") 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 - PROLOGUE_TEST_TRAIN_CRASH") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_BRAD_DOWN #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_BRAD_DOWN") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_BRAD_DOWN") 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 = "PROLOGUE_TEST_BRAD_DOWN" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_BRAD_DOWN") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_BRAD_DOWN") 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 - PROLOGUE_TEST_BRAD_DOWN") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_AFTER_TRAIN #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_AFTER_TRAIN") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_AFTER_TRAIN") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_AFTER_TRAIN") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_FINALE_RT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_FINALE_RT") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_FINALE_RT") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_FINALE_RT") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_GRAB_WOMAN #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_GRAB_WOMAN") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_GRAB_WOMAN") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_GRAB_WOMAN") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_FINAL_CUTSCENE_MA #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_FINAL_CUTSCENE_MA") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_FINAL_CUTSCENE_MA") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_FINAL_CUTSCENE_MA") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_FINAL_CUTSCENE #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_FINAL_CUTSCENE") ENDIF #ENDIF IF IS_STRING_NULL_OR_EMPTY(sAudioEvent) OR NOT ARE_STRINGS_EQUAL(sAudioEvent, "PROLOGUE_TEST_FINAL_CUTSCENE") 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 = "PROLOGUE_TEST_FINAL_CUTSCENE" #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Preparing audio - sAudioEvent = ", sAudioEvent) ENDIF #ENDIF ELSE IF PREPARE_MUSIC_EVENT("PROLOGUE_TEST_FINAL_CUTSCENE") IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_FINAL_CUTSCENE") 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 - PROLOGUE_TEST_FINAL_CUTSCENE") ENDIF #ENDIF ENDIF ENDIF ENDIF BREAK CASE PROLOGUE_TEST_MISSION_END #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_MISSION_END") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_MISSION_END") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_MISSION_END") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_FAIL #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_FAIL") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_FAIL") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_FAIL") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_KILL_ONESHOT #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_KILL_ONESHOT") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_KILL_ONESHOT") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_KILL_ONESHOT") ENDIF #ENDIF ENDIF BREAK CASE PROLOGUE_TEST_MISSION_CLEANUP #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Play - PROLOGUE_TEST_MISSION_CLEANUP") ENDIF #ENDIF IF TRIGGER_MUSIC_EVENT("PROLOGUE_TEST_MISSION_CLEANUP") ePlayAudioTrack = NO_AUDIO #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("Playing audio - PROLOGUE_TEST_MISSION_CLEANUP") 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 SCALEFORM_INDEX sfCredits BOOL bRequestedCreditsScaleform BOOL bCreditsScaleformActive //fStepDuration = 0.166 , fFadeInDuration = 0.5 , fFadeOutDuration = 0.5 , strHudColour = "HUD_COLOUR_MICHAEL" / "HUD_COLOUR_TREVOR" / "HUD_COLOUR_FRANKLIN" / "HUD_COLOUR_FREEMODE" PROC SCALEFORM_SETUP_SINGLE_LINE(STRING strName, FLOAT fFadeInDuration, FLOAT fFadeOutDuration, FLOAT fXAlign, FLOAT fYAlign, STRING strAlign) BEGIN_SCALEFORM_MOVIE_METHOD(sfCredits, "SETUP_SINGLE_LINE") BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strName) END_TEXT_COMMAND_SCALEFORM_STRING() SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fFadeInDuration) SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fFadeOutDuration) SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fXAlign) SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fYAlign) BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strAlign) END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() ENDPROC PROC SCALEFORM_DISPLAY_SINGLE_LINE(STRING strName, STRING strSingleLine, STRING strFont, STRING strHudColour, BOOL bUseLiteralString = TRUE) //, STRING strLanguage = "en", FLOAT fYOffset = 0.0) BEGIN_SCALEFORM_MOVIE_METHOD(sfCredits, "ADD_TEXT_TO_SINGLE_LINE") BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strName) END_TEXT_COMMAND_SCALEFORM_STRING() BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strSingleLine) END_TEXT_COMMAND_SCALEFORM_STRING() BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strFont) END_TEXT_COMMAND_SCALEFORM_STRING() BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strHudColour) END_TEXT_COMMAND_SCALEFORM_STRING() SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bUseLiteralString) // BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") // ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strLanguage) // END_TEXT_COMMAND_SCALEFORM_STRING() // // SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fYOffset) END_SCALEFORM_MOVIE_METHOD() ENDPROC PROC SCALEFORM_SHOW_SINGLE_LINE(STRING strName, FLOAT fStepDuration) //, STRING strAnimInStyle, FLOAT fAnimInValue) BEGIN_SCALEFORM_MOVIE_METHOD(sfCredits, "SHOW_SINGLE_LINE") BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strName) END_TEXT_COMMAND_SCALEFORM_STRING() SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fStepDuration) // BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") // ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strAnimInStyle) // END_TEXT_COMMAND_SCALEFORM_STRING() // // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(fAnimInValue) END_SCALEFORM_MOVIE_METHOD() ENDPROC PROC SCALEFORM_HIDE_SINGLE_LINE(STRING strName, FLOAT fStepDuration) //, STRING strAnimOutStyle, FLOAT fAnimOutValue) BEGIN_SCALEFORM_MOVIE_METHOD(sfCredits, "HIDE") BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strName) END_TEXT_COMMAND_SCALEFORM_STRING() SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fStepDuration) // BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING") // ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(strAnimInStyle) // END_TEXT_COMMAND_SCALEFORM_STRING() // // SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(fAnimInValue) END_SCALEFORM_MOVIE_METHOD() ENDPROC PROC SCALEFORM_REMOVE_ALL_SINGLE_LINES() IF bCreditsScaleformActive BEGIN_SCALEFORM_MOVIE_METHOD(sfCredits, "REMOVE_ALL") END_SCALEFORM_MOVIE_METHOD() ENDIF ENDPROC //Cleanup PROC MISSION_CLEANUP(BOOL bRestart = FALSE, BOOL bDelayCleanup = FALSE) #IF IS_DEBUG_BUILD PRINTLN("PROLOGUE MISSION CLEAN UP") #ENDIF // 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 NETWORK_SET_CAN_RECEIVE_PRESENCE_INVITES(TRUE) SET_AUDIO_FLAG("PoliceScannerDisabled", FALSE) IF bVideoRecording REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF INT i IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) //Fix for bug 1826570 STOP_SYNCHRONIZED_AUDIO_EVENT(sceneIntro) ENDIF //Stats INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(NULL) //Reset player IF IS_PLAYER_PLAYING(PLAYER_ID()) IF IS_SCREEN_FADED_OUT() CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SET_PED_POSITION(playerPedID, GET_ENTITY_COORDS(playerPedID), GET_ENTITY_HEADING(playerPedID), FALSE) ENDIF SET_PED_USING_ACTION_MODE(playerPedID, FALSE) SET_PED_CAN_PLAY_AMBIENT_ANIMS(playerPedID, TRUE) IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL CLEAR_FACIAL_IDLE_ANIM_OVERRIDE(playerPedMichael) ENDIF ENDIF SET_PLAYER_PED_DATA_IN_CUTSCENES(TRUE, TRUE) //Selector Cam CLEANUP_SELECTOR_CAM(sCamDetails) SET_AMBIENT_ZONE_STATE_PERSISTENT("AZ_YANKTON_CEMETARY", TRUE, TRUE) //Time in case of skip... SET_TIME_SCALE(1.0) PRINTLN("SET_TIME_SCALE(1.0)") //Timecycle CLEAR_TIMECYCLE_MODIFIER() #IF IS_DEBUG_BUILD PRINTLN("CLEAR_TIMECYCLE_MODIFIER - Mission Cleanup") #ENDIF IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 #IF IS_DEBUG_BUILD PRINTLN("IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 - Mission Cleanup") #ENDIF SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) #IF IS_DEBUG_BUILD PRINTLN("SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) - Mission Cleanup") #ENDIF ENDIF //Delete all peds, vehicles, objects and blips REPEAT COUNT_OF(covPoint) i REMOVE_COVER_POINT(covPoint[i]) ENDREPEAT REPEAT COUNT_OF(covPointMap) i REMOVE_COVER_POINT(covPointMap[i]) ENDREPEAT REPEAT COUNT_OF(covPointBlastDoors) i REMOVE_COVER_POINT(covPointBlastDoors[i]) ENDREPEAT REMOVE_ALL_COVER_BLOCKING_AREAS() IF IS_ITEMSET_VALID(itemCover) DESTROY_ITEMSET(itemCover) ENDIF //Ped IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_KEEP_TASK(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_KEEP_TASK(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF IF DOES_ENTITY_EXIST(pedBrad) IF NOT IS_ENTITY_DEAD(pedBrad) SET_PED_KEEP_TASK(pedBrad, TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedBrad) ENDIF REPEAT COUNT_OF(pedHostage) i IF DOES_ENTITY_EXIST(pedHostage[i]) IF NOT IS_ENTITY_DEAD(pedHostage[i]) SET_PED_KEEP_TASK(pedHostage[i], TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedHostage[i]) ENDIF ENDREPEAT IF DOES_ENTITY_EXIST(pedGuard) IF NOT IS_ENTITY_DEAD(pedGuard) SET_PED_KEEP_TASK(pedGuard, TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedGuard) ENDIF REPEAT COUNT_OF(pedCop) i IF DOES_ENTITY_EXIST(pedCop[i]) IF NOT IS_ENTITY_DEAD(pedCop[i]) SET_PED_KEEP_TASK(pedCop[i], TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedCop[i]) ENDIF ENDREPEAT IF DOES_ENTITY_EXIST(pedGetaway) IF NOT IS_ENTITY_DEAD(pedGetaway) SET_PED_KEEP_TASK(pedGetaway, TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedGetaway) ENDIF IF DOES_ENTITY_EXIST(pedTraffic[0]) IF NOT IS_ENTITY_DEAD(pedTraffic[0]) SET_PED_KEEP_TASK(pedTraffic[0], TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedTraffic[0]) ENDIF IF DOES_ENTITY_EXIST(pedTraffic[1]) IF NOT IS_ENTITY_DEAD(pedTraffic[1]) SET_PED_KEEP_TASK(pedTraffic[1], TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedTraffic[1]) ENDIF IF DOES_ENTITY_EXIST(pedDeadGuard) IF NOT IS_ENTITY_DEAD(pedDeadGuard) SET_PED_KEEP_TASK(pedDeadGuard, TRUE) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedDeadGuard) ENDIF //Vehicle IF DOES_ENTITY_EXIST(vehCar) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCar) ENDIF REPEAT COUNT_OF(vehCop) i IF DOES_ENTITY_EXIST(vehCop[i]) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCop[i]) ENDIF ENDREPEAT REPEAT COUNT_OF(vehVan) i IF DOES_ENTITY_EXIST(vehVan[i]) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehVan[i]) ENDIF ENDREPEAT IF DOES_ENTITY_EXIST(vehCarInLot) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCarInLot) ENDIF IF DOES_ENTITY_EXIST(vehTraffic[0]) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehTraffic[0]) ENDIF IF DOES_ENTITY_EXIST(vehTraffic[1]) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehTraffic[1]) ENDIF //Object REPEAT COUNT_OF(objWeapon) i IF DOES_ENTITY_EXIST(objWeapon[i]) SET_OBJECT_AS_NO_LONGER_NEEDED(objWeapon[i]) ENDIF ENDREPEAT IF DOES_ENTITY_EXIST(objCupboardDoor) SET_OBJECT_AS_NO_LONGER_NEEDED(objCupboardDoor) ENDIF IF DOES_ENTITY_EXIST(objCash) SET_OBJECT_AS_NO_LONGER_NEEDED(objCash) ENDIF IF DOES_ENTITY_EXIST(objGarage) SET_OBJECT_AS_NO_LONGER_NEEDED(objGarage) ENDIF IF DOES_ENTITY_EXIST(objGun) SET_OBJECT_AS_NO_LONGER_NEEDED(objGun) ENDIF IF DOES_ENTITY_EXIST(objDoor) SET_OBJECT_AS_NO_LONGER_NEEDED(objDoor) #IF IS_DEBUG_BUILD PRINTLN("PROLOGUE MISSION CLEAN UP - Set Door As No Longer Needed") #ENDIF ENDIF IF DOES_ENTITY_EXIST(objHiddenCollision) SET_OBJECT_AS_NO_LONGER_NEEDED(objHiddenCollision) ENDIF REPEAT COUNT_OF(objBarrier) i IF DOES_ENTITY_EXIST(objBarrier[i]) SET_OBJECT_AS_NO_LONGER_NEEDED(objBarrier[i]) ENDIF ENDREPEAT IF DOES_ENTITY_EXIST(objDebris) SET_OBJECT_AS_NO_LONGER_NEEDED(objDebris) ENDIF REPEAT COUNT_OF(objBag) i IF DOES_ENTITY_EXIST(objBag[i]) SET_OBJECT_AS_NO_LONGER_NEEDED(objBag[i]) ENDIF ENDREPEAT REPEAT COUNT_OF(objBalaclava) i IF DOES_ENTITY_EXIST(objBalaclava[i]) SET_OBJECT_AS_NO_LONGER_NEEDED(objBalaclava[i]) ENDIF ENDREPEAT IF DOES_ENTITY_EXIST(objBomb) SET_OBJECT_AS_NO_LONGER_NEEDED(objBomb) ENDIF IF DOES_ENTITY_EXIST(objBombGreen) SET_OBJECT_AS_NO_LONGER_NEEDED(objBombGreen) ENDIF REPEAT COUNT_OF(objLightingRig) i IF DOES_ENTITY_EXIST(objLightingRig[i]) SET_OBJECT_AS_NO_LONGER_NEEDED(objLightingRig[i]) ENDIF ENDREPEAT //Blip SAFE_REMOVE_BLIP(blipMichael) SAFE_REMOVE_BLIP(blipTrevor) SAFE_REMOVE_BLIP(blipBuddy) SAFE_REMOVE_BLIP(blipGuard) SAFE_REMOVE_BLIP(blipCar) SAFE_REMOVE_BLIP(blipCover) SAFE_REMOVE_BLIP(blipDestination) SAFE_REMOVE_BLIP(blipCash) REPEAT COUNT_OF(pedHostage) i SAFE_REMOVE_BLIP(blipHostage[i]) ENDREPEAT REPEAT COUNT_OF(pedCop) i SAFE_REMOVE_BLIP(blipCop[i]) ENDREPEAT REPEAT COUNT_OF(blipScreen) i SAFE_REMOVE_BLIP(blipScreen[i]) ENDREPEAT STOP_GAMEPLAY_HINT() RENDER_SCRIPT_CAMS(FALSE, FALSE) DESTROY_ALL_CAMS() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) CLEAR_SELECTOR_PED_PRIORITY(sSelectorPeds) CLEAR_TEXT() SET_GPS_FLASHES(FALSE) //Reset Variables fSnowMarks = 0.0 CLEAR_TRIGGERED_LABELS() CLEAR_LOADED_MODELS() CLEAR_LOADED_RECORDINGS() CLEAR_LOADED_ANIM_DICTS() SETTIMERA(0) SETTIMERB(0) iStuckTimer = 0 iTrainHornTimer = 0 vTrainHornLocation = VECTOR_ZERO iCutsceneStage = 0 iDialogueStage = 0 REPEAT COUNT_OF(iDialogueLineCount) i iDialogueLineCount[i] = -1 ENDREPEAT iDialogueTimer = 0 iHelpTimer = -1 bInitStage = FALSE bReplaySkip = FALSE bCutsceneSkipped = FALSE // fAnimProgressTime = 0.0 // fAnimTotalTime = 0.0 CLEAR_MISSION_LOCATE_STUFF(sLocatesData, TRUE) REPEAT COUNT_OF(iBulletTimers) i iBulletTimers[i] = 0 ENDREPEAT REPEAT COUNT_OF(iHostageAimTimer) i iHostageAimTimer[i] = 0 ENDREPEAT // REPEAT COUNT_OF(iPedResetFlagTimer) i // iPedResetFlagTimer[i] = 0 // ENDREPEAT // REPEAT COUNT_OF(iShotScreen) i // iShotScreen[i] = 0 // ENDREPEAT // // REPEAT COUNT_OF(iShotScreenTimer) i // iShotScreenTimer[i] = 0 // ENDREPEAT //Kinematic Flag Tracking eKinematicChar = NO_CHARACTER //Doors UNLOCK_DOOR(CUPBOARD_DOOR, V_ILev_CD_Door2) REPEAT COUNT_OF(iRespawnTimers) i iRespawnTimers[i] = 0 ENDREPEAT //Particles IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxSmoke) STOP_PARTICLE_FX_LOOPED(ptfxSmoke) ENDIF IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxFog) STOP_PARTICLE_FX_LOOPED(ptfxFog) ENDIF IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxEmber) STOP_PARTICLE_FX_LOOPED(ptfxEmber) ENDIF IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxSmokeCloud) STOP_PARTICLE_FX_LOOPED(ptfxSmokeCloud) ENDIF IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxRadiator) STOP_PARTICLE_FX_LOOPED(ptfxRadiator) ENDIF REMOVE_PARTICLE_FX_IN_RANGE(<<5299, -5189, 82.6>>, 50.0) REMOVE_PARTICLE_FX_IN_RANGE(<<3530.8, -4717.9, 113.1>>, 50.0) REMOVE_PTFX_ASSET() //Snow Marks IF NOT IS_PED_INJURED(playerPedMichael) IF DOES_ENTITY_HAVE_DRAWABLE(playerPedMichael) AND DOES_ENTITY_HAVE_PHYSICS(playerPedMichael) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(playerPedMichael) SET_ENABLE_PED_ENVEFF_SCALE(playerPedMichael, FALSE) ENDIF ENDIF IF NOT IS_PED_INJURED(playerPedTrevor) IF DOES_ENTITY_HAVE_DRAWABLE(playerPedTrevor) AND DOES_ENTITY_HAVE_PHYSICS(playerPedTrevor) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(playerPedTrevor) SET_ENABLE_PED_ENVEFF_SCALE(playerPedTrevor, FALSE) ENDIF ENDIF IF NOT IS_PED_INJURED(pedBrad) IF DOES_ENTITY_HAVE_DRAWABLE(pedBrad) AND DOES_ENTITY_HAVE_PHYSICS(pedBrad) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedBrad) SET_ENABLE_PED_ENVEFF_SCALE(pedBrad, FALSE) ENDIF ENDIF //Dialogue REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 1) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 2) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 3) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 4) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 5) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 6) IF IS_CELLPHONE_DISABLED() DISABLE_CELLPHONE(FALSE) ENDIF //Credits IF bRequestedCreditsScaleform SCALEFORM_REMOVE_ALL_SINGLE_LINES() SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfCredits) bRequestedCreditsScaleform = FALSE bCreditsScaleformActive = FALSE ENDIF //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_INSIDE_OFFICE") STOP_AUDIO_SCENE("PROLOGUE_GET_INSIDE_OFFICE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_VAULT_RAYFIRE") STOP_AUDIO_SCENE("PROLOGUE_VAULT_RAYFIRE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_THREATEN_HOSTAGES") STOP_AUDIO_SCENE("PROLOGUE_THREATEN_HOSTAGES") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DETONATE_CHARGES") STOP_AUDIO_SCENE("PROLOGUE_DETONATE_CHARGES") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_TO_VAULT") STOP_AUDIO_SCENE("PROLOGUE_GET_TO_VAULT") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_SWITCH_TO_TREVOR") STOP_AUDIO_SCENE("PROLOGUE_SWITCH_TO_TREVOR") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_TAKE_COVER") STOP_AUDIO_SCENE("PROLOGUE_TAKE_COVER") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_POLICE_SHOOTOUT") STOP_AUDIO_SCENE("PROLOGUE_POLICE_SHOOTOUT") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DRIVE_TO_PICKUP") STOP_AUDIO_SCENE("PROLOGUE_DRIVE_TO_PICKUP") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DRIVE_ESCAPE") STOP_AUDIO_SCENE("PROLOGUE_DRIVE_ESCAPE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GRAB_WOMAN") STOP_AUDIO_SCENE("PROLOGUE_GRAB_WOMAN") ENDIF //Score IF bPassed = FALSE PLAY_AUDIO(PROLOGUE_TEST_FAIL) ENDIF IF CANCEL_MUSIC_EVENT("PROLOGUE_TEST_MISSION_START") #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("STOPPED AUDIO EVENT... [PROLOGUE_TEST_MISSION_START]") ENDIF #ENDIF ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(sAudioEvent) IF CANCEL_MUSIC_EVENT(sAudioEvent) #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("STOPPED AUDIO EVENT... [", sAudioEvent, "]") ENDIF #ENDIF ENDIF sAudioEvent = NULL_STRING() #IF IS_DEBUG_BUILD IF bDebugAudio PRINTLN("sAudioEvent = NULL") ENDIF #ENDIF ENDIF ePrepAudioTrack = NO_AUDIO ePlayAudioTrack = NO_AUDIO UNREGISTER_SCRIPT_WITH_AUDIO() SET_USER_RADIO_CONTROL_ENABLED(TRUE) SET_FRONTEND_RADIO_ACTIVE(TRUE) //Stream (Audio) STOP_STREAM() //Alarm IF IS_ALARM_PLAYING("PROLOGUE_VAULT_ALARMS") STOP_ALARM("PROLOGUE_VAULT_ALARMS", TRUE) ENDIF //Sound IF sIDBargeDoor != -1 STOP_SOUND(sIDBargeDoor) RELEASE_SOUND_ID(sIDBargeDoor) sIDBargeDoor = -1 ENDIF IF sIDVaultExplosion != -1 STOP_SOUND(sIDVaultExplosion) RELEASE_SOUND_ID(sIDVaultExplosion) sIDVaultExplosion = -1 ENDIF IF sIDSecDoorBombBeep != -1 STOP_SOUND(sIDSecDoorBombBeep) RELEASE_SOUND_ID(sIDSecDoorBombBeep) sIDSecDoorBombBeep = -1 ENDIF IF sIDSecDoorBlast != -1 STOP_SOUND(sIDSecDoorBlast) RELEASE_SOUND_ID(sIDSecDoorBlast) sIDSecDoorBlast = -1 ENDIF IF sIDDistantSirens != -1 STOP_SOUND(sIDDistantSirens) RELEASE_SOUND_ID(sIDDistantSirens) sIDDistantSirens = -1 ENDIF IF sIDDistantSirensFarm != -1 STOP_SOUND(sIDDistantSirensFarm) RELEASE_SOUND_ID(sIDDistantSirensFarm) sIDDistantSirensFarm = -1 ENDIF IF sIDSecurityDoorAlarm != -1 STOP_SOUND(sIDSecurityDoorAlarm) RELEASE_SOUND_ID(sIDSecurityDoorAlarm) sIDSecurityDoorAlarm = -1 ENDIF IF sIDHeadShot != -1 STOP_SOUND(sIDHeadShot) RELEASE_SOUND_ID(sIDHeadShot) sIDHeadShot = -1 ENDIF IF sIDCopCarExplosion != -1 STOP_SOUND(sIDCopCarExplosion) RELEASE_SOUND_ID(sIDCopCarExplosion) sIDCopCarExplosion = -1 ENDIF IF sIDTrainBell != -1 STOP_SOUND(sIDTrainBell) RELEASE_SOUND_ID(sIDTrainBell) sIDTrainBell = -1 ENDIF IF sIDTrainHorn != -1 STOP_SOUND(sIDTrainHorn) RELEASE_SOUND_ID(sIDTrainHorn) sIDTrainHorn = -1 ENDIF #IF FEATURE_GEN9_EXCLUSIVE IF sIDGarageDoor != -1 STOP_SOUND(sIDGarageDoor) RELEASE_SOUND_ID(sIDGarageDoor) sIDGarageDoor = -1 ENDIF #ENDIF IF HAS_LABEL_BEEN_TRIGGERED(SLOWMO_PROLOGUE_VAULT) DEACTIVATE_AUDIO_SLOWMO_MODE("SLOWMO_PROLOGUE_VAULT") ENDIF RELEASE_SCRIPT_AUDIO_BANK() //Doors UNLOCK_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(CUPBOARD_DOOR, V_ILev_CD_Door2) vDoorPosition = <<5308.8574, -5208.1560, 86.9186 - 3.2 -0.05>> vDoorRotate = VECTOR_ZERO REMOVE_MODEL_HIDE(<<5316.64, -5205.74, 83.67>>, 1.0, V_ILev_CD_Door2) //Vehicle Assets REMOVE_VEHICLE_ASSET(POLICEOLD1) REMOVE_VEHICLE_ASSET(POLICEOLD2) //Waypoints IF GET_IS_WAYPOINT_RECORDING_LOADED(sWaypointRoute1) REMOVE_WAYPOINT_RECORDING(sWaypointRoute1) ENDIF IF GET_IS_WAYPOINT_RECORDING_LOADED(sWaypointRoute2) REMOVE_WAYPOINT_RECORDING(sWaypointRoute2) ENDIF //Sequence CLEAR_SEQUENCE_TASK(seqMain) //Assisted ASSISTED_MOVEMENT_REMOVE_ROUTE("Pro_S1") ASSISTED_MOVEMENT_REMOVE_ROUTE("Pro_S1a") ASSISTED_MOVEMENT_REMOVE_ROUTE("Pro_S2") //Relationship Groups REMOVE_RELATIONSHIP_GROUP(relGroupFriendlyFire) REMOVE_RELATIONSHIP_GROUP(relGroupBuddy) REMOVE_RELATIONSHIP_GROUP(relGroupEnemy) //Roads SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<3477.819580, -4862.902832, 109.788643>>, <<3504.164063, -4869.103027, 120.770584>>, 16.0) //Navmesh Blocking IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingID1) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingID1) ENDIF IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingID2) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingID2) ENDIF IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingID3) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingID3) ENDIF IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingID4) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingID4) ENDIF IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingNearGarage) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingNearGarage) ENDIF IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingFarm) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingFarm) ENDIF IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingCopPath1) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingCopPath1) ENDIF IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iNavMeshBlockingCopPath2) REMOVE_NAVMESH_BLOCKING_OBJECT(iNavMeshBlockingCopPath2) ENDIF //Wanted SET_MAX_WANTED_LEVEL(6) SET_WANTED_LEVEL_MULTIPLIER(1.0) SET_FAKE_WANTED_LEVEL(0) //Ambulances etc. SET_DISPATCH_COPS_FOR_PLAYER(PLAYER_ID(), TRUE) SET_CREATE_RANDOM_COPS(TRUE) ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, 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_RANDOM_TRAINS(TRUE) //Default Player IF IS_PLAYER_PLAYING(PLAYER_ID()) REMOVE_ALL_PED_WEAPONS(playerPedID) SETUP_DEFAULT_PLAYER_INFO() ENDIF //Special Ability ENABLE_SPECIAL_ABILITY(PLAYER_ID(), TRUE) //Cutscene State SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) //Interface DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) UNLOCK_MINIMAP_ANGLE() //Phone g_Use_Prologue_Cellphone = FALSE //Cheats DISABLE_CHEAT(CHEAT_TYPE_ALL, FALSE) //Model Swaps BOOL bLazy = FALSE //Fix for bug 1695596 IF IS_CUTSCENE_ACTIVE() bLazy = TRUE ENDIF REMOVE_MODEL_SWAP(<<5302.142, -5191.521, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, bLazy) REMOVE_MODEL_SWAP(<<5308.040, -5191.028, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, bLazy) bPassed = FALSE //Reset the bool IF bRestart = FALSE OR bDelayCleanup //Doors IF IS_DOOR_REGISTERED_WITH_SYSTEM(iCupboardDoor) REMOVE_DOOR_FROM_SYSTEM(iCupboardDoor) ENDIF IF IS_DOOR_REGISTERED_WITH_SYSTEM(iLeftReceptionDoor) REMOVE_DOOR_FROM_SYSTEM(iLeftReceptionDoor) ENDIF IF IS_DOOR_REGISTERED_WITH_SYSTEM(iRightReceptionDoor) REMOVE_DOOR_FROM_SYSTEM(iRightReceptionDoor) ENDIF IF IS_DOOR_REGISTERED_WITH_SYSTEM(iCCTVRoomDoor) REMOVE_DOOR_FROM_SYSTEM(iCCTVRoomDoor) ENDIF //Interior UNPIN_INTERIOR(intDepot) IF bDelayCleanup = FALSE //IPL Groups REMOVE_IPL("prologue01") REMOVE_IPL("prologue02") REMOVE_IPL("prologue03") REMOVE_IPL("prologue04") REMOVE_IPL("prologue05") REMOVE_IPL("prologue06") REMOVE_IPL("prologuerd") REMOVE_IPL("Prologue01c") REMOVE_IPL("Prologue01d") REMOVE_IPL("Prologue01e") REMOVE_IPL("Prologue01f") REMOVE_IPL("Prologue01g") REMOVE_IPL("prologue01h") REMOVE_IPL("prologue01i") REMOVE_IPL("prologue01j") REMOVE_IPL("prologue01k") REMOVE_IPL("prologue01z") REMOVE_IPL("prologue03b") REMOVE_IPL("prologue04b") REMOVE_IPL("prologue05b") REMOVE_IPL("prologue06b") REMOVE_IPL("prologuerdb") REMOVE_IPL("prologue_occl") REMOVE_IPL("prologue06_int") REMOVE_IPL("prologue04_cover") REMOVE_IPL("prologue03_grv_dug") REMOVE_IPL("prologue03_grv_cov") REMOVE_IPL("prologue03_grv_fun") REMOVE_IPL("prologue_grv_torch") REMOVE_IPL_WHEN_SCREEN_IS_FADED_OUT("prologue_DistantLights") REMOVE_IPL_WHEN_SCREEN_IS_FADED_OUT("prologue_LODLights") REMOVE_IPL("DES_ProTree_start") REMOVE_IPL("DES_ProTree_start_lod") //Cullbox SET_MAPDATACULLBOX_ENABLED("Prologue_Main", FALSE) //Weather CLEAR_WEATHER_TYPE_PERSIST() UNLOAD_ALL_CLOUD_HATS() SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY") //Minimap SET_MINIMAP_IN_PROLOGUE_AND_HANDLE_STATIC_BLIPS(FALSE) ENDIF SET_ALLOW_STREAM_PROLOGUE_NODES(FALSE) SET_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_STATE(TRUE) ALLOW_SONAR_BLIPS(TRUE) SET_AMBIENT_VEHICLE_NEON_ENABLED(TRUE) TERMINATE_THIS_THREAD() ENDIF ENDPROC //Mission Passed PROC missionPassed() //TRIGGER_MISSION_STATS_UI(TRUE,TRUE) WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_FRANKLIN) WAIT(0) ENDWHILE UPDATE_PED_REFERENCES() SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_TEXT() Mission_Flow_Mission_Passed(FALSE,TRUE) bPassed = TRUE MISSION_CLEANUP() ENDPROC //Mission Failed PROC missionFailed() CLEAR_PRINTS() //CLEAR_TEXT() SAFE_CLEAR_HELP(TRUE) //Score PLAY_AUDIO(PROLOGUE_TEST_FAIL) SWITCH eMissionFail CASE failDefault MISSION_FLOW_SET_FAIL_REASON("PRO_FAIL") BREAK CASE failPlayerDied MISSION_FLOW_SET_FAIL_REASON("PRO_FAIL") BREAK CASE failMichaelDied IF eMissionObjective < stageGetAway MISSION_FLOW_SET_FAIL_REASON("PRO_MDIED") ELSE MISSION_FLOW_SET_FAIL_REASON("CMN_MDIED") ENDIF BREAK CASE failTrevorDied IF eMissionObjective < stageGetAway MISSION_FLOW_SET_FAIL_REASON("PRO_TDIED") ELSE MISSION_FLOW_SET_FAIL_REASON("CMN_TDIED") ENDIF BREAK CASE failBradDied MISSION_FLOW_SET_FAIL_REASON("PRO_BDIED") BREAK CASE failDriverDied MISSION_FLOW_SET_FAIL_REASON("PRO_DDIED") BREAK CASE failHostageDied MISSION_FLOW_SET_FAIL_REASON("PRO_HDIED") CREATE_CONVERSATION(sPedsForConversation, sConversationBlock, "PRO_KillHost", CONV_PRIORITY_MEDIUM) WHILE IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() WAIT(0) ENDWHILE BREAK CASE failCarDestroyed MISSION_FLOW_SET_FAIL_REASON("PRO_FCAR") BREAK CASE failOutOfAmmo MISSION_FLOW_SET_FAIL_REASON("PRO_FAMMO") BREAK CASE failOffRoute MISSION_FLOW_SET_FAIL_REASON("PRO_FROUTE") BREAK CASE failStuck MISSION_FLOW_SET_FAIL_REASON("PRO_FSTUCK") BREAK CASE failAbandonedTrevor MISSION_FLOW_SET_FAIL_REASON("CMN_TLEFT") BREAK CASE failAbandonedMichael MISSION_FLOW_SET_FAIL_REASON("CMN_MLEFT") BREAK CASE failAbandonedCrew MISSION_FLOW_SET_FAIL_REASON("PRO_FLEFT") BREAK CASE failAbandonedCar MISSION_FLOW_SET_FAIL_REASON("PRO_FABANCAR") BREAK CASE failRanAway MISSION_FLOW_SET_FAIL_REASON("PRO_FRANAWAY") BREAK CASE failHostageGotAway MISSION_FLOW_SET_FAIL_REASON("PRO_FHOSTAWAY") BREAK ENDSWITCH 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). DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE() WAIT(0) ENDWHILE // 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 MISSION_CLEANUP() // must only take 1 frame and terminate the thread ENDPROC PROC DEATH_CHECKS() //Shooting - Sneak a bit of script here not really to do with death checks! // IF DOES_ENTITY_EXIST(playerPedID) // IF NOT IS_ENTITY_DEAD(playerPedID) // IF eMissionObjective < cutGuard // DISABLE_PLAYER_FIRING(PLAYER_ID(), TRUE) // // SET_PED_RESET_FLAG(playerPedID, PRF_BlockWeaponFire, TRUE) // //// IF GET_PED_CONFIG_FLAG(playerPedID, PCF_BlockWeaponFire) = FALSE //// SET_PED_CONFIG_FLAG(playerPedID, PCF_BlockWeaponFire, TRUE) //// ENDIF //// ELIF GET_PED_CONFIG_FLAG(playerPedID, PCF_BlockWeaponFire) = TRUE //// SET_PED_CONFIG_FLAG(playerPedID, PCF_BlockWeaponFire, FALSE) // ENDIF // ENDIF // ENDIF REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2191621 INT i IF IS_ENTITY_DEAD(playerPedID) eMissionFail = failPlayerDied missionFailed() ENDIF IF eMissionObjective < stageFinale IF SAFE_DEATH_CHECK_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) eMissionFail = failMichaelDied missionFailed() ENDIF ENDIF IF SAFE_DEATH_CHECK_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) eMissionFail = failTrevorDied missionFailed() ENDIF IF bSkipped = FALSE IF eMissionObjective != stageFinale IF IS_GAMEPLAY_CAM_RENDERING() AND IS_SCREEN_FADED_IN() AND NOT IS_CUTSCENE_PLAYING() IF NOT IS_PED_INJURED(playerPedMichael) AND NOT IS_PED_INJURED(playerPedTrevor) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedMichael), GET_ENTITY_COORDS(playerPedTrevor)) > 75.0 OR ((eMissionObjective = stageShootOut OR (eMissionObjective = cutGetAway AND iCutsceneStage = 0)) AND (GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedMichael), GET_ENTITY_COORDS(playerPedTrevor)) > 50.0 OR (NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5284.030762, -5195.381836, 76.656349>>, <<5417.995117, -5195.255371, 93.967865>>, 70.0) AND NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5360.419922, -5167.944336, 76.751923>>, <<5463.675781, -5171.346680, 92.769196>>, 140.0)))) PRINT_ADV(PRO_TEAM, "PRO_TEAM") #IF IS_DEBUG_BUILD PRINTLN("PRO_TEAM - Players out of range!") #ENDIF ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedMichael), GET_ENTITY_COORDS(playerPedTrevor)) > 100.0 OR ((eMissionObjective = stageShootOut OR (eMissionObjective = cutGetAway AND iCutsceneStage = 0)) AND (GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedMichael), GET_ENTITY_COORDS(playerPedTrevor)) > 75.0 OR (NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5261.509277, -5196.847168, 101.503700>>, <<5380.443848, -5196.899902, 71.411133>>, 110.0) AND NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5481.102051, -5169.144531, 97.666740>>, <<5342.795898, -5165.168457, 72.457390>>, 180.0)))) IF (NOT IS_PED_INJURED(pedBrad) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), GET_ENTITY_COORDS(notPlayerPedID)) < 30.0) eMissionFail = failAbandonedCrew ELSE IF GET_PLAYER_PED_ENUM(playerPedID) = CHAR_MICHAEL eMissionFail = failAbandonedTrevor ELIF GET_PLAYER_PED_ENUM(playerPedID) = CHAR_TREVOR eMissionFail = failAbandonedMichael ENDIF ENDIF missionFailed() ENDIF ENDIF ENDIF ENDIF ENDIF IF SAFE_DEATH_CHECK_PED(pedBrad) IF eMissionObjective < stageFinale eMissionFail = failBradDied missionFailed() ENDIF ENDIF IF SAFE_DEATH_CHECK_PED(pedGetaway) IF eMissionObjective < cutGetAway eMissionFail = failDriverDied missionFailed() ENDIF ENDIF IF SAFE_DEATH_CHECK_VEHICLE(vehCar) OR (NOT IS_ENTITY_DEAD(vehCar) AND IS_ENTITY_ON_FIRE(vehCar)) IF eMissionObjective < stageFinale eMissionFail = failCarDestroyed missionFailed() ENDIF ENDIF REPEAT COUNT_OF(pedHostage) i IF SAFE_DEATH_CHECK_PED(pedHostage[i]) IF NOT IS_PED_INJURED(pedBrad) TASK_TURN_PED_TO_FACE_ENTITY(pedBrad, playerPedID, 10000) TASK_LOOK_AT_ENTITY(pedBrad, playerPedID, 10000) ENDIF IF DOES_ENTITY_EXIST(objCupboardDoor) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHostage) STOP_SYNCHRONIZED_ENTITY_ANIM(objCupboardDoor, INSTANT_BLEND_OUT, TRUE) ENDIF ENDIF #IF IS_DEBUG_BUILD INT iDebugLoop REPEAT COUNT_OF(pedHostage) iDebugLoop VECTOR vDebugVector = GET_ENTITY_COORDS(pedHostage[iDebugLoop], FALSE) PRINTLN("Hostage[", iDebugLoop, "] Injured[", IS_ENTITY_DEAD(pedHostage[iDebugLoop]), "] at coords <<", vDebugVector.X, ", ", vDebugVector.Y, ", ", vDebugVector.Z, ">>") ENDREPEAT #ENDIF eMissionFail = failHostageDied missionFailed() ENDIF ENDREPEAT SAFE_DEATH_CHECK_PED(pedGuard) REPEAT COUNT_OF(pedCop) i IF DOES_ENTITY_EXIST(pedCop[i]) REMOVE_COP_BLIP_FROM_PED(pedCop[i]) ENDIF UPDATE_AI_PED_BLIP(pedCop[i], blipStructCop[i]) // IF SAFE_DEATH_CHECK_PED(pedCop[i]) // SAFE_REMOVE_BLIP(blipCop[i]) // ENDIF // // IF NOT DOES_BLIP_EXIST(blipCop[i]) // IF eMissionObjective <= cutGetAway // IF DOES_ENTITY_EXIST(pedCop[i]) // IF NOT IS_PED_INJURED(pedCop[i]) // IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedCop[i]), GET_ENTITY_COORDS(playerPedID)) < 50.0 // SAFE_ADD_BLIP_PED(blipCop[i], pedCop[i], TRUE) // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF ENDREPEAT REPEAT COUNT_OF(vehCop) i SAFE_DEATH_CHECK_VEHICLE(vehCop[i]) ENDREPEAT ENDPROC INT iCurrentTake INT iDisplayedTake INT iMoneyCountEffect = -1 INT iTakeFrameCount //PURPOSE: Displays the money counter PROC DISPLAY_TAKE() IF iTakeFrameCount != GET_FRAME_COUNT() iTakeFrameCount = GET_FRAME_COUNT() HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) SET_FAR_RIGHT_TITLE_POSITION_HUD_THIS_FRAME() IF iDisplayedTake != iCurrentTake IF iMoneyCountEffect = -1 iMoneyCountEffect = GET_SOUND_ID() PLAY_SOUND_FRONTEND(iMoneyCountEffect, "ROBBERY_MONEY_TOTAL", "HUD_FRONTEND_CUSTOM_SOUNDSET") ENDIF IF iDisplayedTake > iCurrentTake iDisplayedTake = iDisplayedTake - ROUND(0 +@ 500000) IF iDisplayedTake < iCurrentTake iDisplayedTake = iCurrentTake ENDIF DRAW_GENERIC_SCORE(iDisplayedTake, "CMN_TAKE", HEIST_TAKE_DISPLAY_FLASH_TIME, HUD_COLOUR_RED, HUDORDER_DONTCARE, FALSE, "HUD_CASH", FALSE, 0.0, HUDFLASHING_FLASHWHITE, 250) ELSE IF iCurrentTake - iDisplayedTake < 10000 iDisplayedTake = iCurrentTake ELSE iDisplayedTake = iDisplayedTake + ROUND(0 +@ 500000) ENDIF IF iDisplayedTake > iCurrentTake iDisplayedTake = iCurrentTake ENDIF DRAW_GENERIC_SCORE(iDisplayedTake, "CMN_TAKE", HEIST_TAKE_DISPLAY_FLASH_TIME, HUD_COLOUR_GREEN, HUDORDER_DONTCARE, FALSE, "HUD_CASH", FALSE, 0.0, HUDFLASHING_FLASHWHITE, 250) ENDIF ELSE IF iMoneyCountEffect <> -1 STOP_SOUND(iMoneyCountEffect) iMoneyCountEffect = -1 ENDIF DRAW_GENERIC_SCORE(iDisplayedTake, "CMN_TAKE", HEIST_TAKE_DISPLAY_FLASH_TIME, HUD_COLOUR_GREEN, HUDORDER_DONTCARE, FALSE, "HUD_CASH", FALSE, 0.0, HUDFLASHING_FLASHWHITE, 250) ENDIF ENDIF ENDPROC PROC WAIT_WITH_DEATH_CHECKS(INT iWait = 0, BOOL bDisableCameraChange = FALSE) INT iGameTime = GET_GAME_TIMER() + iWait WHILE GET_GAME_TIMER() <= iGameTime IF eMissionObjective = stageLearnAiming DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UP_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LEFT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_RIGHT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_DOWN_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UD) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LR) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_HEAVY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_LIGHT) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK1) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_BLOCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK1) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_BLOCK) ENDIF IF bDisableCameraChange DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) ENDIF WAIT(0) //Hide HUD HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH) //#IF IS_DEBUG_BUILD PRINTLN("HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH)") #ENDIF //Show HUD IF eMissionObjective >= stageLearnBlips AND eMissionObjective <= stageDuckUnderShutter AND iCurrentTake > 0 IF IS_VALID_INTERIOR(intDepot) IF NOT (HAS_THIS_CUTSCENE_LOADED("pro_mcs_7_concat") AND IS_CUTSCENE_PLAYING()) DISPLAY_TAKE() ENDIF ENDIF ENDIF //Random Peds SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) //Traffic SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) IF eMissionObjective <= stageShootOut IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_COP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) ENDIF ENDIF //Video Recorder REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_Prologue") DEATH_CHECKS() ENDWHILE ENDPROC PROC LOAD_SCENE_ADV(VECTOR vCoords, FLOAT fRadius = 20.0, BOOL bDisableCameraChange = FALSE) 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, ")...") PRINTLN("GET_GAME_TIMER() = ", GET_GAME_TIMER(), " | iTimeOut = ", iTimeOut) #ENDIF WAIT_WITH_DEATH_CHECKS(0, bDisableCameraChange) 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(TRIGGEREDBOOLS bTriggeredBool, STRING sLabel, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE, enumSubtitlesState ShouldDisplaySubtitles = DISPLAY_SUBTITLES, enumBriefScreenState ShouldAddToBriefScreen = DO_ADD_TO_BRIEF_SCREEN) IF NOT HAS_LABEL_BEEN_TRIGGERED(bTriggeredBool) WHILE NOT CREATE_CONVERSATION(sPedsForConversation, sConversationBlock, sLabel, eConvPriority, ShouldDisplaySubtitles, ShouldAddToBriefScreen) 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(bTriggeredBool, bOnce) ENDIF ENDPROC PROC CREATE_CONVERSATION_FROM_SPECIFIC_LINE_ADV(STRING sLabel, STRING sLabelSub, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, enumSubtitlesState ShouldDisplaySubtitles = DISPLAY_SUBTITLES, enumBriefScreenState ShouldAddToBriefScreen = DO_ADD_TO_BRIEF_SCREEN) WHILE NOT CREATE_CONVERSATION_FROM_SPECIFIC_LINE(sPedsForConversation, sConversationBlock, sLabel, sLabelSub, eConvPriority, ShouldDisplaySubtitles, ShouldAddToBriefScreen) 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 ENDPROC PROC PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(TRIGGEREDBOOLS bTriggeredBool, STRING sLabel, STRING sLabelSub, enumConversationPriority eConvPriority = CONV_PRIORITY_MEDIUM, BOOL bOnce = TRUE, enumSubtitlesState ShouldDisplaySubtitles = DISPLAY_SUBTITLES, enumBriefScreenState ShouldAddToBriefScreen = DO_ADD_TO_BRIEF_SCREEN) IF NOT HAS_LABEL_BEEN_TRIGGERED(bTriggeredBool) WHILE NOT PLAY_SINGLE_LINE_FROM_CONVERSATION(sPedsForConversation, sConversationBlock, sLabel, sLabelSub, eConvPriority, ShouldDisplaySubtitles, ShouldAddToBriefScreen) 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(bTriggeredBool, 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 bClearTasks = TRUE, BOOL bInstantKillDialogue = TRUE, BOOL bDontKillHelp = FALSE) IF CAN_PLAYER_START_CUTSCENE() = TRUE IF fRadius <> 0.0 CLEAR_AREA(GET_ENTITY_COORDS(playerPedID), fRadius, TRUE) ENDIF IF NOT bDontKillHelp IF bInstantKillDialogue CLEAR_TEXT() ELSE CLEAR_PRINTS() SAFE_CLEAR_HELP(TRUE) KILL_FACE_TO_FACE_CONVERSATION() ENDIF ELSE CLEAR_PRINTS() IF bInstantKillDialogue KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() ELSE KILL_FACE_TO_FACE_CONVERSATION() ENDIF ENDIF KILL_PHONE_CONVERSATION() SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) IF bClearTasks = TRUE IF NOT IS_PED_IN_ANY_VEHICLE(playerPedID) CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) ENDIF ENDIF ENDIF RETURN CAN_PLAYER_START_CUTSCENE() ENDFUNC //Mid Mission Replay ENUM MissionReplay replayStart, replayCutsceneGuard, replayAimAtGuard, replayShootout, replayGetAway, replayFinale, replayPass ENDENUM PROC MISSION_REPLAY(MissionReplay eMissionReplay = replayStart) //- Replay Overall //- Replay Specific Position VECTOR vStartReplay FLOAT fStartReplay SWITCH eMissionReplay CASE replayStart vStartReplay = vPlayerStart fStartReplay = fPlayerStart BREAK CASE replayCutsceneGuard vStartReplay = <<5299.9331, -5187.6924, 85.7184 - 3.2>> fStartReplay = 165.5154 BREAK CASE replayAimAtGuard vStartReplay = <<5299.9331, -5187.6924, 85.7184 - 3.2>> fStartReplay = 165.5154 BREAK CASE replayShootout vStartReplay = <<5326.8550, -5189.1138, 85.0058 - 3.2>> fStartReplay = 272.8408 BREAK CASE replayGetAway vStartReplay = <<4581.8042, -5059.4099, 109.3138>> fStartReplay = 118.5509 BREAK CASE replayFinale vStartReplay = <<3543.8826, -4696.1963, 112.6563>> fStartReplay = 351.6286 BREAK CASE replayPass vStartReplay = <<3272.7, -4571.2, 118.2>> fStartReplay = 0.0 BREAK ENDSWITCH START_REPLAY_SETUP(vStartReplay, fStartReplay, FALSE) END_REPLAY_SETUP(NULL, VS_DRIVER, FALSE) DEATH_CHECKS() //Since some entities are created before the replay setup //Cam IF NOT DOES_CAM_EXIST(camMain) camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF //- Replay Specific SWITCH eMissionReplay CASE replayStart SET_PED_POSITION(playerPedID, vPlayerStart, fPlayerStart) eMissionObjective = cutIntro #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'cutIntro'") #ENDIF BREAK CASE replayCutsceneGuard SET_PED_POSITION(playerPedID, <<5299.9331, -5187.6924, 85.7184 - 3.2>>, 165.5154) //Score PLAY_AUDIO(PROLOGUE_TEST_GUARD_HOSTAGE_RT) eMissionObjective = cutGuard #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'cutGuard'") #ENDIF BREAK CASE replayAimAtGuard SET_PED_POSITION(playerPedID, <<5299.9331, -5187.6924, 85.7184 - 3.2>>, 165.5154) //Score PLAY_AUDIO(PROLOGUE_TEST_GUARD_HOSTAGE_RT) bReplaySkip = TRUE eMissionObjective = cutGuard #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'cutGuard'") #ENDIF BREAK CASE replayShootout //Switch Selector ENABLE_SELECTOR() SET_PED_POSITION(playerPedID, <<5326.8550, -5189.1138, 85.0058 - 3.2>>, 272.8408) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 12, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL2, 1, 0) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) UPDATE_PED_REFERENCES() SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) ENDIF //Trevor Balaclava SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 13, 0) SET_PED_PROP_INDEX(playerPedTrevor, ANCHOR_EYES, 4) //Michael Balaclava SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL, 0, 0) //Brad - Duffle Bag SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 1, 0) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIC_PRO_MASK_REMOVED, TRUE) SET_PED_CAN_BE_TARGETTED(playerPedMichael, FALSE) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedID, "TREVOR") IF bSwapTrolley = FALSE CREATE_MODEL_SWAP(<<5302.142, -5191.521, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) CREATE_MODEL_SWAP(<<5308.040, -5191.028, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) bSwapTrolley = TRUE ENDIF bGarageVisible = TRUE //Score PLAY_AUDIO(PROLOGUE_TEST_COP_GUNFIGHT_RT) // bReplaySkip = TRUE eMissionObjective = stageShootOut #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'stageShootOut'") #ENDIF BREAK CASE replayGetAway //Switch Selector ENABLE_SELECTOR() //Brad - Duffle Bag SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 1, 0) SET_PED_POSITION(playerPedID, <<4581.8042, -5059.4099, 109.3138>>, 118.5509) //Player Car REQUEST_MODEL(RANCHERXL2) WHILE NOT HAS_MODEL_LOADED(RANCHERXL2) WAIT(0) ENDWHILE IF NOT DOES_ENTITY_EXIST(vehCar) SPAWN_VEHICLE(vehCar, RANCHERXL2, vCar, fCar, 0) SET_VEHICLE_NUMBER_PLATE_TEXT(vehCar, "87ALN974") SET_MODEL_AS_NO_LONGER_NEEDED(RANCHERXL2) SET_VEHICLE_HAS_STRONG_AXLES(vehCar, TRUE) //SET_ENTITY_PROOFS(vehCar, FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_TYRES_CAN_BURST(vehCar, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_FRONT_RIGHT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_REAR_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_REAR_RIGHT, FALSE) SET_VEHICLE_RADIO_ENABLED(vehCar, FALSE) ENDIF //Score PLAY_AUDIO(PROLOGUE_TEST_GETAWAY_RT) IF g_bShitskipAccepted = TRUE REQUEST_MODEL(U_M_Y_PROLDRIVER_01) WHILE NOT HAS_MODEL_LOADED(U_M_Y_PROLDRIVER_01) WAIT(0) ENDWHILE pedGetaway = CREATE_PED_INSIDE_VEHICLE(vehCar, PEDTYPE_MISSION, U_M_Y_PROLDRIVER_01) SET_PED_COMPONENT_VARIATION(pedGetaway, PED_COMP_HAIR, 0, 0) SET_PED_COMPONENT_VARIATION(pedGetaway, PED_COMP_SPECIAL2, 0, 0) SET_PED_RELATIONSHIP_GROUP_HASH(pedGetaway, relGroupFriendlyFire) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedGetaway, "PROGETAWAY") SET_MODEL_AS_NO_LONGER_NEEDED(U_M_Y_PROLDRIVER_01) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedGetaway, TRUE) WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedGetaway) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE bReplaySkip = TRUE eMissionObjective = cutGetAway #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'stageGetAway'") #ENDIF ELSE eMissionObjective = stageGetAway #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'stageGetAway'") #ENDIF ENDIF BREAK CASE replayFinale //Brad - Duffle Bag SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 1, 0) SET_PED_POSITION(playerPedID, <<3543.8826, -4696.1963, 112.6563>>, 351.6286, FALSE) //Player Car REQUEST_MODEL(RANCHERXL2) WHILE NOT HAS_MODEL_LOADED(RANCHERXL2) WAIT(0) ENDWHILE IF NOT DOES_ENTITY_EXIST(vehCar) SPAWN_VEHICLE(vehCar, RANCHERXL2, vCar, fCar, 0) SET_VEHICLE_NUMBER_PLATE_TEXT(vehCar, "87ALN974") SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_FRONT_LEFT) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_FRONT_RIGHT) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_RIGHT) SET_VEHICLE_DAMAGE(vehCar, <<0.5, -0.4, 0.05>>, 750.0, 750.0, TRUE) SET_VEHICLE_DAMAGE(vehCar, <<0.5, 0.4, 0.05>>, 750.0, 750.0, TRUE) SET_VEHICLE_DAMAGE(vehCar, <<0.0, -2.0, 1.0>>, 250.0, 250.0, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(RANCHERXL2) //SET_ENTITY_PROOFS(vehCar, FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_TYRES_CAN_BURST(vehCar, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_FRONT_RIGHT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_REAR_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_REAR_RIGHT, FALSE) SET_VEHICLE_RADIO_ENABLED(vehCar, FALSE) ENDIF IF g_bShitskipAccepted = TRUE eMissionObjective = cutFinale #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'stageFinale'") #ENDIF ELSE bReplaySkip = TRUE eMissionObjective = stageFinale #IF IS_DEBUG_BUILD PRINTLN("REPLAYING MISSION FROM STAGE 'stageFinale'") #ENDIF ENDIF BREAK CASE replayPass //Cutscene REQUEST_CUTSCENE("Pro_mcs_7_concat", CUTSCENE_REQUESTED_DIRECTLY_FROM_SKIP) SET_PED_POSITION(playerPedID, <<3272.7, -4571.2, 118.2>>, 0.0, FALSE) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) UPDATE_PED_REFERENCES() SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) ENDIF //LOAD_SCENE_ADV(<<3272.7, -4571.2, 118.2>>) SET_CURRENT_PED_WEAPON(playerPedID, WEAPONTYPE_UNARMED, TRUE) WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(playerPedTrevor) WAIT_WITH_DEATH_CHECKS(0) #IF IS_DEBUG_BUILD PRINTLN("HAVE_ALL_STREAMING_REQUESTS_COMPLETED: Trevor") #ENDIF ENDWHILE WHILE NOT HAS_CUTSCENE_LOADED() IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) ENDIF WAIT(0) ENDWHILE SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) SET_CUTSCENE_FADE_VALUES(FALSE, TRUE, TRUE, FALSE) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF START_CUTSCENE() LOAD_CLOUD_HAT("Stormy 01") WHILE NOT IS_CUTSCENE_PLAYING() WAIT(0) ENDWHILE IF NOT IS_REPEAT_PLAY_ACTIVE() SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) ENDIF WHILE IS_CUTSCENE_PLAYING() WAIT(0) ENDWHILE SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF NOT IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_OUT(0) ENDIF eMissionObjective = passMission BREAK ENDSWITCH // IF eMissionObjective <> passMission // LOAD_SCENE_ADV(GET_ENTITY_COORDS(playerPedID)) // ENDIF bSkipped = TRUE ENDPROC PROC LOAD_UNLOAD_ASSETS() //Stages Reference //cutIntro //stageLearnWalking //cutTieUp //stageLearnAiming //stageLearnPhone //stageLearnBlips //stageLeaveVault //cutGuard //stageDisableCameras //stageBlastDoors //stageDuckUnderShutter //stageShootOut //stageGetAway //stageFinale //passMission //failMission //Mission Peds: //GET_PLAYER_PED_MODEL(CHAR_MICHAEL) //GET_PLAYER_PED_MODEL(CHAR_TREVOR) //IG_BRAD //U_M_Y_PROLDRIVER_01 //A_M_M_PROLHOST_01 //A_F_M_PROLHOST_01 //IG_PROLSEC_02 //S_M_M_SNOWCOP_01 //Mission Cars: //RANCHERXL2 //STANIER //POLICEOLD1 //POLICEOLD2 //MINIVAN //STOCKADE3 //Mission Props: //PROP_GAR_DOOR_A_01 //Mission Recordings: //001 //003 //004 //005 //006 //008 //009 //011 //018 //019 //020 //021 //024 //026 //Request Models //GET_PLAYER_PED_MODEL(CHAR_MICHAEL) IF (NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) AND playerPedID = playerPedMichael) AND (eMissionObjective <= cutIntro) HAS_MODEL_LOADED_CHECK(MODEL_GET_PLAYER_PED_MODEL_CHAR_MICHAEL, GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) ENDIF //GET_PLAYER_PED_MODEL(CHAR_TREVOR) IF eMissionObjective <= cutIntro HAS_MODEL_LOADED_CHECK(MODEL_GET_PLAYER_PED_MODEL_CHAR_TREVOR, GET_PLAYER_PED_MODEL(CHAR_TREVOR)) ENDIF //IG_BRAD - Buddy IF eMissionObjective <= cutIntro HAS_MODEL_LOADED_CHECK(MODEL_IG_BRAD, IG_BRAD) ENDIF //A_M_M_PROLHOST_01 - Hostages 0 and 3 IF eMissionObjective = cutIntro HAS_MODEL_LOADED_CHECK(MODEL_A_M_M_PROLHOST_01, A_M_M_PROLHOST_01) ENDIF //A_F_M_PROLHOST_01 - Hostage 2 IF eMissionObjective = cutIntro HAS_MODEL_LOADED_CHECK(MODEL_A_F_M_PROLHOST_01, A_F_M_PROLHOST_01) ENDIF //IG_PROLSEC_02 - Hostage 1 IF eMissionObjective = cutIntro HAS_MODEL_LOADED_CHECK(MODEL_IG_PROLSEC_02, IG_PROLSEC_02) ENDIF //V_ILev_CD_Dust - Debris IF (eMissionObjective >= stageLearnAiming AND eMissionObjective <= stageLearnPhone) HAS_MODEL_LOADED_CHECK(MODEL_V_ILev_CD_Dust, V_ILev_CD_Dust) ENDIF //CSB_PROLSEC - Guard IF (eMissionObjective >= stageLearnBlips AND eMissionObjective <= cutGuard) HAS_MODEL_LOADED_CHECK(MODEL_CSB_PROLSEC, CSB_PROLSEC) ENDIF //RANCHERXL2 - Getaway Car IF eMissionObjective >= stageDuckUnderShutter HAS_MODEL_LOADED_CHECK(MODEL_RANCHERXL2, RANCHERXL2) ENDIF //U_M_Y_PROLDRIVER_01 - Getaway Driver IF eMissionObjective >= stageDuckUnderShutter AND eMissionObjective <= stageShootOut HAS_MODEL_LOADED_CHECK(MODEL_U_M_Y_PROLDRIVER_01, U_M_Y_PROLDRIVER_01) ENDIF //S_M_M_SNOWCOP_01 - Cops IF eMissionObjective >= stageDuckUnderShutter HAS_MODEL_LOADED_CHECK(MODEL_S_M_M_SNOWCOP_01, S_M_M_SNOWCOP_01) ENDIF //U_M_M_PROLSEC_01 - Dead Guard IF eMissionObjective >= stageDuckUnderShutter AND eMissionObjective <= stageShootOut HAS_MODEL_LOADED_CHECK(MODEL_U_M_M_PROLSEC_01, U_M_M_PROLSEC_01) ENDIF //POLICEOLD1, POLICEOLD2 - Cop Cars IF eMissionObjective >= stageDuckUnderShutter HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD1, POLICEOLD1) HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD2, POLICEOLD2) REQUEST_VEHICLE_ASSET(POLICEOLD1, ENUM_TO_INT(VRF_REQUEST_EXIT_TO_AIM_ANIMS)) REQUEST_VEHICLE_ASSET(POLICEOLD2, ENUM_TO_INT(VRF_REQUEST_EXIT_TO_AIM_ANIMS)) ENDIF //STOCKADE3 - Security Vans IF eMissionObjective >= stageDuckUnderShutter AND eMissionObjective <= stageShootOut HAS_MODEL_LOADED_CHECK(MODEL_STOCKADE3, STOCKADE3) ENDIF //FREIGHT - Train Engine IF eMissionObjective >= cutFinale HAS_MODEL_LOADED_CHECK(MODEL_FREIGHT, FREIGHT) ENDIF //FREIGHTCONT1 - Train Carriage 1 IF eMissionObjective >= cutFinale HAS_MODEL_LOADED_CHECK(MODEL_FREIGHTCONT1, FREIGHTCONT1) ENDIF //FREIGHTCONT2 - Train Carriage 2 IF eMissionObjective >= cutFinale HAS_MODEL_LOADED_CHECK(MODEL_FREIGHTCONT2, FREIGHTCONT2) ENDIF //PROP_CS_HEIST_BAG_02 - Duffle Bag Prop IF eMissionObjective >= stageLearnBlips HAS_MODEL_LOADED_CHECK(MODEL_PROP_CS_HEIST_BAG_02, PROP_CS_HEIST_BAG_02) HAS_MODEL_LOADED_CHECK(MODEL_P_LD_HEIST_BAG_S_1, P_LD_HEIST_BAG_S_1) HAS_MODEL_LOADED_CHECK(MODEL_P_CSH_STRAP_01_S, P_CSH_STRAP_01_S) ENDIF //P_TREVOR_PROLOGE_BALLY_S - Balaclava + Ski Mask Prop IF eMissionObjective >= stageDuckUnderShutter AND eMissionObjective <= stageShootOut HAS_MODEL_LOADED_CHECK(MODEL_P_TREVOR_PROLOGE_BALLY_S, P_TREVOR_PROLOGE_BALLY_S) HAS_MODEL_LOADED_CHECK(MODEL_P_TREV_SKI_MASK_S, P_TREV_SKI_MASK_S) ENDIF //PROP_MICHAEL_BALACLAVA - Balaclava Prop IF eMissionObjective >= stageLeaveVault AND eMissionObjective <= cutGuard HAS_MODEL_LOADED_CHECK(MODEL_PROP_MICHAEL_BALACLAVA, PROP_MICHAEL_BALACLAVA) ENDIF //Lighting Rigs IF eMissionObjective = cutIntro HAS_MODEL_LOADED_CHECK(MODEL_PROP_1ST_PROLOGUE_SCENE, PROP_1ST_PROLOGUE_SCENE) ENDIF IF eMissionObjective >= stageLearnWalking AND eMissionObjective <= stageLearnAiming HAS_MODEL_LOADED_CHECK(MODEL_PROP_1ST_HOSTAGE_SCENE, PROP_1ST_HOSTAGE_SCENE) ENDIF IF eMissionObjective >= stageLearnAiming AND eMissionObjective <= stageLearnPhone HAS_MODEL_LOADED_CHECK(MODEL_PROP_VAULT_DOOR_SCENE, PROP_VAULT_DOOR_SCENE) ENDIF IF eMissionObjective >= stageLeaveVault AND eMissionObjective <= cutGuard HAS_MODEL_LOADED_CHECK(MODEL_PROP_2ND_HOSTAGE_SCENE, PROP_2ND_HOSTAGE_SCENE) ENDIF //Vehicle Recordings //014 - Actual camera car back //015 - Actual camera car front //016 - Actual camera car left //017 - Actual camera car right //022 - Actual camera chopper IF eMissionObjective >= stageBlastDoors HAS_RECORDING_LOADED_CHECK(003, sCarrec) HAS_RECORDING_LOADED_CHECK(004, sCarrec) HAS_RECORDING_LOADED_CHECK(005, sCarrec) HAS_RECORDING_LOADED_CHECK(006, sCarrec) HAS_RECORDING_LOADED_CHECK(008, sCarrec) HAS_RECORDING_LOADED_CHECK(009, sCarrec) HAS_RECORDING_LOADED_CHECK(011, sCarrec) HAS_RECORDING_LOADED_CHECK(026, sCarrec) HAS_RECORDING_LOADED_CHECK(027, sCarrec) HAS_RECORDING_LOADED_CHECK(028, sCarrec) HAS_RECORDING_LOADED_CHECK(029, sCarrec) HAS_RECORDING_LOADED_CHECK(032, sCarrec) HAS_RECORDING_LOADED_CHECK(033, sCarrec) HAS_RECORDING_LOADED_CHECK(034, sCarrec) HAS_RECORDING_LOADED_CHECK(035, sCarrec) ENDIF //Waypoint Recordings IF eMissionObjective = stageLearnPhone REQUEST_WAYPOINT_RECORDING(sWaypointRoute1) ELIF eMissionObjective > stageLeaveVault IF GET_IS_WAYPOINT_RECORDING_LOADED(sWaypointRoute1) REMOVE_WAYPOINT_RECORDING(sWaypointRoute1) ENDIF ENDIF IF eMissionObjective = stageLearnBlips REQUEST_WAYPOINT_RECORDING(sWaypointRoute2) ELIF eMissionObjective > stageLeaveVault IF GET_IS_WAYPOINT_RECORDING_LOADED(sWaypointRoute2) REMOVE_WAYPOINT_RECORDING(sWaypointRoute2) ENDIF ENDIF //Animation Dictionaries IF eMissionObjective >= stageDuckUnderShutter HAS_ANIM_DICT_LOADED_CHECK(sAnimDictDeepSnow) ENDIF // IF eMissionObjective >= cutGuard // AND eMissionObjective <= stageDisableCameras // HAS_ANIM_DICT_LOADED_CHECK(sAnimDictSignal) // ELSE // UNLOAD_ANIM_DICT(sAnimDictSignal) // ENDIF IF eMissionObjective >= stageBlastDoors AND eMissionObjective <= stageDuckUnderShutter HAS_ANIM_DICT_LOADED_CHECK(sAnimDictMapObjects) // ELSE // UNLOAD_ANIM_DICT(sAnimDictMapObjects) ENDIF IF eMissionObjective <= cutTieUp HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue1) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue1) ENDIF IF eMissionObjective >= stageLearnWalking AND eMissionObjective <= stageLearnAiming HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_MCS1) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_MCS1_GuardFacial) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_TrevorReturn) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue2) UNLOAD_ANIM_DICT(sAnimDictPrologue2_MCS1) UNLOAD_ANIM_DICT(sAnimDictPrologue2_MCS1_GuardFacial) UNLOAD_ANIM_DICT(sAnimDictPrologue2_TrevorReturn) ENDIF IF eMissionObjective >= stageLearnAiming AND eMissionObjective <= stageLearnPhone HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_Cam) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue3) UNLOAD_ANIM_DICT(sAnimDictPrologue3_Cam) ENDIF IF eMissionObjective >= cutTieUp AND eMissionObjective <= stageLearnBlips HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_Impatient) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue3_Impatient) ENDIF IF eMissionObjective >= cutTieUp AND eMissionObjective <= stageLearnPhone HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_IdleAtCupboard) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue3_IdleAtCupboard) ENDIF IF eMissionObjective >= stageLearnPhone AND eMissionObjective <= stageLearnBlips HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_IdleInVault) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue3_IdleInVault) ENDIF IF eMissionObjective >= stageLearnAiming AND eMissionObjective <= stageLeaveVault HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_LeaveVault) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue_LeaveVault) ENDIF IF eMissionObjective >= stageLearnPhone AND eMissionObjective <= stageLearnBlips HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_Cough) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue_Cough) ENDIF IF eMissionObjective >= stageLeaveVault AND eMissionObjective <= cutGuard HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_Base) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_Shot) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_PlayerPause) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_Fail) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue4_Base) UNLOAD_ANIM_DICT(sAnimDictPrologue4_Shot) UNLOAD_ANIM_DICT(sAnimDictPrologue4_PlayerPause) UNLOAD_ANIM_DICT(sAnimDictPrologue4_Fail) ENDIF IF eMissionObjective >= cutGuard AND eMissionObjective <= stageDuckUnderShutter HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Start) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Main) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_End) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue5_Start) UNLOAD_ANIM_DICT(sAnimDictPrologue5_Main) UNLOAD_ANIM_DICT(sAnimDictPrologue5_End) ENDIF IF eMissionObjective >= stageBlastDoors AND eMissionObjective <= stageDuckUnderShutter HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Duck) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue5_Duck) ENDIF IF eMissionObjective >= stageShootOut AND eMissionObjective <= stageGetAway HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_LeadOut) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue_LeadOut) ENDIF IF (eMissionObjective >= stageBlastDoors AND eMissionObjective <= stageShootOut) OR (eMissionObjective >= stageGetAway AND eMissionObjective <= stageFinale) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue6) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue6) ENDIF IF (eMissionObjective >= stageBlastDoors AND eMissionObjective <= stageShootOut) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue6FirstPerson) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue6FirstPerson) ENDIF IF eMissionObjective >= stageBlastDoors AND eMissionObjective <= stageDuckUnderShutter HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_CleanSmoke) ELSE UNLOAD_ANIM_DICT(sAnimDictPrologue_CleanSmoke) ENDIF IF (eMissionObjective >= stageDuckUnderShutter AND eMissionObjective <= stageShootOut) HAS_ANIM_DICT_LOADED_CHECK(sAnimDictDeadGuard) ELSE UNLOAD_ANIM_DICT(sAnimDictDeadGuard) ENDIF ENDPROC PROC initialiseVariables() //Hostages vHostageStart[0] = <<5311.9209, -5206.0557, 85.7187 - 3.2>> fHostageStart[0] = 272.2921 vHostageStart[1] = <<5310.6543, -5207.0322, 85.7187 - 3.2>> fHostageStart[1] = 139.6356 vHostageStart[2] = <<5311.5762, -5211.3032, 85.7187 - 3.2>> fHostageStart[2] = 22.0567 vHostageStart[3] = <<5314.7949, -5205.6216, 85.7187 - 3.2>> fHostageStart[3] = 151.4604 //Cops // Cops in first cars vCopStart[0] = <<5353.8232, -5184.7437, 81.7620>> fCopStart[0] = 169.0588 vCopStart[1] = <<5355.1685, -5182.4038, 81.7620>> fCopStart[1] = 61.0588 vCopStart[2] = <<5353.9199, -5190.8887, 81.7620>> fCopStart[2] = 130.9412 vCopStart[3] = <<5352.0396, -5188.7974, 81.7620>> fCopStart[3] = 21.5294 vCopStart[4] = <<5353.89, -5192.23, 81.7620>> fCopStart[4] = 115.6477 vCopStart[5] = <<5343.4702, -5196.2905, 81.7620>> fCopStart[5] = 358.9412 // Backup cops vCopStart[6] = <<5382.5513, -5176.6104, 80.4568>> fCopStart[6] = 108.5755 vCopStart[7] = <<5381.8916, -5175.5967, 80.4709>> fCopStart[7] = 123.5640 vCopStart[8] = <<5381.1890, -5173.6582, 80.4267>> fCopStart[8] = 117.5804 // Cops for outside car vCopStart[9] = <<5389.6899, -5191.0996, 80.2098>> fCopStart[9] = 143.6466 vCopStart[10] = <<5390.5415, -5186.2769, 79.9868>> fCopStart[10] = 59.6471 // More cop cars pulls up vCopStart[11] = <<5410.3872, -5182.0073, 78.6563>> fCopStart[11] = 135.1765 vCopStart[12] = <<5408.5981, -5180.1704, 78.6633>> fCopStart[12] = 133.0588 vCopStart[13] = <<5419.5688, -5171.7134, 77.9652>> fCopStart[13] = 201.5294 vCopStart[14] = <<5411.2510, -5179.0444, 78.4814>> fCopStart[14] = 45.5294 vCopStart[15] = <<5432.5781, -5151.1963, 77.1536>> fCopStart[15] = 104.1176 vCopStart[16] = <<5431.6709, -5148.8687, 77.0620>> fCopStart[16] = 106.2353 // Driving set piece car vCopStart[17] = <<5410.8320, -5177.5654, 79.4830>> fCopStart[17] = 115.8309 // Road Block vCopStart[18] = <<3497.6106, -4872.6333, 110.5807>> fCopStart[18] = 262.9412 vCopStart[19] = <<3497.8025, -4870.1411, 110.7024>> fCopStart[19] = 266.0508 vCopStart[20] = <<3494.8452, -4869.0930, 110.7144>> fCopStart[20] = 279.8827 vCopStart[21] = <<3494.4653, -4866.5808, 110.7753>> fCopStart[21] = 280.5879 vCopStart[22] = <<3496.4709, -4865.4631, 110.7407>> fCopStart[22] = 226.2353 vCopStart[23] = <<3495.5537, -4864.5581, 110.7269>> fCopStart[23] = 222.0000 // Farm Cops // vCopStart[23] = <<3529.1243, -4678.3862, 113.3239>> //Since farm cops are positioned already // fCopStart[23] = 192.3529 vCopStart[24] = <<3530.2092, -4673.2529, 113.2062>> fCopStart[24] = 274.9412 vCopStart[25] = <<3532.4717, -4673.4292, 113.2055>> fCopStart[25] = 189.5294 vCopStart[26] = <<3533.2830, -4671.6245, 113.2060>> fCopStart[26] = 213.2454 vCopStart[27] = <<3536.7886, -4671.3682, 113.2061>> fCopStart[27] = 270.7059 vCopStart[28] = <<3533.1016, -4666.0059, 113.1611>> fCopStart[28] = 176.8235 vCopStart[29] = <<3542.2075, -4660.9946, 113.4237>> fCopStart[29] = 131.6470 vCopStart[30] = <<3546.6194, -4659.5532, 113.1374>> fCopStart[30] = 212.8229 vCopStart[31] = <<3550.4600, -4651.6206, 113.2091>> fCopStart[31] = 92.1176 vCopStart[32] = <<3552.1580, -4654.5864, 113.2239>> fCopStart[32] = 174.4004 vCopStart[33] = <<3548.8970, -4650.2505, 113.2084>> fCopStart[33] = 177.3907 vCopStart[34] = <<3541.2754, -4662.7432, 113.3224>> fCopStart[34] = 255.1765 // Farm Respawn Points vCopStart[35] = <<3514.9692, -4655.0806, 113.5005>> fCopStart[35] = 226.6858 vCopStart[36] = <<3544.4329, -4643.0356, 113.1429>> fCopStart[36] = 233.6201 vCopStart[37] = <<3560.4609, -4635.5728, 113.8873>> fCopStart[37] = 166.5792 vCopStart[38] = <<3510.5347, -4675.3320, 113.2635>> fCopStart[38] = 320.8466 //Route vRoutePoint1[0] = <<4587.656250, -5054.247070, 106.987206>> vRoutePoint1[1] = <<4558.967285, -5074.121582, 107.657402>> vRoutePoint1[2] = <<4528.416016, -5091.893066, 107.540009>> vRoutePoint1[3] = <<4487.448730, -5103.481934, 107.970634>> vRoutePoint1[4] = <<4438.860840, -5102.146973, 107.903770>> vRoutePoint1[5] = <<4337.285645, -5082.368652, 106.054886>> vRoutePoint1[6] = <<4067.197998, -5057.169922, 103.584610>> vRoutePoint1[7] = <<3966.121582, -5043.051270, 104.908440>> vRoutePoint1[8] = <<3880.685791, -5022.592773, 106.335892>> vRoutePoint1[9] = <<3782.208740, -4988.326660, 106.596001>> vRoutePoint1[10] = <<3630.503418, -4916.526855, 106.600075>> vRoutePoint1[11] = <<3570.768311, -4890.154297, 106.696304>> vRoutePoint1[12] = <<3546.578369, -4883.235840, 106.738144>> vRoutePoint1[13] = <<3514.123047, -4852.970215, 110.168335>>// vRoutePoint2[0] = <<4552.222656, -5078.522949, 117.635406>> vRoutePoint2[1] = <<4515.127441, -5096.684570, 117.544296>> vRoutePoint2[2] = <<4471.467285, -5106.235352, 118.198639>> vRoutePoint2[3] = <<4426.590332, -5100.460938, 117.977173>> vRoutePoint2[4] = <<4317.045898, -5079.535156, 117.869759>> vRoutePoint2[5] = <<4054.019531, -5055.593262, 115.677887>> vRoutePoint2[6] = <<3955.333984, -5040.765137, 117.076363>> vRoutePoint2[7] = <<3862.413086, -5017.158691, 118.460083>> vRoutePoint2[8] = <<3771.825195, -4984.122559, 118.267883>> vRoutePoint2[9] = <<3621.113037, -4912.028809, 118.616516>> vRoutePoint2[10] = <<3561.085938, -4886.648926, 118.709610>> vRoutePoint2[11] = <<3477.843750, -4862.327148, 118.788033>> vRoutePoint2[12] = <<3512.075195, -4850.826660, 119.892403>> vRoutePoint2[13] = <<3544.632080, -4882.229980, 115.740044>> fRouteWidth[0] = 20.0 fRouteWidth[1] = 20.0 fRouteWidth[2] = 20.0 fRouteWidth[3] = 20.0 fRouteWidth[4] = 20.0 fRouteWidth[5] = 20.0 fRouteWidth[6] = 20.0 fRouteWidth[7] = 20.0 fRouteWidth[8] = 20.0 fRouteWidth[9] = 20.0 fRouteWidth[10] = 20.0 fRouteWidth[11] = 20.0 fRouteWidth[12] = 20.0 fRouteWidth[13] = 21.0 vRoute[0] = <<4970.8247, -5091.4155, 88.9819>> vRoute[1] = <<4905.5083, -5074.9399, 93.4457>> vRoute[2] = <<4853.3379, -5078.5552, 95.6620>> vRoute[3] = <<4802.6348, -5084.3965, 103.6738>> vRoute[4] = <<4749.6914, -5081.7344, 106.0403>> vRoute[5] = <<4687.3491, -5076.9678, 104.7117>> vRoute[6] = <<4642.8271, -5078.2974, 104.5495>> vRoute[7] = <<4584.6670, -5061.9907, 109.1664>> vRoute[8] = <<4565.5078, -5068.2544, 109.6636>> vRoute[9] = <<4526.3853, -5088.6621, 109.4986>> vRoute[10] = <<4483.2266, -5101.4351, 110.0345>> vRoute[11] = <<4449.3604, -5100.7881, 109.9771>> vRoute[12] = <<4413.3799, -5095.3276, 110.1241>> vRoute[13] = <<4372.2852, -5087.9482, 109.9770>> vRoute[14] = <<4324.6626, -5080.5264, 109.9992>> vRoute[15] = <<4292.9604, -5075.0874, 109.5519>> vRoute[16] = <<4245.4780, -5071.1367, 109.7107>> vRoute[17] = <<4204.5264, -5067.8569, 110.2702>> vRoute[18] = <<4163.5806, -5064.1592, 108.8908>> vRoute[19] = <<4118.8467, -5061.0415, 107.8974>> vRoute[20] = <<4079.5952, -5057.5542, 107.4726>> vRoute[21] = <<4035.8784, -5052.0747, 107.7924>> vRoute[22] = <<3989.1301, -5045.0024, 108.5552>> vRoute[23] = <<3942.5750, -5035.9556, 109.3346>> vRoute[24] = <<3898.9187, -5026.5864, 110.1669>> vRoute[25] = <<3857.7480, -5013.5630, 110.4648>> vRoute[26] = <<3817.7344, -4999.7656, 110.7629>> vRoute[27] = <<3778.0940, -4985.4976, 110.4797>> vRoute[28] = <<3741.1372, -4970.3735, 110.1673>> vRoute[29] = <<3700.5952, -4951.1714, 110.6960>> vRoute[30] = <<3660.6372, -4930.7935, 110.6758>> vRoute[31] = <<3627.8958, -4913.8423, 110.6055>> vRoute[32] = <<3609.6926, -4905.1797, 110.6365>> vRoute[33] = <<3574.8577, -4890.7861, 110.6897>> vRoute[34] = <<3543.4487, -4876.3232, 110.6801>> vRoute[35] = <<3526.9912, -4858.0391, 110.6590>> vRoute[36] = <<3522.7896, -4836.8965, 110.8203>> vRoute[37] = <<3525.2629, -4812.3511, 110.9858>> vRoute[38] = <<3526.6951, -4799.7651, 111.0327>> vRoute[39] = <<3528.1250, -4785.9927, 111.0324>> ENDPROC // RJM - I needed the general cop attribute setup stuff to be separated from CreateCop(), because // my new enemies weren't part of the pedCop[] array. PROC SETUP_COP_ATTRIBUTES(PED_INDEX &pedIndex) IF NOT IS_ENTITY_DEAD(pedIndex) SET_PED_RANDOM_COMPONENT_VARIATION(pedIndex) SET_PED_RELATIONSHIP_GROUP_HASH(pedIndex, relGroupEnemy) SET_PED_AS_ENEMY(pedIndex, TRUE) SET_ENTITY_HEALTH(pedIndex, 200) SET_PED_MAX_HEALTH(pedIndex, 200) SET_PED_DIES_WHEN_INJURED(pedIndex, TRUE) SET_PED_ACCURACY(pedIndex, 1) GIVE_WEAPON_TO_PED(pedIndex, wtPistol, INFINITE_AMMO, TRUE) SET_PED_COMBAT_MOVEMENT(pedIndex, CM_WILLADVANCE) SET_PED_COMBAT_ATTRIBUTES(pedIndex, CA_FLEE_WHILST_IN_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedIndex, CA_LEAVE_VEHICLES, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedIndex, CA_USE_VEHICLE, FALSE) SET_PED_CONFIG_FLAG(pedIndex, PCF_DisableHurt, TRUE) SET_PED_CONFIG_FLAG(pedIndex, PCF_CanAttackNonWantedPlayerAsLaw, TRUE) SET_PED_CONFIG_FLAG(pedIndex, PCF_DontBlipCop, TRUE) ENDIF ENDPROC PROC createCop(INT i) IF NOT ARE_VECTORS_EQUAL(vCopStart[i], VECTOR_ZERO) MODEL_NAMES modelName modelName = S_M_M_SNOWCOP_01 SPAWN_PED(pedCop[i], modelName, vCopStart[i], fCopStart[i]) SETUP_COP_ATTRIBUTES(pedCop[i]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[i], TRUE) #IF IS_DEBUG_BUILD TEXT_LABEL tDebugName = "Cop " tDebugName += i SET_PED_NAME_DEBUG(pedCop[i], tDebugName) #ENDIF //Stats INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(pedCop[i]) ENDIF ENDPROC PROC MOVE_SHOOT_PEDS_TO_COORD(PED_INDEX &pedMove, PED_INDEX &pedTarget, VECTOR vCoord, FLOAT moveState) IF NOT IS_PED_INJURED(pedMove) IF DOES_ENTITY_EXIST(pedTarget) IF IS_PED_INJURED(pedTarget) CLEAR_PED_TASKS(pedMove) BOOL bEnemiesAlive = FALSE FLOAT fDistance = 10000.0 //High number that the peds will all be closer than INT i REPEAT COUNT_OF(pedCop) i IF NOT IS_PED_INJURED(pedCop[i]) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedMove), GET_ENTITY_COORDS(pedCop[i])) < fDistance pedTarget = pedCop[i] fDistance = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedMove), GET_ENTITY_COORDS(pedCop[i])) ENDIF bEnemiesAlive = TRUE ENDIF ENDREPEAT IF bEnemiesAlive = TRUE IF NOT IS_ENTITY_AT_COORD(pedMove, vCoord, <<2.0, 2.0, 2.0>>) IF GET_SCRIPT_TASK_STATUS(pedMove, SCRIPT_TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY) <> PERFORMING_TASK TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(pedMove, vCoord, pedTarget, moveState, TRUE) ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(pedMove, SCRIPT_TASK_SHOOT_AT_ENTITY) <> PERFORMING_TASK TASK_SHOOT_AT_ENTITY(pedMove, pedTarget, -1, FIRING_TYPE_RANDOM_BURSTS) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC //PURPOSE: Triggers multiple bullet hits around the player at given intervals. //AUTHOR: Ross Wallace PROC DO_EXCITING_NEAR_BULLET_MISS_ON_COORD(VECTOR coordToMiss, PED_INDEX sourceOfBullets, INT &iControlTimer, VECTOR sourceOffset, INT timeBetweenBullets = 60, FLOAT minXrange = -3.9, FLOAT maxXrange = -1.0, FLOAT minYRange = -2.9, FLOAT maxYrange = 3.9) //Fire bullets at the player as from the bad guy... INT currentBulletTime = GET_GAME_TIMER() VECTOR bulletHit VECTOR bulletOrigin IF ((currentBulletTime - iControlTimer) > timeBetweenBullets) IF DOES_ENTITY_EXIST(sourceOfBullets) AND NOT IS_PED_INJURED(sourceOfBullets) IF HAS_PED_GOT_FIREARM(sourceOfBullets) bulletHit = coordToMiss + <> bulletOrigin = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(sourceOfBullets, sourceOffset) GET_GROUND_Z_FOR_3D_COORD(bulletHit, bulletHit.z) SHOOT_SINGLE_BULLET_BETWEEN_COORDS(bulletOrigin, bulletHit, 1, FALSE, WEAPONTYPE_ASSAULTRIFLE, sourceOfBullets) iControlTimer = currentBulletTime ENDIF ENDIF ENDIF ENDPROC PROC UPDATE_BUDDY_AMMO() IF NOT HAS_PED_GOT_WEAPON(notPlayerPedID, wtPistol) GIVE_WEAPON_TO_PED(notPlayerPedID, wtPistol, GET_WEAPON_CLIP_SIZE(wtPistol)) ENDIF IF HAS_PED_GOT_WEAPON(notPlayerPedID, wtPistol) IF GET_AMMO_IN_PED_WEAPON(notPlayerPedID, wtPistol) < GET_WEAPON_CLIP_SIZE(wtPistol) SET_PED_AMMO(notPlayerPedID, wtPistol, GET_WEAPON_CLIP_SIZE(wtPistol) * 2) ENDIF ENDIF IF NOT HAS_PED_GOT_WEAPON(notPlayerPedID, wtCarbineRifle) GIVE_WEAPON_TO_PED(notPlayerPedID, wtCarbineRifle, GET_WEAPON_CLIP_SIZE(wtCarbineRifle)) ENDIF IF HAS_PED_GOT_WEAPON(notPlayerPedID, wtCarbineRifle) IF GET_AMMO_IN_PED_WEAPON(notPlayerPedID, wtCarbineRifle) < GET_WEAPON_CLIP_SIZE(wtCarbineRifle) SET_PED_AMMO(notPlayerPedID, wtCarbineRifle, GET_WEAPON_CLIP_SIZE(wtCarbineRifle) * 2) ENDIF ENDIF WEAPON_TYPE wtCurrent = WEAPONTYPE_UNARMED GET_CURRENT_PED_WEAPON(notPlayerPedID, wtCurrent) IF IS_PED_IN_ANY_VEHICLE(notPlayerPedID) IF wtCurrent != wtPistol SET_CURRENT_PED_WEAPON(notPlayerPedID, wtPistol, TRUE) ENDIF ELSE IF wtCurrent != wtCarbineRifle SET_CURRENT_PED_WEAPON(notPlayerPedID, wtCarbineRifle, TRUE) ENDIF ENDIF ENDPROC //PURPOSE: Triggers multiple bullet hits around the player at given intervals. //AUTHOR: Ross Wallace PROC DO_EXCITING_BULLET_ON_COORD(VECTOR coordToHit, PED_INDEX sourceOfBullets, INT &iControlTimer, VECTOR sourceOffset, INT timeBetweenBullets = 60) //Fire bullets at the player as from the bad guy... INT currentBulletTime = GET_GAME_TIMER() VECTOR bulletOrigin IF ((currentBulletTime - iControlTimer) > timeBetweenBullets) IF NOT IS_ENTITY_DEAD(sourceOfBullets) bulletOrigin = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(sourceOfBullets, sourceOffset) GET_GROUND_Z_FOR_3D_COORD(coordToHit, coordToHit.z) SHOOT_SINGLE_BULLET_BETWEEN_COORDS(bulletOrigin, coordToHit, 1, FALSE, WEAPONTYPE_ASSAULTRIFLE, sourceOfBullets) iControlTimer = currentBulletTime ENDIF ENDIF ENDPROC FUNC FLOAT GET_HEADING_FROM_VECTOR(VECTOR vVector) RETURN vVector.Z ENDFUNC //-----------------------------¦ SETUP PROCEDURES ¦------------------------------ //---------------------------¦ OBJECTIVE PROCEDURES ¦---------------------------- PROC initialiseMission() IF INIT_STAGE() DISABLE_CHEAT(CHEAT_TYPE_ALL, TRUE) SET_AUDIO_FLAG("PoliceScannerDisabled", TRUE) SET_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_STATE(FALSE) SET_ALLOW_STREAM_PROLOGUE_NODES(TRUE) ALLOW_SONAR_BLIPS(FALSE) SET_AMBIENT_ZONE_STATE_PERSISTENT("AZ_YANKTON_CEMETARY", FALSE, TRUE) SET_AMBIENT_VEHICLE_NEON_ENABLED(FALSE) //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() //INFORM_MISSION_STATS_OF_MISSION_START_PROLOGUE() //Prepare Mission IF NOT IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_OUT(0) ENDIF CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) SET_PLAYER_PED_DATA_IN_CUTSCENES(FALSE, TRUE) //Special Ability ENABLE_SPECIAL_ABILITY(PLAYER_ID(), FALSE) SET_PED_POSITION(playerPedID, vPlayerStart, fPlayerStart) //Switch Selector DISABLE_SELECTOR() //Ped SET_PED_MODEL_IS_SUPPRESSED(A_F_M_PROLHOST_01, TRUE) SET_PED_MODEL_IS_SUPPRESSED(A_M_M_PROLHOST_01, TRUE) SET_PED_MODEL_IS_SUPPRESSED(S_M_M_ARMOURED_01, TRUE) //Request Additional Text REQUEST_ADDITIONAL_TEXT("PROLOG", MISSION_TEXT_SLOT) //REQUEST_ADDITIONAL_TEXT("PROAUD", MISSION_DIALOGUE_TEXT_SLOT) WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) //OR NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_DIALOGUE_TEXT_SLOT) WAIT(0) #IF IS_DEBUG_BUILD PRINTLN("LOADING TEXT") #ENDIF //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ENDWHILE //Particle Effects REQUEST_PTFX_ASSET() //Particles WHILE NOT HAS_PTFX_ASSET_LOADED() WAIT(0) #IF IS_DEBUG_BUILD PRINTLN("LOADING PTFX") #ENDIF //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ENDWHILE //Doors IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iCupboardDoor) ADD_DOOR_TO_SYSTEM(iCupboardDoor, V_ILev_CD_Door2, <<5316.65, -5205.74, 83.67>>) ENDIF IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iLeftReceptionDoor) ADD_DOOR_TO_SYSTEM(iLeftReceptionDoor, V_ILEV_CD_DOOR, <<5307.52, -5204.54, 83.67>>) ENDIF IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iRightReceptionDoor) ADD_DOOR_TO_SYSTEM(iRightReceptionDoor, V_ILEV_CD_DOOR, <<5310.12, -5204.54, 83.67>>) ENDIF IF NOT IS_DOOR_REGISTERED_WITH_SYSTEM(iCCTVRoomDoor) ADD_DOOR_TO_SYSTEM(iCCTVRoomDoor, v_ilev_cd_door3, <<5305.46, -5177.75, 83.67>>) ENDIF //Score REGISTER_SCRIPT_WITH_AUDIO() //LOAD_AUDIO(PROLOGUE_TEST_MISSION_START) WHILE NOT REQUEST_SCRIPT_AUDIO_BANK("Prologue_Foley") WAIT(0) #IF IS_DEBUG_BUILD PRINTLN("LOADING AUDIO BANK = Prologue_Foley") #ENDIF //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ENDWHILE //Relationships ADD_RELATIONSHIP_GROUP("FRIEND", relGroupFriendlyFire) 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) //Friendly Fire SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, relGroupFriendlyFire) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupFriendlyFire, RELGROUPHASH_PLAYER) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupBuddy, relGroupFriendlyFire) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupFriendlyFire, relGroupBuddy) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupEnemy, relGroupFriendlyFire) SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE, relGroupFriendlyFire, relGroupEnemy) //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) #IF IS_DEBUG_BUILD IF NOT DOES_WIDGET_GROUP_EXIST(widGroup) widGroup = START_WIDGET_GROUP("Prologue") START_WIDGET_GROUP("LightingRig") ADD_WIDGET_BOOL("Debug Draw Rigs", bDebugLightingRig) STOP_WIDGET_GROUP() START_WIDGET_GROUP("First Person Switch Cam") ADD_WIDGET_BOOL("Side Anim?", bDebugSwitchCamAnimSide) STOP_WIDGET_GROUP() START_WIDGET_GROUP("Credits") ADD_WIDGET_BOOL("Display test text", bDebugDisplayCreditsText) ADD_WIDGET_BOOL("Clear test text", bDebugClearCreditsText) ADD_WIDGET_FLOAT_SLIDER("Credits block X", fDebugCreditsBlockX, -1000.0, 1000.0, 1.0) ADD_WIDGET_FLOAT_SLIDER("Credits block Y", fDebugCreditsBlockY, -1000.0, 1000.0, 1.0) textWidgetCreditsAlign = ADD_TEXT_WIDGET("Align") ADD_WIDGET_STRING("") textWidgetText1 = ADD_TEXT_WIDGET("Text 1") textWidgetFont1 = ADD_TEXT_WIDGET("Font 1") textWidgetCreditsColour1 = ADD_TEXT_WIDGET("Colour 1") textWidgetText2 = ADD_TEXT_WIDGET("Text 2") textWidgetFont2 = ADD_TEXT_WIDGET("Font 2") textWidgetCreditsColour2 = ADD_TEXT_WIDGET("Colour 2") textWidgetText3 = ADD_TEXT_WIDGET("Text 3") textWidgetFont3 = ADD_TEXT_WIDGET("Font 3") textWidgetCreditsColour3 = ADD_TEXT_WIDGET("Colour 3") STOP_WIDGET_GROUP() START_WIDGET_GROUP("Debug Print") ADD_WIDGET_BOOL("Doors", bDebugDoors) ADD_WIDGET_BOOL("Help Text", bDebugHelpText) ADD_WIDGET_BOOL("Audio", bDebugAudio) STOP_WIDGET_GROUP() START_WIDGET_GROUP("Debug") ADD_WIDGET_FLOAT_SLIDER("fDistIntoCover", fDistIntoCover, 0.0, 10.0, 0.01) ADD_WIDGET_FLOAT_SLIDER("fTimeIntoCover", fTimeIntoCover, 0.0, 10.0, 0.01) STOP_WIDGET_GROUP() STOP_WIDGET_GROUP() SET_LOCATES_HEADER_WIDGET_GROUP(widGroup) ENDIF #ENDIF //Variables initialiseVariables() //IPL Groups - Interior REQUEST_IPL("prologue06_int") //Interior intDepot = GET_INTERIOR_AT_COORDS_WITH_TYPE(vPlayerStart, "V_CashDepot") PIN_INTERIOR_IN_MEMORY(intDepot) PRINTLN("Pinning interior \"V_CashDepot\"") WHILE NOT IS_INTERIOR_READY(intDepot) WAIT(0) PRINTLN("Waiting for interior \"V_CashDepot\" to become ready.") //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ENDWHILE //IPL Groups //NB: if these change remember to notfiy AI code so they can update the "GTA5_IplGroup.xml" used to create navmeshes REQUEST_IPL("prologue01") REQUEST_IPL("prologue02") REQUEST_IPL("prologue03") REQUEST_IPL("prologue04") REQUEST_IPL("prologue05") REQUEST_IPL("prologue06") REQUEST_IPL("prologuerd") //REQUEST_IPL("Prologue01b") REQUEST_IPL("Prologue01c") REQUEST_IPL("Prologue01d") REQUEST_IPL("Prologue01e") REQUEST_IPL("Prologue01f") REQUEST_IPL("Prologue01g") REQUEST_IPL("prologue01h") REQUEST_IPL("prologue01i") REQUEST_IPL("prologue01j") REQUEST_IPL("prologue01k") REQUEST_IPL("prologue01z") REQUEST_IPL("prologue03b") REQUEST_IPL("prologue04b") REQUEST_IPL("prologue05b") REQUEST_IPL("prologue06b") REQUEST_IPL("prologuerdb") REQUEST_IPL("prologue_occl") REQUEST_IPL("DES_ProTree_start") REQUEST_IPL("DES_ProTree_start_lod") REQUEST_IPL("prologue04_cover") REQUEST_IPL("prologue03_grv_fun") //REQUEST_IPL("prologue03_grv_dug") //prologue03_grv_cov REQUEST_IPL("prologue_LODLights") REMOVE_IPL_FROM_REMOVAL_LIST("prologue_LODLights") REQUEST_IPL("prologue_DistantLights") REMOVE_IPL_FROM_REMOVAL_LIST("prologue_DistantLights") REMOVE_IPL("prologue03_grv_dug") REMOVE_IPL("prologue_grv_torch") //Cullbox SET_MAPDATACULLBOX_ENABLED("Prologue_Main", TRUE) //Clear Area CLEAR_AREA(vPlayerStart, 1000.0, TRUE) //Scenario Blocking ADD_SCENARIO_BLOCKING_AREA(vPlayerStart - <<1000.0, 1000.0, 1000.0>>, vPlayerStart + <<1000.0, 1000.0, 1000.0>>) //Map Cover IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5297.0796, -5182.9907, 82.5187>>) covPointMap[0] = ADD_COVER_POINT(<<5297.0796, -5182.9907, 82.5187>>, 274.0717, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_120) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5315.5337, -5182.3809, 82.5186>>) covPointMap[1] = ADD_COVER_POINT(<<5315.5337, -5182.3809, 82.5186>>, 182.4798, COVUSE_WALLTONEITHER, COVHEIGHT_TOOHIGH, COVARC_120) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5364.8784, -5182.8281, 81.6339>>) covPointMap[2] = ADD_COVER_POINT(<<5364.8784, -5182.8281, 81.6339>>, 88.5395, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_120) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5364.8784, -5182.8281, 81.6339>>) covPointMap[3] = ADD_COVER_POINT(<<5364.8784, -5182.8281, 81.6339>>, 88.5395, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_120) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5364.8784, -5182.8281, 81.6339>>) covPointMap[4] = ADD_COVER_POINT(<<5364.8784, -5182.8281, 81.6339>>, 88.5395, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_120) ENDIF //Ambient SET_AMBIENT_ZONE_LIST_STATE("ZONE_LIST_YANKTON", TRUE) //Wanted SET_MAX_WANTED_LEVEL(0) SET_WANTED_LEVEL_MULTIPLIER(0.0) //Ambulances etc. SET_DISPATCH_COPS_FOR_PLAYER(PLAYER_ID(), FALSE) SET_CREATE_RANDOM_COPS(FALSE) ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, 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_RANDOM_TRAINS(FALSE) //Weather SET_WEATHER_TYPE_NOW_PERSIST("SNOW") LOAD_CLOUD_HAT("RAIN") //LOAD_CLOUD_HAT("Snowy 01") SET_CLOCK_DATE(15, DECEMBER, 2003) SET_CLOCK_TIME(5, 0, 0) //Minimap SET_MINIMAP_IN_PROLOGUE_AND_HANDLE_STATIC_BLIPS(TRUE) //Phone g_Use_Prologue_Cellphone = TRUE //Phone DISABLE_CELLPHONE(TRUE) //Shutter Door Object bGarageVisible = TRUE bGrabShutter = FALSE //Set player WHILE NOT SET_CURRENT_SELECTOR_PED(SELECTOR_PED_MICHAEL) WAIT(0) //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ENDWHILE UPDATE_PED_REFERENCES() SET_PED_POSITION(playerPedID, vPlayerStart, fPlayerStart) CLEAR_PED_WETNESS(playerPedID) SET_PED_TARGET_LOSS_RESPONSE(playerPedID, TLR_NEVER_LOSE_TARGET) SET_PED_CONFIG_FLAG(playerPedMichael, PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(playerPedMichael, PCF_DisableExplosionReactions, TRUE) STOP_PED_SPEAKING(playerPedMichael, TRUE) //Weapon REMOVE_ALL_PED_WEAPONS(playerPedID) GIVE_WEAPON_TO_PED(playerPedID, wtCarbineRifle, 500, TRUE) SET_PED_AMMO(playerPedID, wtCarbineRifle, 500) SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) //Variations //Clear Variations and Props SET_PED_DEFAULT_COMPONENT_VARIATION(playerPedID) CLEAR_ALL_PED_PROPS(playerPedID) //Face SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_HEAD, 0, 3) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_HAIR, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_SPECIAL, 7, 0) //Clothes SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_HAND, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_TORSO, 31, 0) SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_LEG, 26, 0) SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_FEET, 14, 0) //Duffle Bag SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_SPECIAL2, 11, 0) //Cleanup Michael SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) //Spawn Trevor SPAWN_PLAYER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CHAR_TREVOR, vTrevorStart, fTrevorStart) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) SET_PED_CONFIG_FLAG(playerPedTrevor, PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(playerPedTrevor, PCF_DisableExplosionReactions, TRUE) SET_PED_CAN_RAGDOLL(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) REMOVE_ALL_PED_WEAPONS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, 500, TRUE) SET_PED_AMMO(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, 500) SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], 50) SET_PED_TARGET_LOSS_RESPONSE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TLR_NEVER_LOSE_TARGET) SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) STOP_PED_SPEAKING(playerPedTrevor, TRUE) //Variations //Clear Variations and Props SET_PED_DEFAULT_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_ALL_PED_PROPS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) //Face SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HEAD, 0, 5) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_BERD, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HAIR, 1, 0) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_SPECIAL, 13, 0) SET_PED_PROP_INDEX(playerPedTrevor, ANCHOR_EYES, 4) //Clothes SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_TORSO, 9, 0) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_LEG, 9, 0) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_FEET, 12, 0) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_HAND, 4, 0) //Duffle Bag SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_SPECIAL2, 1, 0) //Cleanup Trevor SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_PED_MODEL(CHAR_TREVOR)) //Spawn Brad SPAWN_PED(pedBrad, IG_BRAD, vBuddyStart, fBuddyStart) SET_PED_CONFIG_FLAG(pedBrad, PCF_DisableHurt, TRUE) SET_PED_CONFIG_FLAG(pedBrad, PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(pedBrad, PCF_DisableExplosionReactions, TRUE) RETAIN_ENTITY_IN_INTERIOR(pedBrad, intDepot) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedBrad, TRUE) SET_PED_CAN_RAGDOLL(pedBrad, FALSE) SET_PED_CAN_BE_TARGETTED(pedBrad, FALSE) SET_PED_RELATIONSHIP_GROUP_HASH(pedBrad, relGroupBuddy) GIVE_WEAPON_TO_PED(pedBrad, wtPistol, INFINITE_AMMO, TRUE) GIVE_WEAPON_TO_PED(pedBrad, wtShotgun, INFINITE_AMMO, TRUE) SET_PED_ACCURACY(pedBrad, 50) SET_PED_TARGET_LOSS_RESPONSE(pedBrad, TLR_NEVER_LOSE_TARGET) SAFE_ADD_BLIP_PED(blipBuddy, pedBrad, FALSE) STOP_PED_SPEAKING(pedBrad, TRUE) //Dialogue ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedID, "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 3, pedBrad, "BRAD") //Balaclava SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_HAIR, 1, 0) //Mask SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_FEET, 1, 0) //Cleanup SET_MODEL_AS_NO_LONGER_NEEDED(IG_BRAD) //Wait for variations to load... WHILE NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(playerPedMichael) OR NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(playerPedTrevor) OR NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedBrad) WAIT_WITH_DEATH_CHECKS(0) #IF IS_DEBUG_BUILD PRINTLN("HAVE_ALL_STREAMING_REQUESTS_COMPLETED: Michael | Trevor | Brad") #ENDIF //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ENDWHILE ELSE //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ADVANCE_STAGE() ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) #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 IF INT_TO_ENUM(MissionReplay, GET_REPLAY_MID_MISSION_STAGE()) > replayStart iCurrentTake = g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] #IF IS_DEBUG_BUILD PRINTLN("REPLAY | g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = ", g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE]) #ENDIF iDisplayedTake = iCurrentTake ENDIF 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() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Portraits SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIC_PRO_MASK_REMOVED, FALSE) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TRV_PRO_MASK_REMOVED, FALSE) //Hostages //Guy SPAWN_PED(pedHostage[HostageMale1], A_M_M_PROLHOST_01, vHostageStart[0], fHostageStart[0]) SET_PED_CONFIG_FLAG(pedHostage[HostageMale1], PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(pedHostage[HostageMale1], PCF_DisableExplosionReactions, TRUE) SET_RAGDOLL_BLOCKING_FLAGS(pedHostage[HostageMale1], RBF_PLAYER_IMPACT) SET_PED_MAX_HEALTH(pedHostage[HostageMale1], 101) SET_ENTITY_HEALTH(pedHostage[HostageMale1], 101) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 7, pedHostage[HostageMale1], "PROHOSTAGE2") SET_ENTITY_INVINCIBLE(pedHostage[HostageMale1], TRUE) //Guard SPAWN_PED(pedHostage[HostageGuard], IG_PROLSEC_02, vHostageStart[1], fHostageStart[1]) SET_PED_CONFIG_FLAG(pedHostage[HostageGuard], PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(pedHostage[HostageGuard], PCF_DisableExplosionReactions, TRUE) SET_RAGDOLL_BLOCKING_FLAGS(pedHostage[HostageGuard], RBF_PLAYER_IMPACT) SET_PED_MAX_HEALTH(pedHostage[HostageGuard], 101) SET_ENTITY_HEALTH(pedHostage[HostageGuard], 101) SET_ENTITY_INVINCIBLE(pedHostage[HostageGuard], TRUE) //Girl SPAWN_PED(pedHostage[HostageFemale], A_F_M_PROLHOST_01, vHostageStart[2], fHostageStart[2]) SET_PED_CONFIG_FLAG(pedHostage[HostageFemale], PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(pedHostage[HostageFemale], PCF_DisableExplosionReactions, TRUE) SET_RAGDOLL_BLOCKING_FLAGS(pedHostage[HostageFemale], RBF_PLAYER_IMPACT) SET_PED_MAX_HEALTH(pedHostage[HostageFemale], 101) SET_ENTITY_HEALTH(pedHostage[HostageFemale], 101) SET_PED_AO_BLOB_RENDERING(pedHostage[HostageFemale], FALSE) //Shadows ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedHostage[HostageFemale], "PROHOSTAGE") SET_ENTITY_INVINCIBLE(pedHostage[HostageFemale], TRUE) SET_PED_CAN_BE_TARGETTED(pedHostage[HostageFemale], FALSE) //Guy SPAWN_PED(pedHostage[HostageMale2], A_M_M_PROLHOST_01, vHostageStart[3], fHostageStart[3]) SET_PED_CONFIG_FLAG(pedHostage[HostageMale2], PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(pedHostage[HostageMale2], PCF_DisableExplosionReactions, TRUE) SET_RAGDOLL_BLOCKING_FLAGS(pedHostage[HostageMale2], RBF_PLAYER_IMPACT) SET_PED_MAX_HEALTH(pedHostage[HostageMale2], 101) SET_ENTITY_HEALTH(pedHostage[HostageMale2], 101) SET_PED_COMPONENT_VARIATION(pedHostage[HostageMale2], PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedHostage[HostageMale2], PED_COMP_TORSO, 1, 0) SET_ENTITY_INVINCIBLE(pedHostage[HostageMale2], TRUE) //Cleanup Hostages SET_MODEL_AS_NO_LONGER_NEEDED(IG_PROLSEC_02) SET_MODEL_AS_NO_LONGER_NEEDED(A_F_M_PROLHOST_01) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_PROLHOST_01) INT i //Blips // REPEAT COUNT_OF(pedHostage) i // SAFE_ADD_BLIP_PED(blipHostage[i], pedHostage[i], TRUE) // ENDREPEAT SAFE_ADD_BLIP_PED(blipHostage[HostageGuard], pedHostage[HostageGuard], TRUE) REPEAT COUNT_OF(pedHostage) i SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedHostage[i], TRUE) //SET_PED_CAN_RAGDOLL(pedHostage[i], FALSE) ENDREPEAT //Player Anim //Anims on hostages //Door IF NOT DOES_ENTITY_EXIST(objDoor) objDoor = CREATE_OBJECT_NO_OFFSET(V_ILEV_CD_ENTRYDOOR, vDoorPosition) FREEZE_ENTITY_POSITION(objDoor, TRUE) ENDIF //Assisted ASSISTED_MOVEMENT_REQUEST_ROUTE("Pro_S1") //Radar bRadar = FALSE //Camera IF NOT DOES_CAM_EXIST(camMain) camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF SET_CAM_PARAMS(camMain, <<5314.385742, -5210.130859, 83.931236>>, <<1.569747, 0.0, 83.868217>>, 22.585051) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) WAIT_WITH_DEATH_CHECKS(0) SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CashD_reception") //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() //Score SET_FRONTEND_RADIO_ACTIVE(FALSE) //TEMPORARY //Load Scene LOAD_SCENE_ADV(vPlayerStart) LOAD_AUDIO(PROLOGUE_TEST_HOSTAGES) // Wait for the install screen to finish. #IF IS_DEBUG_BUILD PRINTLN("PROLOGUE WAITING FOR INSTALL SCREEN TO FINISH") #ENDIF WHILE (NOT IS_BIT_SET(g_savedGlobals.sFlowCustom.spInitBitset, SP_INIT_INSTALL_SCREEN_FINISHED)) AND NOT (IS_AUTOSAVE_REQUEST_IN_PROGRESS() OR (g_sAutosaveData.iQueuedRequests > 0)) AND NOT IS_REPLAY_IN_PROGRESS() AND NOT IS_REPEAT_PLAY_ACTIVE() WAIT_WITH_DEATH_CHECKS(0) //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() ENDWHILE #IF IS_DEBUG_BUILD PRINTLN("INSTALL SCREEN HAS FINISHED") #ENDIF PLAY_AUDIO(PROLOGUE_TEST_MISSION_START) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //DRAW_RECT(0.5, 0.5, 1.0, 1.0, 0, 0, 0, 255) //SET_WARNING_MESSAGE("PRO_SETTING", FE_WARNING_NONE) WHILE NOT PREPARE_SYNCHRONIZED_AUDIO_EVENT("PRO_IG_1", 0) #IF IS_DEBUG_BUILD PRINTLN("PREPARE_SYNCHRONIZED_AUDIO_EVENT - PRO_IG_1") #ENDIF WAIT_WITH_DEATH_CHECKS(0) //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() AUDIO_CONTROLLER() ENDWHILE //Ends the artwork loading screen if it is still displaying. SHUTDOWN_LOADING_SCREEN() //Fix for 1654536. Ensure the player is unfrozen as the MP character //creator can leave them frozen. FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE) SETTIMERA(0) LOCK_MINIMAP_ANGLE(15) IF NOT DOES_ENTITY_EXIST(objLightingRig[LIGHTING_RIG_OPENING]) objLightingRig[LIGHTING_RIG_OPENING] = CREATE_OBJECT(PROP_1ST_PROLOGUE_SCENE, <<5310.661, -5211.665, 81.575>>) FORCE_ROOM_FOR_ENTITY(objLightingRig[LIGHTING_RIG_OPENING], intDepot, HASH("V_CashD_reception")) ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF //Request Cutscene REQUEST_CUTSCENE("pro_mcs_1") IF SKIPPED_STAGE() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(1000) // ENDIF ENDIF ELSE //Request Cutscene Variations - pro_mcs_1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_SecurityGuard_Tiedup", pedHostage[HostageGuard]) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Male_Hostage_1", pedHostage[HostageMale1]) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Male_Hostage_2", pedHostage[HostageMale2]) ENDIF SWITCH iCutsceneStage CASE 0 FLOAT fFontHeight SET_ENTITY_HEADING(playerPedID, fPlayerStart) IF GET_CURRENT_LANGUAGE() = LANGUAGE_CHINESE OR GET_CURRENT_LANGUAGE() = LANGUAGE_JAPANESE OR GET_CURRENT_LANGUAGE() = LANGUAGE_KOREAN OR GET_CURRENT_LANGUAGE() = LANGUAGE_CHINESE_SIMPLIFIED SET_TEXT_SCALE(0.675, 0.675) //150% larger font fFontHeight = GET_RENDERED_CHARACTER_HEIGHT(0.675) ELSE //Other Languages SET_TEXT_SCALE(0.45, 0.45) fFontHeight = GET_RENDERED_CHARACTER_HEIGHT(0.45) ENDIF SET_TEXT_CENTRE(TRUE) SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_FADE) BEGIN_TEXT_COMMAND_DISPLAY_TEXT("PRO_SETTING") END_TEXT_COMMAND_DISPLAY_TEXT(0.5, 0.5 - (fFontHeight / 2)) RESET_SCRIPT_GFX_ALIGN() HIDE_LOADING_ON_FADE_THIS_FRAME() //Prevent Recording REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME() IF TIMERA() > 4500 //Sync Scene (Michae + Trevor + Brad + Female Hostage + Door) sceneIntro = CREATE_SYNCHRONIZED_SCENE(sceneIntroPos, sceneIntroRot) //Michael TASK_SYNCHRONIZED_SCENE(playerPedID, sceneIntro, sAnimDictPrologue1, "michael_main_player_zero", INSTANT_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedID) //Trevor TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sceneIntro, sAnimDictPrologue1, "main_player_two", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) //Brad TASK_SYNCHRONIZED_SCENE(pedBrad, sceneIntro, sAnimDictPrologue1, "main_brad", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) SET_CURRENT_PED_WEAPON(pedBrad, wtShotgun, TRUE) //Female Hostage TASK_SYNCHRONIZED_SCENE(pedHostage[HostageFemale], sceneIntro, sAnimDictPrologue1, "main_femalehostage", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageFemale]) //Door PLAY_SYNCHRONIZED_ENTITY_ANIM(objDoor, sceneIntro, "Main_EntryDoor", sAnimDictPrologue1, NORMAL_BLEND_IN, NORMAL_BLEND_OUT) //Audio PLAY_SYNCHRONIZED_AUDIO_EVENT(sceneIntro) //Male Hostage 01 OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue1, "main_malehostage01", sceneIntroPos, sceneIntroRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue1, "idle_loop_malehostage01", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale1], seqMain) CLEAR_SEQUENCE_TASK(seqMain) //Male Hostage 02 OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue1, "main_malehostage02", sceneIntroPos, sceneIntroRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue1, "idle_loop_malehostage02", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale2], seqMain) CLEAR_SEQUENCE_TASK(seqMain) //Guard // OPEN_SEQUENCE_TASK(seqMain) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue1, "main_gaurd", sceneIntroPos, sceneIntroRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue1, "idle_loop_gaurd", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedHostage[HostageGuard], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_SYNCHRONIZED_SCENE(pedHostage[HostageGuard], sceneIntro, sAnimDictPrologue1, "main_gaurd", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageGuard]) PLAY_FACIAL_ANIM(pedHostage[HostageGuard], "main_gaurd_facial", sAnimDictPrologue1) //Camera IF NOT DOES_CAM_EXIST(camAnim) camAnim = CREATE_CAMERA(CAMTYPE_ANIMATED, TRUE) ENDIF REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) PLAY_CAM_ANIM(camAnim, "main_camera", sAnimDictPrologue1, sceneIntroPos, sceneIntroRot) DISPLAY_RADAR(FALSE) DISPLAY_HUD(TRUE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(500) ENDIF IF TIMERA() > 500 ADVANCE_CUTSCENE() ENDIF BREAK CASE 2 IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) > 0.210 //0.243 //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_INSIDE_OFFICE") START_AUDIO_SCENE("PROLOGUE_GET_INSIDE_OFFICE") ENDIF IF IS_RADAR_PREFERENCE_SWITCHED_ON() PRINT_HELP_ADV(PROHLP_RADAR, "PROHLP_RADAR", DEFAULT, (DEFAULT_HELP_TEXT_TIME / 4) * 3) SETTIMERB(0) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 3 IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.5 //0.567 APPLY_PED_BLOOD_SPECIFIC(pedHostage[HostageGuard], ENUM_TO_INT(PDZ_HEAD), 0.354, 0.696, 0.0, 1.0, 0, 0.0, "BulletLarge") ADVANCE_CUTSCENE() ENDIF BREAK CASE 4 // IF NOT HAS_LABEL_BEEN_TRIGGERED(Turning) // IF NOT IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue1, "michael_main_player_zero") // TASK_GO_STRAIGHT_TO_COORD(playerPedID, GET_ENTITY_COORDS(playerPedID), PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, 20.0871) // // SET_LABEL_AS_TRIGGERED(Turning, TRUE) // ENDIF // ENDIF IF IS_CAM_PLAYING_ANIM(camAnim, "main_camera", sAnimDictPrologue1) AND GET_CAM_ANIM_CURRENT_PHASE(camAnim) >= 0.99 OR NOT IS_CAM_PLAYING_ANIM(camAnim, "main_camera", sAnimDictPrologue1) IF GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = FINISHED_TASK OR IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5316.579590, -5205.753906, 82.518654>>, <<5305.574707, -5205.736816, 86.518654>>, 5.0) IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CMN_FPSHELP") SAFE_CLEAR_HELP() ENDIF IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) <> CAM_VIEW_MODE_FIRST_PERSON SET_GAMEPLAY_CAM_RELATIVE_HEADING(32.547848) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-8.712918) STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP(FALSE, 0, CAM_SPLINE_SLOW_IN_SMOOTH) CLEAR_PED_TASKS(playerPedID) ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) //TASK_GO_STRAIGHT_TO_COORD(playerPedID, GET_ENTITY_COORDS(playerPedID), PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, 20.0871) ADVANCE_STAGE() ENDIF ENDIF BREAK ENDSWITCH IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON IF DOES_CAM_EXIST(camAnim) IF IS_CAM_RENDERING(camAnim) // PRINTLN("GET_CAM_ANIM_CURRENT_PHASE(camAnim) = ", GET_CAM_ANIM_CURRENT_PHASE(camAnim)) // PRINTLN("TIMERB() = ", TIMERB()) IF NOT HAS_LABEL_BEEN_TRIGGERED(FIRST_PERSON_INTRO_CAM_FLASH) IF IS_CAM_PLAYING_ANIM(camAnim, "main_camera", sAnimDictPrologue1) AND GET_CAM_ANIM_CURRENT_PHASE(camAnim) >= 0.606985 ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE) PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET") SET_LABEL_AS_TRIGGERED(FIRST_PERSON_INTRO_CAM_FLASH, TRUE) ENDIF ENDIF IF IS_CAM_PLAYING_ANIM(camAnim, "main_camera", sAnimDictPrologue1) AND GET_CAM_ANIM_CURRENT_PHASE(camAnim) >= 0.625 CLEAR_PED_TASKS(playerPedID) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON) SET_ENTITY_HEADING(playerPedID, 20.0) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-1.6) RENDER_SCRIPT_CAMS(FALSE, FALSE) //STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP(FALSE, 0, CAM_SPLINE_SLOW_IN_SMOOTH) ENDIF ENDIF ENDIF ENDIF IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneIntro) IF NOT HAS_LABEL_BEEN_TRIGGERED(CamEffectIntroShot1) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.0 AND HAS_ANIMATED_CAMERA_CUT(camAnim) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camAnim, 1.2) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camAnim, 3.0) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 0.0) SET_LABEL_AS_TRIGGERED(CamEffectIntroShot1, TRUE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(CamEffectIntroShot2) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.072 - 0.01 AND HAS_ANIMATED_CAMERA_CUT(camAnim) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camAnim, 2.45) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camAnim, 3.0) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 0.0) SET_LABEL_AS_TRIGGERED(CamEffectIntroShot2, TRUE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(CamEffectIntroShot3) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.113 - 0.01 AND HAS_ANIMATED_CAMERA_CUT(camAnim) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camAnim, 2.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camAnim, 4.0) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 0.0) SET_LABEL_AS_TRIGGERED(CamEffectIntroShot3, TRUE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(CamEffectIntroShot4) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.199 - 0.01 AND HAS_ANIMATED_CAMERA_CUT(camAnim) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camAnim, 6.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camAnim, 2.0)//0.75) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 0.0) SET_LABEL_AS_TRIGGERED(CamEffectIntroShot4, TRUE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(CamEffectIntroShot5) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.253 - 0.01 AND HAS_ANIMATED_CAMERA_CUT(camAnim) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camAnim, 1.75) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camAnim, 2.5) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 0.0) SET_LABEL_AS_TRIGGERED(CamEffectIntroShot5, TRUE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(CamEffectIntroShot6) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.349 - 0.01 AND HAS_ANIMATED_CAMERA_CUT(camAnim) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camAnim, 10.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camAnim, 2.0) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camAnim, 0.0) SAFE_DELETE_OBJECT(objLightingRig[LIGHTING_RIG_OPENING]) SET_LABEL_AS_TRIGGERED(CamEffectIntroShot6, TRUE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(CamEffectIntroShot7) IF IS_CAM_PLAYING_ANIM(camAnim, "main_camera", sAnimDictPrologue1) AND GET_CAM_ANIM_CURRENT_PHASE(camAnim) >= 0.90 OR NOT IS_CAM_PLAYING_ANIM(camAnim, "main_camera", sAnimDictPrologue1) SET_CAM_PARAMS(camMain, <<5312.071289, -5213.576660, 84.145706>>, <<-5.135734, 0.003036, 15.537188>>, 50.0) SET_CAM_ACTIVE_WITH_INTERP(camMain, camAnim, 500, GRAPH_TYPE_ACCEL, GRAPH_TYPE_ACCEL) SET_LABEL_AS_TRIGGERED(CamEffectIntroShot7, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(WoodSplinter) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.470 IF HAS_PTFX_ASSET_LOADED() START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_pro_door_splinters", <<5309.9, -5208.2, 83.7>>, <<0.0, 0.0, -90.0>>) ENDIF SET_LABEL_AS_TRIGGERED(WoodSplinter, TRUE) ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(PROHLP_RADAR) IF TIMERB() < 5000 #IF IS_DEBUG_BUILD PRINTLN("(TIMERB() / 250) % 2 = ", (TIMERB() / 250) % 2) #ENDIF IF (TIMERB() / 250) % 2 = 0 DISPLAY_RADAR(TRUE) //bRadar = TRUE ELSE DISPLAY_RADAR(FALSE) //bRadar = FALSE ENDIF #IF IS_DEBUG_BUILD PRINTLN("bRadar = ", bRadar) #ENDIF ELIF TIMERB() > 5000 AND NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_BLIPS1) bRadar = TRUE SET_LABEL_AS_TRIGGERED(PROHLP_BLIPS1, TRUE) // - remove me if undo // IF IS_RADAR_PREFERENCE_SWITCHED_ON() // - and bring me back // PRINT_HELP_ADV(PROHLP_BLIPS1, "PROHLP_BLIPS1") // | // ENDIF // | // // | // SET_BLIP_FLASH_DURATION(blipTrevor, 3000 + 3000) // | // SET_BLIP_FLASH_DURATION(blipBuddy, 3000 + 3000) // | // SET_BLIP_FLASH_DURATION(blipHostage[HostageGuard], 3000 + 3000) // - up to here // ELIF TIMERB() > 10000 // AND NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_BLIPS3) // IF IS_RADAR_PREFERENCE_SWITCHED_ON() // PRINT_HELP_ADV(PROHLP_BLIPS3, "PROHLP_BLIPS3") // ENDIF // // SET_BLIP_FLASH_DURATION(blipHostage[HostageGuard], 3000 + 3000) ENDIF IF GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) <> CAM_VIEW_MODE_FIRST_PERSON IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(CMN_FPSHELP, "CMN_FPSHELP") ENDIF ENDIF ENDIF // IF iCutsceneStage > 0 // IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) // AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) // AND NOT IS_SYNCHRONIZED_SCENE_LOOPED(sceneIntro) // AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.567 // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Intro_7, "PRO_Intro", "PRO_Intro_7") // ENDIF // ENDIF // ENDIF IF IS_SCREEN_FADED_IN() IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE1) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.053 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) //ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(FALSE) PRINT_ADV(PRO_SUBTITLE1, "PRO_SUBTITLE1", 3000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE1, TRUE) ENDIF ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE2) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.12 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) PRINT_ADV(PRO_SUBTITLE2, "PRO_SUBTITLE2", 4000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE2, TRUE) ENDIF ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE3) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.23 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) PRINT_ADV(PRO_SUBTITLE3, "PRO_SUBTITLE3", 4000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE3, TRUE) ENDIF ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE4) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.36 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) PRINT_ADV(PRO_SUBTITLE4, "PRO_SUBTITLE4", 3000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE4, TRUE) ENDIF ENDIF // ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE5) // IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.577 // IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 // FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) // PRINT_ADV(PRO_SUBTITLE5, "PRO_SUBTITLE5", 7000) // ELSE // SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE5, TRUE) // ENDIF // ENDIF ENDIF ENDIF ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 1.0) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroTrevor) sceneIntroTrevor = CREATE_SYNCHRONIZED_SCENE(sceneIntroPos, sceneIntroRot) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sceneIntroTrevor, sAnimDictPrologue1, "idle_loop_player_two", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_SYNCHRONIZED_SCENE_LOOPED(sceneIntroTrevor, TRUE) ENDIF ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 1.0) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue1, "idle_loop_gaurd") //Guard TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageGuard], sAnimDictPrologue1, "idle_loop_gaurd", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageGuard]) ENDIF ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 1.0) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBradHostage) sceneIntroBradHostage = CREATE_SYNCHRONIZED_SCENE(sceneIntroPos, sceneIntroRot) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneIntroBradHostage, sAnimDictPrologue1, "idle_loop_brad", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) TASK_SYNCHRONIZED_SCENE(pedHostage[HostageFemale], sceneIntroBradHostage, sAnimDictPrologue1, "idle_loop_femalehostage", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageFemale]) SET_SYNCHRONIZED_SCENE_LOOPED(sceneIntroBradHostage, TRUE) ENDIF ENDIF IF DOOR_SYSTEM_GET_OPEN_RATIO(iCupboardDoor) <> 0.0 OR DOOR_SYSTEM_GET_DOOR_STATE(iCupboardDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(iCupboardDoor, 0.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(iCupboardDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF IF DOOR_SYSTEM_GET_OPEN_RATIO(iLeftReceptionDoor) <> 0.0 OR DOOR_SYSTEM_GET_DOOR_STATE(iLeftReceptionDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(iLeftReceptionDoor, 0.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(iLeftReceptionDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF IF DOOR_SYSTEM_GET_OPEN_RATIO(iRightReceptionDoor) <> 0.0 OR DOOR_SYSTEM_GET_DOOR_STATE(iRightReceptionDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(iRightReceptionDoor, 0.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(iRightReceptionDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF //Disable Player Movement DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_BEHIND) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) 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_PED_RESET_FLAG(playerPedID, PRF_DisablePlayerAutoVaulting, TRUE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) vDoorPosition.Y = -5208.0560 vDoorRotate.Z = 160.0 SET_ENTITY_COORDS_NO_OFFSET(objDoor, vDoorPosition) SET_ENTITY_ROTATION(objDoor, vDoorRotate) REPLAY_STOP_EVENT() IF NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS() RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) ENDIF STOP_CAM_SHAKING(camMain, TRUE) UNLOCK_MINIMAP_ANGLE() SET_ENTITY_INVINCIBLE(pedHostage[HostageFemale], FALSE) SET_ENTITY_INVINCIBLE(pedHostage[HostageGuard], FALSE) SET_ENTITY_INVINCIBLE(pedHostage[HostageMale1], FALSE) SET_ENTITY_INVINCIBLE(pedHostage[HostageMale2], FALSE) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC LearnWalking() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Radar bRadar = TRUE #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Idle Dialogue Timer iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7000) //Cutscene REQUEST_CUTSCENE("pro_mcs_1") //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_INSIDE_OFFICE") START_AUDIO_SCENE("PROLOGUE_GET_INSIDE_OFFICE") ENDIF PRINT_ADV(PRO_WALK, "PRO_WALK") #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() CLEAR_PED_TASKS(playerPedID) //Trevor TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue1, "idle_loop_player_two", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) //Brad TASK_PLAY_ANIM_ADVANCED(pedBrad, sAnimDictPrologue1, "idle_loop_brad", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) //Female Hostage TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageFemale], sAnimDictPrologue1, "idle_loop_femalehostage", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) //Male Hostage 01 TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageMale1], sAnimDictPrologue1, "idle_loop_malehostage01", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) //Male Hostage 02 TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageMale2], sAnimDictPrologue1, "idle_loop_malehostage02", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) //Guard TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageGuard], sAnimDictPrologue1, "idle_loop_gaurd", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) APPLY_PED_BLOOD_SPECIFIC(pedHostage[HostageGuard], ENUM_TO_INT(PDZ_HEAD), 0.354, 0.696, 0.0, 1.0, 0, 0.0, "BulletLarge") SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE SET_PED_CAPSULE(pedBrad, 0.75) SET_PED_CAPSULE(pedHostage[HostageFemale], 0.75) // IF HAS_LABEL_BEEN_TRIGGERED(PROHLP_RADAR) // IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_BLIPS3) // IF IS_RADAR_PREFERENCE_SWITCHED_ON() // PRINT_HELP_ADV(PROHLP_BLIPS3, "PROHLP_BLIPS3") // ENDIF // // SET_BLIP_FLASH_DURATION(blipHostage[HostageGuard], 3000 + 3000) // ENDIF // ENDIF //Request Cutscene Variations - pro_mcs_1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_SecurityGuard_Tiedup", pedHostage[HostageGuard]) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Male_Hostage_1", pedHostage[HostageMale1]) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Male_Hostage_2", pedHostage[HostageMale2]) ENDIF IF IS_SCREEN_FADED_IN() IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE1) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.053 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) //ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(FALSE) PRINT_ADV(PRO_SUBTITLE1, "PRO_SUBTITLE1", 3000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE1, TRUE) ENDIF ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE2) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.12 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) PRINT_ADV(PRO_SUBTITLE2, "PRO_SUBTITLE2", 4000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE2, TRUE) ENDIF ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE3) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.23 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) PRINT_ADV(PRO_SUBTITLE3, "PRO_SUBTITLE3", 4000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE3, TRUE) ENDIF ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE4) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.36 IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) PRINT_ADV(PRO_SUBTITLE4, "PRO_SUBTITLE4", 3000) ELSE SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE4, TRUE) ENDIF ENDIF // ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SUBTITLE5) // IF GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.577 // IF GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 1 // FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST(PREVIOUS_BRIEF_FORCE_DIALOGUE) // PRINT_ADV(PRO_SUBTITLE5, "PRO_SUBTITLE5", 7000) // ELSE // SET_LABEL_AS_TRIGGERED(PRO_SUBTITLE5, TRUE) // ENDIF // ENDIF ENDIF ENDIF ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 1.0) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroTrevor) sceneIntroTrevor = CREATE_SYNCHRONIZED_SCENE(sceneIntroPos, sceneIntroRot) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sceneIntroTrevor, sAnimDictPrologue1, "idle_loop_player_two", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_SYNCHRONIZED_SCENE_LOOPED(sceneIntroTrevor, TRUE) ENDIF ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 1.0) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue1, "idle_loop_gaurd") //Guard TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageGuard], sAnimDictPrologue1, "idle_loop_gaurd", sceneIntroPos, sceneIntroRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageGuard]) ENDIF ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 1.0) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBradHostage) sceneIntroBradHostage = CREATE_SYNCHRONIZED_SCENE(sceneIntroPos, sceneIntroRot) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneIntroBradHostage, sAnimDictPrologue1, "idle_loop_brad", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) TASK_SYNCHRONIZED_SCENE(pedHostage[HostageFemale], sceneIntroBradHostage, sAnimDictPrologue1, "idle_loop_femalehostage", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageFemale]) SET_SYNCHRONIZED_SCENE_LOOPED(sceneIntroBradHostage, TRUE) ENDIF ENDIF IF GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) <> CAM_VIEW_MODE_FIRST_PERSON IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(CMN_FPSHELP, "CMN_FPSHELP") ENDIF ENDIF IF NOT IS_PED_STOPPED(playerPedID) AND NOT IS_PED_STILL(playerPedID) SET_LABEL_AS_TRIGGERED(PROHLP_WALK, TRUE) ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntro) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntro) >= 0.75) OR IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroTrevor) // IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Intro_7) // IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) // AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Intro_7, "PRO_Intro", "PRO_Intro_7") // ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Intro_8) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Intro_8, "PRO_Intro", "PRO_Intro_8") ENDIF ELSE IF TIMERA() > 500 IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_WALK) PRINT_HELP_ADV(PROHLP_WALK, "PROHLP_WALK") //PRINT_HELP_ADV_POS("PROHLP_WALK", VECTOR_ZERO, playerPedID) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_quiet, "PRO_quiet") ENDIF ENDIF IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) //Idle Dialogue SWITCH iDialogueStage CASE 0 IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_Intro_8") IF GET_GAME_TIMER() > iDialogueTimer IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + 2500 iDialogueStage++ ENDIF ENDIF ENDIF BREAK CASE 1 IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_Intro_8") IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Door, "PRO_Door") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF ENDIF BREAK CASE 2 IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_Door") IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Back, "PRO_Back") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF ENDIF BREAK CASE 3 IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_Back") IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1T, "PRO_Idle1T") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF ENDIF BREAK CASE 4 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1B, "PRO_Idle1B") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 5 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1T, "PRO_Idle1T") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 6 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1B, "PRO_Idle1B") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 7 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1T, "PRO_Idle1T") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 8 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1B, "PRO_Idle1B") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 9 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1T, "PRO_Idle1T") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 10 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Idle1B, "PRO_Idle1B") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5316.579590, -5205.753906, 82.518654>>, <<5305.574707, -5205.736816, 86.518654>>, 5.0) OR IS_ENTITY_AT_COORD(playerPedID, <<5309.496094, -5207.671875, 84.018631>>, <<1.0, 1.5, 1.5>>) IF SAFE_START_CUTSCENE(0.0, FALSE, DEFAULT, TRUE) ADVANCE_STAGE() ENDIF ENDIF IF DOOR_SYSTEM_GET_OPEN_RATIO(iCupboardDoor) <> 0.0 OR DOOR_SYSTEM_GET_DOOR_STATE(iCupboardDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(iCupboardDoor, 0.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(iCupboardDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF IF DOOR_SYSTEM_GET_OPEN_RATIO(iLeftReceptionDoor) <> 0.0 OR DOOR_SYSTEM_GET_DOOR_STATE(iLeftReceptionDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(iLeftReceptionDoor, 0.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(iLeftReceptionDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF IF DOOR_SYSTEM_GET_OPEN_RATIO(iRightReceptionDoor) <> 0.0 OR DOOR_SYSTEM_GET_DOOR_STATE(iRightReceptionDoor) != DOORSTATE_FORCE_LOCKED_THIS_FRAME DOOR_SYSTEM_SET_OPEN_RATIO(iRightReceptionDoor, 0.0, FALSE, FALSE) DOOR_SYSTEM_SET_DOOR_STATE(iRightReceptionDoor, DOORSTATE_FORCE_LOCKED_THIS_FRAME, FALSE, TRUE) ENDIF //Disable Player Controls // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_HEAVY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_LIGHT) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK1) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_BLOCK) 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_PED_RESET_FLAG(playerPedID, PRF_DisablePlayerAutoVaulting, TRUE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) IF DOES_CAM_EXIST(camAnim) DESTROY_CAM(camAnim) ENDIF ASSISTED_MOVEMENT_REMOVE_ROUTE("Pro_S1") //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_INSIDE_OFFICE") STOP_AUDIO_SCENE("PROLOGUE_GET_INSIDE_OFFICE") ENDIF eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC cutsceneTieUp() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Text IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CMN_FPSHELP") CLEAR_PRINTS() KILL_FACE_TO_FACE_CONVERSATION() ELSE CLEAR_TEXT() ENDIF //Shadows SET_PED_AO_BLOB_RENDERING(pedHostage[HostageFemale], TRUE) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Cutscene REQUEST_CUTSCENE("pro_mcs_1", CUTSCENE_REQUESTED_FROM_Z_SKIP) IF NOT DOES_ENTITY_EXIST(objLightingRig[LIGHTING_RIG_HOSTAGE]) objLightingRig[LIGHTING_RIG_HOSTAGE] = CREATE_OBJECT(PROP_1ST_HOSTAGE_SCENE, <<5310.661, -5206.56, 81.575>>) FORCE_ROOM_FOR_ENTITY(objLightingRig[LIGHTING_RIG_HOSTAGE], intDepot, HASH("V_CashD_reception")) ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE IF NOT IS_PED_IN_COVER(playerPedMichael) SET_PED_CAPSULE(playerPedMichael, 0.5) ENDIF //Camera IF CAN_SET_EXIT_STATE_FOR_CAMERA() sceneIntroCam = CREATE_SYNCHRONIZED_SCENE(<<5305.510, -5190.700, 82.520>>, VECTOR_ZERO) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneIntroCam, TRUE) IF NOT DOES_CAM_EXIST(camAnim) camAnim = CREATE_CAMERA(CAMTYPE_ANIMATED, TRUE) ENDIF SET_CAM_ACTIVE(camAnim, TRUE) PLAY_SYNCHRONIZED_CAM_ANIM(camAnim, sceneIntroCam, "blendout_pro_mcs_1_cam", sAnimDictPrologue1) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(-87.2 - GET_ENTITY_HEADING(playerPedID)) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-2.0) ENDIF IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") SET_ENTITY_ANIM_SPEED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two", GET_SYNCHRONIZED_SCENE_RATE(sceneIntroBrad)) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(BradAndHostage) //IF GET_CUTSCENE_TIME() > ROUND(8.000000 * 1000.0) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroCam) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntroCam) >= 0.3 SET_SYNCHRONIZED_SCENE_RATE(sceneIntroBrad, 1.0) SET_SYNCHRONIZED_SCENE_RATE(sceneIntroHostage, 1.0) SET_FORCE_FOOTSTEP_UPDATE(pedBrad, TRUE) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageFemale], TRUE) SET_LABEL_AS_TRIGGERED(BradAndHostage, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TrevorSetCharge) //IF GET_CUTSCENE_TIME() > ROUND(8.500000 * 1000.0) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroCam) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntroCam) >= 0.4 //Trevor IF WAS_CUTSCENE_SKIPPED() TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 1.0) ELSE TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) ENDIF FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_LABEL_AS_TRIGGERED(TrevorSetCharge, TRUE) ENDIF ENDIF //Michael IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") SET_PED_POSITION(playerPedID, <<5308.9097, -5206.3105, 82.5186>>, 272.0266, FALSE) CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2_MCS1, "kick_down_player_zero", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.125) //TASK_PLAY_ANIM(NULL, sAnimDictPrologue2, "main_player_zero", NORMAL_BLEND_IN, SLOW_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(playerPedID, seqMain) CLEAR_SEQUENCE_TASK(seqMain) //TASK_PLAY_ANIM(playerPedID, sAnimDictPrologue2, "main_player_zero", 1.0, SLOW_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedID) 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(PRO_hostf, "PRO_hostf") ENDIF ENDIF //Trevor IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") TASK_AIM_GUN_AT_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], pedHostage[HostageGuard], -1, TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF //Guard IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("PRO_SecurityGuard_Tiedup") //TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2_MCS1, "kick_down_gaurd", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.1) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_on_floor_gaurd", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageGuard], seqMain) CLEAR_SEQUENCE_TASK(seqMain) PLAY_FACIAL_ANIM(pedHostage[HostageGuard], "002907_03_gc_pro_mcs_1", sAnimDictPrologue2_MCS1_GuardFacial) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageGuard]) ENDIF //Male Hostage 01 IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("PRO_Male_Hostage_1") TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageMale1]) ENDIF //Male Hostage 02 IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("PRO_Male_Hostage_2") TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageMale2]) ENDIF //Weapon IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_weapon") GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_MICHAEL], playerPedMichael) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_weapon") GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_TREVOR], playerPedTrevor) ENDIF SWITCH iCutsceneStage CASE 0 //Request Cutscene Variations - pro_mcs_1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_SecurityGuard_Tiedup", pedHostage[HostageGuard]) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Male_Hostage_1", pedHostage[HostageMale1]) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Male_Hostage_2", pedHostage[HostageMale2]) ENDIF IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() SET_PED_CAN_PLAY_AMBIENT_ANIMS(playerPedID, FALSE) REGISTER_ENTITY_FOR_CUTSCENE(pedHostage[HostageGuard], "PRO_SecurityGuard_Tiedup", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedHostage[HostageMale1], "PRO_Male_Hostage_1", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedHostage[HostageMale2], "PRO_Male_Hostage_2", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_MICHAEL] = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(playerPedMichael) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_MICHAEL], "Michaels_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_TREVOR] = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(playerPedTrevor) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_TREVOR], "Trevors_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(playerPedTrevor, "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) START_CUTSCENE(CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH) #IF IS_DEBUG_BUILD PRINTLN("START_CUTSCENE() - pro_mcs_1") #ENDIF WAIT_WITH_DEATH_CHECKS(0) IF NOT IS_REPEAT_PLAY_ACTIVE() SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) ENDIF //Radar bRadar = FALSE CLEAR_AREA(GET_ENTITY_COORDS(playerPedID), 15.0, TRUE) SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, TRUE) FLOAT fStartPhaseBrad fStartPhaseBrad = 0.106 FLOAT fStartPhaseHostage fStartPhaseHostage = 0.211 //Brad sceneIntroBrad = CREATE_SYNCHRONIZED_SCENE(sceneHostagesPos, sceneHostagesRot) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneIntroBrad, sAnimDictPrologue2, "main_brad", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroBrad, fStartPhaseBrad) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) SET_CURRENT_PED_WEAPON(pedBrad, wtShotgun, TRUE) //Female Hostage sceneIntroHostage = CREATE_SYNCHRONIZED_SCENE(sceneHostagesPos, sceneHostagesRot) TASK_SYNCHRONIZED_SCENE(pedHostage[HostageFemale], sceneIntroHostage, sAnimDictPrologue2, "main_femalehostage", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroHostage, fStartPhaseHostage) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageFemale]) ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) AND IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroHostage) SET_SYNCHRONIZED_SCENE_RATE(sceneIntroBrad, 0.0) SET_SYNCHRONIZED_SCENE_RATE(sceneIntroHostage, 0.0) ADVANCE_CUTSCENE() ENDIF BREAK CASE 2 IF NOT HAS_LABEL_BEEN_TRIGGERED(GuardHeadWound) IF GET_CUTSCENE_TIME() > ROUND(2.442666 * 1000.0) ENTITY_INDEX entityGuard entityGuard = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("PRO_SecurityGuard_Tiedup", CS_PROLSEC_02) IF NOT IS_ENTITY_DEAD(entityGuard) APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entityGuard), ENUM_TO_INT(PDZ_HEAD), 0.354, 0.696, 0.0, 1.0, 0, 0.0, "BulletLarge") SET_LABEL_AS_TRIGGERED(GuardHeadWound, TRUE) ENDIF ENDIF ENDIF IF WAS_CUTSCENE_SKIPPED() // IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") // SET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two", 1.0) // ENDIF // // IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) // SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroBrad, 0.442) // ENDIF // // IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) // SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroHostage, 0.883) // ENDIF // // SET_SYNCHRONIZED_SCENE_RATE(sceneIntroBrad, 1.0) // SET_SYNCHRONIZED_SCENE_RATE(sceneIntroHostage, 1.0) SET_GAMEPLAY_CAM_RELATIVE_HEADING(-87.2 - GET_ENTITY_HEADING(playerPedID)) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-2.0) SAFE_REMOVE_BLIP(blipTrevor) SET_LABEL_AS_TRIGGERED(TieUpCutsceneSkipped, TRUE) ENDIF #IF IS_DEBUG_BUILD PRINTLN("HAS_CUTSCENE_FINISHED()") #ENDIF IF HAS_CUTSCENE_FINISHED() IF WAS_CUTSCENE_SKIPPED() IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") SET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two", 1.0) ENDIF IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroBrad, 0.442) ENDIF IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroHostage, 0.883) ENDIF SET_SYNCHRONIZED_SCENE_RATE(sceneIntroBrad, 1.0) SET_SYNCHRONIZED_SCENE_RATE(sceneIntroHostage, 1.0) SET_FORCE_FOOTSTEP_UPDATE(pedBrad, TRUE) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageFemale], TRUE) ENDIF PLAY_AUDIO(PROLOGUE_TEST_HOSTAGES) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE,DEFAULT,FALSE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 3 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(PRO_Charges_Set) CREATE_CONVERSATION_ADV(PRO_Charges, "PRO_Charges", CONV_PRIORITY_HIGH, FALSE) //Reused same label as print... SET_LABEL_AS_TRIGGERED(PRO_Charges_Set, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(KICK_DOWN_PLAYER_ZERO_CHECK) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON AND (IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2_MCS1, "kick_down_player_zero") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedID, sAnimDictPrologue2_MCS1, "kick_down_player_zero") >= 0.806) RENDER_SCRIPT_CAMS(FALSE, TRUE, DEFAULT_INTERP_TO_FROM_GAME / 2) SET_LABEL_AS_TRIGGERED(KICK_DOWN_PLAYER_ZERO_CHECK, TRUE) ENDIF ENDIF IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroCam) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntroCam) >= 1.0) ADVANCE_STAGE() ENDIF BREAK ENDSWITCH IF DOOR_SYSTEM_GET_DOOR_STATE(iCupboardDoor) != DOORSTATE_FORCE_UNLOCKED_THIS_FRAME DOOR_SYSTEM_SET_DOOR_STATE(iCupboardDoor, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME, FALSE, TRUE) ENDIF IF DOOR_SYSTEM_GET_DOOR_STATE(iLeftReceptionDoor) != DOORSTATE_FORCE_UNLOCKED_THIS_FRAME DOOR_SYSTEM_SET_DOOR_STATE(iLeftReceptionDoor, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME, FALSE, TRUE) ENDIF IF DOOR_SYSTEM_GET_DOOR_STATE(iRightReceptionDoor) != DOORSTATE_FORCE_UNLOCKED_THIS_FRAME DOOR_SYSTEM_SET_DOOR_STATE(iRightReceptionDoor, DOORSTATE_FORCE_UNLOCKED_THIS_FRAME, FALSE, TRUE) ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) IF DOES_ENTITY_EXIST(objWeapon[WEAPON_MICHAEL]) GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_MICHAEL], playerPedMichael) ENDIF INT i REPEAT COUNT_OF(objWeapon) i SAFE_DELETE_OBJECT(objWeapon[i]) ENDREPEAT REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE IF DOES_CAM_EXIST(camAnim) IF NOT IS_CAM_RENDERING(camAnim) DESTROY_CAM(camAnim) ENDIF ENDIF // SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, TRUE) SET_CURRENT_PED_WEAPON(pedBrad, wtShotgun, TRUE) SAFE_REMOVE_BLIP(blipHostage[HostageGuard]) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC LearnAiming() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Radar bRadar = TRUE #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Print IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_Charges") CLEAR_TEXT() ENDIF //Cover IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5310.6885, -5204.9897, 82.5199>>) covPoint[0] = ADD_COVER_POINT(<<5310.6885, -5204.9897, 82.5199>>, 0.0, COVUSE_WALLTOBOTH, COVHEIGHT_TOOHIGH, COVARC_180) ENDIF APPLY_PED_BLOOD_SPECIFIC(pedHostage[HostageGuard], ENUM_TO_INT(PDZ_HEAD), 0.354, 0.696, 0.0, 1.0, 0, 0.0, "BulletLarge") //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_THREATEN_HOSTAGES") START_AUDIO_SCENE("PROLOGUE_THREATEN_HOSTAGES") ENDIF IF NOT DOES_ENTITY_EXIST(objLightingRig[LIGHTING_RIG_HOSTAGE]) objLightingRig[LIGHTING_RIG_HOSTAGE] = CREATE_OBJECT(PROP_1ST_HOSTAGE_SCENE, <<5310.661, -5206.56, 81.575>>) FORCE_ROOM_FOR_ENTITY(objLightingRig[LIGHTING_RIG_HOSTAGE], intDepot, HASH("V_CashD_reception")) ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF //Rayfire rfVaultExplosion = GET_RAYFIRE_MAP_OBJECT(<<5298.8892, -5189.0869, 82.5182>>, 10.0, "DES_VaultDoor001") IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfVaultExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion) != RFMO_STATE_START SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion, RFMO_STATE_STARTING) ENDIF ENDIF //Doors IF NOT HAS_LABEL_BEEN_TRIGGERED(TieUpCutsceneSkipped) UNLOCK_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR) ENDIF IF SKIPPED_STAGE() CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SET_PED_POSITION(playerPedID, <<5308.8320, -5206.5249, 82.5187>>, 284.3977) STOP_CAM_SHAKING(camMain, TRUE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2155703 // IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) // OR IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue2, "idle_outside_cuboard_brad") // SET_PED_CAPSULE(pedBrad, 0.25) // ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(V_CORP_CD_CHAIR_FREEZE_1) OBJECT_INDEX objChair = GET_CLOSEST_OBJECT_OF_TYPE(<<5313.3271, -5208.2446, 82.5107>>, 0.01, V_CORP_CD_CHAIR, FALSE) IF DOES_ENTITY_EXIST(objChair) FREEZE_ENTITY_POSITION(objChair, TRUE) SET_LABEL_AS_TRIGGERED(V_CORP_CD_CHAIR_FREEZE_1, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(V_CORP_CD_CHAIR_FREEZE_2) OBJECT_INDEX objChair = GET_CLOSEST_OBJECT_OF_TYPE(<<5314.8643, -5208.2363, 82.5107>>, 0.01, V_CORP_CD_CHAIR, FALSE) IF DOES_ENTITY_EXIST(objChair) FREEZE_ENTITY_POSITION(objChair, TRUE) SET_LABEL_AS_TRIGGERED(V_CORP_CD_CHAIR_FREEZE_2, TRUE) ENDIF ENDIF INT i SWITCH iCutsceneStage CASE 0 IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") //IF NOT IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2, "main_player_zero") //Michael //TASK_PLAY_ANIM(playerPedID, sAnimDictPrologue2, "main_player_zero", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE, 1.0) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2_MCS1, "kick_down_player_zero", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.125) //TASK_PLAY_ANIM(NULL, sAnimDictPrologue2, "main_player_zero", NORMAL_BLEND_IN, SLOW_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(playerPedID, seqMain) CLEAR_SEQUENCE_TASK(seqMain) SET_PED_CAN_PLAY_AMBIENT_ANIMS(playerPedID, FALSE) //Trevor TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 1.0) FLOAT fStartPhaseBrad fStartPhaseBrad = 0.442 //0.106 FLOAT fStartPhaseHostage fStartPhaseHostage = 0.883 //0.211 //Brad IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) sceneIntroBrad = CREATE_SYNCHRONIZED_SCENE(sceneHostagesPos, sceneHostagesRot) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneIntroBrad, sAnimDictPrologue2, "main_brad", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroBrad, fStartPhaseBrad) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) ENDIF SET_CURRENT_PED_WEAPON(pedBrad, wtShotgun, TRUE) //Female Hostage IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroHostage) sceneIntroHostage = CREATE_SYNCHRONIZED_SCENE(sceneHostagesPos, sceneHostagesRot) TASK_SYNCHRONIZED_SCENE(pedHostage[HostageFemale], sceneIntroHostage, sAnimDictPrologue2, "main_femalehostage", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) SET_SYNCHRONIZED_SCENE_PHASE(sceneIntroHostage, fStartPhaseHostage) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageFemale]) ENDIF //Male Hostage 01 TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) //Male Hostage 02 TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) //Guard //TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2_MCS1, "kick_down_gaurd", sceneHostagesPos, sceneHostagesRot, INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.1) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_on_floor_gaurd", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageGuard], seqMain) CLEAR_SEQUENCE_TASK(seqMain) PLAY_FACIAL_ANIM(pedHostage[HostageGuard], "002907_03_gc_pro_mcs_1", sAnimDictPrologue2_MCS1_GuardFacial) ENDIF ADVANCE_CUTSCENE() BREAK CASE 1 IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") > 0.750 //0.600 SAFE_REMOVE_BLIP(blipTrevor) ENDIF ENDIF //Score IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_PROLOGUE_TEST_PRE_SAFE_EXPLOSION) LOAD_AUDIO(PROLOGUE_TEST_PRE_SAFE_EXPLOSION) SET_LABEL_AS_TRIGGERED(TRIGGER_PROLOGUE_TEST_PRE_SAFE_EXPLOSION, TRUE) ENDIF IF NOT DOES_BLIP_EXIST(blipTrevor) IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue2, "main_player_two") >= 1.0 SMOOTH_CLOSE_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5307.52, -5204.54, 83.67>>, TRUE, 1.0, 1.0) SMOOTH_CLOSE_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5310.12, -5204.54, 83.67>>, TRUE, 1.0, 1.0) ENDIF ENDIF SMOOTH_CLOSE_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5307.52, -5204.54, 83.67>>, TRUE) SMOOTH_CLOSE_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5310.12, -5204.54, 83.67>>, TRUE) IF SMOOTH_CLOSE_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5307.52, -5204.54, 83.67>>, TRUE) AND SMOOTH_CLOSE_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5310.12, -5204.54, 83.67>>, TRUE) IF NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS() IF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 0 PRINT_HELP_ADV(PROHLP_AIM1b, "PROHLP_AIM1b") ELIF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 1 PRINT_HELP_ADV(PROHLP_AIM1c, "PROHLP_AIM1c") ELIF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 2 PRINT_HELP_ADV(PROHLP_AIM1c, "PROHLP_AIM1c") ENDIF ADVANCE_CUTSCENE() ENDIF ENDIF ELSE UNLOCK_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR) ENDIF BREAK CASE 2 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() // Don't want to display this on PC if using mouse to aim. IF NOT IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) PRINT_HELP_ADV(PROHLP_TRADAIM, "PROHLP_TRADAIM") ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_1) OR HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_2) OR HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_3) 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_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") AND (IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageMale1]) OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedHostage[HostageMale1]))) OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") AND (IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageMale2]) OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedHostage[HostageMale2]))) OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") AND (IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageGuard]) OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedHostage[HostageGuard]))) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_4) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_4, "PRO_bradhost", "PRO_bradhost_4", CONV_PRIORITY_LOW) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_5) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_5, "PRO_bradhost", "PRO_bradhost_5", CONV_PRIORITY_LOW) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_6) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_6, "PRO_bradhost", "PRO_bradhost_6", CONV_PRIORITY_LOW) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_7) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_7, "PRO_bradhost", "PRO_bradhost_7", CONV_PRIORITY_LOW) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_9) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_9, "PRO_bradhost", "PRO_bradhost_9", CONV_PRIORITY_LOW) ENDIF ENDIF ENDIF ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_AIM) //Blips REPEAT COUNT_OF(pedHostage) i SAFE_ADD_BLIP_PED(blipHostage[i], pedHostage[i], TRUE) ENDREPEAT IF NOT DOES_BLIP_EXIST(blipDestination) PRINT_ADV(PRO_AIM, "PRO_AIM", DEFAULT_GOD_TEXT_TIME - 4000) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_listen, "PRO_listen", CONV_PRIORITY_LOW, TRUE, DO_NOT_DISPLAY_SUBTITLES) ENDIF ENDIF ELSE IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") OR NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") OR NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") IF IS_THIS_PRINT_BEING_DISPLAYED("PRO_AIM") CLEAR_PRINTS() ENDIF ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM1a) OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM1b) OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM1c) IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM2a) AND NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM2b) IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM) OR (NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_AIM1a") AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_AIM1b") AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_AIM1c")) SAFE_CLEAR_HELP(TRUE) // IF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 0 // PRINT_HELP_ADV(PROHLP_AIM2a, "PROHLP_AIM2a") // ELIF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 1 // OR GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 2 // PRINT_HELP_ADV(PROHLP_AIM2b, "PROHLP_AIM2b") SET_LABEL_AS_TRIGGERED(PROHLP_AIM2b, TRUE) // ENDIF ENDIF ENDIF ENDIF IF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 0 IF HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM2a) OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM2b) IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM3) IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_AIM2a") OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_AIM2b") IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM) AND (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_LR) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_UD)) SET_LABEL_AS_TRIGGERED(PLAYER_MOVED_AIM, TRUE) ENDIF IF GET_GAME_TIMER() > iHelpTimer IF HAS_LABEL_BEEN_TRIGGERED(PLAYER_MOVED_AIM) SAFE_CLEAR_HELP() ENDIF ENDIF ENDIF IF NOT IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(PROHLP_AIM3, "PROHLP_AIM3") ENDIF ENDIF ENDIF ENDIF ENDIF //Male Hostage 01 IF NOT IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageMale1]) iHostageAimTimer[HostageMale1] = GET_GAME_TIMER() + 250 ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(HostageMale1Scream) IF GET_GAME_TIMER() > iAmbientTimer IF IS_BULLET_IN_AREA(GET_ENTITY_COORDS(pedHostage[HostageMale1]), 2.5) PLAY_PAIN(pedHostage[HostageMale1], AUD_DAMAGE_REASON_SCREAM_SHOCKED) iAmbientTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(750, 1000) SET_LABEL_AS_TRIGGERED(HostageMale1Scream, TRUE) ENDIF ENDIF ENDIF IF ((IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageMale1]) AND GET_GAME_TIMER() > iHostageAimTimer[HostageMale1]) OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedHostage[HostageMale1])) AND IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") // IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) // AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_8, "PRO_bradhost", "PRO_bradhost_8", CONV_PRIORITY_LOW) // ENDIF OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage01_standup_malehostage01", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_malehostage01", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale1], seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_standup_malehostage01") AND (GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_standup_malehostage01") > 0.4 OR GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_standup_malehostage01") < 0.5) TASK_LOOK_AT_ENTITY(pedHostage[HostageMale1], playerPedID, 1000) ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY1") AND NOT DOES_BLIP_EXIST(blipDestination) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_1, "PRO_bradhost", "PRO_bradhost_1", CONV_PRIORITY_LOW) ENDIF ENDIF ENDIF //Middle Hostage // IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") // OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") // AND (GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") < 0.209 // OR GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") > 0.349)) IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") AND (GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") < 0.050 //0.252 OR GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") > 0.267)) IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_outside_cuboard_malehostage01") AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_outside_cuboard_malehostage01") > 0.1 OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage01_standup_malehostage01") AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage01_standup_malehostage01") > 0.9) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM(NULL, sAnimDictPrologue2, "idle_inside_cuboard_malehostage01", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING | AF_USE_KINEMATIC_PHYSICS) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale1], seqMain) CLEAR_SEQUENCE_TASK(seqMain) WAIT_WITH_DEATH_CHECKS(10) ENDIF ENDIF // ENDIF //Male Hostage 02 IF NOT IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageMale2]) iHostageAimTimer[HostageMale2] = GET_GAME_TIMER() + 250 ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(HostageMale2Scream) IF GET_GAME_TIMER() > iAmbientTimer IF IS_BULLET_IN_AREA(GET_ENTITY_COORDS(pedHostage[HostageMale2]), 2.5) PLAY_PAIN(pedHostage[HostageMale2], AUD_DAMAGE_REASON_SCREAM_TERROR) iAmbientTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(750, 1000) SET_LABEL_AS_TRIGGERED(HostageMale2Scream, TRUE) ENDIF ENDIF ENDIF IF ((IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageMale2]) AND GET_GAME_TIMER() > iHostageAimTimer[HostageMale2]) OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedHostage[HostageMale2])) AND IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") // IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) // AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_8, "PRO_bradhost", "PRO_bradhost_8", CONV_PRIORITY_LOW) // ENDIF OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage_02_standup_malehostage02", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_malehostage02", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale2], seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage_02_standup_malehostage02") AND (GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage_02_standup_malehostage02") > 0.4 OR GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage_02_standup_malehostage02") < 0.5) TASK_LOOK_AT_ENTITY(pedHostage[HostageMale2], playerPedID, 1000) ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") AND (IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageMale2]) OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedHostage[HostageMale2])) IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY1") AND NOT DOES_BLIP_EXIST(blipDestination) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_2, "PRO_bradhost", "PRO_bradhost_2", CONV_PRIORITY_LOW) ENDIF ENDIF ENDIF //Closest to Cupboard Hostage IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") AND (GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") > 0.349)) IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") AND (GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") < 0.1 OR GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") > 0.371)) IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_outside_cuboard_malehostage02") AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_outside_cuboard_malehostage02") > 0.1 OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage_02_standup_malehostage02") AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage_02_standup_malehostage02") > 0.9) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM(NULL, sAnimDictPrologue2, "idle_inside_cuboard_malehostage02", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING | AF_USE_KINEMATIC_PHYSICS) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale2], seqMain) CLEAR_SEQUENCE_TASK(seqMain) WAIT_WITH_DEATH_CHECKS(10) ENDIF ENDIF ENDIF //Guard IF NOT IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageGuard]) iHostageAimTimer[HostageGuard] = GET_GAME_TIMER() + 250 ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(HostageGuardScream) IF GET_GAME_TIMER() > iAmbientTimer IF IS_BULLET_IN_AREA(GET_ENTITY_COORDS(pedHostage[HostageGuard]), 2.5) PLAY_PAIN(pedHostage[HostageGuard], AUD_DAMAGE_REASON_SCREAM_SHOCKED) iAmbientTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(750, 1000) SET_LABEL_AS_TRIGGERED(HostageGuardScream, TRUE) ENDIF ENDIF ENDIF IF ((IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedHostage[HostageGuard]) AND GET_GAME_TIMER() > iHostageAimTimer[HostageGuard]) OR IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedHostage[HostageGuard])) AND IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") // IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) // AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_8, "PRO_bradhost", "PRO_bradhost_8", CONV_PRIORITY_LOW) // ENDIF OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "guard_standup_gaurd", sceneHostagesPos, sceneHostagesRot, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_gaurd", sceneHostagesPos, sceneHostagesRot, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageGuard], seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "guard_standup_gaurd") AND (GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "guard_standup_gaurd") > 0.4 OR GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "guard_standup_gaurd") < 0.5) TASK_LOOK_AT_ENTITY(pedHostage[HostageGuard], playerPedID, 1000) ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY1") AND NOT DOES_BLIP_EXIST(blipDestination) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_bradhost_3, "PRO_bradhost", "PRO_bradhost_3", CONV_PRIORITY_LOW) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_1) OR NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_2) OR NOT HAS_LABEL_BEEN_TRIGGERED(PRO_bradhost_3) 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_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle_1) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle_1, "PRO_Idle", "PRO_Idle_1", CONV_PRIORITY_LOW) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle_2) AND TIMERA() > 15000 PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle_2, "PRO_Idle", "PRO_Idle_2", CONV_PRIORITY_LOW) ENDIF ENDIF ENDIF ENDIF //Closest to Player Hostage - There is no way the guard can intersect if hostages are playing their cupboard entry anims // IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") // OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") // AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") > 0.448) // IF NOT IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") // OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") // AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") > 0.214) IF (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_outside_cuboard_gaurd") AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_outside_cuboard_gaurd") > 0.1) OR (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "guard_standup_gaurd") AND GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "guard_standup_gaurd") > 0.9) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd", sceneHostagesPos, sceneHostagesRot, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM(NULL, sAnimDictPrologue2, "idle_inside_cuboard_gaurd", REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_LOOPING) //TASK_PLAY_ANIM_ADVANCED CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageGuard], seqMain) CLEAR_SEQUENCE_TASK(seqMain) WAIT_WITH_DEATH_CHECKS(10) ENDIF // ENDIF // ENDIF //Debug Hostage Entry // #IF IS_DEBUG_BUILD // SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) // // DRAW_RECT(0.1 + 0.4, 0.1, 0.8, 0.025, 255, 255, 255, 155) // IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") // DRAW_RECT(0.1 + (0.8 * GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01")), 0.1, 0.001, 0.025, 255, 255, 255, 255) // DRAW_DEBUG_TEXT_2D(GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01"), <<0.1 + (0.8 * GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01")), 0.11, 0.0>>, 255, 255, 255) // ENDIF // // DRAW_RECT(0.1 + 0.4, 0.15, 0.8, 0.025, 255, 255, 255, 155) // IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") // DRAW_RECT(0.1 + (0.8 * GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage02")), 0.15, 0.001, 0.025, 255, 255, 255, 255) // DRAW_DEBUG_TEXT_2D(GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage02"), <<0.1 + (0.8 * GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage02")), 0.16, 0.0>>, 255, 255, 255) // ENDIF // // DRAW_RECT(0.1 + 0.4, 0.2, 0.8, 0.025, 255, 255, 255, 155) // IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") // DRAW_RECT(0.1 + (0.8 * GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd")), 0.2, 0.001, 0.025, 255, 255, 255, 255) // DRAW_DEBUG_TEXT_2D(GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd"), <<0.1 + (0.8 * GET_ENTITY_ANIM_CURRENT_TIME(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd")), 0.21, 0.0>>, 255, 255, 255) // ENDIF // #ENDIF //Hostage Dialogue IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostageF) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], SCRIPT_TASK_PUT_PED_DIRECTLY_INTO_COVER) <> PERFORMING_TASK AND IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) IF TIMERA() > 18000 IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY1") AND NOT DOES_BLIP_EXIST(blipDestination) 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(PRO_HostageF, "PRO_HostageF") ENDIF ENDIF ENDIF ENDIF ENDIF // ELIF IS_ENTITY_AT_COORD(pedHostage[HostageMale1], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // AND IS_ENTITY_AT_COORD(pedHostage[HostageGuard], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // AND IS_ENTITY_AT_COORD(pedHostage[HostageFemale], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // AND IS_ENTITY_AT_COORD(pedHostage[HostageMale2], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostageF) // IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], SCRIPT_TASK_PUT_PED_DIRECTLY_INTO_COVER) <> PERFORMING_TASK // AND IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) // IF TIMERA() > 18000 // IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY1") // AND NOT DOES_BLIP_EXIST(blipDestination) // 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(PRO_HostageP, "PRO_HostageP") // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF ENDIF // //IF NOT HAS_LABEL_BEEN_TRIGGERED(HURRY_HOSTAGES) // IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_HURRY) // IF HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM2a) // OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM2b) // IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() //IS_ANY_FLOATING_HELP_BEING_DISPLAYED() //AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED() // //IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") // //OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") // //OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") // IF NOT IS_ENTITY_AT_COORD(pedHostage[HostageMale1], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // OR NOT IS_ENTITY_AT_COORD(pedHostage[HostageGuard], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // OR NOT IS_ENTITY_AT_COORD(pedHostage[HostageFemale], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // OR NOT IS_ENTITY_AT_COORD(pedHostage[HostageMale2], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) // PRINT_HELP_ADV(PROHLP_HURRY, "PROHLP_HURRY") // ENDIF // ENDIF // ENDIF // ELSE // IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_CONTEXT) // IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_HURRY") // SAFE_CLEAR_HELP() // ENDIF // // IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") // OPEN_SEQUENCE_TASK(seqMain) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage01_standup_malehostage01", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_malehostage01", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedHostage[HostageMale1], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) // ENDIF // // IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") // OPEN_SEQUENCE_TASK(seqMain) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage_02_standup_malehostage02", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_malehostage02", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedHostage[HostageMale2], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) // ENDIF // // IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") // OPEN_SEQUENCE_TASK(seqMain) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "guard_standup_gaurd", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_gaurd", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedHostage[HostageGuard], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) // ENDIF // // IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostGap_1) // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_HostGap_1, "PRO_HostGap", "PRO_HostGap_1", CONV_PRIORITY_LOW) // ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostGap_2) // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_HostGap_2, "PRO_HostGap", "PRO_HostGap_2", CONV_PRIORITY_LOW) // ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostGap_3) // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_HostGap_3, "PRO_HostGap", "PRO_HostGap_3", CONV_PRIORITY_LOW) // ENDIF // // //SET_LABEL_AS_TRIGGERED(HURRY_HOSTAGES, TRUE) // ENDIF // ENDIF // //ENDIF IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_HURRY") IF IS_ENTITY_AT_COORD(pedHostage[HostageMale1], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageGuard], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageFemale], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageMale2], <<5318.457520, -5206.782227, 84.268654>>, <<2.0, 2.5, 2.0>>) SAFE_CLEAR_HELP() ENDIF ENDIF //Hostage Aim Priority IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageGuard], TRUE) ELIF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageMale1], TRUE) SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageGuard], FALSE) ELIF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageMale2], TRUE) SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageMale1], FALSE) SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageGuard], FALSE) ELSE SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageMale2], FALSE) SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageMale1], FALSE) SET_ENTITY_IS_TARGET_PRIORITY(pedHostage[HostageGuard], FALSE) ENDIF //Trevor IF (IS_ENTITY_AT_COORD(pedHostage[HostageMale1], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageGuard], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageFemale], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageMale2], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>)) OR TIMERA() > 20000 IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) AND ((IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) AND NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5308.802246, -5204.578613, 84.018631>>, <<1.0, 1.0, 1.5>>))) SET_LABEL_AS_TRIGGERED(DoorIsClosing, TRUE) ELSE UNLOCK_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR) ENDIF IF NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.607422, -5204.709961, 83.518654>>, <<0.5, 0.75, 1.0>>) IF NOT HAS_LABEL_BEEN_TRIGGERED(get_into_cover_player_two) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2_TrevorReturn, "get_into_cover_player_two", <<5310.146, -5208.317, 82.519>>, <<0.0, 0.0, 0.0>>, INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PUT_PED_DIRECTLY_INTO_COVER(NULL, <<5310.6885, -5204.9897, 82.5199>>, -1, FALSE, 1.0, TRUE, TRUE, covPoint[0]) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) CLEAR_SEQUENCE_TASK(seqMain) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_LABEL_AS_TRIGGERED(get_into_cover_player_two, TRUE) ELSE SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(BradHostages) IF HAS_LABEL_BEEN_TRIGGERED(PRO_HostageF) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue2, "shut_cuboard_door_brad") CLEAR_PED_TASKS(pedBrad) OPEN_SEQUENCE_TASK(seqMain) IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") TASK_AIM_GUN_AT_ENTITY(NULL, pedHostage[HostageMale1], 1500) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") TASK_AIM_GUN_AT_ENTITY(NULL, pedHostage[HostageMale2], 1500) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") TASK_AIM_GUN_AT_ENTITY(NULL, pedHostage[HostageGuard], 1500) ENDIF TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_brad", sceneHostagesPos, sceneHostagesRot, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedBrad, seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_on_floor_malehostage01") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage01_standup_malehostage01", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_malehostage01", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale1], seqMain) CLEAR_SEQUENCE_TASK(seqMain) WAIT_WITH_DEATH_CHECKS(500) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_on_floor_malehostage02") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "hostage_02_standup_malehostage02", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_malehostage02", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageMale2], seqMain) CLEAR_SEQUENCE_TASK(seqMain) WAIT_WITH_DEATH_CHECKS(500) ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_on_floor_gaurd") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "guard_standup_gaurd", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue2, "idle_outside_cuboard_gaurd", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedHostage[HostageGuard], seqMain) CLEAR_SEQUENCE_TASK(seqMain) WAIT_WITH_DEATH_CHECKS(500) ENDIF SET_LABEL_AS_TRIGGERED(BradHostages, TRUE) ENDIF ENDIF ENDIF // IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_V_ILEV_CD_Door2) // #IF IS_DEBUG_BUILD PRINTLN("DOOR_SYSTEM_GET_OPEN_RATIO(iCupboardDoor) = ", DOOR_SYSTEM_GET_OPEN_RATIO(iCupboardDoor)) #ENDIF // IF DOOR_SYSTEM_GET_OPEN_RATIO(iCupboardDoor) > 0.9 //1.010 //// AND (IS_ENTITY_AT_COORD(pedHostage[HostageMale1], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) //// AND IS_ENTITY_AT_COORD(pedHostage[HostageGuard], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) //// AND IS_ENTITY_AT_COORD(pedHostage[HostageFemale], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) //// AND IS_ENTITY_AT_COORD(pedHostage[HostageMale2], <<5318.457520, -5206.782227, 84.268654>>, <<2.75, 2.25, 1.75>>)) // DOOR_SYSTEM_SET_OPEN_RATIO(iCupboardDoor, DOOR_SYSTEM_GET_OPEN_RATIO(iCupboardDoor), FALSE) // DOOR_SYSTEM_SET_DOOR_STATE(iCupboardDoor, DOORSTATE_LOCKED, FALSE, TRUE) // SET_LABEL_AS_TRIGGERED(TRIGGER_V_ILEV_CD_Door2, TRUE) // ENDIF // ENDIF IF (IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "idle_inside_cuboard_malehostage01") AND IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "idle_inside_cuboard_gaurd") AND IS_ENTITY_PLAYING_ANIM(pedHostage[HostageFemale], sAnimDictPrologue2, "idle_inside_cuboard_femalehostage") AND IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "idle_inside_cuboard_malehostage02")) OR (IS_ENTITY_AT_COORD(pedHostage[HostageMale1], <<5318.615234, -5206.959473, 84.018631>>, <<2.0, 2.5, 2.0>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageGuard], <<5318.615234, -5206.959473, 84.018631>>, <<2.0, 2.5, 2.0>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageFemale], <<5318.615234, -5206.959473, 84.018631>>, <<2.0, 2.5, 2.0>>) AND IS_ENTITY_AT_COORD(pedHostage[HostageMale2], <<5318.615234, -5206.959473, 84.018631>>, <<2.0, 2.5, 2.0>>)) AND NOT IS_ENTITY_AT_COORD(playerPedID, <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) AND NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) AND NOT IS_ENTITY_AT_COORD(pedBrad, <<5318.457520, -5206.782227, 84.268654>>, <<1.75, 2.25, 1.75>>) // IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_V_ILEV_CD_Door2) // UNLOCK_DOOR(CUPBOARD_DOOR, V_ILev_CD_Door2, TRUE) // // SET_LABEL_AS_TRIGGERED(TRIGGER_V_ILEV_CD_Door2, TRUE) // ENDIF //IF SMOOTH_CLOSE_DOOR(CUPBOARD_DOOR, V_ILev_CD_Door2, <<5316.64, -5205.74, 83.67>>, TRUE, 0.2, 0.01, 1.0) // IF HAS_LABEL_BEEN_TRIGGERED(TRIGGER_V_ILEV_CD_Door2) IF DOES_ENTITY_EXIST(objCupboardDoor) //Brad closes cupboard door IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHostage) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneHostage) > 0.287 //0.635 OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneHostage) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) AND IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) //AND IS_ENTITY_IN_ANGLED_AREA(pedBrad, <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) ADVANCE_STAGE() ENDIF ENDIF ELIF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<5316.64, -5205.74, 83.67>>, 1.0, V_ILev_CD_Door2) //HAS_MODEL_LOADED_CHECK(MODEL_V_ILev_CD_Door2, V_ILev_CD_Door2) // CREATE_MODEL_HIDE(<<5316.64, -5205.74, 83.67>>, 1.0, V_ILev_CD_Door2, FALSE) // // objCupboardDoor = CREATE_OBJECT_NO_OFFSET(V_ILev_CD_Door2, <<5316.64, -5205.74, 83.67>>) //<<5316.6475, -5205.7368, 83.6686>>) // // SET_ENTITY_ROTATION(objCupboardDoor, <<-0.005, 0.002, -10.658>>) //<<0.0, 0.0, -8.19>>) // // SET_MODEL_AS_NO_LONGER_NEEDED(V_ILev_CD_Door2) objCupboardDoor = GET_CLOSEST_OBJECT_OF_TYPE(<<5316.64, -5205.74, 83.67>>, 1.0, V_ILev_CD_Door2) sceneHostage = CREATE_SYNCHRONIZED_SCENE(sceneHostagesPos, sceneHostagesRot) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneHostage, sAnimDictPrologue2, "shut_cuboard_door_brad", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT) //TASK_PLAY_ANIM_ADVANCED(pedBrad, sAnimDictPrologue2, "shut_cuboard_door_brad", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) PLAY_SYNCHRONIZED_ENTITY_ANIM(objCupboardDoor, sceneHostage, "shut_cuboard_door_door", sAnimDictPrologue2, WALK_BLEND_IN, NORMAL_BLEND_OUT, 0, WALK_BLEND_IN) //PLAY_ENTITY_ANIM(objCupboardDoor, "shut_cuboard_door_door", sAnimDictPrologue2, 0.0, FALSE, TRUE) ENDIF // ENDIF ENDIF BREAK ENDSWITCH // IF GET_GAME_TIMER() < fAnimProgressTime // IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM) // IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2, "main_player_zero") // OR GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = PERFORMING_TASK // CLEAR_PED_TASKS(playerPedID) // ENDIF // ELIF NOT IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2, "main_player_zero") // IF GET_ENTITY_HEADING(playerPedID) < 284.3977 - 7.5 OR GET_ENTITY_HEADING(playerPedID) > 284.3977 + 7.5 // IF GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_GO_STRAIGHT_TO_COORD) != PERFORMING_TASK // TASK_GO_STRAIGHT_TO_COORD(playerPedID, GET_ENTITY_COORDS(playerPedID), PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, 284.3977) // ENDIF // ELSE // TASK_PLAY_ANIM(playerPedID, sAnimDictPrologue2, "main_player_zero", REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS, fAnimTotalTime - (fAnimProgressTime - GET_GAME_TIMER())) // ENDIF // ENDIF // ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(CatchUpCam) IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroCam) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntroCam) >= 1.0) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroCam) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroCam) STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP(FALSE, 0, CAM_SPLINE_SLOW_IN_SMOOTH) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneIntroCam, FALSE) ELSE SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SET_LABEL_AS_TRIGGERED(CatchUpCam, TRUE) ENDIF ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2_MCS1, "kick_down_player_zero") //sAnimDictPrologue2, "main_player_zero") SET_LABEL_AS_TRIGGERED(AnimStarted, TRUE) SET_PED_RESET_FLAG(playerPedID, PRF_InstantBlendToAim, TRUE) ELIF NOT IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2_MCS1, "kick_down_player_zero") //sAnimDictPrologue2, "main_player_zero") IF HAS_LABEL_BEEN_TRIGGERED(AnimStarted) IF NOT HAS_LABEL_BEEN_TRIGGERED(ForceIdlePlayer) FORCE_PED_MOTION_STATE(playerPedID, MS_AIMING) SETTIMERB(0) SET_LABEL_AS_TRIGGERED(ForceIdlePlayer, TRUE) ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(ForceIdlePlayer) IF NOT HAS_LABEL_BEEN_TRIGGERED(AmbientAnims) SET_PED_RESET_FLAG(playerPedID, PRF_InstantBlendToAim, TRUE) IF TIMERB() > 2000 SET_PED_CAN_PLAY_AMBIENT_ANIMS(playerPedID, TRUE) SET_LABEL_AS_TRIGGERED(AmbientAnims, TRUE) ENDIF ENDIF ENDIF IF NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5305.638184, -5209.354004, 82.518677>>, <<5317.589844 - 1.13, -5209.528809, 85.518677>>, 10.0) AND NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5317.081055, -5209.484375, 82.518654>>, <<5317.070313, -5214.340332, 86.018654>>, 1.0) PRINT_ADV(PRO_STAY1, "PRO_STAY1") //Blips REPEAT COUNT_OF(pedHostage) i SAFE_REMOVE_BLIP(blipHostage[i]) ENDREPEAT SAFE_REMOVE_BLIP(blipTrevor) SAFE_REMOVE_BLIP(blipBuddy) SAFE_ADD_BLIP_LOCATION(blipDestination, <<5309.4556, -5207.3184, 85.7187 - 3.2>>) ELSE IF IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY1") CLEAR_PRINTS() ENDIF //Blips SAFE_REMOVE_BLIP(blipDestination) REPEAT COUNT_OF(pedHostage) i SAFE_ADD_BLIP_PED(blipHostage[i], pedHostage[i], TRUE) ENDREPEAT IF HAS_LABEL_BEEN_TRIGGERED(get_into_cover_player_two) SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ENDIF SAFE_ADD_BLIP_PED(blipBuddy, pedBrad, FALSE) ENDIF // IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2_MCS1, "kick_down_player_zero") //sAnimDictPrologue2, "main_player_zero") // AND (HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM1a) // OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM1b) // OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_AIM1c)) // IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM) // CLEAR_PED_TASKS(playerPedID) // ENDIF // ENDIF //Radar // IF NOT bRadar // IF IS_GAMEPLAY_CAM_RENDERING() // AND NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS() // AND NOT IS_INTERPOLATING_TO_SCRIPT_CAMS() // bRadar = TRUE // ENDIF // ENDIF //Brad and Hostage go to Idle IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroBrad) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntroBrad) = 1.0 TASK_PLAY_ANIM_ADVANCED(pedBrad, sAnimDictPrologue2, "idle_outside_cuboard_brad", sceneHostagesPos, sceneHostagesRot, REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) SET_FORCE_FOOTSTEP_UPDATE(pedBrad, FALSE) ENDIF IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneIntroHostage) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneIntroHostage) = 1.0 TASK_PLAY_ANIM_ADVANCED(pedHostage[HostageFemale], sAnimDictPrologue2, "idle_inside_cuboard_femalehostage", sceneHostagesPos, sceneHostagesRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedHostage[HostageFemale]) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageFemale], FALSE) ENDIF //Footsteps IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") IF NOT HAS_LABEL_BEEN_TRIGGERED(FootstepHostageMale1) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageMale1], TRUE) SET_LABEL_AS_TRIGGERED(FootstepHostageMale1, TRUE) ENDIF ELSE IF HAS_LABEL_BEEN_TRIGGERED(FootstepHostageMale1) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageMale1], FALSE) SET_LABEL_AS_TRIGGERED(FootstepHostageMale1, FALSE) ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") IF NOT HAS_LABEL_BEEN_TRIGGERED(FootstepHostageMale2) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageMale2], TRUE) SET_LABEL_AS_TRIGGERED(FootstepHostageMale2, TRUE) ENDIF ELSE IF HAS_LABEL_BEEN_TRIGGERED(FootstepHostageMale2) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageMale2], FALSE) SET_LABEL_AS_TRIGGERED(FootstepHostageMale2, FALSE) ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") IF NOT HAS_LABEL_BEEN_TRIGGERED(FootstepHostageGuard) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageGuard], TRUE) REPLAY_RECORD_BACK_FOR_TIME(4.0, 5.0, REPLAY_IMPORTANCE_NORMAL) SET_LABEL_AS_TRIGGERED(FootstepHostageGuard, TRUE) ENDIF ELSE IF HAS_LABEL_BEEN_TRIGGERED(FootstepHostageGuard) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageGuard], FALSE) SET_LABEL_AS_TRIGGERED(FootstepHostageGuard, FALSE) ENDIF ENDIF INT iRandom //Trevor Cover Idles IF IS_PED_IN_COVER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) AND IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.699219, -5205.045898, 84.018669>>, <<0.5, 0.5, 1.5>>) IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_A") AND NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_B") AND NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_C") IF iCoverAnimTimer = -1 iCoverAnimTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(1500, 3000) ENDIF IF GET_GAME_TIMER() > iCoverAnimTimer iRandom = GET_RANDOM_INT_IN_RANGE(0, 3) ANIM_DATA none ANIM_DATA animDataBlend1 animDataBlend1.type = APT_SINGLE_ANIM animDataBlend1.anim0 = "Trevor_Cover_Impatient_A" animDataBlend1.dictionary0 = sAnimDictPrologue3_Impatient //animDataBlend1.filter = GET_HASH_KEY("BONEMASK_UPPERONLY") animDataBlend1.flags = AF_SECONDARY IF iRandom = 0 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_A", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_A" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ELIF iRandom = 1 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_B", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_B" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ELIF iRandom = 2 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_C", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_C" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ENDIF iCoverAnimTimer = -1 ENDIF ENDIF ENDIF //Hostages Panic into the Cupboard IF IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale1], sAnimDictPrologue2, "hostage01_enter_cuboard_malehostage01") OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageMale2], sAnimDictPrologue2, "hostage02_enter_cuboard_malehostage02") OR IS_ENTITY_PLAYING_ANIM(pedHostage[HostageGuard], sAnimDictPrologue2, "gaurd_enter_cuboard_gaurd") IF NOT IS_AMBIENT_SPEECH_PLAYING(pedHostage[HostageMale1]) AND NOT IS_AMBIENT_SPEECH_PLAYING(pedHostage[HostageMale2]) AND NOT IS_AMBIENT_SPEECH_PLAYING(pedHostage[HostageGuard]) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_FLAA) //PRO_FLAA PROVICTIM1 What's he doing? 8 ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedHostage[HostageGuard], "PROVICTIM1") PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedHostage[HostageGuard], "PRO_FLAA", "PROVICTIM1", SPEECH_PARAMS_FORCE) SET_LABEL_AS_TRIGGERED(PRO_FLAA,TRUE) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_FLAB) //PRO_FLAB PROVICTIM1 He's gonna kill us in here! 8 ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedHostage[HostageMale2], "PROVICTIM1") PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedHostage[HostageMale2], "PRO_FLAB", "PROVICTIM1", SPEECH_PARAMS_FORCE) SET_LABEL_AS_TRIGGERED(PRO_FLAB,TRUE) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_FLAC) //PRO_FLAC PROVICTIM1 Leave us alone! 8 ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedHostage[HostageMale1], "PROVICTIM1") PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedHostage[HostageMale1], "PRO_FLAC", "PROVICTIM1", SPEECH_PARAMS_FORCE) SET_LABEL_AS_TRIGGERED(PRO_FLAC,TRUE) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_FLAD) //PRO_FLAD PROVICTIM1 We didn't do shit to you! 8 ADD_PED_FOR_DIALOGUE(sPedsForConversation, 8, pedHostage[HostageGuard], "PROVICTIM1") PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedHostage[HostageGuard], "PRO_FLAD", "PROVICTIM1", SPEECH_PARAMS_FORCE) SET_LABEL_AS_TRIGGERED(PRO_FLAD,TRUE) ENDIF ENDIF ENDIF //Idle Dialogue // IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostageF) // AND NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostageP) // IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) // AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // SWITCH iDialogueStage // CASE 0 // IF GET_GAME_TIMER() > iDialogueTimer // IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) // // iDialogueStage++ // ENDIF // ENDIF // BREAK // CASE 1 // IF GET_GAME_TIMER() > iDialogueTimer // IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostGap_1) // iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) // ENDIF // // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_HostGap_1, "PRO_HostGap", "PRO_HostGap_1", CONV_PRIORITY_LOW) // // iDialogueStage++ // ENDIF // ENDIF // BREAK // CASE 2 // IF GET_GAME_TIMER() > iDialogueTimer // IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostGap_2) // iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) // ENDIF // // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_HostGap_2, "PRO_HostGap", "PRO_HostGap_2", CONV_PRIORITY_LOW) // // iDialogueStage++ // ENDIF // ENDIF // BREAK // CASE 3 // IF GET_GAME_TIMER() > iDialogueTimer // IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() // IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_HostGap_3) // iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) // ENDIF // // PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_HostGap_3, "PRO_HostGap", "PRO_HostGap_3", CONV_PRIORITY_LOW) // // iDialogueStage++ // ENDIF // ENDIF // BREAK // ENDSWITCH // ENDIF // ENDIF //Disable Player Controls DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UP_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LEFT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_RIGHT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_DOWN_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UD) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LR) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_HEAVY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_LIGHT) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK1) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_BLOCK) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK1) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_BLOCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) RENDER_SCRIPT_CAMS(FALSE, FALSE) IF DOES_CAM_EXIST(camAnim) DESTROY_CAM(camAnim) ENDIF STOP_CAM_SHAKING(camMain, TRUE) SAFE_REMOVE_BLIP(blipDestination) SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SAFE_ADD_BLIP_PED(blipBuddy, pedBrad, FALSE) SAFE_REMOVE_BLIP(blipHostage[HostageMale1]) SAFE_REMOVE_BLIP(blipHostage[HostageGuard]) SAFE_REMOVE_BLIP(blipHostage[HostageFemale]) SAFE_REMOVE_BLIP(blipHostage[HostageMale2]) SET_FORCE_FOOTSTEP_UPDATE(pedBrad, FALSE) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageMale1], FALSE) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageGuard], FALSE) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageFemale], FALSE) SET_FORCE_FOOTSTEP_UPDATE(pedHostage[HostageMale2], FALSE) SET_PED_CAN_PLAY_AMBIENT_ANIMS(playerPedID, TRUE) SAFE_DELETE_OBJECT(objLightingRig[LIGHTING_RIG_HOSTAGE]) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC BOOL bPhone[4] PROC LearnPhone() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Radar bRadar = TRUE //Print ADD_CONTACT_TO_PHONEBOOK(CHAR_DETONATEBOMB, MICHAEL_BOOK, FALSE) //Phone DISABLE_CELLPHONE(FALSE) //Assisted ASSISTED_MOVEMENT_REQUEST_ROUTE("Pro_S2") //Cover IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5310.6816, -5205.0249, 82.5146>>) //<<5310.6885, -5204.9897, 82.5199>>) covPoint[0] = ADD_COVER_POINT(<<5310.6885, -5204.9897, 82.5199>>, 0.0, COVUSE_WALLTOBOTH, COVHEIGHT_TOOHIGH, COVARC_180) ENDIF #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF objBomb = CREATE_OBJECT(modBomb, <<5298.270020, -5187.850098, 83.870003>>) SET_ENTITY_ROTATION(objBomb, <<0.0, 0.0, -90.527321>>) FREEZE_ENTITY_POSITION(objBomb, TRUE) objBombGreen = CREATE_OBJECT(modBombGreen, <<5298.270020, -5187.850098, 83.870003>>) SET_ENTITY_ROTATION(objBombGreen, <<0.0, 0.0, -90.527321>>) FREEZE_ENTITY_POSITION(objBombGreen, TRUE) SET_ENTITY_VISIBLE(objBombGreen, FALSE) // objBomb3 = CREATE_OBJECT(modBomb3, <<5298.270020, -5187.850098, 83.870003 + 0.075>>) // SET_ENTITY_ROTATION(objBomb3, <<0.0, 0.0, -90.527321>>) // FREEZE_ENTITY_POSITION(objBomb3, TRUE) objBomb2 = CREATE_OBJECT(modBomb2, <<5298.270020, -5187.850098, 83.870003 + 0.075>>) SET_ENTITY_ROTATION(objBomb2, <<0.0, 0.0, -90.527321>>) FREEZE_ENTITY_POSITION(objBomb2, TRUE) // SET_ENTITY_VISIBLE(objBomb2, FALSE) objBomb1 = CREATE_OBJECT(modBomb1, <<5298.270020, -5187.850098, 83.870003 + 0.075>>) SET_ENTITY_ROTATION(objBomb1, <<0.0, 0.0, -90.527321>>) FREEZE_ENTITY_POSITION(objBomb1, TRUE) SET_ENTITY_VISIBLE(objBomb1, FALSE) #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() //Brad CLEAR_PED_TASKS_IMMEDIATELY(pedBrad) SET_PED_POSITION(pedBrad, <<5313.574, -5205.261, 82.519>>, 114.018) //Trevor CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.6885, -5204.9897, 82.5199>>, 355.8240 + 90.0) TASK_PUT_PED_DIRECTLY_INTO_COVER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.6885, -5204.9897, 82.5199>>, -1, FALSE, 1.0, TRUE, TRUE, covPoint[0]) //Player CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SET_PED_POSITION(playerPedID, <<5308.8560, -5206.2939, 85.7187 - 3.2>>, 355.8240) SMOOTH_CLOSE_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5307.52, -5204.54, 83.67>>, TRUE, 1.0, 1.0, 0.0) SMOOTH_CLOSE_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5310.12, -5204.54, 83.67>>, TRUE, 1.0, 1.0, 0.0) SAFE_DELETE_PED(pedHostage[HostageMale1]) SAFE_DELETE_PED(pedHostage[HostageGuard]) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 7) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 8) SAFE_DELETE_PED(pedHostage[HostageFemale]) SAFE_DELETE_PED(pedHostage[HostageMale2]) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE IF NOT IS_PED_IN_COVER(playerPedMichael) SET_PED_CAPSULE(playerPedMichael, 0.5) 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(PRO_Return_1) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Return_1, "PRO_Return", "PRO_Return_1", CONV_PRIORITY_HIGH) iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(12000, 15000) ENDIF ENDIF //Brad IF NOT IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue3_IdleAtCupboard, "Brad_Alert_Idle") AND NOT IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue3_IdleInVault, "idle_d") AND NOT IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue3, "react_to_explosion_brad") IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHostage) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneHostage) = 1.0 OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneHostage) TASK_PLAY_ANIM(pedBrad, sAnimDictPrologue3_IdleAtCupboard, "Brad_Alert_Idle", REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, -1, AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) ENDIF ELSE IF IS_ENTITY_AT_COORD(playerPedID, GET_ENTITY_COORDS(pedBrad), <<3.0, 3.0, 2.0>>) TASK_LOOK_AT_ENTITY(pedBrad, playerPedID, 5000) ENDIF ENDIF INT iRandom //Trevor Cover Idles IF IS_PED_IN_COVER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) AND IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.699219, -5205.045898, 84.018669>>,<<0.5, 0.5, 1.5>>) IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_A") AND NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_B") AND NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_C") IF iCoverAnimTimer = -1 iCoverAnimTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(1500, 3000) ENDIF IF GET_GAME_TIMER() > iCoverAnimTimer iRandom = GET_RANDOM_INT_IN_RANGE(0, 3) ANIM_DATA none ANIM_DATA animDataBlend1 animDataBlend1.type = APT_SINGLE_ANIM animDataBlend1.anim0 = "Trevor_Cover_Impatient_A" animDataBlend1.dictionary0 = sAnimDictPrologue3_Impatient //animDataBlend1.filter = GET_HASH_KEY("BONEMASK_UPPERONLY") animDataBlend1.flags = AF_SECONDARY IF iRandom = 0 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_A", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_A" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ELIF iRandom = 1 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_B", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_B" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ELIF iRandom = 2 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_C", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_C" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ENDIF iCoverAnimTimer = -1 ENDIF ENDIF ENDIF // IF iCutsceneStage > 1 // IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY(CUTSCENE_SKIP_DELAY * 2) // DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME) // // WHILE NOT IS_SCREEN_FADED_OUT() // WAIT_WITH_DEATH_CHECKS(0) // ENDWHILE // // SET_TIME_SCALE(1.0) // // TASK_USE_MOBILE_PHONE(playerPedID, FALSE) // // RENDER_SCRIPT_CAMS(FALSE, FALSE) // SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) // // REMOVE_CONTACT_FROM_ALL_PHONEBOOKS(CHAR_DETONATEBOMB) // // SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) // // SETTIMERA(6000) // // iCutsceneStage = 10 // ENDIF // ENDIF SWITCH iCutsceneStage CASE 0 IF NOT IS_PHONE_ONSCREEN(TRUE) IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_PHONE4") //IF IS_THIS_FLOATING_HELP_BEING_DISPLAYED("PROHLP_PHONE4") OR IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_PHONE5") //OR IS_THIS_FLOATING_HELP_BEING_DISPLAYED("PROHLP_PHONE5") SAFE_CLEAR_HELP() //SAFE_CLEAR_HELP(FALSE) ENDIF ENDIF IF NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5305.638184, -5209.354004, 82.518677>>, <<5317.589844, -5209.528809, 85.518677>>, 11.0) IF NOT IS_CELLPHONE_DISABLED() SAFE_CLEAR_HELP() DISABLE_CELLPHONE(TRUE) ENDIF PRINT_ADV(PRO_STAY2, "PRO_STAY2") SAFE_REMOVE_BLIP(blipTrevor) SAFE_REMOVE_BLIP(blipBuddy) SAFE_ADD_BLIP_LOCATION(blipDestination, <<5309.4556, -5207.3184, 85.7187 - 3.2>>) ELSE IF IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY2") SAFE_CLEAR_THIS_PRINT("PRO_STAY2") ENDIF SAFE_REMOVE_BLIP(blipDestination) SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SAFE_ADD_BLIP_PED(blipBuddy, pedBrad, FALSE) IF IS_CELLPHONE_DISABLED() DISABLE_CELLPHONE(FALSE) ENDIF IF bPhone[0] = FALSE IF HAS_LABEL_BEEN_TRIGGERED(PRO_Return_1) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT_ADV(PRO_CHARGES, "PRO_CHARGES") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_call, "PRO_call", CONV_PRIORITY_LOW, TRUE, DO_NOT_DISPLAY_SUBTITLES) ENDIF IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneHostage) CLEAR_PED_TASKS(pedBrad) TASK_GO_STRAIGHT_TO_COORD(pedBrad, <<5313.9053, -5205.7490, 82.5187>>, PEDMOVE_WALK, -1, 98.0530) ENDIF SETTIMERB(0) bPhone[0] = TRUE ENDIF ELSE IF TIMERB() > DEFAULT_GOD_TEXT_TIME + 4000 IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_STAY2") IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_CHARGES") IF GET_GAME_TIMER() > iDialogueTimer IF HAS_LABEL_BEEN_TRIGGERED(PRO_Return_1) AND (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(PRO_Idle3_1) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle3_1, "PRO_Idle3", "PRO_Idle3_1") TASK_LOOK_AT_ENTITY(playerPedTrevor, playerPedMichael, 3000, SLF_WHILE_NOT_IN_FOV) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle3_2) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle3_2, "PRO_Idle3", "PRO_Idle3_2") TASK_LOOK_AT_ENTITY(playerPedTrevor, playerPedMichael, 3000, SLF_WHILE_NOT_IN_FOV) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle3_3) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle3_3, "PRO_Idle3", "PRO_Idle3_3") TASK_LOOK_AT_ENTITY(playerPedTrevor, playerPedMichael, 3000, SLF_WHILE_NOT_IN_FOV) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle3_4) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle3_4, "PRO_Idle3", "PRO_Idle3_4") TASK_LOOK_AT_ENTITY(playerPedTrevor, playerPedMichael, 3000, SLF_WHILE_NOT_IN_FOV) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle3_5) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle3_5, "PRO_Idle3", "PRO_Idle3_5") TASK_LOOK_AT_ENTITY(playerPedTrevor, playerPedMichael, 3000, SLF_WHILE_NOT_IN_FOV) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle3_6) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Idle3_6, "PRO_Idle3", "PRO_Idle3_6") TASK_LOOK_AT_ENTITY(playerPedTrevor, playerPedMichael, 3000, SLF_WHILE_NOT_IN_FOV) ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(12000, 15000) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_PHONE_ONSCREEN() IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_PHONE1") PRINT_HELP_FOREVER("PROHLP_PHONE1") ENDIF ELSE IF IS_PHONE_ONSCREEN(TRUE) AND NOT IS_CONTACTS_LIST_ON_SCREEN() IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_PHONE4") PRINT_HELP_FOREVER("PROHLP_PHONE4") ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_detonate) 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 - 1000 CREATE_CONVERSATION_ADV(PRO_detonate, "PRO_detonate") iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) ENDIF ENDIF ENDIF ENDIF IF IS_PHONE_ONSCREEN(TRUE) AND IS_CONTACTS_LIST_ON_SCREEN() IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_PHONE5") PRINT_HELP_FOREVER("PROHLP_PHONE5") ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_callit) 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 - 1000 CREATE_CONVERSATION_ADV(PRO_callit, "PRO_callit") iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) ENDIF ENDIF ENDIF ENDIF ENDIF IF bPhone[1] = FALSE IF IS_PHONE_ONSCREEN(TRUE) AND NOT IS_CONTACTS_LIST_ON_SCREEN() bPhone[1] = TRUE ENDIF ELIF bPhone[2] = FALSE IF bPhone[3] = FALSE IF IS_PHONE_ONSCREEN(TRUE) AND IS_CONTACTS_LIST_ON_SCREEN() bPhone[3] = TRUE ENDIF ENDIF ENDIF IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfVaultExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion) != RFMO_STATE_PRIMED SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion, RFMO_STATE_PRIMING) ENDIF ENDIF IF IS_CALLING_CONTACT(CHAR_DETONATEBOMB) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) PLAY_AUDIO(PROLOGUE_TEST_PRE_SAFE_EXPLOSION) CLEAR_PRINTS() SAFE_CLEAR_HELP() //CLEAR_TEXT() //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_THREATEN_HOSTAGES") STOP_AUDIO_SCENE("PROLOGUE_THREATEN_HOSTAGES") ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DETONATE_CHARGES") START_AUDIO_SCENE("PROLOGUE_DETONATE_CHARGES") ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_MUTE_SPRINKLERS") START_AUDIO_SCENE("PROLOGUE_MUTE_SPRINKLERS") ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(SLOWMO_PROLOGUE_VAULT) ACTIVATE_AUDIO_SLOWMO_MODE("SLOWMO_PROLOGUE_VAULT") SET_LABEL_AS_TRIGGERED(SLOWMO_PROLOGUE_VAULT, TRUE) ENDIF REPLAY_RECORD_BACK_FOR_TIME(1.5, 1.0, REPLAY_IMPORTANCE_HIGH) ADVANCE_CUTSCENE() ENDIF ENDIF IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneHostage) IF NOT IS_ENTITY_AT_COORD(pedBrad, <<5313.7813, -5205.1440, 83.5237>>, <<0.5, 0.5, 2.0>>) IF GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) != PERFORMING_TASK TASK_FOLLOW_NAV_MESH_TO_COORD(pedBrad, <<5313.7813, -5205.1440, 83.5237>>, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, DEFAULT_NAVMESH_RADIUS, ENAV_DEFAULT, 114.0175) ENDIF ENDIF ENDIF BREAK CASE 1 LOAD_STREAM("PROLOGUE_BLOW_THE_VAULT_MASTER") PREPARE_ALARM("PROLOGUE_VAULT_ALARMS") IF TIMERA() > 1500 + 1000 SAFE_DELETE_PED(pedHostage[HostageMale1]) SAFE_DELETE_PED(pedHostage[HostageGuard]) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 7) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 8) SAFE_DELETE_PED(pedHostage[HostageFemale]) SAFE_DELETE_PED(pedHostage[HostageMale2]) HANG_UP_AND_PUT_AWAY_PHONE(TRUE) CLEAR_TEXT() bRadar = FALSE DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) WAIT_WITH_DEATH_CHECKS(0) CLEAR_AREA(<<5296.97, -5188.88, 82.74>>, 10.0, TRUE) SET_CAM_PARAMS(camMain, <<5297.291992,-5187.329590,83.824295>>, <<6.358143,-8.767557,-122.514175>>, 28.340401, 0, GRAPH_TYPE_DECEL, GRAPH_TYPE_DECEL) SET_CAM_PARAMS(camMain, <<5297.325195,-5187.351074,83.828720>>, <<6.358143,-8.767557,-122.514175>>, 28.340401, 1800, GRAPH_TYPE_DECEL, GRAPH_TYPE_DECEL) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camMain, 1.1) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camMain, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camMain, 2.8) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) IF NOT bAudioStream SET_AUDIO_FLAG("DisableReplayScriptStreamRecording", TRUE) bAudioStream = TRUE ENDIF PLAY_STREAM_FRONTEND() SET_TIMECYCLE_MODIFIER("cashdepot") WAIT_WITH_DEATH_CHECKS(0) SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CashD_vault") // SET_CAM_MOTION_BLUR_STRENGTH(camMain, 0.3) SET_PED_POSITION(playerPedID, <<5308.6709, -5206.5474, 82.5186>>, 269.1302) IF NOT HAS_PED_GOT_WEAPON(playerPedID, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedID, wtCarbineRifle, 500, TRUE) ENDIF SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) IF NOT bVideoRecording REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) bVideoRecording = TRUE ENDIF IF NOT DOES_ENTITY_EXIST(objLightingRig[LIGHTING_RIG_VAULT]) objLightingRig[LIGHTING_RIG_VAULT] = CREATE_OBJECT(PROP_VAULT_DOOR_SCENE, <<5297.717, -5188.909, 81.575>>) FORCE_ROOM_FOR_ENTITY(objLightingRig[LIGHTING_RIG_VAULT], intDepot, HASH("V_CashD_side")) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 2 PREPARE_ALARM("PROLOGUE_VAULT_ALARMS") IF IS_ENTITY_VISIBLE(objBomb2) AND TIMERA() > 500 SET_ENTITY_VISIBLE(objBomb2, FALSE) SET_ENTITY_VISIBLE(objBomb1, TRUE) ENDIF IF IS_ENTITY_VISIBLE(objBomb1) AND TIMERA() > 1500 SET_ENTITY_VISIBLE(objBomb1, FALSE) ENDIF IF TIMERA() > 1000 SET_ENTITY_VISIBLE(objBomb, FALSE) SET_ENTITY_VISIBLE(objBombGreen, TRUE) ENDIF IF TIMERA() > 1800 SET_ENTITY_VISIBLE(objBomb, FALSE) SET_ENTITY_VISIBLE(objBombGreen, TRUE) IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfVaultExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion) = RFMO_STATE_PRIMED SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion, RFMO_STATE_START_ANIM) ENDIF ENDIF //Sound // sIDVaultExplosion = GET_SOUND_ID() // PLAY_SOUND_FRONTEND(sIDVaultExplosion, "Vault_Blast", "Prologue_Sounds") //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_VAULT_RAYFIRE") START_AUDIO_SCENE("PROLOGUE_VAULT_RAYFIRE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DETONATE_CHARGES") STOP_AUDIO_SCENE("PROLOGUE_DETONATE_CHARGES") ENDIF IF DOES_CAM_EXIST(camMain) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camMain, 0.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camMain, 0.0) SET_CAM_DOF_FNUMBER_OF_LENS(camMain, 2.8) DESTROY_CAM(camMain) ENDIF IF NOT DOES_CAM_EXIST(camMain) camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF SET_CAM_PARAMS(camMain, <<5292.704102, -5185.750977, 82.847717>>, <<9.034329, -2.898424, -131.669739>>, 45.0, 0, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) SAFE_DELETE_OBJECT(objLightingRig[LIGHTING_RIG_VAULT]) ADVANCE_CUTSCENE() ENDIF BREAK CASE 3 PREPARE_ALARM("PROLOGUE_VAULT_ALARMS") IF NOT HAS_LABEL_BEEN_TRIGGERED(VaultBlast) IF TIMERA() > 300 START_PARTICLE_FX_NON_LOOPED_AT_COORD("ent_ray_pro1_vault_exp_lit", <<5298.20068, -5189.05176, 83.86238>>, VECTOR_ZERO) SHAKE_CAM(camMain, "GRENADE_EXPLOSION_SHAKE", 3.0) SET_CONTROL_SHAKE(PLAYER_CONTROL, 500, 256) //Particles IF HAS_PTFX_ASSET_LOADED() IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxSmoke) ptfxSmoke = START_PARTICLE_FX_LOOPED_AT_COORD("scr_prologue_vault_haze", <<5299, -5189, 82.6>>, VECTOR_ZERO) ENDIF IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxFog) ptfxFog = START_PARTICLE_FX_LOOPED_AT_COORD("scr_prologue_vault_fog", <<5299, -5189, 82.6>>, VECTOR_ZERO) ENDIF ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_MUTE_SPRINKLERS") STOP_AUDIO_SCENE("PROLOGUE_MUTE_SPRINKLERS") ENDIF SET_TIME_SCALE(0.5) PRINTLN("SET_TIME_SCALE(0.5)") SET_LABEL_AS_TRIGGERED(VaultBlast, TRUE) ENDIF ENDIF IF TIMERA() > 400 PLAY_AUDIO(PROLOGUE_TEST_COLLECT_MONEY) START_ALARM("PROLOGUE_VAULT_ALARMS", FALSE) SAFE_DELETE_OBJECT(objBomb) SAFE_DELETE_OBJECT(objBombGreen) SAFE_DELETE_OBJECT(objBomb3) SAFE_DELETE_OBJECT(objBomb2) SAFE_DELETE_OBJECT(objBomb1) ADVANCE_CUTSCENE() ENDIF BREAK CASE 4 IF TIMERA() > 250 // SET_CAM_PARAMS(camMain, // <<5292.692871, -5185.696777, 83.150391>>, // <<4.563637, 4.519622, -132.361115>>, // 44.864380, // 0, // GRAPH_TYPE_LINEAR, // GRAPH_TYPE_LINEAR) ADVANCE_CUTSCENE() ENDIF BREAK CASE 5 IF TIMERA() > 450 //1250 SET_TIME_SCALE(1.0) PRINTLN("SET_TIME_SCALE(1.0)") //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_VAULT_RAYFIRE") STOP_AUDIO_SCENE("PROLOGUE_VAULT_RAYFIRE") ENDIF STOP_CAM_SHAKING(camMain, FALSE) CLEAR_TIMECYCLE_MODIFIER() // SET_CAM_MOTION_BLUR_STRENGTH(camMain, 0.0) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Safe_1, "PRO_Safe", "PRO_Safe_1", CONV_PRIORITY_HIGH) // SET_CAM_PARAMS(camMain, // <<5307.003418,-5206.881836,84.703842>>, // <<-15.874626,0.000000,-73.740723>>, // 46.066589, // 0, // GRAPH_TYPE_LINEAR, // GRAPH_TYPE_LINEAR) // // SET_CAM_PARAMS(camMain, // <<5306.786621,-5206.944824,84.768021>>, // <<-15.874626,0.000000,-73.740723>>, // 46.066589, // 3000, // GRAPH_TYPE_LINEAR, // GRAPH_TYPE_LINEAR) //Camera IF NOT DOES_CAM_EXIST(camAnim) camAnim = CREATE_CAMERA(CAMTYPE_ANIMATED, TRUE) ENDIF sceneVaultReact = CREATE_SYNCHRONIZED_SCENE(sceneVaultReactPos, sceneVaultReactRot) sceneVaultReactCam = CREATE_SYNCHRONIZED_SCENE(sceneVaultReactCamPos, sceneVaultReactCamRot) SET_PED_POSITION(playerPedID, <<5307.4751, -5207.1147, 82.5187>> + <<-0.08, 0.32, 0.0>>, 272.3664) TASK_PLAY_ANIM(playerPedID, sAnimDictPrologue3, "react_to_explosion_player_zero", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_DEFAULT, 0.075 + 0.050) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedID) CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sceneVaultReact, sAnimDictPrologue3, "react_to_explosion_player_two", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneVaultReact, sAnimDictPrologue3, "react_to_explosion_brad", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) PLAY_SYNCHRONIZED_CAM_ANIM(camAnim, sceneVaultReactCam, "react_to_explosion_cam", sAnimDictPrologue3_Cam) SET_SYNCHRONIZED_SCENE_PHASE(sceneVaultReact, 0.075 + 0.050) SET_SYNCHRONIZED_SCENE_PHASE(sceneVaultReactCam, 0.421) SET_CAM_ACTIVE(camAnim, TRUE) WAIT_WITH_DEATH_CHECKS(0) SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CashD_reception") // SHAKE_CAM(camMain, "MEDIUM_EXPLOSION_SHAKE", 0.2) ADVANCE_CUTSCENE() ENDIF BREAK CASE 6 //IF GET_SYNCHRONIZED_SCENE_PHASE(sceneVaultReact) >= 0.069 + 0.050 IF HAS_PTFX_ASSET_LOADED() START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_prologue_ceiling_debris", <<5310.24512, -5205.66309, 85.22590>>, <<0.0, 0.0, 0.0>>) ENDIF ADVANCE_CUTSCENE() //ENDIF BREAK CASE 7 IF GET_SYNCHRONIZED_SCENE_PHASE(sceneVaultReact) >= 0.085 + 0.050 IF HAS_PTFX_ASSET_LOADED() START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_prologue_ceiling_debris", <<5309.8, -5207.6, 85.40824>>, <<0.0, 0.0, 90.0>>) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 8 IF GET_SYNCHRONIZED_SCENE_PHASE(sceneVaultReact) >= 0.087 + 0.050 //0.075 + 0.050 IF HAS_PTFX_ASSET_LOADED() START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_prologue_ceiling_debris", <<5313.99268, -5207.3, 85.34588>>, <<0.0, 0.0, 180.0>>) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 9 IF GET_SYNCHRONIZED_SCENE_PHASE(sceneVaultReact) >= 0.350 + 0.050 STOP_CAM_SHAKING(camMain, TRUE) IF NOT DOES_CAM_EXIST(camInterpDOF) camInterpDOF = CREATE_CAMERA(CAMTYPE_SCRIPTED, TRUE) ENDIF SET_CAM_PARAMS(camInterpDOF, <<5295.858887,-5188.994141,82.992493>>, <<3.961173,-0.003078,-90.428894>>, 35.788742, 0, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camInterpDOF, 8.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camInterpDOF, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camInterpDOF, 1.0) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camInterpDOF, 0.0) SHAKE_CAM(camInterpDOF, "HAND_SHAKE", 0.5) SET_CAM_PARAMS(camMain, <<5296.373535,-5188.994141,83.027702>>, <<3.408814,-0.003078,-91.278107>>, 35.788742, 0, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) //SET_CAM_ACTIVE(camMain, TRUE) IF DOES_CAM_EXIST(camAnim) DESTROY_CAM(camAnim) ENDIF SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camMain, 8.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camMain, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camMain, 1.3) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camMain, 0.0) SHAKE_CAM(camMain, "HAND_SHAKE", 0.5) SET_CAM_ACTIVE_WITH_INTERP(camMain, camInterpDOF, 3000, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) CLEAR_PED_TASKS(playerPedID) CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_TASKS(pedBrad) WAIT_WITH_DEATH_CHECKS(0) // SET_CAM_MOTION_BLUR_STRENGTH(camMain, 0.3) SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CashD_vault") //ACTIVATE_INTERIOR_ENTITY_SET(intDepot, "V_CashDepot_dust") //REFRESH_INTERIOR(intDepot) objDebris = CREATE_OBJECT_NO_OFFSET(V_ILev_CD_Dust, <<5312.14, -5209.04, 83.02>>) FREEZE_ENTITY_POSITION(objDebris, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(V_ILev_CD_Dust) IF HAS_PTFX_ASSET_LOADED() START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_prologue_ceiling_debris", <<5298.206055 ,-5189.063477 ,85.281166>>, <<0.0, 0.0, 180.0>>) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 10 IF TIMERA() > 3000 CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.6885, -5204.9897, 82.5199>>, 355.8240 + 90.0) TASK_PUT_PED_DIRECTLY_INTO_COVER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.6885, -5204.9897, 82.5199>>, -1, FALSE, 0, TRUE, TRUE, covPoint[0]) SET_PED_POSITION(playerPedID, <<5308.8560, -5206.2939, 85.7187 - 3.2>>, 355.8240) FORCE_PED_MOTION_STATE(playerPedID, MS_ACTIONMODE_IDLE) bRadar = TRUE DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) WAIT_WITH_DEATH_CHECKS(0) IF bVideoRecording REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF IF DOES_CAM_EXIST(camMain) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camMain, 0.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camMain, 0.0) SET_CAM_DOF_FNUMBER_OF_LENS(camMain, 2.8) DESTROY_CAM(camMain) ENDIF IF NOT DOES_CAM_EXIST(camMain) camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON SET_GAMEPLAY_CAM_RELATIVE_PITCH(-5) ELSE SET_GAMEPLAY_CAM_RELATIVE_PITCH(-30) ENDIF REMOVE_CONTACT_FROM_ALL_PHONEBOOKS(CHAR_DETONATEBOMB) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) // SET_CAM_MOTION_BLUR_STRENGTH(camMain, 0.0) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME) ENDIF ADVANCE_STAGE() ENDIF BREAK ENDSWITCH IF iCutsceneStage > 1 AND iCutsceneStage < 10 //HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) ENDIF //Close Doors IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) AND ((IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5311.497559, -5204.677246, 85.718628 - 3.2>>, <<5311.415039, -5220.339355, 88.718628 - 3.2>>, 12.0, FALSE, TRUE) AND NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5308.802246, -5204.578613, 84.018631>>, <<1.0, 1.0, 1.5>>))) SET_LABEL_AS_TRIGGERED(DoorIsClosing, TRUE) ELSE UNLOCK_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR) ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) SET_CAM_ACTIVE(camMain, TRUE) IF DOES_CAM_EXIST(camAnim) DESTROY_CAM(camAnim) ENDIF IF DOES_CAM_EXIST(camInterpDOF) DESTROY_CAM(camInterpDOF) ENDIF CLEAR_TIMECYCLE_MODIFIER() SAFE_DELETE_OBJECT(objLightingRig[LIGHTING_RIG_VAULT]) SAFE_DELETE_PED(pedHostage[HostageMale1]) SAFE_DELETE_PED(pedHostage[HostageGuard]) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 8) SAFE_DELETE_PED(pedHostage[HostageFemale]) SAFE_DELETE_PED(pedHostage[HostageMale2]) SAFE_DELETE_OBJECT(objBomb) SAFE_DELETE_OBJECT(objBombGreen) SAFE_DELETE_OBJECT(objBomb3) SAFE_DELETE_OBJECT(objBomb2) SAFE_DELETE_OBJECT(objBomb1) IF NOT DOES_ENTITY_EXIST(objDebris) objDebris = CREATE_OBJECT_NO_OFFSET(V_ILev_CD_Dust, <<5312.14, -5209.04, 83.02>>) FREEZE_ENTITY_POSITION(objDebris, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(V_ILev_CD_Dust) ENDIF //Score PLAY_AUDIO(PROLOGUE_TEST_COLLECT_MONEY) //Sound IF sIDVaultExplosion != -1 STOP_SOUND(sIDVaultExplosion) RELEASE_SOUND_ID(sIDVaultExplosion) sIDVaultExplosion = -1 ENDIF IF HAS_LABEL_BEEN_TRIGGERED(SLOWMO_PROLOGUE_VAULT) DEACTIVATE_AUDIO_SLOWMO_MODE("SLOWMO_PROLOGUE_VAULT") ENDIF //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_THREATEN_HOSTAGES") STOP_AUDIO_SCENE("PROLOGUE_THREATEN_HOSTAGES") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_VAULT_RAYFIRE") STOP_AUDIO_SCENE("PROLOGUE_VAULT_RAYFIRE") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_MUTE_SPRINKLERS") STOP_AUDIO_SCENE("PROLOGUE_MUTE_SPRINKLERS") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DETONATE_CHARGES") STOP_AUDIO_SCENE("PROLOGUE_DETONATE_CHARGES") ENDIF SAFE_REMOVE_BLIP(blipDestination) SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SAFE_ADD_BLIP_PED(blipBuddy, pedBrad, FALSE) SAFE_CLEAR_HELP(TRUE) //SAFE_CLEAR_FLOATING_HELP() REMOVE_CONTACT_FROM_ALL_PHONEBOOKS(CHAR_DETONATEBOMB) SET_TIME_SCALE(1.0) PRINTLN("SET_TIME_SCALE(1.0)") HANG_UP_AND_PUT_AWAY_PHONE(TRUE) IF DOES_CAM_EXIST(camMain) IF IS_CAM_RENDERING(camMain) RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF ENDIF SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Phone DISABLE_CELLPHONE(TRUE) CLEAR_PED_TASKS(playerPedID) // CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // CLEAR_PED_TASKS(pedBrad) SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfVaultExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion) != RFMO_STATE_END SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion, RFMO_STATE_ENDING) ENDIF ENDIF UNLOCK_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC LearnBlips() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Radar bRadar = TRUE //Print CLEAR_PRINTS() CREATE_CONVERSATION_FROM_SPECIFIC_LINE_ADV("PRO_Safe", "PRO_Safe_2", CONV_PRIORITY_HIGH) //PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Safe_2, "PRO_Safe", "PRO_Safe_2", CONV_PRIORITY_HIGH) //Blips SAFE_ADD_BLIP_LOCATION(blipDestination, <<5303.5576, -5188.4141, 85.7189 - 3.2>>) SET_BLIP_FLASH_DURATION(blipDestination, 5000) PRINT_HELP_ADV(PROHLP_BLIPS4, "PROHLP_BLIPS4") //Particles IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxSmoke) ptfxSmoke = START_PARTICLE_FX_LOOPED_AT_COORD("scr_prologue_vault_haze", <<5299, -5189, 82.6>>, VECTOR_ZERO) ENDIF IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxFog) ptfxFog = START_PARTICLE_FX_LOOPED_AT_COORD("scr_prologue_vault_fog", <<5299, -5189, 82.6>>, VECTOR_ZERO) ENDIF #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF iCurrentTake = 0 iDisplayedTake = 0 CREATE_MONEY_PICKUPS(<<5303.31055, -5189.00049, 82.51867>>, 2500, 5) INT receivingStruct STAT_GET_INT(SP0_TOTAL_CASH, receivingStruct) iAccountBalance = receivingStruct //Cutscene REQUEST_CUTSCENE("pro_mcs_2") #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SET_PED_POSITION(playerPedID, <<5308.8560, -5206.2939, 85.7187 - 3.2>>, 355.8240) CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.6885, -5204.9897, 82.5199>>, 355.8240 + 90.0) TASK_PUT_PED_DIRECTLY_INTO_COVER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.6885, -5204.9897, 82.5199>>, -1, FALSE, 0, TRUE, TRUE, covPoint[0]) CLEAR_PED_TASKS_IMMEDIATELY(pedBrad) SET_PED_POSITION(pedBrad, <<5313.9053, -5205.7490, 82.5187>>, 98.0530) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE INT receivingStruct STAT_GET_INT(SP0_TOTAL_CASH, receivingStruct) IF receivingStruct > iAccountBalance iCurrentTake += receivingStruct - iAccountBalance g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = iCurrentTake #IF IS_DEBUG_BUILD PRINTLN("g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = ", g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE]) #ENDIF iAccountBalance = receivingStruct ENDIF //SET_PED_CAPSULE(pedBrad, 0.5) UNLOCK_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR) UNLOCK_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR) IF IS_PED_RUNNING(playerPedID) AND NOT IS_PED_SHOOTING(playerPedID) AND IS_ENTITY_AT_COORD(playerPedID, <<5308.813477, -5204.577637, 84.018631>>, <<1.25, 1.5, 1.5>>) AND (DOOR_SYSTEM_GET_OPEN_RATIO(iLeftReceptionDoor) <> 0.0 OR DOOR_SYSTEM_GET_OPEN_RATIO(iRightReceptionDoor) <> 0.0) IF sIDBargeDoor = -1 sIDBargeDoor = GET_SOUND_ID() PLAY_SOUND_FROM_COORD(sIDBargeDoor, "Barge_Door", <<5308.813477, -5204.577637, 84.018631>>, "Prologue_Sounds") ENDIF ENDIF //Request Cutscene Variations - pro_mcs_2 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) ENDIF // IF NOT IS_ENTITY_AT_COORD(pedBrad, <<5314.453613, -5205.312988, 84.018631>>, <<0.75, 0.75, 1.5>>) // CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // // OPEN_SEQUENCE_TASK(seqMain) // TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<5300.7422, -5190.4980, 82.5184>>, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, DEFAULT_NAVMESH_RADIUS, ENAV_DEFAULT, 248.5686 + 46.0) // TASK_PLAY_ANIM(NULL, sAnimDictPrologue3_IdleInVault, "idle_d", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) // // SET_LABEL_AS_TRIGGERED(TrevorIdleVault, TRUE) // ENDIF //Trevor Idle IF NOT HAS_LABEL_BEEN_TRIGGERED(TrevorIdleVault) IF iCutsceneStage <= 1 IF IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5308.730957, -5188.500977, 82.518669>>, <<5298.838867, -5188.512695, 86.018364>>, 9.0) CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_SECONDARY_TASK(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) OPEN_SEQUENCE_TASK(seqMain) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<5300.7422, -5190.4980, 82.5184>>, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, DEFAULT_NAVMESH_RADIUS, ENAV_DEFAULT, 248.5686 + 46.0) TASK_PLAY_ANIM(NULL, sAnimDictPrologue3_IdleInVault, "idle_d", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0, FALSE, AIK_DISABLE_LEG_IK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) CLEAR_SEQUENCE_TASK(seqMain) SET_LABEL_AS_TRIGGERED(TrevorIdleVault, TRUE) ENDIF ENDIF ENDIF SWITCH iCutsceneStage CASE 0 //Text IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_VAULT_PRINT) IF TIMERA() > 1000 //Threshold for audio conversation to play... :/ IF HAS_LABEL_BEEN_TRIGGERED(PRO_Safe_2) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT_ADV(PRO_VAULT, "PRO_VAULT", DEFAULT_GOD_TEXT_TIME - 4000, FALSE) SET_LABEL_AS_TRIGGERED(PRO_VAULT_PRINT, TRUE) ENDIF ENDIF ENDIF //Trevor leaves cover IF NOT IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5310.549316, -5202.885742, 82.518677>>, <<5307.083496, -5202.865234, 85.518677>>, 3.0) //CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLEAR_PED_SECONDARY_TASK(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) TASK_FOLLOW_WAYPOINT_RECORDING(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sWaypointRoute1) SET_COMBAT_FLOAT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CCF_TIME_BETWEEN_BURSTS_IN_COVER, 2.0) //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_TO_VAULT") START_AUDIO_SCENE("PROLOGUE_GET_TO_VAULT") ENDIF ENDIF INT iRandom IF IS_PED_IN_COVER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) AND IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5310.699219, -5205.045898, 84.018669>>,<<0.5, 0.5, 1.5>>) IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_A") AND NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_B") AND NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_C") IF iCoverAnimTimer = -1 iCoverAnimTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(1500, 3000) ENDIF IF GET_GAME_TIMER() > iCoverAnimTimer iRandom = GET_RANDOM_INT_IN_RANGE(0, 3) ANIM_DATA none ANIM_DATA animDataBlend1 animDataBlend1.type = APT_SINGLE_ANIM animDataBlend1.anim0 = "Trevor_Cover_Impatient_A" animDataBlend1.dictionary0 = sAnimDictPrologue3_Impatient //animDataBlend1.filter = GET_HASH_KEY("BONEMASK_UPPERONLY") animDataBlend1.flags = AF_SECONDARY IF iRandom = 0 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_A", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_A" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ELIF iRandom = 1 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_B", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_B" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ELIF iRandom = 2 //TASK_PLAY_ANIM(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sAnimDictPrologue3_Impatient, "Trevor_Cover_Impatient_C", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) animDataBlend1.anim0 = "Trevor_Cover_Impatient_C" TASK_SCRIPTED_ANIMATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) ENDIF iCoverAnimTimer = -1 ENDIF ENDIF ENDIF ENDIF //Waypoints INT iWaypointPlayer, iWaypointTrevor, iWaypointMax IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) WAYPOINT_RECORDING_GET_NUM_POINTS(sWaypointRoute1, iWaypointMax) WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT(sWaypointRoute1, GET_ENTITY_COORDS(playerPedID), iWaypointPlayer) WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT(sWaypointRoute1, GET_ENTITY_COORDS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]), iWaypointTrevor) iWaypointPlayer = CLAMP_INT((iWaypointPlayer - 1) - 1, 0, iWaypointMax) WAYPOINT_PLAYBACK_OVERRIDE_SPEED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CLAMP(GET_PED_DESIRED_MOVE_BLEND_RATIO(playerPedID), PEDMOVEBLENDRATIO_WALK, PEDMOVEBLENDRATIO_SPRINT)) ENDIF IF iWaypointPlayer > iWaypointTrevor OR iWaypointTrevor > 16 //Don't block vault door OR iWaypointTrevor = 1 //Don't block reception doors IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF WAYPOINT_PLAYBACK_GET_IS_PAUSED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) WAYPOINT_PLAYBACK_RESUME(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF ENDIF ELSE IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF NOT WAYPOINT_PLAYBACK_GET_IS_PAUSED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) WAYPOINT_PLAYBACK_PAUSE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PromptVault) AND GET_GAME_TIMER() > iDialogueTimer IF IS_ENTITY_AT_COORD(playerPedID, <<5306.708496, -5180.153809, 84.518669>>, <<14.5, 3.0, 2.0>>) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF iDialogueLineCount[1] > 0 CREATE_CONVERSATION_ADV(PRO_Vault, "PRO_Vault", CONV_PRIORITY_MEDIUM, FALSE) iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) SET_LABEL_AS_TRIGGERED(PromptVault, TRUE) 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 NOT HAS_LABEL_BEEN_TRIGGERED(PRO_BackHere) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5295.025391, -5185.918945, 82.518784>>, <<5295.129395, -5178.219238, 86.018784>>, 6.5) CREATE_CONVERSATION_ADV(PRO_BackHere, "PRO_BackHere") iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) ENDIF ENDIF ENDIF IF GET_GAME_TIMER() > iDialogueTimer IF iDialogueLineCount[0] = -1 iDialogueLineCount[0] = 5 ELIF iDialogueLineCount[1] = -1 iDialogueLineCount[1] = 4 ENDIF IF NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5308.730957, -5188.500977, 82.518669>>, <<5298.838867, -5188.512695, 86.018364>>, 9.0) AND IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5308.730957, -5188.500977, 82.518669>>, <<5298.838867, -5188.512695, 86.018364>>, 9.0) iDialogueStage = 1 ELSE iDialogueStage = 0 ENDIF IF iDialogueLineCount[iDialogueStage] > 0 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF GET_PED_DESIRED_MOVE_BLEND_RATIO(playerPedTrevor) < 1.0 AND NOT IS_ENTITY_AT_COORD(playerPedMichael, GET_ENTITY_COORDS(playerPedTrevor), <<3.5, 3.5, 3.0>>) IF iDialogueStage = 0 CREATE_CONVERSATION_ADV(PRO_GenIdle, "PRO_GenIdle", CONV_PRIORITY_MEDIUM, FALSE) ELIF iDialogueStage = 1 CREATE_CONVERSATION_ADV(PRO_Vault, "PRO_Vault", CONV_PRIORITY_MEDIUM, FALSE) ENDIF ENDIF iDialogueLineCount[iDialogueStage]-- ENDIF ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ENDIF //Coughing IF NOT HAS_LABEL_BEEN_TRIGGERED(COUGHING) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5296.629395, -5186.645996, 82.518631>>, <<5296.792969, -5191.115234, 85.518631>>, 3.0) AND NOT IS_PED_IN_COVER(playerPedID) AND NOT IS_PED_GOING_INTO_COVER(playerPedID) PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(playerPedID, "COUGH", "WAVELOAD_PAIN_MALE") IF GET_FOLLOW_PED_CAM_VIEW_MODE() != CAM_VIEW_MODE_FIRST_PERSON TASK_PLAY_ANIM(playerPedID, sAnimDictPrologue_Cough, "walk", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) ENDIF SET_LABEL_AS_TRIGGERED(COUGHING, TRUE) ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue_Cough, "walk") SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_AIM) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5303.912109, -5184.687988, 85.690247 - 3.2>>, <<5303.916504, -5191.533691, 88.718628 - 3.2>>, 10.0, FALSE, TRUE) //Blips IF NOT DOES_BLIP_EXIST(blipCash) objCash = CREATE_OBJECT(PROP_PING_PONG, <<5307.6755, -5191.0529, 83.0186>>) FREEZE_ENTITY_POSITION(objCash, TRUE) SET_ENTITY_VISIBLE(objCash, FALSE) blipCash = CREATE_BLIP_FOR_OBJECT(objCash) SET_BLIP_NAME_FROM_TEXT_FILE(blipCash, "PRO_BLIPCASH") // SET_OBJECT_AS_NO_LONGER_NEEDED(objCash) // blipCash = ADD_BLIP_FOR_COORD(<<5307.6755, -5191.0529, 83.0186>>) // SET_BLIP_COLOUR(blipCash, BLIP_COLOUR_GREEN) // SET_BLIP_DIM(blipCash, FALSE) SAFE_REMOVE_BLIP(blipDestination) CLEAR_PRINTS() SAFE_CLEAR_HELP() PRINT_ADV(PRO_CASH, "PRO_CASH") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_see, "PRO_see", CONV_PRIORITY_LOW, TRUE, DO_NOT_DISPLAY_SUBTITLES) ENDIF //PRINT_HELP_ADV(PROHLP_BLIPS2, "PROHLP_BLIPS2") //PRINT_HELP_ADV_POS("PROHLP_BLIPS2", <<5307.6755, -5191.0529, 84.0186>>) SET_BLIP_FLASH_DURATION(blipCash, 3000) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(PROHLP_BLIPS2, "PROHLP_BLIPS2") ENDIF 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 NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Bills) CREATE_CONVERSATION_ADV(PRO_Bills, "PRO_Bills") ELSE IF iDialogueLineCount[0] > 0 CREATE_CONVERSATION_ADV(PRO_GenIdle, "PRO_GenIdle", CONV_PRIORITY_MEDIUM, FALSE) iDialogueLineCount[0]-- ENDIF ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) ENDIF ENDIF IF DOES_BLIP_EXIST(blipCash) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5307.583496, -5184.533203, 82.018890>>, <<5307.440918, -5191.546875, 86.567856>>, 3.0) //<<5308.160645, -5185.493652, 82.018631>>, <<5308.078125, -5191.555176, 86.518639>>, 2.75) OR (GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) = CAM_VIEW_MODE_FIRST_PERSON AND IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5307.583496, -5184.533203, 82.018890>>, <<5307.440918, -5191.546875, 86.567856>>, 4.5)) IF SAFE_START_CUTSCENE(0.0, FALSE) //, FALSE) IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_MICHAEL] = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(playerPedMichael) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_MICHAEL], "Michaels_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_TREVOR] = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(playerPedTrevor) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_TREVOR], "Trevors_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) LOAD_AUDIO(PROLOGUE_TEST_GUARD_HOSTAGE_OS) PLAY_AUDIO(PROLOGUE_TEST_COLLECT_CASH) START_CUTSCENE() WAIT_WITH_DEATH_CHECKS(0) IF NOT IS_REPEAT_PLAY_ACTIVE() SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) ENDIF CLEAR_AREA(GET_ENTITY_COORDS(playerPedID), 10.0, TRUE) //PROP_CASH_TROLLY - <<5302.142, -5191.521, 82.992>>, 75.000 //PROP_CASH_TROLLY - <<5308.040, -5191.028, 82.992>>, 20.000 IF bSwapTrolley = FALSE CREATE_MODEL_SWAP(<<5302.142, -5191.521, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) CREATE_MODEL_SWAP(<<5308.040, -5191.028, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) bSwapTrolley = TRUE ENDIF SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 0, 0) bRadar = FALSE REPLAY_RECORD_BACK_FOR_TIME(5.0, 0.0) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) ADVANCE_CUTSCENE() ENDIF ENDIF ENDIF ENDIF BREAK // CASE 2 // IF CAN_SET_EXIT_STATE_FOR_CAMERA() //GET_CUTSCENE_TIME() > (13.849023 * 1000.0) // OR WAS_CUTSCENE_SKIPPED() //// SET_CAM_PARAMS(camMain, GET_FINAL_RENDERED_CAM_COORD(), GET_FINAL_RENDERED_CAM_ROT(), GET_FINAL_RENDERED_CAM_FOV()) //// SET_CAM_PARAMS(camMain, <<5307.293945, -5189.190430, 84.549606>>, <<-23.342194, 0.0, 89.400475>>, 50.0, DEFAULT_INTERP_TO_FROM_GAME) //<<5308.738770, -5189.824707, 85.107216>>, <<-18.344702, 0.0, 74.455780>>, 50.0, DEFAULT_INTERP_TO_FROM_GAME) //// //// RENDER_SCRIPT_CAMS(TRUE, FALSE) // // SET_GAMEPLAY_CAM_RELATIVE_HEADING(89.4 - GET_ENTITY_HEADING(playerPedID)) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(-15.344316) // // ADVANCE_CUTSCENE() // ENDIF // BREAK CASE 2 // IF GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_GO_STRAIGHT_TO_COORD) = PERFORMING_TASK // INT iTolerance // // iTolerance = 8 // // INT iLTSx, iLTSy, iRTSx, iRTSy // // GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) // // IF (iLTSx < -iTolerance OR iLTSx > iTolerance) // OR (iLTSy < -iTolerance OR iLTSy > iTolerance) // CLEAR_PED_TASKS(playerPedID) // ENDIF // ENDIF IF HAS_CUTSCENE_FINISHED() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) //Player // IF WAS_CUTSCENE_SKIPPED() // SET_GAMEPLAY_CAM_RELATIVE_HEADING(-24.348312) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(-15.344316) // // RENDER_SCRIPT_CAMS(FALSE, FALSE) // // SET_PED_POSITION(playerPedID, <<5306.0747, -5189.8545, 82.5187>>, 86.4050) // // SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 750, 86.4050, FALSE) // // //TASK_GO_STRAIGHT_TO_COORD(playerPedID, <<5303.3008, -5189.0464, 82.5187>>, PEDMOVEBLENDRATIO_WALK) // ELSE // RENDER_SCRIPT_CAMS(FALSE, TRUE, DEFAULT_INTERP_TO_FROM_GAME, FALSE) // ENDIF //SET_GAMEPLAY_CAM_RELATIVE_HEADING(89.4 - GET_ENTITY_HEADING(playerPedID)) //SET_GAMEPLAY_CAM_RELATIVE_PITCH(-15.344316) SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, TRUE) ADVANCE_STAGE() ENDIF BREAK ENDSWITCH // IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON // SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) // ENDIF IF IS_CUTSCENE_PLAYING() IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Leave_Preload) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRELOAD_CONVERSATION(sPedsForConversation, sConversationBlock, "PRO_Leave", CONV_PRIORITY_LOW) SET_LABEL_AS_TRIGGERED(PRO_Leave_Preload, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(GameCamCash) SET_GAMEPLAY_CAM_RELATIVE_HEADING(89.4 - GET_ENTITY_HEADING(playerPedID)) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-15.344316) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(MichaelBag) IF GET_CUTSCENE_TIME() > ROUND(7.411327 * 1000.0) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 12, 0) SET_LABEL_AS_TRIGGERED(MichaelBag, TRUE) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") //SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 750) //TASK_GO_STRAIGHT_TO_COORD(playerPedID, <<5305.8823, -5189.5723, 82.5186>>, PEDMOVEBLENDRATIO_WALK, DEFAULT_TIME_BEFORE_WARP, 81.6185) // IF NOT WAS_CUTSCENE_SKIPPED() // FORCE_PED_MOTION_STATE(playerPedID, MS_ON_FOOT_WALK, TRUE, FAUS_CUTSCENE_EXIT) // ENDIF SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 12, 0) SET_LABEL_AS_TRIGGERED(GameCamCash, TRUE) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5299.9536, -5188.4478, 82.5183>>, 242.6358) //Bag IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_ANIM]) objBag[BRAD_BAG_ANIM] = CREATE_OBJECT(P_LD_HEIST_BAG_S_1, <<5293.259766, -5192.220215, 82.629997>>) ATTACH_ENTITY_TO_ENTITY(objBag[BRAD_BAG_ANIM], sSelectorPeds.pedID[SELECTOR_PED_TREVOR], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO) ENDIF sceneLoopVault = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sceneLoopVault, sAnimDictPrologue_LeaveVault, "mcs_2_idle_player2", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) TASK_LOOK_AT_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], playerPedID, -1) PLAY_ENTITY_ANIM(objBag[BRAD_BAG_ANIM], "mcs_2_idle_bag", sAnimDictPrologue_LeaveVault, INSTANT_BLEND_IN, TRUE, FALSE) SET_SYNCHRONIZED_SCENE_LOOPED(sceneLoopVault, TRUE) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_SPECIAL2, 1, 0) SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, TRUE) ENDIF //Weapon IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_weapon") GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_MICHAEL], playerPedMichael) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_weapon") GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_TREVOR], playerPedTrevor) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(MichaelCash) IF GET_CUTSCENE_TIME() > ROUND(5.400000 * 1000.0) iCurrentTake += 93000 g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = iCurrentTake #IF IS_DEBUG_BUILD PRINTLN("g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = ", g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE]) #ENDIF SET_LABEL_AS_TRIGGERED(MichaelCash, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TrevorCash) IF GET_CUTSCENE_TIME() > ROUND(7.600000 * 1000.0) iCurrentTake += 84000 g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = iCurrentTake #IF IS_DEBUG_BUILD PRINTLN("g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = ", g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE]) #ENDIF SET_LABEL_AS_TRIGGERED(TrevorCash, TRUE) ENDIF ENDIF IF bVideoRecording IF GET_CUTSCENE_TIME() > ROUND(5.100000 * 1000.0) REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF ENDIF ENDIF ENDIF IF CLEANUP_STAGE() REPLAY_STOP_EVENT() //Cleanup (Blips, peds, variables etc.) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 12, 0) HIDE_PED_WEAPON_FOR_SCRIPTED_CUTSCENE(playerPedID, FALSE) SET_OBJECT_AS_NO_LONGER_NEEDED(objCash) //Particles IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxSmoke) STOP_PARTICLE_FX_LOOPED(ptfxSmoke) ENDIF IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxFog) STOP_PARTICLE_FX_LOOPED(ptfxFog) ENDIF IF sIDBargeDoor != -1 STOP_SOUND(sIDBargeDoor) RELEASE_SOUND_ID(sIDBargeDoor) sIDBargeDoor = -1 ENDIF //Cover INT i REPEAT COUNT_OF(covPoint) i REMOVE_COVER_POINT(covPoint[i]) ENDREPEAT SAFE_REMOVE_BLIP(blipCash) SAFE_REMOVE_BLIP(blipDestination) SAFE_DELETE_OBJECT(objCash) SAFE_DELETE_OBJECT(objDoor) SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_SPECIAL2, 12, 0) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], PED_COMP_SPECIAL2, 1, 0) ASSISTED_MOVEMENT_REMOVE_ROUTE("Pro_S2") SET_PED_CAN_PEEK_IN_COVER(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) REPEAT COUNT_OF(objWeapon) i SAFE_DELETE_OBJECT(objWeapon[i]) ENDREPEAT REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC LeaveVault() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Radar bRadar = TRUE //Blips //Assisted ASSISTED_MOVEMENT_REQUEST_ROUTE("Pro_S1a") //Guard IF NOT DOES_ENTITY_EXIST(pedGuard) SPAWN_PED(pedGuard, CSB_PROLSEC, <<5297.8311, -5186.6440, 85.7190 - 3.2>>, 91.9750) SET_PED_COMPONENT_VARIATION(pedGuard, PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedGuard, PED_COMP_TORSO, 1, 0) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedGuard, "PROGUARD") SET_MODEL_AS_NO_LONGER_NEEDED(CSB_PROLSEC) GIVE_WEAPON_TO_PED(pedGuard, wtPistol, INFINITE_AMMO, TRUE) SET_PED_DROPS_WEAPONS_WHEN_DEAD(pedGuard, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedGuard, TRUE) SET_PED_AS_ENEMY(pedGuard, TRUE) SET_PED_DIES_WHEN_INJURED(pedGuard, TRUE) STOP_PED_WEAPON_FIRING_WHEN_DROPPED(pedGuard) ENDIF SET_ENTITY_VISIBLE(pedGuard, FALSE) IF bSwapTrolley = FALSE CREATE_MODEL_SWAP(<<5302.142, -5191.521, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) CREATE_MODEL_SWAP(<<5308.040, -5191.028, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) bSwapTrolley = TRUE ENDIF #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Cutscene REQUEST_CUTSCENE("pro_mcs_3_pt1") //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_TO_VAULT") START_AUDIO_SCENE("PROLOGUE_GET_TO_VAULT") ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SET_PED_POSITION(playerPedID, <<5303.3008, -5189.0464, 82.5187>>, 98.0764) CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5299.9536, -5188.4478, 82.5183>>, 242.6358) //<<5300.0117, -5188.3506, 82.5183>>, 92.7196) //Bag IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_ANIM]) objBag[BRAD_BAG_ANIM] = CREATE_OBJECT(P_LD_HEIST_BAG_S_1, <<5293.2598, -5192.2202, 82.6300>>) ATTACH_ENTITY_TO_ENTITY(objBag[BRAD_BAG_ANIM], sSelectorPeds.pedID[SELECTOR_PED_TREVOR], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO) ENDIF IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneLoopVault) sceneLoopVault = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sceneLoopVault, sAnimDictPrologue_LeaveVault, "mcs_2_idle_player2", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) TASK_LOOK_AT_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], playerPedID, -1) PLAY_ENTITY_ANIM(objBag[BRAD_BAG_ANIM], "mcs_2_idle_bag", sAnimDictPrologue_LeaveVault, INSTANT_BLEND_IN, TRUE, FALSE) SET_SYNCHRONIZED_SCENE_LOOPED(sceneLoopVault, TRUE) ENDIF SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE // IF TIMERA() < 500 // HIDE_HUD_AND_RADAR_THIS_FRAME() // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WANTED_STARS) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_CASH) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_MESSAGE) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_1) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FLOATING_HELP_TEXT_2) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RETICLE) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RADIO_STATIONS) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SAVING_GAME) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_FEED) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL) // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL_STATS) // ENDIF //Request Cutscene Variations - pro_mcs_3_pt1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_SecurityGuard_Grabs_mike", pedGuard) ENDIF IF NOT IS_GAMEPLAY_CAM_RENDERING() AND IS_INTERPOLATING_FROM_SCRIPT_CAMS() SET_GAMEPLAY_CAM_RELATIVE_HEADING(89.4 - GET_ENTITY_HEADING(playerPedID)) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-15.344316) ENDIF // CREATE_CONVERSATION_ADV(PRO_Leave, "PRO_Leave") // // IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5300.448730, -5193.559570, 82.518639>>, <<5300.519531, -5185.229004, 85.537689>>, 5.0) //IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5298.845703, -5191.692383, 85.718445 - 3.2>>, <<5298.884766, -5186.600586, 88.718506 - 3.2>>, 5.5, FALSE, TRUE) // IF SAFE_START_CUTSCENE(10.0, FALSE) // TASK_GO_STRAIGHT_TO_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5298.3125, -5189.1655, 82.5182>>, 1.2 /*PEDMOVE_WALK*/, DEFAULT_TIME_BEFORE_WARP, 139.1003) // // TASK_GO_STRAIGHT_TO_COORD(playerPedID, <<5297.40, -5189.51, 82.52>>, 0.5 /*PEDMOVE_WALK*/) //TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY(playerPedID, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<0.0, -1.0, 0.0>>, PEDMOVE_WALK) // // WAIT_WITH_DEATH_CHECKS(1500) // // ADVANCE_STAGE() // ENDIF // ENDIF SWITCH iCutsceneStage CASE 0 IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Leave) IF HAS_LABEL_BEEN_TRIGGERED(PRO_Leave_Preload) AND GET_IS_PRELOADED_CONVERSATION_READY() BEGIN_PRELOADED_CONVERSATION() SET_LABEL_AS_TRIGGERED(PRO_Leave, TRUE) ELSE CREATE_CONVERSATION_ADV(PRO_Leave, "PRO_Leave") ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000, 7500) ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5298.023926, -5189.134766, 82.518318>>, <<5302.975586, -5189.083008, 85.518600>>, 5.5) //IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5298.845703, -5191.692383, 85.718445 - 3.2>>, <<5298.884766, -5186.600586, 88.718506 - 3.2>>, 5.5, FALSE, TRUE) REPLAY_RECORD_BACK_FOR_TIME(1.0, 4.0) //TASK_GO_STRAIGHT_TO_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5295.6973, -5189.9873, 82.5186>>, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP, 167.1197) //Bag IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_ANIM]) objBag[BRAD_BAG_ANIM] = CREATE_OBJECT(P_LD_HEIST_BAG_S_1, <<5293.259766, -5192.220215, 82.629997>>) ATTACH_ENTITY_TO_ENTITY(objBag[BRAD_BAG_ANIM], sSelectorPeds.pedID[SELECTOR_PED_TREVOR], GET_PED_BONE_INDEX(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO) ENDIF sceneLeaveVault = CREATE_SYNCHRONIZED_SCENE(scenePosition, sceneRotation) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], sceneLeaveVault, sAnimDictPrologue_LeaveVault, "mcs_2_walkout_player2", NORMAL_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT) TASK_CLEAR_LOOK_AT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) PLAY_ENTITY_ANIM(objBag[BRAD_BAG_ANIM], "mcs_2_walkout_bag", sAnimDictPrologue_LeaveVault, NORMAL_BLEND_IN, FALSE, TRUE) TASK_GO_STRAIGHT_TO_COORD(playerPedID, <<5298.3516, -5188.9092, 82.5182>>, PEDMOVE_WALK, DEFAULT_TIME_BEFORE_WARP) ADVANCE_CUTSCENE() ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) IF GET_GAME_TIMER() > iDialogueTimer IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 4 ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2000, 5000) iDialogueLineCount[iDialogueStage]-- ENDIF ENDIF BREAK CASE 1 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_MCS3LI, "PRO_MCS3LI") ENDIF DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_AIM) //[MF] Fix for B* 2040862 //IF NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5299.9536, -5188.4478, 82.5183 - 0.5>>, <<0.5, 0.5, 3.0>>) //IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5299.907715, -5188.944336, 82.518318>>, <<5295.755371, -5188.944824, 85.518631>>, 4.0) IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeaveVault) OR (IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeaveVault) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneLeaveVault) > 0.75) ADVANCE_STAGE() ENDIF BREAK ENDSWITCH IF DOES_ENTITY_EXIST(objBag[BRAD_BAG_ANIM]) AND NOT IS_ENTITY_DEAD(objBag[BRAD_BAG_ANIM]) IF IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), objBag[BRAD_BAG_ANIM]) OR IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), objBag[BRAD_BAG_ANIM]) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) ENDIF ENDIF SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) SAFE_REMOVE_BLIP(blipCash) TASK_CLEAR_LOOK_AT(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ASSISTED_MOVEMENT_REMOVE_ROUTE("Pro_S1a") //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GET_TO_VAULT") STOP_AUDIO_SCENE("PROLOGUE_GET_TO_VAULT") ENDIF eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC BOOL bCinematicSwitch PROC cutsceneGuard() IF INIT_STAGE() //Replay SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayCutsceneGuard), "cutGuard") SET_SELECTOR_PED_PRIORITY(sSelectorPeds, NUMBER_OF_SELECTOR_PEDS, NUMBER_OF_SELECTOR_PEDS, NUMBER_OF_SELECTOR_PEDS) //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Guard Position IF NOT DOES_ENTITY_EXIST(pedGuard) SPAWN_PED(pedGuard, CSB_PROLSEC, <<5297.8311, -5186.6440, 85.7190 - 3.2>>, 91.9750) SET_PED_COMPONENT_VARIATION(pedGuard, PED_COMP_HEAD, 1, 0) SET_PED_COMPONENT_VARIATION(pedGuard, PED_COMP_TORSO, 1, 0) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, pedGuard, "PROGUARD") SET_MODEL_AS_NO_LONGER_NEEDED(CSB_PROLSEC) GIVE_WEAPON_TO_PED(pedGuard, wtPistol, INFINITE_AMMO, TRUE) SET_PED_DROPS_WEAPONS_WHEN_DEAD(pedGuard, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedGuard, TRUE) SET_PED_AS_ENEMY(pedGuard, TRUE) SET_PED_DIES_WHEN_INJURED(pedGuard, TRUE) STOP_PED_WEAPON_FIRING_WHEN_DROPPED(pedGuard) ENDIF SET_ENTITY_VISIBLE(pedGuard, TRUE) //Assisted // ASSISTED_MOVEMENT_REQUEST_ROUTE("Pro_S3") //Score PLAY_AUDIO(PROLOGUE_TEST_GUARD_HOSTAGE) //Radar bRadar = FALSE //Text //CLEAR_TEXT() CLEAR_PRINTS() SAFE_CLEAR_HELP() //Variable bCinematicSwitch = FALSE #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Cutscene IF bReplaySkip = FALSE REQUEST_CUTSCENE("pro_mcs_3_pt1") ENDIF // //Textures // REQUEST_STREAMED_TEXTURE_DICT("SplashScreens") //MichaelTSplash SET_PED_PRELOAD_VARIATION_DATA(playerPedMichael, PED_COMP_HAIR, 5, 0) #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() //Player Position CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SET_PED_POSITION(playerPedID, <<5299.9331, -5187.6924, 85.7184 - 3.2>>, 165.5154) //Trevor Position CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5297.2866, -5189.6323, 85.7187 - 3.2>>, 113.4281) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) PLAY_AUDIO(PROLOGUE_TEST_KILL_ONESHOT) //Rayfire rfVaultExplosion = GET_RAYFIRE_MAP_OBJECT(<<5298.8892, -5189.0869, 82.5182>>, 10.0, "DES_VaultDoor001") IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfVaultExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion) != RFMO_STATE_END SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfVaultExplosion, RFMO_STATE_ENDING) ENDIF ENDIF //Balaclava IF NOT DOES_ENTITY_EXIST(objBalaclava[MICHAEL_BALACLAVA]) objBalaclava[MICHAEL_BALACLAVA] = CREATE_OBJECT(PROP_MICHAEL_BALACLAVA, <<5296.55273, -5187.38867, 82.51867>>) ENDIF //Trolley IF bSwapTrolley = FALSE CREATE_MODEL_SWAP(<<5302.142, -5191.521, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) CREATE_MODEL_SWAP(<<5308.040, -5191.028, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) bSwapTrolley = TRUE ENDIF IF bReplaySkip = TRUE //Balaclava SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_SPECIAL, 0, 0) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIC_PRO_MASK_REMOVED, TRUE) //Bag SAFE_DELETE_OBJECT(objBag[BRAD_BAG_ANIM]) IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_STATIC]) objBag[BRAD_BAG_STATIC] = CREATE_OBJECT(PROP_CS_HEIST_BAG_02, <<5293.2598, -5192.2202, 82.6300>>) SET_ENTITY_COORDS(objBag[BRAD_BAG_STATIC], <<5293.259766, -5192.220215, 82.629997>>) SET_ENTITY_ROTATION(objBag[BRAD_BAG_STATIC], <<77.7600, -1.0800, -130.6800>>) FREEZE_ENTITY_POSITION(objBag[BRAD_BAG_STATIC], TRUE) RETAIN_ENTITY_IN_INTERIOR(objBag[BRAD_BAG_STATIC], intDepot) ENDIF //Object objWeapon[WEAPON_MICHAEL] = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(playerPedMichael) IF NOT DOES_ENTITY_EXIST(objWeapon[WEAPON_MICHAEL]) objGun = CREATE_OBJECT_NO_OFFSET(GET_WEAPONTYPE_MODEL(WEAPONTYPE_CARBINERIFLE), <<5295.052, -5188.801, 82.562>>) ELSE objGun = objWeapon[WEAPON_MICHAEL] SET_ENTITY_COORDS_NO_OFFSET(objGun, <<5295.052, -5188.801, 82.562>>) ENDIF SET_ENTITY_ROTATION(objGun, <<-85.792, -1.133, -92.236>>) FREEZE_ENTITY_POSITION(objGun, TRUE) //Michael REMOVE_ALL_PED_WEAPONS(playerPedID) TASK_PLAY_ANIM_ADVANCED(playerPedID, sAnimDictPrologue4_Base, "hold_head_loop_base_player0", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) RENDER_SCRIPT_CAMS(TRUE, FALSE) //Guard TASK_PLAY_ANIM_ADVANCED(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) SET_CURRENT_PED_WEAPON(pedGuard, wtPistol, TRUE) //Trevor SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5294.4834, -5191.2212, 82.5187>>, 329.4068) SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, TRUE) OPEN_SEQUENCE_TASK(seqMain) TASK_FORCE_MOTION_STATE(NULL, ENUM_TO_INT(MS_AIMING)) TASK_AIM_GUN_AT_COORD(NULL, <<5296.375000, -5187.973145, 83.838951 + 0.1>>, -1, TRUE) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) CLEAR_SEQUENCE_TASK(seqMain) //Player SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Radar bRadar = TRUE //Text CLEAR_TEXT() MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) UPDATE_PED_REFERENCES() ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedID, "TREVOR") TASK_AIM_GUN_AT_ENTITY(playerPedTrevor, pedGuard, -1, TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedTrevor, TRUE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0) RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) IF DOES_CAM_EXIST(camCinematic) SET_CAM_ACTIVE(camCinematic, FALSE) DESTROY_CAM(camCinematic) ENDIF IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) //AI and Behaviour SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 50) //Health SET_PED_SUFFERS_CRITICAL_HITS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_ENTITY_HEALTH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 400) //Weapons REMOVE_ALL_PED_WEAPONS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 0) //Anim FLOAT fAnimCurrentTime IF IS_ENTITY_PLAYING_ANIM(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard") fAnimCurrentTime = GET_ENTITY_ANIM_CURRENT_TIME(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard") ENDIF TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Base, "hold_head_loop_base_player0", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_TURN_OFF_COLLISION | AF_IGNORE_GRAVITY | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, fAnimCurrentTime) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF IS_ENTITY_PLAYING_ANIM(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard") SET_ENTITY_ANIM_CURRENT_TIME(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard", fAnimCurrentTime) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedGuard) ENDIF //Blips SAFE_ADD_BLIP_PED(blipMichael, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SAFE_REMOVE_BLIP(blipTrevor) //Misc SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_SPECIAL2, 12, 0) ENDIF //Variables iCutsceneStage = 5 SET_SELECTOR_PED_HINT(sSelectorPeds, SELECTOR_PED_TREVOR, TRUE) SET_PLAYER_FORCE_SKIP_AIM_INTRO(PLAYER_ID(), TRUE) ENDIF // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(1000) // ENDIF ENDIF ELSE //Request Cutscene Variations - pro_mcs_3_pt1 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_SecurityGuard_Grabs_mike", pedGuard) ENDIF IF iCutsceneStage > 0 AND bReplaySkip = FALSE AND NOT IS_CUTSCENE_PLAYING() IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF IF iCutsceneStage > 0 AND iCutsceneStage <= 4 IF IS_CUTSCENE_PLAYING() IF GET_CUTSCENE_TIME() > ROUND(8.000000 * 1000.0) IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_STATIC]) objBag[BRAD_BAG_STATIC] = CREATE_OBJECT(PROP_CS_HEIST_BAG_02, <<5293.2598, -5192.2202, 82.6300>>) SET_ENTITY_COORDS(objBag[BRAD_BAG_STATIC], <<5293.259766, -5192.220215, 82.629997>>) SET_ENTITY_ROTATION(objBag[BRAD_BAG_STATIC], <<77.7600, -1.0800, -130.6800>>) FREEZE_ENTITY_POSITION(objBag[BRAD_BAG_STATIC], TRUE) RETAIN_ENTITY_IN_INTERIOR(objBag[BRAD_BAG_STATIC], intDepot) ENDIF ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA(TRUE) //Cam STOP_CAM_SHAKING(camMain, TRUE) SET_CAM_PARAMS(camMain, <<5297.019531, -5186.303711, 84.227119>>, <<-7.860384, -0.000164, 165.093689>>, 24.0, 0, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE(camMain, 4.0) SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL(camMain, 1.0) SET_CAM_DOF_FNUMBER_OF_LENS(camMain, 2.0) SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL(camMain, 0.0) SET_GAMEPLAY_CAM_RELATIVE_HEADING(155.0 - GET_ENTITY_HEADING(playerPedID)) //GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(playerPedMichael), GET_ENTITY_COORDS(playerPedTrevor)) IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_STATIC]) objBag[BRAD_BAG_STATIC] = CREATE_OBJECT(PROP_CS_HEIST_BAG_02, <<5293.2598, -5192.2202, 82.6300>>) SET_ENTITY_COORDS(objBag[BRAD_BAG_STATIC], <<5293.259766, -5192.220215, 82.629997>>) SET_ENTITY_ROTATION(objBag[BRAD_BAG_STATIC], <<77.7600, -1.0800, -130.6800>>) FREEZE_ENTITY_POSITION(objBag[BRAD_BAG_STATIC], TRUE) RETAIN_ENTITY_IN_INTERIOR(objBag[BRAD_BAG_STATIC], intDepot) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") //Clear Help CLEAR_TEXT() //Balaclava SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_SPECIAL, 0, 0) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIC_PRO_MASK_REMOVED, TRUE) //Michael REMOVE_ALL_PED_WEAPONS(playerPedID) TASK_PLAY_ANIM_ADVANCED(playerPedID, sAnimDictPrologue4_Base, "hold_head_loop_base_player0", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedID) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("PRO_SecurityGuard_Grabs_mike") //Guard TASK_PLAY_ANIM_ADVANCED(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedGuard) SET_CURRENT_PED_WEAPON(pedGuard, wtPistol, TRUE) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") //Trevor SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<5294.4834, -5191.2212, 82.5187>>, 329.4068) SET_CURRENT_PED_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], wtCarbineRifle, TRUE) OPEN_SEQUENCE_TASK(seqMain) TASK_FORCE_MOTION_STATE(NULL, ENUM_TO_INT(MS_AIMING)) TASK_AIM_GUN_AT_COORD(NULL, <<5296.375000, -5187.973145, 83.838951 + 0.1>>, -1, TRUE) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], seqMain) CLEAR_SEQUENCE_TASK(seqMain) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF //Weapon IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_weapon") // SAFE_DELETE_OBJECT(objWeapon[WEAPON_MICHAEL]) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_weapon") GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_TREVOR], playerPedTrevor) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Security_guard_pistol") ENDIF ENDIF SWITCH iCutsceneStage CASE 0 IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() AND (HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(playerPedMichael) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeaveVault) OR (IS_SYNCHRONIZED_SCENE_RUNNING(sceneLeaveVault) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneLeaveVault) > 0.95)) REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedGuard, "PRO_SecurityGuard_Grabs_mike", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_MICHAEL] = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(playerPedMichael) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_MICHAEL], "Michaels_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_TREVOR] = CREATE_WEAPON_OBJECT_FROM_CURRENT_PED_WEAPON_WITH_COMPONENTS(playerPedTrevor) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_TREVOR], "Trevors_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) START_CUTSCENE(CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH) WAIT_WITH_DEATH_CHECKS(0) IF NOT IS_REPEAT_PLAY_ACTIVE() SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) ENDIF //Balaclava IF NOT DOES_ENTITY_EXIST(objBalaclava[MICHAEL_BALACLAVA]) objBalaclava[MICHAEL_BALACLAVA] = CREATE_OBJECT(PROP_MICHAEL_BALACLAVA, <<5296.55273, -5187.38867, 82.51867>>) ENDIF //Trolley IF bSwapTrolley = FALSE CREATE_MODEL_SWAP(<<5302.142, -5191.521, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) CREATE_MODEL_SWAP(<<5308.040, -5191.028, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) bSwapTrolley = TRUE ENDIF //Bag SAFE_DELETE_OBJECT(objBag[BRAD_BAG_ANIM]) //Clear Area CLEAR_AREA(<<5298.8394, -5189.1509, 85.7183 - 3.2>>, 10.0, TRUE) //Balaclava // SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_HAIR, 5, 0) // SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_SPECIAL, 0, 0) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIC_PRO_MASK_REMOVED, TRUE) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF WAS_CUTSCENE_SKIPPED() PLAY_AUDIO(PROLOGUE_TEST_KILL_ONESHOT) iCutsceneStage = 4 ENDIF //Sound // REQUEST_SCRIPT_AUDIO_BANK("CHAR_INTRO_MICHAEL_01") IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_PROLOGUE_TEST_GUARD_HOSTAGE_OS) IF GET_CUTSCENE_TIME() > ROUND(2.000000 * 1000.0) PLAY_AUDIO(PROLOGUE_TEST_GUARD_HOSTAGE_OS) SET_LABEL_AS_TRIGGERED(TRIGGER_PROLOGUE_TEST_GUARD_HOSTAGE_OS, TRUE) ENDIF ENDIF IF GET_CUTSCENE_TIME() > ROUND(2.234332 * 1000.0) AND NOT WAS_CUTSCENE_SKIPPED() OR NOT IS_CUTSCENE_PLAYING() //Balaclava SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_HAIR, 5, 0) //SET_PED_COMPONENT_VARIATION(playerPedID, PED_COMP_SPECIAL, 0, 0) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIC_PRO_MASK_REMOVED, TRUE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 2 IF NOT WAS_CUTSCENE_SKIPPED() ADVANCE_CUTSCENE() ELSE PLAY_AUDIO(PROLOGUE_TEST_KILL_ONESHOT) iCutsceneStage = 4 ENDIF BREAK CASE 3 IF WAS_CUTSCENE_SKIPPED() PLAY_AUDIO(PROLOGUE_TEST_KILL_ONESHOT) iCutsceneStage = 4 ENDIF IF GET_CUTSCENE_TIME() > ROUND(11.621325 * 1000.0) AND NOT WAS_CUTSCENE_SKIPPED() OR NOT IS_CUTSCENE_PLAYING() //CLEAR_TEXT() // //PRINT_HELP_ADV(PROHLP_SWITCH1, "PROHLP_SWITCH1") //Camera coordinates to match cutscene //SET_CAM_PARAMS(_cams_index,<<5292.046875,-5186.548340,83.562843>>,<<-1.693416,0.000000,-125.738396>>,40.000000) //SET_CAM_PARAMS(_cams_index,<<5292.147461,-5186.621094,83.559174>>,<<-1.693388,-0.000014,-125.738380>>,40.000000) ADVANCE_CUTSCENE() ENDIF BREAK CASE 4 IF HAS_CUTSCENE_FINISHED() IF NOT DOES_ENTITY_EXIST(objLightingRig[LIGHTING_RIG_GUARD]) objLightingRig[LIGHTING_RIG_GUARD] = CREATE_OBJECT(PROP_2ND_HOSTAGE_SCENE, <<5297.717, -5188.909, 80.549 + 1.0>>) FORCE_ROOM_FOR_ENTITY(objLightingRig[LIGHTING_RIG_GUARD], intDepot, HASH("V_CashD_side")) ENDIF REPLAY_STOP_EVENT() SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(PRO_MICHAEL_SAVE_TIME) //Player SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Radar bRadar = TRUE //Text CLEAR_TEXT() //Object IF NOT DOES_ENTITY_EXIST(objWeapon[WEAPON_MICHAEL]) objGun = CREATE_OBJECT_NO_OFFSET(GET_WEAPONTYPE_MODEL(WEAPONTYPE_CARBINERIFLE), <<5295.052, -5188.801, 82.562>>) ELSE objGun = objWeapon[WEAPON_MICHAEL] SET_ENTITY_COORDS_NO_OFFSET(objGun, <<5295.052, -5188.801, 82.562>>) ENDIF SET_ENTITY_ROTATION(objGun, <<-85.792, -1.133, -92.236>>) FREEZE_ENTITY_POSITION(objGun, TRUE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE,DEFAULT,FALSE) //B* 2170077: Don't re-enable blinders before switching to Trevor SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CashD_vault") SET_CAM_NEAR_CLIP(camMain, 0.5) //Switch Selector ENABLE_SELECTOR() SET_SELECTOR_PED_HINT(sSelectorPeds, SELECTOR_PED_TREVOR, TRUE) ADVANCE_CUTSCENE() ENDIF BREAK CASE 5 //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_SWITCH_TO_TREVOR") START_AUDIO_SCENE("PROLOGUE_SWITCH_TO_TREVOR") ENDIF IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF NOT HAS_LABEL_BEEN_TRIGGERED(FirstSwitchMade) IF IS_SELECTOR_UI_BUTTON_PRESSED() IF TIMERA() > 500 IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_SWITCH4) IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_SWITCH4") SAFE_CLEAR_HELP() PRINTLN("PROHLP_SWITCH4 printing") PRINT_HELP_FOREVER("PROHLP_SWITCH4") //PRINT_HELP_ADV_POS("PROHLP_SWITCH3", <<0.51, 0.3, 0.0>>, NULL, TRUE, HELP_TEXT_SOUTH, 5500) //<<0.184, 0.6175, 0.0>> ENDIF ENDIF ENDIF ELSE IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_SWITCH2") //IF NOT IS_THIS_FLOATING_HELP_BEING_DISPLAYED("PROHLP_SWITCH2") IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_SWITCH2") SAFE_CLEAR_HELP() PRINTLN("PROHLP_SWITCH2 printing") PRINT_HELP_FOREVER("PROHLP_SWITCH2") //PRINT_HELP_ADV_POS("PROHLP_SWITCH2", VECTOR_ZERO, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE, HELP_TEXT_SOUTH, -1) ENDIF ENDIF SETTIMERA(0) ENDIF ENDIF 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 HAS_LABEL_BEEN_TRIGGERED(GuardShootMichael) IF NOT IS_PED_INJURED(pedGuard) IF NOT DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF NOT IS_PED_INJURED(pedGuard) CLEAR_PED_TASKS(pedGuard) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue4_Fail, "KILL_Michael_Guard", sceneGuardAmbushPos, sceneGuardAmbushRot, NORMAL_BLEND_IN, WALK_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.133, EULER_YXZ, AIK_DISABLE_LEG_IK) TASK_COMBAT_PED(NULL, sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedGuard, seqMain) CLEAR_SEQUENCE_TASK(seqMain) SET_PED_RELATIONSHIP_GROUP_HASH(pedGuard, relGroupEnemy) SET_PED_KEEP_TASK(pedGuard, TRUE) ENDIF ENDIF SET_PED_SHOOTS_AT_COORD(pedGuard, GET_PED_BONE_COORDS(playerPedMichael, BONETAG_HEAD, VECTOR_ZERO)) SHOOT_SINGLE_BULLET_BETWEEN_COORDS(<<5296.7, -5188.0, 84.1>>, GET_PED_BONE_COORDS(playerPedMichael, BONETAG_HEAD, VECTOR_ZERO), 1000, TRUE, WEAPONTYPE_PISTOL) SET_ENTITY_HEALTH(playerPedMichael, 0) IF NOT IS_PED_INJURED(pedGuard) CLEAR_PED_TASKS(pedGuard) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue4_Fail, "KILL_Michael_Guard", sceneGuardAmbushPos, sceneGuardAmbushRot, NORMAL_BLEND_IN, WALK_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.133, EULER_YXZ, AIK_DISABLE_LEG_IK) TASK_COMBAT_PED(NULL, playerPedID) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedGuard, seqMain) CLEAR_SEQUENCE_TASK(seqMain) SET_PED_RELATIONSHIP_GROUP_HASH(pedGuard, relGroupEnemy) ENDIF ENDIF ENDIF IF (IS_PED_SHOOTING(playerPedID) AND NOT IS_PED_INJURED(pedGuard)) OR (HAS_LABEL_BEEN_TRIGGERED(MichaelWillDie) AND GET_GAME_TIMER() > iDialogueTimer) IF NOT IS_PED_INJURED(playerPedMichael) IF GET_ENTITY_HEALTH(playerPedMichael) > 101 SET_PED_ACCURACY(pedGuard, 100) SET_PED_COMBAT_ATTRIBUTES(pedGuard, CA_PERFECT_ACCURACY, TRUE) //WAIT_WITH_DEATH_CHECKS(0) //Double shot, for good measure SET_LABEL_AS_TRIGGERED(GuardShootMichael, TRUE) ENDIF ENDIF ENDIF IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF NOT DOES_CAM_EXIST(sCamDetails.camID) IF NOT IS_PED_INJURED(pedGuard) IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIMa) AND NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIMb) AND NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIMc) SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayAimAtGuard), "cutGuard(AimAtGuard)") SET_PED_DIES_WHEN_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) //TASK_AIM_GUN_AT_ENTITY(playerPedID, pedGuard, 2000, TRUE) //CLEAR_PED_TASKS(playerPedID) IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_Idle4") txtConversationPoint = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION() ENDIF SAFE_CLEAR_HELP() //CLEAR_TEXT() KILL_FACE_TO_FACE_CONVERSATION() IF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 0 PRINT_HELP_ADV(PROHLP_FREEAIMb, "PROHLP_FREEAIMb") ELIF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 1 PRINT_HELP_ADV(PROHLP_FREEAIMc, "PROHLP_FREEAIMc") ELIF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 2 PRINT_HELP_ADV(PROHLP_FREEAIMc, "PROHLP_FREEAIMc") ENDIF SAFE_ADD_BLIP_PED(blipGuard, pedGuard) SET_BLIP_PRIORITY(blipGuard, BLIPPRIORITY_HIGH_HIGHEST) //Radar bRadar = TRUE DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) bReplaySkip = FALSE SETTIMERB(0) ENDIF IF GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_AIM_GUN_AT_ENTITY) = PERFORMING_TASK OR GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_AIM_GUN_AT_COORD) = PERFORMING_TASK OR GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK INT iTolerance iTolerance = 2 INT iLTSx, iLTSy, iRTSx, iRTSy GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) IF (iLTSx < -iTolerance OR iLTSx > iTolerance) OR (iLTSy < -iTolerance OR iLTSy > iTolerance) OR (iRTSx < -iTolerance OR iRTSx > iTolerance) OR (iRTSy < -iTolerance OR iRTSy > iTolerance) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_ATTACK) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_ATTACK2) CLEAR_PED_TASKS(playerPedID) #IF IS_DEBUG_BUILD PRINTLN("STOP AIMING NOW!") #ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIMa) OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIMb) OR HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIMc) INT iTolerance iTolerance = 8 INT iLTSx, iLTSy, iRTSx, iRTSy GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIM2) AND (NOT IS_HELP_MESSAGE_BEING_DISPLAYED() OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)) PRINT_HELP_ADV(PROHLP_FREEAIM2, "PROHLP_FREEAIM2", TRUE, DEFAULT_HELP_TEXT_TIME - 3000, 4000) SETTIMERB(0) ELIF (HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIM2) AND NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIM3)) AND (NOT IS_HELP_MESSAGE_BEING_DISPLAYED() OR (TIMERB() > 2000 AND ((iRTSx < -iTolerance OR iRTSx > iTolerance) OR (iRTSy < -iTolerance OR iRTSy > iTolerance)))) PRINT_HELP_ADV(PROHLP_FREEAIM3, "PROHLP_FREEAIM3", TRUE, DEFAULT_HELP_TEXT_TIME - 5000) SETTIMERB(0) ELIF (HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIM2) AND HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIM3) AND NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIM4)) AND (NOT IS_HELP_MESSAGE_BEING_DISPLAYED() OR IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SNIPER_ZOOM)) PRINT_HELP_ADV(PROHLP_FREEAIM4, "PROHLP_FREEAIM4") ENDIF ENDIF ELSE //Sound sIDHeadShot = GET_SOUND_ID() PLAY_SOUND_FROM_COORD(sIDHeadShot, "Guard_Headshot", <<5296.7, -5188.0, 84.1>>, "Prologue_Sounds") //Gun SET_PED_DROPS_WEAPON(pedGuard) //Score PLAY_AUDIO(PROLOGUE_TEST_HEAD_TO_SECURITY_ROOM_MA) //Stats INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, PRO_MICHAEL_SAVE_TIME) //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Michael SET_PED_TO_LOAD_COVER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Shot, "wipe_blood_player0", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, WALK_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.0, EULER_YXZ, AIK_DISABLE_LEG_IK) SET_RAGDOLL_BLOCKING_FLAGS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], RBF_PLAYER_IMPACT) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) APPLY_PED_BLOOD_SPECIFIC(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], ENUM_TO_INT(PDZ_HEAD), 0.424, 0.671, 310.632, 0.7, 3, 0.0, "Scripted_Ped_Splash_Back") //Trevor TASK_PLAY_ANIM(playerPedID, sAnimDictPrologue4_PlayerPause, "shot_guard_player2", INSTANT_BLEND_IN, WALK_BLEND_OUT, -1, AF_DEFAULT, 0.0, FALSE, AIK_DISABLE_LEG_IK) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedID) //Brad SET_PED_TO_LOAD_COVER(pedBrad, TRUE) OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue4_Shot, "wipe_blood_brad", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, WALK_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.133, EULER_YXZ, AIK_DISABLE_LEG_IK) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedBrad, seqMain) CLEAR_SEQUENCE_TASK(seqMain) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) //Blip SAFE_REMOVE_BLIP(blipGuard) //Radar bRadar = TRUE //Objective CLEAR_TEXT() CREATE_CONVERSATION_ADV(PRO_Rescued, "PRO_Rescued") REPLAY_RECORD_BACK_FOR_TIME(1.0, 4.0) //Ragdoll IF NOT SAFE_IS_PED_DEAD(pedGuard) SET_PED_CAN_RAGDOLL(pedGuard, TRUE) CLEAR_PED_TASKS(pedGuard) ENDIF WAIT_WITH_DEATH_CHECKS(10) //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SET_PED_PRELOAD_VARIATION_DATA(pedBrad, PED_COMP_SPECIAL2, 1, 0) SAFE_DELETE_OBJECT(objLightingRig[LIGHTING_RIG_GUARD]) ADVANCE_CUTSCENE() 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 NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Idle4) CREATE_CONVERSATION_ADV(PRO_Idle4, "PRO_Idle4") ELSE IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_GUARD) IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR PRINT_ADV(PRO_GUARD, "PRO_GUARD", DEFAULT_GOD_TEXT_TIME - 4000) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_shoot, "PRO_shoot", CONV_PRIORITY_LOW, TRUE, DO_NOT_DISPLAY_SUBTITLES) ENDIF ELSE IF GET_GAME_TIMER() > iDialogueTimer IF NOT HAS_LABEL_BEEN_TRIGGERED(MichaelWillDie) iDialogueTimer = GET_GAME_TIMER() + 30000 SET_LABEL_AS_TRIGGERED(MichaelWillDie, TRUE) ENDIF ENDIF ENDIF ELSE IF bCinematicSwitch = FALSE IF NOT IS_STRING_NULL_OR_EMPTY(txtConversationPoint) CREATE_CONVERSATION_FROM_SPECIFIC_LINE_ADV("PRO_Idle4", txtConversationPoint) txtConversationPoint = NULL_STRING() ELSE IF GET_GAME_TIMER() > iDialogueTimer IF NOT HAS_LABEL_BEEN_TRIGGERED(MichaelWillDie) iDialogueTimer = GET_GAME_TIMER() + 20000 SET_LABEL_AS_TRIGGERED(MichaelWillDie, TRUE) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //Disable Player Movement DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UP_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LEFT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_RIGHT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_DOWN_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UD) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LR) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) BREAK CASE 6 REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2182867 IF DOES_ENTITY_EXIST(objGun) IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Shot, "wipe_blood_player0") IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Shot, "wipe_blood_player0") >= 0.396 IF NOT HAS_PED_GOT_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtCarbineRifle) GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtCarbineRifle, 500, TRUE) ENDIF SAFE_DELETE_OBJECT(objGun) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(objBag[BRAD_BAG_STATIC]) IF IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad") IF GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad") >= 0.318 //Bag IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_ANIM]) objBag[BRAD_BAG_ANIM] = CREATE_OBJECT(P_LD_HEIST_BAG_S_1, <<5293.2598, -5192.2202, 82.6300>>) ATTACH_ENTITY_TO_ENTITY(objBag[BRAD_BAG_ANIM], pedBrad, GET_PED_BONE_INDEX(pedBrad, BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO) ENDIF IF NOT DOES_ENTITY_EXIST(objBag[BRAD_BAG_ANIM_STRAP]) objBag[BRAD_BAG_ANIM_STRAP] = CREATE_OBJECT(P_CSH_STRAP_01_S, <<5293.2598, -5192.2202, 82.6300>>) ATTACH_ENTITY_TO_ENTITY(objBag[BRAD_BAG_ANIM_STRAP], pedBrad, GET_PED_BONE_INDEX(pedBrad, BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO) ENDIF PLAY_ENTITY_ANIM(objBag[BRAD_BAG_ANIM], "wipe_blood_bag", sAnimDictPrologue4_Shot, INSTANT_BLEND_IN, FALSE, FALSE, FALSE, GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad")) PLAY_ENTITY_ANIM(objBag[BRAD_BAG_ANIM_STRAP], "wipe_blood_strap", sAnimDictPrologue4_Shot, INSTANT_BLEND_IN, FALSE, FALSE, FALSE, GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad")) SAFE_DELETE_OBJECT(objBag[BRAD_BAG_STATIC]) REPLAY_RECORD_BACK_FOR_TIME(3.5, 4.5, REPLAY_IMPORTANCE_HIGH) ENDIF ENDIF ELIF DOES_ENTITY_EXIST(objBag[BRAD_BAG_ANIM]) IF IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad") IF GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad") >= 0.465 IF HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(pedBrad) //Brad - Duffle Bag SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 1, 0) WAIT_WITH_DEATH_CHECKS(0) SAFE_DELETE_OBJECT(objBag[BRAD_BAG_ANIM]) SAFE_DELETE_OBJECT(objBag[BRAD_BAG_ANIM_STRAP]) ENDIF ENDIF ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Shot, "wipe_blood_player0") IF GET_ENTITY_ANIM_CURRENT_TIME(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Shot, "wipe_blood_player0") >= 0.9 //0.811 //0.65 IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot) - <<0.0, 0.0, 1.0>>) covPoint[0] = ADD_COVER_POINT(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot) - <<0.0, 0.0, 1.0>>, -GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot)), COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_180) ENDIF CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) OPEN_SEQUENCE_TASK(seqMain) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot), PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP, 2.0, ENAV_NO_STOPPING) TASK_PUT_PED_DIRECTLY_INTO_COVER(NULL, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot), 1000, FALSE, 0.9, TRUE, TRUE, covPoint[0], TRUE) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot, REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seqMain) CLEAR_SEQUENCE_TASK(seqMain) FORCE_PED_MOTION_STATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], MS_ON_FOOT_IDLE, TRUE, FAUS_DEFAULT) ENDIF ENDIF IF IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad") IF GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad") >= 0.781 //0.95 IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot) - <<0.0, 0.0, 1.0>>) covPoint[1] = ADD_COVER_POINT(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot) - <<0.0, 0.0, 1.0>>, -GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot)) - 90.0, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_180) ENDIF CLEAR_PED_TASKS(pedBrad) OPEN_SEQUENCE_TASK(seqMain) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot), PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP, 2.0, ENAV_NO_STOPPING) TASK_PUT_PED_DIRECTLY_INTO_COVER(NULL, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot), 1000, FALSE, 0.9, TRUE, TRUE, covPoint[1], TRUE) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedBrad, seqMain) CLEAR_SEQUENCE_TASK(seqMain) FORCE_PED_MOTION_STATE(pedBrad, MS_ON_FOOT_RUN, TRUE, FAUS_DEFAULT) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(shot_guard_player2) IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue4_PlayerPause, "shot_guard_player2") IF GET_ENTITY_ANIM_CURRENT_TIME(playerPedID, sAnimDictPrologue4_PlayerPause, "shot_guard_player2") >= 0.65 //0.5 INT iTolerance iTolerance = 8 INT iLTSx, iLTSy, iRTSx, iRTSy GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) IF (iLTSx < -iTolerance OR iLTSx > iTolerance) OR (iLTSy < -iTolerance OR iLTSy > iTolerance) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) CLEAR_PED_TASKS(playerPedID) FORCE_PED_MOTION_STATE(playerPedID, MS_ON_FOOT_IDLE) SET_LABEL_AS_TRIGGERED(shot_guard_player2, TRUE) ENDIF ENDIF ENDIF ENDIF SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) IF NOT IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Shot, "wipe_blood_player0") AND NOT IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue4_Shot, "wipe_blood_brad") AND NOT IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue4_PlayerPause, "shot_guard_player2") ADVANCE_STAGE() ENDIF BREAK ENDSWITCH IF bCinematicSwitch = TRUE //Don't clear dialogue CLEAR_PRINTS() SAFE_CLEAR_HELP(TRUE) SET_LABEL_AS_TRIGGERED(PROHLP_SWITCH2, TRUE) SET_LABEL_AS_TRIGGERED(PROHLP_SWITCH3, TRUE) SET_LABEL_AS_TRIGGERED(PROHLP_SWITCH4, TRUE) iDialogueTimer = GET_GAME_TIMER() + 20000 SET_LABEL_AS_TRIGGERED(MichaelWillDie, FALSE) IF NOT DOES_CAM_EXIST(camCinematic) camCinematic = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) ENDIF SET_CAM_NEAR_CLIP(camCinematic, 0.5) SET_CAM_MOTION_BLUR_STRENGTH(camCinematic, 0.5) VECTOR vStartCoord, vStartRot, vEndCoord, vEndRot, vStartTangent, vEndTangent FLOAT fStartFov, fEndFov vStartCoord = GET_CAM_COORD(camMain) vStartRot = GET_CAM_ROT(camMain) vEndCoord = <<5293.889648, -5193.047363, 84.128967>> vEndRot = <<0.0, 0.0, 329.96875>> vStartTangent = <<-9.213379, 0.828125, 2.509613>> vEndTangent = <<7.010742 - 3.0, -3.646972 - 0.75, -2.416809>> fStartFov = GET_CAM_FOV(camMain) fEndFov = 35.0 SET_CAM_PARAMS(camCinematic, vStartCoord, vStartRot, fStartFov) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) //HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) WAIT_WITH_DEATH_CHECKS(0) SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CashD_vault") //Score PLAY_AUDIO(PROLOGUE_TEST_GUARD_SWITCH) FLOAT i, ii WHILE i <= 45 SET_CAM_PARAMS(camCinematic, /*Pos*/ HERMITE_CURVE(vStartCoord, vStartTangent, vEndCoord, vEndTangent, 0, 45, i), /*Rot*/ HERMITE_CURVE(vStartRot, vStartTangent, vEndRot, vEndTangent, 0, 45, i), /*Fov*/ GET_INTERP_POINT_FLOAT(fStartFov, fEndFov, 0, 45, i)) i = i +@ (ii * 10) IF i < 2.0 IF ii < 1.0 ii += 0.1 ENDIF ELIF i > 43.0 IF ii > 0.2 //Never let speed fall below 0.1 ii -= 0.1 ENDIF ENDIF HIDE_HUD_AND_RADAR_THIS_FRAME() //HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) //Disable Player Movement DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UP_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LEFT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_RIGHT_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_DOWN_ONLY) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UD) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LR) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE bCinematicSwitch = FALSE ENDIF //SWITCH IF NOT IS_PED_INJURED(pedGuard) SET_PED_RESET_FLAG(playerPedID, PRF_FORCEPEDTOSTRAFE, TRUE) ENDIF BOOL bPostSwitchCam_FP_Setup_Complete IF iCutsceneStage > 4 IF NOT sCamDetails.bRun IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL IF UPDATE_SELECTOR_HUD(sSelectorPeds) //Returns TRUE when the player has made a selection IF sSelectorPeds.eNewSelectorPed = SELECTOR_PED_TREVOR INFORM_MISSION_STATS_OF_INCREMENT(PRO_SWITCHES) sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed] sCamDetails.bRun = TRUE STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP() SET_PLAYER_FORCE_SKIP_AIM_INTRO(PLAYER_ID(), TRUE) SET_LABEL_AS_TRIGGERED(PROHLP_SWITCH2, TRUE) SET_LABEL_AS_TRIGGERED(PROHLP_SWITCH3, TRUE) SET_LABEL_AS_TRIGGERED(PROHLP_SWITCH4, TRUE) SET_LABEL_AS_TRIGGERED(FirstSwitchMade, TRUE) SAFE_CLEAR_HELP() iDialogueTimer = GET_GAME_TIMER() + 20000 SET_LABEL_AS_TRIGGERED(MichaelWillDie, FALSE) //Score PLAY_AUDIO(PROLOGUE_TEST_GUARD_SWITCH) //bCinematicSwitch = TRUE //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_SWITCH_TO_TREVOR") START_AUDIO_SCENE("PROLOGUE_SWITCH_TO_TREVOR") ENDIF ENDIF ENDIF ENDIF ELSE IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED_SHORT_RANGE(sCamDetails) HIDE_HUD_AND_RADAR_THIS_FRAME() IF sCamDetails.bOKToSwitchPed IF NOT sCamDetails.bPedSwitched IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) UPDATE_PED_REFERENCES() VECTOR vTrevorSwitchCamAimCoord = <<5297.4, -5186.3, 84.0>> TASK_AIM_GUN_AT_COORD(playerPedID, vTrevorSwitchCamAimCoord, 3000, TRUE) SET_PLAYER_SIMULATE_AIMING(PLAYER_ID(), TRUE) WHILE GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR //HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedID, "TREVOR") SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0) RENDER_SCRIPT_CAMS(FALSE, TRUE, 500, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) //AI and Behaviour SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 50) //Health SET_PED_SUFFERS_CRITICAL_HITS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_ENTITY_HEALTH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 400) //Weapons REMOVE_ALL_PED_WEAPONS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 0) //Anim FLOAT fAnimCurrentTime IF IS_ENTITY_PLAYING_ANIM(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard") fAnimCurrentTime = GET_ENTITY_ANIM_CURRENT_TIME(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard") ENDIF TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue4_Base, "hold_head_loop_base_player0", sceneGuardAmbushPos, sceneGuardAmbushRot, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_TURN_OFF_COLLISION | AF_IGNORE_GRAVITY | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, fAnimCurrentTime) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF IS_ENTITY_PLAYING_ANIM(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard") SET_ENTITY_ANIM_CURRENT_TIME(pedGuard, sAnimDictPrologue4_Base, "hold_head_loop_base_guard", fAnimCurrentTime) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedGuard) ENDIF //Blips SAFE_ADD_BLIP_PED(blipMichael, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SAFE_REMOVE_BLIP(blipTrevor) //Misc SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_SPECIAL2, 12, 0) ENDIF sCamDetails.bPedSwitched = TRUE ENDIF ENDIF ENDIF ELSE IF NOT bPostSwitchCam_FP_Setup_Complete //[MF] - Fix for First Person Weapon pop - B* 2066820 IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON IF NOT IS_ENTITY_DEAD(playerPedID) PRINTLN("[MF] Performing post Switch FP cam aiming setup....") CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) FORCE_PED_MOTION_STATE(playerPedID, MS_AIMING, TRUE, FAUS_DEFAULT, TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedID, true) ENDIF ENDIF bPostSwitchCam_FP_Setup_Complete = TRUE ENDIF ENDIF ENDIF ENDIF //HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, PRO_MICHAEL_SAVE_TIME) SET_GAME_PAUSED(FALSE) CLEAR_SELECTOR_PED_PRIORITY(sSelectorPeds) SAFE_DELETE_OBJECT(objLightingRig[LIGHTING_RIG_GUARD]) //Sound IF sIDHeadShot != -1 STOP_SOUND(sIDHeadShot) RELEASE_SOUND_ID(sIDHeadShot) sIDHeadShot = -1 ENDIF sCamDetails.bPedSwitched = FALSE sCamDetails.bRun = FALSE SAFE_REMOVE_BLIP(blipGuard) RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) STOP_CAM_SHAKING(camMain, TRUE) IF DOES_CAM_EXIST(camCinematic) SET_CAM_ACTIVE(camCinematic, FALSE) DESTROY_CAM(camCinematic) ENDIF INT i REPEAT COUNT_OF(objWeapon) i SAFE_DELETE_OBJECT(objWeapon[i]) ENDREPEAT IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) UPDATE_PED_REFERENCES() ENDIF ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedID, "TREVOR") IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) //AI and Behaviour SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_PED_ACCURACY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 50) //Health SET_PED_SUFFERS_CRITICAL_HITS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_ENTITY_HEALTH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], 400) SET_PED_DIES_WHEN_INJURED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) //Weapons REMOVE_ALL_PED_WEAPONS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) //Blips SAFE_ADD_BLIP_PED(blipMichael, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SAFE_REMOVE_BLIP(blipTrevor) //Misc SET_PED_CAN_BE_TARGETTED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) //Balaclava SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_SPECIAL, 0, 0) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MIC_PRO_MASK_REMOVED, TRUE) SET_PED_COMPONENT_VARIATION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], PED_COMP_SPECIAL2, 12, 0) IF NOT HAS_PED_GOT_WEAPON(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtCarbineRifle) GIVE_WEAPON_TO_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], wtCarbineRifle, 500, TRUE) ENDIF CLEAR_PED_TASKS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_TO_LOAD_COVER(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot) - <<0.0, 0.0, 1.0>>) covPoint[0] = ADD_COVER_POINT(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot) - <<0.0, 0.0, 1.0>>, -GET_HEADING_FROM_VECTOR(GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot)), COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_180) ENDIF OPEN_SEQUENCE_TASK(seqMain) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot), PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP, 2.0, ENAV_NO_STOPPING) TASK_PUT_PED_DIRECTLY_INTO_COVER(NULL, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot), 1000, FALSE, 0.9, TRUE, TRUE, covPoint[0], TRUE) TASK_PLAY_ANIM_ADVANCED(NULL, sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot, REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF SAFE_REMOVE_BLIP(blipTrevor) SAFE_DELETE_OBJECT(objGun) SAFE_DELETE_OBJECT(objWeapon[WEAPON_MICHAEL]) SAFE_DELETE_OBJECT(objBag[BRAD_BAG_STATIC]) SAFE_DELETE_OBJECT(objBag[BRAD_BAG_ANIM]) SAFE_DELETE_OBJECT(objBag[BRAD_BAG_ANIM_STRAP]) IF NOT IS_PED_INJURED(pedGuard) CLEAR_PED_TASKS_IMMEDIATELY(pedGuard) SET_PED_CAN_RAGDOLL(pedGuard, TRUE) EXPLODE_PED_HEAD(pedGuard) ENDIF //Brad - Duffle Bag SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 1, 0) RELEASE_PED_PRELOAD_VARIATION_DATA(pedBrad) RELEASE_PED_PRELOAD_VARIATION_DATA(playerPedMichael) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC BlastDoors() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") //Switch Selector ENABLE_SELECTOR() //Cover SET_PED_TO_LOAD_COVER(playerPedMichael, FALSE) SET_PED_TO_LOAD_COVER(pedBrad, FALSE) //Pathing SET_PED_STEERS_AROUND_PEDS(playerPedMichael, FALSE) //Radar bRadar = TRUE //Assisted // ASSISTED_MOVEMENT_REQUEST_ROUTE("Pro_S4") //Objective SAFE_ADD_BLIP_LOCATION(blipDestination, <<5313.5903, -5177.6826, 82.5186>>) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_SWITCH_TO_TREVOR") START_AUDIO_SCENE("PROLOGUE_SWITCH_TO_TREVOR") ENDIF SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) #IF IS_DEBUG_BUILD ENDIF #ENDIF //Rayfire rfSecDoorExplosion = GET_RAYFIRE_MAP_OBJECT(<<5318.2, -5185.1, 83.7>>, 10.0, "des_prologue_door") IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfSecDoorExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion) != RFMO_STATE_START SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion, RFMO_STATE_STARTING) ENDIF ENDIF IF SKIPPED_STAGE() //Trevor SET_PED_POSITION(playerPedID, <<5306.5869, -5179.8296, 82.5187>>, 269.0729, FALSE) SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) //Michael CLEAR_PED_TASKS_IMMEDIATELY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot, REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) //Brad CLEAR_PED_TASKS_IMMEDIATELY(pedBrad) TASK_PLAY_ANIM_ADVANCED(pedBrad, sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_LOOPING | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0") OR IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) SET_PED_CAPSULE(playerPedMichael, 0.75) ENDIF IF IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], <<5294.823730, -5194.944824, 82.518829>>, <<5294.976074, -5177.934570, 85.518784>>, 4.0) OR IS_ENTITY_IN_ANGLED_AREA(pedBrad, <<5294.823730, -5194.944824, 82.518829>>, <<5294.976074, -5177.934570, 85.518784>>, 4.0) SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) SET_PED_RESET_FLAG(playerPedID, PRF_DisablePlayerAutoVaulting, TRUE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) ELSE SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_RUN) IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) PRINT_HELP_ADV(PROHLP_RUN, "PROHLP_RUN_KM") ELSE // IF GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) = CAM_VIEW_MODE_FIRST_PERSON // //First person run help text // //Running not enabled in first person in interior // //PRINT_HELP_ADV(PROHLP_RUN, "PROHLP_RUN_FP") // ELSE IF GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) <> CAM_VIEW_MODE_FIRST_PERSON PRINT_HELP_ADV(PROHLP_RUN, "PROHLP_RUN") ENDIF // ENDIF ENDIF ENDIF IF IS_PC_VERSION() IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_RUN_KM") IF IS_PED_RUNNING(playerPedTrevor) IF GET_GAME_TIMER() > iHelpTimer SAFE_CLEAR_HELP() ENDIF ENDIF ENDIF ENDIF IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_RUN") IF IS_PED_RUNNING(playerPedTrevor) IF GET_GAME_TIMER() > iHelpTimer SAFE_CLEAR_HELP() ENDIF ENDIF ENDIF IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_RUN_FP") IF IS_PED_RUNNING(playerPedTrevor) IF GET_GAME_TIMER() > iHelpTimer SAFE_CLEAR_HELP() ENDIF ENDIF ENDIF IF NOT IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot), <<1.0, 1.0, 2.0>>) iBlendInTimer[BLEND_IN_MICHAEL] = GET_GAME_TIMER() + 1500 ENDIF IF NOT IS_ENTITY_AT_COORD(pedBrad, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot), <<1.0, 1.0, 2.0>>) iBlendInTimer[BLEND_IN_BRAD] = GET_GAME_TIMER() + 1500 ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(BlastDoorsReady) IF IS_ENTITY_PLAYING_ANIM(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0") //IF IS_ENTITY_AT_COORD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", sceneBlastDoorsPos, sceneBlastDoorsRot), <<1.0, 1.0, 2.0>>) AND IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad") //AND IS_ENTITY_AT_COORD(pedBrad, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", sceneBlastDoorsPos, sceneBlastDoorsRot), <<1.0, 1.0, 2.0>>) AND GET_GAME_TIMER() > iBlendInTimer[BLEND_IN_MICHAEL] AND GET_GAME_TIMER() > iBlendInTimer[BLEND_IN_BRAD] IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) sceneBlastDoors = CREATE_SYNCHRONIZED_SCENE(sceneBlastDoorsPos, sceneBlastDoorsRot) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sceneBlastDoors, sAnimDictPrologue5_Start, "set_c4_start_loop_a_player0", SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION, SLOW_BLEND_IN) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneBlastDoors, sAnimDictPrologue5_Start, "set_c4_start_loop_a_brad", SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION, SLOW_BLEND_IN) SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlastDoors, TRUE) SET_LABEL_AS_TRIGGERED(BlastDoorsReady, TRUE) ENDIF ENDIF ENDIF // IF NOT IS_PED_INJURED(playerPedID) // IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor") // IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON // DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE() // ENDIF // ENDIF // ENDIF SWITCH iCutsceneStage CASE 0 IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5320.481934, -5177.932129, 82.518646>>, <<5306.319824, -5177.905273, 85.525978>>, 12.0, FALSE, TRUE) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_COVER1) SAFE_REMOVE_BLIP(blipDestination) SAFE_ADD_BLIP_LOCATION(blipDestination, <<5313.5903, -5177.6826, 82.5186>>) PRINT_ADV(PRO_COVER1, "PRO_COVER1", DEFAULT_GOD_TEXT_TIME) PRINT_HELP_ADV(PROHLP_COVER1, "PROHLP_COVER1") //SET_PLAYER_CAN_USE_COVER(PLAYER_ID(), FALSE) INT i REPEAT COUNT_OF(covPointBlastDoors) i REMOVE_COVER_POINT(covPointBlastDoors[i]) ENDREPEAT IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5317.6992, -5175.9941, 82.5187>>) covPointBlastDoors[0] = ADD_COVER_POINT(<<5317.6992, -5175.9941, 82.5187>>, 187.3502, COVUSE_WALLTOLEFT, COVHEIGHT_LOW, COVARC_180, TRUE) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5314.7065, -5175.7411, 82.5187>>) covPointBlastDoors[1] = ADD_COVER_POINT(<<5314.7065, -5175.7411, 82.5187>>, 175.9433, COVUSE_WALLTOLEFT, COVHEIGHT_LOW, COVARC_180, TRUE) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5313.5439, -5176.6865, 82.5186>>) covPointBlastDoors[2] = ADD_COVER_POINT(<<5313.5439, -5176.6865, 82.5186>>, 269.647, COVUSE_WALLTOLEFT, COVHEIGHT_LOW, COVARC_180, TRUE) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5313.5723, -5177.6260, 82.5186>>) covPointBlastDoors[3] = ADD_COVER_POINT(<<5313.5723, -5177.6260, 82.5186>>, 255.5294, COVUSE_WALLTOLEFT, COVHEIGHT_LOW, COVARC_180, TRUE) ENDIF itemCover = CREATE_ITEMSET(TRUE) REPEAT COUNT_OF(covPointBlastDoors) i IF NATIVE_TO_INT(covPointBlastDoors[i]) <> 0 IF DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(GET_SCRIPTED_COVER_POINT_COORDS(covPointBlastDoors[i])) ADD_TO_ITEMSET(covPointBlastDoors[i], itemCover) ENDIF ENDIF ENDREPEAT SET_PED_PREFERRED_COVER_SET(playerPedID, itemCover) ADD_COVER_BLOCKING_AREA(<<5313.613281, -5179.025879, 83.768784>> - <<8.0, 5.5, 1.75>>, <<5313.613281, -5179.025879, 83.768784>> + <<8.0, 5.5, 1.75>>, TRUE, TRUE, TRUE) // ADD_COVER_BLOCKING_AREA(<<5309.272461, -5178.685059, 84.018921>> - <<4.0, 5.0, 1.5>>, <<5309.272461, -5178.685059, 84.018921>> + <<4.0, 5.0, 1.5>>, TRUE, TRUE, TRUE, TRUE) // ADD_COVER_BLOCKING_AREA(<<5316.555664, -5174.613281, 84.018921>> - <<4.0, 1.25, 1.5>>, <<5316.555664, -5174.613281, 84.018921>> + <<4.0, 1.25, 1.5>>, TRUE, TRUE, TRUE, TRUE) // ADD_COVER_BLOCKING_AREA(<<5316.279297, -5176.725586, 84.018921>> - <<1.4, 3.0, 1.5>>, <<5316.279297, -5176.725586, 84.018921>> + <<1.4, 3.0, 1.5>>, TRUE, TRUE, TRUE, TRUE) // ADD_COVER_BLOCKING_AREA(<<5315.143555, -5182.560059, 84.018921>> - <<5.5, 4.25, 1.5>>, <<5315.143555, -5182.560059, 84.018921>> + <<5.5, 4.25, 1.5>>, TRUE, TRUE, TRUE, TRUE) // ADD_COVER_BLOCKING_AREA(<<5318.115723, -5174.764648, 84.018921>> - <<2.5, 1.1, 1.5>>, <<5318.115723, -5174.764648, 84.018921>> + <<2.5, 1.1, 1.5>>, TRUE, TRUE, TRUE, TRUE) // ADD_COVER_BLOCKING_AREA(<<5318.751953, -5178.320313, 84.018921>> - <<2.0, 1.0, 1.5>>, <<5318.751953, -5178.320313, 84.018921>> + <<2.0, 1.0, 1.5>>, TRUE, TRUE, TRUE, TRUE) // ADD_COVER_BLOCKING_AREA(<<5319.438965, -5177.877441, 84.018921>> - <<1.1, 4.5, 1.5>>, <<5319.438965, -5177.877441, 84.018921>> + <<1.1, 4.5, 1.5>>, TRUE, TRUE, TRUE, TRUE) ADVANCE_CUTSCENE() ENDIF ELSE 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(PRO_move_hst, "PRO_move_hst") ENDIF SETTIMERA(0) ENDIF BREAK CASE 1 // IF NOT SAFE_IS_PLAYER_CONTROL_ON() // IF GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK // SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) // ENDIF // ENDIF IF NOT IS_PED_IN_COVER(playerPedID) AND NOT IS_PED_GOING_INTO_COVER(playerPedID) AND SAFE_IS_PLAYER_CONTROL_ON() IF DOES_CAM_EXIST(camMain) IF NOT IS_CAM_RENDERING(camMain) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() SWITCH iDialogueStage CASE 0 IF GET_GAME_TIMER() > iDialogueTimer IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > iDialogueTimer PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Doors_1, "PRO_Doors", "PRO_Doors_1", CONV_PRIORITY_HIGH) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 2 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Set2, "PRO_Set2") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 3 IF GET_GAME_TIMER() > iDialogueTimer PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Doors_3, "PRO_Doors", "PRO_Doors_3", CONV_PRIORITY_HIGH) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 4 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_cover1alt, "PRO_cover1") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 5 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_Set3, "PRO_Set3") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK CASE 6 IF GET_GAME_TIMER() > iDialogueTimer CREATE_CONVERSATION_ADV(PRO_cover2, "PRO_cover2") IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000, 7500) iDialogueStage++ ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF ENDIF //Disable Player Control when entering cover and if in cover in the right location IF (IS_PED_IN_COVER(playerPedID) AND (IS_ENTITY_AT_COORD(playerPedID, <<5317.6992, -5175.9941, 82.5187>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5317.6992, -5175.9941, 82.5187>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5314.7065, -5175.7411, 82.5187>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5313.5439, -5176.6865, 82.5186>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5313.5723, -5177.6260, 82.5186>>, <<0.5, 0.5, 2.0>>))) OR IS_PED_GOING_INTO_COVER(playerPedID) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON) SET_PED_RESET_FLAG(playerPedID, PRF_ForceScriptedCameraLowCoverAngleWhenEnteringCover, TRUE) //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_TAKE_COVER") START_AUDIO_SCENE("PROLOGUE_TAKE_COVER") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_SWITCH_TO_TREVOR") STOP_AUDIO_SCENE("PROLOGUE_SWITCH_TO_TREVOR") ENDIF ELSE SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) ENDIF #IF IS_DEBUG_BUILD PRINTLN("IS_PED_IN_COVER(playerPedID) = ", IS_PED_IN_COVER(playerPedID)) PRINTLN("NOT IS_PED_GOING_INTO_COVER(playerPedID) = ", IS_PED_GOING_INTO_COVER(playerPedID)) PRINTLN("NOT IS_PED_IN_COVER_FACING_LEFT(playerPedID) = ", IS_PED_IN_COVER_FACING_LEFT(playerPedID)) PRINTLN("IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5320.476563, -5178.753418, 82.518654>>, <<5307.015137, -5178.661621, 85.518654>>, 10.0) = ", IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5320.476563, -5178.753418, 82.518654>>, <<5307.015137, -5178.661621, 85.518654>>, 10.0)) PRINTLN("NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5317.843262, -5185.007813, 82.518654>>, <<5317.709961, -5177.232422, 85.518654>>, 5.25) = ", IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5317.843262, -5185.007813, 82.518654>>, <<5317.709961, -5177.232422, 85.518654>>, 5.25)) PRINTLN("IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) = ", IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors)) PRINTLN("GET_GAME_TIMER(){", GET_GAME_TIMER(), "} > iBlendInTimer[BLEND_IN_BRAD]{", iBlendInTimer[BLEND_IN_BRAD], "}") #ENDIF IF IS_PED_IN_COVER(playerPedID, TRUE) AND NOT IS_PED_GOING_INTO_COVER(playerPedID) AND NOT IS_PED_IN_COVER_FACING_LEFT(playerPedID) AND (IS_ENTITY_AT_COORD(playerPedID, <<5317.6992, -5175.9941, 82.5187>>, <<1.0, 1.0, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5317.6992, -5175.9941, 82.5187>>, <<1.0, 1.0, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5314.7065, -5175.7411, 82.5187>>, <<1.0, 1.0, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5313.5439, -5176.6865, 82.5186>>, <<1.0, 1.0, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5313.5723, -5177.6260, 82.5186>>, <<1.0, 1.0, 2.0>>)) AND IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5320.476563, -5178.753418, 82.518654>>, <<5307.015137, -5178.661621, 85.518654>>, 10.0) AND NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5317.843262, -5185.007813, 82.518654>>, <<5317.709961, -5177.232422, 85.518654>>, 5.25) AND IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) AND GET_GAME_TIMER() > iBlendInTimer[BLEND_IN_MICHAEL] AND GET_GAME_TIMER() > iBlendInTimer[BLEND_IN_BRAD] SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON) SETTIMERB(0) IF IS_THIS_PRINT_BEING_DISPLAYED("PRO_COVER1") CLEAR_PRINTS() ENDIF IF IS_HELP_MESSAGE_BEING_DISPLAYED() SAFE_CLEAR_HELP(TRUE) ENDIF SAFE_REMOVE_BLIP(blipDestination) IF NOT IS_PLAYER_IN_FIRST_PERSON_CAMERA() OR GET_IS_USING_FPS_THIRD_PERSON_COVER() PRINTLN("[MF] Player is NOT in FP Cam - Playing anim: set_c4_mainaction_trevor") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM(NULL, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME) CLOSE_SEQUENCE_TASK(seqMain) ELIF IS_ENTITY_AT_COORD(playerPedID, <<5317.6992, -5175.9941, 82.5187>>, <<1.0, 1.0, 2.0>>) PRINTLN("[MF] Player IS in FP Cam at cover position 2 - Playing anim: SET_C4_MainAction_Trevor_Fps_Pos2") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM(NULL, sAnimDictPrologue5_Main, "SET_C4_MainAction_Trevor_Fps_Pos2", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME) CLOSE_SEQUENCE_TASK(seqMain) ELSE PRINTLN("[MF] Player IS in FP Cam - Playing anim: set_c4_mainaction_trevor_fps") OPEN_SEQUENCE_TASK(seqMain) TASK_PLAY_ANIM(NULL, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor_fps", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_HOLD_LAST_FRAME) CLOSE_SEQUENCE_TASK(seqMain) ENDIF TASK_PERFORM_SEQUENCE(playerPedID, seqMain) CLEAR_SEQUENCE_TASK(seqMain) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedID) sceneBlastDoors = CREATE_SYNCHRONIZED_SCENE(sceneBlastDoorsPos, sceneBlastDoorsRot) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sceneBlastDoors, sAnimDictPrologue5_Main, "set_c4_mainaction_player0", SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneBlastDoors, sAnimDictPrologue5_Main, "set_c4_mainaction_brad", SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION) SET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors, 0.0) SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlastDoors, FALSE) objBomb = CREATE_OBJECT(modBomb, GET_PED_BONE_COORDS(pedBrad, BONETAG_PH_L_HAND, VECTOR_ZERO)) ATTACH_ENTITY_TO_ENTITY(objBomb, pedBrad, GET_PED_BONE_INDEX(pedBrad, BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO) objBombGreen = CREATE_OBJECT(modBombGreen, <<5298.270020, -5187.850098, 83.870003>>) SET_ENTITY_ROTATION(objBombGreen, <<0.0, 0.0, -90.527321>>) ATTACH_ENTITY_TO_ENTITY(objBombGreen, pedBrad, GET_PED_BONE_INDEX(pedBrad, BONETAG_PH_L_HAND), VECTOR_ZERO, VECTOR_ZERO) SET_ENTITY_VISIBLE(objBombGreen, FALSE) IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfSecDoorExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion) != RFMO_STATE_PRIMED SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion, RFMO_STATE_PRIMING) ENDIF ENDIF REPLAY_RECORD_BACK_FOR_TIME(3.5, 0, REPLAY_IMPORTANCE_HIGH) ADVANCE_CUTSCENE() ENDIF BREAK CASE 2 //Sound LOAD_STREAM("PROLOGUE_BLAST_SECURITY_DOORS_MASTER") DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Doors_4, "PRO_Doors", "PRO_Doors_4", CONV_PRIORITY_HIGH) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(HintCamBomb) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors) > 0.037 //0.068 SET_GAMEPLAY_ENTITY_HINT(objBomb, VECTOR_ZERO, TRUE, 5000, 2500, 2500, HINTTYPE_NO_FOV) //<<5318.2, -5184.4, 84.0>> IF NOT bVideoRecording REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) bVideoRecording = TRUE ENDIF SET_LABEL_AS_TRIGGERED(HintCamBomb, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(HintCamBombStop) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors) > 0.232 //0.068 STOP_GAMEPLAY_HINT() SET_LABEL_AS_TRIGGERED(HintCamBombStop, TRUE) ENDIF ENDIF ENDIF // IF IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue5_Main, "set_c4_mainaction_brad") // IF GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue5_Main, "set_c4_mainaction_brad") > 0.239 IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors) > 0.239 //Tag for detach IF DOES_ENTITY_EXIST(objBomb) DETACH_ENTITY(objBomb, FALSE) DETACH_ENTITY(objBombGreen, FALSE) FREEZE_ENTITY_POSITION(objBomb, TRUE) FREEZE_ENTITY_POSITION(objBombGreen, TRUE) ENDIF ADVANCE_CUTSCENE() ENDIF ENDIF BREAK CASE 3 //Sound LOAD_STREAM("PROLOGUE_BLAST_SECURITY_DOORS_MASTER") DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) // IF IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue5_Main, "set_c4_mainaction_brad") // IF GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue5_Main, "set_c4_mainaction_brad") > 0.453 IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors) > 0.403 SET_ENTITY_VISIBLE(objBomb, FALSE) SET_ENTITY_VISIBLE(objBombGreen, TRUE) IF sIDSecDoorBombBeep = -1 sIDSecDoorBombBeep = GET_SOUND_ID() PLAY_SOUND_FROM_ENTITY(sIDSecDoorBombBeep, "Security_Door_Bomb_Bleeps", objBombGreen, "Prologue_Sounds") ENDIF ENDIF IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors) > 0.453 SET_ENTITY_VISIBLE(objBomb, FALSE) SET_ENTITY_VISIBLE(objBombGreen, TRUE) CLEAR_AREA(<<5318.1221, -5185.5044, 85.7186 - 3.2>>, 4.0, TRUE) SHAKE_CAM(camMain, "MEDIUM_EXPLOSION_SHAKE", 0.1) IF HAS_PTFX_ASSET_LOADED() START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_prologue_door_blast", <<5318.00, -5185.06, 83.82>>, <<0.0, 0.0, 0.0>>, 1.0) ENDIF IF HAS_PTFX_ASSET_LOADED() IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxSmokeCloud) ptfxSmokeCloud = START_PARTICLE_FX_LOOPED_AT_COORD("scr_prologue_vault_fog", <<5313.3545, -5177.7656, 82.5186>>, <<0.0, 0.0, 0.0>>, 1.0) ENDIF ENDIF IF HAS_PTFX_ASSET_LOADED() IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxEmber) ptfxEmber = START_PARTICLE_FX_LOOPED_AT_COORD("ent_ray_pro_door_embers", <<5318.1626, -5184.8325, 82.5186>>, <<0.0, 0.0, 0.0>>, 1.0) iEmberTimer = GET_GAME_TIMER() + 15000 ENDIF ENDIF SET_CONTROL_SHAKE(PLAYER_CONTROL, 500, 256) SHAKE_GAMEPLAY_CAM("MEDIUM_EXPLOSION_SHAKE", 0.25) //Sound // sIDSecDoorBlast = GET_SOUND_ID() // PLAY_SOUND_FROM_COORD(sIDSecDoorBlast, "Security_Door_Explosion", <<5318.2, 5184.8, 84.1>>, "Prologue_Sounds") sIDDistantSirens = GET_SOUND_ID() PLAY_SOUND_FROM_COORD(sIDDistantSirens, "COPS_ARRIVE", <<5359.9, -5190, 83.00>>, "Prologue_Sounds") sIDSecurityDoorAlarm = GET_SOUND_ID() PLAY_SOUND_FROM_COORD(sIDSecurityDoorAlarm, "Security_Door_Alarm", <<5318.2, -5184.8, 84.1>>, "Prologue_Sounds") IF sIDSecDoorBombBeep != -1 STOP_SOUND(sIDSecDoorBombBeep) RELEASE_SOUND_ID(sIDSecDoorBombBeep) sIDSecDoorBombBeep = -1 ENDIF IF NOT bAudioStream SET_AUDIO_FLAG("DisableReplayScriptStreamRecording", TRUE) bAudioStream = TRUE ENDIF PLAY_STREAM_FRONTEND() //Rayfire IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfSecDoorExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion) = RFMO_STATE_PRIMED SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion, RFMO_STATE_START_ANIM) ENDIF ENDIF PLAY_AUDIO(PROLOGUE_TEST_BLAST_DOORS_EXPLODE) SAFE_DELETE_OBJECT(objBomb) SAFE_DELETE_OBJECT(objBombGreen) PLAY_PED_AMBIENT_SPEECH(pedBrad, "GENERIC_CURSE_HIGH", SPEECH_PARAMS_FORCE_SHOUTED_CLEAR) ADVANCE_CUTSCENE() ENDIF ENDIF BREAK CASE 4 // IF IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue5_Main, "set_c4_mainaction_brad") // IF GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue5_Main, "set_c4_mainaction_brad") > 0.630 //0.653 PRINTLN("DISABLING DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA)") DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors) > 0.630 // RENDER_SCRIPT_CAMS(FALSE, TRUE, DEFAULT_INTERP_TO_FROM_GAME, FALSE) //CLEAR_PED_TASKS(playerPedID) IF bVideoRecording REPLAY_STOP_EVENT() bVideoRecording = FALSE ENDIF TASK_PUT_PED_DIRECTLY_INTO_COVER(playerPedID, GET_ENTITY_COORDS(playerPedID), -1, FALSE, 0.5, TRUE, FALSE) WHILE NOT IS_PED_IN_COVER(playerPedID) OR IS_PED_GOING_INTO_COVER(playerPedID) IF GET_IS_USING_FPS_THIRD_PERSON_COVER() IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor") OR IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor_fps") OR IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "SET_C4_MainAction_Trevor_Fps_Pos2") OR IS_PED_IN_COVER(playerPedID) OR IS_PED_GOING_INTO_COVER(playerPedID) DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE() ENDIF ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) // SET_GAMEPLAY_CAM_RELATIVE_HEADING(-137.6 - GET_ENTITY_HEADING(playerPedID)) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(-11.6) CREATE_CONVERSATION_ADV(PRO_Cover, "PRO_Cover") //CLEAR_TEXT() CLEAR_PRINTS() SAFE_CLEAR_HELP() PRINT_HELP_ADV(PROHLP_COVER3, "PROHLP_COVER3") ADVANCE_STAGE() ENDIF ENDIF BREAK ENDSWITCH IF GET_IS_USING_FPS_THIRD_PERSON_COVER() IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor") OR IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor_fps") OR IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "SET_C4_MainAction_Trevor_Fps_Pos2") OR IS_PED_IN_COVER(playerPedID) OR IS_PED_GOING_INTO_COVER(playerPedID) DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE() ENDIF ENDIF // IF IS_GAMEPLAY_HINT_ACTIVE() // AND TIMERB() > DEFAULT_INTERP_IN_TIME // AND TIMERB() < DEFAULT_INTERP_IN_TIME + DEFAULT_DWELL_TIME // AND NOT HAS_LABEL_BEEN_TRIGGERED(HintSet) // VECTOR vCamRot = GET_FINAL_RENDERED_CAM_ROT() // SET_GAMEPLAY_CAM_RELATIVE_HEADING(vCamRot.Z - GET_ENTITY_HEADING(playerPedID)) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(-11.6) // // SET_LABEL_AS_TRIGGERED(HintSet, TRUE) // ENDIF // IF IS_CAM_RENDERING(camMain) // AND NOT IS_GAMEPLAY_CAM_RENDERING() // AND NOT IS_INTERPOLATING_TO_SCRIPT_CAMS() // AND NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS() // VECTOR vCamRot = GET_CAM_ROT(camMain) // SET_GAMEPLAY_CAM_RELATIVE_HEADING(vCamRot.Z - GET_ENTITY_HEADING(playerPedID)) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(-11.6) // // INT iTolerance // // iTolerance = 8 // // INT iLTSx, iLTSy, iRTSx, iRTSy // // GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iLTSx, iLTSy, iRTSx, iRTSy) // // IF (iRTSx < -iTolerance OR iRTSx > iTolerance) // OR (iRTSy < -iTolerance OR iRTSy > iTolerance) // RENDER_SCRIPT_CAMS(FALSE, TRUE, 500, FALSE) // ENDIF // ENDIF IF iCutsceneStage < 3 // IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5320.476563, -5178.753418, 82.518654>>, <<5307.015137, -5178.661621, 85.518654>>, 10.0) // AND NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5317.843262, -5185.007813, 82.518654>>, <<5317.709961, -5177.232422, 85.518654>>, 5.25) IF IS_ENTITY_AT_COORD(playerPedID, <<5306.901367, -5175.998535, 83.518784>>, <<1.75, 3.0, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5309.857422, -5173.836426, 83.518784>>, <<3.75, 1.75, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5319.701660, -5174.781738, 83.518784>>, <<1.25, 2.0, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5316.187988, -5178.350586, 83.518784>>, <<1.25, 2.0, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5317.587891, -5178.854004, 83.518784>>, <<3.25, 0.75, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5317.539063, -5183.494141, 83.518784>>, <<3.0, 1.5, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5317.539063, -5183.494141, 83.518784>>, <<3.0, 1.5, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5310.659180, -5182.642090, 84.518784>>, <<6.5, 1.0, 2.0>>) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) SET_PED_RESET_FLAG(playerPedID, PRF_DisablePlayerAutoVaulting, TRUE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) ENDIF ENDIF //Particles IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxEmber) IF GET_GAME_TIMER() >= iEmberTimer STOP_PARTICLE_FX_LOOPED(ptfxEmber) ENDIF ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) SET_PLAYER_CAN_USE_COVER(PLAYER_ID(), TRUE) SET_PED_RESET_FLAG(playerPedID, PRF_DisablePlayerAutoVaulting, FALSE) //Pathing SET_PED_STEERS_AROUND_PEDS(playerPedMichael, TRUE) //Cover INT i REPEAT COUNT_OF(covPoint) i REMOVE_COVER_POINT(covPoint[i]) ENDREPEAT REMOVE_ALL_COVER_BLOCKING_AREAS() IF IS_ITEMSET_VALID(itemCover) DESTROY_ITEMSET(itemCover) ENDIF //Rayfire IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfSecDoorExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion) != RFMO_STATE_END AND GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion) != RFMO_STATE_ANIMATING SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion, RFMO_STATE_ENDING) ENDIF ENDIF SAFE_DELETE_OBJECT(objBomb) SAFE_DELETE_OBJECT(objBombGreen) SAFE_DELETE_OBJECT(objBomb3) SAFE_DELETE_OBJECT(objBomb2) SAFE_DELETE_OBJECT(objBomb1) // ASSISTED_MOVEMENT_REMOVE_ROUTE("Pro_S4") SAFE_REMOVE_BLIP(blipDestination) IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_SWITCH_TO_TREVOR") STOP_AUDIO_SCENE("PROLOGUE_SWITCH_TO_TREVOR") ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(modBomb) SET_MODEL_AS_NO_LONGER_NEEDED(modBombGreen) SET_MODEL_AS_NO_LONGER_NEEDED(modBomb3) SET_MODEL_AS_NO_LONGER_NEEDED(modBomb2) SET_MODEL_AS_NO_LONGER_NEEDED(modBomb1) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC DuckUnderShutter() IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Radar bRadar = TRUE #IF FEATURE_GEN9_EXCLUSIVE bPlayGarageSound = FALSE #ENDIF IF NOT HAS_PED_GOT_WEAPON(playerPedID, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedID, wtCarbineRifle, 500, TRUE) ENDIF SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) WHILE NOT REQUEST_SCRIPT_AUDIO_BANK("SNOW_FOOTSTEPS") OR NOT REQUEST_SCRIPT_AUDIO_BANK("ICE_FOOTSTEPS") #IF IS_DEBUG_BUILD PRINTLN("LOADING AUDIO BANK = SNOW_FOOTSTEPS") #ENDIF #IF IS_DEBUG_BUILD PRINTLN("LOADING AUDIO BANK = ICE_FOOTSTEPS") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_Cover, "PRO_Cover") ENDIF SAFE_ADD_BLIP_LOCATION(blipDestination, <<5320.2261, -5186.1284, 82.5187>>) #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() SET_PED_POSITION(playerPedID, <<5317.1089, -5182.1265, 82.5186>>, 201.2845, FALSE) //Michael SET_PED_POSITION(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], <<5320.0708, -5187.5234, 82.5186>>, 97.2528, FALSE) //Brad SET_PED_POSITION(pedBrad, <<5316.5908, -5187.2148, 82.5186>>, 269.9326, FALSE) sceneDuckUnder = CREATE_SYNCHRONIZED_SCENE(sceneDuckUnderPos, sceneDuckUnderRot) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sceneDuckUnder, sAnimDictPrologue5_End, "set_c4_end_loop_player0", INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneDuckUnder, sAnimDictPrologue5_End, "set_c4_end_loop_brad", INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION) SET_SYNCHRONIZED_SCENE_LOOPED(sceneDuckUnder, TRUE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlastDoors) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneBlastDoors) >= 1.0 sceneDuckUnder = CREATE_SYNCHRONIZED_SCENE(sceneDuckUnderPos, sceneDuckUnderRot) TASK_SYNCHRONIZED_SCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sceneDuckUnder, sAnimDictPrologue5_End, "set_c4_end_loop_player0", INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION) TASK_SYNCHRONIZED_SCENE(pedBrad, sceneDuckUnder, sAnimDictPrologue5_End, "set_c4_end_loop_brad", INSTANT_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_PLAYER_IMPACT | RBF_VEHICLE_IMPACT | RBF_EXPLOSION) SET_SYNCHRONIZED_SCENE_LOOPED(sceneDuckUnder, TRUE) ENDIF SWITCH iCutsceneStage CASE 0 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_SHUTTER) PRINT_ADV(PRO_SHUTTER, "PRO_SHUTTER") SAFE_ADD_BLIP_LOCATION(blipDestination, <<5320.2261, -5186.1284, 82.5187>>) SET_BLIP_COLOUR(blipDestination, BLIP_COLOUR_GREEN) ELIF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_SHUTTER") IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) SWITCH iDialogueStage CASE 0 IF GET_GAME_TIMER() > iDialogueTimer PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Under_1, "PRO_Under", "PRO_Under_1", CONV_PRIORITY_LOW) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000, 5000) iDialogueStage++ ENDIF ENDIF BREAK CASE 1 IF GET_GAME_TIMER() > iDialogueTimer PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Under_2, "PRO_Under", "PRO_Under_2", CONV_PRIORITY_LOW) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000, 5000) iDialogueStage++ ENDIF ENDIF BREAK ENDSWITCH ENDIF ENDIF ENDIF // IF NOT IS_PED_IN_COVER(playerPedID) // AND NOT IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue5_Main, "set_c4_mainaction_trevor") // IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_COVER3") // AND GET_GAME_TIMER() > iHelpTimer // SAFE_CLEAR_HELP() // ENDIF // ENDIF IF IS_ENTITY_AT_COORD(playerPedID, <<5318.190430, -5187.577637, 84.268669>>, <<2.5, 4.0, 1.75>>) OR IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue_CleanSmoke, "walk") SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) PRINTLN("PEDMOVE_WALK") DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_AIM) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) ENDIF IF (GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON AND IS_ENTITY_AT_COORD(playerPedID, <<5318.190430, -5187.577637, 84.268669>>, <<10.0, 10.0, 1.75>>)) SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) PRINTLN("PEDMOVE_WALK") ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5320.485840, -5186.873535, 82.518639>>, <<5315.874023, -5186.868164, 86.018639>>, 3.0) SAFE_REMOVE_BLIP(blipDestination) IF IS_THIS_PRINT_BEING_DISPLAYED("PRO_SHUTTER") SAFE_CLEAR_THIS_PRINT("PRO_SHUTTER") ENDIF CLEAR_PED_TASKS(playerPedID) TASK_FOLLOW_NAV_MESH_TO_COORD(playerPedID, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Duck, "press_button_player2", sceneDuckUnderPos - <<0.0, 0.41, 0.0>> + <<-0.18, -0.06, 0.0>>, sceneDuckUnderRot), 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(sAnimDictPrologue5_Duck, "press_button_player2", sceneDuckUnderPos - <<0.0, 0.41, 0.0>> + <<-0.18, -0.06, 0.0>>, sceneDuckUnderRot))) SET_GAMEPLAY_COORD_HINT(<<5320.46387, -5186.74561, 84.11650>>, DEFAULT_DWELL_TIME, DEFAULT_INTERP_IN_TIME, DEFAULT_INTERP_OUT_TIME, HINTTYPE_NO_FOV) ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF NOT HAS_LABEL_BEEN_TRIGGERED(StartShutterAnim) IF IS_ENTITY_AT_COORD(playerPedID, GET_ANIM_INITIAL_OFFSET_POSITION(sAnimDictPrologue5_Duck, "press_button_player2", sceneDuckUnderPos - <<0.0, 0.41, 0.0>> + <<-0.18, -0.06, 0.0>>, sceneDuckUnderRot), <<0.2, 0.2, 3.0>>) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) <> CAM_VIEW_MODE_FIRST_PERSON sceneShutterSwitch = CREATE_SYNCHRONIZED_SCENE(sceneDuckUnderPos - <<0.0, 0.41, 0.0>> + <<-0.18, -0.06, 0.0>>, sceneDuckUnderRot) TASK_SYNCHRONIZED_SCENE(playerPedID, sceneShutterSwitch, sAnimDictPrologue5_Duck, "press_button_player2", WALK_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, WALK_BLEND_IN) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneShutterSwitch, FALSE) SET_LABEL_AS_TRIGGERED(StartShutterAnim, TRUE) ELSE sceneShutterSwitch = CREATE_SYNCHRONIZED_SCENE(sceneDuckUnderPos - <<0.0, 0.41, 0.0>> + <<-0.18, -0.06, 0.0>>, sceneDuckUnderRot) TASK_SYNCHRONIZED_SCENE(playerPedID, sceneShutterSwitch, sAnimDictPrologue5_Duck, "press_button_player2", NORMAL_BLEND_IN, WALK_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_NONE, NORMAL_BLEND_IN) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneShutterSwitch, FALSE) SET_LABEL_AS_TRIGGERED(StartShutterAnim, TRUE) ENDIF ENDIF ENDIF IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneShutterSwitch) OR (HAS_LABEL_BEEN_TRIGGERED(StartShutterAnim) AND NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneShutterSwitch)) #IF FEATURE_GEN9_EXCLUSIVE IF NOT bPlayGarageSound IF sIDGarageDoor = -1 sIDGarageDoor = GET_SOUND_ID() PLAY_SOUND_FROM_COORD(sIDGarageDoor, "GEN9_Prologue_Garage_Door_Motor", <<5320.60, -5188.61, 85.02>>) bPlayGarageSound = TRUE 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 NOT HAS_LABEL_BEEN_TRIGGERED(PRO_ShutterDoor) CREATE_CONVERSATION_ADV(PRO_Shutter, "PRO_Shutter", CONV_PRIORITY_MEDIUM, FALSE) SET_LABEL_AS_TRIGGERED(PRO_ShutterDoor, TRUE) ENDIF ADVANCE_CUTSCENE() ELSE IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_Shutter") KILL_FACE_TO_FACE_CONVERSATION() ENDIF ENDIF ENDIF BREAK CASE 2 IF (IS_SYNCHRONIZED_SCENE_RUNNING(sceneShutterSwitch) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneShutterSwitch) > 0.178) OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneShutterSwitch) IF DOES_ENTITY_EXIST(objGarage) IF NOT IS_ENTITY_PLAYING_ANIM(objGarage, sAnimDictMapObjects, "GDoor_Open") PLAY_ENTITY_ANIM(objGarage, "GDoor_Open", sAnimDictMapObjects, INSTANT_BLEND_IN, FALSE, TRUE) ELSE SET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open", 0.0) SET_ENTITY_ANIM_SPEED(objGarage, sAnimDictMapObjects, "GDoor_Open", 1.0) ENDIF ENDIF START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_pro_door_snow", <<5320.53711, -5188.55469, 82.51863>>, <<0.0, 0.0, 0.0>>) //83.86947 //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_TAKE_COVER") STOP_AUDIO_SCENE("PROLOGUE_TAKE_COVER") ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_POLICE_SHOOTOUT") START_AUDIO_SCENE("PROLOGUE_POLICE_SHOOTOUT") ENDIF //Recording hitting button and then ducking out. REPLAY_RECORD_BACK_FOR_TIME(0.5, 5, REPLAY_IMPORTANCE_HIGH) ADVANCE_CUTSCENE() ENDIF BREAK CASE 3 IF DOES_ENTITY_EXIST(objGarage) IF IS_ENTITY_PLAYING_ANIM(objGarage, sAnimDictMapObjects, "GDoor_Open") AND GET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open") >= 0.05 TASK_PLAY_ANIM_ADVANCED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], sAnimDictPrologue5_Duck, "duck_shutter_player0", sceneDuckUnderPos, sceneDuckUnderRot, NORMAL_BLEND_IN, WALK_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) TASK_PLAY_ANIM_ADVANCED(pedBrad, sAnimDictPrologue5_Duck, "duck_shutter_brad", sceneDuckUnderPos, sceneDuckUnderRot, SLOW_BLEND_IN, WALK_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION, 0.221) SET_ENTITY_NO_COLLISION_ENTITY(objHiddenCollision, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_ENTITY_NO_COLLISION_ENTITY(objHiddenCollision, pedBrad, FALSE) SET_ENTITY_NO_COLLISION_ENTITY(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], objHiddenCollision, FALSE) SET_ENTITY_NO_COLLISION_ENTITY(pedBrad, objHiddenCollision, FALSE) ADVANCE_CUTSCENE() ENDIF ENDIF BREAK CASE 4 IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneShutterSwitch) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneShutterSwitch) >= 0.5 OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneShutterSwitch) ADVANCE_STAGE() ENDIF BREAK ENDSWITCH //Clean Smoke IF TIMERA() < 10000 IF NOT HAS_LABEL_BEEN_TRIGGERED(CLEANSMOKE) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5320.420410, -5182.820800, 82.518669>>, <<5315.878418, -5182.866699, 85.518669>>, 3.5) AND NOT IS_PED_IN_COVER(playerPedID) AND NOT IS_PED_GOING_INTO_COVER(playerPedID) PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(playerPedID, "COUGH", "WAVELOAD_PAIN_MALE") IF GET_FOLLOW_PED_CAM_VIEW_MODE() != CAM_VIEW_MODE_FIRST_PERSON TASK_PLAY_ANIM(playerPedID, sAnimDictPrologue_CleanSmoke, "walk", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY) ENDIF SET_LABEL_AS_TRIGGERED(CLEANSMOKE, TRUE) ENDIF ENDIF ENDIF IF iCutsceneStage >= 1 DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) 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 IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue_CleanSmoke, "walk") SET_PED_CAPSULE(playerPedID, 0.75) SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, PEDMOVE_WALK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_AIM) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) ENDIF //Particles IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxEmber) IF GET_GAME_TIMER() >= iEmberTimer STOP_PARTICLE_FX_LOOPED(ptfxEmber) ENDIF ENDIF SET_PED_RESET_FLAG(playerPedID, PRF_DisablePlayerAutoVaulting, TRUE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) //Hint STOP_GAMEPLAY_HINT() //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_TAKE_COVER") STOP_AUDIO_SCENE("PROLOGUE_TAKE_COVER") ENDIF //Cover INT i REPEAT COUNT_OF(covPointMap) i REMOVE_COVER_POINT(covPointMap[i]) ENDREPEAT REPEAT COUNT_OF(covPointBlastDoors) i REMOVE_COVER_POINT(covPointBlastDoors[i]) ENDREPEAT //Guard SET_PED_AS_NO_LONGER_NEEDED(pedGuard) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 4) //Sound IF sIDSecDoorBlast != -1 STOP_SOUND(sIDSecDoorBlast) RELEASE_SOUND_ID(sIDSecDoorBlast) sIDSecDoorBlast = -1 ENDIF IF sIDDistantSirens != -1 STOP_SOUND(sIDDistantSirens) RELEASE_SOUND_ID(sIDDistantSirens) sIDDistantSirens = -1 ENDIF IF sIDSecurityDoorAlarm != -1 STOP_SOUND(sIDSecurityDoorAlarm) RELEASE_SOUND_ID(sIDSecurityDoorAlarm) sIDSecurityDoorAlarm = -1 ENDIF RELEASE_SCRIPT_AUDIO_BANK() //Particles IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxEmber) STOP_PARTICLE_FX_LOOPED(ptfxEmber) ENDIF IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxSmokeCloud) STOP_PARTICLE_FX_LOOPED(ptfxSmokeCloud) ENDIF eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC BOOL bFirstWaveCopsDead INT iShootOutStage1, iShootOutStage2, iShootOutStage3 ENUM ALLY_STATE ALLY_INIT, ALLY_WAIT_TO_TASK_INTO_PARKING_LOT, ALLY_WAIT_FOR_PARKING_LOT_CLEAR, ALLY_WAIT_FOR_PLAYER_BY_GATE, ALLY_WAIT_FOR_VAN_CLEAR, ALLY_WAIT_FOR_CAR_EXPLOSION, ALLY_TASK_NEAR_EXPLODED_CARS, ALLY_GO_NEAR_FINAL_CAR, ALLY_TASK_SHOOT_THE_SHIT_OUT_OF_THE_FINAL_CAR, ALLY_DONE ENDENUM ALLY_STATE eAllyState // RJM - Wrapper for tasking the allies. This replaces the ped recordings. // We tell the AIs to run to a coord, set a small defensive sphere around their destination, and task them to combat. // Also, add a little random pause before they run, so it looks a bit organic when Brad & Michael run together. PROC TASK_ALLY_RUN_TO_COORD_AND_ATTACK(PED_INDEX pedIndex, VECTOR vDefenseSphereCenter) FLOAT fRadius = 5.0 INT iRandomTime = GET_RANDOM_INT_IN_RANGE(0, 500) IF NOT IS_ENTITY_DEAD(pedIndex) // CLEAR_PED_TASKS(pedIndex) REMOVE_PED_DEFENSIVE_AREA(pedIndex) REMOVE_PED_DEFENSIVE_AREA(pedIndex, TRUE) SET_PED_SPHERE_DEFENSIVE_AREA(pedIndex, vDefenseSphereCenter, fRadius) IF NOT IS_PED_IN_COMBAT(pedIndex) OPEN_SEQUENCE_TASK(seqMain) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) TASK_AIM_GUN_AT_COORD(NULL, vDefenseSphereCenter - <<0.0, 0.0, 1.0>>, iRandomTime) // TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, vDefenseSphereCenter, vDefenseSphereCenter + (vDefenseSphereCenter - GET_ENTITY_COORDS(pedIndex)), PEDMOVE_RUN, FALSE) //TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vDefenseSphereCenter, PEDMOVE_SPRINT) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 1000.0) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedIndex, seqMain) CLEAR_SEQUENCE_TASK(seqMain) ENDIF // IF pedIndex = notPlayerPedID // iSequenceBuddy = 2 // vSequenceBuddy = GET_ENTITY_COORDS(notPlayerPedID) // ELIF pedIndex = pedBrad // iSequenceBrad = 2 // vSequenceBrad = GET_ENTITY_COORDS(pedBrad) // ENDIF ENDIF ENDPROC // RJM - This is the new state machine for tasking Brad and Michael to advance. // I wanted this to be centrally located, so we could easily change and update Brad and Michael's tasks PROC UPDATE_ALLIES_TASKING() //Main stage state machine SWITCH eAllyState CASE ALLY_INIT #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_WAIT_TO_TASK_INTO_PARKING_LOT") #ENDIF eAllyState = ALLY_WAIT_TO_TASK_INTO_PARKING_LOT BREAK // RJM - In this stage, we wait for Brad and Michael to finish playing their 'duck' animations before we task them CASE ALLY_WAIT_TO_TASK_INTO_PARKING_LOT // Wait for Michael to finish playing his animation before tasking him into combat IF NOT HAS_LABEL_BEEN_TRIGGERED(MichaelStartCombat) IF NOT IS_ENTITY_PLAYING_ANIM(notPlayerPedID, sAnimDictPrologue5_Duck, "duck_shutter_player0") OR (IS_ENTITY_PLAYING_ANIM(notPlayerPedID, sAnimDictPrologue5_Duck, "duck_shutter_player0") AND GET_ENTITY_ANIM_CURRENT_TIME(notPlayerPedID, sAnimDictPrologue5_Duck, "duck_shutter_player0") > 0.784) //0.95) CLEAR_PED_TASKS(notPlayerPedID) SET_PED_SPHERE_DEFENSIVE_AREA(notPlayerPedID,<<5336.7935, -5193.3403, 81.9088>>, 2.0) SET_PED_SPHERE_DEFENSIVE_AREA(notPlayerPedID, <<5329.6567, -5195.1406, 81.7030>>, 2.0, TRUE, TRUE) OPEN_SEQUENCE_TASK(seqMain) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, <<5322.7285, -5195.1299, 82.5190>>, <<5343.3496, -5190.2065, 82.7770>>, PEDMOVE_RUN, FALSE, 0.5, 4.0, FALSE, ENAV_NO_STOPPING) TASK_GO_STRAIGHT_TO_COORD(NULL, <<5328.2588, -5195.1309, 81.6819>>, PEDMOVE_RUN) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 500.0) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(notPlayerPedID, seqMain) CLEAR_SEQUENCE_TASK(seqMain) iSequenceBuddy = 1 vSequenceBuddy = GET_ENTITY_COORDS(notPlayerPedID) // TASK_ALLY_RUN_TO_COORD_AND_ATTACK(notPlayerPedID, <<5328.2588, -5195.1309, 81.6819>>) SET_PED_ACCURACY(notPlayerPedID, 2) SET_LABEL_AS_TRIGGERED(MichaelStartCombat, TRUE) ENDIF ENDIF // Wait for Brad to finish playing his animation before tasking him into combat IF NOT HAS_LABEL_BEEN_TRIGGERED(BradStartCombat) IF NOT IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue5_Duck, "duck_shutter_brad") OR (IS_ENTITY_PLAYING_ANIM(pedBrad, sAnimDictPrologue5_Duck, "duck_shutter_brad") AND GET_ENTITY_ANIM_CURRENT_TIME(pedBrad, sAnimDictPrologue5_Duck, "duck_shutter_brad") > 0.95) CLEAR_PED_TASKS(pedBrad) SET_PED_SPHERE_DEFENSIVE_AREA(pedBrad, <<5331.9883, -5191.7563, 81.7708>>, 2.0) // SET_PED_SPHERE_DEFENSIVE_AREA(pedBrad, <<5326.3403, -5191.8643, 81.7742>>, 2.0, TRUE) OPEN_SEQUENCE_TASK(seqMain) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) TASK_SHOOT_AT_COORD(NULL, <<5343.3496, -5190.2065, 82.7770>>, 1000, FIRING_TYPE_DEFAULT) //TASK_AIM_GUN_AT_COORD(NULL, <<5343.3496, -5190.2065, 82.7770>>, 1500) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, <<5323.0347, -5192.4453, 82.5190>>, <<5343.3496, -5190.2065, 82.7770>>, PEDMOVE_WALK, FALSE, 0.5, 4.0, FALSE, ENAV_NO_STOPPING) TASK_GO_STRAIGHT_TO_COORD(NULL, <<5325.6709, -5191.8677, 81.7683>>, PEDMOVE_RUN) TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 500.0) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedBrad, seqMain) CLEAR_SEQUENCE_TASK(seqMain) iSequenceBrad = 2 vSequenceBrad = GET_ENTITY_COORDS(pedBrad) // TASK_ALLY_RUN_TO_COORD_AND_ATTACK(pedBrad, <<5325.6709, -5191.8677, 81.7683>>) SET_PED_ACCURACY(pedBrad, 2) SET_LABEL_AS_TRIGGERED(BradStartCombat, TRUE) ENDIF ENDIF // Once both have been tasked, move on IF HAS_LABEL_BEEN_TRIGGERED(MichaelStartCombat) AND HAS_LABEL_BEEN_TRIGGERED(BradStartCombat) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_WAIT_FOR_PARKING_LOT_CLEAR") #ENDIF eAllyState = ALLY_WAIT_FOR_PARKING_LOT_CLEAR ENDIF BREAK // Wait for all the parking lot cops to be dead before moving up the allies CASE ALLY_WAIT_FOR_PARKING_LOT_CLEAR IF bFirstWaveCopsDead //THIS IS SET IN THE ShootOut() FUNCTION, WHEN DUDES 0 -> 11 ARE DEAD! TASK_ALLY_RUN_TO_COORD_AND_ATTACK(notPlayerPedID, <<5353.9634, -5190.4790, 81.7737>>) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(pedBrad, <<5355.9717, -5186.0688, 81.7840>>) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_WAIT_FOR_PLAYER_BY_GATE") #ENDIF eAllyState = ALLY_WAIT_FOR_PLAYER_BY_GATE ENDIF BREAK // Wait for the player to run to the gate before tasking the allies to move ahead CASE ALLY_WAIT_FOR_PLAYER_BY_GATE IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5356.732422, -5201.155273, 80.831223>>, <<5356.545410, -5179.600098, 96.836906>>, 20.0) OR IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5417.894043, -5108.792480, 75.563187>>, <<5412.487793, -5240.660156, 95.597893>>, 100.0) OR (IS_PED_DEAD_OR_DYING(pedCop[9]) AND IS_PED_DEAD_OR_DYING(pedCop[10])) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(notPlayerPedID, <<5373.1367, -5189.1504, 81.2204>>) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(pedBrad, <<5372.1699, -5182.8872, 81.2387>>) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_WAIT_FOR_VAN_CLEAR") #ENDIF eAllyState = ALLY_WAIT_FOR_VAN_CLEAR ENDIF BREAK // Wait for the 2 van enemies to be killed before the allies take cover by it CASE ALLY_WAIT_FOR_VAN_CLEAR IF IS_PED_DEAD_OR_DYING(pedCop[9]) AND IS_PED_DEAD_OR_DYING(pedCop[10]) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(notPlayerPedID, <<5383.8882, -5184.4175, 80.3353>>) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(pedBrad, <<5384.1724, -5190.8066, 80.5079>>) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_WAIT_FOR_CAR_EXPLOSION") #ENDIF eAllyState = ALLY_WAIT_FOR_CAR_EXPLOSION ENDIF BREAK // Wait for the car to explode before moving the allies ahead CASE ALLY_WAIT_FOR_CAR_EXPLOSION //Car doesn't explode any more... IF IS_PED_INJURED(pedCop[11]) AND IS_PED_INJURED(pedCop[12]) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_TASK_NEAR_EXPLODED_CARS") #ENDIF eAllyState = ALLY_TASK_NEAR_EXPLODED_CARS ENDIF BREAK // Move the allies near the exploded car CASE ALLY_TASK_NEAR_EXPLODED_CARS TASK_ALLY_RUN_TO_COORD_AND_ATTACK(notPlayerPedID, <<5398.9614, -5178.0063, 79.4069>>) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(pedBrad, <<5400.8267, -5180.2720, 79.3336>>) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_GO_NEAR_FINAL_CAR") #ENDIF eAllyState = ALLY_GO_NEAR_FINAL_CAR BREAK // Once all the enemies from the 2 cop cars near the barn are dead, move up the allies CASE ALLY_GO_NEAR_FINAL_CAR IF IS_PED_DEAD_OR_DYING(pedCop[11]) AND IS_PED_DEAD_OR_DYING(pedCop[12]) AND IS_PED_DEAD_OR_DYING(pedCop[13]) AND IS_PED_DEAD_OR_DYING(pedCop[14]) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(notPlayerPedID, (<<5417.7598, -5175.6465, 78.1579>>)) TASK_ALLY_RUN_TO_COORD_AND_ATTACK(pedBrad, (<<5417.4375, -5168.9175, 77.9954>>)) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "UPDATE_ALLIES_TASKING - Going to ALLY_TASK_SHOOT_THE_SHIT_OUT_OF_THE_FINAL_CAR") #ENDIF eAllyState = ALLY_TASK_SHOOT_THE_SHIT_OUT_OF_THE_FINAL_CAR ENDIF BREAK CASE ALLY_TASK_SHOOT_THE_SHIT_OUT_OF_THE_FINAL_CAR eAllyState = ALLY_DONE BREAK CASE ALLY_DONE // Done BREAK ENDSWITCH ENDPROC INT iMaskRemoveTimeout //Added for bug 1640970 PROC ShootOut() IF INIT_STAGE() //Reset iShootOutStage1 = 0 iShootOutStage2 = 0 iShootOutStage3 = 0 eAllyState = ALLY_INIT //Replay SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayShootout), "stageShootOut") //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) IF NOT IS_SCREEN_FADED_OUT() //Score PLAY_AUDIO(PROLOGUE_TEST_COP_GUNFIGHT) ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_POLICE_SHOOTOUT") START_AUDIO_SCENE("PROLOGUE_POLICE_SHOOTOUT") ENDIF //Radar bRadar = TRUE IF bSwapTrolley = FALSE CREATE_MODEL_SWAP(<<5302.142, -5191.521, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) CREATE_MODEL_SWAP(<<5308.040, -5191.028, 82.992>>, 1.0, PROP_CASH_TROLLY, PROP_GOLD_TROLLY, TRUE) bSwapTrolley = TRUE ENDIF //Cover IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5336.8643, -5193.5386, 81.9129>>) covPoint[0] = ADD_COVER_POINT(<<5336.8174, -5193.3325, 81.9110>>, 270.8514, COVUSE_WALLTORIGHT, COVHEIGHT_LOW, COVARC_120) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5332.2729, -5185.2710, 81.7757>>) covPoint[1] = ADD_COVER_POINT(<<5332.2729, -5185.2710, 81.7757>>, 276.6267, COVUSE_WALLTOLEFT, COVHEIGHT_TOOHIGH, COVARC_0TO60) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5332.1934, -5191.9116, 81.7758>>) covPoint[2] = ADD_COVER_POINT(<<5332.1934, -5191.9116, 81.7758>>, 276.6232, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_0TO60) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5326.3535, -5185.2485, 81.7796>>) covPoint[3] = ADD_COVER_POINT(<<5326.3535, -5185.2485, 81.7796>>, 276.9970, COVUSE_WALLTOLEFT, COVHEIGHT_TOOHIGH, COVARC_0TO60) ENDIF IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<5326.3535, -5191.8320, 81.7743>>) covPoint[4] = ADD_COVER_POINT(<<5326.3535, -5191.8320, 81.7743>>, 277.2627, COVUSE_WALLTORIGHT, COVHEIGHT_TOOHIGH, COVARC_0TO60) ENDIF //Action Mode SET_PED_USING_ACTION_MODE(playerPedID, TRUE) SET_PED_USING_ACTION_MODE(notPlayerPedID, TRUE, -1) SET_PED_USING_ACTION_MODE(pedBrad, TRUE, -1, "DEFAULT_ACTION") SET_ENTITY_PROOFS(playerPedID, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE) SET_ENTITY_PROOFS(notPlayerPedID, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE) SET_ENTITY_PROOFS(pedBrad, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE) SET_PED_UPPER_BODY_DAMAGE_ONLY(playerPedID, TRUE) SET_PED_UPPER_BODY_DAMAGE_ONLY(notPlayerPedID, TRUE) SET_PED_UPPER_BODY_DAMAGE_ONLY(pedBrad, TRUE) //Player SET_PED_CONFIG_FLAG(playerPedTrevor, PCF_RunFromFiresAndExplosions, FALSE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_DISABLE_BULLET_REACTIONS, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_DISABLE_PINNED_DOWN, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_DISABLE_ENTRY_REACTIONS, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH, TRUE) SET_PED_CONFIG_FLAG(playerPedTrevor, PCF_DisableExplosionReactions, TRUE) //ADDED STUFF TO TRY TO MAKE HIM BEHAVE IN COVER SET_PED_COMBAT_MOVEMENT(playerPedTrevor, CM_DEFENSIVE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_USE_COVER, TRUE) //SET_PED_CONFIG_FLAG(playerPedTrevor, PCF_ForcePedToFaceRightInCover, TRUE) SET_PED_CONFIG_FLAG(playerPedTrevor, PCF_BlockPedFromTurningInCover, FALSE) //SET_PED_FIRING_PATTERN(playerPedTrevor, FIRING_PATTERN_SHORT_BURSTS) //Michael SET_PED_SUFFERS_CRITICAL_HITS(playerPedMichael, FALSE) SET_PED_MAX_HEALTH(playerPedMichael, 800) SET_ENTITY_HEALTH(playerPedMichael, 800) SET_COMBAT_FLOAT(playerPedMichael, CCF_TIME_BETWEEN_BURSTS_IN_COVER, 2.0) SET_PED_CONFIG_FLAG(playerPedMichael, PCF_RunFromFiresAndExplosions, FALSE) SET_PED_CONFIG_FLAG(playerPedMichael, PCF_DisableExplosionReactions, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedMichael, CA_DISABLE_BULLET_REACTIONS, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedMichael, CA_DISABLE_PINNED_DOWN, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedMichael, CA_DISABLE_ENTRY_REACTIONS, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedMichael, CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH, TRUE) //ADDED STUFF TO TRY TO MAKE HIM BEHAVE IN COVER SET_PED_COMBAT_MOVEMENT(playerPedMichael, CM_DEFENSIVE) SET_PED_COMBAT_ATTRIBUTES(playerPedMichael, CA_USE_COVER, TRUE) //SET_PED_CONFIG_FLAG(playerPedMichael, PCF_ForcePedToFaceRightInCover, TRUE) SET_PED_CONFIG_FLAG(playerPedMichael, PCF_BlockPedFromTurningInCover, FALSE) //SET_PED_FIRING_PATTERN(playerPedMichael, FIRING_PATTERN_SHORT_BURSTS) //Buddy SET_PED_SUFFERS_CRITICAL_HITS(pedBrad, FALSE) SET_PED_CHANCE_OF_FIRING_BLANKS(pedBrad, 100.0, 100.0) SET_PED_MAX_HEALTH(pedBrad, 800) SET_ENTITY_HEALTH(pedBrad, 800) SET_COMBAT_FLOAT(pedBrad, CCF_TIME_BETWEEN_BURSTS_IN_COVER, 2.0) SET_PED_CONFIG_FLAG(pedBrad, PCF_RunFromFiresAndExplosions, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_DISABLE_BULLET_REACTIONS, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_DISABLE_PINNED_DOWN, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_DISABLE_ENTRY_REACTIONS, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH, TRUE) SET_PED_CONFIG_FLAG(pedBrad, PCF_DisableExplosionReactions, TRUE) //ADDED STUFF TO TRY TO MAKE HIM BEHAVE IN COVER SET_PED_COMBAT_MOVEMENT(pedBrad, CM_DEFENSIVE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_USE_COVER, TRUE) SET_PED_CONFIG_FLAG(pedBrad, PCF_ForcePedToFaceRightInCover, TRUE) SET_PED_CONFIG_FLAG(pedBrad, PCF_BlockPedFromTurningInCover, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_BLIND_FIRE_IN_COVER, TRUE) SET_PED_FIRING_PATTERN(pedBrad, FIRING_PATTERN_SHORT_BURSTS) //Blips SAFE_ADD_BLIP_PED(blipMichael, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SAFE_REMOVE_BLIP(blipTrevor) //Dead Guard SPAWN_PED(pedDeadGuard, U_M_M_PROLSEC_01, <<5362.900, -5180.634, 82.802>>, 0.0) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDeadGuard, TRUE) TASK_PLAY_ANIM_ADVANCED(pedDeadGuard, sAnimDictDeadGuard, "dead_guard", <<5362.900, -5180.634, 82.802>>, <<0.0, 0.0, 0.0>>, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_NOT_INTERRUPTABLE | AF_IGNORE_GRAVITY | AF_TURN_OFF_COLLISION | AF_ENDS_IN_DEAD_POSE) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedDeadGuard) SET_MODEL_AS_NO_LONGER_NEEDED(U_M_M_PROLSEC_01) //Player Car SPAWN_VEHICLE(vehCar, RANCHERXL2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(026, 500.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(026, 500.0, sCarrec)), 0) SET_VEHICLE_NUMBER_PLATE_TEXT(vehCar, "87ALN974") FREEZE_ENTITY_POSITION(vehCar, TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(RANCHERXL2) SET_VEHICLE_HAS_STRONG_AXLES(vehCar, TRUE) //SET_ENTITY_PROOFS(vehCar, FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_TYRES_CAN_BURST(vehCar, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_FRONT_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_FRONT_RIGHT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_REAR_LEFT, FALSE) SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehCar, SC_DOOR_REAR_RIGHT, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCar, FALSE) SET_VEHICLE_RADIO_ENABLED(vehCar, FALSE) WAIT_WITH_DEATH_CHECKS(0) pedGetaway = CREATE_PED_INSIDE_VEHICLE(vehCar, PEDTYPE_MISSION, U_M_Y_PROLDRIVER_01) SET_PED_COMPONENT_VARIATION(pedGetaway, PED_COMP_HAIR, 0, 0) SET_PED_COMPONENT_VARIATION(pedGetaway, PED_COMP_SPECIAL2, 0, 0) SET_PED_RELATIONSHIP_GROUP_HASH(pedGetaway, relGroupFriendlyFire) ADD_PED_FOR_DIALOGUE(sPedsForConversation, 5, pedGetaway, "PROGETAWAY") SET_MODEL_AS_NO_LONGER_NEEDED(U_M_Y_PROLDRIVER_01) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedGetaway, TRUE) WAIT_WITH_DEATH_CHECKS(0) //Vans SPAWN_VEHICLE(vehVan[0], STOCKADE3, <<5341.3525 + 1.365, -5177.1487, 81.7620>>, 0.3367) //SET_ENTITY_PROOFS(vehVan[0], FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehVan[0], FALSE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehVan[0], TRUE) WAIT_WITH_DEATH_CHECKS(0) SPAWN_VEHICLE(vehVan[1], STOCKADE3, <<5337.0996 + 1.365, -5177.0315, 81.7620>>, 2.5903) //SET_ENTITY_PROOFS(vehVan[1], FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehVan[1], FALSE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehVan[1], TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(STOCKADE3) WAIT_WITH_DEATH_CHECKS(0) //Trying to prevent the game pausing... //Car In Lot SPAWN_VEHICLE(vehCarInLot, EMPEROR3, <<5355.2109, -5179.9209, 81.8178>>, 341.2480) //SET_ENTITY_PROOFS(vehCarInLot, FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCarInLot, FALSE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehCarInLot, TRUE) //Police Cars // First wave of cars in the parking lot SPAWN_VEHICLE(vehCop[0], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(003, 0.0, sCarrec))) WAIT_WITH_DEATH_CHECKS(0) SPAWN_VEHICLE(vehCop[1], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(004, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(004, 0.0, sCarrec))) WAIT_WITH_DEATH_CHECKS(0) SPAWN_VEHICLE(vehCop[2], POLICEOLD1, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(005, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(005, 0.0, sCarrec))) WAIT_WITH_DEATH_CHECKS(0) // Cop van that fits between first and second waves SPAWN_VEHICLE(vehCop[3], POLICEOLD1, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(006, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(006, 0.0, sCarrec))) WAIT_WITH_DEATH_CHECKS(0) // Second wave of cars that comes driving up the road by the barn SPAWN_VEHICLE(vehCop[4], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(008, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(008, 0.0, sCarrec))) WAIT_WITH_DEATH_CHECKS(0) SPAWN_VEHICLE(vehCop[5], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(009, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(009, 0.0, sCarrec))) WAIT_WITH_DEATH_CHECKS(0) //Cop car at the bottom of the road, near the barn SPAWN_VEHICLE(vehCop[6], POLICEOLD2, <<5505.6299, -5128.1724, 77.3763>>, 87.9630) WAIT_WITH_DEATH_CHECKS(0) INT i REPEAT COUNT_OF(vehCop) i IF NOT IS_ENTITY_DEAD(vehCop[i]) //SET_ENTITY_PROOFS(vehCop[i], FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_STRONG(vehCop[i], TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[i], FALSE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(vehCop[i], TRUE) FREEZE_ENTITY_POSITION(vehCop[i], TRUE) ENDIF ENDREPEAT //Cops REPEAT 17 i //First 17 cops IF i <> 7 createCop(i) IF i = 0 OR i = 3 OR i = 7 GIVE_WEAPON_TO_PED(pedCop[i], wtSMG, INFINITE_AMMO, TRUE) ENDIF IF i = 4 OR i = 5 OR i = 9 OR i = 14 OR i = 16 GIVE_WEAPON_TO_PED(pedCop[i], wtShotgun, INFINITE_AMMO, TRUE) ENDIF IF i >= 0 AND i <= 8 SET_PED_COMBAT_ATTRIBUTES(pedCop[i], CA_CAN_USE_DYNAMIC_STRAFE_DECISIONS, FALSE) SET_COMBAT_FLOAT(pedCop[i], CCF_STRAFE_WHEN_MOVING_CHANCE, 1.0) ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDIF ENDREPEAT IF DOES_ENTITY_EXIST(pedCop[0]) SET_PED_INTO_VEHICLE(pedCop[0], vehCop[0], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[1]) SET_PED_INTO_VEHICLE(pedCop[1], vehCop[0], VS_FRONT_RIGHT) ENDIF IF DOES_ENTITY_EXIST(pedCop[2]) SET_PED_INTO_VEHICLE(pedCop[2], vehCop[1], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[3]) SET_PED_INTO_VEHICLE(pedCop[3], vehCop[1], VS_FRONT_RIGHT) ENDIF IF DOES_ENTITY_EXIST(pedCop[4]) SET_PED_INTO_VEHICLE(pedCop[4], vehCop[2], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[5]) SET_PED_INTO_VEHICLE(pedCop[5], vehCop[2], VS_FRONT_RIGHT) ENDIF IF DOES_ENTITY_EXIST(pedCop[9]) SET_PED_INTO_VEHICLE(pedCop[9], vehCop[3], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[10]) SET_PED_INTO_VEHICLE(pedCop[10], vehCop[3], VS_FRONT_RIGHT) ENDIF IF DOES_ENTITY_EXIST(pedCop[11]) SET_PED_INTO_VEHICLE(pedCop[11], vehCop[4], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[12]) SET_PED_INTO_VEHICLE(pedCop[12], vehCop[4], VS_FRONT_RIGHT) ENDIF IF DOES_ENTITY_EXIST(pedCop[13]) SET_PED_INTO_VEHICLE(pedCop[13], vehCop[5], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[14]) SET_PED_INTO_VEHICLE(pedCop[14], vehCop[5], VS_FRONT_RIGHT) ENDIF IF DOES_ENTITY_EXIST(pedCop[15]) SET_PED_INTO_VEHICLE(pedCop[15], vehCop[6], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[16]) SET_PED_INTO_VEHICLE(pedCop[16], vehCop[6], VS_FRONT_RIGHT) ENDIF // RJM - These cover blocking areas prevent the AI from going into cover in a few zones. // These encompass the fences around the parking lot, the player's starting area, and some spots along the side // of the road after the gate. This keeps the enemy position more focused on the road. ADD_COVER_BLOCKING_AREA(<<5370.1421, -5212.4551, 78.9143>>, <<5359.3608, -5191.8301, 86.8785>>, TRUE, TRUE, TRUE, TRUE) //Fence (Right) ADD_COVER_BLOCKING_AREA(<<5375.4380, -5180.9668, 79.4894>>, <<5360.3911, -5161.3555, 88.8130>>, TRUE, TRUE, TRUE, TRUE) //Fence (Left) ADD_COVER_BLOCKING_AREA(<<5366.0146, -5162.6812, 81.0458>>, <<5274.0205, -5152.0400, 89.9633>>, TRUE, TRUE, TRUE, TRUE) //Fence (Side) ADD_COVER_BLOCKING_AREA(<<5397.5415, -5174.0562, 79.0350>>, <<5373.8130, -5160.8711, 87.0641>>, TRUE, TRUE, TRUE, TRUE) //Trailer + Hay ADD_COVER_BLOCKING_AREA(<<5428.4150, -5193.0215, 76.6645>>, <<5411.4014, -5185.2822, 82.3215>>, TRUE, TRUE, TRUE, TRUE) //Hay Bales //ADD_COVER_BLOCKING_AREA(<<5336.5498, -5180.3726, 80.5163>>, <<5317.1948, -5169.9785, 87.8767>>, TRUE, TRUE, TRUE) //Rocks // RJM - These navmesh blocking areas prevent the AI from pathing within a zone. We're using these to prevent the AI // from running along the outside of the fence, and from running into the player's start position. iNavMeshBlockingID1 = ADD_NAVMESH_BLOCKING_OBJECT(<<5324.8066, -5130.8901, 75.4401>>, <<90.0, 70.0, 15.0>>, 0.0) // Along long side of fence iNavMeshBlockingID2 = ADD_NAVMESH_BLOCKING_OBJECT(<<5370.8306, -5156.0420, 80.3580>>, <<19.5, 50.0, 15.0>>, 0.0) // On left side of gate (from start position) iNavMeshBlockingID3 = ADD_NAVMESH_BLOCKING_OBJECT(<<5370.3306, -5226.0420, 80.3580>>, <<15.0, 50.0, 15.0>>, 0.0) // On right side of gate (from start position) iNavMeshBlockingID4 = ADD_NAVMESH_BLOCKING_OBJECT(<<5357.089844, -5164.394043, 82.905312>>, <<8.0, 5.0, 3.0>>, 0.0) // On right side of gate (from start position) //iNavMeshBlockingNearGarage = ADD_NAVMESH_BLOCKING_OBJECT(<<5326.555176, -5183.244629, 86.795723>>, <<15.0, 51.5, 6.0>>, 0.0) // On right side of gate (from start position) //Timers iTimerCopCars = GET_GAME_TIMER() + 7500 ADD_PED_FOR_DIALOGUE(sPedsForConversation, 4, NULL, "PROCOP") SET_LABEL_AS_TRIGGERED(PRO_COVER1, FALSE) SET_PED_PRELOAD_VARIATION_DATA(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_PRELOAD_VARIATION_DATA(playerPedTrevor, PED_COMP_BERD, 1, 0) IF SKIPPED_STAGE() CLEAR_PED_TASKS_IMMEDIATELY(playerPedTrevor) SET_PED_POSITION(playerPedTrevor, <<5321.2480, -5188.4775, 82.5189>>, 271.9670) CLEAR_PED_TASKS_IMMEDIATELY(playerPedMichael) SET_PED_POSITION(playerPedMichael, <<5323.1680, -5190.4590, 82.5189>>, 181.1772) CLEAR_PED_TASKS_IMMEDIATELY(pedBrad) SET_PED_POSITION(pedBrad, <<5323.2959, -5188.0449, 82.5189>>, 182.8223) SET_GAMEPLAY_CAM_RELATIVE_HEADING(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(playerPedID), <<5318.2, -5185.1, 83.7>>) - GET_ENTITY_HEADING(playerPedID)) //Rayfire rfSecDoorExplosion = GET_RAYFIRE_MAP_OBJECT(<<5318.2, -5185.1, 83.7>>, 10.0, "des_prologue_door") WHILE NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfSecDoorExplosion) rfSecDoorExplosion = GET_RAYFIRE_MAP_OBJECT(<<5318.2, -5185.1, 83.7>>, 10.0, "des_prologue_door") #IF IS_DEBUG_BUILD PRINTLN("Getting Rayfire Map Object - des_prologue_door") #ENDIF ENDWHILE IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfSecDoorExplosion) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion) != RFMO_STATE_END SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion, RFMO_STATE_ENDING) ENDIF ENDIF IF DOES_ENTITY_EXIST(objGarage) IF NOT IS_ENTITY_PLAYING_ANIM(objGarage, sAnimDictMapObjects, "GDoor_Open") PLAY_ENTITY_ANIM(objGarage, "GDoor_Open", sAnimDictMapObjects, INSTANT_BLEND_IN, FALSE, TRUE, FALSE, 0.25) ELSE SET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open", 0.0) SET_ENTITY_ANIM_SPEED(objGarage, sAnimDictMapObjects, "GDoor_Open", 1.0) ENDIF ENDIF SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) // IF bReplaySkip = TRUE // //Interior // UNPIN_INTERIOR(intDepot) // // CLEAR_PED_TASKS_IMMEDIATELY(playerPedTrevor) // // GIVE_WEAPON_TO_PED(playerPedTrevor, wtCarbineRifle, 500, TRUE) // // SET_CURRENT_PED_WEAPON(playerPedTrevor, wtCarbineRifle, TRUE) // // SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 1, 0) // SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 13, 0) // SET_PED_PROP_INDEX(playerPedTrevor, ANCHOR_EYES, 4) // // SET_PED_POSITION(playerPedTrevor, <<5332.1592, -5185.2871, 81.7894>>, 0.0, FALSE) // // TASK_PUT_PED_DIRECTLY_INTO_COVER(playerPedTrevor, <<5332.1592, -5185.2871, 81.7894>>, -1, FALSE, 1.0, TRUE, FALSE, covPoint[1]) // // FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedTrevor) // // WHILE NOT IS_PED_IN_COVER(playerPedTrevor) // OR IS_PED_GOING_INTO_COVER(playerPedTrevor) // IF GET_SCRIPT_TASK_STATUS(playerPedTrevor, SCRIPT_TASK_PUT_PED_DIRECTLY_INTO_COVER) != PERFORMING_TASK // TASK_PUT_PED_DIRECTLY_INTO_COVER(playerPedTrevor, <<5332.1592, -5185.2871, 81.7894>>, -1, FALSE, 1.0, TRUE, FALSE) // ENDIF // // WAIT_WITH_DEATH_CHECKS(0) // ENDWHILE // // WAIT_WITH_DEATH_CHECKS(500) // // //Balaclava // SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) // SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) // CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) // // SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TRV_PRO_MASK_REMOVED, TRUE) // // iCutsceneStage = 3 // // SET_LABEL_AS_TRIGGERED(PRO_COVER1, TRUE) // // bReplaySkip = FALSE // ENDIF ENDIF ELSE IF NOT HAS_LABEL_BEEN_TRIGGERED(ClearShutterTasks) IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneShutterSwitch) AND GET_SYNCHRONIZED_SCENE_PHASE(sceneShutterSwitch) >= 0.95 CLEAR_PED_TASKS(playerPedID) //Score PLAY_AUDIO(PROLOGUE_TEST_SHUTTER_OPEN_OS) SET_LABEL_AS_TRIGGERED(ClearShutterTasks, TRUE) ENDIF ENDIF IF IS_SCREEN_FADED_OUT() AND NOT IS_SCREEN_FADING_IN() IF DOES_ENTITY_EXIST(objGarage) IF (IS_ENTITY_PLAYING_ANIM(objGarage, sAnimDictMapObjects, "GDoor_Open") AND GET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open") = 1.0) IF IS_SCREEN_FADED_OUT() //Score PLAY_AUDIO(PROLOGUE_TEST_COP_GUNFIGHT) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ENDIF ENDIF //Request Cutscene Variations - pro_mcs_5 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_HAIR, 5, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_SPECIAL, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_HAIR, 7, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_BERD, 1, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Brad", pedBrad) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_HAIR, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_FEET, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Getaway_driver", pedGetaway) //SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Cop_Driving_Car", pedCutscene[CopCarDriver]) //SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_COP_Shooting_car", pedCutscene[CopCarShotgun]) ENDIF //Shootout Dialogue IF HAS_LABEL_BEEN_TRIGGERED(PRO_TEAM) 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(PRO_OffShoot, "PRO_OffShoot", CONV_PRIORITY_MEDIUM, TRUE, DO_NOT_DISPLAY_SUBTITLES) ENDIF ENDIF //Shootout Help IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_COVER1) IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(PROHLP_COVER1, "PROHLP_COVER1") ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_COVER2) IF (IS_PED_IN_COVER(playerPedID) AND NOT IS_PED_GOING_INTO_COVER(playerPedID) AND IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_COVER1")) OR NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(PROHLP_COVER2, "PROHLP_COVER2") ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_FREEAIM3) IF (IS_PED_IN_COVER(playerPedID) AND NOT IS_PED_GOING_INTO_COVER(playerPedID) AND IS_PED_AIMING_FROM_COVER(playerPedID) AND IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_COVER2")) OR NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(PROHLP_FREEAIM3, "PROHLP_FREEAIM3") ENDIF ENDIF //Shootout God Text IF HAS_LABEL_BEEN_TRIGGERED(PRO_COVER1) IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_COVER1") PRINT_ADV(PRO_COP, "PRO_COP") ENDIF ENDIF //Trevor removes Balaclava (Take Cover) SWITCH iCutsceneStage CASE 0 IF HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(playerPedTrevor) AND GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) <> CAM_VIEW_MODE_FIRST_PERSON IF playerPedID = playerPedTrevor AND ((IS_PED_IN_COVER(playerPedID) AND NOT IS_PED_GOING_INTO_COVER(playerPedID)) OR HAS_LABEL_BEEN_TRIGGERED(PRO_Advance_1)) // AND IS_PLAYER_FREE_FOR_AMBIENT_TASK(PLAYER_ID()))) WEAPON_TYPE wpCurrent GET_CURRENT_PED_WEAPON(playerPedID, wpCurrent) IF NOT IS_PED_RELOADING(playerPedID) AND wpCurrent = WEAPONTYPE_CARBINERIFLE IF IS_ENTITY_AT_COORD(playerPedID, <<5332.167480, -5185.253906, 83.809387>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5332.145020, -5191.842773, 83.773270>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5326.206055, -5185.222168, 83.793671>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5326.216797, -5191.865234, 83.776054>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5332.157227, -5178.680176, 83.872810>>, <<0.5, 0.5, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5332.795898, -5195.612305, 83.999756>>, <<0.5, 0.75, 2.0>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5336.999023, -5178.898926, 83.838768>>, <<0.75, 2.25, 2.0>>) OR HAS_LABEL_BEEN_TRIGGERED(PRO_Advance_1) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Advance_1) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON) ELSE CLEAR_PED_TASKS(playerPedID) ENDIF WAIT_WITH_DEATH_CHECKS(100) IF NOT IS_PED_RELOADING(playerPedID) AND wpCurrent = WEAPONTYPE_CARBINERIFLE IF NOT HAS_PED_GOT_WEAPON(playerPedTrevor, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedTrevor, wtCarbineRifle, 500, TRUE) ENDIF SET_CURRENT_PED_WEAPON(playerPedTrevor, wtCarbineRifle, TRUE) IF IS_PED_IN_COVER_FACING_LEFT(playerPedTrevor) bPillarCoverRight = FALSE ELSE bPillarCoverRight = TRUE ENDIF //Balaclava IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) <> CAM_VIEW_MODE_FIRST_PERSON IF NOT DOES_ENTITY_EXIST(objBalaclava[TREVOR_BALACLAVA]) objBalaclava[TREVOR_BALACLAVA] = CREATE_OBJECT(P_TREVOR_PROLOGE_BALLY_S, GET_ENTITY_COORDS(playerPedTrevor)) SET_ENTITY_COLLISION(objBalaclava[TREVOR_BALACLAVA], FALSE) ATTACH_ENTITY_TO_ENTITY(objBalaclava[TREVOR_BALACLAVA], playerPedTrevor, GET_PED_BONE_INDEX(playerPedTrevor, BONETAG_HEAD), VECTOR_ZERO, VECTOR_ZERO) ENDIF IF NOT DOES_ENTITY_EXIST(objBalaclava[TREVOR_SKIMASK]) objBalaclava[TREVOR_SKIMASK] = CREATE_OBJECT(P_TREV_SKI_MASK_S, GET_ENTITY_COORDS(playerPedTrevor)) SET_ENTITY_COLLISION(objBalaclava[TREVOR_SKIMASK], FALSE) ATTACH_ENTITY_TO_ENTITY(objBalaclava[TREVOR_SKIMASK], playerPedTrevor, GET_PED_BONE_INDEX(playerPedTrevor, BONETAG_HEAD), VECTOR_ZERO, VECTOR_ZERO) ENDIF ENDIF ANIM_DATA none ANIM_DATA animDataBlend1 animDataBlend1.type = APT_SINGLE_ANIM IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON animDataBlend1.dictionary0 = sAnimDictPrologue6FirstPerson ELSE animDataBlend1.dictionary0 = sAnimDictPrologue6 ENDIF animDataBlend1.filter = GET_HASH_KEY("NoMover_filter") IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON animDataBlend1.ikFlags = AIK_USE_FP_ARM_LEFT ELSE animDataBlend1.ikFlags = AIK_DISABLE_ARM_IK ENDIF IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON animDataBlend1.anim0 = "REMOVE_BALACLAVA" animDataBlend1.flags = AF_SECONDARY | AF_UPPERBODY TASK_SCRIPTED_ANIMATION(playerPedTrevor, animDataBlend1, none, none, INSTANT_BLEND_DURATION, NORMAL_BLEND_DURATION) ELSE //Cover behind pillar IF bPillarCoverRight = FALSE animDataBlend1.anim0 = "remove_balaclava_right" animDataBlend1.flags = AF_SECONDARY TASK_SCRIPTED_ANIMATION(playerPedTrevor, animDataBlend1, none, none, INSTANT_BLEND_DURATION, NORMAL_BLEND_DURATION) //TASK_PLAY_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right", INSTANT_BLEND_IN, FAST_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) //, AF_EXTRACT_INITIAL_OFFSET) // | AF_UPPERBODY | AF_SECONDARY) //0.430 PLAY_ENTITY_ANIM(objBalaclava[TREVOR_BALACLAVA], "remove_balaclava_right_balaclava", sAnimDictPrologue6, INSTANT_BLEND_IN, FALSE, TRUE) PLAY_ENTITY_ANIM(objBalaclava[TREVOR_SKIMASK], "remove_balaclava_right_skimask", sAnimDictPrologue6, INSTANT_BLEND_IN, FALSE, TRUE) ELSE IF HAS_LABEL_BEEN_TRIGGERED(PRO_Advance_1) animDataBlend1.anim0 = "remove_balaclava_right" animDataBlend1.flags = AF_UPPERBODY | AF_SECONDARY TASK_SCRIPTED_ANIMATION(playerPedTrevor, animDataBlend1, none, none, SLOW_BLEND_DURATION, SLOW_BLEND_DURATION) //TASK_PLAY_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right", SLOW_BLEND_IN, SLOW_BLEND_OUT, -1, AF_UPPERBODY | AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) //, AF_EXTRACT_INITIAL_OFFSET) // | AF_UPPERBODY | AF_SECONDARY) //0.430 ELSE animDataBlend1.anim0 = "remove_balaclava" animDataBlend1.flags = AF_SECONDARY TASK_SCRIPTED_ANIMATION(playerPedTrevor, animDataBlend1, none, none, INSTANT_BLEND_DURATION, NORMAL_BLEND_DURATION) //TASK_PLAY_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava", INSTANT_BLEND_IN, FAST_BLEND_OUT, -1, AF_SECONDARY, 0.0, FALSE, AIK_DISABLE_ARM_IK) //, AF_EXTRACT_INITIAL_OFFSET) // | AF_UPPERBODY | AF_SECONDARY) //0.430 ENDIF PLAY_ENTITY_ANIM(objBalaclava[TREVOR_BALACLAVA], "remove_balaclava_balaclava", sAnimDictPrologue6, INSTANT_BLEND_IN, FALSE, TRUE) PLAY_ENTITY_ANIM(objBalaclava[TREVOR_SKIMASK], "remove_balaclava_skimask", sAnimDictPrologue6, INSTANT_BLEND_IN, FALSE, TRUE) ENDIF ENDIF FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedTrevor) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) <> CAM_VIEW_MODE_FIRST_PERSON FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(objBalaclava[TREVOR_BALACLAVA]) FORCE_ENTITY_AI_AND_ANIMATION_UPDATE(objBalaclava[TREVOR_SKIMASK]) ENDIF SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) ENDIF SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TRV_PRO_MASK_REMOVED, TRUE) REPLAY_RECORD_BACK_FOR_TIME(2.5, 3.0, REPLAY_IMPORTANCE_HIGHEST) iMaskRemoveTimeout = GET_GAME_TIMER() + 5000 //Added for bug 1640970 ADVANCE_CUTSCENE() ENDIF ENDIF ENDIF ENDIF ENDIF BREAK CASE 1 //Disable Player Movement DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_AIM) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_CHARACTER_WHEEL) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) IF IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") OR IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") OR IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6FirstPerson, "REMOVE_BALACLAVA") OR GET_GAME_TIMER() > iMaskRemoveTimeout //Added for bug 1640970 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_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") > 0.480) OR (IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") > 0.480) OR (IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6FirstPerson, "REMOVE_BALACLAVA") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedTrevor, sAnimDictPrologue6FirstPerson, "REMOVE_BALACLAVA") > 0.480) CREATE_CONVERSATION_ADV(PRO_Unmask, "PRO_Unmask") ENDIF ENDIF IF (IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") > 0.488) OR (IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") > 0.488) OR (IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6FirstPerson, "REMOVE_BALACLAVA") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedTrevor, sAnimDictPrologue6FirstPerson, "REMOVE_BALACLAVA") > 0.488) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) ADVANCE_CUTSCENE() ENDIF ENDIF BREAK CASE 2 //Disable Player Movement DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_AIM) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_CHARACTER_WHEEL) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) IF NOT IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") AND NOT IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") AND NOT IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6FirstPerson, "REMOVE_BALACLAVA") OR (IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") AND GET_ENTITY_ANIM_CURRENT_TIME(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") > 0.920) //0.936) OR IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") OR IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6FirstPerson, "REMOVE_BALACLAVA") OR GET_GAME_TIMER() > iMaskRemoveTimeout //Added for bug 1640970 CLEAR_PED_SECONDARY_TASK(playerPedTrevor) IF DOES_ENTITY_EXIST(objBalaclava[TREVOR_BALACLAVA]) DETACH_ENTITY(objBalaclava[TREVOR_BALACLAVA]) FREEZE_ENTITY_POSITION(objBalaclava[TREVOR_BALACLAVA], FALSE) SET_ENTITY_ALPHA(objBalaclava[TREVOR_BALACLAVA], 0, TRUE) ENDIF IF DOES_ENTITY_EXIST(objBalaclava[TREVOR_SKIMASK]) DETACH_ENTITY(objBalaclava[TREVOR_SKIMASK]) FREEZE_ENTITY_POSITION(objBalaclava[TREVOR_SKIMASK], FALSE) SET_ENTITY_ALPHA(objBalaclava[TREVOR_SKIMASK], 0, TRUE) ENDIF bRadar = TRUE SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SAFE_REMOVE_BLIP(blipCover) SETTIMERB(0) PRINT_ADV(PRO_COP, "PRO_COP") ADVANCE_CUTSCENE() ENDIF BREAK CASE 3 IF NOT IS_PED_IN_COVER(PLAYER_PED_ID()) REMOVE_COVER_POINT(covPoint[1]) ADVANCE_CUTSCENE() ENDIF // IF DOES_CAM_EXIST(camAnim) // IF IS_CAM_RENDERING(camAnim) // IF NOT IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava") // AND NOT IS_ENTITY_PLAYING_ANIM(playerPedTrevor, sAnimDictPrologue6, "remove_balaclava_right") // RENDER_SCRIPT_CAMS(FALSE, TRUE, DEFAULT_INTERP_TO_FROM_GAME, FALSE) // SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) // ENDIF // ENDIF // ENDIF BREAK ENDSWITCH INT i INT iCopsDead bFirstWaveCopsDead = TRUE iCopsDead = 0 INT iClosestCop BOOL bCopInCarPark = FALSE REPEAT 9 i IF NOT IS_PED_INJURED(pedCop[i]) bFirstWaveCopsDead = FALSE IF IS_ENTITY_AT_COORD(pedCop[i], <<5323.853516, -5194.200195, 93.518600>>, <<41.0, 36.0, 13.0>>) bCopInCarPark = TRUE ENDIF ELSE iCopsDead++ ENDIF ENDREPEAT IF iCarPerFrame < COUNT_OF(vehCop) - 1 iCarPerFrame++ ELSE iCarPerFrame = 0 ENDIF i = iCarPerFrame //REPEAT COUNT_OF(vehCop) i IF NOT IS_ENTITY_DEAD(vehCop[i]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[i]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(vehCop[i])) AND IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(vehCop[i])) STOP_PLAYBACK_RECORDED_VEHICLE(vehCop[i]) ENDIF ENDIF ENDIF //ENDREPEAT IF iCopPerFrame < COUNT_OF(pedCop) - 1 iCopPerFrame++ ELSE iCopPerFrame = 0 ENDIF i = iCopPerFrame //REPEAT COUNT_OF(pedCop) i IF NOT IS_PED_INJURED(pedCop[i]) IF (GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD) = PERFORMING_TASK OR (GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK AND GET_SEQUENCE_PROGRESS(notPlayerPedID) = iSequenceBuddy AND NOT IS_ENTITY_AT_COORD(notPlayerPedID, vSequenceBuddy, <<1.0, 1.0, 2.0>>))) OR (GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD) = PERFORMING_TASK OR (GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK AND GET_SEQUENCE_PROGRESS(pedBrad) = iSequenceBrad AND NOT IS_ENTITY_AT_COORD(pedBrad, vSequenceBrad, <<1.0, 1.0, 2.0>>))) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(pedCop[i])) < 50.0 OR GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), GET_ENTITY_COORDS(pedCop[i])) < 50.0 iClosestCop = i #IF IS_DEBUG_BUILD PRINTLN("iClosestCop = ", iClosestCop) #ENDIF ENDIF ENDIF ENDIF //ENDREPEAT REPEAT COUNT_OF(pedCop) i IF NOT IS_PED_INJURED(pedCop[i]) // IF IS_PED_IN_ANY_VEHICLE(pedCop[i], TRUE) // AND NOT IS_PED_SITTING_IN_ANY_VEHICLE(pedCop[i]) // SET_ENTITY_INVINCIBLE(pedCop[i], TRUE) // ELSE // SET_ENTITY_INVINCIBLE(pedCop[i], FALSE) // ENDIF IF IS_PED_IN_ANY_VEHICLE(pedCop[i], TRUE) SET_PED_RESET_FLAG(pedCop[i], PRF_ConsiderAsPlayerCoverThreatWithoutLOS, TRUE) ENDIF ENDIF ENDREPEAT IF NOT HAS_LABEL_BEEN_TRIGGERED(CopCarWave1) AND TIMERA() > 1000 SET_FAKE_WANTED_LEVEL(5) // RJM - Only one cop car drives up initially FREEZE_ENTITY_POSITION(vehCop[1], FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehCop[1], 004, sCarrec) SET_VEHICLE_SIREN(vehCop[1], TRUE) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehCop[1]) // These cars stay back FREEZE_ENTITY_POSITION(vehCop[0], FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehCop[0], 003, sCarrec) PAUSE_PLAYBACK_RECORDED_VEHICLE(vehCop[0]) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehCop[0]) FREEZE_ENTITY_POSITION(vehCop[2], FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehCop[2], 005, sCarrec) PAUSE_PLAYBACK_RECORDED_VEHICLE(vehCop[2]) FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(vehCop[2]) SET_LABEL_AS_TRIGGERED(CopCarWave1, TRUE) ENDIF // RJM - These are the 2 cop cars that drive in on the left and right IF NOT HAS_LABEL_BEEN_TRIGGERED(CopCarWave2) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5334.1455, -5195.7168, 80.3420>>, <<5324.5811, -5173.1362, 87.0081>>, 10.0) OR GET_GAME_TIMER() > iTimerCopCars // Bring in Cars 2 and 3 UNPAUSE_PLAYBACK_RECORDED_VEHICLE(vehCop[0]) SET_VEHICLE_SIREN(vehCop[0], TRUE) UNPAUSE_PLAYBACK_RECORDED_VEHICLE(vehCop[2]) SET_VEHICLE_SIREN(vehCop[2], TRUE) //Have the guard shack guy run up IF NOT IS_PED_INJURED(pedCop[6]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_PAUSE(NULL, 2500) // TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, (<<5339.8594, -5174.4546, 81.8192>>), PEDMOVE_SPRINT) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_PUT_PED_DIRECTLY_INTO_COVER(NULL, (<<5339.8594, -5174.4546, 81.8192>>), 10000, TRUE, 0, FALSE, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[6], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) //SET_COMBAT_FLOAT(pedCop[6], CCF_STRAFE_WHEN_MOVING_CHANCE, 0.0) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[6], <<5366.3364, -5184.4507, 81.5742>>, 2.0, TRUE) //SET_PED_COMBAT_ATTRIBUTES(pedCop[6], CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED, TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[6], 100.0) ENDIF //Have one cop run up to the parked car on the left IF NOT IS_PED_INJURED(pedCop[8]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_PAUSE(NULL, 3500) // TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, (<<5356.7480, -5178.4180, 81.7719>>), PEDMOVE_SPRINT) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[8], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) //SET_COMBAT_FLOAT(pedCop[8], CCF_STRAFE_WHEN_MOVING_CHANCE, 0.0) //SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[8], <<5356.7480, -5178.4180, 81.7719>>, 10.0, TRUE) //SET_PED_COMBAT_ATTRIBUTES(pedCop[8], CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED, TRUE) SET_PED_COMBAT_MOVEMENT(pedCop[8], CM_WILLADVANCE) SET_PED_COMBAT_ATTRIBUTES(pedCop[8], CA_CAN_CHARGE, TRUE) SET_PED_CONFIG_FLAG(pedCop[8], PCF_ShouldChargeNow, TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[8], 100.0) ENDIF SET_LABEL_AS_TRIGGERED(CopCarWave2, TRUE) ENDIF ELSE ///Cop will exit his defensive area if the player gets too close or 5 other cops die IF NOT IS_PED_INJURED(pedCop[6]) IF NOT HAS_LABEL_BEEN_TRIGGERED(AdvanceCop6) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(pedCop[6])) < 10.0 OR GET_ENTITY_HEALTH(pedCop[6]) < GET_PED_MAX_HEALTH(pedCop[6]) OR iCopsDead >= 3 REMOVE_PED_DEFENSIVE_AREA(pedCop[6]) SET_PED_COMBAT_MOVEMENT(pedCop[6], CM_WILLADVANCE) SET_PED_COMBAT_ATTRIBUTES(pedCop[6], CA_CAN_CHARGE, TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[6], 100.0) SET_LABEL_AS_TRIGGERED(AdvanceCop6, TRUE) ENDIF ENDIF ENDIF //Cop will exit his defensive area if the player gets too close IF NOT IS_ENTITY_DEAD(pedCop[0]) IF NOT HAS_LABEL_BEEN_TRIGGERED(AdvanceCop0) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(pedCop[0])) < 8.0 REMOVE_PED_DEFENSIVE_AREA(pedCop[0]) SET_LABEL_AS_TRIGGERED(AdvanceCop0, TRUE) ENDIF ENDIF ENDIF // Once Wave 2 has been triggered, try to bring in Wave 3 IF NOT HAS_LABEL_BEEN_TRIGGERED(CopCarWave3) IF (iCopsDead > 3 AND ((IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[0]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrec) / 100) * 95) OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0])) AND ((IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[2]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(005, sCarrec) / 100) * 95) OR NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]))) OR IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5354.344727,-5188.610840,87.812073>>, <<5367.501465,-5188.862793,79.542175>>, 70.0) // // One cop runs up to the cop car next to the parked car // IF DOES_ENTITY_EXIST(pedCop[9]) AND NOT IS_ENTITY_DEAD(pedCop[9]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_PAUSE(NULL, 740) // TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, (<<5353.5913, -5183.7612, 81.7617>>), PEDMOVE_SPRINT) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[9], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) // ENDIF // // // One cop runs to the cop SUV on the right // IF DOES_ENTITY_EXIST(pedCop[10]) AND NOT IS_ENTITY_DEAD(pedCop[10]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_PAUSE(NULL, 1243) // TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, (<<5354.7700, -5195.4731, 81.7732>>), PEDMOVE_SPRINT) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[10], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) // ENDIF SET_LABEL_AS_TRIGGERED(CopCarWave3, TRUE) ENDIF ENDIF ENDIF // Warning for the player if he abandons the allies in the parking lot IF NOT bFirstWaveCopsDead IF NOT HAS_LABEL_BEEN_TRIGGERED(PlayLotWarning) IF NOT IS_ENTITY_AT_COORD(playerPedID, <<5336.451660, -5185.199707, 92.828751>>, <<21.0, 20.0, 13.0>>) AND NOT IS_MESSAGE_BEING_DISPLAYED() PRINT_ADV(PRO_TEAM, "PRO_TEAM", DEFAULT_GOD_TEXT_TIME, FALSE) SET_LABEL_AS_TRIGGERED(PlayLotWarning, TRUE) ENDIF ENDIF IF (NOT IS_ENTITY_AT_COORD(playerPedID, <<5323.853516, -5194.200195, 93.518600>>, <<41.0, 36.0, 13.0>>) AND bCopInCarPark = TRUE) OR IS_ENTITY_AT_COORD(playerPedID, <<5301.347168, -5180.395020, 84.018921>>, <<4.0, 3.0, 1.5>>) eMissionFail = failAbandonedCrew missionFailed() ENDIF ELSE IF NOT HAS_LABEL_BEEN_TRIGGERED(FirstWaveDead) //Score LOAD_AUDIO(PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE) PLAY_AUDIO(PROLOGUE_TEST_COP_GUNFIGHT_PROGRESS) SET_LABEL_AS_TRIGGERED(FirstWaveDead, TRUE) ENDIF IF IS_ENTITY_AT_COORD(playerPedID, <<5301.347168, -5180.395020, 84.018921>>, <<4.0, 3.0, 1.5>>) eMissionFail = failAbandonedCrew missionFailed() ENDIF ENDIF IF iSequenceBuddy <> -1 IF GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK iSequenceBuddy = -1 ENDIF ENDIF IF iSequenceBrad <> -1 IF GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK iSequenceBrad = -1 ENDIF ENDIF //Buddy Behaviour UPDATE_ALLIES_TASKING() IF (GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD) = PERFORMING_TASK OR (GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK AND GET_SEQUENCE_PROGRESS(notPlayerPedID) = iSequenceBuddy AND NOT IS_ENTITY_AT_COORD(notPlayerPedID, vSequenceBuddy, <<1.0, 1.0, 2.0>>))) IF NOT IS_ENTITY_DEAD(pedCop[iClosestCop]) SET_PED_SHOOTS_AT_COORD(notPlayerPedID, GET_ENTITY_COORDS(pedCop[iClosestCop])) IF GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK //Fix for bumping buddy without navmesh... IF IS_ENTITY_AT_COORD(playerPedID, GET_ENTITY_COORDS(notPlayerPedID) - <<0.0, 0.0, 0.25>>, <<1.0, 1.0, 2.0>>) CLEAR_PED_TASKS(notPlayerPedID) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(notPlayerPedID, FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(notPlayerPedID, 500.0) ENDIF ENDIF ENDIF ENDIF IF (GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD) = PERFORMING_TASK OR (GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK AND GET_SEQUENCE_PROGRESS(pedBrad) = iSequenceBrad AND NOT IS_ENTITY_AT_COORD(pedBrad, vSequenceBrad, <<1.0, 1.0, 2.0>>))) IF NOT IS_ENTITY_DEAD(pedCop[iClosestCop]) SET_PED_SHOOTS_AT_COORD(pedBrad, GET_ENTITY_COORDS(pedCop[iClosestCop])) IF GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK //Fix for bumping buddy without navmesh... IF IS_ENTITY_AT_COORD(playerPedID, GET_ENTITY_COORDS(pedBrad) - <<0.0, 0.0, 0.25>>, <<1.0, 1.0, 2.0>>) CLEAR_PED_TASKS(pedBrad) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedBrad, FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedBrad, 500.0) ENDIF ENDIF ENDIF ENDIF //Car Park SWITCH iShootOutStage1 CASE 0 IF HAS_LABEL_BEEN_TRIGGERED(CopCarWave2) IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop0) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[0]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0]) AND NOT IS_ENTITY_AT_COORD(vehCop[0], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[0], TRUE) SET_LABEL_AS_TRIGGERED(SirensVehCop0, TRUE) ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[0]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0]) AND NOT IS_ENTITY_AT_COORD(vehCop[0], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT SAFE_IS_PED_DEAD(pedCop[0]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopsArrive0) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(NULL, <<5346.2217, -5178.8379, 81.7782>>, playerPedID, PEDMOVE_SPRINT, TRUE) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[0], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[0], <<5344.2725, -5180.3062, 81.7773>>, 2.0, TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[0], 100.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[0], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[0], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopsArrive0, TRUE) ENDIF ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[0]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[0]) AND NOT IS_ENTITY_AT_COORD(vehCop[0], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT SAFE_IS_PED_DEAD(pedCop[1]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopsArrive1) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[1], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[1], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[1], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[1], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopsArrive1, TRUE) ENDIF ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(CopCarWave1) IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop1) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[1]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[1]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(004, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[1]) AND NOT IS_ENTITY_AT_COORD(vehCop[1], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(004, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[1], TRUE) SET_VEHICLE_SIREN(vehCop[1], FALSE) SET_LABEL_AS_TRIGGERED(SirensVehCop1, TRUE) ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[1]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[1]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(004, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[1]) AND NOT IS_ENTITY_AT_COORD(vehCop[1], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(004, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT SAFE_IS_PED_DEAD(pedCop[2]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopsArrive2) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(NULL, <<5338.0200, -5195.3315, 82.2726>>, playerPedID, PEDMOVE_SPRINT, TRUE) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[2], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[2], 100.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[2], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[2], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopsArrive2, TRUE) ENDIF ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[1]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[1]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(004, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[1]) AND NOT IS_ENTITY_AT_COORD(vehCop[1], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(004, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT SAFE_IS_PED_DEAD(pedCop[3]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopsArrive3) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[3], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[3], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[3], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[3], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopsArrive3, TRUE) ENDIF ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(CopCarWave2) IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop2) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[2]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(005, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]) AND NOT IS_ENTITY_AT_COORD(vehCop[2], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(005, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[2], TRUE) SET_VEHICLE_SIREN(vehCop[2], FALSE) SET_LABEL_AS_TRIGGERED(SirensVehCop2, TRUE) ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[2]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(005, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]) AND NOT IS_ENTITY_AT_COORD(vehCop[2], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(005, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT SAFE_IS_PED_DEAD(pedCop[4]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopsArrive4) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[4], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[4], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[4], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[4], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopsArrive4, TRUE) ENDIF ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[2]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(005, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[2]) AND NOT IS_ENTITY_AT_COORD(vehCop[2], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(005, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT SAFE_IS_PED_DEAD(pedCop[5]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopsArrive5) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(NULL, <<5353.8188, -5197.4165, 81.7737>>, playerPedID, PEDMOVE_SPRINT, TRUE) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[5], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[5], 100.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[5], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[5], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopsArrive5, TRUE) ENDIF ENDIF ENDIF ENDIF IF (SAFE_IS_PED_DEAD(pedCop[0]) OR NOT IS_PED_IN_VEHICLE(pedCop[0], vehCop[0])) AND (SAFE_IS_PED_DEAD(pedCop[1]) OR NOT IS_PED_IN_VEHICLE(pedCop[1], vehCop[0])) AND (SAFE_IS_PED_DEAD(pedCop[2]) OR NOT IS_PED_IN_VEHICLE(pedCop[2], vehCop[1])) AND (SAFE_IS_PED_DEAD(pedCop[3]) OR NOT IS_PED_IN_VEHICLE(pedCop[3], vehCop[1])) AND (SAFE_IS_PED_DEAD(pedCop[4]) OR NOT IS_PED_IN_VEHICLE(pedCop[4], vehCop[2])) AND (SAFE_IS_PED_DEAD(pedCop[5]) OR NOT IS_PED_IN_VEHICLE(pedCop[5], vehCop[2])) iShootOutStage1++ ENDIF BREAK CASE 1 IF bFirstWaveCopsDead = TRUE SAFE_REMOVE_BLIP(blipCover) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) CREATE_CONVERSATION_ADV(PRO_RunToCar, "PRO_RunToCar", DEFAULT, FALSE) SET_LABEL_AS_TRIGGERED(PRO_Advance_1, TRUE) iShootOutStage1++ ENDIF ENDIF BREAK CASE 2 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL) PRINT_HELP_ADV(PROHLP_SPRINT, "PROHLP_SPRINT_KM") ELSE IF GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) = CAM_VIEW_MODE_FIRST_PERSON PRINT_HELP_ADV(PROHLP_SPRINT, "PROHLP_SPRINT_FP") ELSE PRINT_HELP_ADV(PROHLP_SPRINT, "PROHLP_SPRINT") ENDIF ENDIF iShootOutStage1++ ENDIF ENDIF BREAK CASE 3 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() IF GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) <> CAM_VIEW_MODE_FIRST_PERSON PRINT_HELP_ADV(PROHLP_RUNANDGUN, "PROHLP_RUNANDGUN") iShootOutStage1++ ENDIF ENDIF BREAK ENDSWITCH //Road SWITCH iShootOutStage2 CASE 0 IF bFirstWaveCopsDead = TRUE AND NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5338.454102, -5212.937988, 81.762024>>, <<5338.228027, -5161.654785, 86.762024>>, 35.0) //Allow the initial shootout vehicles to be destroyed... IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[0]) IF GET_VEHICLE_ENGINE_HEALTH(vehCop[0]) < 500.0 SET_VEHICLE_ENGINE_HEALTH(vehCop[0], 500.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[0]) < 500.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehCop[0], 500.0) ENDIF SET_ENTITY_PROOFS(vehCop[0], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[1]) IF GET_VEHICLE_ENGINE_HEALTH(vehCop[1]) < 500.0 SET_VEHICLE_ENGINE_HEALTH(vehCop[1], 500.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[1]) < 500.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehCop[1], 500.0) ENDIF SET_ENTITY_PROOFS(vehCop[1], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[2]) IF GET_VEHICLE_ENGINE_HEALTH(vehCop[2]) < 500.0 SET_VEHICLE_ENGINE_HEALTH(vehCop[2], 500.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[2]) < 500.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehCop[2], 500.0) ENDIF SET_ENTITY_PROOFS(vehCop[2], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehVan[0]) IF GET_VEHICLE_ENGINE_HEALTH(vehVan[0]) < 500.0 SET_VEHICLE_ENGINE_HEALTH(vehVan[0], 500.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehVan[0]) < 500.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehVan[0], 500.0) ENDIF SET_ENTITY_PROOFS(vehVan[0], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehVan[1]) IF GET_VEHICLE_ENGINE_HEALTH(vehVan[1]) < 500.0 SET_VEHICLE_ENGINE_HEALTH(vehVan[1], 500.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehVan[1]) < 500.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehVan[1], 500.0) ENDIF SET_ENTITY_PROOFS(vehVan[1], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF SETTIMERB(0) iShootOutStage2++ ENDIF BREAK CASE 1 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) CREATE_CONVERSATION_ADV(PRO_Combat2, "PRO_Combat2") ENDIF IF IS_PED_INJURED(pedCop[9]) AND IS_PED_INJURED(pedCop[10]) iShootOutStage2++ ENDIF BREAK ENDSWITCH IF iShootOutStage3 > 0 IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop3) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[3]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[3]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(006, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[3]) AND NOT IS_ENTITY_AT_COORD(vehCop[3], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(006, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[3], TRUE) SET_LABEL_AS_TRIGGERED(SirensVehCop3, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop9) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[3]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[3]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(006, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[3]) AND NOT IS_ENTITY_AT_COORD(vehCop[3], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(006, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[9]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(NULL, <<5381.1787, -5183.8745, 80.5331>>, playerPedID, PEDMOVE_SPRINT, TRUE) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[9], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[9], 100.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[9], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[9], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(pedCop9, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop10) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[3]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[3]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(006, sCarrec) / 100) * 99) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[3]) AND NOT IS_ENTITY_AT_COORD(vehCop[3], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(006, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[10]) // OPEN_SEQUENCE_TASK(seqMain) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, TRUE) // TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(NULL, <<5381.2695, -5188.1006, 80.5138>>, playerPedID, PEDMOVE_SPRINT, TRUE) // TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(NULL, FALSE) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(NULL, 100.0) // CLOSE_SEQUENCE_TASK(seqMain) // TASK_PERFORM_SEQUENCE(pedCop[10], seqMain) // CLEAR_SEQUENCE_TASK(seqMain) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[10], 100.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[10], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[10], CA_LEAVE_VEHICLES, TRUE) SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(pedCop[10], TRUE) SET_PED_MAX_HEALTH(pedCop[10], 215) SET_ENTITY_HEALTH(pedCop[10], 215) SET_LABEL_AS_TRIGGERED(pedCop10, TRUE) ENDIF ENDIF ENDIF ENDIF IF iShootOutStage3 > 1 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) CREATE_CONVERSATION_ADV(PRO_Combat3, "PRO_Combat3") ENDIF ENDIF SWITCH iShootOutStage3 CASE 0 IF bFirstWaveCopsDead = TRUE OR IS_ENTITY_IN_ANGLED_AREA(playerPedTrevor, <<5364.964844, -5187.167969, 89.641083>>, <<5477.841797, -5189.211914, 75.912354>>, 100.0) FREEZE_ENTITY_POSITION(vehCop[3], FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehCop[3], 006, sCarrec) SET_VEHICLE_SIREN(vehCop[3], TRUE) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCop[3], 1500) iShootOutStage3++ ENDIF BREAK CASE 1 IF DOES_ENTITY_EXIST(vehCop[3]) AND DOES_ENTITY_EXIST(playerPedID) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(vehCop[3])) <= 17.5 OR (IS_PED_INJURED(pedCop[9]) AND IS_PED_INJURED(pedCop[10])) SAFE_REMOVE_BLIP(blipCover) FREEZE_ENTITY_POSITION(vehCop[4], FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehCop[4], 008, sCarrec) SET_VEHICLE_SIREN(vehCop[4], TRUE) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCop[4], 3000) FREEZE_ENTITY_POSITION(vehCop[5], FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehCop[5], 009, sCarrec) SET_VEHICLE_SIREN(vehCop[5], TRUE) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCop[4], 2000) iShootOutStage3++ ENDIF ENDIF BREAK CASE 2 IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop4) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[4]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[4]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(008, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[4]) AND NOT IS_ENTITY_AT_COORD(vehCop[4], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(008, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[4], TRUE) SET_VEHICLE_SIREN(vehCop[4], FALSE) SET_LABEL_AS_TRIGGERED(SirensVehCop4, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop11) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[4]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[4]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(008, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[4]) AND NOT IS_ENTITY_AT_COORD(vehCop[4], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(008, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[11]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[11], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[11], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[11], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[11], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(pedCop11, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop12) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[4]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[4]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(008, sCarrec) / 100) * 99) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[4]) AND NOT IS_ENTITY_AT_COORD(vehCop[4], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(008, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[12]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[12], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[12], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[12], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[12], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(pedCop12, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop5) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[5]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[5]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(009, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[5]) AND NOT IS_ENTITY_AT_COORD(vehCop[5], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(009, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[5], TRUE) SET_LABEL_AS_TRIGGERED(SirensVehCop5, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop13) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[5]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[5]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(009, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[5]) AND NOT IS_ENTITY_AT_COORD(vehCop[5], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(009, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[13]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[13], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[13], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[13], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[13], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(pedCop13, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop14) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[5]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[5]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(009, sCarrec) / 100) * 99) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[5]) AND NOT IS_ENTITY_AT_COORD(vehCop[5], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(009, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[14]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[14], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[14], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[14], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[14], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(pedCop14, TRUE) ENDIF ENDIF ENDIF IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[4]) AND NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[5]) iShootOutStage3++ ENDIF BREAK CASE 3 IF IS_PED_INJURED(pedCop[9]) AND IS_PED_INJURED(pedCop[10]) SETTIMERA(0) iShootOutStage3++ ENDIF BREAK CASE 4 IF NOT IS_ENTITY_DEAD(vehCop[4]) REQUEST_SCRIPT_AUDIO_BANK("Prologue_Explosions_Cop_Car") ENDIF // IF (IS_PED_INJURED(pedCop[11]) // AND IS_PED_INJURED(pedCop[12])) // OR TIMERA() > 5000 // IF NOT IS_ENTITY_DEAD(vehCop[4]) // AND (GET_ENTITY_HEALTH(vehCop[4]) < 1000 // OR GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[4]) < 1000.0 // OR GET_VEHICLE_ENGINE_HEALTH(vehCop[4]) < 1000.0) // IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(vehCop[4])) > 7.5 // AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCop[4])) > 7.5 // AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), GET_ENTITY_COORDS(vehCop[4])) > 7.5 // EXPLODE_VEHICLE(vehCop[4], TRUE, TRUE) // // IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(vehCop[4])) < 10.0 // SHAKE_GAMEPLAY_CAM("MEDIUM_EXPLOSION_SHAKE", 0.25) // ELIF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(vehCop[4])) >= 10.0 // SHAKE_GAMEPLAY_CAM("SMALL_EXPLOSION_SHAKE", 0.25) // ENDIF // // IF sIDCopCarExplosion != -1 // sIDCopCarExplosion = GET_SOUND_ID() // PLAY_SOUND_FROM_COORD(sIDCopCarExplosion, "COP_CAR_EXPLODES", GET_ENTITY_COORDS(vehCop[4], FALSE), "Prologue_Sounds") // ENDIF // ENDIF // ENDIF // ENDIF //Sound IF sIDCopCarExplosion != -1 IF HAS_SOUND_FINISHED(sIDCopCarExplosion) STOP_SOUND(sIDCopCarExplosion) RELEASE_SOUND_ID(sIDCopCarExplosion) sIDCopCarExplosion = -1 RELEASE_NAMED_SCRIPT_AUDIO_BANK("Prologue_Explosions_Cop_Car") ENDIF ENDIF IF (IS_PED_INJURED(pedCop[11]) AND IS_PED_INJURED(pedCop[12]) AND IS_PED_INJURED(pedCop[13]) AND IS_PED_INJURED(pedCop[14])) OR IS_ENTITY_AT_COORD(playerPedID, <<5473.072266, -5128.806152, 80.067757>>, <<56.0, 43.0, 5.0>>) IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[3]) SET_ENTITY_PROOFS(vehCop[3], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[4]) SET_ENTITY_PROOFS(vehCop[4], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[5]) SET_ENTITY_PROOFS(vehCop[5], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE) //Score PLAY_AUDIO(PROLOGUE_TEST_HEAD_TO_GETAWAY_VEHICLE) SETTIMERA(0) FREEZE_ENTITY_POSITION(vehCop[6], FALSE) SET_VEHICLE_SIREN(vehCop[6], TRUE) START_PLAYBACK_RECORDED_VEHICLE(vehCop[6], 011, sCarrec) // FREEZE_ENTITY_POSITION(vehCop[6], FALSE) // SET_VEHICLE_SIREN(vehCop[6], TRUE) // START_PLAYBACK_RECORDED_VEHICLE(vehCop[6], 700, sCarrec) iShootOutStage3++ ENDIF BREAK CASE 5 IF (NOT IS_MESSAGE_BEING_DISPLAYED() AND (NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0)) OR TIMERA() > 10000 //Failsafe for dialogue hang PRINT_ADV(PRO_CAR1, "PRO_CAR1", DEFAULT_GOD_TEXT_TIME, FALSE) IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() CREATE_CONVERSATION_ADV(PRO_ToCar, "PRO_ToCar", DEFAULT, DEFAULT, DO_NOT_DISPLAY_SUBTITLES) ENDIF SETTIMERA(0) iShootOutStage3++ ENDIF BREAK CASE 6 IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop6) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[6]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[6]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(011, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[6]) AND NOT IS_ENTITY_AT_COORD(vehCop[6], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(011, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[6], TRUE) SET_VEHICLE_SIREN(vehCop[6], FALSE) SET_LABEL_AS_TRIGGERED(SirensVehCop6, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop15) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[6]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[6]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(011, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[6]) AND NOT IS_ENTITY_AT_COORD(vehCop[6], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(011, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[15]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[15], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[15], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[15], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[15], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(pedCop15, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(pedCop16) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[6]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[6]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(011, sCarrec) / 100) * 99) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[6]) AND NOT IS_ENTITY_AT_COORD(vehCop[6], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(011, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[16]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[16], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[16], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[16], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[16], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(pedCop16, TRUE) ENDIF ENDIF ENDIF IF IS_PED_INJURED(pedCop[15]) AND IS_PED_INJURED(pedCop[16]) iShootOutStage3++ SETTIMERA(0) ENDIF BREAK CASE 7 IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[6]) IF GET_VEHICLE_ENGINE_HEALTH(vehCop[6]) < 500.0 SET_VEHICLE_ENGINE_HEALTH(vehCop[6], 500.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[6]) < 500.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehCop[6], 500.0) ENDIF SET_ENTITY_PROOFS(vehCop[6], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS() AND NOT IS_PLAYER_SWITCH_IN_PROGRESS() CREATE_CONVERSATION_ADV(PRO_RunToCar, "PRO_RunToCar", DEFAULT, FALSE) ADVANCE_STAGE() ENDIF BREAK ENDSWITCH IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) IF HAS_LABEL_BEEN_TRIGGERED(PRO_ToCar) CREATE_CONVERSATION_ADV(PRO_RespCar, "PRO_RespCar") ENDIF ENDIF IF iShootOutStage3 > 0 OR iCutsceneStage = 4 IF NOT sCamDetails.bRun IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_SWITCH6) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5474.493164, -5165.288574, 72.709763>>, <<5364.621582, -5163.030273, 101.909111>>, 100.0) PRINT_HELP_ADV(PROHLP_SWITCH6, "PROHLP_SWITCH6") ENDIF ENDIF ENDIF IF UPDATE_SELECTOR_HUD(sSelectorPeds) // Returns TRUE when the player has made a selection IF NOT HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER) INFORM_MISSION_STATS_OF_INCREMENT(PRO_SWITCHES) IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_SWITCH6") SAFE_CLEAR_HELP() ENDIF sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed] sCamDetails.bRun = TRUE // IF NOT IS_PED_IN_COVER(notPlayerPedID) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(notPlayerPedID, 1000.0) // ENDIF // // IF NOT IS_PED_IN_COVER(playerPedID) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(playerPedID, 1000.0) // ENDIF IF IS_PLAYER_FREE_AIMING(PLAYER_ID()) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM) OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ATTACK) SET_LABEL_AS_TRIGGERED(SkipAimIntro, TRUE) ENDIF SET_SELECTOR_PED_HINT(sSelectorPeds, SELECTOR_PED_TREVOR, FALSE) ENDIF ENDIF ELSE IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED_SHORT_RANGE(sCamDetails) //RUN_CAM_SPLINE_FROM_PLAYER_TO_PED(sCamDetails, 0.0, 0.0, SELECTOR_CAM_STRAIGHT_INTERP) // Returns FALSE when the camera spline is complete IF sCamDetails.bOKToSwitchPed IF NOT sCamDetails.bPedSwitched IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) UPDATE_PED_REFERENCES() IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5352.876953, -5184.861328, 80.784447>>, <<5322.009766, -5184.812012, 87.518822>>, 23.0) CLEAR_ROOM_FOR_ENTITY(playerPedID) ENDIF UPDATE_BUDDY_AMMO() ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedMichael, "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedTrevor, "TREVOR") //Update the relationship groups IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) ENDIF SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED(playerPedMichael, pedBrad, <<5.0, 0.0, 5.0>>, <<-5.0, 0.0, -5.0>>, 5.0, TRUE) SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED(playerPedTrevor, pedBrad, <<5.0, 0.0, 5.0>>, <<-5.0, 0.0, -5.0>>, 5.0, TRUE) SAFE_REMOVE_BLIP(blipMichael) SAFE_REMOVE_BLIP(blipTrevor) IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SAFE_ADD_BLIP_PED(blipMichael, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) SET_PED_COMBAT_ATTRIBUTES(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CA_DISABLE_PIN_DOWN_OTHERS, TRUE) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) SET_PED_COMBAT_ATTRIBUTES(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CA_DISABLE_PIN_DOWN_OTHERS, TRUE) ENDIF //Task the non-player to run to the cached player destination SET_PED_FIRING_PATTERN(notPlayerPedID, FIRING_PATTERN_SHORT_BURSTS) IF HAS_LABEL_BEEN_TRIGGERED(SkipAimIntro) TASK_COMBAT_HATED_TARGETS_AROUND_PED(notPlayerPedID, 1000.0) ELSE TASK_COMBAT_HATED_TARGETS_AROUND_PED(notPlayerPedID, 1000.0, COMBAT_PED_DISABLE_AIM_INTRO) ENDIF SET_LABEL_AS_TRIGGERED(SkipAimIntro, FALSE) sCamDetails.bPedSwitched = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_GAMEPLAY_CAM_RENDERING() AND NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS() AND GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_COMBAT_HATED_TARGETS_AROUND_PED) = PERFORMING_TASK CLEAR_PED_TASKS(playerPedID) ENDIF ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) IF GET_GAME_TIMER() > iDialogueTimer IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 6 ELIF iDialogueLineCount[iDialogueStage] > 0 iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2000, 5000) iDialogueLineCount[iDialogueStage]-- IF iDialogueStage = 0 CREATE_CONVERSATION_ADV(PRO_CombatM, "PRO_CombatM", CONV_PRIORITY_MEDIUM, FALSE) iDialogueStage++ ELIF iDialogueStage = 1 CREATE_CONVERSATION_ADV(PRO_CombatT, "PRO_CombatT", CONV_PRIORITY_MEDIUM, FALSE) iDialogueStage++ ELIF iDialogueStage = 2 CREATE_CONVERSATION_ADV(PRO_CombatB, "PRO_CombatB", CONV_PRIORITY_MEDIUM, FALSE) iDialogueStage = 0 ENDIF ENDIF ENDIF ENDIF INT iAmmoInClip WEAPON_TYPE wtCurrentWeapon IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_RELOAD) GET_CURRENT_PED_WEAPON(playerPedID, wtCurrentWeapon) GET_AMMO_IN_CLIP(playerPedID, wtCurrentWeapon, iAmmoInClip) IF GET_MAX_AMMO_IN_CLIP(playerPedID, wtCurrentWeapon) > 1 IF iAmmoInClip <= (GET_MAX_AMMO_IN_CLIP(playerPedID, wtCurrentWeapon) / 5) * 4 IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PRINT_HELP_ADV(PROHLP_RELOAD, "PROHLP_RELOAD") ENDIF ENDIF ENDIF ELSE IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_RELOAD") AND GET_GAME_TIMER() > iHelpTimer GET_CURRENT_PED_WEAPON(playerPedID, wtCurrentWeapon) GET_AMMO_IN_CLIP(playerPedID, wtCurrentWeapon, iAmmoInClip) IF iAmmoInClip > (GET_MAX_AMMO_IN_CLIP(playerPedID, wtCurrentWeapon) / 5) * 4 SAFE_CLEAR_HELP() ENDIF ENDIF ENDIF IF iShootOutStage3 > 5 IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[3]) IF GET_VEHICLE_ENGINE_HEALTH(vehCop[3]) < -100.0 SET_VEHICLE_ENGINE_HEALTH(vehCop[3], -100.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[3]) < -100.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehCop[3], -100.0) ENDIF SET_ENTITY_PROOFS(vehCop[3], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[4]) IF GET_VEHICLE_ENGINE_HEALTH(vehCop[4]) < -100.0 SET_VEHICLE_ENGINE_HEALTH(vehCop[4], -100.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[4]) < -100.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehCop[4], -100.0) ENDIF SET_ENTITY_PROOFS(vehCop[4], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF IF NOT SAFE_IS_VEHICLE_DEAD(vehCop[5]) IF GET_VEHICLE_ENGINE_HEALTH(vehCop[5]) < -100.0 SET_VEHICLE_ENGINE_HEALTH(vehCop[5], -100.0) ENDIF IF GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[5]) < -100.0 SET_VEHICLE_PETROL_TANK_HEALTH(vehCop[5], -100.0) ENDIF SET_ENTITY_PROOFS(vehCop[5], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF ENDIF IF (IS_ENTITY_AT_COORD(notPlayerPedID, <<5421.871094, -5115.145020, 80.353561>>, <<30.0, 30.0, 3.50>>) OR IS_ENTITY_AT_COORD(pedBrad, <<5421.871094, -5115.145020, 80.353561>>, <<30.0, 30.0, 3.50>>)) OR IS_ENTITY_AT_COORD(playerPedID, <<5421.871094, -5115.145020, 80.353561>>, <<30.0, 30.0, 3.50>>) IF NOT HAS_LABEL_BEEN_TRIGGERED(Pullout) IF IS_ENTITY_IN_ANGLED_AREA(vehCar, <<5425.953613, -5116.230957, 76.609619>>, <<5434.420898, -5113.641602, 79.724915>>, 5.0) AND NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar) FREEZE_ENTITY_POSITION(vehCar, FALSE) START_PLAYBACK_RECORDED_VEHICLE(vehCar, 026, sCarrec) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCar, 500) ENDIF SET_LABEL_AS_TRIGGERED(Pullout, TRUE) ENDIF ENDIF //Fix for bug 1955672 IF IS_ENTITY_AT_COORD(notPlayerPedID, <<5341.267090, -5218.448242, 83.837387>>, <<1.5, 7.5, 2.5>>) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(playerPedID)) > 50.0 SET_PED_POSITION(notPlayerPedID, <<5343.7412, -5209.2568, 81.7604>>, 317.6852) ENDIF ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) SET_GAME_PAUSED(FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(EMPEROR3) RELEASE_PED_PRELOAD_VARIATION_DATA(playerPedTrevor) //Sound IF sIDCopCarExplosion != -1 STOP_SOUND(sIDCopCarExplosion) RELEASE_SOUND_ID(sIDCopCarExplosion) sIDCopCarExplosion = -1 ENDIF RELEASE_NAMED_SCRIPT_AUDIO_BANK("Prologue_Explosions_Cop_Car") //Alarm IF IS_ALARM_PLAYING("PROLOGUE_VAULT_ALARMS") STOP_ALARM("PROLOGUE_VAULT_ALARMS", TRUE) ENDIF //Interior UNPIN_INTERIOR(intDepot) //Wanted SET_FAKE_WANTED_LEVEL(0) //Cover INT i REPEAT COUNT_OF(covPoint) i REMOVE_COVER_POINT(covPoint[i]) ENDREPEAT //SAFE_REMOVE_BLIP(blipCar) SAFE_REMOVE_BLIP(blipCover) SAFE_REMOVE_BLIP(blipDestination) RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) IF DOES_CAM_EXIST(camAnim) DESTROY_CAM(camAnim) ENDIF SAFE_DELETE_OBJECT(objHiddenCollision) IF DOES_ENTITY_EXIST(objCupboardDoor) SET_OBJECT_AS_NO_LONGER_NEEDED(objCupboardDoor) //SAFE_DELETE_OBJECT(objCupboardDoor) ENDIF SAFE_DELETE_OBJECT(objDebris) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 4) REPEAT COUNT_OF(pedCop) i IF DOES_ENTITY_EXIST(pedCop[i]) IF NOT IS_PED_INJURED(pedCop[i]) DISABLE_PED_PAIN_AUDIO(pedCop[i], TRUE) STOP_PED_SPEAKING(pedCop[i], TRUE) SET_ENTITY_HEALTH(pedCop[i], 0) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedCop[i]) ENDIF ENDREPEAT REPEAT COUNT_OF(vehCop) i IF NOT IS_ENTITY_DEAD(vehCop[i]) SET_ENTITY_PROOFS(vehCop[i], FALSE, FALSE, FALSE, FALSE, FALSE) ENDIF ENDREPEAT //Group IF IS_PED_IN_GROUP(notPlayerPedID) REMOVE_PED_FROM_GROUP(notPlayerPedID) ENDIF IF IS_PED_IN_GROUP(pedBrad) REMOVE_PED_FROM_GROUP(pedBrad) ENDIF // //Unload Texture Dictionary // SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED("SplashScreens") eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC cutsceneGetAway() IF iCutsceneStage > 0 DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) ENDIF IF INIT_STAGE() //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Radar bRadar = TRUE //Blips SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE) //Car FREEZE_ENTITY_POSITION(vehCar, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(notPlayerPedID, TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedBrad, TRUE) REMOVE_PED_DEFENSIVE_AREA(notPlayerPedID) REMOVE_PED_DEFENSIVE_AREA(notPlayerPedID, TRUE) REMOVE_PED_DEFENSIVE_AREA(pedBrad) REMOVE_PED_DEFENSIVE_AREA(pedBrad, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedID, CA_LEAVE_VEHICLES, FALSE) SET_PED_COMBAT_ATTRIBUTES(notPlayerPedID, CA_LEAVE_VEHICLES, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_LEAVE_VEHICLES, FALSE) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Cutscene IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("pro_mcs_5", CS_SECTION_1 | CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6) ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("pro_mcs_5", CS_SECTION_2 | CS_SECTION_3 | CS_SECTION_4 | CS_SECTION_5 | CS_SECTION_6) ENDIF //Getaway path - path that Brad & Michael follow at the end on their way to the getaway car vPathToGetawayCar[0] = <<5425.2314, -5160.5508, 77.2905>> vPathToGetawayCar[1] = <<5431.3740, -5144.4941, 77.2632>> vPathToGetawayCar[2] = <<5428.2598, -5129.7495, 77.0241>> IF DOES_CAM_EXIST(camMain) DESTROY_CAM(camMain) //Fix for bug 2280671 ENDIF #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() CLEAR_PED_TASKS_IMMEDIATELY(playerPedID) SET_PED_POSITION(playerPedID, <<5423.2051, -5118.9268, 76.9971>>, 38.6371) CLEAR_PED_TASKS_IMMEDIATELY(notPlayerPedID) SET_PED_POSITION(notPlayerPedID, <<5421.7095, -5116.1396, 77.0704>>, 192.0948) CLEAR_PED_TASKS_IMMEDIATELY(pedBrad) SET_PED_POSITION(pedBrad, <<5422.5332, -5115.9390, 77.0794>>, 192.0846) SET_LABEL_AS_TRIGGERED(ReplaySkipCops, TRUE) //Police Cars // First wave of cars in the parking lot IF bReplaySkip = FALSE SET_VEHICLE_POSITION(vehCop[0], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(003, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(003, sCarrec), sCarrec), 90.0) SET_VEHICLE_POSITION(vehCop[1], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(004, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(004, sCarrec), sCarrec), 90.0) SET_VEHICLE_POSITION(vehCop[2], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(005, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(005, sCarrec), sCarrec), 90.0) SET_VEHICLE_POSITION(vehCop[3], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(008, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(008, sCarrec), sCarrec), 90.0) SET_VEHICLE_POSITION(vehCop[4], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(009, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(009, sCarrec), sCarrec), 90.0) SET_VEHICLE_POSITION(vehCop[5], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(700, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(011, sCarrec), sCarrec), 90.0) SET_VEHICLE_POSITION(vehCar, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(026, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(026, sCarrec), sCarrec), 105.0) SET_LABEL_AS_TRIGGERED(Pullout, TRUE) ACTIVATE_PHYSICS(vehCar) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ELSE WHILE NOT HAS_CUTSCENE_LOADED() //Request Cutscene Variations - pro_mcs_5 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_HAIR, 5, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_SPECIAL, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_HAIR, 7, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_BERD, 1, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Brad", pedBrad) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_HAIR, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_FEET, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Getaway_driver", pedGetaway) //SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Cop_Driving_Car", pedCutscene[CopCarDriver]) //SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_COP_Shooting_car", pedCutscene[CopCarShotgun]) ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE ENDIF ENDIF ELSE //Request Cutscene Variations - pro_mcs_5 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_HAIR, 5, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_SPECIAL, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Michael", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_HAIR, 7, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_BERD, 1, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Brad", pedBrad) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_HAIR, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_FEET, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION("Brad", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Getaway_driver", pedGetaway) //SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_Cop_Driving_Car", pedCutscene[CopCarDriver]) //SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("PRO_COP_Shooting_car", pedCutscene[CopCarShotgun]) ENDIF SWITCH iCutsceneStage CASE 0 // IF NOT sCamDetails.bRun // IF UPDATE_SELECTOR_HUD(sSelectorPeds) // Returns TRUE when the player has made a selection // IF NOT HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER) // INFORM_MISSION_STATS_OF_INCREMENT(PRO_SWITCHES) // // IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_SWITCH6") // SAFE_CLEAR_HELP() // ENDIF // // sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed] // sCamDetails.bRun = TRUE // // SET_SELECTOR_PED_HINT(sSelectorPeds, SELECTOR_PED_TREVOR, FALSE) // ENDIF // ENDIF // ELSE // IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED(sCamDetails) //RUN_CAM_SPLINE_FROM_PLAYER_TO_PED(sCamDetails, 0.0, 0.0, SELECTOR_CAM_STRAIGHT_INTERP) // Returns FALSE when the camera spline is complete // IF sCamDetails.bOKToSwitchPed // IF NOT sCamDetails.bPedSwitched // IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) // ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedMichael, "MICHAEL") // ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedTrevor, "TREVOR") // // //Update the relationship groups // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) // SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) // ENDIF // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) // ENDIF // // SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED(playerPedMichael, pedBrad, <<5.0, 0.0, 5.0>>, <<-5.0, 0.0, -5.0>>, 5.0, TRUE) // SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED(playerPedTrevor, pedBrad, <<5.0, 0.0, 5.0>>, <<-5.0, 0.0, -5.0>>, 5.0, TRUE) // // SAFE_REMOVE_BLIP(blipMichael) // SAFE_REMOVE_BLIP(blipTrevor) // // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) // SAFE_ADD_BLIP_PED(blipMichael, sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) // // SET_PED_COMBAT_ATTRIBUTES(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], CA_DISABLE_PIN_DOWN_OTHERS, TRUE) // ENDIF // // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) // // SET_PED_COMBAT_ATTRIBUTES(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], CA_DISABLE_PIN_DOWN_OTHERS, TRUE) // ENDIF // // IF notPlayerPedID = sSelectorPeds.pedID[SELECTOR_PED_MICHAEL] // IF NOT IS_PED_IN_VEHICLE(notPlayerPedID, vehCar) // AND NOT IS_PED_GETTING_INTO_A_VEHICLE(notPlayerPedID) // IF GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_ENTER_VEHICLE) <> PERFORMING_TASK // CPRINTLN(DEBUG_MISSION, "RJM - PLAYER SWITCH - Tasking Michael to follow path and get in vehicle") // CLEAR_PED_TASKS(notPlayerPedID) // TASK_ENTER_VEHICLE(notPlayerPedID, vehCar, -1, VS_FRONT_RIGHT, PEDMOVE_RUN, ECF_USE_RIGHT_ENTRY | ECF_BLOCK_SEAT_SHUFFLING | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_RESUME_IF_INTERRUPTED) // ENDIF // ENDIF // ELIF notPlayerPedID = sSelectorPeds.pedID[SELECTOR_PED_TREVOR] // IF NOT IS_ENTITY_AT_COORD(notPlayerPedID, <<5423.0547, -5119.1548, 76.8883>>, <<2.0, 2.0, 3.0>>) // IF GET_SCRIPT_TASK_STATUS(notPlayerPedID, SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) <> PERFORMING_TASK // CPRINTLN(DEBUG_MISSION, "RJM - PLAYER SWITCH - Tasking Trevor to follow path near vehicle") // CLEAR_PED_TASKS(notPlayerPedID) // TASK_ENTER_VEHICLE(notPlayerPedID, vehCar, -1, VS_BACK_LEFT, PEDMOVE_RUN, ECF_USE_LEFT_ENTRY | ECF_BLOCK_SEAT_SHUFFLING | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_RESUME_IF_INTERRUPTED) // ENDIF // ENDIF // ENDIF // // CLEAR_PED_TASKS(playerPedID) // // sCamDetails.bPedSwitched = TRUE // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF // RJM - I wrapped this in a boolean check, because the AI was getting tasked every tick, which // is not ideal. I saw it was being done to catch tasking the the non-player character on player switch, but // I just moved that tasking to the player-switch handler below. IF notPlayerPedID = sSelectorPeds.pedID[SELECTOR_PED_MICHAEL] IF NOT IS_PED_IN_VEHICLE(notPlayerPedID, vehCar) AND NOT IS_PED_GETTING_INTO_A_VEHICLE(notPlayerPedID) IF NOT HAS_LABEL_BEEN_TRIGGERED(TaskMichaelToVehicle) CLEAR_PED_TASKS(notPlayerPedID) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "RJM - Tasking Michael to follow path and get in vehicle") #ENDIF // New Path to the car, instead of the direct path, which often leads across the field, // we now have them run down the road OPEN_SEQUENCE_TASK(seqMain) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[0], GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[0], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[1], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[2], GET_ENTITY_COORDS(vehCar)) AND NOT HAS_LABEL_BEEN_TRIGGERED(RetaskBuddyEnterVehicle) //TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[2], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, vPathToGetawayCar[2], <<5447.468262, -5130.345215, 78.351570>>, PEDMOVE_RUN, TRUE, 0.5, 4.0, FALSE, ENAV_NO_STOPPING) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(<<5423.0547, -5119.1548, 77.0883>>, GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<5423.0547, -5119.1548, 77.0883>>, PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2, DEFAULT_NAVMESH_RADIUS, ENAV_DEFAULT) ENDIF TASK_ENTER_VEHICLE(NULL, vehCar, -1, VS_FRONT_RIGHT, PEDMOVE_RUN, ECF_USE_LEFT_ENTRY | ECF_BLOCK_SEAT_SHUFFLING | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_RESUME_IF_INTERRUPTED) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(notPlayerPedID, seqMain) CLEAR_SEQUENCE_TASK(seqMain) SET_LABEL_AS_TRIGGERED(TaskMichaelToVehicle, TRUE) ENDIF ELSE SAFE_REMOVE_BLIP(blipMichael) ENDIF ELIF notPlayerPedID = sSelectorPeds.pedID[SELECTOR_PED_TREVOR] IF NOT IS_ENTITY_AT_COORD(notPlayerPedID, <<5423.0547, -5119.1548, 76.8883>>, <<2.0, 2.0, 3.0>>) IF NOT HAS_LABEL_BEEN_TRIGGERED(TaskTrevorToVehicle) CLEAR_PED_TASKS(notPlayerPedID) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "RJM - Tasking Trevor to follow path near vehicle") #ENDIF OPEN_SEQUENCE_TASK(seqMain) TASK_AIM_GUN_AT_COORD(NULL, vPathToGetawayCar[1], 1500) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[0], GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[0], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[1], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[2], GET_ENTITY_COORDS(vehCar)) AND NOT HAS_LABEL_BEEN_TRIGGERED(RetaskBuddyEnterVehicle) //TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[2], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, vPathToGetawayCar[2], <<5448.062988, -5123.283691, 78.314911>>, PEDMOVE_RUN, TRUE, 0.5, 4.0, FALSE, ENAV_NO_STOPPING) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(<<5423.0547, -5119.1548, 77.0883>>, GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<5423.0547, -5119.1548, 77.0883>>, PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2, DEFAULT_NAVMESH_RADIUS, ENAV_DEFAULT) ENDIF TASK_ENTER_VEHICLE(NULL, vehCar, -1, VS_BACK_LEFT, PEDMOVE_RUN, ECF_USE_LEFT_ENTRY | ECF_BLOCK_SEAT_SHUFFLING | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_RESUME_IF_INTERRUPTED) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(notPlayerPedID, seqMain) CLEAR_SEQUENCE_TASK(seqMain) SET_LABEL_AS_TRIGGERED(TaskTrevorToVehicle, TRUE) ENDIF ELSE SAFE_REMOVE_BLIP(blipTrevor) ENDIF ENDIF IF NOT IS_PED_IN_VEHICLE(pedBrad, vehCar) AND NOT IS_PED_GETTING_INTO_A_VEHICLE(pedBrad) IF NOT HAS_LABEL_BEEN_TRIGGERED(TaskBradToVehicle) CLEAR_PED_TASKS(pedBrad) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "RJM - Tasking Brad to follow path and get in vehicle") #ENDIF OPEN_SEQUENCE_TASK(seqMain) // New Path to the car, instead of the direct path, which often leads across the field, // we now have them run down the road IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[0], GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[0], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(<<5435.0527, -5140.2559, 77.1114>>, GET_ENTITY_COORDS(vehCar)) TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<5435.0527, -5140.2559, 77.1114>>, PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), GET_ENTITY_COORDS(vehCar)) > GET_DISTANCE_BETWEEN_COORDS(<<5427.9502, -5122.7476, 77.0983>>, GET_ENTITY_COORDS(vehCar)) AND NOT HAS_LABEL_BEEN_TRIGGERED(RetaskBuddyEnterVehicle) //TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, vPathToGetawayCar[2], PEDMOVE_RUN, DEFAULT_TIME_BEFORE_WARP * 2) TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(NULL, <<5427.9502, -5122.7476, 77.0983>>, <<5448.062988, -5123.283691, 78.314911>>, PEDMOVE_RUN, TRUE, 0.5, 4.0, FALSE, ENAV_NO_STOPPING) ENDIF TASK_ENTER_VEHICLE(NULL, vehCar, -1, VS_BACK_RIGHT, PEDMOVE_RUN, ECF_USE_RIGHT_ENTRY | ECF_BLOCK_SEAT_SHUFFLING | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_RESUME_IF_INTERRUPTED) CLOSE_SEQUENCE_TASK(seqMain) TASK_PERFORM_SEQUENCE(pedBrad, seqMain) CLEAR_SEQUENCE_TASK(seqMain) SET_LABEL_AS_TRIGGERED(TaskBradToVehicle, TRUE) ENDIF ELSE SAFE_REMOVE_BLIP(blipBuddy) ENDIF IF HAS_LABEL_BEEN_TRIGGERED(TaskMichaelToVehicle) OR HAS_LABEL_BEEN_TRIGGERED(TaskTrevorToVehicle) OR HAS_LABEL_BEEN_TRIGGERED(TaskBradToVehicle) IF HAS_LABEL_BEEN_TRIGGERED(FinalCar1Driver) IF (IS_PED_SHOOTING(notPlayerPedID) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 7) OR (IS_PED_SHOOTING(pedBrad) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 7) IF NOT IS_PED_INJURED(pedCop[17]) APPLY_DAMAGE_TO_PED(pedCop[17], GET_ENTITY_HEALTH(pedCop[17]) + 100, TRUE) ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(FinalCar1Passenger) IF (IS_PED_SHOOTING(notPlayerPedID) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 5) OR (IS_PED_SHOOTING(pedBrad) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 5) IF NOT IS_PED_INJURED(pedCop[18]) APPLY_DAMAGE_TO_PED(pedCop[18], GET_ENTITY_HEALTH(pedCop[18]) + 100, TRUE) ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(FinalCar2Driver) IF (IS_PED_SHOOTING(notPlayerPedID) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 4) OR (IS_PED_SHOOTING(pedBrad) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 4) IF NOT IS_PED_INJURED(pedCop[19]) APPLY_DAMAGE_TO_PED(pedCop[19], GET_ENTITY_HEALTH(pedCop[19]) + 100, TRUE) ENDIF ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(FinalCar2Passenger) IF (IS_PED_SHOOTING(notPlayerPedID) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(notPlayerPedID), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 3) OR (IS_PED_SHOOTING(pedBrad) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedBrad), vPathToGetawayCar[2]) < (GET_DISTANCE_BETWEEN_COORDS(vPathToGetawayCar[1], vPathToGetawayCar[2]) / 10) * 3) IF NOT IS_PED_INJURED(pedCop[20]) APPLY_DAMAGE_TO_PED(pedCop[20], GET_ENTITY_HEALTH(pedCop[20]) + 100, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(RetaskBuddyEnterVehicle) IF ((DOES_ENTITY_EXIST(pedCop[17]) AND IS_PED_INJURED(pedCop[17])) AND (DOES_ENTITY_EXIST(pedCop[18]) AND IS_PED_INJURED(pedCop[18])) AND (DOES_ENTITY_EXIST(pedCop[19]) AND IS_PED_INJURED(pedCop[19]))) // AND (DOES_ENTITY_EXIST(pedCop[20]) // AND NOT IS_PED_INJURED(pedCop[20]))) SET_LABEL_AS_TRIGGERED(TaskMichaelToVehicle, FALSE) SET_LABEL_AS_TRIGGERED(TaskTrevorToVehicle, FALSE) SET_LABEL_AS_TRIGGERED(TaskBradToVehicle, FALSE) SET_LABEL_AS_TRIGGERED(RetaskBuddyEnterVehicle, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(Pullout) IF (IS_ENTITY_AT_COORD(notPlayerPedID, <<5421.871094, -5115.145020, 80.353561>>, <<30.0, 30.0, 3.50>>) OR IS_ENTITY_AT_COORD(pedBrad, <<5421.871094, -5115.145020, 80.353561>>, <<30.0, 30.0, 3.50>>)) OR IS_ENTITY_AT_COORD(playerPedID, <<5421.871094, -5115.145020, 80.353561>>, <<30.0, 30.0, 3.50>>) IF IS_ENTITY_IN_ANGLED_AREA(vehCar, <<5425.953613, -5116.230957, 76.609619>>, <<5434.420898, -5113.641602, 79.724915>>, 5.0) AND NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar) START_PLAYBACK_RECORDED_VEHICLE(vehCar, 026, sCarrec) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCar, 500) ENDIF SET_LABEL_AS_TRIGGERED(Pullout, TRUE) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_GetIn_1) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PLAY_PED_AMBIENT_SPEECH(pedBrad, "GET_OUT_OF_HERE", SPEECH_PARAMS_FORCE_SHOUTED_CLEAR) SET_LABEL_AS_TRIGGERED(PRO_GetIn_1, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TaskFinalCar) IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<5430.223633, -5157.383789, 86.300346>>, <<5437.865234, -5089.691406, 76.055397>>, 150.0) OR IS_ENTITY_IN_ANGLED_AREA(notPlayerPedID, <<5430.223633, -5157.383789, 86.300346>>, <<5437.865234, -5089.691406, 76.055397>>, 150.0) OR IS_ENTITY_IN_ANGLED_AREA(pedBrad, <<5430.223633, -5157.383789, 86.300346>>, <<5437.865234, -5089.691406, 76.055397>>, 150.0) SPAWN_VEHICLE(vehCop[7], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(701, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(701, 0.0, sCarrec))) SPAWN_VEHICLE(vehCop[8], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(702, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(702, 0.0, sCarrec))) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[7], FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[8], FALSE) createCop(17) createCop(18) createCop(19) //createCop(20) IF DOES_ENTITY_EXIST(pedCop[17]) SET_PED_INTO_VEHICLE(pedCop[17], vehCop[7], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[18]) SET_PED_INTO_VEHICLE(pedCop[18], vehCop[7], VS_FRONT_RIGHT) ENDIF IF DOES_ENTITY_EXIST(pedCop[19]) SET_PED_INTO_VEHICLE(pedCop[19], vehCop[8], VS_DRIVER) ENDIF IF DOES_ENTITY_EXIST(pedCop[20]) SET_PED_INTO_VEHICLE(pedCop[20], vehCop[8], VS_FRONT_RIGHT) ENDIF IF HAS_VEHICLE_RECORDING_BEEN_LOADED(701, sCarrec) START_PLAYBACK_RECORDED_VEHICLE(vehCop[7], 701, sCarrec) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCop[7], 3000) SET_VEHICLE_SIREN(vehCop[7], TRUE) ENDIF IF HAS_VEHICLE_RECORDING_BEEN_LOADED(702, sCarrec) START_PLAYBACK_RECORDED_VEHICLE(vehCop[8], 702, sCarrec) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCop[8], 3000) SET_VEHICLE_SIREN(vehCop[8], TRUE) ENDIF IF HAS_LABEL_BEEN_TRIGGERED(ReplaySkipCops) SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE(vehCop[7]) SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE(vehCop[8]) IF NOT IS_PED_INJURED(pedCop[17]) APPLY_DAMAGE_TO_PED(pedCop[17], GET_ENTITY_HEALTH(pedCop[17]) + 100, TRUE) ENDIF IF NOT IS_PED_INJURED(pedCop[18]) APPLY_DAMAGE_TO_PED(pedCop[18], GET_ENTITY_HEALTH(pedCop[18]) + 100, TRUE) ENDIF IF NOT IS_PED_INJURED(pedCop[19]) APPLY_DAMAGE_TO_PED(pedCop[19], GET_ENTITY_HEALTH(pedCop[19]) + 100, TRUE) ENDIF IF NOT IS_PED_INJURED(pedCop[20]) APPLY_DAMAGE_TO_PED(pedCop[20], GET_ENTITY_HEALTH(pedCop[20]) + 100, TRUE) ENDIF ENDIF SET_LABEL_AS_TRIGGERED(TaskFinalCar, TRUE) ENDIF ELSE IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[7]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(701, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND NOT IS_ENTITY_AT_COORD(vehCop[7], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(701, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop7) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[7]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(701, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND NOT IS_ENTITY_AT_COORD(vehCop[7], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(701, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[7], TRUE) SET_LABEL_AS_TRIGGERED(SirensVehCop7, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(FinalCar1Driver) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[7]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(701, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND NOT IS_ENTITY_AT_COORD(vehCop[7], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(701, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[17]) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[7], TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[17], 100.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[17], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[17], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(FinalCar1Driver, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(FinalCar1Passenger) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[7]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(701, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[7]) AND NOT IS_ENTITY_AT_COORD(vehCop[7], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(701, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[18]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[18], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[18], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[18], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[18], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(FinalCar1Passenger, TRUE) ENDIF ENDIF ENDIF ENDIF IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[8]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(702, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND NOT IS_ENTITY_AT_COORD(vehCop[8], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(702, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT HAS_LABEL_BEEN_TRIGGERED(SirensVehCop8) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[8]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(702, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND NOT IS_ENTITY_AT_COORD(vehCop[8], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(702, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) SET_VEHICLE_HAS_MUTED_SIRENS(vehCop[8], TRUE) SET_VEHICLE_SIREN(vehCop[8], FALSE) SET_LABEL_AS_TRIGGERED(SirensVehCop8, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(FinalCar2Driver) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[8]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(702, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND NOT IS_ENTITY_AT_COORD(vehCop[8], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(702, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[19]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[19], FALSE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[19], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[19], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[19], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(FinalCar2Driver, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(FinalCar2Passenger) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[8]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(702, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[8]) AND NOT IS_ENTITY_AT_COORD(vehCop[8], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(702, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[20]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[20], 100.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[20], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[20], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(FinalCar2Passenger, TRUE) ENDIF ENDIF ENDIF ENDIF ENDIF INT i IF iCarPerFrame < COUNT_OF(vehCop) - 1 iCarPerFrame++ ELSE iCarPerFrame = 0 ENDIF i = iCarPerFrame //REPEAT COUNT_OF(vehCop) i IF NOT IS_ENTITY_DEAD(vehCop[i]) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[i]) IF DOES_ENTITY_EXIST(GET_PED_IN_VEHICLE_SEAT(vehCop[i])) AND IS_PED_INJURED(GET_PED_IN_VEHICLE_SEAT(vehCop[i])) STOP_PLAYBACK_RECORDED_VEHICLE(vehCop[i]) ENDIF ENDIF ENDIF //ENDREPEAT // IF iCopPerFrame < COUNT_OF(pedCop) - 1 // iCopPerFrame++ // ELSE // iCopPerFrame = 0 // ENDIF // // i = iCopPerFrame //REPEAT COUNT_OF(pedCop) i // IF NOT IS_PED_INJURED(pedCop[i]) // IF IS_PED_IN_ANY_VEHICLE(pedCop[i], TRUE) // AND NOT IS_PED_SITTING_IN_ANY_VEHICLE(pedCop[i]) // SET_ENTITY_INVINCIBLE(pedCop[i], TRUE) // ELSE // SET_ENTITY_INVINCIBLE(pedCop[i], FALSE) // ENDIF // ENDIF // //ENDREPEAT REPEAT COUNT_OF(pedCop) i IF NOT IS_PED_INJURED(pedCop[i]) // IF IS_PED_IN_ANY_VEHICLE(pedCop[i], TRUE) // AND NOT IS_PED_SITTING_IN_ANY_VEHICLE(pedCop[i]) // SET_ENTITY_INVINCIBLE(pedCop[i], TRUE) // ELSE // SET_ENTITY_INVINCIBLE(pedCop[i], FALSE) // ENDIF IF IS_PED_IN_ANY_VEHICLE(pedCop[i], TRUE) SET_PED_RESET_FLAG(pedCop[i], PRF_ConsiderAsPlayerCoverThreatWithoutLOS, TRUE) ENDIF ENDIF ENDREPEAT DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) SET_PED_RESET_FLAG(notPlayerPedID, PRF_UseTighterEnterVehicleSettings, TRUE) SET_PED_RESET_FLAG(pedBrad, PRF_UseTighterEnterVehicleSettings, TRUE) IF ((NOT IS_PED_INJURED(pedCop[17]) OR NOT IS_PED_INJURED(pedCop[18]) OR NOT IS_PED_INJURED(pedCop[19])) AND IS_ENTITY_AT_COORD(playerPedID, GET_ENTITY_COORDS(vehCar), <<5.0, 5.0, 3.0>>) AND NOT IS_ENTITY_AT_COORD(notPlayerPedID, GET_ENTITY_COORDS(vehCar), <<5.0, 5.0, 3.0>>) AND NOT IS_ENTITY_AT_COORD(pedBrad, GET_ENTITY_COORDS(vehCar), <<5.0, 5.0, 3.0>>)) PRINT_ADV(PRO_CARCREW, "PRO_CARCREW") ENDIF IF IS_ENTITY_AT_COORD(playerPedID, GET_ENTITY_COORDS(vehCar), <<30.0, 30.0, 3.0>>) SET_FORCE_HD_VEHICLE(vehCar, TRUE) ENDIF IF (((DOES_ENTITY_EXIST(pedCop[17]) AND IS_PED_INJURED(pedCop[17]) AND DOES_ENTITY_EXIST(pedCop[18]) AND IS_PED_INJURED(pedCop[18]) AND DOES_ENTITY_EXIST(pedCop[19]) AND IS_PED_INJURED(pedCop[19])) OR ((IS_PED_IN_VEHICLE(notPlayerPedID, vehCar) OR IS_PED_GETTING_INTO_A_VEHICLE(notPlayerPedID)) AND (IS_PED_IN_VEHICLE(pedBrad, vehCar) OR IS_PED_GETTING_INTO_A_VEHICLE(pedBrad)))) AND IS_ENTITY_AT_COORD(playerPedID, GET_ENTITY_COORDS(vehCar), <<5.0, 5.0, 3.0>>) AND NOT IS_PED_RAGDOLL(PLAYER_PED_ID()) AND NOT IS_PED_GETTING_UP(PLAYER_PED_ID())) OR bReplaySkip = TRUE SET_FORCE_HD_VEHICLE(vehCar, TRUE) IF IS_THIS_PRINT_BEING_DISPLAYED("PRO_CARCREW") CLEAR_PRINTS() ENDIF IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_CAR1") PRINT_HELP_FOREVER("PROHLP_CAR1") ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_GetIn_3) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() PLAY_PED_AMBIENT_SPEECH(pedBrad, "GET_IN_VEHICLE", SPEECH_PARAMS_FORCE_SHOUTED_CLEAR) SET_LABEL_AS_TRIGGERED(PRO_GetIn_3, TRUE) ENDIF ENDIF IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_ENTER) IF GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_ENTER_VEHICLE) <> PERFORMING_TASK CLEAR_PED_TASKS(playerPedID) IF playerPedID = playerPedMichael TASK_ENTER_VEHICLE(playerPedID, vehCar, -1, VS_FRONT_RIGHT, PEDMOVE_RUN, ECF_USE_RIGHT_ENTRY | ECF_BLOCK_SEAT_SHUFFLING | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_RESUME_IF_INTERRUPTED) ELIF playerPedID = playerPedTrevor TASK_ENTER_VEHICLE(playerPedID, vehCar, -1, VS_BACK_LEFT, PEDMOVE_RUN, ECF_USE_LEFT_ENTRY | ECF_BLOCK_SEAT_SHUFFLING | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_RESUME_IF_INTERRUPTED) ENDIF ENDIF ENDIF // IF (IS_PED_IN_VEHICLE(playerPedMichael, vehCar) // OR (IS_PED_GETTING_INTO_A_VEHICLE(playerPedMichael) // /*AND GET_VEHICLE_DOOR_ANGLE_RATIO(vehCar, SC_DOOR_FRONT_RIGHT) > 0.5*/)) // AND (IS_PED_IN_VEHICLE(playerPedTrevor, vehCar) // OR (IS_PED_GETTING_INTO_A_VEHICLE(playerPedTrevor) // /*AND GET_VEHICLE_DOOR_ANGLE_RATIO(vehCar, SC_DOOR_REAR_LEFT) > 0.5*/)) // AND (IS_PED_IN_VEHICLE(pedBrad, vehCar) // OR (IS_PED_GETTING_INTO_A_VEHICLE(pedBrad) // /*AND GET_VEHICLE_DOOR_ANGLE_RATIO(vehCar, SC_DOOR_REAR_RIGHT) > 0.5*/)) IF IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_ENTER) OR bReplaySkip = TRUE IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, FALSE, TCF_CLEAR_TASK_INTERRUPT_CHECKS) UPDATE_PED_REFERENCES() SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) ENDIF SET_ENTITY_INVINCIBLE(pedGetaway, TRUE) #IF IS_DEBUG_BUILD PRINTLN("SET_ENTITY_INVINCIBLE(pedGetaway, TRUE) = ", GET_ENTITY_HEALTH(pedGetaway)) #ENDIF SET_ENTITY_INVINCIBLE(playerPedMichael, TRUE) SET_ENTITY_INVINCIBLE(playerPedTrevor, TRUE) SET_ENTITY_INVINCIBLE(pedBrad, TRUE) IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar) IF GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehCar) = GET_VEHICLE_RECORDING_ID(026, sCarrec) SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE(vehCar) ENDIF ENDIF SET_VEHICLE_ENGINE_ON(vehCar, TRUE, TRUE) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_POLICE_SHOOTOUT") STOP_AUDIO_SCENE("PROLOGUE_POLICE_SHOOTOUT") ENDIF CLEAR_TEXT() SET_VEHICLE_ENGINE_HEALTH(vehCar, 1000.0) SET_VEHICLE_PETROL_TANK_HEALTH(vehCar, 1000.0) IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_PLAYER_PED_MODEL(CHAR_MICHAEL), CEO_PRESERVE_FACE_BLOOD_DAMAGE | CEO_PRESERVE_BODY_BLOOD_DAMAGE) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF REGISTER_ENTITY_FOR_CUTSCENE(pedBrad, "Brad", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(pedGetaway, "PRO_Getaway_driver", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehCar, "getaway_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehCutscene, "chase_cop_car", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, POLICEOLD2) REGISTER_ENTITY_FOR_CUTSCENE(pedCutscene[CopCarDriver], "PRO_Cop_Driving_Car", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, S_M_M_SNOWCOP_01) REGISTER_ENTITY_FOR_CUTSCENE(pedCutscene[CopCarShotgun], "PRO_COP_Shooting_car", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, S_M_M_SNOWCOP_01) // objWeapon[WEAPON_MICHAEL] = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(playerPedMichael, wtCarbineRifle) // // REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_MICHAEL], "Michaels_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_TREVOR] = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(playerPedTrevor, wtCarbineRifle) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_TREVOR], "Trevors_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) //Score LOAD_AUDIO(PROLOGUE_TEST_POLICE_CAR_CHASE_OS) PLAY_AUDIO(PROLOGUE_TEST_GETAWAY_CUTSCENE) START_CUTSCENE() REPLAY_RECORD_BACK_FOR_TIME(5.0, 0.0, REPLAY_IMPORTANCE_HIGH) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) WAIT_WITH_DEATH_CHECKS(0) IF NOT IS_REPEAT_PLAY_ACTIVE() SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) ENDIF //Fix car door/window SET_VEHICLE_DOOR_CONTROL(vehCar, SC_DOOR_REAR_LEFT, DT_DOOR_INTACT, 0.0) FIX_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) FIX_VEHICLE_WINDOW(vehCar, SC_WINDOW_FRONT_LEFT) //Brad Balaclava + Mask SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_HAIR, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_FEET, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) IF bReplaySkip = TRUE IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF bReplaySkip = FALSE ENDIF ADVANCE_CUTSCENE() ENDIF ENDIF ELSE IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROHLP_CAR1") AND NOT IS_HELP_MESSAGE_FADING_OUT() SAFE_CLEAR_HELP() ENDIF ENDIF BREAK CASE 1 SET_PED_RESET_FLAG(playerPedMichael, PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(playerPedTrevor, PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_PED_RESET_FLAG(pedBrad, PRF_PreventGoingIntoShuntInVehicleState, TRUE) SET_FORCE_HD_VEHICLE(vehCar, TRUE) IF NOT DOES_ENTITY_EXIST(vehCutscene) ENTITY_INDEX entityCutscene entityCutscene = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("chase_cop_car") IF DOES_ENTITY_EXIST(entityCutscene) vehCutscene = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(entityCutscene) #IF IS_DEBUG_BUILD SET_VEHICLE_NAME_DEBUG(vehCutscene, "vehCutscene") #ENDIF SET_VEHICLE_SIREN(vehCutscene, TRUE) SET_SIREN_WITH_NO_DRIVER(vehCutscene, TRUE) SET_VEHICLE_LIGHTS(vehCutscene, FORCE_VEHICLE_LIGHTS_ON) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(pedCutscene[CopCarDriver]) ENTITY_INDEX entityCutscene entityCutscene = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("PRO_Cop_Driving_Car") IF DOES_ENTITY_EXIST(entityCutscene) pedCutscene[CopCarDriver] = GET_PED_INDEX_FROM_ENTITY_INDEX(entityCutscene) #IF IS_DEBUG_BUILD SET_PED_NAME_DEBUG(pedCutscene[CopCarDriver], "pedCutscene[CopCarDriver]") #ENDIF ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(pedCutscene[CopCarShotgun]) ENTITY_INDEX entityCutscene entityCutscene = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("PRO_COP_Shooting_car") IF DOES_ENTITY_EXIST(entityCutscene) pedCutscene[CopCarShotgun] = GET_PED_INDEX_FROM_ENTITY_INDEX(entityCutscene) #IF IS_DEBUG_BUILD SET_PED_NAME_DEBUG(pedCutscene[CopCarShotgun], "pedCutscene[CopCarShotgun]") #ENDIF ENDIF ENDIF //Duffle Bag IF NOT HAS_LABEL_BEEN_TRIGGERED(CutsceneBagRemove) IF GET_CUTSCENE_TIME() > ROUND(11.000000 * 1000.0) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 0, 0) SET_LABEL_AS_TRIGGERED(CutsceneBagRemove, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(WindowSmash1) IF GET_CUTSCENE_TIME() > ROUND(27.533335 * 1000.0) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) SET_LABEL_AS_TRIGGERED(WindowSmash1, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(WindowSmash2) IF GET_CUTSCENE_TIME() > ROUND(33.233334 * 1000.0) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_FRONT_LEFT) //APPLY_PED_BLOOD_SPECIFIC(pedGetaway, ENUM_TO_INT(PDZ_HEAD), 0.583, 0.669, 81.680, 1.0, 0, 0.0, "ShotgunLarge") APPLY_PED_BLOOD_SPECIFIC(playerPedMichael, ENUM_TO_INT(PDZ_HEAD), 0.600, 0.550, 0.000, 1.000, -1, 0.000, "Scripted_Ped_Splash_Back") SET_LABEL_AS_TRIGGERED(WindowSmash2, TRUE) ENDIF ENDIF // IF NOT bVideoRecording // IF GET_CUTSCENE_TIME() > ROUND(41.2400002 * 1000.0) // AND GET_CUTSCENE_TIME() < ROUND(44.500002 * 1000.0) // REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) // // bVideoRecording = TRUE // ENDIF // ENDIF // // IF bVideoRecording // IF GET_CUTSCENE_TIME() > ROUND(44.569000 * 1000.0) // REPLAY_STOP_EVENT() // // bVideoRecording = FALSE // ENDIF // ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(WindowSmash3) IF GET_CUTSCENE_TIME() > ROUND(41.600002 * 1000.0) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDSCREEN_FRONT) IF NOT IS_ENTITY_DEAD(vehCutscene) SMASH_VEHICLE_WINDOW(vehCutscene, SC_WINDSCREEN_REAR) ENDIF SET_LABEL_AS_TRIGGERED(WindowSmash3, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(WindowSmash4) IF GET_CUTSCENE_TIME() > ROUND(41.600002 * 1000.0) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDSCREEN_REAR) SET_LABEL_AS_TRIGGERED(WindowSmash4, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_PROLOGUE_TEST_POLICE_CAR_CHASE_OS) IF GET_CUTSCENE_TIME() > ROUND(16.300000 * 1000.0) PLAY_AUDIO(PROLOGUE_TEST_POLICE_CAR_CHASE_OS) SET_LABEL_AS_TRIGGERED(TRIGGER_PROLOGUE_TEST_POLICE_CAR_CHASE_OS, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_PROLOGUE_TEST_POLICE_CAR_CHASE) IF GET_CUTSCENE_TIME() > ROUND(23.000000 * 1000.0) PLAY_AUDIO(PROLOGUE_TEST_POLICE_CAR_CHASE) SET_LABEL_AS_TRIGGERED(TRIGGER_PROLOGUE_TEST_POLICE_CAR_CHASE, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_PROLOGUE_TEST_POLICE_CAR_CRASH) IF GET_CUTSCENE_TIME() > ROUND(41.600002 * 1000.0) PLAY_AUDIO(PROLOGUE_TEST_POLICE_CAR_CRASH) SET_LABEL_AS_TRIGGERED(TRIGGER_PROLOGUE_TEST_POLICE_CAR_CRASH, TRUE) ENDIF ENDIF IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON IF NOT HAS_LABEL_BEEN_TRIGGERED(FIRST_PERSON_SWITCH_CAM_ANIM) IF GET_CUTSCENE_TIME() > ROUND(44.600002 * 1000.0) AND HAS_CUTSCENE_CUT_THIS_FRAME() SET_LABEL_AS_TRIGGERED(FIRST_PERSON_SWITCH_CAM_ANIM, TRUE) ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(FIRST_PERSON_SWITCH_CAM_ANIM) //Camera IF NOT DOES_CAM_EXIST(camAnim) camAnim = CREATE_CAMERA(CAMTYPE_ANIMATED, TRUE) sceneAnimatedFirstPersonCam = CREATE_SYNCHRONIZED_SCENE(VECTOR_ZERO, VECTOR_ZERO) //<<0.0, 0.0, -0.25>>, VECTOR_ZERO) ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneAnimatedFirstPersonCam, vehCar, -1) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(sceneAnimatedFirstPersonCam, FALSE) SET_SYNCHRONIZED_SCENE_LOOPED(sceneAnimatedFirstPersonCam, FALSE) #IF IS_DEBUG_BUILD STRING sAnimName IF NOT bDebugSwitchCamAnimSide sAnimName = "leadout_action_rear_cam" ELSE sAnimName = "leadout_action_side_cam" ENDIF PRINTLN("sAnimName = ", sAnimName) #ENDIF PLAY_SYNCHRONIZED_CAM_ANIM(camAnim, sceneAnimatedFirstPersonCam, #IF IS_DEBUG_BUILD sAnimName #ENDIF #IF NOT IS_DEBUG_BUILD "leadout_action_rear_cam" #ENDIF, sAnimDictPrologue_LeadOut) RENDER_SCRIPT_CAMS(TRUE, FALSE) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(FIRST_PERSON_SWITCH_CAM_FLASH) IF GET_CUTSCENE_TIME() > GET_CUTSCENE_TOTAL_DURATION() - 300 ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE) PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET") SET_LABEL_AS_TRIGGERED(FIRST_PERSON_SWITCH_CAM_FLASH, TRUE) ENDIF ENDIF BYPASS_CUTSCENE_CAM_RENDERING_THIS_UPDATE() ENDIF ENDIF // IF NOT IS_NEW_LOAD_SCENE_ACTIVE() // NEW_LOAD_SCENE_START_SPHERE(<<4029.51978, -5050.21680, 107.90446>>, 50.0) // ELSE // PRINTLN("IS_NEW_LOAD_SCENE_LOADED() = ", IS_NEW_LOAD_SCENE_LOADED()) // ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("PRO_Getaway_driver") //SET_PED_INTO_VEHICLE(pedGetaway, vehCar, VS_DRIVER) //SET_ENTITY_INVINCIBLE(pedGetaway, TRUE) PRINTLN("SET_ENTITY_INVINCIBLE(pedGetaway, TRUE) = ", GET_ENTITY_HEALTH(pedGetaway)) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") CLEAR_PED_TASKS_IMMEDIATELY(playerPedMichael) SET_PED_INTO_VEHICLE(playerPedMichael, vehCar, VS_FRONT_RIGHT) GIVE_WEAPON_TO_PED(playerPedMichael, wtPistol, 350) SET_PED_INTO_VEHICLE(playerPedMichael, vehCar, VS_DRIVER) TASK_PLAY_ANIM(playerPedMichael, sAnimDictPrologue_LeadOut, "leadout_action_michael", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY | AF_UPPERBODY) GIVE_WEAPON_TO_PED(playerPedMichael, wtPistol, 350) //SET_ENTITY_INVINCIBLE(playerPedMichael, TRUE) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") // IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR // MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) // TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) // // SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) // ENDIF SET_PED_INTO_VEHICLE(playerPedTrevor, vehCar, VS_BACK_LEFT) TASK_PLAY_ANIM(playerPedTrevor, sAnimDictPrologue_LeadOut, "leadout_action_trevor", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY | AF_UPPERBODY) GIVE_WEAPON_TO_PED(playerPedTrevor, wtPistol, 350) GIVE_WEAPON_TO_PED(playerPedTrevor, WEAPONTYPE_MICROSMG, 350) //SET_ENTITY_INVINCIBLE(playerPedTrevor, TRUE) ENDIF // enveff snow brad 1950940 - Rob B ENTITY_INDEX entitySnowBrad entitySnowBrad = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Brad", CS_BRAD) IF NOT IS_ENTITY_DEAD(entitySnowBrad) SET_ENABLE_PED_ENVEFF_SCALE(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySnowBrad), TRUE) SET_PED_ENVEFF_SCALE(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySnowBrad), 0.6) //PRINTSTRING("set brad") printnl() ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Brad") SET_PED_INTO_VEHICLE(pedBrad, vehCar, VS_BACK_RIGHT) TASK_PLAY_ANIM(pedBrad, sAnimDictPrologue_LeadOut, "leadout_action_brad", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_SECONDARY | AF_UPPERBODY) PLAY_FACIAL_ANIM(pedBrad, "leadout_action_brad_facial", sAnimDictPrologue_LeadOut) GIVE_WEAPON_TO_PED(pedBrad, wtPistol, INFINITE_AMMO) //SET_ENTITY_INVINCIBLE(pedBrad, TRUE) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("getaway_car") REPLAY_STOP_EVENT() //SET_VEHICLE_POSITION(vehCar, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(031, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(031, 0.0, sCarrec))) SET_VEHICLE_ENGINE_ON(vehCar, TRUE, TRUE) SET_VEHICLE_DOORS_SHUT(vehCar) SET_VEHICLE_FORWARD_SPEED(vehCar, 30.0) //SET_ENTITY_INVINCIBLE(vehCar, TRUE) //SET_ENTITY_PROOFS(vehCar, TRUE, TRUE, TRUE, TRUE, TRUE) ENDIF //Weapon // IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_weapon") // GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_MICHAEL], playerPedMichael) // ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_weapon") GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_TREVOR], playerPedTrevor) ENDIF //Cops IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("PRO_Cop_Driving_Car") IF NOT IS_PED_INJURED(pedCutscene[CopCarDriver]) IF DOES_ENTITY_EXIST(vehCutscene) AND IS_VEHICLE_DRIVEABLE(vehCutscene) SET_PED_INTO_VEHICLE(pedCutscene[CopCarDriver], vehCutscene, VS_DRIVER) ENDIF SET_PED_SUFFERS_CRITICAL_HITS(pedCutscene[CopCarDriver], FALSE) SET_PED_MAX_HEALTH(pedCutscene[CopCarDriver], 800) SET_ENTITY_HEALTH(pedCutscene[CopCarDriver], GET_PED_MAX_HEALTH(pedCutscene[CopCarDriver])) GIVE_WEAPON_TO_PED(pedCutscene[CopCarDriver], wtPistol, 350) SET_PED_RELATIONSHIP_GROUP_HASH(pedCutscene[CopCarDriver], relGroupEnemy) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("PRO_COP_Shooting_car") IF NOT IS_PED_INJURED(pedCutscene[CopCarShotgun]) IF DOES_ENTITY_EXIST(vehCutscene) AND IS_VEHICLE_DRIVEABLE(vehCutscene) SET_PED_INTO_VEHICLE(pedCutscene[CopCarShotgun], vehCutscene, VS_FRONT_RIGHT) ENDIF SET_PED_SUFFERS_CRITICAL_HITS(pedCutscene[CopCarShotgun], FALSE) SET_PED_MAX_HEALTH(pedCutscene[CopCarShotgun], 800) SET_ENTITY_HEALTH(pedCutscene[CopCarShotgun], GET_PED_MAX_HEALTH(pedCutscene[CopCarShotgun])) GIVE_WEAPON_TO_PED(pedCutscene[CopCarShotgun], wtPistol, 350) SET_PED_RELATIONSHIP_GROUP_HASH(pedCutscene[CopCarShotgun], relGroupEnemy) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("chase_cop_car") IF DOES_ENTITY_EXIST(vehCutscene) AND IS_VEHICLE_DRIVEABLE(vehCutscene) SET_VEHICLE_ENGINE_ON(vehCutscene, TRUE, TRUE) SET_ENTITY_INVINCIBLE(vehCutscene, TRUE) SET_ENTITY_PROOFS(vehCutscene, TRUE, TRUE, TRUE, TRUE, TRUE) REMOVE_VEHICLE_WINDOW(vehCutscene, SC_WINDOW_FRONT_RIGHT) ENDIF ENDIF IF WAS_CUTSCENE_SKIPPED() SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE) bCutsceneSkipped = TRUE ENDIF IF HAS_CUTSCENE_FINISHED() IF bCutsceneSkipped IF IS_MUSIC_ONESHOT_PLAYING() CANCEL_MUSIC_EVENT("PROLOGUE_TEST_POLICE_CAR_CHASE_OS") ENDIF LOAD_SCENE_ADV(<<4541.3379, -5082.6982, 109.5979>>, 100.0, TRUE) SET_VEHICLE_POSITION(vehCar, <<4541.3379, -5082.6982, 109.5979>>, 118.0337) SET_VEHICLE_ENGINE_ON(vehCar, TRUE, TRUE) SET_VEHICLE_DOORS_SHUT(vehCar) SET_VEHICLE_FORWARD_SPEED(vehCar, 20.0) DO_SCREEN_FADE_IN(1000) #IF IS_DEBUG_BUILD PRINTLN("DO_SCREEN_FADE_IN") #ENDIF ENDIF bCutsceneSkipped = FALSE //TASK_COMBAT_HATED_TARGETS_AROUND_PED(notPlayerPedID, 100.0) //TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedBrad, 100.0) //IF DOES_ENTITY_EXIST(pedCutscene[CopCarShotgun]) //AND NOT IS_PED_INJURED(pedCutscene[CopCarShotgun]) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCutscene[CopCarShotgun], 100.0) //ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //CREATE_CONVERSATION_ADV(PRO_CHASE, "PRO_CHASE") //PRINT_HELP_ADV(PROHLP_CARAIM, "PROHLP_CARAIM") IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) = CAM_VIEW_MODE_FIRST_PERSON RENDER_SCRIPT_CAMS(FALSE, FALSE) ENDIF ADVANCE_STAGE() //ADVANCE_CUTSCENE() ENDIF BREAK // CASE 2 // //SET_ENTITY_INVINCIBLE(playerPedID, TRUE) // //SET_ENTITY_PROOFS(playerPedID, TRUE, TRUE, TRUE, TRUE, TRUE) // // IF UPDATE_SELECTOR_HUD(sSelectorPeds) //Returns TRUE when the player has made a selection // IF NOT HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER) // INFORM_MISSION_STATS_OF_INCREMENT(PRO_SWITCHES) // // IF IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_CHASE") // KILL_FACE_TO_FACE_CONVERSATION() // ENDIF // // IF NOT IS_PED_IN_COVER(notPlayerPedID) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(notPlayerPedID, 1000.0) // ENDIF // // IF NOT IS_PED_IN_COVER(playerPedID) // TASK_COMBAT_HATED_TARGETS_AROUND_PED(playerPedID, 1000.0) // ENDIF // // sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed] // sCamDetails.bRun = TRUE // // FLOAT fRelativeHeading, fRelativePitch // // fRelativeHeading = FirstPersonRelativeHeadingSpam() // fRelativePitch = GET_GAMEPLAY_CAM_RELATIVE_PITCH() // // TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) // // SET_GAMEPLAY_CAM_RELATIVE_HEADING(fRelativeHeading) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(fRelativePitch + 2.0) //Negate a random shift here // // ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedMichael, "MICHAEL") // ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedTrevor, "TREVOR") // // //Update the relationship groups // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) // SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) // ENDIF // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) // ENDIF // ENDIF // ENDIF // // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar) // IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL // AND GET_PED_IN_VEHICLE_SEAT(vehCar, VS_DRIVER) = playerPedMichael // STOP_PLAYBACK_RECORDED_VEHICLE(vehCar) // // ADVANCE_STAGE() // ENDIF // ENDIF // // IF IS_GAMEPLAY_CAM_RENDERING() // AND NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS() // AND GET_SCRIPT_TASK_STATUS(playerPedID, SCRIPT_TASK_COMBAT_HATED_TARGETS_AROUND_PED) = PERFORMING_TASK // CLEAR_PED_TASKS(playerPedID) // ENDIF // // IF (DOES_ENTITY_EXIST(vehCutscene) // AND NOT IS_VEHICLE_DRIVEABLE(vehCutscene)) // OR (DOES_ENTITY_EXIST(pedCutscene[CopCarDriver]) // AND IS_PED_INJURED(pedCutscene[CopCarDriver])) // STOP_PLAYBACK_RECORDED_VEHICLE(vehCutscene) // // PLAY_AUDIO(PROLOGUE_TEST_POLICE_CAR_CRASH) // // ADVANCE_STAGE() // ENDIF // // IF (DOES_ENTITY_EXIST(vehCutscene) // AND IS_VEHICLE_DRIVEABLE(vehCutscene) // AND NOT IS_ENTITY_DEAD(vehCutscene)) // IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCutscene) // AND GET_TIME_POSITION_IN_RECORDING(vehCutscene) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(031, sCarrec) / 100) * 99) // SET_ENTITY_INVINCIBLE(vehCutscene, FALSE) // SET_ENTITY_PROOFS(vehCutscene, FALSE, FALSE, FALSE, FALSE, FALSE) // // SET_VEHICLE_PETROL_TANK_HEALTH(vehCutscene, 0) // SET_VEHICLE_ENGINE_HEALTH(vehCutscene, 0) // SET_ENTITY_HEALTH(vehCutscene, 0) // // IF (DOES_ENTITY_EXIST(pedCutscene[CopCarDriver]) // AND NOT IS_PED_INJURED(pedCutscene[CopCarDriver])) // SET_ENTITY_HEALTH(pedCutscene[CopCarDriver], 0) // ENDIF // // IF (DOES_ENTITY_EXIST(pedCutscene[CopCarShotgun]) // AND NOT IS_PED_INJURED(pedCutscene[CopCarShotgun])) // SET_ENTITY_HEALTH(pedCutscene[CopCarShotgun], 0) // ENDIF // // PLAY_AUDIO(PROLOGUE_TEST_POLICE_CAR_CRASH) // // ADVANCE_STAGE() // ENDIF // ENDIF // BREAK ENDSWITCH IF iCutsceneStage > 0 REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(4400.0 - 2500.0, -5100.0 - 1500.0, 4400.0 + 2500.0, -5100.0 + 1500.0) ENDIF // IF iCutsceneStage > 1 // OR CAN_SET_EXIT_STATE_FOR_CAMERA() // IF NOT HAS_LABEL_BEEN_TRIGGERED(DriverDied) // IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar) // AND GET_TIME_POSITION_IN_RECORDING(vehCar) > 8000.0 // TASK_LEAVE_VEHICLE(pedGetaway, vehCar, ECF_DONT_CLOSE_DOOR | ECF_DONT_WAIT_FOR_VEHICLE_TO_STOP | ECF_JUMP_OUT) // // SET_LABEL_AS_TRIGGERED(DriverDied, TRUE) // ENDIF // ELIF IS_VEHICLE_SEAT_FREE(vehCar, VS_DRIVER) // IF GET_SCRIPT_TASK_STATUS(playerPedMichael, SCRIPT_TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT) != PERFORMING_TASK // SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedMichael, TRUE) // TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(playerPedMichael, vehCar) // ENDIF // ENDIF // // IF DOES_ENTITY_EXIST(vehCutscene) // VECTOR vOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehCar, GET_ENTITY_COORDS(vehCutscene, FALSE)) // //PRINTLN("vOffset = <<", vOffset.X, ", ", vOffset.Y, ", ", vOffset.Z, ">>") // // IF DOES_CAM_EXIST(camCinematic) // VECTOR vCamCinematic = GET_CAM_COORD(camCinematic) // VECTOR vTrack = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<6.3020, 4.8240 - (7.5 + CLAMP(vOffset.Y, -7.0, 0.0)), 3.8557>>) // // vCamCinematic.X = vCamCinematic.X + ((vTrack.X - vCamCinematic.X) / 1.5) // vCamCinematic.Y = vCamCinematic.Y + ((vTrack.Y - vCamCinematic.Y) / 1.5) // vCamCinematic.Z = vCamCinematic.Z + ((vTrack.Z - vCamCinematic.Z) / 1.5) // // SET_CAM_COORD(camCinematic, vCamCinematic) // // POINT_CAM_AT_ENTITY(camCinematic, vehCutscene, <<0.0, 3.0 - (2.0 + CLAMP(vOffset.Y, -2.0, 0.0)), 0.5>>) // ENDIF // // IF IS_CONTROL_RELEASED(PLAYER_CONTROL, INPUT_VEH_PASSENGER_ATTACK) // AND NOT IS_AIM_CAM_ACTIVE() // IF (DOES_ENTITY_EXIST(vehCutscene) // AND IS_VEHICLE_DRIVEABLE(vehCutscene)) // IF NOT IS_GAMEPLAY_CAM_RENDERING() // OR IS_INTERPOLATING_FROM_SCRIPT_CAMS() // SET_GAMEPLAY_CAM_RELATIVE_HEADING(GET_HEADING_BETWEEN_VECTORS(GET_ENTITY_COORDS(vehCar), GET_ENTITY_COORDS(vehCutscene)) - GET_ENTITY_HEADING(playerPedID)) // ENDIF // ENDIF // // IF NOT IS_CUTSCENE_PLAYING() // OR CAN_SET_EXIT_STATE_FOR_CAMERA() // IF (DOES_ENTITY_EXIST(vehCutscene) // AND IS_VEHICLE_DRIVEABLE(vehCutscene)) // IF NOT DOES_CAM_EXIST(camCinematic) // camCinematic = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", FALSE) // SET_CAM_FOV(camCinematic, 30.5) // SHAKE_CAM(camCinematic, "HAND_SHAKE", 1.0) // SET_CAM_COORD(camCinematic, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<6.3020, 4.8240 - (7.5 + CLAMP(vOffset.Y, -7.0, 0.0)), 3.8557>>)) // SET_CAM_ACTIVE(camCinematic, TRUE) // RENDER_SCRIPT_CAMS(TRUE, FALSE) // ELSE // IF NOT IS_CAM_RENDERING(camCinematic) // RENDER_SCRIPT_CAMS(TRUE, TRUE, 1000, FALSE) // ENDIF // ENDIF // ENDIF // ENDIF // ELIF DOES_CAM_EXIST(camCinematic) // IF IS_CAM_RENDERING(camCinematic) // AND NOT IS_INTERPOLATING_FROM_SCRIPT_CAMS() // RENDER_SCRIPT_CAMS(FALSE, TRUE, 1000, FALSE) // ENDIF // ENDIF // // SET_FOLLOW_CAM_IGNORE_ATTACH_PARENT_MOVEMENT_THIS_UPDATE() // ENDIF // // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_EXIT) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) // DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) // ENDIF ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_POLICE_SHOOTOUT") STOP_AUDIO_SCENE("PROLOGUE_POLICE_SHOOTOUT") ENDIF IF IS_NEW_LOAD_SCENE_ACTIVE() NEW_LOAD_SCENE_STOP() ENDIF REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0, TRUE) ENDWHILE IF DOES_CAM_EXIST(camAnim) DESTROY_CAM(camAnim) ENDIF IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_IN_VEHICLE) <> CAM_VIEW_MODE_FIRST_PERSON RENDER_SCRIPT_CAMS(FALSE, TRUE, DEFAULT_INTERP_TO_FROM_GAME, FALSE) ENDIF SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TRV_PRO_MASK_REMOVED, TRUE) SET_ENTITY_INVINCIBLE(playerPedID, FALSE) IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL SET_ENTITY_INVINCIBLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ELSE SET_ENTITY_INVINCIBLE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) ENDIF SET_ENTITY_INVINCIBLE(pedBrad, FALSE) SAFE_REMOVE_BLIP(blipMichael) SAFE_REMOVE_BLIP(blipTrevor) SAFE_REMOVE_BLIP(blipBuddy) SAFE_REMOVE_BLIP(blipCar) SAFE_REMOVE_BLIP(blipDestination) SAFE_DELETE_PED(pedGetaway) REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 5) SAFE_DELETE_PED(pedCop[0]) SAFE_DELETE_PED(pedCop[1]) SAFE_DELETE_PED(pedDeadGuard) SAFE_DELETE_VEHICLE(vehCop[8]) INT i REPEAT COUNT_OF(objWeapon) i SAFE_DELETE_OBJECT(objWeapon[i]) ENDREPEAT IF DOES_ENTITY_EXIST(vehCutscene) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCutscene) ENDIF IF DOES_ENTITY_EXIST(pedCutscene[CopCarDriver]) SET_PED_AS_NO_LONGER_NEEDED(pedCutscene[CopCarDriver]) ENDIF IF DOES_ENTITY_EXIST(pedCutscene[CopCarShotgun]) SET_PED_AS_NO_LONGER_NEEDED(pedCutscene[CopCarShotgun]) ENDIF REPEAT COUNT_OF(pedCop) i IF DOES_ENTITY_EXIST(pedCop[i]) IF NOT IS_PED_INJURED(pedCop[i]) DISABLE_PED_PAIN_AUDIO(pedCop[i], TRUE) STOP_PED_SPEAKING(pedCop[i], TRUE) SET_ENTITY_HEALTH(pedCop[i], 0) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedCop[i]) ENDIF ENDREPEAT REPEAT COUNT_OF(vehCop) i IF DOES_ENTITY_EXIST(vehCop[i]) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCop[i]) ENDIF ENDREPEAT REPEAT COUNT_OF(vehVan) i IF DOES_ENTITY_EXIST(vehVan[i]) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehVan[i]) ENDIF ENDREPEAT IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar) STOP_PLAYBACK_RECORDED_VEHICLE(vehCar) ENDIF SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCar, TRUE) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC GetAway() IF INIT_STAGE() //Replay SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayGetAway), "stageGetAway") //Stats INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(PRO_GETAWAY_TIME) //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_MICHAEL // FLOAT fRelativeHeading, fRelativePitch // // fRelativeHeading = GET_GAMEPLAY_CAM_RELATIVE_HEADING() // fRelativePitch = GET_GAMEPLAY_CAM_RELATIVE_PITCH() MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_MICHAEL) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds) UPDATE_PED_REFERENCES() // SET_GAMEPLAY_CAM_RELATIVE_HEADING(fRelativeHeading) // SET_GAMEPLAY_CAM_RELATIVE_PITCH(fRelativePitch + 2.0) //Negate a random shift here SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) ENDIF //Brad Balaclava + Mask SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_HAIR, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_FEET, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) //Duffle Bag SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 0, 0) //Michael Face SET_FACIAL_IDLE_ANIM_OVERRIDE(playerPedMichael, "mood_angry_1") //Brad Face SET_FACIAL_IDLE_ANIM_OVERRIDE(pedBrad, "Mood_Angry_1") //Dialogue ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedID, "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "TREVOR") //Radar bRadar = TRUE //Wanted SET_FAKE_WANTED_LEVEL(0) //Player Car //SET_VEHICLE_DOORS_LOCKED(vehCar, VEHICLELOCK_LOCKED_PLAYER_INSIDE) //Radio SET_VEHICLE_RADIO_ENABLED(vehCar, FALSE) SET_USER_RADIO_CONTROL_ENABLED(FALSE) //Roadblock Cars SPAWN_VEHICLE(vehCop[11], POLICEOLD2, <<3497.6370, -4871.3411, 110.6404>>, 262.8277) WAIT_WITH_DEATH_CHECKS(0) SPAWN_VEHICLE(vehCop[12], POLICEOLD2, <<3497.4355, -4864.6685, 110.7156>>, 226.5504) // SPAWN_VEHICLE(vehCop[13], POLICEOLD1, <<3493.8447, -4867.4614, 110.7541>>, 281.1805) // SPAWN_VEHICLE(vehCop[14], POLICEOLD1, <<3497.9121, -4876.0188, 110.9165>>, 196.6586) // SPAWN_VEHICLE(vehCop[15], POLICEOLD2, <<3497.8660, -4859.6694, 110.8799>>, 324.4299) SET_MODEL_AS_NO_LONGER_NEEDED(POLICEOLD1) INT i REPEAT COUNT_OF(vehCop) i IF NOT IS_ENTITY_DEAD(vehCop[i]) SET_VEHICLE_DOOR_OPEN(vehCop[i], SC_DOOR_FRONT_LEFT) SET_VEHICLE_DOOR_OPEN(vehCop[i], SC_DOOR_FRONT_RIGHT) SET_VEHICLE_SIREN(vehCop[i], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[i], TRUE) //SET_ENTITY_PROOFS(vehCop[i], FALSE, TRUE, TRUE, FALSE, FALSE) SET_VEHICLE_STRONG(vehCop[i], TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[i], FALSE) ENDIF ENDREPEAT WAIT_WITH_DEATH_CHECKS(0) //Barriers objBarrier[0] = CREATE_OBJECT(modBarrier, <<3498.559082, -4874.109863, 110.971497>>) SET_ENTITY_ROTATION(objBarrier[0], <<0.0, -13.999998, -95.189995>>) WAIT_WITH_DEATH_CHECKS(0) objBarrier[1] = CREATE_OBJECT(modBarrier, <<3498.899902, -4861.600098, 110.900002>>) SET_ENTITY_ROTATION(objBarrier[1], <<0.0, -12.999997, 69.419998>>) WAIT_WITH_DEATH_CHECKS(0) objBarrier[2] = CREATE_OBJECT(modBarrier, <<3500.000732, -4869.240234, 110.770584>>) SET_ENTITY_ROTATION(objBarrier[2], <<0.0, 0.0, 68.181961>>) WAIT_WITH_DEATH_CHECKS(0) objBarrier[3] = CREATE_OBJECT(modBarrier, <<3500.223145, -4866.932129, 110.770844>>) SET_ENTITY_ROTATION(objBarrier[3], <<0.0, 0.0, 100.267601>>) SET_MODEL_AS_NO_LONGER_NEEDED(modBarrier) //Cops REPEAT 6 i //6 cops for roadblock createCop(i + 18) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i + 18], vCopStart[i + 18], 10.0) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[i + 18], 5000) IF i = 0 OR i = 3 OR i = 4 GIVE_WEAPON_TO_PED(pedCop[i + 18], wtSMG, INFINITE_AMMO, TRUE) ENDIF IF i = 2 OR i = 5 GIVE_WEAPON_TO_PED(pedCop[i + 18], wtShotgun, INFINITE_AMMO, TRUE) ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDREPEAT CLEAR_TEXT() #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Score SET_FRONTEND_RADIO_ACTIVE(FALSE) PLAY_AUDIO(PROLOGUE_TEST_CAR_CHASE) //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DRIVE_TO_PICKUP") START_AUDIO_SCENE("PROLOGUE_DRIVE_TO_PICKUP") ENDIF //Tasks SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedMichael, TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedTrevor, TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedBrad, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedID, CA_LEAVE_VEHICLES, FALSE) SET_PED_COMBAT_ATTRIBUTES(notPlayerPedID, CA_LEAVE_VEHICLES, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_LEAVE_VEHICLES, FALSE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_RESTRICT_IN_VEHICLE_AIMING_TO_CURRENT_SIDE, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_RESTRICT_IN_VEHICLE_AIMING_TO_CURRENT_SIDE, TRUE) SET_PED_CONFIG_FLAG(playerPedMichael, PCF_GetOutUndriveableVehicle, FALSE) SET_PED_CONFIG_FLAG(playerPedTrevor, PCF_GetOutUndriveableVehicle, FALSE) SET_PED_CONFIG_FLAG(pedBrad, PCF_GetOutUndriveableVehicle, FALSE) //Roads SET_ROADS_IN_ANGLED_AREA(<<3477.819580, -4862.902832, 109.788643>>, <<3504.164063, -4869.103027, 120.770584>>, 16.0, FALSE, FALSE) #IF IS_DEBUG_BUILD ENDIF #ENDIF iBulletTimers[0] = 0 iBulletTimers[1] = 0 IF SKIPPED_STAGE() IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCar) IF GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehCar) = GET_VEHICLE_RECORDING_ID(026, sCarrec) STOP_PLAYBACK_RECORDED_VEHICLE(vehCar) ENDIF ENDIF SET_LABEL_AS_TRIGGERED(Pullout, TRUE) CLEAR_PED_TASKS(playerPedMichael) CLEAR_PED_TASKS(playerPedTrevor) CLEAR_PED_TASKS(pedBrad) EMPTY_VEHICLE_OF_PEDS(vehCar) SET_PED_INTO_VEHICLE(playerPedMichael, vehCar, VS_DRIVER) SET_PED_INTO_VEHICLE(playerPedTrevor, vehCar, VS_BACK_LEFT) SET_PED_INTO_VEHICLE(pedBrad, vehCar, VS_BACK_RIGHT) SET_VEHICLE_POSITION(vehCar, <<4339.5576, -5080.9526, 110.0518>>, 80.3059) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_FRONT_LEFT) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) GIVE_WEAPON_TO_PED(playerPedMichael, wtPistol, 350) GIVE_WEAPON_TO_PED(playerPedTrevor, wtPistol, 350) GIVE_WEAPON_TO_PED(playerPedTrevor, WEAPONTYPE_MICROSMG, 350) GIVE_WEAPON_TO_PED(pedBrad, wtPistol, INFINITE_AMMO) WAIT_WITH_DEATH_CHECKS(500) SET_VEHICLE_ENGINE_ON(vehCar, TRUE, TRUE) SET_VEHICLE_FORWARD_SPEED(vehCar, 30.0) STOP_CAM_SHAKING(camMain, TRUE) RENDER_SCRIPT_CAMS(FALSE, FALSE) SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SET_CLOCK_TIME(6, 0, 0) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(0) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ENDIF ELSE REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(4400.0 - 2500.0, -5100.0 - 1500.0, 4400.0 + 2500.0, -5100.0 + 1500.0) //Print Objective 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(PRO_Where) CREATE_CONVERSATION_ADV(PRO_Where, "PRO_Where") ELSE PRINT_ADV(PRO_GETAWAY, "PRO_GETAWAY", DEFAULT_GOD_TEXT_TIME - 4000) ENDIF ENDIF //Request Cutscene Variations - PRO_MCS_6 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Brad", pedBrad) ENDIF #IF IS_DEBUG_BUILD IF NOT HAS_LABEL_BEEN_TRIGGERED(NODES_LOADED) IF ARE_NODES_LOADED_FOR_AREA(4400.0 - 2500.0, -5100.0 - 1500.0, 4400.0 + 2500.0, -5100.0 + 1500.0) #IF IS_DEBUG_BUILD PRINTLN("NODES_LOADED_FOR_AREA(4400.0 - 2500.0, -5100.0 - 1500.0, 4400.0 + 2500.0, -5100.0 + 1500.0)") #ENDIF SET_LABEL_AS_TRIGGERED(NODES_LOADED, TRUE) ENDIF ENDIF #ENDIF IF NOT IS_THIS_PRINT_BEING_DISPLAYED("PRO_GETAWAY") AND HAS_LABEL_BEEN_TRIGGERED(PRO_Where) AND NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Blockade) IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF (NOT DOES_ENTITY_EXIST(vehCop[9]) AND NOT DOES_ENTITY_EXIST(vehCop[10])) OR HAS_LABEL_BEEN_TRIGGERED(PRO_Drive_2) OR (DOES_ENTITY_EXIST(pedCop[2]) AND IS_PED_INJURED(pedCop[2]) AND DOES_ENTITY_EXIST(pedCop[4]) AND IS_PED_INJURED(pedCop[4])) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive1_1) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive1_1, "PRO_Drive1", "PRO_Drive1_1") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive1_2) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive1_2, "PRO_Drive1", "PRO_Drive1_2") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive1_3) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive1_3, "PRO_Drive1", "PRO_Drive1_3") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive1_4) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive1_4, "PRO_Drive1", "PRO_Drive1_4") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive1_5) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive1_5, "PRO_Drive1", "PRO_Drive1_5") ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_PED_IN_VEHICLE(playerPedID, vehCar) AND NOT (IS_PED_GETTING_INTO_A_VEHICLE(playerPedID) AND GET_VEHICLE_PED_IS_USING(playerPedID) = vehCar) iDialogueStage = 2 //PRO_LeftCar IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF GET_GAME_TIMER() > iDialogueTimer IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 5 ELIF iDialogueLineCount[iDialogueStage] > 0 IF iDialogueLineCount[iDialogueStage] >= 4 IF NOT HAS_LABEL_BEEN_TRIGGERED(CMN_GENGETIN) PRINT_ADV(CMN_GENGETIN, "CMN_GENGETIN") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(CMN_GENGETBCK) PRINT_ADV(CMN_GENGETBCK, "CMN_GENGETBCK") ENDIF CREATE_CONVERSATION_ADV(PRO_LeftCar, "PRO_LeftCar", CONV_PRIORITY_MEDIUM, FALSE, DO_NOT_DISPLAY_SUBTITLES) ELSE CREATE_CONVERSATION_ADV(PRO_LeftCar, "PRO_LeftCar", CONV_PRIORITY_MEDIUM, FALSE) ENDIF iDialogueLineCount[iDialogueStage]-- ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) ENDIF ENDIF IF GET_GAME_TIMER() > iFailTimer eMissionFail = failAbandonedCar missionFailed() ENDIF ELSE SAFE_CLEAR_THIS_PRINT("CMN_GENGETIN") SAFE_CLEAR_THIS_PRINT("CMN_GENGETBCK") iFailTimer = GET_GAME_TIMER() + 10000 ENDIF // IF playerPedID != playerPedMichael // PRINT_HELP_ADV(PROHLP_CARSWITCH, "PROHLP_CARSWITCH") // ENDIF // // IF NOT sCamDetails.bRun // IF UPDATE_SELECTOR_HUD(sSelectorPeds) //Returns TRUE when the player has made a selection // IF NOT HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER) // INFORM_MISSION_STATS_OF_INCREMENT(PRO_SWITCHES) // // CLEAR_PED_TASKS(playerPedID) // // sCamDetails.pedTo = sSelectorPeds.pedID[sSelectorPeds.eNewSelectorPed] // sCamDetails.bRun = TRUE // ENDIF // ENDIF // ELSE // IF RUN_SWITCH_CAM_FROM_PLAYER_TO_PED_SHORT_RANGE(sCamDetails) //RUN_CAM_SPLINE_FROM_PLAYER_TO_PED_RACE(sCamDetails) //Returns FALSE when the camera spline is complete // IF sCamDetails.bOKToSwitchPed // IF NOT sCamDetails.bPedSwitched // IF TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) // CLEAR_PED_TASKS(playerPedID) // // ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedMichael, "MICHAEL") // ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedTrevor, "TREVOR") // // //Update the relationship groups // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) // SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) // ENDIF // IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) // SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], relGroupBuddy) // ENDIF // // sCamDetails.bPedSwitched = TRUE // ENDIF // ENDIF // ENDIF // ENDIF // ENDIF //Print IF playerPedID = playerPedMichael OR DOES_ENTITY_EXIST(vehTraffic[0]) IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF IS_RADAR_PREFERENCE_SWITCHED_ON() IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_CAR2) SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 4) PRINT_HELP_ADV(PROHLP_CAR2, "PROHLP_CAR2") SETTIMERB(0) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_CAR4) IF TIMERB() > DEFAULT_HELP_TEXT_TIME OR (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_ACCELERATE) AND TIMERB() > DEFAULT_HELP_TEXT_TIME / 10) PRINT_HELP_ADV(PROHLP_CAR4, "PROHLP_CAR4") SETTIMERB(0) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_CAR3) IF TIMERB() > DEFAULT_HELP_TEXT_TIME OR (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_MOVE_LR) AND TIMERB() > DEFAULT_HELP_TEXT_TIME / 10) PRINT_HELP_ADV(PROHLP_CAR3, "PROHLP_CAR3") SETTIMERB(0) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_DEST1) IF TIMERB() > DEFAULT_HELP_TEXT_TIME OR (IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_BRAKE) AND TIMERB() > DEFAULT_HELP_TEXT_TIME / 10) PRINT_HELP_ADV(PROHLP_DEST1, "PROHLP_DEST1") IF DOES_BLIP_EXIST(blipDestination) SET_BLIP_FLASH_DURATION(blipDestination, 5000) ENDIF SETTIMERB(0) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PROHLP_DEST2) IF TIMERB() > DEFAULT_HELP_TEXT_TIME SET_GPS_FLASHES(TRUE) PRINT_HELP_ADV(PROHLP_DEST2, "PROHLP_DEST2") SETTIMERB(0) ENDIF ELSE IF TIMERB() > DEFAULT_HELP_TEXT_TIME SET_GPS_FLASHES(FALSE) SETTIMERB(0) ENDIF ENDIF ENDIF ENDIF ELSE SAFE_CLEAR_HELP() ENDIF ENDIF IF playerPedID = playerPedTrevor IF ARE_NODES_LOADED_FOR_AREA(4400.0 - 2500.0, -5100.0 - 1500.0, 4400.0 + 2500.0, -5100.0 + 1500.0) IF GET_SCRIPT_TASK_STATUS(playerPedMichael, SCRIPT_TASK_VEHICLE_MISSION) != PERFORMING_TASK SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedMichael, TRUE) TASK_VEHICLE_MISSION_COORS_TARGET(playerPedMichael, vehCar, <<3546.0022, -4670.4585, 113.2054>>, MISSION_GOTO, 40.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, -1, -1, TRUE) ENDIF ELSE IF GET_SCRIPT_TASK_STATUS(playerPedMichael, SCRIPT_TASK_VEHICLE_DRIVE_WANDER) != PERFORMING_TASK SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedMichael, TRUE) TASK_VEHICLE_DRIVE_WANDER(playerPedMichael, vehCar, 15.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) ENDIF ENDIF ENDIF IF IS_ENTITY_AT_COORD(playerPedID, <<4092.9468, -5062.0420, 107.4313>>, <<300.0, 300.0, 20.0>>) AND NOT DOES_ENTITY_EXIST(vehTraffic[0]) IF HAS_MODEL_LOADED_CHECK(MODEL_EMPEROR3, EMPEROR3) AND HAS_MODEL_LOADED_CHECK(MODEL_A_M_M_HILLBILLY_01, A_M_M_HILLBILLY_01) IF CAN_CREATE_RANDOM_DRIVER() SPAWN_VEHICLE(vehTraffic[0], EMPEROR3, <<4092.9468, -5062.0420, 107.4313>>, 265.1335) pedTraffic[0] = CREATE_RANDOM_PED_AS_DRIVER(vehTraffic[0]) TASK_VEHICLE_DRIVE_WANDER(pedTraffic[0], vehTraffic[0], 15.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) SET_PED_COMBAT_ATTRIBUTES(pedTraffic[0], CA_ALWAYS_FLEE, TRUE) SET_PED_FLEE_ATTRIBUTES(pedTraffic[0], FA_DISABLE_HESITATE_IN_VEHICLE, TRUE) // SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedTraffic[0], TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(EMPEROR3) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_HILLBILLY_01) ENDIF ENDIF ENDIF IF IS_ENTITY_AT_COORD(playerPedID, <<3675.6301, -4915.4111, 110.7071>>, <<300.0, 300.0, 20.0>>) AND NOT DOES_ENTITY_EXIST(vehTraffic[1]) IF HAS_MODEL_LOADED_CHECK(MODEL_TRACTOR3, TRACTOR3) AND HAS_MODEL_LOADED_CHECK(MODEL_A_M_M_HILLBILLY_02, A_M_M_HILLBILLY_02) IF CAN_CREATE_RANDOM_DRIVER() SPAWN_VEHICLE(vehTraffic[1], TRACTOR3, <<3676.4517, -4928.2305, 110.6588>>, 185.1477) pedTraffic[1] = CREATE_RANDOM_PED_AS_DRIVER(vehTraffic[1]) //TASK_VEHICLE_DRIVE_WANDER(pedTraffic[1], vehTraffic[1], 8.0, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) TASK_VEHICLE_DRIVE_TO_COORD(pedTraffic[1], vehTraffic[1], <<5415.8516, -5128.4233, 77.1630>>, 8.0, DRIVINGSTYLE_NORMAL, TRACTOR3, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, 5.0, 5) SET_PED_COMBAT_ATTRIBUTES(pedTraffic[1], CA_ALWAYS_FLEE, TRUE) SET_PED_FLEE_ATTRIBUTES(pedTraffic[1], FA_DISABLE_HESITATE_IN_VEHICLE, TRUE) //SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedTraffic[1], TRUE) SET_MODEL_AS_NO_LONGER_NEEDED(TRACTOR3) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_HILLBILLY_02) ENDIF ENDIF ENDIF IF IS_ENTITY_AT_COORD(playerPedID, <<3670.4436, -4940.1943, 110.6677>>, <<400.0, 400.0, 20.0>>) AND NOT DOES_ENTITY_EXIST(vehCop[9]) AND NOT DOES_ENTITY_EXIST(vehCop[10]) SPAWN_VEHICLE(vehCop[9], POLICEOLD2, <<3670.4436, -4940.1943, 110.6677>>, 243.7315) SPAWN_VEHICLE(vehCop[10], POLICEOLD2, <<3773.0398, -4986.7998, 110.339 >>, 247.8150) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[9], FALSE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[10], FALSE) SET_VEHICLE_SIREN(vehCop[9], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[9], TRUE) SET_VEHICLE_SIREN(vehCop[10], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[10], TRUE) createCop(2) createCop(3) createCop(4) createCop(5) SET_PED_COMBAT_ATTRIBUTES(pedCop[2], CA_LEAVE_VEHICLES, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedCop[2], CA_USE_VEHICLE, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedCop[3], CA_LEAVE_VEHICLES, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedCop[3], CA_USE_VEHICLE, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedCop[4], CA_LEAVE_VEHICLES, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedCop[4], CA_USE_VEHICLE, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedCop[5], CA_LEAVE_VEHICLES, TRUE) SET_PED_COMBAT_ATTRIBUTES(pedCop[5], CA_USE_VEHICLE, TRUE) SET_PED_ACCURACY(pedCop[2], 40) SET_PED_ACCURACY(pedCop[3], 40) SET_PED_ACCURACY(pedCop[4], 40) SET_PED_ACCURACY(pedCop[5], 40) SET_PED_INTO_VEHICLE(pedCop[2], vehCop[9]) SET_PED_INTO_VEHICLE(pedCop[3], vehCop[9], VS_FRONT_RIGHT) SET_PED_INTO_VEHICLE(pedCop[4], vehCop[10]) SET_PED_INTO_VEHICLE(pedCop[5], vehCop[10], VS_FRONT_RIGHT) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[2], TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[3], TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[4], TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[5], TRUE) SET_VEHICLE_USE_ALTERNATE_HANDLING(vehCop[9], TRUE) SET_VEHICLE_USE_ALTERNATE_HANDLING(vehCop[10], TRUE) //TASK_VEHICLE_DRIVE_TO_COORD(pedCop[2], vehCop[9], <<5415.8516, -5128.4233, 77.1630>>, 40.0, DRIVINGSTYLE_NORMAL, POLICEOLD2, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, 5.0, 5) //TASK_VEHICLE_DRIVE_TO_COORD(pedCop[4], vehCop[10], <<5415.8516, -5128.4233, 77.1630>>, 40.0, DRIVINGSTYLE_NORMAL, POLICEOLD2, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS, 5.0, 5) TASK_VEHICLE_MISSION_COORS_TARGET(pedCop[4], vehCop[10], <<5415.8516, -5128.4233, 77.1630>>, MISSION_GOTO_RACING, 40.0, DRIVINGMODE_STOPFORCARS_STRICT, 0.1, 0.1, TRUE) TASK_VEHICLE_ESCORT(pedCop[2], vehCop[9], vehCop[10], VEHICLE_ESCORT_REAR, 40.0, DRIVINGMODE_STOPFORCARS_STRICT) ENDIF IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF DOES_ENTITY_EXIST(vehCop[10]) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(vehCop[10])) < 150.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(PRO_Drive, "PRO_Drive") //PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive_1, "PRO_Drive", "PRO_Drive_1") ENDIF SET_LABEL_AS_TRIGGERED(PRO_Drive_1, TRUE) //Score PLAY_AUDIO(PROLOGUE_TEST_POLICE_DRIVE_BY) ENDIF ENDIF ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF IS_ENTITY_IN_ANGLED_AREA(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], <<3501.779541, -4879.914063, 108.446884>>, <<3500.778320, -4848.768555, 117.260483>>, 20.0) SET_ENTITY_INVINCIBLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ELSE SET_ENTITY_INVINCIBLE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], TRUE) ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(pedBrad, <<3501.779541, -4879.914063, 108.446884>>, <<3500.778320, -4848.768555, 117.260483>>, 20.0) SET_ENTITY_INVINCIBLE(pedBrad, FALSE) ELSE SET_ENTITY_INVINCIBLE(pedBrad, TRUE) ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedTrevor, <<3498.418457,-4868.590332,109.773926>>, <<3471.526367,-4867.029297,126.711273>>, 20.0) AND (NOT IS_PED_INJURED(pedCop[18]) AND IS_PED_SHOOTING(pedCop[18])) AND (NOT IS_PED_INJURED(pedCop[19]) AND IS_PED_SHOOTING(pedCop[19])) AND (NOT IS_PED_INJURED(pedCop[20]) AND IS_PED_SHOOTING(pedCop[20])) AND (NOT IS_PED_INJURED(pedCop[21]) AND IS_PED_SHOOTING(pedCop[21])) AND (NOT IS_PED_INJURED(pedCop[22]) AND IS_PED_SHOOTING(pedCop[22])) SET_ENTITY_HEALTH(playerPedTrevor, 0) ENDIF IF DOES_ENTITY_EXIST(vehCop[9]) AND DOES_ENTITY_EXIST(vehCop[10]) IF HAS_LABEL_BEEN_TRIGGERED(PRO_Drive_1) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF NOT IS_ENTITY_ON_SCREEN(vehCop[9]) AND NOT IS_ENTITY_ON_SCREEN(vehCop[10]) IF NOT IS_PED_INJURED(pedCop[2]) AND NOT IS_PED_INJURED(pedCop[4]) IF GET_SCRIPT_TASK_STATUS(pedCop[2], SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() //PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive_2, "PRO_Drive", "PRO_Drive_2") SET_LABEL_AS_TRIGGERED(PRO_Drive_2, TRUE) ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_ENTITY_TOUCHING_ENTITY(vehCar, vehCop[9]) OR IS_ENTITY_TOUCHING_ENTITY(vehCar, vehCop[10]) OR (IS_PED_SHOOTING(playerPedID) AND ((IS_ENTITY_ON_SCREEN(vehCop[9]) OR IS_ENTITY_ON_SCREEN(vehCop[10])) OR (IS_BULLET_IN_AREA(GET_ENTITY_COORDS(vehCop[9]), 20.0) OR IS_BULLET_IN_AREA(GET_ENTITY_COORDS(vehCop[10]), 20.0)))) OR ((IS_ENTITY_IN_ANGLED_AREA(vehCar, GET_ENTITY_COORDS(vehCop[9]), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCop[9], <<0.0, 6.0, 3.0>>), 3.0) OR IS_ENTITY_IN_ANGLED_AREA(vehCar, GET_ENTITY_COORDS(vehCop[9]), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCop[9], <<0.0, 6.0, 3.0>>), 3.0)) AND GET_ENTITY_SPEED(vehCar) < 5.0) IF NOT IS_PED_INJURED(pedCop[4]) IF GET_SCRIPT_TASK_STATUS(pedCop[4], SCRIPT_TASK_VEHICLE_MISSION) = PERFORMING_TASK CLEAR_PED_TASKS(pedCop[4]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[4], FALSE) //SAFE_ADD_BLIP_PED(blipCop[4], pedCop[4], TRUE) TASK_COMBAT_PED(pedCop[4], playerPedID) IF NOT IS_PED_INJURED(pedCop[5]) CLEAR_PED_TASKS(pedCop[5]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[5], FALSE) //SAFE_ADD_BLIP_PED(blipCop[5], pedCop[5], TRUE) TASK_COMBAT_PED(pedCop[5], playerPedID) ENDIF IF NOT IS_PED_INJURED(pedCop[2]) CLEAR_PED_TASKS(pedCop[2]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[2], FALSE) //SAFE_ADD_BLIP_PED(blipCop[2], pedCop[2], TRUE) TASK_COMBAT_PED(pedCop[2], playerPedID) IF NOT IS_PED_INJURED(pedCop[3]) CLEAR_PED_TASKS(pedCop[3]) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[3], FALSE) //SAFE_ADD_BLIP_PED(blipCop[3], pedCop[3], TRUE) TASK_COMBAT_PED(pedCop[3], playerPedID) ENDIF ENDIF SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedMichael, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedTrevor, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedBrad, FALSE) //Police Cars pull up SET_FAKE_WANTED_LEVEL(5) ENDIF ENDIF ENDIF ENDIF IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Blockade) IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF HAS_LABEL_BEEN_TRIGGERED(PRO_Drive1_5) IF (NOT DOES_ENTITY_EXIST(vehCop[9]) AND NOT DOES_ENTITY_EXIST(vehCop[10])) OR HAS_LABEL_BEEN_TRIGGERED(PRO_Drive_2) OR (DOES_ENTITY_EXIST(pedCop[2]) AND IS_PED_INJURED(pedCop[2]) AND DOES_ENTITY_EXIST(pedCop[4]) AND IS_PED_INJURED(pedCop[4])) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), <<3499.77417, -4868.12256, 110.77395>>) > 400.0 IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_1) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_1, "PRO_Drive2", "PRO_Drive2_1") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_2) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_2, "PRO_Drive2", "PRO_Drive2_2") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_3) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_3, "PRO_Drive2", "PRO_Drive2_3") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_4) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_4, "PRO_Drive2", "PRO_Drive2_4") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_5) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_5, "PRO_Drive2", "PRO_Drive2_5") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_6) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_6, "PRO_Drive2", "PRO_Drive2_6") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_7) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_7, "PRO_Drive2", "PRO_Drive2_7") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Drive2_8) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Drive2_8, "PRO_Drive2", "PRO_Drive2_8") ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF ((IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<3474.520264, -4860.874512, 109.789116>>, <<3731.3, -4966.4, 139.623703>>, 200.0) AND GET_ENTITY_SPEED(vehCar) > 15.0) OR IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<3474.520264, -4860.874512, 109.789116>>, <<3671.1, -4937.4, 139.623703>>, 200.0)) AND IS_SPHERE_VISIBLE(<<3498.0, -4867.9, 113.0>>, 5.0) IF NOT HAS_LABEL_BEEN_TRIGGERED(RoadblockAudio) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedMichael, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedTrevor, FALSE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedBrad, FALSE) //Score LOAD_AUDIO(PROLOGUE_TEST_TRAIN_CRASH) PLAY_AUDIO(PROLOGUE_TEST_ROADBLOCK_WARNING) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DRIVE_TO_PICKUP") STOP_AUDIO_SCENE("PROLOGUE_DRIVE_TO_PICKUP") ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DRIVE_ESCAPE") START_AUDIO_SCENE("PROLOGUE_DRIVE_ESCAPE") ENDIF REPLAY_RECORD_BACK_FOR_TIME(2.0, 5.0) SET_LABEL_AS_TRIGGERED(RoadblockAudio, TRUE) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Blockade) 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(PRO_Blockade, "PRO_Blockade") ELIF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() KILL_FACE_TO_FACE_CONVERSATION() ENDIF ENDIF ENDIF ENDIF //Cutscene IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), <<3539.7244, -4718.3975, 111.8996>>) < (DEFAULT_CUTSCENE_LOAD_DIST * 5) REQUEST_CUTSCENE("PRO_MCS_6") ELIF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), <<3539.7244, -4718.3975, 111.8996>>) > (DEFAULT_CUTSCENE_LOAD_DIST * 4) + DEFAULT_CUTSCENE_UNLOAD_DIST REMOVE_CUTSCENE() ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<3417.754639, -4849.398682, 100.707458>>, <<3654.789307, -4920.359863, 120.700195>>, 200.0) IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_cutFinale) // SAFE_REMOVE_BLIP(blipDestination) // SAFE_ADD_BLIP_LOCATION(blipDestination, <<3546.0022, -4670.4585, 113.2054>>, TRUE) SET_LABEL_AS_TRIGGERED(TRIGGER_cutFinale, TRUE) ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<3522.664307, -4850.235107, 105.671204>>, <<3530.755859, -4748.138672, 121.426514>>, 20.0) IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() KILL_FACE_TO_FACE_CONVERSATION() ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<3501.273926, -4884.231445, 109.669617>>, <<3509.990479, -4840.174072, 116.080200>>, 70.0) //Police Cars pull up SET_FAKE_WANTED_LEVEL(5) ENDIF IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<3501.273926, -4884.231445, 109.669617>>, <<3509.990479, -4840.174072, 116.080200>>, 70.0) AND GET_ENTITY_SPEED(vehCar) > 10.0 PED_INDEX pedShooting IF NOT SAFE_IS_PED_DEAD(pedCop[18]) AND NOT IS_PED_RAGDOLL(pedCop[18]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedCop[18]), GET_ENTITY_COORDS(vehCar)) > 15.0 pedShooting = pedCop[18] ELIF NOT SAFE_IS_PED_DEAD(pedCop[19]) AND NOT IS_PED_RAGDOLL(pedCop[19]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedCop[19]), GET_ENTITY_COORDS(vehCar)) > 15.0 pedShooting = pedCop[19] ELIF NOT SAFE_IS_PED_DEAD(pedCop[20]) AND NOT IS_PED_RAGDOLL(pedCop[20]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedCop[20]), GET_ENTITY_COORDS(vehCar)) > 15.0 pedShooting = pedCop[20] ELIF NOT SAFE_IS_PED_DEAD(pedCop[21]) AND NOT IS_PED_RAGDOLL(pedCop[21]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedCop[21]), GET_ENTITY_COORDS(vehCar)) > 15.0 pedShooting = pedCop[21] ELIF NOT SAFE_IS_PED_DEAD(pedCop[22]) AND NOT IS_PED_RAGDOLL(pedCop[22]) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedCop[22]), GET_ENTITY_COORDS(vehCar)) > 15.0 pedShooting = pedCop[22] ENDIF IF NOT IS_PED_INJURED(pedShooting) AND NOT IS_PED_RAGDOLL(pedShooting) AND GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedShooting), GET_ENTITY_COORDS(vehCar)) > 15.0 AND IS_PED_SHOOTING(pedShooting) DO_EXCITING_BULLET_ON_COORD(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<0.5, 0.0, 0.0>>), pedShooting, iBulletTimers[0], <<0.0, 0.6, 0.0>>) DO_EXCITING_NEAR_BULLET_MISS_ON_COORD(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehCar, <<0.5, 0.0, 0.0>>), pedShooting, iBulletTimers[1], <<0.0, 0.6, 0.0>>) IF IS_VEHICLE_WINDOW_INTACT(vehCar, SC_WINDOW_REAR_LEFT) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) ENDIF ENDIF ENDIF IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF IS_THIS_PRINT_BEING_DISPLAYED("PRO_CAR2") SAFE_CLEAR_THIS_PRINT("PRO_CAR2") ENDIF SAFE_REMOVE_BLIP(blipCar) IF IS_PED_IN_VEHICLE(playerPedTrevor, vehCar) AND IS_PED_IN_VEHICLE(pedBrad, vehCar) SAFE_REMOVE_BLIP(blipTrevor) SAFE_REMOVE_BLIP(blipBuddy) IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_cutFinale) SAFE_ADD_BLIP_LOCATION(blipDestination, <<3546.0022, -4670.4585, 113.2054>>, TRUE) //<<3343.2200, -4845.2009, 110.8667>>, TRUE) ELSE SAFE_ADD_BLIP_LOCATION(blipDestination, <<3546.0022, -4670.4585, 113.2054>>, TRUE) ENDIF ELSE SAFE_REMOVE_BLIP(blipDestination) IF NOT IS_PED_IN_VEHICLE(playerPedTrevor, vehCar) AND NOT IS_PED_IN_VEHICLE(pedBrad, vehCar) PRINT_ADV(PRO_TEAM, "PRO_TEAM") ENDIF IF NOT IS_PED_IN_VEHICLE(playerPedTrevor, vehCar) AND NOT IS_PED_GETTING_INTO_A_VEHICLE(playerPedTrevor) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_TEAM) PRINT_ADV(PRO_BUDDY, "PRO_BUDDY") ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR SAFE_ADD_BLIP_PED(blipTrevor, sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ENDIF IF GET_SCRIPT_TASK_STATUS(playerPedTrevor, SCRIPT_TASK_ENTER_VEHICLE) <> PERFORMING_TASK TASK_ENTER_VEHICLE(playerPedTrevor, vehCar, -1, VS_BACK_LEFT) ENDIF ELSE SAFE_REMOVE_BLIP(blipTrevor) ENDIF IF NOT IS_PED_IN_VEHICLE(pedBrad, vehCar) AND NOT IS_PED_GETTING_INTO_A_VEHICLE(pedBrad) IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_TEAM) PRINT_ADV(PRO_BUDDY, "PRO_BUDDY") ENDIF SAFE_ADD_BLIP_PED(blipBuddy, pedBrad, FALSE) IF GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_ENTER_VEHICLE) <> PERFORMING_TASK TASK_ENTER_VEHICLE(pedBrad, vehCar, -1, VS_BACK_RIGHT) ENDIF ELSE SAFE_REMOVE_BLIP(blipBuddy) ENDIF ENDIF ELSE SAFE_REMOVE_BLIP(blipDestination) SAFE_ADD_BLIP_VEHICLE(blipCar, vehCar, FALSE) PRINT_ADV(PRO_CAR2, "PRO_CAR2") ENDIF IF IS_ENTITY_IN_ANGLED_AREA(vehCar, <<3629.041016, -4750.028809, 109.965340>>, <<3435.589355, -4728.467285, 130.489777>>, 175.0) IF IS_PED_SITTING_IN_VEHICLE(playerPedMichael, vehCar) AND IS_PED_SITTING_IN_VEHICLE(playerPedTrevor, vehCar) AND IS_PED_SITTING_IN_VEHICLE(pedBrad, vehCar) IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL IF SAFE_START_CUTSCENE(0.0, FALSE) ADVANCE_STAGE() ENDIF ELSE ADVANCE_STAGE() ENDIF ENDIF ENDIF INT i BOOL bOffRoad = FALSE REPEAT COUNT_OF(vRoutePoint1) i IF IS_ENTITY_IN_ANGLED_AREA(playerPedID, vRoutePoint1[i], vRoutePoint2[i], fRouteWidth[i]) bOffRoad = TRUE ENDIF ENDREPEAT IF bOffRoad = FALSE INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(PRO_STAY_ON_ROAD) IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_OffRoute") iDialogueStage = 0 //PRO_OffRoute IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF GET_GAME_TIMER() > iDialogueTimer IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 6 ELIF iDialogueLineCount[iDialogueStage] > 0 CREATE_CONVERSATION_ADV(PRO_OffRoute, "PRO_OffRoute", CONV_PRIORITY_MEDIUM, FALSE) iDialogueLineCount[iDialogueStage]-- ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) ENDIF ENDIF ENDIF ENDIF VECTOR vClosest = vRoute[0] REPEAT COUNT_OF(vRoute) i IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), vRoute[i]) < GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), vClosest) vClosest = vRoute[i] IF i > 2 vRoute[i - 3] = VECTOR_ZERO //Delete two nodes back so you can't drive the wrong way ENDIF ENDIF ENDREPEAT IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), vClosest) > 30.0 AND bOffRoad = FALSE IF NOT IS_THIS_CONVERSATION_ONGOING_OR_QUEUED("PRO_WrongWay") iDialogueStage = 1 //PRO_WrongWay IF IS_PED_IN_VEHICLE(playerPedID, vehCar) IF GET_GAME_TIMER() > iDialogueTimer IF iDialogueLineCount[iDialogueStage] = -1 iDialogueLineCount[iDialogueStage] = 5 ELIF iDialogueLineCount[iDialogueStage] > 0 CREATE_CONVERSATION_ADV(PRO_WrongWay, "PRO_WrongWay", CONV_PRIORITY_MEDIUM, FALSE) iDialogueLineCount[iDialogueStage]-- ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(7500, 10000) ENDIF ENDIF ENDIF ENDIF MATERIAL_NAMES CollisionSurface = GET_LAST_MATERIAL_HIT_BY_ENTITY(vehCar) #IF IS_DEBUG_BUILD IF CollisionSurface = GENERAL_SNOW_LOOSE //snow_loose PRINTLN("GENERAL_SNOW_LOOSE") ENDIF // IF CollisionSurface = GENERAL_SNOW_TARMAC //snow_tarmac // PRINTLN("GENERAL_SNOW_TARMAC") // ENDIF IF CollisionSurface = GENERAL_SNOW_DEEP //snow_deep PRINTLN("GENERAL_SNOW_DEEP") ENDIF IF CollisionSurface = GENERAL_SNOW_COMPACT //snow_compact PRINTLN("GENERAL_SNOW_COMPACT") ENDIF #ENDIF IF GET_ENTITY_SPEED(vehCar) < 3.0 IF CollisionSurface = GENERAL_SNOW_LOOSE //snow_loose // OR CollisionSurface = GENERAL_SNOW_TARMAC //snow_tarmac OR CollisionSurface = GENERAL_SNOW_DEEP //snow_deep OR CollisionSurface = GENERAL_SNOW_COMPACT //snow_compact IF GET_GAME_TIMER() > iStuckTimer eMissionFail = failStuck missionFailed() ENDIF ENDIF ELSE iStuckTimer = GET_GAME_TIMER() + 10000 ENDIF IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), vClosest) > 60.0 eMissionFail = failOffRoute missionFailed() ENDIF IF ARE_VECTORS_EQUAL(vTrainHornLocation, VECTOR_ZERO) IF IS_ENTITY_AT_COORD(vehCar, <<3875.881348, -5020.976074, 113.531639>>, <<10.0, 25.0, 8.0>>) iTrainHornTimer = GET_GAME_TIMER() + 2000 vTrainHornLocation = <<3885.47705, -5082.06104, 110.29445>> ENDIF ELIF ARE_VECTORS_EQUAL(vTrainHornLocation, <<3885.47705, -5082.06104, 110.29445>>) IF IS_ENTITY_AT_COORD(vehCar, <<3669.30444, -4935.35303, 110.68387>>, <<10.0, 25.0, 8.0>>) iTrainHornTimer = GET_GAME_TIMER() + 2000 vTrainHornLocation = <<3685.60645, -4884.99023, 110.76416>> ENDIF ELIF ARE_VECTORS_EQUAL(vTrainHornLocation, <<3685.60645, -4884.99023, 110.76416>>) IF IS_ENTITY_AT_COORD(vehCar, <<3523.41113, -4856.05127, 110.64999>>, <<10.0, 25.0, 8.0>>) iTrainHornTimer = GET_GAME_TIMER() + 2000 vTrainHornLocation = <<3549.05420, -4828.07568, 112.12215>> ENDIF ENDIF //Sound IF REQUEST_SCRIPT_AUDIO_BANK("Prologue_Train_Sounds") //PRINTLN("Prologue_Train_Sounds - Loaded") IF sIDTrainBell = -1 sIDTrainBell = GET_SOUND_ID() PRINTLN("PLAY_SOUND_FROM_COORD | sIDTrainBell | Train_Bell") PLAY_SOUND_FROM_COORD(sIDTrainBell, "Train_Bell", <<3875.881348, -5020.976074, 113.531639>>, "Prologue_Sounds") ENDIF IF GET_GAME_TIMER() > iTrainHornTimer IF sIDTrainHorn != -1 STOP_SOUND(sIDTrainHorn) PRINTLN("STOP_SOUND | sIDTrainHorn") RELEASE_SOUND_ID(sIDTrainHorn) sIDTrainHorn = -1 ENDIF ELIF NOT ARE_VECTORS_EQUAL(vTrainHornLocation, VECTOR_ZERO) IF sIDTrainHorn = -1 sIDTrainHorn = GET_SOUND_ID() PRINTLN("PLAY_SOUND_FROM_COORD | sIDTrainHorn | Train_Horn") PLAY_SOUND_FROM_COORD(sIDTrainHorn, "Train_Horn", vTrainHornLocation, "Prologue_Sounds") ENDIF ENDIF ENDIF INT iGameTime = GET_GAME_TIMER() IF iGameTime % 8000 < 3000 SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_DO_DRIVEBYS, TRUE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_DO_DRIVEBYS, FALSE) ELIF iGameTime % 8000 >= 4000 AND iGameTime % 8000 < 7000 SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_DO_DRIVEBYS, FALSE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_DO_DRIVEBYS, TRUE) ELIF (iGameTime % 8000 >= 3000 AND iGameTime % 8000 < 4000) OR iGameTime % 8000 >= 7000 SET_PED_COMBAT_ATTRIBUTES(pedBrad, CA_DO_DRIVEBYS, FALSE) SET_PED_COMBAT_ATTRIBUTES(playerPedTrevor, CA_DO_DRIVEBYS, FALSE) ENDIF // 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) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DRIVE_TO_PICKUP") STOP_AUDIO_SCENE("PROLOGUE_DRIVE_TO_PICKUP") ENDIF IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_DRIVE_ESCAPE") STOP_AUDIO_SCENE("PROLOGUE_DRIVE_ESCAPE") ENDIF CLEAR_FACIAL_IDLE_ANIM_OVERRIDE(playerPedMichael) CLEAR_FACIAL_IDLE_ANIM_OVERRIDE(pedBrad) SET_ENTITY_INVINCIBLE(playerPedMichael, FALSE) SET_ENTITY_INVINCIBLE(playerPedTrevor, FALSE) SET_ENTITY_INVINCIBLE(pedBrad, FALSE) SET_GPS_FLASHES(FALSE) SAFE_REMOVE_BLIP(blipCop[2]) // SAFE_REMOVE_BLIP(blipCop[3]) SAFE_REMOVE_BLIP(blipCar) SAFE_REMOVE_BLIP(blipDestination) SAFE_DELETE_PED(pedTraffic[0]) SAFE_DELETE_PED(pedTraffic[1]) SAFE_DELETE_VEHICLE(vehTraffic[0]) SAFE_DELETE_VEHICLE(vehTraffic[1]) SET_MODEL_AS_NO_LONGER_NEEDED(TRACTOR3) SET_MODEL_AS_NO_LONGER_NEEDED(EMPEROR3) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_HILLBILLY_01) SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_HILLBILLY_02) INT i REPEAT COUNT_OF(pedCop) i IF DOES_ENTITY_EXIST(pedCop[i]) IF NOT IS_PED_INJURED(pedCop[i]) DISABLE_PED_PAIN_AUDIO(pedCop[i], TRUE) STOP_PED_SPEAKING(pedCop[i], TRUE) SET_ENTITY_HEALTH(pedCop[i], 0) ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedCop[i]) ENDIF ENDREPEAT REPEAT COUNT_OF(vehCop) i IF DOES_ENTITY_EXIST(vehCop[i]) SET_VEHICLE_AS_NO_LONGER_NEEDED(vehCop[i]) ENDIF ENDREPEAT REPEAT COUNT_OF(objBarrier) i IF DOES_ENTITY_EXIST(objBarrier[i]) SET_OBJECT_AS_NO_LONGER_NEEDED(objBarrier[i]) ENDIF ENDREPEAT SAFE_DELETE_OBJECT(objGarage) //Wanted SET_FAKE_WANTED_LEVEL(0) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC cutsceneFinale() IF INIT_STAGE() //Replay SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayFinale), "stageFinale") //Stats INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED(FALSE, PRO_GETAWAY_TIME) //Player Control //SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) //Brad Balaclava + Mask SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_HAIR, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_FEET, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) //Cover IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<3550.8804, -4691.8628, 113.40>>) covPoint[0] = ADD_COVER_POINT(<<3550.82, -4691.85, 113.40>>, 0.0, COVUSE_WALLTORIGHT, COVHEIGHT_LOW, COVARC_180) ENDIF //Component Variations SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 0, 0) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Cutscene REQUEST_CUTSCENE("PRO_MCS_6", CUTSCENE_REQUESTED_FROM_Z_SKIP) #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() IF NOT IS_PED_INJURED(pedGetaway) SET_PED_POSITION(pedGetaway, vCar, 0.0, FALSE) EXPLODE_PED_HEAD(pedGetaway) ENDIF REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 5) IF NOT IS_PED_IN_VEHICLE(playerPedMichael, vehCar) SET_PED_INTO_VEHICLE(playerPedMichael, vehCar) ENDIF IF NOT IS_PED_IN_VEHICLE(playerPedTrevor, vehCar) SET_PED_INTO_VEHICLE(playerPedTrevor, vehCar, VS_BACK_LEFT) ENDIF IF NOT IS_PED_IN_VEHICLE(pedBrad, vehCar) SET_PED_INTO_VEHICLE(pedBrad, vehCar, VS_BACK_RIGHT) ENDIF SET_PED_POSITION(playerPedID, <<3539.7244, -4718.3975, 111.8996>>, 346.1237) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_FRONT_LEFT) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(1000) // ENDIF ENDIF ELSE //Request Cutscene Variations - PRO_MCS_6 IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", playerPedMichael) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL2, 0, 0) SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Brad", pedBrad) ENDIF IF GET_GAME_TIMER() > iTrainHornTimer IF sIDTrainHorn != -1 STOP_SOUND(sIDTrainHorn) PRINTLN("STOP_SOUND | sIDTrainHorn") RELEASE_SOUND_ID(sIDTrainHorn) sIDTrainHorn = -1 ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_PROLOGUE_TEST_TRAIN_CRASH) IF GET_CUTSCENE_TIME() > ROUND(3.500000 * 1000.0) PLAY_AUDIO(PROLOGUE_TEST_TRAIN_CRASH) LOAD_AUDIO(PROLOGUE_TEST_BRAD_DOWN) SET_LABEL_AS_TRIGGERED(TRIGGER_PROLOGUE_TEST_TRAIN_CRASH, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_PROLOGUE_TEST_BRAD_DOWN) IF GET_CUTSCENE_TIME() > ROUND(26.200001 * 1000.0) PLAY_AUDIO(PROLOGUE_TEST_BRAD_DOWN) SET_LABEL_AS_TRIGGERED(TRIGGER_PROLOGUE_TEST_BRAD_DOWN, TRUE) ENDIF ENDIF //Weapon Assets REQUEST_WEAPON_ASSET(WEAPONTYPE_CARBINERIFLE, ENUM_TO_INT(WRF_REQUEST_COVER_ANIMS)) REQUEST_WEAPON_ASSET(WEAPONTYPE_SNIPERRIFLE) SWITCH iCutsceneStage CASE 0 IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() AND HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_SNIPERRIFLE) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE, TCF_CLEAR_TASK_INTERRUPT_CHECKS) UPDATE_PED_REFERENCES() SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) ENDIF ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedMichael, "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedTrevor, "TREVOR") CLEAR_TEXT() SET_VEHICLE_ENGINE_HEALTH(vehCar, 1000.0) SET_VEHICLE_PETROL_TANK_HEALTH(vehCar, 1000.0) IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_PLAYER_PED_MODEL(CHAR_MICHAEL), CEO_PRESERVE_FACE_BLOOD_DAMAGE | CEO_PRESERVE_BODY_BLOOD_DAMAGE) ELSE REGISTER_ENTITY_FOR_CUTSCENE(playerPedID, "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_PLAYER_PED_MODEL(CHAR_MICHAEL), CEO_PRESERVE_FACE_BLOOD_DAMAGE | CEO_PRESERVE_BODY_BLOOD_DAMAGE) ENDIF IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) REGISTER_ENTITY_FOR_CUTSCENE(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_PLAYER_PED_MODEL(CHAR_TREVOR), CEO_PRESERVE_FACE_BLOOD_DAMAGE | CEO_PRESERVE_BODY_BLOOD_DAMAGE) ELSE REGISTER_ENTITY_FOR_CUTSCENE(playerPedID, "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, GET_PLAYER_PED_MODEL(CHAR_MICHAEL), CEO_PRESERVE_FACE_BLOOD_DAMAGE | CEO_PRESERVE_BODY_BLOOD_DAMAGE) ENDIF REGISTER_ENTITY_FOR_CUTSCENE(pedBrad, "Brad", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, IG_BRAD, CEO_PRESERVE_FACE_BLOOD_DAMAGE | CEO_PRESERVE_BODY_BLOOD_DAMAGE) REGISTER_ENTITY_FOR_CUTSCENE(vehCar, "getaway_car", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_MICHAEL] = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(playerPedMichael, wtCarbineRifle) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_MICHAEL], "Michaels_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_TREVOR] = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(playerPedTrevor, wtCarbineRifle) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_TREVOR], "Trevors_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_BRAD] = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(pedBrad, wtShotgun) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_BRAD], "Brads_Shotgun", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_DAVE] = CREATE_WEAPON_OBJECT(WEAPONTYPE_SNIPERRIFLE, INFINITE_AMMO, GET_ENTITY_COORDS(playerPedID) - <<0.0, 0.0, 10.0>>, TRUE) GIVE_WEAPON_COMPONENT_TO_WEAPON_OBJECT(objWeapon[WEAPON_DAVE], WEAPONCOMPONENT_SNIPERRIFLE_CLIP_01) GIVE_WEAPON_COMPONENT_TO_WEAPON_OBJECT(objWeapon[WEAPON_DAVE], WEAPONCOMPONENT_AT_SCOPE_LARGE) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_DAVE], "Daves_Rifle", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) IF NOT DOES_ENTITY_EXIST(objBag[TREVOR_BAG_DROPPED]) objBag[TREVOR_BAG_DROPPED] = CREATE_OBJECT(P_LD_HEIST_BAG_S_1, <<3547.3811, -4695.8462, 112.9602>>) SET_ENTITY_COORDS(objBag[TREVOR_BAG_DROPPED], <<3547.3811, -4695.8462, 112.9602>>) SET_ENTITY_ROTATION(objBag[TREVOR_BAG_DROPPED], <<0.0000, 0.0000, -57.9600>>) FREEZE_ENTITY_POSITION(objBag[TREVOR_BAG_DROPPED], TRUE) ENDIF REGISTER_ENTITY_FOR_CUTSCENE(objBag[TREVOR_BAG_DROPPED], "Trevors_Heist_Bag", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) //Fix car door/window SET_VEHICLE_DOOR_CONTROL(vehCar, SC_DOOR_REAR_LEFT, DT_DOOR_INTACT, 0.0) //FIX_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) START_CUTSCENE() WAIT_WITH_DEATH_CHECKS(0) REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST) IF NOT IS_REPEAT_PLAY_ACTIVE() SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) ENDIF //Radar bRadar = FALSE //Clear Area CLEAR_AREA(<<3549.7505, -4660.5261, 113.5495>>, 1000.0, TRUE) REMOVE_IPL("DES_ProTree_start_lod") SET_PAD_CAN_SHAKE_DURING_CUTSCENE(TRUE) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF ADVANCE_CUTSCENE() ENDIF BREAK CASE 1 IF NOT HAS_LABEL_BEEN_TRIGGERED(TrainCrash) IF GET_CUTSCENE_TIME() > ROUND(2.702420 * 1000.0) SET_CONTROL_SHAKE(PLAYER_CONTROL, 300, 256) SET_LABEL_AS_TRIGGERED(TrainCrash, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TreeCrash) IF GET_CUTSCENE_TIME() > ROUND(3.946786 * 1000.0) SET_CONTROL_SHAKE(PLAYER_CONTROL, 300, 256) //Michael Injuries APPLY_PED_BLOOD_SPECIFIC(playerPedMichael, ENUM_TO_INT(PDZ_HEAD), 0.383, 0.500, 320.966, 1.0, 1, 0.0, "stab") APPLY_PED_BLOOD_SPECIFIC(playerPedMichael, ENUM_TO_INT(PDZ_HEAD), 0.401, 0.461, 322.404, 1.0, 3, 0.0, "stab") APPLY_PED_BLOOD_SPECIFIC(playerPedMichael, ENUM_TO_INT(PDZ_HEAD), 0.455, 0.772, 305.206, 1.0, 3, 0.0, "stab") APPLY_PED_BLOOD_SPECIFIC(playerPedMichael, ENUM_TO_INT(PDZ_HEAD), 0.515, 0.467, 316.088, 1.0, 4, 0.0, "BulletSmall") //Trevor Injuries // APPLY_PED_BLOOD_SPECIFIC(playerPedTrevor, ENUM_TO_INT(PDZ_HEAD), 0.503, 0.383, 322.372, 1.0, 3, 0.0, "BulletSmall") // APPLY_PED_BLOOD_SPECIFIC(playerPedTrevor, ENUM_TO_INT(PDZ_HEAD), 0.533, 0.371, 321.534, 1.0, 3, 0.0, "ShotgunSmall") APPLY_PED_BLOOD_SPECIFIC(playerPedTrevor, ENUM_TO_INT(PDZ_HEAD), 0.533, 0.629, 306.584, 1.0, 3, 0.0, "ShotgunSmall") APPLY_PED_BLOOD_SPECIFIC(playerPedTrevor, ENUM_TO_INT(PDZ_HEAD), 0.479, 0.467, 318.127, 1.0, 6, 0.0, "ShotgunSmall") SET_LABEL_AS_TRIGGERED(TreeCrash, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(RadiatorSteam) IF GET_CUTSCENE_TIME() > ROUND(5.333333 * 1000.0) //Particles IF HAS_PTFX_ASSET_LOADED() IF NOT DOES_PARTICLE_FX_LOOPED_EXIST(ptfxRadiator) ptfxRadiator = START_PARTICLE_FX_LOOPED_AT_COORD("scr_pro_car_steam", <<3530.8, -4717.9, 113.1>>, <<-3.3, 0.0, -54.3>>) SET_LABEL_AS_TRIGGERED(RadiatorSteam, TRUE) ENDIF ENDIF ENDIF ENDIF // IF bVideoRecording // IF GET_CUTSCENE_TIME() > ROUND(5.633000 * 1000.0) // AND GET_CUTSCENE_TIME() < ROUND(6.633000 * 1000.0) // REPLAY_STOP_EVENT() // // bVideoRecording = FALSE // ENDIF // ENDIF // // IF NOT bVideoRecording // IF GET_CUTSCENE_TIME() > ROUND(33.838002 * 1000.0) // AND GET_CUTSCENE_TIME() < ROUND(34.838002 * 1000.0) // REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH) // // bVideoRecording = TRUE // ENDIF // ENDIF // IF bVideoRecording // IF GET_CUTSCENE_TIME() > ROUND(47.659000 * 1000.0) // REPLAY_STOP_EVENT() // // bVideoRecording = FALSE // ENDIF // ENDIF // enveff snow brad 1950940 - Rob B ENTITY_INDEX entitySnowBrad entitySnowBrad = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Brad", CS_BRAD) IF NOT IS_ENTITY_DEAD(entitySnowBrad) IF GET_CUTSCENE_TIME() < 45701 SET_ENABLE_PED_ENVEFF_SCALE(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySnowBrad), TRUE) SET_PED_ENVEFF_SCALE(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySnowBrad), 0.6) ELSE SET_ENABLE_PED_ENVEFF_SCALE(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySnowBrad), TRUE) SET_PED_ENVEFF_SCALE(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySnowBrad), 0.8) SET_PED_ENVEFF_CPV_ADD(GET_PED_INDEX_FROM_ENTITY_INDEX(entitySnowBrad), 0.15) ENDIF ENDIF //Brad Injuries IF NOT HAS_LABEL_BEEN_TRIGGERED(BradHeadWound) IF GET_CUTSCENE_TIME() > ROUND(16.133335 * 1000.0) ENTITY_INDEX entityBrad entityBrad = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Brad", CS_BRAD) IF NOT IS_ENTITY_DEAD(entityBrad) APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entityBrad), ENUM_TO_INT(PDZ_HEAD), 0.479, 0.467, 318.127, 1.0, 5, 0.0, "BulletSmall") APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entityBrad), ENUM_TO_INT(PDZ_HEAD), 0.521, 0.467, 315.710, 1.0, 6, 0.0, "ShotgunSmall") APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entityBrad), ENUM_TO_INT(PDZ_HEAD), 0.575, 0.617, 304.560, 1.0, 4, 0.0, "ShotgunLarge") APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entityBrad), ENUM_TO_INT(PDZ_HEAD), 0.305, 0.760, 312.434, 0.0, 1, 0.0, "ShotgunSmallMonolithic") SET_LABEL_AS_TRIGGERED(BradHeadWound, TRUE) ENDIF ENDIF ENDIF //Brad Shot IF NOT HAS_LABEL_BEEN_TRIGGERED(BradShot) IF GET_CUTSCENE_TIME() > ROUND(35.866669 * 1000.0) //Brad_Bang_Bang ENTITY_INDEX entityBrad entityBrad = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Brad", CS_BRAD) IF NOT IS_ENTITY_DEAD(entityBrad) APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entityBrad), ENUM_TO_INT(PDZ_TORSO), 0.898, 0.739, 277.828, 1.0, 1, 0.0, "BulletLarge") APPLY_PED_BLOOD_SPECIFIC(GET_PED_INDEX_FROM_ENTITY_INDEX(entityBrad), ENUM_TO_INT(PDZ_TORSO), 0.369, 0.756, 309.838, 1.0, 4, 0.0, "BulletSmall") SET_LABEL_AS_TRIGGERED(BradShot, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(SnowCover) IF GET_CUTSCENE_TIME() > ROUND(6.567667 * 1000.0) AND HAS_CUTSCENE_CUT_THIS_FRAME() //IPL - Snow Tracks REMOVE_IPL("prologue04_cover") SET_LABEL_AS_TRIGGERED(SnowCover, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TrevorCashLost) IF GET_CUTSCENE_TIME() > ROUND(35.866669 * 1000.0) iCurrentTake -= 84000 g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = iCurrentTake #IF IS_DEBUG_BUILD PRINTLN("g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = ", g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE]) #ENDIF SET_LABEL_AS_TRIGGERED(TrevorCashLost, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(MichaelCashLost) IF GET_CUTSCENE_TIME() > ROUND(45.166668 * 1000.0) iCurrentTake = 0 g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = iCurrentTake #IF IS_DEBUG_BUILD PRINTLN("g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = ", g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE]) #ENDIF SET_LABEL_AS_TRIGGERED(MichaelCashLost, TRUE) ENDIF ENDIF //Brad IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Brad") SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedBrad, FALSE) TASK_PLAY_ANIM_ADVANCED(pedBrad, sAnimDictPrologue6, "lying_dead_brad", <<3550.345, -4691.505, 114.368>>, VECTOR_ZERO, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_NOT_INTERRUPTABLE | AF_IGNORE_GRAVITY | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) IF NOT DOES_ENTITY_EXIST(objBag[TREVOR_BAG_STATIC]) objBag[TREVOR_BAG_STATIC] = CREATE_OBJECT(PROP_CS_HEIST_BAG_02, <<3545.9810, -4692.6260, 112.8602>>) SET_ENTITY_COORDS(objBag[TREVOR_BAG_STATIC], <<3545.9810, -4692.6260, 112.8602>>) SET_ENTITY_ROTATION(objBag[TREVOR_BAG_STATIC], <<-103.3200, 0.0000, -115.2000>>) FREEZE_ENTITY_POSITION(objBag[TREVOR_BAG_STATIC], TRUE) ENDIF REMOVE_ALL_PED_WEAPONS(pedBrad) STOP_PED_SPEAKING(pedBrad, TRUE) ENDIF //Player Anim IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") IF NOT HAS_LABEL_BEEN_TRIGGERED(MichaelDeadAnim) IF NOT IS_ENTITY_PLAYING_ANIM(playerPedMichael, sAnimDictPrologue6, "lying_dead_player0") sceneMichaelDead = CREATE_SYNCHRONIZED_SCENE(<<3550.345, -4691.505, 114.368>>, VECTOR_ZERO) TASK_SYNCHRONIZED_SCENE(playerPedMichael, sceneMichaelDead, sAnimDictPrologue6, "lying_dead_player0", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_FIRE | RBF_ELECTROCUTION | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_IMPACT_OBJECT | RBF_MELEE | RBF_RUBBER_BULLET | RBF_FALLING | RBF_WATER_JET | RBF_DROWNING | RBF_ALLOW_BLOCK_DEAD_PED) SET_SYNCHRONIZED_SCENE_LOOPED(sceneMichaelDead, TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedMichael) SET_LABEL_AS_TRIGGERED(MichaelDeadAnim, TRUE) ENDIF ENDIF STOP_PED_SPEAKING(playerPedMichael, TRUE) IF NOT DOES_ENTITY_EXIST(objBag[MICHAEL_BAG_STATIC]) objBag[MICHAEL_BAG_STATIC] = CREATE_OBJECT(PROP_CS_HEIST_BAG_02, <<3547.3811, -4695.8462, 112.9602>>) SET_ENTITY_COORDS(objBag[MICHAEL_BAG_STATIC], <<3547.3811, -4695.8462, 112.9602>>) SET_ENTITY_ROTATION(objBag[MICHAEL_BAG_STATIC], <<0.0000, 0.0000, -57.9600>>) FREEZE_ENTITY_POSITION(objBag[MICHAEL_BAG_STATIC], TRUE) ENDIF IF NOT HAS_PED_GOT_WEAPON(playerPedMichael, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedMichael, wtCarbineRifle, 500, TRUE) ENDIF SET_CURRENT_PED_WEAPON(playerPedMichael, wtCarbineRifle, TRUE) ENDIF //Player Anim IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") SET_PED_POSITION(playerPedTrevor, <<3550.82, -4691.85, 113.40>>, 90.0, FALSE) SET_PLAYER_SIMULATE_AIMING(PLAYER_ID(), FALSE) // SET_PED_LEG_IK_MODE(playerPedTrevor, LEG_IK_FULL) TASK_PUT_PED_DIRECTLY_INTO_COVER(playerPedTrevor, <<3550.82, -4691.85, 113.40>>, -1, FALSE, 0.0, TRUE, TRUE, covPoint[0]) // FORCE_INSTANT_LEG_IK_SETUP(playerPedTrevor) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedTrevor) IF NOT HAS_PED_GOT_WEAPON(playerPedTrevor, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedTrevor, wtCarbineRifle, 500, TRUE) ENDIF SET_CURRENT_PED_WEAPON(playerPedTrevor, wtCarbineRifle, TRUE) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON SET_FIRST_PERSON_SHOOTER_CAMERA_HEADING(-37.5) SET_FIRST_PERSON_SHOOTER_CAMERA_PITCH(-5.0) SET_LABEL_AS_TRIGGERED(FirstPersonRelativeHeadingSpam, TRUE) ELSE SET_GAMEPLAY_CAM_RELATIVE_HEADING(29.6 - GET_ENTITY_HEADING(playerPedTrevor)) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) ENDIF ENDIF IF HAS_LABEL_BEEN_TRIGGERED(FirstPersonRelativeHeadingSpam) SET_GAMEPLAY_CAM_RELATIVE_HEADING(-37.5) PRINTLN("First Person Cam Active!") SET_GAMEPLAY_CAM_RELATIVE_PITCH(-5.0) ENDIF //Bag IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_Heist_Bag") FREEZE_ENTITY_POSITION(objBag[TREVOR_BAG_DROPPED], TRUE) #IF IS_DEBUG_BUILD PRINTLN("FREEZE_ENTITY_POSITION(objBag[TREVOR_BAG_DROPPED], TRUE)") #ENDIF ENDIF //Weapon IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michaels_weapon") FREEZE_ENTITY_POSITION(objWeapon[WEAPON_MICHAEL], TRUE) #IF IS_DEBUG_BUILD PRINTLN("FREEZE_ENTITY_POSITION(objWeapon[WEAPON_MICHAEL], TRUE)") #ENDIF //GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_MICHAEL], playerPedMichael) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_weapon") GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_TREVOR], playerPedTrevor) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Brads_Shotgun") SET_ENTITY_ROTATION(objWeapon[WEAPON_BRAD], <<90.0, 0.0, 0.0>>) FREEZE_ENTITY_POSITION(objWeapon[WEAPON_BRAD], TRUE) #IF IS_DEBUG_BUILD PRINTLN("FREEZE_ENTITY_POSITION(objWeapon[WEAPON_BRAD], TRUE)") #ENDIF //GIVE_WEAPON_OBJECT_TO_PED(objWeapon[WEAPON_TREVOR], playerPedTrevor) ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Daves_Rifle") SAFE_DELETE_OBJECT(objWeapon[WEAPON_DAVE]) ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(CopCarsPlayback) IF HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD2, POLICEOLD2) IF IS_CUTSCENE_PLAYING() IF GET_CUTSCENE_TIME() > ROUND(55.766670 * 1000.0) IF NOT DOES_ENTITY_EXIST(vehCop[16]) SPAWN_VEHICLE(vehCop[16], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(027, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(027, 0.0, sCarrec))) SET_VEHICLE_SIREN(vehCop[16], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[16], TRUE) createCop(0) createCop(1) SET_PED_INTO_VEHICLE(pedCop[0], vehCop[16]) SET_PED_INTO_VEHICLE(pedCop[1], vehCop[16], VS_FRONT_RIGHT) START_PLAYBACK_RECORDED_VEHICLE(vehCop[16], 027, sCarrec) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCop[16], 500) ENDIF IF NOT DOES_ENTITY_EXIST(vehCop[17]) SPAWN_VEHICLE(vehCop[17], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(028, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(028, 0.0, sCarrec))) SET_VEHICLE_SIREN(vehCop[17], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[17], TRUE) createCop(2) createCop(3) SET_PED_INTO_VEHICLE(pedCop[2], vehCop[17]) SET_PED_INTO_VEHICLE(pedCop[3], vehCop[17], VS_FRONT_RIGHT) START_PLAYBACK_RECORDED_VEHICLE(vehCop[17], 028, sCarrec) SET_PLAYBACK_SPEED(vehCop[17], 0.75) ENDIF IF NOT DOES_ENTITY_EXIST(vehCop[18]) SPAWN_VEHICLE(vehCop[18], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(029, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(029, 0.0, sCarrec))) SET_VEHICLE_SIREN(vehCop[18], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[18], TRUE) createCop(4) createCop(5) SET_PED_INTO_VEHICLE(pedCop[4], vehCop[18]) SET_PED_INTO_VEHICLE(pedCop[5], vehCop[18], VS_FRONT_RIGHT) START_PLAYBACK_RECORDED_VEHICLE(vehCop[18], 029, sCarrec) ENDIF //Wanted SET_FAKE_WANTED_LEVEL(5) SET_LABEL_AS_TRIGGERED(CopCarsPlayback, TRUE) ENDIF ENDIF ENDIF ENDIF IF WAS_CUTSCENE_SKIPPED() SET_CUTSCENE_FADE_VALUES(FALSE, FALSE, TRUE, FALSE) bCutsceneSkipped = TRUE ENDIF IF HAS_CUTSCENE_FINISHED() IF bCutsceneSkipped WHILE NOT HAS_WEAPON_ASSET_LOADED(WEAPONTYPE_CARBINERIFLE) WAIT_WITH_DEATH_CHECKS(0) ENDWHILE DO_SCREEN_FADE_IN(1000) #IF IS_DEBUG_BUILD PRINTLN("DO_SCREEN_FADE_IN") #ENDIF ENDIF REPLAY_STOP_EVENT() bCutsceneSkipped = FALSE SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) ADVANCE_STAGE() ENDIF DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA) BREAK ENDSWITCH ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) SET_PAD_CAN_SHAKE_DURING_CUTSCENE(FALSE) REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE //Particles IF DOES_PARTICLE_FX_LOOPED_EXIST(ptfxRadiator) STOP_PARTICLE_FX_LOOPED(ptfxRadiator) ENDIF IF sIDTrainBell != -1 STOP_SOUND(sIDTrainBell) RELEASE_SOUND_ID(sIDTrainBell) sIDTrainBell = -1 ENDIF IF sIDTrainHorn != -1 STOP_SOUND(sIDTrainHorn) RELEASE_SOUND_ID(sIDTrainHorn) sIDTrainHorn = -1 ENDIF RELEASE_NAMED_SCRIPT_AUDIO_BANK("Prologue_Train_Sounds") SAFE_DELETE_OBJECT(objWeapon[WEAPON_DAVE]) SAFE_DELETE_OBJECT(objWeapon[WEAPON_TREVOR]) SAFE_REMOVE_BLIP(blipMichael) SAFE_REMOVE_BLIP(blipBuddy) SAFE_REMOVE_BLIP(blipCar) eMissionObjective = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) + 1) ENDIF ENDPROC PROC Finale() IF INIT_STAGE() //Replay SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(ENUM_TO_INT(replayFinale), "stageFinale", TRUE) //Player Control SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) //Take iCurrentTake = 0 g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = iCurrentTake #IF IS_DEBUG_BUILD PRINTLN("g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE] = ", g_replay.iReplayInt[REPLAY_VALUE_CURRENT_TAKE]) #ENDIF //Wanted SET_FAKE_WANTED_LEVEL(5) //Brad Balaclava + Mask SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_HAIR, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_FEET, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_HAIR, 5, 0) SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL, 0, 0) //Balaclava SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) //Radar bRadar = TRUE //Up the difficulty of the stage by increasing the cops accuracy each time they respawn iDeadCopPlus = 0 //IPL - Snow Tracks REMOVE_IPL("prologue04_cover") //Navmesh iNavMeshBlockingFarm = ADD_NAVMESH_BLOCKING_OBJECT(<<3551.478, -4690.381, 112.995>>, <<15.0, 15.0, 6.0>>, 0.017) //Stops enemies getting to close to the player iNavMeshBlockingCopPath1 = ADD_NAVMESH_BLOCKING_OBJECT(<<3518.556885, -4670.073730, 112.225830>>, <<18.0, 3.0, 6.0>>, (-1.39 / 360) * 6.28) //Stops cops getting run over by the cop car iNavMeshBlockingCopPath2 = ADD_NAVMESH_BLOCKING_OBJECT(<<3528.091309, -4673.379395, 112.289085>>, <<2.0, 8.0, 6.0>>, 0.0) //Component Variations SET_PED_COMPONENT_VARIATION(playerPedMichael, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL2, 0, 0) SET_PED_COMPONENT_VARIATION(pedBrad, PED_COMP_SPECIAL2, 0, 0) //Friendly Fire Relationship Group SET_PED_RELATIONSHIP_GROUP_HASH(pedBrad, relGroupFriendlyFire) SAFE_REMOVE_BLIP(blipMichael) SAFE_REMOVE_BLIP(blipBuddy) SAFE_REMOVE_BLIP(blipCar) SET_LABEL_AS_TRIGGERED(PRO_Hostage, FALSE) #IF IS_DEBUG_BUILD IF bAutoSkipping = FALSE #ENDIF //Audio Scene IF NOT IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GRAB_WOMAN") START_AUDIO_SCENE("PROLOGUE_GRAB_WOMAN") ENDIF SPAWN_VEHICLE(vehTrain[0], FREIGHT, <<3461.9600, -4732.6328, 113.0537 - 1.60>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[0]) FREEZE_ENTITY_POSITION(vehTrain[0], TRUE) SPAWN_VEHICLE(vehTrain[1], FREIGHTCONT1, <<3478.5854, -4734.4746, 112.1684 - 0.50>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[1]) FREEZE_ENTITY_POSITION(vehTrain[1], TRUE) SPAWN_VEHICLE(vehTrain[2], FREIGHTCONT2, <<3494.1167, -4736.1992, 112.2295 - 0.50>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[2]) FREEZE_ENTITY_POSITION(vehTrain[2], TRUE) SPAWN_VEHICLE(vehTrain[3], FREIGHTCONT2, <<3509.6353, -4737.9224, 112.2905 - 0.50>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[3]) FREEZE_ENTITY_POSITION(vehTrain[3], TRUE) SPAWN_VEHICLE(vehTrain[4], FREIGHTCONT1, <<3525.1606, -4739.6465, 112.3516 - 0.50>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[4]) FREEZE_ENTITY_POSITION(vehTrain[4], TRUE) SPAWN_VEHICLE(vehTrain[5], FREIGHTCONT2, <<3540.6980, -4741.3716, 112.4128 - 0.50>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[5]) FREEZE_ENTITY_POSITION(vehTrain[5], TRUE) SPAWN_VEHICLE(vehTrain[6], FREIGHTCONT1, <<3556.2366, -4743.0972, 112.4739 - 0.50>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[6]) FREEZE_ENTITY_POSITION(vehTrain[6], TRUE) SPAWN_VEHICLE(vehTrain[7], FREIGHTCONT2, <<3571.7502, -4744.8198, 112.5349 - 0.50>>, 83.6637) SET_VEHICLE_ON_GROUND_PROPERLY(vehTrain[7]) FREEZE_ENTITY_POSITION(vehTrain[7], TRUE) #IF IS_DEBUG_BUILD ENDIF #ENDIF IF SKIPPED_STAGE() //Clear Area CLEAR_AREA(<<3549.7505, -4660.5261, 113.5495>>, 1000.0, TRUE) IF NOT IS_PED_INJURED(pedGetaway) SET_PED_POSITION(pedGetaway, vCar, 0.0, FALSE) EXPLODE_PED_HEAD(pedGetaway) ENDIF REMOVE_PED_FOR_DIALOGUE(sPedsForConversation, 5) IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) UPDATE_PED_REFERENCES() SET_PED_RELATIONSHIP_GROUP_HASH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], relGroupBuddy) ENDIF ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedMichael, "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedTrevor, "TREVOR") SET_VEHICLE_POSITION(vehCar, <<3532.2458, -4716.9336, 111.8443>>, 125.7299) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_FRONT_LEFT) SMASH_VEHICLE_WINDOW(vehCar, SC_WINDOW_REAR_LEFT) //Brad SET_PED_POSITION(pedBrad, <<3550.345, -4691.488, 113.090>>, 351.6286, FALSE) SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedBrad, FALSE) TASK_PLAY_ANIM_ADVANCED(pedBrad, sAnimDictPrologue6, "lying_dead_brad", <<3550.345, -4691.505, 114.368>>, VECTOR_ZERO, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_EXTRACT_INITIAL_OFFSET | AF_LOOPING | AF_NOT_INTERRUPTABLE | AF_IGNORE_GRAVITY | AF_USE_KINEMATIC_PHYSICS | AF_USE_MOVER_EXTRACTION) FORCE_PED_AI_AND_ANIMATION_UPDATE(pedBrad) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedBrad, TRUE) IF NOT DOES_ENTITY_EXIST(objBag[TREVOR_BAG_STATIC]) objBag[TREVOR_BAG_STATIC] = CREATE_OBJECT(PROP_CS_HEIST_BAG_02, <<3545.9810, -4692.6260, 112.8602>>) SET_ENTITY_COORDS(objBag[TREVOR_BAG_STATIC], <<3545.9810, -4692.6260, 112.8602>>) SET_ENTITY_ROTATION(objBag[TREVOR_BAG_STATIC], <<-103.3200, 0.0000, -115.2000>>) FREEZE_ENTITY_POSITION(objBag[TREVOR_BAG_STATIC], TRUE) ENDIF STOP_PED_SPEAKING(pedBrad, TRUE) //Player Anim SET_PED_POSITION(playerPedMichael, <<3543.8826, -4696.1963, 112.6563>>, 351.6286, FALSE) sceneMichaelDead = CREATE_SYNCHRONIZED_SCENE(<<3550.345, -4691.505, 114.368>>, VECTOR_ZERO) TASK_SYNCHRONIZED_SCENE(playerPedMichael, sceneMichaelDead, sAnimDictPrologue6, "lying_dead_player0", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_BULLET_IMPACT | RBF_VEHICLE_IMPACT | RBF_FIRE | RBF_ELECTROCUTION | RBF_PLAYER_IMPACT | RBF_EXPLOSION | RBF_IMPACT_OBJECT | RBF_MELEE | RBF_RUBBER_BULLET | RBF_FALLING | RBF_WATER_JET | RBF_DROWNING | RBF_ALLOW_BLOCK_DEAD_PED) SET_SYNCHRONIZED_SCENE_LOOPED(sceneMichaelDead, TRUE) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedMichael) STOP_PED_SPEAKING(playerPedMichael, TRUE) IF NOT HAS_PED_GOT_WEAPON(playerPedMichael, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedMichael, wtCarbineRifle, 500, TRUE) ENDIF SET_CURRENT_PED_WEAPON(playerPedMichael, wtCarbineRifle, TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedMichael, TRUE) IF NOT DOES_ENTITY_EXIST(objBag[MICHAEL_BAG_STATIC]) objBag[MICHAEL_BAG_STATIC] = CREATE_OBJECT(PROP_CS_HEIST_BAG_02, <<3547.3811, -4695.8462, 112.9602>>) SET_ENTITY_COORDS(objBag[MICHAEL_BAG_STATIC], <<3547.3811, -4695.8462, 112.9602>>) SET_ENTITY_ROTATION(objBag[MICHAEL_BAG_STATIC], <<0.0000, 0.0000, -57.9600>>) FREEZE_ENTITY_POSITION(objBag[MICHAEL_BAG_STATIC], TRUE) ENDIF //Cover IF NOT DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS(<<3550.82, -4691.85, 113.40>>) covPoint[0] = ADD_COVER_POINT(<<3550.82, -4691.85, 113.40>>, 0.0, COVUSE_WALLTORIGHT, COVHEIGHT_LOW, COVARC_180) ENDIF //Player Anim SET_PED_POSITION(playerPedTrevor, <<3550.82, -4691.85, 113.40>>, 0.0, FALSE) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_HAIR, 7, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_BERD, 1, 0) SET_PED_COMPONENT_VARIATION(playerPedTrevor, PED_COMP_SPECIAL, 0, 0) CLEAR_PED_PROP(playerPedTrevor, ANCHOR_EYES) SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TRV_PRO_MASK_REMOVED, TRUE) TASK_PUT_PED_DIRECTLY_INTO_COVER(playerPedTrevor, <<3550.82, -4691.85, 113.40>>, -1, FALSE, 0.0, TRUE, TRUE, covPoint[0]) FORCE_PED_AI_AND_ANIMATION_UPDATE(playerPedTrevor, TRUE) IF NOT HAS_PED_GOT_WEAPON(playerPedTrevor, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedTrevor, wtCarbineRifle, 500, TRUE) ENDIF SET_CURRENT_PED_WEAPON(playerPedTrevor, wtCarbineRifle, TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(playerPedTrevor, TRUE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(29.603371 - GET_ENTITY_HEADING(playerPedTrevor)) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) //Score PLAY_AUDIO(PROLOGUE_TEST_FINALE_RT) //PROLOGUE_TEST_GRAB_WOMAN ENDIF ELSE //Request Cutscene Variations - PRO_MCS_7_Concat IF iCutsceneStage < 3 //Cutscene REQUEST_CUTSCENE("PRO_MCS_7_Concat") IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", playerPedTrevor) ENDIF ENDIF INT i SWITCH iCutsceneStage CASE 0 IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR MAKE_SELECTOR_PED_SELECTION(sSelectorPeds, SELECTOR_PED_TREVOR) TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds, TRUE, TRUE) UPDATE_PED_REFERENCES() ENDIF //Friendly Fire Relationship Group IF DOES_ENTITY_EXIST(playerPedMichael) SET_PED_RELATIONSHIP_GROUP_HASH(playerPedMichael, relGroupFriendlyFire) ENDIF ADD_PED_FOR_DIALOGUE(sPedsForConversation, 1, playerPedMichael, "MICHAEL") ADD_PED_FOR_DIALOGUE(sPedsForConversation, 2, playerPedTrevor, "TREVOR") IF NOT HAS_PED_GOT_WEAPON(playerPedID, wtCarbineRifle) GIVE_WEAPON_TO_PED(playerPedID, wtCarbineRifle, 500, TRUE) #IF IS_DEBUG_BUILD PRINTLN("GIVE_WEAPON_TO_PED") #ENDIF ENDIF IF GET_AMMO_IN_PED_WEAPON(playerPedID, wtCarbineRifle) < (GET_WEAPON_CLIP_SIZE(wtCarbineRifle) * 2) SET_PED_AMMO(playerPedID, wtCarbineRifle, (GET_WEAPON_CLIP_SIZE(wtCarbineRifle) * 2)) ENDIF SET_CURRENT_PED_WEAPON(playerPedID, wtCarbineRifle, TRUE) #IF IS_DEBUG_BUILD PRINTLN("SET_CURRENT_PED_WEAPON") #ENDIF //Radar bRadar = TRUE SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCar, FALSE) SET_VEHICLE_ON_GROUND_PROPERLY(vehCar) ACTIVATE_PHYSICS(vehCar) //Score SET_FRONTEND_RADIO_ACTIVE(FALSE) //Score LOAD_AUDIO(PROLOGUE_TEST_FINAL_CUTSCENE) PLAY_AUDIO(PROLOGUE_TEST_GRAB_WOMAN) ADVANCE_CUTSCENE() BREAK CASE 1 IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(1000) ENDIF bReplaySkip = FALSE //Farm Cop Cars IF NOT HAS_LABEL_BEEN_TRIGGERED(CopCarsPlayback) IF NOT DOES_ENTITY_EXIST(vehCop[16]) SPAWN_VEHICLE(vehCop[16], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(027, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(027, sCarrec), sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(027, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(027, sCarrec), sCarrec))) SET_VEHICLE_SIREN(vehCop[16], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[16], TRUE) createCop(0) createCop(1) SET_PED_ACCURACY(pedCop[0], 5) SET_PED_ACCURACY(pedCop[1], 5) SET_PED_INTO_VEHICLE(pedCop[0], vehCop[16]) SET_PED_INTO_VEHICLE(pedCop[1], vehCop[16], VS_FRONT_RIGHT) START_PLAYBACK_RECORDED_VEHICLE(vehCop[16], 027, sCarrec) SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehCop[16], 500) ENDIF IF NOT DOES_ENTITY_EXIST(vehCop[17]) SPAWN_VEHICLE(vehCop[17], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(028, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(028, sCarrec), sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(028, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(028, sCarrec), sCarrec))) SET_VEHICLE_SIREN(vehCop[17], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[17], TRUE) createCop(2) createCop(3) SET_PED_ACCURACY(pedCop[2], 5) SET_PED_ACCURACY(pedCop[3], 5) SET_PED_INTO_VEHICLE(pedCop[2], vehCop[17]) SET_PED_INTO_VEHICLE(pedCop[3], vehCop[17], VS_FRONT_RIGHT) START_PLAYBACK_RECORDED_VEHICLE(vehCop[17], 028, sCarrec) SET_PLAYBACK_SPEED(vehCop[17], 0.75) ENDIF IF NOT DOES_ENTITY_EXIST(vehCop[18]) SPAWN_VEHICLE(vehCop[18], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(029, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(029, sCarrec), sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(029, GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(029, sCarrec), sCarrec))) SET_VEHICLE_SIREN(vehCop[18], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[18], TRUE) createCop(4) createCop(5) SET_PED_ACCURACY(pedCop[4], 5) SET_PED_ACCURACY(pedCop[5], 5) SET_PED_INTO_VEHICLE(pedCop[4], vehCop[18]) SET_PED_INTO_VEHICLE(pedCop[5], vehCop[18], VS_FRONT_RIGHT) START_PLAYBACK_RECORDED_VEHICLE(vehCop[18], 029, sCarrec) ENDIF SET_LABEL_AS_TRIGGERED(CopCarsPlayback, TRUE) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(POLICEOLD2) REPEAT 3 i SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[i + 16], FALSE) ENDREPEAT //Cops REPEAT 6 i IF i = 0 OR i = 3 GIVE_WEAPON_TO_PED(pedCop[i], wtSMG, INFINITE_AMMO, TRUE) ENDIF IF i = 2 OR i = 5 GIVE_WEAPON_TO_PED(pedCop[i], wtShotgun, INFINITE_AMMO, TRUE) ENDIF ENDREPEAT ADVANCE_CUTSCENE() BREAK CASE 2 SET_PED_MAX_MOVE_BLEND_RATIO(playerPedID, 2.5) IF GET_PROFILE_SETTING(PROFILE_ACTION_AUTO_AIM) = 0 IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() PRINT_HELP_ADV(PROHLP_AIM3, "PROHLP_AIM3") ENDIF ENDIF IF NOT IS_ENTITY_IN_ANGLED_AREA(playerPedID, <<3567.723633, -4664.949707, 111.653862>>, <<3557.713623, -4704.931152, 118.520966>>, 35.0) eMissionFail = failRanAway missionFailed() ENDIF //Farm Cop Car Explodes IF TIMERA() > 24000 IF NOT IS_ENTITY_DEAD(vehCop[16]) AND (GET_ENTITY_HEALTH(vehCop[16]) < 1000 OR GET_VEHICLE_PETROL_TANK_HEALTH(vehCop[16]) < 1000.0 OR GET_VEHICLE_ENGINE_HEALTH(vehCop[16]) < 1000.0) EXPLODE_VEHICLE(vehCop[16], TRUE, TRUE) IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(vehCop[16])) < 10.0 SHAKE_GAMEPLAY_CAM("MEDIUM_EXPLOSION_SHAKE", 0.25) ELIF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(playerPedID), GET_ENTITY_COORDS(vehCop[16])) >= 10.0 SHAKE_GAMEPLAY_CAM("SMALL_EXPLOSION_SHAKE", 0.25) ENDIF ENDIF ENDIF //Farm Cop Cars Backup IF TIMERA() > 18000 IF NOT HAS_LABEL_BEEN_TRIGGERED(CopCarsBackupPlayback) IF NOT DOES_ENTITY_EXIST(vehCop[19]) SPAWN_VEHICLE(vehCop[19], POLICEOLD2, GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(032, 0.0, sCarrec), GET_HEADING_FROM_VECTOR(GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(032, 0.0, sCarrec))) SET_VEHICLE_SIREN(vehCop[19], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[19], TRUE) createCop(9) createCop(10) SET_PED_ACCURACY(pedCop[9], 5) SET_PED_ACCURACY(pedCop[10], 5) SET_PED_INTO_VEHICLE(pedCop[9], vehCop[19]) SET_PED_INTO_VEHICLE(pedCop[10], vehCop[19], VS_FRONT_RIGHT) START_PLAYBACK_RECORDED_VEHICLE(vehCop[19], 032, sCarrec) SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehCop[19], FALSE) GIVE_WEAPON_TO_PED(pedCop[10], wtShotgun, INFINITE_AMMO, TRUE) ENDIF REPEAT COUNT_OF(pedCop) i IF NOT IS_PED_INJURED(pedCop[i]) REMOVE_PED_DEFENSIVE_AREA(pedCop[i]) SET_PED_COMBAT_ATTRIBUTES(pedCop[i], CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE) SET_PED_COMBAT_MOVEMENT(pedCop[i], CM_WILLADVANCE) SET_PED_COMBAT_ATTRIBUTES(pedCop[i], CA_CAN_CHARGE, TRUE) ENDIF ENDREPEAT SET_LABEL_AS_TRIGGERED(CopCarsBackupPlayback, TRUE) ENDIF ENDIF IF REQUEST_SCRIPT_AUDIO_BANK("SIREN_DISTANT") IF TIMERA() > 23000 IF NOT HAS_LABEL_BEEN_TRIGGERED(Cops_Arrive_2) sIDDistantSirensFarm = GET_SOUND_ID() PLAY_SOUND_FROM_COORD(sIDDistantSirensFarm, "Cops_Arrive_2", <<3532.4004, -4676.8501, 113.2428>>, "Prologue_Sounds") SET_LABEL_AS_TRIGGERED(Cops_Arrive_2, TRUE) ENDIF ENDIF ENDIF IF (TIMERA() > 33000 AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()) OR NOT IS_ENTITY_AT_COORD(playerPedTrevor, <<3550.010742, -4691.855469, 114.759544>>, <<2.5, 3.0, 2.0>>) IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE() SAFE_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) SAFE_REMOVE_BLIP(blipDestination) CLEAR_TEXT() //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GRAB_WOMAN") STOP_AUDIO_SCENE("PROLOGUE_GRAB_WOMAN") ENDIF //Score PLAY_AUDIO(PROLOGUE_TEST_FINAL_CUTSCENE_MA) //Wanted SET_FAKE_WANTED_LEVEL(0) //Radar bRadar = FALSE SPAWN_VEHICLE(vehCop[0], POLICEOLD1, <<3493.1201, -4681.6040, 113.4866>>, 260.0987) SET_VEHICLE_SIREN(vehCop[0], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[0], TRUE) SPAWN_VEHICLE(vehCop[1], POLICEOLD2, <<3492.8240, -4678.9399, 113.5952>>, 260.1201) SET_VEHICLE_SIREN(vehCop[1], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[1], TRUE) SPAWN_VEHICLE(vehCop[2], POLICEOLD2, <<3491.9338, -4676.0190, 113.8171>>, 260.2887) SET_VEHICLE_SIREN(vehCop[2], TRUE) SET_SIREN_WITH_NO_DRIVER(vehCop[2], TRUE) REGISTER_ENTITY_FOR_CUTSCENE(vehCop[0], "1st_car", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehCop[1], "2nd_car", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(vehCop[2], "3rd_car", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY) objWeapon[WEAPON_TREVOR] = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(playerPedID, wtCarbineRifle) REGISTER_ENTITY_FOR_CUTSCENE(objWeapon[WEAPON_TREVOR], "Trevors_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) START_CUTSCENE() WAIT_WITH_DEATH_CHECKS(0) IF NOT IS_REPEAT_PLAY_ACTIVE() SET_CUTSCENE_CAN_BE_SKIPPED(FALSE) ENDIF //Cleanup for cutscene SAFE_DELETE_PED(playerPedMichael) SAFE_DELETE_VEHICLE(vehCar) REPEAT COUNT_OF(pedCop) i SAFE_DELETE_PED(pedCop[i]) ENDREPEAT SAFE_DELETE_VEHICLE(vehCop[19]) REPEAT COUNT_OF(vehTrain) i SAFE_DELETE_VEHICLE(vehTrain[i]) ENDREPEAT SAFE_DELETE_OBJECT(objWeapon[WEAPON_MICHAEL]) SAFE_DELETE_OBJECT(objWeapon[WEAPON_BRAD]) SAFE_DELETE_OBJECT(objBag[MICHAEL_BAG_STATIC]) UNPIN_INTERIOR(intDepot) SET_MODEL_AS_NO_LONGER_NEEDED(RANCHERXL2) SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_SNOWCOP_01) SET_MODEL_AS_NO_LONGER_NEEDED(POLICEOLD1) SET_MODEL_AS_NO_LONGER_NEEDED(POLICEOLD2) SET_MODEL_AS_NO_LONGER_NEEDED(FREIGHT) SET_MODEL_AS_NO_LONGER_NEEDED(FREIGHTCONT1) SET_MODEL_AS_NO_LONGER_NEEDED(FREIGHTCONT2) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_HEIST_BAG_02) SET_MODEL_AS_NO_LONGER_NEEDED(P_LD_HEIST_BAG_S_1) SET_MODEL_AS_NO_LONGER_NEEDED(P_CSH_STRAP_01_S) REMOVE_VEHICLE_RECORDING(003, sCarrec) REMOVE_VEHICLE_RECORDING(004, sCarrec) REMOVE_VEHICLE_RECORDING(005, sCarrec) REMOVE_VEHICLE_RECORDING(006, sCarrec) REMOVE_VEHICLE_RECORDING(008, sCarrec) REMOVE_VEHICLE_RECORDING(009, sCarrec) REMOVE_VEHICLE_RECORDING(011, sCarrec) REMOVE_VEHICLE_RECORDING(026, sCarrec) REMOVE_VEHICLE_RECORDING(027, sCarrec) REMOVE_VEHICLE_RECORDING(028, sCarrec) REMOVE_VEHICLE_RECORDING(029, sCarrec) REMOVE_VEHICLE_RECORDING(032, sCarrec) REMOVE_VEHICLE_RECORDING(033, sCarrec) REMOVE_VEHICLE_RECORDING(034, sCarrec) REMOVE_VEHICLE_RECORDING(035, sCarrec) REMOVE_VEHICLE_RECORDING(700, sCarrec) REMOVE_VEHICLE_RECORDING(701, sCarrec) REMOVE_VEHICLE_RECORDING(702, sCarrec) REMOVE_ANIM_DICT(sAnimDictDeepSnow) REMOVE_ANIM_DICT(sAnimDictMapObjects) REMOVE_ANIM_DICT(sAnimDictPrologue6) CLEANUP_ALL_AI_PED_BLIPS(blipStructCop) //Timecycle CLEAR_TIMECYCLE_MODIFIER() #IF IS_DEBUG_BUILD PRINTLN("CLEAR_TIMECYCLE_MODIFIER - then SET_TRANSITION_TIMECYCLE_MODIFIER") #ENDIF IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 #IF IS_DEBUG_BUILD PRINTLN("IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 - then SET_TRANSITION_TIMECYCLE_MODIFIER") #ENDIF SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) #IF IS_DEBUG_BUILD PRINTLN("SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) - then SET_TRANSITION_TIMECYCLE_MODIFIER") #ENDIF ENDIF SET_TRANSITION_TIMECYCLE_MODIFIER("prologue_ending_fog", 4.0) REPLAY_START_EVENT() iCreditsStage = 0 ADVANCE_CUTSCENE() ENDIF ENDIF BREAK CASE 3 //Rain Particles // IF NOT HAS_LABEL_BEEN_TRIGGERED(RainParticleOverride) // IF GET_CUTSCENE_TIME() > ROUND((45.43233) * 1000.0) // AND GET_CUTSCENE_TIME() < ROUND((45.43233 + 1.0) * 1000.0) // //AND HAS_CUTSCENE_CUT_THIS_FRAME() // SET_WEATHER_PTFX_USE_OVERRIDE_SETTINGS(TRUE) PRINTLN("SET_WEATHER_PTFX_USE_OVERRIDE_SETTINGS(TRUE)") // SET_WEATHER_PTFX_OVERRIDE_CURR_LEVEL(0.001) // SET_WEATHER_PTFX_OVERRIDE_BOX_SIZE(<<5.0, 5.0, 5.0>>) // SET_WEATHER_PTFX_OVERRIDE_BOX_OFFSET(VECTOR_ZERO) // SET_LABEL_AS_TRIGGERED(RainParticleOverride, TRUE) // ENDIF // ELIF HAS_LABEL_BEEN_TRIGGERED(RainParticleOverride) //// SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) //// //// DRAW_RECT(0.9, 0.1, 0.1, 0.1, 255, 0, 0, 255) // // IF GET_CUTSCENE_TIME() > ROUND((51.26567) * 1000.0) // //AND HAS_CUTSCENE_CUT_THIS_FRAME() // SET_WEATHER_PTFX_USE_OVERRIDE_SETTINGS(FALSE) PRINTLN("SET_WEATHER_PTFX_USE_OVERRIDE_SETTINGS(FALSE)") // SET_LABEL_AS_TRIGGERED(RainParticleOverride, FALSE) // ENDIF // ENDIF //Scaleform IF NOT bRequestedCreditsScaleform sfCredits = REQUEST_SCALEFORM_MOVIE("OPENING_CREDITS") bRequestedCreditsScaleform = TRUE ENDIF //Credits IF HAS_SCALEFORM_MOVIE_LOADED(sfCredits) SWITCH iCreditsStage CASE 0 // - ROCKSTAR GAMES presents IF GET_CUTSCENE_TIME() > ROUND(59.250000 * 1000.0) //ADD_TEXT_TO_SINGLE_LINE("presents", "Rockstar GAMES", "$font2", "HUD_COLOUR_WHITE") SCALEFORM_SETUP_SINGLE_LINE("presents", 0.5, 0.5, 70, 125, "left") SCALEFORM_DISPLAY_SINGLE_LINE("presents", "ROCKSTAR GAMES", "$font2", "HUD_COLOUR_WHITE") SCALEFORM_DISPLAY_SINGLE_LINE("presents", "presents", "$font5", "HUD_COLOUR_FREEMODE") SCALEFORM_SHOW_SINGLE_LINE("presents", 0.166) iCreditsStage++ ENDIF BREAK CASE 1 IF GET_CUTSCENE_TIME() > ROUND(62.500000 * 1000.0) SCALEFORM_HIDE_SINGLE_LINE("presents", 0.166) iCreditsStage++ ENDIF BREAK CASE 2 // - a ROCKSTAR NORTH production SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_FADE) IF GET_CUTSCENE_TIME() > ROUND(70.000000 * 1000.0) //ADD_TEXT_TO_SINGLE_LINE("production", "Rockstar GAMES", "$font2", "HUD_COLOUR_WHITE") SCALEFORM_SETUP_SINGLE_LINE("production", 0.5, 0.5, 0, 190, "right") //530 "left" SCALEFORM_DISPLAY_SINGLE_LINE("production", "a", "$font5", "HUD_COLOUR_MICHAEL") SCALEFORM_DISPLAY_SINGLE_LINE("production", "ROCKSTAR NORTH", "$font2", "HUD_COLOUR_WHITE") SCALEFORM_DISPLAY_SINGLE_LINE("production", "production", "$font5", "HUD_COLOUR_MICHAEL") SCALEFORM_SHOW_SINGLE_LINE("production", 0.166) iCreditsStage++ ENDIF BREAK CASE 3 IF GET_CUTSCENE_TIME() > ROUND(73.566673 * 1000.0) SCALEFORM_HIDE_SINGLE_LINE("production", 0.166) iCreditsStage++ ENDIF BREAK ENDSWITCH IF IS_SCREEN_FADING_OUT() OR IS_SCREEN_FADED_OUT() OR IS_SCREEN_FADING_IN() SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_FADE_PRIORITY_HIGH) ENDIF HIDE_LOADING_ON_FADE_THIS_FRAME() SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE) SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_CENTRE) DRAW_SCALEFORM_MOVIE_FULLSCREEN(sfCredits, 255, 255, 255, 255) bCreditsScaleformActive = TRUE ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(EndCutsceneCleanup) IF GET_CUTSCENE_TIME() > ROUND(5.000000 * 1000.0) SAFE_DELETE_VEHICLE(vehCop[16]) SAFE_DELETE_VEHICLE(vehCop[17]) SAFE_DELETE_VEHICLE(vehCop[18]) SAFE_DELETE_PED(pedBrad) SAFE_DELETE_OBJECT(objBag[TREVOR_BAG_STATIC]) SAFE_DELETE_OBJECT(objBag[BRAD_BAG_STATIC]) SET_LABEL_AS_TRIGGERED(EndCutsceneCleanup, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TriggerBlizzard) IF GET_CUTSCENE_TIME() > ROUND(9.600000 * 1000.0) //Frame of start is 23.304815 AND HAS_CUTSCENE_CUT_THIS_FRAME() REMOVE_IPL("prologue01z") SET_WEATHER_TYPE_NOW_PERSIST("BLIZZARD") SET_LABEL_AS_TRIGGERED(TriggerBlizzard, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TrevorRunsOffA) IF GET_CUTSCENE_TIME() > ROUND(23.600000 * 1000.0) //Frame of start is 23.304815 //Score PLAY_AUDIO(PROLOGUE_TEST_FINAL_CUTSCENE) SET_LABEL_AS_TRIGGERED(TrevorRunsOffA, TRUE) ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(TrevorRunsOffB) IF GET_CUTSCENE_TIME() > ROUND(38.053001 * 1000.0) AND HAS_CUTSCENE_CUT_THIS_FRAME() SET_LABEL_AS_TRIGGERED(TrevorRunsOffB, TRUE) //Timecycle CLEAR_TIMECYCLE_MODIFIER() #IF IS_DEBUG_BUILD PRINTLN("CLEAR_TIMECYCLE_MODIFIER - Cutscene Faded Out / Cut To Funeral") #ENDIF IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 #IF IS_DEBUG_BUILD PRINTLN("IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 - Cutscene Faded Out / Cut To Funeral") #ENDIF SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) #IF IS_DEBUG_BUILD PRINTLN("SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) - Cutscene Faded Out / Cut To Funeral") #ENDIF ENDIF SET_WEATHER_TYPE_NOW_PERSIST("NEUTRAL") //SET_WEATHER_TYPE_NOW_PERSIST("SNOW") LOAD_CLOUD_HAT("RAIN") REPEAT COUNT_OF(vehCop) i SAFE_DELETE_VEHICLE(vehCop[i]) ENDREPEAT ENDIF ENDIF IF GET_CUTSCENE_TIME() > ROUND(38.053001 * 1000.0) IF NOT IS_ENTITY_AT_COORD(playerPedID, <<3254.4, -4574.3, 116.3>>, <<2.0, 2.0, 2.0>>) SET_PED_POSITION(playerPedID, <<3254.4, -4574.3, 116.3>>, 0.0, FALSE) FREEZE_ENTITY_POSITION(playerPedID, TRUE) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA() IF NOT IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_OUT(0) ENDIF ENDIF IF WAS_CUTSCENE_SKIPPED() IF bRequestedCreditsScaleform SCALEFORM_REMOVE_ALL_SINGLE_LINES() SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfCredits) bRequestedCreditsScaleform = FALSE bCreditsScaleformActive = FALSE ENDIF ENDIF IF HAS_CUTSCENE_FINISHED() //Timecycle CLEAR_TIMECYCLE_MODIFIER() #IF IS_DEBUG_BUILD PRINTLN("CLEAR_TIMECYCLE_MODIFIER - Cutscene Ended") #ENDIF IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 #IF IS_DEBUG_BUILD PRINTLN("IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 - Cutscene Ended") #ENDIF SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) #IF IS_DEBUG_BUILD PRINTLN("SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) - Cutscene Ended") #ENDIF ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) FREEZE_ENTITY_POSITION(playerPedID, FALSE) SAFE_DELETE_OBJECT(objWeapon[WEAPON_TREVOR]) SAFE_DELETE_PED(pedBrad) SAFE_DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) //Cop Cars REPEAT COUNT_OF(vehCop) i SAFE_DELETE_VEHICLE(vehCop[i]) ENDREPEAT SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10) IF NOT IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_OUT(0) ENDIF ADVANCE_STAGE() ENDIF BREAK ENDSWITCH #IF IS_DEBUG_BUILD IF HAS_SCALEFORM_MOVIE_LOADED(sfCredits) IF bDebugDisplayCreditsText STRING strAlign = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetCreditsAlign) STRING strText1 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetText1) STRING strText2 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetText2) STRING strText3 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetText3) STRING strFont1 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetFont1) STRING strFont2 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetFont2) STRING strFont3 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetFont3) STRING strColour1 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetCreditsColour1) STRING strColour2 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetCreditsColour2) STRING strColour3 = GET_CONTENTS_OF_TEXT_WIDGET(textWidgetCreditsColour3) SCALEFORM_SETUP_SINGLE_LINE("debug", 0.5, 0.5, fDebugCreditsBlockX, fDebugCreditsBlockY, strAlign) IF NOT IS_STRING_NULL_OR_EMPTY(strText1) AND NOT ARE_STRINGS_EQUAL(strText1, "New text widget") SCALEFORM_DISPLAY_SINGLE_LINE("debug", strText1, strFont1, strColour1) ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(strText2) AND NOT ARE_STRINGS_EQUAL(strText2, "New text widget") SCALEFORM_DISPLAY_SINGLE_LINE("debug", strText2, strFont2, strColour2) ENDIF IF NOT IS_STRING_NULL_OR_EMPTY(strText3) AND NOT ARE_STRINGS_EQUAL(strText3, "New text widget") SCALEFORM_DISPLAY_SINGLE_LINE("debug", strText3, strFont3, strColour3) ENDIF SCALEFORM_SHOW_SINGLE_LINE("debug", 0.1666) bDebugDisplayCreditsText = FALSE ENDIF IF bDebugClearCreditsText SCALEFORM_HIDE_SINGLE_LINE("debug", 0.1666) bDebugClearCreditsText = FALSE ENDIF ENDIF #ENDIF //Exit Cops from Cars IF NOT IS_ENTITY_DEAD(vehCop[16]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm0) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[16]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[16]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(027, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[16]) AND NOT IS_ENTITY_AT_COORD(vehCop[16], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(027, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[0]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[0], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[0], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[0], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm0, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm1) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[16]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[16]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(027, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[16]) AND NOT IS_ENTITY_AT_COORD(vehCop[16], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(027, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[1]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[1], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[1], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[1], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm1, TRUE) ENDIF ENDIF ENDIF ENDIF IF NOT IS_ENTITY_DEAD(vehCop[17]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm2) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[17]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[17]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(028, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[17]) AND NOT IS_ENTITY_AT_COORD(vehCop[17], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(028, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[2]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[2], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[2], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[2], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm2, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm3) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[17]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[17]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(028, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[17]) AND NOT IS_ENTITY_AT_COORD(vehCop[17], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(028, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[3]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[3], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[3], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[3], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm3, TRUE) ENDIF ENDIF ENDIF ENDIF IF NOT IS_ENTITY_DEAD(vehCop[18]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm4) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[18]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[18]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(029, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[18]) AND NOT IS_ENTITY_AT_COORD(vehCop[18], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(029, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[4]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[4], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[4], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[4], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm4, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm5) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[18]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[18]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(029, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[18]) AND NOT IS_ENTITY_AT_COORD(vehCop[18], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(029, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[5]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[5], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[5], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[5], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm5, TRUE) ENDIF ENDIF ENDIF ENDIF IF NOT IS_ENTITY_DEAD(vehCop[19]) IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm6) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[19]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[19]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(032, sCarrec) / 100) * 90) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[19]) AND NOT IS_ENTITY_AT_COORD(vehCop[19], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(032, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[9]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[9], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[9], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[9], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm6, TRUE) ENDIF ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(CopFarm7) IF (IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[19]) AND GET_TIME_POSITION_IN_RECORDING(vehCop[19]) > (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(032, sCarrec) / 100) * 95) OR (NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehCop[19]) AND NOT IS_ENTITY_AT_COORD(vehCop[19], GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(032, 0.0, sCarrec), <<5.0, 5.0, 5.0>>)) IF NOT IS_PED_INJURED(pedCop[10]) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[10], 1000.0) SET_PED_COMBAT_ATTRIBUTES(pedCop[10], CA_USE_VEHICLE, FALSE) SET_PED_COMBAT_ATTRIBUTES(pedCop[10], CA_LEAVE_VEHICLES, TRUE) SET_LABEL_AS_TRIGGERED(CopFarm7, TRUE) ENDIF ENDIF ENDIF ENDIF //Cops IF iCutsceneStage > 1 AND iCutsceneStage < 3 IF iCopPerFrame < 7 iCopPerFrame++ ELSE iCopPerFrame = 0 ENDIF i = iCopPerFrame //REPEAT 8 i //8 respawn cops IF DOES_ENTITY_EXIST(pedCop[i]) AND IS_PED_INJURED(pedCop[i]) OR NOT DOES_ENTITY_EXIST(pedCop[i]) IF iRespawnTimers[i] = 0 iRespawnTimers[i] = GET_GAME_TIMER() + 2000 #IF IS_DEBUG_BUILD PRINTLN("iRespawnTimers[", i, "] = ", GET_GAME_TIMER() + 2000) #ENDIF SET_PED_AS_NO_LONGER_NEEDED(pedCop[i]) ELIF GET_GAME_TIMER() > iRespawnTimers[i] createCop(i) IF i = 0 SET_PED_POSITION(pedCop[i], <<3504.7551, -4676.2471, 113.1829>>, 271.0395) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3532.4004, -4676.8501, 113.2428>>, 10.0) ELIF i = 1 SET_PED_POSITION(pedCop[i], <<3481.3945, -4661.1577, 115.0043>>, 253.3929) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3533.6455, -4674.1851, 113.2056>>, 10.0) ELIF i = 2 SET_PED_POSITION(pedCop[i], <<3500.8, -4651.9, 115.4>>, 229.4754) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3530.3618, -4667.2012, 113.2080>>, 10.0) ELIF i = 3 SET_PED_POSITION(pedCop[i], <<3547.1851, -4643.0996, 113.0261>>, 172.3108) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3544.0862, -4660.0444, 113.3841>>, 10.0) ELIF i = 4 SET_PED_POSITION(pedCop[i], <<3548.8083, -4634.8311, 113.6210>>, 180.2456) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3546.5930, -4660.5620, 113.1514>>, 10.0) ELIF i = 5 SET_PED_POSITION(pedCop[i], <<3512.2898, -4674.8481, 113.1897>>, 251.4869) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3536.6877, -4683.6567, 113.4076>>, 2.0) ELIF i = 6 SET_PED_POSITION(pedCop[i], <<3507.3110, -4670.9932, 113.2030>>, 250.4445) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3537.1406, -4688.0933, 113.5309>>, 2.0) ELIF i = 7 SET_PED_POSITION(pedCop[i], <<3559.7903, -4634.5532, 113.5299>>, 168.8337) SET_PED_SPHERE_DEFENSIVE_AREA(pedCop[i], <<3551.6704, -4660.0039, 113.1956>>, 10.0) ENDIF SET_PED_COMBAT_ATTRIBUTES(pedCop[i], CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED, TRUE) TASK_COMBAT_HATED_TARGETS_AROUND_PED(pedCop[i], 500.0) IF i = 0 OR i = 3 GIVE_WEAPON_TO_PED(pedCop[i], wtSMG, INFINITE_AMMO, TRUE) ENDIF IF i = 1 GIVE_WEAPON_TO_PED(pedCop[i], wtShotgun, INFINITE_AMMO, TRUE) ENDIF SET_PED_ACCURACY(pedCop[i], CLAMP_INT(1 + iDeadCopPlus, 0, 100)) iDeadCopPlus++ iRespawnTimers[i] = 0 ENDIF ENDIF // ENDREPEAT ENDIF //God Text & Dialogue IF (NOT IS_MESSAGE_BEING_DISPLAYED() OR GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES) = 0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND NOT IS_CUTSCENE_PLAYING() AND iCutsceneStage < 3 IF GET_GAME_TIMER() > iDialogueTimer IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_COPFARM) PRINT_ADV(PRO_COPFARM, "PRO_COPFARM") PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_1, "PRO_Rage", "PRO_Rage_1", CONV_PRIORITY_MEDIUM, TRUE, DO_NOT_DISPLAY_SUBTITLES) ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Rage_2) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_2, "PRO_Rage", "PRO_Rage_2") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Rage_3) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_3, "PRO_Rage", "PRO_Rage_3") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Rage_4) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_4, "PRO_Rage", "PRO_Rage_4") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Rage_5) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_5, "PRO_Rage", "PRO_Rage_5") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Rage_6) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_6, "PRO_Rage", "PRO_Rage_6") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Rage_7) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_7, "PRO_Rage", "PRO_Rage_7") ELIF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_Rage_8) PLAY_SINGLE_LINE_FROM_CONVERSATION_ADV(PRO_Rage_8, "PRO_Rage", "PRO_Rage_8") ENDIF iDialogueTimer = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(6000, 8000) ENDIF ENDIF //Disable Player Weapon Change SET_PED_RESET_FLAG(playerPedID, PRF_DisablePlayerAutoVaulting, TRUE) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP) ENDIF IF CLEANUP_STAGE() //Cleanup (Blips, peds, variables etc.) //Audio Scene IF IS_AUDIO_SCENE_ACTIVE("PROLOGUE_GRAB_WOMAN") STOP_AUDIO_SCENE("PROLOGUE_GRAB_WOMAN") ENDIF REPLAY_STOP_EVENT() REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() WAIT_WITH_DEATH_CHECKS(0) ENDWHILE IF bRequestedCreditsScaleform SCALEFORM_REMOVE_ALL_SINGLE_LINES() SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfCredits) bRequestedCreditsScaleform = FALSE bCreditsScaleformActive = FALSE ENDIF //Timecycle CLEAR_TIMECYCLE_MODIFIER() #IF IS_DEBUG_BUILD PRINTLN("CLEAR_TIMECYCLE_MODIFIER - Finale Stage End") #ENDIF IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 #IF IS_DEBUG_BUILD PRINTLN("IF GET_TIMECYCLE_MODIFIER_INDEX() != -1 - Finale Stage End") #ENDIF SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) #IF IS_DEBUG_BUILD PRINTLN("SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER(0.0) - Finale Stage End") #ENDIF ENDIF INT i REPEAT COUNT_OF(objWeapon) i SAFE_DELETE_OBJECT(objWeapon[i]) ENDREPEAT //Cover REPEAT COUNT_OF(covPoint) i REMOVE_COVER_POINT(covPoint[i]) ENDREPEAT SET_ENTITY_INVINCIBLE(playerPedID, FALSE) //DO_PLAYER_MAP_WARP_WITH_LOAD(<<-1884.0472, -576.6046, 10.8126>>, NO_HEADING, FALSE) IF g_savedGlobals.sFlow.isGameflowActive //Check the mission is passing flow OR IS_REPEAT_PLAY_ACTIVE() //and not on a repeat play FREEZE_ENTITY_POSITION(playerPedID, TRUE) #IF IS_DEBUG_BUILD PRINTLN("FREEZE_ENTITY_POSITION(playerPedID, TRUE) - Prologue is ending in flow so freezing player...") #ENDIF ENDIF 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(eMissionObjectiveAutoJSkip) // IF IS_SCREEN_FADED_OUT() // DO_SCREEN_FADE_IN(500) // ENDIF eMissionObjectiveAutoJSkip = initMission bAutoSkipping = FALSE bSkipped = TRUE ENDIF ENDIF IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S) CLEAR_TEXT() PLAY_AUDIO(PROLOGUE_TEST_MISSION_CLEANUP) //Cutscene WHILE NOT HAS_CUTSCENE_FINISHED() STOP_CUTSCENE(TRUE) #IF IS_DEBUG_BUILD PRINTLN("STOPPING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() #IF IS_DEBUG_BUILD PRINTLN("REMOVING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE RENDER_SCRIPT_CAMS(FALSE, FALSE) missionPassed() ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F) CLEAR_TEXT() //Cutscene WHILE NOT HAS_CUTSCENE_FINISHED() STOP_CUTSCENE(TRUE) #IF IS_DEBUG_BUILD PRINTLN("STOPPING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() #IF IS_DEBUG_BUILD PRINTLN("REMOVING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE RENDER_SCRIPT_CAMS(FALSE, FALSE) missionFailed() ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) OR ENUM_TO_INT(eMissionObjective) < ENUM_TO_INT(eMissionObjectiveAutoJSkip) 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) #IF IS_DEBUG_BUILD PRINTLN("STOPPING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() #IF IS_DEBUG_BUILD PRINTLN("REMOVING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE ADVANCE_STAGE() #IF IS_DEBUG_BUILD PRINTLN("Stage: ", ENUM_TO_INT(eMissionObjective)) #ENDIF RENDER_SCRIPT_CAMS(FALSE, FALSE) 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) eMissionObjectiveAutoJSkip = INT_TO_ENUM(MissionObjective, ENUM_TO_INT(eMissionObjective) - 1) ELSE eMissionObjectiveAutoJSkip = 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) #IF IS_DEBUG_BUILD PRINTLN("STOPPING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE REMOVE_CUTSCENE() WHILE HAS_CUTSCENE_LOADED() #IF IS_DEBUG_BUILD PRINTLN("REMOVING CUTSCENE...") #ENDIF WAIT_WITH_DEATH_CHECKS(0) ENDWHILE MISSION_CLEANUP(TRUE) CLEAR_AREA(GET_ENTITY_COORDS(playerPedID), 10000.0, TRUE) RENDER_SCRIPT_CAMS(FALSE, FALSE) ENDIF ENDIF ENDPROC #ENDIF //------------------------------¦ MISSION SCRIPT ¦------------------------------- SCRIPT IF HAS_FORCE_CLEANUP_OCCURRED() UPDATE_PED_REFERENCES() SET_FADE_IN_AFTER_DEATH_ARREST(FALSE) INT i REPEAT COUNT_OF(pedCop) i IF NOT IS_PED_INJURED(pedCop[i]) IF NOT IS_PED_IN_COMBAT(pedCop[i]) IF NOT IS_PED_INJURED(notPlayerPedID) TASK_COMBAT_PED(pedCop[i], notPlayerPedID) ELIF DOES_ENTITY_EXIST(pedBrad) AND NOT IS_PED_INJURED(pedBrad) TASK_COMBAT_PED(pedCop[i], pedBrad) ELSE TASK_AIM_GUN_AT_COORD(pedCop[i], GET_ENTITY_COORDS(playerPedID, FALSE), -1) ENDIF ENDIF SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedCop[i], TRUE) SET_PED_KEEP_TASK(pedCop[i], TRUE) ENDIF ENDREPEAT IF NOT IS_PED_INJURED(notPlayerPedID) SET_PED_KEEP_TASK(notPlayerPedID, TRUE) ENDIF IF NOT IS_PED_INJURED(pedBrad) SET_PED_KEEP_TASK(pedBrad, TRUE) ENDIF IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL IF eMissionObjective < stageGetAway MISSION_FLOW_SET_FAIL_REASON("PRO_MDIED") ENDIF ELIF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_TREVOR IF eMissionObjective < stageGetAway MISSION_FLOW_SET_FAIL_REASON("PRO_TDIED") ENDIF ENDIF //Score PLAY_AUDIO(PROLOGUE_TEST_FAIL) SET_CLEANUP_TO_RUN_ON_RESPAWN(RCI_PROLOGUE) Mission_Flow_Mission_Force_Cleanup() MISSION_CLEANUP(FALSE, TRUE) ENDIF SET_MISSION_FLAG(TRUE) NETWORK_SET_CAN_RECEIVE_PRESENCE_INVITES(FALSE) //-------------------------------¦ MISSION LOOP ¦-------------------------------- #IF IS_DEBUG_BUILD MissionNames() #ENDIF WHILE (TRUE) //Video Recorder REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_Prologue") //Update Player Ped References UPDATE_PED_REFERENCES() //Fail Checks DEATH_CHECKS() //Blips UPDATE_BLIP_FLASH_TIMERS() //Text //UPDATE_FLOATING_HELP_ABOVE_PLAYER() //Random Peds SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) //Traffic SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0) IF eMissionObjective > initMission //Flashing Light IF eMissionObjective <= stageLearnPhone IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_V_ILEV_CD_LAMPAL) CREATE_MODEL_HIDE(<<5310.8721, -5196.3398, 84.6373>>, 1.0, V_ILEV_CD_LAMPAL, TRUE) SET_LABEL_AS_TRIGGERED(TRIGGER_V_ILEV_CD_LAMPAL, TRUE) ENDIF ELSE IF HAS_LABEL_BEEN_TRIGGERED(TRIGGER_V_ILEV_CD_LAMPAL) REMOVE_MODEL_HIDE(<<5310.8721, -5196.3398, 84.6373>>, 1.0, V_ILEV_CD_LAMPAL, FALSE) SET_LABEL_AS_TRIGGERED(TRIGGER_V_ILEV_CD_LAMPAL, FALSE) ENDIF ENDIF //Sprinklers IF eMissionObjective <= stageLearnPhone REMOVE_MODEL_SWAP(<<5293.14, -5162.17, 85.92>>, 1.0, V_ILEV_CD_SPRKLR, V_ILEV_CD_SPRKLR_ON) REMOVE_MODEL_SWAP(<<5295.89, -5192.17, 85.92>>, 1.0, V_ILEV_CD_SPRKLR, V_ILEV_CD_SPRKLR_ON) ELSE CREATE_MODEL_SWAP(<<5293.14, -5162.17, 85.92>>, 1.0, V_ILEV_CD_SPRKLR, V_ILEV_CD_SPRKLR_ON, TRUE) CREATE_MODEL_SWAP(<<5295.89, -5192.17, 85.92>>, 1.0, V_ILEV_CD_SPRKLR, V_ILEV_CD_SPRKLR_ON, TRUE) ENDIF ENDIF //Doors IF eMissionObjective > initMission AND eMissionObjective < cutGetAway IF IS_ENTITY_AT_COORD(playerPedID, <<5307.029785, -5180.698730, 84.018654>>, <<15.0, 5.0, 1.5>>) SMOOTH_CLOSE_DOOR(CCTV_ROOM_DOOR, v_ilev_cd_door3, <<5305.46, -5177.75, 83.67>>, TRUE, 1.0, 1.0, 0.0) ENDIF ENDIF IF eMissionObjective > initMission AND eMissionObjective > stageLearnBlips IF IS_ENTITY_AT_COORD(playerPedID, <<5310.546387, -5206.499023, 84.518631>>, <<7.0, 12.0, 2.0>>) SMOOTH_CLOSE_DOOR(CUPBOARD_DOOR, V_ILev_CD_Door2, <<5316.65, -5205.74, 83.67>>, TRUE, 1.0, 1.0, 0.0) ENDIF ENDIF IF eMissionObjective > initMission AND eMissionObjective <= stageLearnBlips IF NOT HAS_LABEL_BEEN_TRIGGERED(TRIGGER_V_ILEV_CD_Door2) UNLOCK_DOOR(CUPBOARD_DOOR, V_ILev_CD_Door2) ENDIF ENDIF IF eMissionObjective >= stageLearnAiming AND eMissionObjective <= stageLearnPhone IF HAS_LABEL_BEEN_TRIGGERED(DoorIsClosing) SMOOTH_CLOSE_DOOR(LEFT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5307.52, -5204.54, 83.67>>, TRUE) SMOOTH_CLOSE_DOOR(RIGHT_RECEPTION_DOOR, V_ILEV_CD_DOOR, <<5310.12, -5204.54, 83.67>>, TRUE) ENDIF ENDIF IF IS_ENTITY_AT_COORD(playerPedID, <<5307.029785, -5180.698730, 84.018654>>, <<15.0, 5.0, 1.5>>) OR IS_ENTITY_AT_COORD(playerPedID, <<5328.0083, -5188.691406, 83.784843>>, <<15.0, 10.0, 2.5>>) IF bGarageVisible = TRUE IF NOT DOES_ENTITY_EXIST(objGarage) IF bGrabShutter = FALSE IF HAS_MODEL_LOADED_CHECK(MODEL_PROP_GAR_DOOR_A_01, PROP_GAR_DOOR_A_01) CREATE_MODEL_HIDE(<<5320.60, -5188.56, 82.52>>, 1.0, PROP_GAR_DOOR_A_01, FALSE) objGarage = CREATE_OBJECT_NO_OFFSET(PROP_GAR_DOOR_A_01, vGaragePosition) SET_ENTITY_COLLISION(objGarage, FALSE) SET_ENTITY_ROTATION(objGarage, vGarageRotate) SET_MODEL_AS_NO_LONGER_NEEDED(PROP_GAR_DOOR_A_01) IF objGarage != NULL bGrabShutter = TRUE ENDIF ENDIF ENDIF ELIF NOT DOES_ENTITY_EXIST(objHiddenCollision) IF bGrabShutter = TRUE IF HAS_MODEL_LOADED_CHECK(MODEL_P_GDOOR1COLOBJECT_S, P_GDOOR1COLOBJECT_S) objHiddenCollision = CREATE_OBJECT(P_GDOOR1COLOBJECT_S, <<5320.589844, -5188.490234, 82.52>>) FREEZE_ENTITY_POSITION(objHiddenCollision, TRUE) SET_ENTITY_COORDS(objHiddenCollision, <<5320.589844, -5188.490234,82.52>>) SET_ENTITY_ROTATION(objHiddenCollision, <<0.0, 0.0, 90.0>>) SET_ENTITY_VISIBLE(objHiddenCollision, FALSE) SET_MODEL_AS_NO_LONGER_NEEDED(P_GDOOR1COLOBJECT_S) ENDIF ENDIF ELIF eMissionObjective >= stageShootOut IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictMapObjects) SET_ENTITY_COORDS(objHiddenCollision, <<5320.589844, -5188.490234, 82.52 + 2.60>>) IF DOES_ENTITY_HAVE_DRAWABLE(objGarage) IF NOT IS_ENTITY_PLAYING_ANIM(objGarage, sAnimDictMapObjects, "GDoor_Open") PLAY_ENTITY_ANIM(objGarage, "GDoor_Open", sAnimDictMapObjects, INSTANT_BLEND_IN, FALSE, TRUE) ELSE SET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open", 1.0) SET_ENTITY_ANIM_SPEED(objGarage, sAnimDictMapObjects, "GDoor_Open", 0.0) bGarageVisible = FALSE ENDIF ENDIF ENDIF ELSE SET_ENTITY_COORDS(objHiddenCollision, <<5320.589844, -5188.490234, 82.52>>) IF DOES_ENTITY_HAVE_DRAWABLE(objGarage) IF IS_ENTITY_PLAYING_ANIM(objGarage, sAnimDictMapObjects, "GDoor_Open") SET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open", 0.0) SET_ENTITY_ANIM_SPEED(objGarage, sAnimDictMapObjects, "GDoor_Open", 0.0) ENDIF ENDIF bGarageVisible = FALSE ENDIF ENDIF IF NOT HAS_LABEL_BEEN_TRIGGERED(ShutterOpen) IF eMissionObjective >= stageDuckUnderShutter OR eMissionObjective <= stageShootOut IF DOES_ENTITY_EXIST(objGarage) IF DOES_ENTITY_HAVE_DRAWABLE(objGarage) IF IS_ENTITY_PLAYING_ANIM(objGarage, sAnimDictMapObjects, "GDoor_Open") AND GET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open") <= 1.0 IF DOES_ENTITY_EXIST(objHiddenCollision) SET_ENTITY_COORDS(objHiddenCollision, <<5320.589844, -5188.490234, GET_INTERP_POINT_FLOAT(82.52, 82.52 + 2.60, 0.0, 0.888, GET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open"))>>) ENDIF IF GET_ENTITY_ANIM_CURRENT_TIME(objGarage, sAnimDictMapObjects, "GDoor_Open") = 1.0 SET_LABEL_AS_TRIGGERED(ShutterOpen, TRUE) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //Rayfire IF eMissionObjective >= stageShootOut AND eMissionOBjective <= stageGetAway IF NOT DOES_RAYFIRE_MAP_OBJECT_EXIST(rfSecDoorExplosion) IF IS_ENTITY_AT_COORD(playerPedID, <<5333.213867, -5187.637207, 84.804016>>, <<20.0, 10.0, 3.0>>) rfSecDoorExplosion = GET_RAYFIRE_MAP_OBJECT(<<5318.2, -5185.1, 83.7>>, 10.0, "des_prologue_door") #IF IS_DEBUG_BUILD PRINTLN("Getting Rayfire Map Object - des_prologue_door") #ENDIF SET_LABEL_AS_TRIGGERED(RayfireLoaded, FALSE) ENDIF ELIF NOT HAS_LABEL_BEEN_TRIGGERED(RayfireLoaded) IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion) != RFMO_STATE_END SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfSecDoorExplosion, RFMO_STATE_ENDING) #IF IS_DEBUG_BUILD PRINTLN("Setting Rayfire Map Object - des_prologue_door") #ENDIF SET_LABEL_AS_TRIGGERED(RayfireLoaded, TRUE) ENDIF ENDIF ENDIF //Ragdoll IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) IF GET_ENTITY_HEALTH(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) <= 101 AND eMissionObjective = cutGuard SET_PED_CAN_RAGDOLL(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], TRUE) ELSE IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], SCRIPT_TASK_ANY) != PERFORMING_TASK AND NOT IS_PED_RAGDOLL(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL]) SET_PED_CAN_RAGDOLL(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL], FALSE) ENDIF ENDIF ENDIF IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) IF GET_SCRIPT_TASK_STATUS(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], SCRIPT_TASK_ANY) != PERFORMING_TASK AND NOT IS_PED_RAGDOLL(sSelectorPeds.pedID[SELECTOR_PED_TREVOR]) SET_PED_CAN_RAGDOLL(sSelectorPeds.pedID[SELECTOR_PED_TREVOR], FALSE) ENDIF ENDIF IF NOT IS_ENTITY_DEAD(pedBrad) IF GET_SCRIPT_TASK_STATUS(pedBrad, SCRIPT_TASK_ANY) != PERFORMING_TASK AND NOT IS_PED_RAGDOLL(pedBrad) SET_PED_CAN_RAGDOLL(pedBrad, FALSE) ENDIF ENDIF //Idle Anims IF DOES_ENTITY_EXIST(playerPedMichael) SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS(playerPedMichael, FALSE) ENDIF IF DOES_ENTITY_EXIST(playerPedTrevor) SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS(playerPedTrevor, FALSE) ENDIF IF DOES_ENTITY_EXIST(pedBrad) SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS(pedBrad, FALSE) ENDIF IF eMissionObjective >= stageLearnWalking AND eMissionObjective <= stageDuckUnderShutter AND eMissionObjective != cutGuard IF IS_SCREEN_FADED_IN() AND NOT IS_CUTSCENE_PLAYING() AND NOT IS_PHONE_ONSCREEN() IF HAS_PED_GOT_WEAPON(playerPedID, WEAPONTYPE_CARBINERIFLE) WEAPON_TYPE wtRifle = WEAPONTYPE_CARBINERIFLE INT iClipAmmo = 0 GET_AMMO_IN_CLIP(playerPedID, wtRifle, iClipAmmo) IF GET_AMMO_IN_PED_WEAPON(playerPedID, wtRifle) <= 0 AND iClipAmmo <= 0 eMissionFail = failOutOfAmmo missionFailed() ENDIF ENDIF ENDIF ENDIF //Debug Routine #IF IS_DEBUG_BUILD debugRoutine() #ENDIF //Time Fix SWITCH eMissionObjective CASE initMission CASE cutIntro CASE stageLearnWalking CASE cutTieUp CASE stageLearnAiming CASE stageLearnPhone CASE stageLearnBlips CASE stageLeaveVault CASE cutGuard //CASE stageDisableCameras CASE stageBlastDoors CASE stageDuckUnderShutter CASE stageShootOut //SNOW @5:00 //twilight as you exit the building security lights lighting up the yard //(img0000+0005) //load Snowy 01 cloud hat SMOOTH_SET_CLOCK_TIME(5, 0, 0) BREAK CASE cutGetAway //on road SNOW @6:00 //glimer of hope going to get out of this situation/horrible weather (sun poking through) //(img0011) //keep Snowy 01 cloud hat loaded IF iCutsceneStage < 1 //Cutscene transition SMOOTH_SET_CLOCK_TIME(5, 0, 0) ELSE SMOOTH_SET_CLOCK_TIME(6, 0, 0) ENDIF BREAK CASE stageGetAway //on road SNOW @6:00 //glimer of hope going to get out of this situation/horrible weather (sun poking through) //(img0011) //keep Snowy 01 cloud hat loaded SMOOTH_SET_CLOCK_TIME(6, 0, 0) BREAK CASE cutFinale CASE stageFinale IF iCutsceneStage < 3 //get to farm SNOW @7:00 //feds close in and so does the weather lighter BUT greyer and possibly windier. //(img0010) //keep Snowy 01 cloud hat loaded SMOOTH_SET_CLOCK_TIME(7, 0, 0) ELSE //funeral service cut scene SNOW @ 16:00 //dull and grey weather with a bit of sleet. //(img0048) //load Stormy 01 cloud hat IF HAS_THIS_CUTSCENE_LOADED("pro_mcs_7_concat") AND IS_CUTSCENE_PLAYING() AND HAS_LABEL_BEEN_TRIGGERED(TrevorRunsOffB) SET_CLOCK_TIME(12, 0, 0) ENDIF ENDIF BREAK ENDSWITCH //Snow Marks + Wet IF eMissionObjective > initMission IF eMissionObjective < stageShootOut fSnowMarks = 0.0 ELIF eMissionObjective >= stageShootOut OR eMissionObjective <= cutGetAway IF fSnowMarks < 1.0 fSnowMarks = fSnowMarks +@ 0.1 ENDIF ELIF eMissionObjective = stageGetAway IF fSnowMarks > 0.4 fSnowMarks = fSnowMarks -@ 0.1 ENDIF ELIF eMissionObjective >= cutFinale OR eMissionObjective <= stageFinale IF fSnowMarks < 1.0 fSnowMarks = fSnowMarks +@ 0.1 ENDIF ENDIF IF fSnowMarks > 1.0 fSnowMarks = 1.0 ENDIF IF fSnowMarks < 0.0 fSnowMarks = 0.0 ENDIF IF NOT IS_PED_INJURED(playerPedMichael) IF DOES_ENTITY_HAVE_DRAWABLE(playerPedMichael) AND DOES_ENTITY_HAVE_PHYSICS(playerPedMichael) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(playerPedMichael) SET_PED_WETNESS_ENABLED_THIS_FRAME(playerPedMichael) SET_ENABLE_PED_ENVEFF_SCALE(playerPedMichael, TRUE) IF GET_PED_ENVEFF_SCALE(playerPedMichael) <> fSnowMarks SET_PED_ENVEFF_SCALE(playerPedMichael, fSnowMarks) //PRINTLN("SET_PED_ENVEFF_SCALE(playerPedMichael, ", fSnowMarks, ")") ENDIF ENDIF ENDIF IF NOT IS_PED_INJURED(playerPedTrevor) IF DOES_ENTITY_HAVE_DRAWABLE(playerPedTrevor) AND DOES_ENTITY_HAVE_PHYSICS(playerPedTrevor) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(playerPedTrevor) SET_PED_WETNESS_ENABLED_THIS_FRAME(playerPedTrevor) SET_ENABLE_PED_ENVEFF_SCALE(playerPedTrevor, TRUE) IF GET_PED_ENVEFF_SCALE(playerPedTrevor) <> fSnowMarks SET_PED_ENVEFF_SCALE(playerPedTrevor, fSnowMarks) //PRINTLN("SET_PED_ENVEFF_SCALE(playerPedTrevor, ", fSnowMarks, ")") ENDIF ENDIF ENDIF IF NOT IS_PED_INJURED(pedBrad) IF DOES_ENTITY_HAVE_DRAWABLE(pedBrad) AND DOES_ENTITY_HAVE_PHYSICS(pedBrad) AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedBrad) SET_PED_WETNESS_ENABLED_THIS_FRAME(pedBrad) SET_ENABLE_PED_ENVEFF_SCALE(pedBrad, TRUE) IF eMissionObjective >= cutGetAway IF eMissionObjective <> cutFinale SET_PED_ENVEFF_SCALE(pedBrad, 0.6) //PRINTSTRING("set brad 2") printnl() ELSE SET_PED_ENVEFF_SCALE(pedBrad, 0.8) SET_PED_ENVEFF_CPV_ADD(pedBrad, 0.15) ENDIF ELSE IF GET_PED_ENVEFF_SCALE(pedBrad) <> fSnowMarks SET_PED_ENVEFF_SCALE(pedBrad, fSnowMarks) //PRINTLN("SET_PED_ENVEFF_SCALE(pedBrad, ", fSnowMarks, ")") ENDIF ENDIF ENDIF ENDIF ENDIF //Disable Ambient Audio (Aiming gun at buddy) - each frame IF NOT IS_PED_INJURED(playerPedMichael) SET_PED_RESET_FLAG(playerPedMichael, PRF_DisableFriendlyGunReactAudio, TRUE) ENDIF IF NOT IS_PED_INJURED(playerPedTrevor) SET_PED_RESET_FLAG(playerPedTrevor, PRF_DisableFriendlyGunReactAudio, TRUE) ENDIF IF NOT IS_PED_INJURED(pedBrad) SET_PED_RESET_FLAG(pedBrad, PRF_DisableFriendlyGunReactAudio, TRUE) ENDIF //Give buddy ammo if they drop too low IF eMissionObjective >= stageShootOut AND eMissionObjective <= stageGetAway AND IS_SCREEN_FADED_IN() AND NOT IS_CUTSCENE_PLAYING() IF NOT IS_PED_INJURED(notPlayerPedID) UPDATE_BUDDY_AMMO() ENDIF ENDIF //Kinematic Flag Tracking IF eKinematicChar != GET_CURRENT_PLAYER_PED_ENUM() IF DOES_ENTITY_EXIST(playerPedID) AND DOES_ENTITY_EXIST(notPlayerPedID) AND DOES_ENTITY_EXIST(pedBrad) SET_PED_CONFIG_FLAG(playerPedID, PCF_UseKinematicModeWhenStationary, FALSE) SET_PED_CONFIG_FLAG(notPlayerPedID, PCF_UseKinematicModeWhenStationary, TRUE) SET_PED_CONFIG_FLAG(pedBrad, PCF_UseKinematicModeWhenStationary, TRUE) eKinematicChar = GET_CURRENT_PLAYER_PED_ENUM() ENDIF ENDIF //Hide HUD/Radar IF bRadar = FALSE IF eMissionObjective <> cutIntro DISPLAY_RADAR(FALSE) ENDIF DISPLAY_HUD(FALSE) DISPLAY_AMMO_THIS_FRAME(FALSE) ELSE DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) ENDIF // IF NOT IS_GAMEPLAY_CAM_RENDERING() // HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON) // ENDIF HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH) //#IF IS_DEBUG_BUILD PRINTLN("HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH)") #ENDIF IF eMissionObjective <= stageDuckUnderShutter IF NOT HAS_LABEL_BEEN_TRIGGERED(PRO_COP) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON) DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON) ENDIF 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 fAnimProgressTime = 0.0 // IF IS_ENTITY_PLAYING_ANIM(playerPedID, sAnimDictPrologue2, "main_player_zero") // fAnimTotalTime = GET_ENTITY_ANIM_TOTAL_TIME(playerPedID, sAnimDictPrologue2, "main_player_zero") // fAnimProgressTime = GET_GAME_TIMER() + fAnimProgressTime // ENDIF // ENDIF //Birds SET_GLOBAL_MIN_BIRD_FLIGHT_HEIGHT(100.0) //Stats IF GET_VEHICLE_PED_IS_USING(playerPedID) != NULL INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(GET_VEHICLE_PED_IS_USING(playerPedID)) ENDIF //Kills 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 //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_ENTITY_A_MISSION_ENTITY(sei.EntityId) INFORM_MISSION_STATS_OF_INCREMENT(PRO_KILLS) ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDREPEAT // WEAPON_TYPE wtCurrentUpdate = WEAPONTYPE_UNARMED // GET_CURRENT_PED_WEAPON(playerPedID, wtCurrentUpdate) // // IF wtCurrent != wtCurrentUpdate // OR iAmmo = -1 // wtCurrent = wtCurrentUpdate // iAmmo = GET_AMMO_IN_PED_WEAPON(playerPedID, wtCurrent) // ENDIF // // IF GET_AMMO_IN_PED_WEAPON(playerPedID, wtCurrent) < iAmmo // INT iDifference = iAmmo - GET_AMMO_IN_PED_WEAPON(playerPedID, wtCurrent) // // REPEAT iDifference i // INFORM_MISSION_STATS_OF_INCREMENT(MIC2_BULLETS_FIRED) // ENDREPEAT // // iAmmo = GET_AMMO_IN_PED_WEAPON(playerPedID, wtCurrent) // ENDIF INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(playerPedID) LOAD_UNLOAD_ASSETS() AUDIO_CONTROLLER() //First Person Camera Used Check IF NOT GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_HAS_USED_FP_VIEW) IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CMN_FPSHELP") SAFE_CLEAR_HELP() ENDIF SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_PLAYER_HAS_USED_FP_VIEW, TRUE) ENDIF ENDIF //Instance Priority IF eMissionObjective >= stageShootOut AND eMissionObjective <= cutGetAway AND NOT IS_CUTSCENE_PLAYING() SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_SHOOTING) ELSE SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE) ENDIF //Show HUD IF eMissionObjective >= stageLearnBlips AND eMissionObjective <= stageDuckUnderShutter AND iCurrentTake > 0 IF IS_VALID_INTERIOR(intDepot) IF NOT (HAS_THIS_CUTSCENE_LOADED("pro_mcs_7_concat") AND IS_CUTSCENE_PLAYING()) DISPLAY_TAKE() ENDIF ENDIF ENDIF //Audio Stream (Fix for bug 2284329 IF bAudioStream IF NOT IS_STREAM_PLAYING() SET_AUDIO_FLAG("DisableReplayScriptStreamRecording", FALSE) bAudioStream = FALSE ENDIF ENDIF //DEBUG LIGHTING RIGS // INT i // // VECTOR vLightingRigMin, vLightingRigMax // // vLightingRigMin = VECTOR_ZERO // vLightingRigMax = VECTOR_ZERO // // REPEAT COUNT_OF(objLightingRig) i // IF DOES_ENTITY_EXIST(objLightingRig[i]) // VECTOR vLightingRigCoords = GET_ENTITY_COORDS(objLightingRig[i]) // PRINTLN("objLightingRig[", i, "] exists at: <<", vLightingRigCoords.X, ", ", vLightingRigCoords.Y, ", ", vLightingRigCoords.Z, ">>") // GET_MODEL_DIMENSIONS(GET_ENTITY_MODEL(objLightingRig[i]), vLightingRigMin, vLightingRigMax) // IF bDebugLightingRig // SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) // DRAW_DEBUG_SPHERE(vLightingRigCoords, 0.25, 255, 0, 0) // DRAW_DEBUG_BOX(vLightingRigMin, vLightingRigMax, 255, 0, 0) // ENDIF // ENDIF // ENDREPEAT // IF bVideoRecording // SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) // // DRAW_RECT(0.9, 0.1, 0.1, 0.1, 255, 0, 0, 255) // ENDIF //Objective switch SWITCH eMissionObjective CASE initMission IF HAS_MODEL_LOADED_CHECK(MODEL_GET_PLAYER_PED_MODEL_CHAR_MICHAEL, GET_PLAYER_PED_MODEL(CHAR_MICHAEL)) AND HAS_MODEL_LOADED_CHECK(MODEL_GET_PLAYER_PED_MODEL_CHAR_TREVOR, GET_PLAYER_PED_MODEL(CHAR_TREVOR)) AND HAS_MODEL_LOADED_CHECK(MODEL_IG_BRAD, IG_BRAD) initialiseMission() ENDIF BREAK CASE cutIntro IF HAS_MODEL_LOADED_CHECK(MODEL_A_M_M_PROLHOST_01, A_M_M_PROLHOST_01) AND HAS_MODEL_LOADED_CHECK(MODEL_A_F_M_PROLHOST_01, A_F_M_PROLHOST_01) AND HAS_MODEL_LOADED_CHECK(MODEL_IG_PROLSEC_02, IG_PROLSEC_02) AND HAS_MODEL_LOADED_CHECK(MODEL_PROP_1ST_PROLOGUE_SCENE, PROP_1ST_PROLOGUE_SCENE) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue1) cutsceneIntro() ENDIF BREAK CASE stageLearnWalking LearnWalking() BREAK CASE cutTieUp IF HAS_MODEL_LOADED_CHECK(MODEL_PROP_1ST_HOSTAGE_SCENE, PROP_1ST_HOSTAGE_SCENE) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue1) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_MCS1) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_MCS1_GuardFacial) cutsceneTieUp() ENDIF BREAK CASE stageLearnAiming IF HAS_MODEL_LOADED_CHECK(MODEL_PROP_1ST_HOSTAGE_SCENE, PROP_1ST_HOSTAGE_SCENE) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_MCS1) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_TrevorReturn) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_Impatient) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue2_MCS1_GuardFacial) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_IdleAtCupboard) LearnAiming() ENDIF BREAK CASE stageLearnPhone IF HAS_MODEL_LOADED_CHECK(MODEL_modBomb, modBomb) AND HAS_MODEL_LOADED_CHECK(MODEL_modBombGreen, modBombGreen) AND HAS_MODEL_LOADED_CHECK(MODEL_modBomb3, modBomb3) AND HAS_MODEL_LOADED_CHECK(MODEL_modBomb2, modBomb2) AND HAS_MODEL_LOADED_CHECK(MODEL_modBomb1, modBomb1) AND HAS_MODEL_LOADED_CHECK(MODEL_PROP_VAULT_DOOR_SCENE, PROP_VAULT_DOOR_SCENE) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_Cam) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_Impatient) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_IdleAtCupboard) AND GET_IS_WAYPOINT_RECORDING_LOADED(sWaypointRoute1) LearnPhone() ENDIF BREAK CASE stageLearnBlips IF HAS_MODEL_LOADED_CHECK(MODEL_V_ILev_CD_Dust, V_ILev_CD_Dust) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_IdleInVault) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_LeaveVault) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_Cough) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue3_Impatient) AND GET_IS_WAYPOINT_RECORDING_LOADED(sWaypointRoute2) LearnBlips() ENDIF BREAK CASE stageLeaveVault IF HAS_MODEL_LOADED_CHECK(MODEL_CSB_PROLSEC, CSB_PROLSEC) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_LeaveVault) LeaveVault() ENDIF BREAK CASE cutGuard IF HAS_MODEL_LOADED_CHECK(MODEL_CSB_PROLSEC, CSB_PROLSEC) AND HAS_MODEL_LOADED_CHECK(MODEL_PROP_CS_HEIST_BAG_02, PROP_CS_HEIST_BAG_02) AND HAS_MODEL_LOADED_CHECK(MODEL_P_LD_HEIST_BAG_S_1, P_LD_HEIST_BAG_S_1) AND HAS_MODEL_LOADED_CHECK(MODEL_P_CSH_STRAP_01_S, P_CSH_STRAP_01_S) AND HAS_MODEL_LOADED_CHECK(MODEL_PROP_MICHAEL_BALACLAVA, PROP_MICHAEL_BALACLAVA) AND HAS_MODEL_LOADED_CHECK(MODEL_PROP_2ND_HOSTAGE_SCENE, PROP_2ND_HOSTAGE_SCENE) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_Base) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_Shot) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_PlayerPause) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue4_Fail) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Start) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Main) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_End) cutsceneGuard() ENDIF BREAK CASE stageBlastDoors IF HAS_MODEL_LOADED_CHECK(MODEL_modBomb, modBomb) AND HAS_MODEL_LOADED_CHECK(MODEL_modBombGreen, modBombGreen) AND HAS_MODEL_LOADED_CHECK(MODEL_modBomb3, modBomb3) AND HAS_MODEL_LOADED_CHECK(MODEL_modBomb2, modBomb2) AND HAS_MODEL_LOADED_CHECK(MODEL_modBomb1, modBomb1) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Start) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Main) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_End) BlastDoors() ENDIF BREAK CASE stageDuckUnderShutter IF HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_Duck) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_CleanSmoke) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue5_End) DuckUnderShutter() ENDIF BREAK CASE stageShootOut IF HAS_MODEL_LOADED_CHECK(MODEL_S_M_M_SNOWCOP_01, S_M_M_SNOWCOP_01) AND HAS_MODEL_LOADED_CHECK(MODEL_U_M_Y_PROLDRIVER_01, U_M_Y_PROLDRIVER_01) AND HAS_MODEL_LOADED_CHECK(MODEL_U_M_M_PROLSEC_01, U_M_M_PROLSEC_01) AND HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD1, POLICEOLD1) AND HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD2, POLICEOLD2) AND HAS_MODEL_LOADED_CHECK(MODEL_STOCKADE3, STOCKADE3) AND HAS_MODEL_LOADED_CHECK(MODEL_RANCHERXL2, RANCHERXL2) AND HAS_MODEL_LOADED_CHECK(MODEL_EMPEROR3, EMPEROR3) AND HAS_MODEL_LOADED_CHECK(MODEL_P_TREVOR_PROLOGE_BALLY_S, P_TREVOR_PROLOGE_BALLY_S) AND HAS_MODEL_LOADED_CHECK(MODEL_P_TREV_SKI_MASK_S, P_TREV_SKI_MASK_S) AND HAS_RECORDING_LOADED_CHECK(003, sCarrec) AND HAS_RECORDING_LOADED_CHECK(004, sCarrec) AND HAS_RECORDING_LOADED_CHECK(005, sCarrec) AND HAS_RECORDING_LOADED_CHECK(006, sCarrec) AND HAS_RECORDING_LOADED_CHECK(008, sCarrec) AND HAS_RECORDING_LOADED_CHECK(009, sCarrec) AND HAS_RECORDING_LOADED_CHECK(011, sCarrec) AND HAS_RECORDING_LOADED_CHECK(026, sCarrec) AND HAS_RECORDING_LOADED_CHECK(700, sCarrec) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue6) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue6FirstPerson) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictDeadGuard) AND HAS_VEHICLE_ASSET_LOADED(POLICEOLD1) AND HAS_VEHICLE_ASSET_LOADED(POLICEOLD2) ShootOut() ENDIF BREAK CASE cutGetAway IF HAS_RECORDING_LOADED_CHECK(026, sCarrec) AND HAS_RECORDING_LOADED_CHECK(701, sCarrec) AND HAS_RECORDING_LOADED_CHECK(702, sCarrec) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_LeadOut) cutsceneGetAway() ENDIF BREAK CASE stageGetAway IF HAS_MODEL_LOADED_CHECK(MODEL_S_M_M_SNOWCOP_01, S_M_M_SNOWCOP_01) AND HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD1, POLICEOLD1) AND HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD2, POLICEOLD2) AND HAS_MODEL_LOADED_CHECK(MODEL_RANCHERXL2, RANCHERXL2) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue_LeadOut) GetAway() ENDIF BREAK CASE cutFinale IF HAS_MODEL_LOADED_CHECK(MODEL_PROP_CS_HEIST_BAG_02, PROP_CS_HEIST_BAG_02) AND HAS_MODEL_LOADED_CHECK(MODEL_P_LD_HEIST_BAG_S_1, P_LD_HEIST_BAG_S_1) AND HAS_RECORDING_LOADED_CHECK(027, sCarrec) AND HAS_RECORDING_LOADED_CHECK(028, sCarrec) AND HAS_RECORDING_LOADED_CHECK(029, sCarrec) cutsceneFinale() ENDIF BREAK CASE stageFinale IF HAS_MODEL_LOADED_CHECK(MODEL_S_M_M_SNOWCOP_01, S_M_M_SNOWCOP_01) AND HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD1, POLICEOLD1) AND HAS_MODEL_LOADED_CHECK(MODEL_POLICEOLD2, POLICEOLD2) AND HAS_MODEL_LOADED_CHECK(MODEL_RANCHERXL2, RANCHERXL2) AND HAS_MODEL_LOADED_CHECK(MODEL_FREIGHT, FREIGHT) AND HAS_MODEL_LOADED_CHECK(MODEL_FREIGHTCONT1, FREIGHTCONT1) AND HAS_MODEL_LOADED_CHECK(MODEL_FREIGHTCONT2, FREIGHTCONT2) AND HAS_MODEL_LOADED_CHECK(MODEL_PROP_CS_HEIST_BAG_02, PROP_CS_HEIST_BAG_02) AND HAS_RECORDING_LOADED_CHECK(027, sCarrec) AND HAS_RECORDING_LOADED_CHECK(028, sCarrec) AND HAS_RECORDING_LOADED_CHECK(029, sCarrec) AND HAS_RECORDING_LOADED_CHECK(032, sCarrec) AND HAS_RECORDING_LOADED_CHECK(033, sCarrec) AND HAS_RECORDING_LOADED_CHECK(034, sCarrec) AND HAS_RECORDING_LOADED_CHECK(035, sCarrec) AND HAS_ANIM_DICT_LOADED_CHECK(sAnimDictPrologue6) Finale() ENDIF BREAK CASE passMission missionPassed() BREAK CASE failMission missionFailed() BREAK ENDSWITCH WAIT(0) ENDWHILE //Script should never reach here. Always terminate with cleanup function. ENDSCRIPT