19878 lines
783 KiB
Python
Executable File
19878 lines
783 KiB
Python
Executable File
//+-----------------------------------------------------------------------------+
|
|
//¦ ¦
|
|
//¦ 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 <<GET_INTERP_POINT_FLOAT(vStartPos.X, vEndPos.X, fStartTime, fEndTime, fPointTime), GET_INTERP_POINT_FLOAT(vStartPos.Y, vEndPos.Y, fStartTime, fEndTime, fPointTime), GET_INTERP_POINT_FLOAT(vStartPos.Z, vEndPos.Z, fStartTime, fEndTime, fPointTime)>>
|
|
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 + <<GET_RANDOM_FLOAT_IN_RANGE(minXrange, maxXrange), GET_RANDOM_FLOAT_IN_RANGE(minYRange, maxYrange), 0.0>>
|
|
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
|