Files
2025-09-29 00:52:08 +02:00

19680 lines
716 KiB
Python
Executable File

//+-----------------------------------------------------------------------------+
//¦ ¦
//¦ Author: Adam Westwood Date: 09/11/2010 ¦
//¦ ¦
//¦-----------------------------------------------------------------------------¦
//¦ ¦
//¦ Docks Setup - Scout Docks ¦
//¦ ¦
//¦ ¦
//¦ ¦
//+-----------------------------------------------------------------------------+
//Compile out Title Update changes to header functions.
//Must be before includes.
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
//---------------------------------¦ HEADERS ¦-----------------------------------
//CL 3663473 submitted to create new AGGRESSIVE_INVESTIGATE group. Adds RELGROUPHASH_AGGRESSIVE_INVESTIGATE to the REL_GROUP_HASH enum in script.
//Adam, back to you. Unfortunately my CL is code with a script header change, so you may need a new build to be able to change the new AGGRESSIVE_INVESTIGATE's relationship.
//And some other new roots:
//DS1_noton
//DS1_whyme
//Floyd waving at Trevor
//- Dictionary: friends@frj@ig_1
///depot/gta5/art/anim/export_mb/FRIENDS@/FRJ@/IG_1/
//WAVE_A.anim
//WAVE_B.anim
//WAVE_C.anim
//WAVE_D.anim
//WAVE_E.anim
//SUPERVISOR A0
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 "streamed_scripts.sch"
USING "cellphone_public.sch"
USING "flow_public_core_override.sch"
USING "model_enums.sch"
USING "script_player.sch"
USING "selector_public.sch"
USING "player_ped_public.sch"
USING "chase_hint_cam.sch"
USING "commands_physics.sch"
USING "cutscene_public.sch"
USING "script_blips.sch"
USING "replay_public.sch"
USING "locates_public.sch"
USING "script_ped.sch"
USING "commands_debug.sch"
USING "commands_physics.sch"
USING "automatic_door_public.sch"
USING "script_heist.sch"
USING "taxi_functions.sch"
USING "CompletionPercentage_public.sch"
USING "Mission_stat_public.sch"
USING "area_checks.sch"
USING "vehicle_gen_public.sch"
USING "Timelapse.sch"
USING "clearmissionarea.sch"
USING "flow_mission_trigger_public.sch"
USING "tv_control_public.sch"
USING "cheat_controller_public.sch"
USING "commands_recording.sch"
USING "script_misc.sch"
//USING "asset_management_public.sch"
//For the Text
CONST_INT MAX_QUEUED_TEXT 10
CONST_INT MAX_QUEUED_HELP_AL 3
CONST_INT MAX_TEXT_HASHES 50
//STRING sConversationBlock = "D1AUD"
structPedsForConversation sSpeech
CONST_INT MPF_NUM_OF_PEDS 5
//CUTSCENE_PED_VARIATION sCutscenePedVariationRegister[MPF_NUM_OF_PEDS]
USING "text_queue.sch"
#IF IS_DEBUG_BUILD
USING "script_debug.sch"
USING "select_mission_stage.sch"
#ENDIF
//---------------------------------:CUTSCENE VARS:------------------------------------------
BOOL b_skipped_mocap
INT i_current_event
BOOL b_is_jumping_directly_to_stage
VEHICLE_INDEX veh_pre_mission_car
ENUM SECTION_STAGE
SECTION_STAGE_SETUP = 0,
SECTION_STAGE_RUNNING,
SECTION_STAGE_CLEANUP,
SECTION_STAGE_SKIP,
SECTION_STAGE_JUMPING_TO,
SECTION_DEBUG
ENDENUM
SECTION_STAGE e_section_stage = SECTION_STAGE_SETUP
CONST_INT MAX_ANIMS 15
CONST_INT iTotalBomb 3
CONST_INT iTotalMerc 15
CONST_INT iTotalDockWorker 22
CONST_INT iTotalNumberOfPtX 25
CONST_INT iNumberOfPatrols 20
CONST_INT iTotalVehicles 6
CONST_INT iNumberOfDockSetPieces 12
CONST_INT iNumberOfWayPointTasks 10
CONST_INT iTotalNumberOfPhotos 3
CONST_INT iTotalBuddy 3
CONST_INT MAX_NUM_OF_CLIPBOARDS 10
CONST_INT CONST_IGNORE_THIS 0
INT iPhotosTaken
INT iHelp
INT iCraneHelp
INT iCraneTimer
INT i_placeholder_dialogue_timer = 0
INT i_current_dialogue_duration = 0
INT iMissionDialogue
INT iDialogueTimer
INT iHandlerSection
INT iCraneFailTimer
INT iCraneDialogueTimer
INT iReplayStage
INT iNextFloydHurrySpeechTime
INT iStageStartTime
INT iGateSecurityGuy
INT iSecurityTimer
INT sceneBlackAbuse
INT sceneBlackAbuse2
INT soundBeating
INT iTimer
INT iReleaseTimer
INT ssCraneWorker
INT iCraneHelpTimer
INT iFailTimer
INT iBlockReplayCameraTimer
INT iMerryWeatherFail
INT iDamagedContainer
INT iFloydHauler
INT iAmbientDialogueTimer
INT iJumpTimer
INT iStaggerTimer
INT iHandlerFailTimer
INT iCraneSound = GET_SOUND_ID()
INT iHandlerDialogueSwitch
INT iCraneStrain = GET_SOUND_ID()
INT iManagePickerAudio
INT ssWadeOnCouch
INT iLineMatch = -1
//Time of Day
//CAMERA_INDEX camTOD
//INT iTimeOfDayTracker
//TIMEOFDAY todReference
CAMERA_INDEX cam_interp
CAM_VIEW_MODE cCam
TEXT_LABEL_23 tSavedBanterRoot
TEXT_LABEL_23 tResumeBanterLabel
//BOOL
BOOL bRunFailChecks
BOOL bCleanup
BOOL bMissionStageLoaded
BOOL bDisabledHotSwap
BOOL balarmtriggered
//BOOL bPrinted
BOOL bCleanupStage
BOOL bInitStage
BOOL bForceTasks
BOOL bDialogue
BOOL bGodText
BOOL bdistancewarning
BOOL bTooFar = FALSE
BOOL bClearText = FALSE
BOOL bDoneWithTruck = FALSE
BOOL bContainerSetUpForDrive = FALSE
BOOL bClearTasks = FALSE
BOOL bLockForklift
BOOl bToggleObjective = FALSE
BOOL bHelpText = FALSE
BOOL bFakeSound
BOOL bRestrictedSupressed = FALSE
BOOL bPhoneCallStarted = FALSE
BOOL bFloydWalkPaused
BOOL bKilledOnFootConversation
BOOL bDoneHurrySpeech
BOOL bIncreaseFloydSpeed
FLOAT fFloydWalkSpeed
BOOL bSavedConvo
//BOOL bDoneBanter
BOOL bDoneConversationAnim[20]
BOOL bSetAltAnim = FALSE
BOOL bCarryingContainer = FALSE
BOOL bInitialGodText = FALSE
BOOL bTrailerAttachements = FALSE
BOOL bCreateFirstHauler = FALSE
BOOL bWaveIn = FALSE
BOOl bClearCutscenArea = FALSE
BOOl bMercPatrolCreated[iTotalMerc]
BOOl bPatrolCreated[iTotalDockWorker]
BOOL bIgnoreTheseFails = FALSE
BOOL bHitMarkToTriggerAudioSceneChange = FALSE
BOOL bBoardCutsceneRequested = FALSE
BOOL bPedDockCraneVariation = FALSE
BOOL bDoPlayerAnims = FALSE
BOOL bHasChanged
//TRUE, TRUE, FALSE, FALSE
BOOL b1 = TRUE
BOOL b2 = FALSE
BOOL b3 = FALSE
BOOL b4 = FALSE
BOOL bAddedRopes
BOOL bSetYourTimer
BOOL bForceNoGrab
BOOL bTriggerSetPiece[iNumberOfDockSetPieces]
BOOL bWaypointTask[iNumberOfWayPointTasks]
BOOL bDoCatchUp
BOOL bCraneSectionComplete
BOOL bCrate1Attached
BOOL bCrate0Attached
BOOL bIsJumpingDirectlyToStage
BOOL bObjectsCreated[4]
BOOL bSkipping = FALSE
BOOL bGoToSpeach = FALSE
BOOL bcutsceneplaying = TRUE
INT iNumberAnimsLoaded
STRING sAnimLoaded[MAX_ANIMS]
INT iWayTarget
INT iWayPlayer
FLOAT fSpeed
VECTOR vDistTarget
VECTOR vDistPlayer
FLOAT fPlayerDist
FLOAT fTargetDist
TWEAK_FLOAT fIdealDistance 0.6
TWEAK_FLOAT fMinDistance 1.1
TWEAK_FLOAT fMaxDistance 2.0
TWEAK_FLOAT fTargerMaxCatchUp 2.0
FLOAT fThisSpeed = 1
FLOAT fXTolerance = 0.48
FLOAT fYTolerance = 0.42
FLOAT fThisValue = -5.700
FLOAT fFallOff = 9.8
FLOAT fIntensity = 30
FLOAT fInnerAngle = 7.0
FLOAT fOuterAngle = 7.0
FLOAT fExposure = 10.1
INT icutsceneprog
//Crane stuff
BOOL b_is_crane_cinematic_active
VECTOR v_helper_offset
VECTOR v_crane_pos = << -53.6982, -2415.7900, 5.0500 >> //<< -53.2665, -2415.8633, 5.066 >>
BOOL b_is_audio_scene_active
CONST_FLOAT AUDIO_TRIGGER_THRESHOLD 0.01
CONST_FLOAT SPREADER_START_OFFSET -7.0 //-15.4
CAMERA_INDEX cam_cutscene
VECTOR v_left_door_offset = <<-1.3, -6.08, 1.4>>
VECTOR v_right_door_offset = <<1.3, -6.08, 1.4>>
BLIP_INDEX blip_current_destination
BLIP_INDEX container0_blip
BLIP_INDEX container1_blip
BLIP_INDEX Blip_player
OBJECT_INDEX ObjdockProps[10]
OBJECT_INDEX objHandlerContainer[3]
INT iGandDTimer
INT iCameraTimer
VECTOR vAttach1 = <<-0.800, 0.0, 0.0>>
VECTOR vAttach2 = <<-2.0, 0.0, 1.3>>
VECTOR vAttachRot = <<0,0,0>>
VECTOR vInitialCabinPosition
INTERIOR_INSTANCE_INDEX interior_living_room
//VECTOR VECTOR_ZERO = <<0.0, 0.0, 0.0>>
//Ensure you reset bPrint if P-skipping is going on
CONST_INT iPrintTotal 25
//STRING sPrintList[iPrintTotal]
ENUM PrintList
PH_HELP1,
PH_HELP2,
PH_HELP3,
PH_HELP4,
FL_HELP1,
FL_HELP2,
DCKH_SWP_TRVR,
DCKH_COVER,
DCKH_GEOTAG,
DCKH_DETONATE,
DCKH_DIA1,
DCKH_DIA2,
DCKH_DIA3,
DCKH_DIA4,
DCKH_DIA5,
DCKH_DIA6,
DCKH_HELP1,
DCKH_HELP2,
DCKH_PASS,
DCKH_FAIL
ENDENUM
ENUM MISSION_REQUIREMENT
REQ_CRANE,
REQ_HAULER_WITH_TRAILER,
REQ_CONTAINERS_FOR_HANDLER_SECTION_START,
REQ_CONTAINERS_FOR_HANDLER_SECTION_FINAL,
REQ_HAULER_WITH_TRAILER_FINAL_STAGE,
REQ_TREVORS_TRUCK,
REQ_FLOYD,
REQ_WADE,
REQ_SECURITY,
REQ_HANDLER,
REQ_CAR_TO_DRIVE_FINAL_STAGE,
REQ_MERRYWEATHER_GUARDS_AT_OTHER_DOCKS,
REQ_GUARDS_AND_FLOYD,
REQ_CRANE_CONTAINERS
ENDENUM
//SynchScene Data
INT sceneArriveStartId
INT sceneArriveMainId
//INT sceneArriveEndId
INT sceneDockPipe1Id
INT sceneDockPipe2Id
INT sceneDockPipe3Id
INT sceneDockPipe4Id
INT sceneDockPipe5Id
INT sceneBlackWater1Id
INT sceneBlackWater2Id
INT sceneBlackWater3Id
INT sceneBlackWater4Id
INT sceneBlackWater5Id
INT sceneGantryCraneDynamic1
INT sceneGantryCraneDynamic2
INT sceneGantryCraneDynamic3
INT sceneGantryCraneDynamic4
INT sceneGuysAroundCar1
INT sceneGuysAroundCar2
INT sceneGuysAroundCar3
INT sceneDockWorkerTalking1A
INT sceneDockWorkerTalking2A
INT ssCraneAnims
INT sceneHandlerA1
INT sceneForkliftB1
INT sceneWelder
INT sceneCraneStatic
INT sceneDummy
INT sceneFloydPackage1init
INT iWalkAndTalk
INT iMerryWeatherResponse
MODEL_NAMES model_crane = Prop_Dock_RTG_LD
//MODEL_NAMES model_spreader = P_Dock_RTG_LD_spdr
MODEL_NAMES model_spreader = P_DOCK_CRANE_SLD_S //P_DOCK_CRANE_SPRDRLD
MODEL_NAMES model_cabin = P_Dock_RTG_LD_Cab
MODEL_NAMES model_container = Prop_Container_LD //Prop_Container_LD
MODEL_NAMES model_wheel_left = P_Dock_RTG_LD_wheel
MODEL_NAMES model_wheel_right = P_Dock_RTG_LD_wheel
MODEL_NAMES model_boom = P_Dock_RTG_LD_wheel //P_DOCK_CRANE_CABLES //?
MODEL_NAMES model_left_door = PROP_CNTRDOOR_LD_L
MODEL_NAMES model_right_door = PROP_CNTRDOOR_LD_R
MODEL_NAMES model_wheel = model_wheel_left
//VECTOR vWadeArriveStart = <<-61.084805,-2525.028320,5.950000>>
//FLOAT fWadeArriveStart = -10.750012
//
//VECTOR vFloydArriveStart = <<-61.744289,-2524.412598,5.950000>>
//FLOAT fFloydArriveStart = -20.750008
STRUCT SETPIECE_PED
PED_INDEX ped
BLIP_INDEX blip
MODEL_NAMES model
BOOL b_is_created
INT i_event
INT i_timer
OBJECT_INDEX obj_prop
//VECTOR v_dest
VECTOR v_spawn_position
FLOAT f_start_heading
COVERPOINT_INDEX cover
VECTOR v_ss_pos
FLOAT f_ss_rot
ENDSTRUCT
STRUCT SETPIECE_VEHICLE
VEHICLE_INDEX veh
MODEL_NAMES model
BOOL b_is_created
INT i_event
VECTOR v_spawn_position
FLOAT f_start_heading
ENDSTRUCT
SETPIECE_VEHICLE s_sv_car_to_admire[1]
SETPIECE_PED s_sp_supervisor1[1]
SETPIECE_PED s_sp_blackwater_with_dockworker [3]
SETPIECE_PED s_sp_gantry_guys_static [2]
SETPIECE_PED s_sp_guys_around_car [5]
SETPIECE_PED s_sp_dock_workers_on_pipe [3]
SETPIECE_PED s_sp_welder[1]
SETPIECE_PED s_sp_dock_workers_talking [2]
SETPIECE_PED s_sp_forklift_supervisorA[1]
SETPIECE_PED s_sp_forklift_supervisorB[1]
SETPIECE_PED s_sp_gantry_guys_dynamic [4]
SETPIECE_PED s_sp_floyd_grabs_package [3]
ENUM AMBIENT_SET_PIECE_SPEECH_ENUM
AMBSP_BLACKWATER_WITH_DOCK_WORKER,
AMBSP_DOCK_WORKERS_ON_PIPE,
AMBSP_GUYS_WITH_THE_PACKAGE,
AMBSP_GUYS_BY_THE_CAR,
AMBSP_WELDER
ENDENUM
ENUM SynchList
SS_EMPTY,
SS_ARRIVE_AT_DOCKS,
SS_FLOYD_GRABS_PACKAGE,
SS_GANTRY_GUYS,
SS_guys_around_car,
SS_dock_workers_on_pipe,
SS_WELDER,
SS_dock_workers_talking,
SS_FORKLIFT_SUPERVISOR_A,
SS_FORKLIFT_SUPERVISOR_B,
SS_WALK_AND_TALK_1,
SS_blackwater_with_dockworker,
SS_STATIC_GANTRY_GUYS,
SS_NUMBER_OF_ITEMS_IN_THIS_ENUM
ENDENUM
STRUCT SCENE_DATA
//STRING st_AnimDict
//STRING st_AnimName
VECTOR v_scene_pos
VECTOR v_scene_rot
BOOL b_data_generated
ENDSTRUCT
BOOL bSetPiece[SS_NUMBER_OF_ITEMS_IN_THIS_ENUM]
PED_INDEX ped_dummy[5]
VECTOR v_ss_floyd[SS_NUMBER_OF_ITEMS_IN_THIS_ENUM]
FLOAT f_ss_floyd[SS_NUMBER_OF_ITEMS_IN_THIS_ENUM]
VECTOR v_ss_wade[SS_NUMBER_OF_ITEMS_IN_THIS_ENUM]
FLOAT f_ss_wade[SS_NUMBER_OF_ITEMS_IN_THIS_ENUM]
BOOL bSSComplete[SS_NUMBER_OF_ITEMS_IN_THIS_ENUM]
SCENE_DATA s_sd_arrive_at_docks
SCENE_DATA s_sd_gantry_guys_dynamic
SCENE_DATA s_sd_gantry_guys_static
SCENE_DATA s_sd_guys_around_car
SCENE_DATA s_sd_dock_workers_on_pipe
SCENE_DATA s_sd_welder
SCENE_DATA s_sd_forklift_supervisor_a
SCENE_DATA s_sd_forklift_supervisor_b
SCENE_DATA S_sd_blackwater_with_dockworker
SCENE_DATA s_sd_floyd_grabs_package
//SynchList eSynch = SS_ARRIVE_AT_DOCKS
//INT
INT iSetupProgress
INT iProgress
INT iCount
//INT iLastGodTextID
INT iPreStreamStage
INT iAlarmID
INT iThisCounter
INT iCutsceneStage
FLOAT fMercStart[iTotalMerc]
FLOAT fDockWorkerStart [iTotalDockWorker]
FLOAT fPlayerStart = 133.1177
FLOAT fstartheading
FLOAT ffloydStart = 30.6234
FLOAT fWadeStart = 30.6234
FLOAT fSecurity = 233.1648
FLOAT fDockVeh[iTotalVehicles]
FLOAT fVal1 = 0.8
FLOAT fVal2 = 0.8
FLOAT fVal3 = 3.1
FLOAT fVal4 = 3.5
PED_INDEX pedMerc[iTotalMerc]
PED_INDEX pedDockWorker[iTotalDockWorker]
PED_INDEX pedFloyd
PED_INDEX pedWade
PED_INDEX pedSecurity
VEHICLE_INDEX vehMission
VEHICLE_INDEX vehHandler
VEHICLE_INDEX vehDocks[iTotalVehicles]
//Other Docks
VEHICLE_INDEX vehFloydTruck
VEHICLE_INDEX vehFinal
VEHICLE_INDEX vehBlocking
VEHICLE_INDEX vehFirstHauler
VEHICLE_INDEX vehTrailer1
VEHICLE_INDEX vehTrailer2
VEHICLE_INDEX vanByDocks
OBJECT_INDEX objClipboard[MAX_NUM_OF_CLIPBOARDS]
OBJECT_INDEX objPencil[MAX_NUM_OF_CLIPBOARDS]
//OBJECT_INDEX objBlocking
//ROPE_INDEX RopeSub
SEQUENCE_INDEX seqMain
//Camera
CAMERA_INDEX camMain
//VECTOR
VECTOR vStageStart = << -1154.9279, -1521.5001, 9.6346 >>
VECTOR vPlayerStart = << -1154.9279, -1521.5001, 9.6346 >>
VECTOR vfloydStart = << -1149.9487, -1528.3273, 3.2755 >>
VECTOR vWadeStart = << -1149.9487, -1526.3273, 3.2755 >>
VECTOR vMercStart[iTotalMerc]
VECTOR vMercPatrol[iTotalMerc][4]
VECTOR vDockWorkerStart [iTotalDockWorker]
VECTOR vDockPatrol[iTotalDockWorker][4]
VECTOR vDocks = << 18.1416, -2532.4927, 5.0504 >>
VECTOR vForkLiftLoadingArea = << -95.8455, -2455.7607, 5.0191 >>
VECTOR vSecurity = << 12.2127, -2531.0344, 5.0509 >>
VECTOR vParkUpHere = <<-59.0169, -2531.6919, 5.0103>> //<< -61.0438, -2531.3821, 5.0103 >>
VECTOR vDockVeh[iTotalVehicles]
VECTOR vSpreaderPosition = <<-52.94, -2415.64, 14.76>>
BLIP_INDEX blipDockWorker[iTotalDockWorker]
BLIP_INDEX blipHandlerContainers[3]
BLIP_INDEX blipCrane
BLIP_INDEX blipHaulerLoadingArea
PTFX_ID PTX_SHIP_EXPLOSIONS[iTotalNumberOfPtX]
BOOL bPTX_Triggered[iTotalNumberOfPtX]
//CRANE VARIABLES
FLOAT MAX_CABIN_Y =5.5
FLOAT MIN_CABIN_Y =-6.4
//
FLOAT MAX_SPREADER_Z =-3 //-2
FLOAT MIN_SPREADER_Z =-14 //-14
//
FLOAT MAX_CRANE_OFFSET = 5.0
FLOAT MIN_CRANE_OFFSET =-56.600
//
FLOAT MAX_CABIN_VEL =3.0 //5.0
FLOAT MAX_SPREADER_VEL = 3.0//5.0
FLOAT MAX_CRANE_VEL =3.0
//
FLOAT CABIN_ACCEL =5.0
FLOAT SPREADER_ACCEL =3.0//5.0
FLOAT CRANE_ACCEL =3.0
//BOOL b_added_ropes = FALSE
INT i_spreader_dampingframes = 120
FLOAT f_ropes_len_change_rate = 1.4//3.5
FLOAT f_ropes_min_len = 4 //2
FLOAT f_spreader_damping = 1.3
BOOL bInhibitCrane = FALSE
//CRANE CAM
//VECTOR v_cabin_attach_start = <<15.1064, -25.756, 9.692>>
//VECTOR v_cabin_point_start = <<13.610, -23.579, 11.002>>
//
//VECTOR v_cabin_attach_end = <<9.763, -23.549, 12.491>>
//VECTOR v_cabin_point_end = <<9.100, -23.647, 9.751>>
//
//VECTOR v_spreader_attach_start = <<15.1069, -25.8024, 11.8412>>
//VECTOR v_spreader_point_start = <<13.6548, -23.6745, 10.3039>>
//
//VECTOR v_spreader_attach_end = <<15.1069, -25.5991, -10.000>>
//VECTOR v_spreader_point_end = <<13.6548, -23.1884, -10.5>>
//Original
//VECTOR v_cabin_attach_start = <<15.1064, -25.8022, 11.8410>>
//VECTOR v_cabin_point_start = <<13.6553, -23.6718, 10.3063>>
//
//VECTOR v_cabin_attach_end = <<7.4302, -25.8017, 11.7590>>
//VECTOR v_cabin_point_end = <<6.4453, -23.4199, 10.2238>>
//
//VECTOR v_spreader_attach_start = <<15.1069, -25.8024, 11.8412>>
//VECTOR v_spreader_point_start = <<13.6548, -23.6745, 10.3039>>
//
//VECTOR v_spreader_attach_end = <<15.1069, -25.5991, -10.000>>
//VECTOR v_spreader_point_end = <<13.6548, -23.1884, -10.5>>
VECTOR v_cabin_attach_start = <<15.1064, -25.8022, 11.8410>>
VECTOR v_cabin_point_start = <<13.6553, -23.6718, 10.3063>>
VECTOR v_cabin_attach_end = <<20.0, -21.400, 14.200>>
VECTOR v_cabin_point_end = <<2.800, -2.800, 4.343>>
VECTOR v_spreader_attach_start = <<15.1069, -25.8024, 11.8412>>
VECTOR v_spreader_point_start = <<13.6548, -23.6745, 10.3039>>
VECTOR v_spreader_attach_end = <<15.1069, -25.5991, -10.000>>
VECTOR v_spreader_point_end = <<13.6548, -23.1884, -10.5>>
//VECTOR v_attach_to_cam_value = <<-1.512, 0.0, -1.678>>//<<-2.5, 0.0, -3.5479>>
VECTOR v_attach_to_cam_value = <<-1.512, 0.0, -1.078>>
VECTOR v_crane_attach_cam_rot = <<-89.0, 0.0, -90.0>>
FLOAT f_crane_attach_cam_fov = 100
FLOAT f_crane_cam_fov = 45.0193
VECTOR vRopeTop1= <<-2.6, -1.0, 0.285>> //<< -0.7,-2.6, 0.3>> //0.3
VECTOR vRopeBottom1 = <<1.0, -2.55, 1.75>>//<<-2.65, -0.7, 0.2>>
VECTOR vRopeTop2= <<2.6, -1.0, 0.285>>//<< -0.7,2.6, 0.3>>//
VECTOR vRopeBottom2 = <<1.0,2.65,1.75>>//<<2.65, -0.7, 0.2>>
VECTOR vRopeTop3= <<-2.6, 1.0, 0.285>>//<<0.7,-2.6,0.3>>
VECTOR vRopeBottom3 = <<-1.0,-2.55, 1.75>>//<<-2.65, 0.7, 0.2>>
VECTOR vRopeTop4= <<2.6, 1.0, 0.285>>//<< 0.7,2.6, 0.3>>
VECTOR vRopeBottom4 = <<-1.0,2.65,1.75>>//<<2.65, 0.7, 0.2>>
//Inside ropes
VECTOR vRopeTop5= <<2.6, 0.05, 0.285>>//<< -0.05,2.6, 0.3>>
VECTOR vRopeBottom5 = <<-0.05,2.65,1.75>>//<<2.65, -0.05, 0.2>>
VECTOR vRopeTop6= <<2.6, -0.05, 0.285>>//<<0.05,2.6, 0.3>>
VECTOR vRopeBottom6 = <<0.05, 2.65, 1.75>>//<<2.65, 0.05, 0.2>>
VECTOR vRopeTop7= <<-2.6, 0.05, 0.285>>//<<-0.05, -2.6,0.3>>
VECTOR vRopeBottom7 = <<-0.05, -2.55, 1.75>>//<<-2.65, -0.05, 0.2>>
VECTOR vRopeTop8= <<-2.6, -0.05, 0.285>>//<<0.05,-2.6, 0.3>>
VECTOR vRopeBottom8 = <<0.05, -2.55, 1.75>>//<<-2.65,0.05, 0.2>>
LOCATES_HEADER_DATA sLocatesData
WEAPON_TYPE wtAdRifle = WEAPONTYPE_ADVANCEDRIFLE
structPedsForConversation s_conversation_peds
SCRIPTTASKSTATUS TaskStatus
CONST_FLOAT CONVERSATION_PAUSE_DISTANCE 50.0
//INT
INT iHelpDuration
//VECTOR
VECTOR vHelpText
STRING sHelpText
ENTITY_INDEX entHelpText
//Arrow direction for help text
eARROW_DIRECTION eArrowDirection = HELP_TEXT_SOUTH
// ========================================= ENUMS =========================================
// MISSION_ENUMS stages that make up each section of the mission
ENUM MISSION_STAGE_ENUM
MISSION_STAGE_SETUP, //0
MISSION_STAGE_OPENING_CUTSCENE,
MISSION_STAGE_1,
MISSION_STAGE_2,
MISSION_STAGE_4,
MISSION_STAGE_5,
MISSION_STAGE_6,
MISSION_STAGE_7,
MISSION_STAGE_8,
MISSION_STAGE_10,
MISSION_STAGE_11,
MISSION_STAGE_PASSED,
MISSION_STAGE_FAIL
ENDENUM
MISSION_STAGE_ENUM eMissionStage = MISSION_STAGE_SETUP
MISSION_STAGE_ENUM eFailedStage = MISSION_STAGE_SETUP
//different mission fail conditions
STRUCT CRANE_DATA
OBJECT_INDEX obj_main
OBJECT_INDEX obj_cabin
OBJECT_INDEX obj_spreader
OBJECT_INDEX obj_lift
OBJECT_INDEX obj_wheels[8]
OBJECT_INDEX obj_helper
OBJECT_INDEX obj_boom_cable
ROPE_INDEX ropes[8]
VECTOR v_cabin_attach_offset
VECTOR v_spreader_attach_offset
VECTOR v_lift_attach_offset
VECTOR v_start_pos
VECTOR v_wheel_offsets[8]
VECTOR v_wheel_rotation
VECTOR v_prev_spreader_pos
VECTOR v_prev_spreader_rot
FLOAT f_crane_offset
FLOAT f_cabin_vel
FLOAT f_spreader_vel
FLOAT f_lift_vel
FLOAT f_crane_vel
FLOAT f_cam_z_progress
FLOAT f_cam_x_progress
BOOL b_container_attached
BOOL b_lift_active
BOOL b_spreader_stuck_on_ground
INT i_cabin_sound_id
INT i_spreader_fail_sound_id
INT i_spreader_sound_id
INT i_crane_sound_id
INT i_lift_sound_id
INT i_strain_sound_id
INT i_dampingframes
INT i_num_vertical_movement_frames
INT i_num_cabin_movement_frames
INT i_current_cam
INT i_prev_cam
ENDSTRUCT
STRUCT CONTAINER_SPOT
VECTOR v_offset
BOOL b_is_taken
BOOL b_is_active
ENDSTRUCT
STRUCT CARGO_CONTAINER
OBJECT_INDEX obj_main
OBJECT_INDEX obj_left_door
OBJECT_INDEX obj_right_door
BLIP_INDEX blip
CONTAINER_SPOT s_spots[2]
BOOL b_loaded_on_truck
BOOL b_is_full
FLOAT f_speed
FLOAT f_prev_speed
VECTOR vPrevVel
INT iTimeSinceDropped
INT iTimeSinceLastCollisionSound
BOOL bCollisionSoundPrimed
ENDSTRUCT
CARGO_CONTAINER s_containers[2]
CRANE_DATA s_crane
ENUM MISSION_FAIL_ENUM
#IF IS_DEBUG_BUILD
FORCE_FAIL,
#ENDIF
GENERIC,
VEHICLE_DEAD,
VEHICLE_STUCK,
FORKLIFT_DEAD,
FLOYDS_FORKLIFT_DEAD,
FLOYD_LEFT,
FLOYD_DEAD,
WADE_LEFT,
COVER_BLOWN,
COVER_BLOWN_RAN_OVER,
TRUCK_DEAD,
TRUCK_STUCK,
HANDLER_DEAD,
HANDLER_STUCK,
DAMAGED_CARGO,
DAMAGED_HANDLER_CARGO,
DAMAGED_CRATES,
ABADONED_DOCKS,
WADE_AND_FLOYD_DEAD,
DITCHED_THE_CARGO,
WADE_DEAD
ENDENUM
MISSION_FAIL_ENUM reason_for_fail = GENERIC
//debug things
#IF IS_DEBUG_BUILD
//BLIP_INDEX
WIDGET_GROUP_ID wgDOCKSSETUP
INT iMissionStageDB
INT iProgressDB
INT iPreLoadStageDB
INT iSpeechTextProgressDB
INT iCraneHelpDB
INT iWidgetMissionSkip
INT ieMissionStageTemp
BOOl bJumpToMissionJump
INT iSpeechProgress
INT iMissionDialogueDB
CONST_INT MAX_SKIP_MENU_LENGTH 11 //number of stages in mission(length of menu)
INT iReturnStage //mission stage to jump to
MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH]//struct containing the debug menu
#ENDIF
// =============================== PROCEDURES AND FUNCTIONS ================================
BOOL bPCControlsSetup = FALSE
// Initialise PC controls for peircing and tatooing minigames
PROC SETUP_PC_CONTROLS()
IF IS_PC_VERSION()
IF NOT bPCControlsSetup
INIT_PC_SCRIPTED_CONTROLS( "Port_LS_Heist_crane")
bPCControlsSetup = TRUE
ENDIF
ENDIF
ENDPROC
PROC CLEANUP_PC_CONTROLS()
IF IS_PC_VERSION()
IF bPCControlsSetup
SHUTDOWN_PC_SCRIPTED_CONTROLS()
bPCControlsSetup = FALSE
ENDIF
ENDIF
ENDPROC
FUNC BOOL INIT_CUTSCENE_STAGE()
IF bInitStage = FALSE
SETTIMERA(0)
bInitStage = TRUE
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
PROC ADVANCE_CUTSCENE()
SETTIMERA(0)
iCutsceneStage++
ENDPROC
PROC ADVANCE_STAGE()
bCleanupStage = TRUE
ENDPROC
FUNC BOOL CLEANUP_STAGE()
IF bCleanupStage = TRUE
SETTIMERA(0)
// hotswapStage = MISSION_HOTSWAP_STAGE_SELECT_CHARACTER
bInitStage = FALSE
bCleanupStage = FALSE
iCutsceneStage = 0
//bPrinted = FALSE
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
PROC SET_PLAYER_START_POSITION(MISSION_STAGE_ENUM eMissionStagePassed)
//DRIVE WITH floyd TO THE DOCKS
IF (eMissionStagePassed = MISSION_STAGE_SETUP
OR eMissionStagePassed = MISSION_STAGE_1)
vStageStart = vPlayerStart
fstartheading = fPlayerStart
//PLAYER PARKS UP AND GETS CHANGED
ELIF eMissionStagePassed = MISSION_STAGE_2
vStageStart = << 24.4835, -2536.4578, 5.0410 >>
fstartheading = 55.2078
ELIF eMissionStagePassed = MISSION_STAGE_4
vStageStart = << -61.5066, -2525.5120, 5.0101 >>
fstartheading = 56.9516
//FORKLIFT AND TASKS
ELIF eMissionStagePassed = MISSION_STAGE_5
vStageStart = <<-125.5439, -2421.8813, 5.0005>>
fstartheading = 49.0800
//FOLLOW floyd TO THE CRANE
ELIF eMissionStagePassed = MISSION_STAGE_6
vStageStart = <<-88.8838, -2451.5679, 5.0175>>
fstartheading = 317.2729
//CRANE SECTION
ELIF eMissionStagePassed = MISSION_STAGE_7
vStageStart = << -50.2985, -2403.9036, 5.0003 >>
fstartheading = 191.2160
//USE CAMERA
ELIF eMissionStagePassed = MISSION_STAGE_8
vStageStart = << -114.5969, -2406.8113, 22.2282 >>
fstartheading = 359.8527
//DRIVE TO OTHER DOCKS
ELIF eMissionStagePassed = MISSION_STAGE_10
vStageStart = <<-120.9023, -2411.2688, 5.0007>>
fstartheading = 195.5543
//DRIVE TO OTHER DOCKS
ELIF eMissionStagePassed = MISSION_STAGE_11
vStageStart = <<-120.9023, -2411.2688, 5.0007>>
fstartheading = 195.5543
ENDIF
IF IS_SCREEN_FADED_OUT()
//LOAD_SCENE(vStageStart)
CLEAR_PED_TASKS(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_WETNESS(PLAYER_PED_ID())
ENDIF
WARP_PLAYER(vStageStart, fstartheading)
ENDIF
ENDPROC
// ======================================================================
// Init Arrays
// ======================================================================
//PURPOSE: defines up the individual ped details
PROC INITALISE_ARRAYS() // defines up the individual ped details
s_crane.v_cabin_attach_offset = <<0.0, 0.0, 18.000>>
//Guards
//Patrols
//Merc 0
vMercStart[0] = <<-104.07, -2374.69, 8.3191>>
fMercStart[0] = 93.83
vMercPatrol[0][0] = <<-104.07, -2374.69, 8.3191>>
vMercPatrol[0][1] = <<-147.40, -2378.30, 8.3191>>
vMercPatrol[0][2] = <<-104.07, -2374.69, 8.3191>>
vMercPatrol[0][3] = <<-147.40, -2378.30, 8.3191>>
//Merc 1
vMercStart[1] = <<-212.2350, -2377.4456, 16.3326>>
fMercStart[1] = 94.3986
vMercPatrol[1][0] = <<-212.2350, -2377.4456, 16.3326>>
vMercPatrol[1][1] = <<-231.7264, -2377.5935, 16.3319>>
vMercPatrol[1][2] = <<-232.1804, -2374.6602, 16.3308>>
vMercPatrol[1][3] = <<-231.7264, -2377.5935, 16.3319>>
//Merc 2
vMercStart[2] = <<-248.9245, -2376.2087, 8.3191>>
fMercStart[2] = 274.0258
vMercPatrol[2][0] = <<-248.9245, -2376.2087, 8.3191>>
vMercPatrol[2][1] = <<-209.7266, -2378.2537, 8.3191>>
vMercPatrol[2][2] = <<-186.3949, -2377.6677, 8.3191>>
vMercPatrol[2][3] = <<-163.5379, -2378.0491, 8.3191>>
//Merc 3
vMercStart[3] = << -123.4885, -2352.8262, 8.3191 >>
fMercStart[3] = 3.7757
vMercPatrol[3][0] = << -151.3500, -2408.0063, 5.0005 >>
vMercPatrol[3][1] = << -102.0827, -2408.0342, 5.0005 >>
vMercPatrol[3][2] = << -102.2400, -2423.9700, 5.0005 >>
vMercPatrol[3][3] = << -61.0789, -2423.8125, 5.0012 >>
//at other docks
vMercStart[4] = <<483.60, -3119.91, 5.0696>>
fMercStart[4] = -11.93
vMercStart[5] = <<484.6697, -3110.7073, 5.2948>>
fMercStart[5] = 1.5744
vMercStart[6] = <<482.53, -3119.30, 6.07>>
fMercStart[6] = 44.12
//On boat
vMercStart[7] = <<-124.56, -2371.68, 9.32>>
fMercStart[7] = -75.45
vMercStart[8] = <<482.53, -3119.30, 6.07>>
fMercStart[8] = 44.12
//Dock Workers
//in office - 0
vDockWorkerStart[0] = << -151.3500, -2408.0063, 5.0005 >>
fDockWorkerStart[0] = 268.7411
vDockPatrol[0][0] = << -151.3500, -2408.0063, 5.0005 >>
vDockPatrol[0][1] = << -102.0827, -2408.0342, 5.0005 >>
vDockPatrol[0][2] = << -102.2400, -2423.9700, 5.0005 >>
vDockPatrol[0][3] = << -61.0789, -2423.8125, 5.0012 >>
//patrolling round
vDockWorkerStart[1] = << -43.6959, -2520.3784, 6.3988 >>
fDockWorkerStart[1] = 321.2447
//patrol length of dock
vDockWorkerStart[2] = << -176.3674, -2408.1582, 5.0007 >>
fDockWorkerStart[2] = 271.7324
//Sweeping up crap by the tanker
vDockWorkerStart[3] = << -62.19, -2539.51, 6.01 >>
fDockWorkerStart[3] = -157.31
//Guys chatting by crates lean
vDockWorkerStart[4] = << -56.7946, -2448.8533, 6.2398 >>
fDockWorkerStart[4] = 66.4825
//Guys chatting by crates stood talking
vDockWorkerStart[5] = << 14.2126, -2507.8977, 5.0067 >>
fDockWorkerStart[5] = 102.599983
//Welding guy
vDockWorkerStart[6] = << -121.86, -2451.69, 5.02 >>
fDockWorkerStart[6] = -5.80
//Behind Truck - SUPERVISOR 2
vDockWorkerStart[7] = << -133.5132, -2450.7058, 5.0167 >>
fDockWorkerStart[7] = 321.2153
//On phone by doorway
vDockWorkerStart[8] = << -104.7430, -2496.9646, 5.0058 >>
fDockWorkerStart[8] = 319.1118
//Dealing with fuse box
vDockWorkerStart[9] = << -124.0598, -2479.0505, 5.0196 >>
fDockWorkerStart[9] = 329.9548
//Circle crates 2 - PATROL
vDockWorkerStart[10] = << -72.4153, -2485.4336, 5.0334 >>
fDockWorkerStart[10] = 52.6711
vDockPatrol[10][0] = << -72.4153, -2485.4336, 5.0334 >>
vDockPatrol[10][1] = << -96.9927, -2468.2859, 5.0208 >>
vDockPatrol[10][2] = << -88.6509, -2456.4009, 5.0196 >>
vDockPatrol[10][3] = << -135.2554, -2449.3057, 5.0170 >>
//To Drive Truck
vDockWorkerStart[11] = << -115.3376, -2517.0283, 5.0005 >>
fDockWorkerStart[11] = 245.6216
//To Drive Forklift
vDockWorkerStart[12] = << -106.1724, -2464.8291, 5.0208 >>
fDockWorkerStart[12] = 125.7997
//By crates - angry
vDockWorkerStart[13] = << -98.68, -2467.15, 6.02 >>
fDockWorkerStart[13] = -7.74
//By crates - starts by office
vDockWorkerStart[14] = <<-67.21, -2437.73, 7.25 >>
fDockWorkerStart[14] = 81.13
//At other docks
vDockWorkerStart[15] = << 481.98, -3052.50, 6.23 >>
fDockWorkerStart[15] = -0.95
vDockWorkerStart[16] = << 489.35, -3050.57, 6.12 >>
fDockWorkerStart[16] = 346.3188
//to drive biffs at start of docks
vDockWorkerStart[17] = << 488.6217, -3050.3328, 5.1097 >>
fDockWorkerStart[17] = 2.1321
vDockWorkerStart[18] = << 479.67, -3049.37, 5.1097 >>
fDockWorkerStart[18] = 2.1321
//inside hut SUPERVISOR 1
vDockWorkerStart[19] = << -227.7128, -2426.8201, 5.1497 >>
fDockWorkerStart[19] = 327.6013
//MILITARY DOCKS - by final vehilce
vDockWorkerStart[20] = << 463.81, -3040.37, 6.07 >>
fDockWorkerStart[20] = 327.6013
//MILITARY DOCKS - By Blocking vehicle
vDockWorkerStart[21] = << 493.09, -3047.20, 6.11 >>
fDockWorkerStart[21] = 135.22
//BIFF to be driven
vDockVeh[0]= << -104.8244, -2513.3738, 4.5183 >>
fDockVeh[0]= 56.5885
//FORKLIFT to be driven
vDockVeh[1]= << -104.7854, -2465.9553, 5.0208 >>
fDockVeh[1]= 235.9101
//UPON ENTERING THE DOCKS AMBIENT STUFF - BIFF 1
vDockVeh[2] = << -69.5243, -2505.9260, 5.0075 >>
fDockVeh[2] = 324.8585
//UPON ENTERING THE DOCKS AMBIENT STUFF - BIFF 2
vDockVeh[3] = << -39.1900, -2449.1589, 5.0043 >>
fDockVeh[3] = 144.4548
/*
____ ___ _ _ _ __ ___ _ _ _ _ __ ___ __ __ __ ___ _ _ ___ __ _ ___ _
/ _\ V / \| | U |/ _| o \/ \| \| | / _| __| \ / _|/ _| __| \| | __| | \ / \_ _/ \
\_ \\ /| \\ | ( (_| ( o ) \\ | \_ \ _|| o ) \_ ( (_| _|| \\ | _| | o ) o | | o |
|__/|_||_|\_|_n_|\__|_|\\\_/|_|\_|_|__/___|__/ |__/\__|___|_|\_|___| |__/|_n_|_|_n_|*/
//BLACKWATER GUYS WITH DOCKWORKER
s_sp_blackwater_with_dockworker[0].model = S_M_M_DOCKWORK_01
s_sp_blackwater_with_dockworker[1].model = S_M_Y_BlackOps_01
s_sp_blackwater_with_dockworker[2].model = S_M_Y_BlackOps_01
//Fill these
s_sp_blackwater_with_dockworker[0].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_blackwater_with_dockworker[0].f_start_heading = 0.0
s_sp_blackwater_with_dockworker[1].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_blackwater_with_dockworker[1].f_start_heading = 0.0
s_sp_blackwater_with_dockworker[2].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_blackwater_with_dockworker[2].f_start_heading = 0.0
//SUPERVISOR IN HUT
s_sp_supervisor1[0].model = S_M_M_DOCKWORK_01
s_sp_supervisor1[0].v_spawn_position = << -62.2290, -2518.5679, 6.4002 >>
s_sp_supervisor1[0].f_start_heading = 143.9633
//GUY WHO TELLS YOU TO USE FORKLIFT
s_sp_forklift_supervisorA[0].model = S_M_M_DOCKWORK_01
s_sp_forklift_supervisorA[0].v_spawn_position = <<-122.25, -2419.58, 6.00>>
s_sp_forklift_supervisorA[0].f_start_heading = 179.2108
//GUY WHO TELLS YOU TO PICK UP CRATE
s_sp_forklift_supervisorB[0].model = S_M_M_DOCKWORK_01
s_sp_forklift_supervisorB[0].v_spawn_position = << -96.7150, -2455.2817, 5.0189 >>
s_sp_forklift_supervisorB[0].f_start_heading = 225.5408
//DOCK WORKERS TALKING
//IG 5 Dockworker 2
s_sp_dock_workers_talking[0].model = S_M_M_DOCKWORK_01
s_sp_dock_workers_talking[0].v_spawn_position = <<-110.41, -2481.24, 6.02>>
s_sp_dock_workers_talking[0].f_start_heading= -109.52
//IG 5 Dockworker 1
s_sp_dock_workers_talking[1].model = S_M_M_DOCKWORK_01
s_sp_dock_workers_talking[1].v_spawn_position = << -108.83, -2482.12, 6.02 >>
s_sp_dock_workers_talking[1].f_start_heading= -88.92
//GANTRY CRANE GUYS SETPIECE
s_sp_gantry_guys_dynamic[0].model = S_M_M_DOCKWORK_01
s_sp_gantry_guys_dynamic[1].model = S_M_M_DOCKWORK_01
s_sp_gantry_guys_dynamic[2].model = S_M_M_DOCKWORK_01
s_sp_gantry_guys_dynamic[3].model = S_M_M_DOCKWORK_01
s_sp_gantry_guys_dynamic[0].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_gantry_guys_dynamic[1].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_gantry_guys_dynamic[2].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_gantry_guys_dynamic[3].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_gantry_guys_dynamic[0].f_start_heading = 143.9633
s_sp_gantry_guys_dynamic[1].f_start_heading = 143.9633
s_sp_gantry_guys_dynamic[2].f_start_heading = 143.9633
s_sp_gantry_guys_dynamic[3].f_start_heading = 143.9633
//GANTRY CRANE GUYS AT THE FRONT
s_sp_gantry_guys_static[0].model = S_M_M_DOCKWORK_01
s_sp_gantry_guys_static[1].model = S_M_M_DOCKWORK_01
s_sp_gantry_guys_static[0].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_gantry_guys_static[1].v_spawn_position = << -69.5243, -2505.9260, 5.0075 >>
s_sp_gantry_guys_static[0].f_start_heading = 143.9633
s_sp_gantry_guys_static[1].f_start_heading = 143.9633
//WELDER
s_sp_welder[0].model = S_M_M_DOCKWORK_01
s_sp_welder[0].v_spawn_position = << -107.9554, -2465.7800, 7.8185 >>
s_sp_welder[0].f_start_heading = 331.6483
//GUYS AROUND CAR
s_sp_guys_around_car[0].model = S_M_M_DOCKWORK_01
s_sp_guys_around_car[1].model = S_M_M_DOCKWORK_01
s_sp_guys_around_car[2].model = S_M_M_DOCKWORK_01
s_sp_guys_around_car[3].model = S_M_M_DOCKWORK_01
s_sp_guys_around_car[4].model = S_M_M_DOCKWORK_01
s_sv_car_to_admire[0].model = BUFFALO
s_sv_car_to_admire[0].v_spawn_position = << -109.5377, -2519.4890, 5.0000 >>
s_sv_car_to_admire[0].f_start_heading = 51.6828
s_sp_guys_around_car[0].v_spawn_position = << -105.6039, -2520.6841, 5.0000 >>
s_sp_guys_around_car[0].f_start_heading =10
s_sp_guys_around_car[1].v_spawn_position = << -107.4489, -2523.3547, 5.0000 >>
s_sp_guys_around_car[1].f_start_heading = 22
s_sp_guys_around_car[2].v_spawn_position = << -111.8440, -2520.2720, 5.0000 >>
s_sp_guys_around_car[2].f_start_heading = 55
s_sp_guys_around_car[3].v_spawn_position = << -110.1655, -2516.7170, 5.0000 >>
s_sp_guys_around_car[3].f_start_heading = 43
s_sp_guys_around_car[4].v_spawn_position = << -114.7683, -2516.2803, 5.0999 >>
s_sp_guys_around_car[4].f_start_heading =84
//DOCKWORKERS WORKING ON PIPE
s_sp_dock_workers_on_pipe[0].model = S_M_M_DOCKWORK_01
s_sp_dock_workers_on_pipe[1].model = S_M_M_DOCKWORK_01
s_sp_dock_workers_on_pipe[2].model = S_M_M_DOCKWORK_01
s_sp_dock_workers_on_pipe[0].v_spawn_position = << -77.0331, -2527.0872, 5.0101 >>
s_sp_dock_workers_on_pipe[1].v_spawn_position = << -75.1044, -2529.4731, 5.0101 >>
s_sp_dock_workers_on_pipe[2].v_spawn_position = << -73.6988, -2529.5952, 5.0101 >>
s_sp_dock_workers_on_pipe[0].f_start_heading = 20
s_sp_dock_workers_on_pipe[1].f_start_heading = 60
s_sp_dock_workers_on_pipe[2].f_start_heading = 266
//FLOYD GRABS PACKAGE
s_sp_floyd_grabs_package[0].model = S_M_M_DOCKWORK_01
s_sp_floyd_grabs_package[1].model = S_M_M_DOCKWORK_01
s_sp_floyd_grabs_package[2].model = S_M_M_DOCKWORK_01
//PIPE GUYS
s_sp_dock_workers_on_pipe[0].v_ss_pos = << -68.320, -2531.518, 5.060 >> //<<-62.118767,-2519.220947,7.414408>>
s_sp_dock_workers_on_pipe[0].f_ss_rot = 3.640 //-170.750000
s_sp_dock_workers_on_pipe[1].v_ss_pos = << -68.320, -2531.518, 5.060 >>
s_sp_dock_workers_on_pipe[1].f_ss_rot = 3.640
s_sp_dock_workers_on_pipe[2].v_ss_pos = << -68.320, -2531.518, 5.060 >>
s_sp_dock_workers_on_pipe[2].f_ss_rot = 3.640
//GANTRY
s_sp_gantry_guys_dynamic[0].v_ss_pos = <<-115.7235, -2477.5984, 22.2266>>
s_sp_gantry_guys_dynamic[1].v_ss_pos = <<-117.2564, -2479.7366, 22.2266>>
s_sp_gantry_guys_dynamic[2].v_ss_pos = <<-114.1917, -2475.4312, 22.2266>>
s_sp_gantry_guys_dynamic[3].v_ss_pos = <<-117.7939, -2480.5886, 22.2266>>
//SCENE DATA
s_sd_arrive_at_docks.v_scene_pos = << -60.173, -2525.329, 4.925 >>
s_sd_arrive_at_docks.v_scene_rot = << 0.000, 0.000, 59.250 >>
s_sd_floyd_grabs_package.v_scene_pos = << -88.341, -2502.575, 5.011 >>
s_sd_floyd_grabs_package.v_scene_rot = << 0.000, -0.000, -32.844 >>
s_sd_dock_workers_on_pipe.v_scene_pos = << -68.929, -2530.365, 5.126 >>
s_sd_dock_workers_on_pipe.v_scene_rot = << 0.000, 0.000, 46.000 >>
s_sd_blackwater_with_dockworker.v_scene_pos = << -110.715, -2429.089, 5.001 >>
s_sd_blackwater_with_dockworker.v_scene_rot = << 0.000, 0.000, 91.000 >>
s_sd_forklift_supervisor_a.v_scene_pos = << -131.496, -2423.041, 5.000 >>
s_sd_floyd_grabs_package.v_scene_rot = << 0.000, 0.000, 63.720 >>
s_sd_gantry_guys_dynamic.v_scene_pos = << -116.113, -2475.791, 22.206 >>
s_sd_gantry_guys_dynamic.v_scene_rot = << 0.000, 0.000, 145.520 >>
s_sd_gantry_guys_static.v_scene_pos = << -29.053, -2481.937, 22.205 >>
s_sd_gantry_guys_static.v_scene_rot = << 0.000, 0.000, 147.280 >>
s_sd_welder.v_scene_pos = << -108.066, -2464.675, 5.020 >>
s_sd_welder.v_scene_rot = << 0.000, 0.000, 55.000 >>
//ARRIVE SETUP
s_sp_supervisor1[0].v_ss_pos = <<-62.118767,-2519.220947,7.414408>>
s_sp_supervisor1[0].f_ss_rot = -170.750000
v_ss_floyd[SS_FLOYD_GRABS_PACKAGE] = <<-76.45, -2508.30, 6.01>>
f_ss_floyd[SS_FLOYD_GRABS_PACKAGE] = -38.15
//for the skip menu
#IF IS_DEBUG_BUILD
SkipMenuStruct[0].sTxtLabel = "Initial Mission"
SkipMenuStruct[0].bSelectable = FALSE
SkipMenuStruct[1].sTxtLabel = "Opening Mocap"
SkipMenuStruct[2].sTxtLabel = "Drive to docks | LSDH_INT"
SkipMenuStruct[3].sTxtLabel = "Park up and check in"
SkipMenuStruct[4].sTxtLabel = "Follow Floyd around the docks"
SkipMenuStruct[5].sTxtLabel = "Handler Task"
SkipMenuStruct[6].sTxtLabel = "Follow Floyd to the crane"
SkipMenuStruct[7].sTxtLabel = "Use the crane | LSDHS_MCS_1"
SkipMenuStruct[8].sTxtLabel = "Take photos of the boat"
SkipMenuStruct[9].sTxtLabel = "Drive to the Docks | LSDHS_MCS_2"
SkipMenuStruct[10].sTxtLabel = "Return to Floyd's apartment"
#ENDIF
ENDPROC
// ======================================================================
// Tech Procs
// ======================================================================
// Misc Speech Functions
//PURPOSE: Checks to see if text of speech has been triggered
PROC DISABLE_COMBAT_CONTROLS_THIS_FRAME()
WEAPON_TYPE playerWeap
IF NOT GET_CURRENT_PED_VEHICLE_WEAPON(PLAYER_PED_ID(),playerWeap)
IF GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), playerWeap)
IF eMissionStage != MISSION_STAGE_8
IF playerWeap != WEAPONTYPE_UNARMED
AND NOT IS_PHONE_ONSCREEN()
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_NEXT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_PREV_WEAPON)
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_AIM)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_RELOAD)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_HEAVY)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_LIGHT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_LR)
//DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_NEXT)
//DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_PREV)
//DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_UD)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
ENDPROC
//PURPOSE: Displays the text at the correct location
PROC MANAGE_HELP_TEXT_UPDATE()
//Help Text
IF entHelpText != NULL
IF DOES_ENTITY_EXIST(entHelpText)
IF NOT IS_ENTITY_DEAD(entHelpText)
IF IS_ENTITY_A_PED(entHelpText)
vHelpText = GET_PED_BONE_COORDS(GET_PED_INDEX_FROM_ENTITY_INDEX(entHelpText), BONETAG_ROOT, <<0.0, 0.0, 0.0>>) + <<0.0, 0.0, 1.0>>
ELIF IS_ENTITY_A_VEHICLE(entHelpText)
vHelpText = GET_ENTITY_COORDS(entHelpText) + <<0.0, 0.0, 1.0>>
ELSE
vHelpText = GET_ENTITY_COORDS(entHelpText) + <<0.0, 0.0, 1.0>>
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_STRING_NULL(sHelpText)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(sHelpText)
IF NOT ARE_VECTORS_EQUAL(vHelpText, <<0.0, 0.0, 0.0>>)
IF vHelpText.Z != 0.0
SET_HELP_MESSAGE_WORLD_POSITION(vHelpText)
ELSE
SET_HELP_MESSAGE_SCREEN_POSITION(vHelpText.X, vHelpText.Y)
ENDIF
SET_HELP_MESSAGE_STYLE(HELP_MESSAGE_STYLE_TAGGABLE, HUD_COLOUR_NET_PLAYER15, 80, eArrowDirection)
ENDIF
IF GET_GAME_TIMER() > iHelpDuration
AND iHelpDuration <> -1
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
/// PURPOSE:
/// Plays a single line of dialogue, this is used for placeholder dialogue only so that the timings can be tweaked in script prior to the real dialogue being ready.
/// PARAMS:
/// s_text_block - The label for the entire block of text
/// s_dialogue_block - The label for the block of dialogue that contains the particular line
/// s_dialogue_line - The label for the particular line
/// i_duration - The length of time that this line should play for.
/// RETURNS:
/// Bool indicating whether playback was successful.
FUNC BOOL PLAY_PLACEHOLDER_DIALOGUE_LINE(STRING s_text_block, STRING s_dialogue_block, STRING s_dialogue_line, INT i_duration, BOOL b_only_play_once = TRUE)
IF PLAY_SINGLE_LINE_FROM_CONVERSATION(s_conversation_peds, s_text_block, s_dialogue_block, s_dialogue_line, CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED(s_dialogue_line, b_only_play_once)
i_placeholder_dialogue_timer = GET_GAME_TIMER()
i_current_dialogue_duration = i_duration
RETURN TRUE
ELSE
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() //In case this overlaps another line
ENDIF
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// Kills any current placeholder dialogue playing when it's played for a long enough time
PROC MANAGE_PLACEHOLDER_DIALOGUE()
IF i_placeholder_dialogue_timer != 0
IF GET_GAME_TIMER() - i_placeholder_dialogue_timer > i_current_dialogue_duration
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
i_placeholder_dialogue_timer = 0
ENDIF
ENDIF
ENDPROC
/// PURPOSE:
/// Stops any placeholder dialogue immediately
PROC FORCE_RESET_PLACEHOLDER_DIALOGUE()
KILL_FACE_TO_FACE_CONVERSATION()
i_placeholder_dialogue_timer = 0
i_current_dialogue_duration = 0
ENDPROC
//
// Controls
//
PROC CONVERGE_VALUE_WITH_DECEL(FLOAT &val, FLOAT desired_val, FLOAT max_val, FLOAT min_amount_to_converge, FLOAT max_amount_to_converge, FLOAT decel_range = 1.0)
IF val != desired_val
FLOAT val_diff = ABSF(val - desired_val) / max_val
FLOAT new_converge_value = max_amount_to_converge
IF val_diff < decel_range
new_converge_value = (val_diff / decel_range) * max_amount_to_converge
ENDIF
IF new_converge_value < min_amount_to_converge
new_converge_value = min_amount_to_converge
ENDIF
CONVERGE_VALUE(val, desired_val, new_converge_value)
ENDIF
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)
SET_ENTITY_HEADING(pedIndex, fHeading)
ELSE
SET_ENTITY_COORDS(pedIndex,vCoords,TRUE)
ENDIF
ENDPROC
FUNC BOOL SAFE_DEATH_CHECK_PED(PED_INDEX &pedIndex)
IF DOES_ENTITY_EXIST(pedIndex)
IF IS_ENTITY_DEAD(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)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC SAFE_ADD_BLIP_LOCATION(BLIP_INDEX &blipIndex, VECTOR vCoords, BOOL bRoute = FALSE)
IF NOT DOES_BLIP_EXIST(blipIndex)
blipIndex = ADD_BLIP_FOR_COORD(vCoords)
SET_BLIP_ROUTE(blipIndex, bRoute)
ENDIF
ENDPROC
PROC SAFE_ADD_BLIP_PED(BLIP_INDEX &blipIndex, PED_INDEX &pedIndex, BOOL bFriendly = FALSE)
IF NOT DOES_BLIP_EXIST(blipIndex)
IF DOES_ENTITY_EXIST(pedIndex)
IF NOT IS_ENTITY_DEAD(pedIndex)
blipIndex = CREATE_BLIP_FOR_ENTITY(pedIndex, NOT bFriendly)
ENDIF
ENDIF
ENDIF
ENDPROC
PROC SAFE_ADD_BLIP_VEHICLE(BLIP_INDEX &blipIndex, VEHICLE_INDEX &vehIndex, BOOL bFriendly = FALSE)
IF NOT DOES_BLIP_EXIST(blipIndex)
IF DOES_ENTITY_EXIST(vehIndex)
IF NOT IS_ENTITY_DEAD(vehIndex)
blipIndex = ADD_BLIP_FOR_ENTITY(vehIndex)
SET_BLIP_AS_FRIENDLY(blipIndex, bFriendly)
ENDIF
ENDIF
ENDIF
ENDPROC
PROC SAFE_REMOVE_BLIP(BLIP_INDEX &blipIndex)
IF DOES_BLIP_EXIST(blipIndex)
REMOVE_BLIP(blipIndex)
ENDIF
ENDPROC
PROC SPAWN_PED(PED_INDEX &pedIndex, MODEL_NAMES eThisModel, VECTOR vStart, FLOAT fStart = 0.0, BOOL bDefault = TRUE)
REQUEST_MODEL(eThisModel)
WHILE NOT HAS_MODEL_LOADED(eThisModel)
WAIT (0)
ENDWHILE
IF NOT DOES_ENTITY_EXIST(pedIndex)
pedIndex = CREATE_PED(PEDTYPE_MISSION, eThisModel, vStart, fStart)
IF bDefault = TRUE
SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex)
ENDIF
ENDIF
ENDPROC
PROC SPAWN_BUDDY(PED_INDEX &pedIndex, MODEL_NAMES eThisModel, VECTOR vStart, FLOAT fStart = 0.0, BOOL bDefault = TRUE, WEAPON_TYPE WpnIndex = WEAPONTYPE_UNARMED, BOOL bPassenger = TRUE,STRING sDialogue = NULL,INT iSpeaker = 0)
REQUEST_MODEL(eThisModel)
IF HAS_MODEL_LOADED(eThisModel)
IF NOT DOES_ENTITY_EXIST(pedIndex)
pedIndex = CREATE_PED(PEDTYPE_MISSION, eThisModel, vStart, fStart)
ENDIF
IF NOT IS_PED_INJURED(pedIndex)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedIndex, TRUE)
GIVE_WEAPON_TO_PED(pedIndex, WpnIndex, 800, TRUE)
SET_PED_CAN_BE_TARGETTED(pedIndex, FALSE)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedIndex, FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedIndex ,rel_group_buddies)
SET_ENTITY_PROOFS(pedIndex, FALSE, FALSE, FALSE, FALSE, FALSE)
//SET_PED_SUFFERS_CRITICAL_HITS(pedIndex ,FALSE)
SET_ENTITY_HEALTH(pedIndex,200)
IF bPassenger = TRUE
//SET_PED_GROUP_MEMBER_PASSENGER_INDEX(pedIndex, VS_FRONT_RIGHT)
ELSE
//SET_PED_AS_GROUP_MEMBER(pedIndex, PLAYER_GROUP_ID())
ENDIF
SET_PED_AS_ENEMY(pedIndex , FALSE)
SET_ENTITY_AS_MISSION_ENTITY(pedIndex)
SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex)
IF bDefault = TRUE
SET_PED_DEFAULT_COMPONENT_VARIATION(pedIndex)
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(sDialogue)
ADD_PED_FOR_DIALOGUE(sSpeech,iSpeaker,pedIndex,sDialogue)
ENDIF
ENDIF
ENDIF
ENDPROC
PROC SPAWN_VEHICLE(VEHICLE_INDEX &vehIndex, MODEL_NAMES eThisModel, VECTOR vStart, FLOAT fStart = 0.0, INT iColour = -1, FLOAT fDirt = 0.0,BOOL bConsidered = TRUE)
REQUEST_MODEL(eThisModel)
WHILE NOT HAS_MODEL_LOADED(eThisModel)
WAIT (0)
ENDWHILE
IF NOT DOES_ENTITY_EXIST(vehIndex)
vehIndex = CREATE_VEHICLE(eThisModel, vStart, fStart)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehIndex,TRUE)
ELSE
IF IS_VEHICLE_DRIVEABLE(vehIndex)
IF iColour >= 0
SET_VEHICLE_COLOURS(vehIndex, iColour, iColour)
ENDIF
IF fDirt >= 0
SET_VEHICLE_DIRT_LEVEL(vehIndex, fDirt)
ENDIF
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehIndex,bConsidered)
ENDIF
ENDIF
ENDPROC
PROC SPAWN_OBJECT(OBJECT_INDEX &objIndex, MODEL_NAMES eThisModel, VECTOR vStart, FLOAT fStart = 0.0,BOOL bNetworkObject = TRUE, BOOL bScriptHostObject = TRUE)
IF NOT DOES_ENTITY_EXIST(objIndex)
objIndex = CREATE_OBJECT(eThisModel, vStart, bNetworkObject, bScriptHostObject)
SET_ENTITY_HEADING(objIndex,fStart)
ENDIF
ENDPROC
FUNC PED_INDEX CREATE_SETPIECE_PED(MODEL_NAMES model, VECTOR v_pos, FLOAT f_heading, REL_GROUP_HASH group,
INT i_health = 200, INT i_armour = 0, WEAPON_TYPE weapon = WEAPONTYPE_UNARMED, PED_TYPE e_ped_type = PEDTYPE_MISSION)
IF IS_VECTOR_ZERO(v_pos)
PRINTSTRING("VECTOR IS ZERO")PRINTNL()
ENDIF
PED_INDEX ped = CREATE_PED(e_ped_type, model, v_pos, f_heading)
GIVE_WEAPON_TO_PED(ped, weapon, INFINITE_AMMO, TRUE)
SET_PED_INFINITE_AMMO(ped, TRUE, weapon)
SET_PED_MAX_HEALTH(ped, i_health)
SET_ENTITY_HEALTH(ped, i_health)
ADD_ARMOUR_TO_PED(ped, i_armour)
SET_PED_DIES_WHEN_INJURED(ped, TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(ped, group)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(ped,TRUE)
RETURN ped
ENDFUNC
FUNC VEHICLE_INDEX CREATE_SETPIECE_VEHICLE(MODEL_NAMES model, VECTOR v_pos, FLOAT f_heading)
VEHICLE_INDEX veh = CREATE_VEHICLE(model,v_pos,f_heading)
RETURN veh
ENDFUNC
PROC CLEAN_UP_SETPIECE_VEHILCE(SETPIECE_VEHICLE &s_setpiece, BOOL b_reset_variables = FALSE, BOOL bFullClean = FALSE)
IF bFullClean
DELETE_VEHICLE(s_setpiece.veh)
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(s_setpiece.veh)
ENDIF
IF b_reset_variables
s_setpiece.b_is_created = FALSE
IF s_setpiece.i_event != 0
s_setpiece.i_event = 0
ENDIF
ENDIF
ENDPROC
PROC INITIALISE_SETPIECE_GROUP(SETPIECE_PED &s_setpiece[], STRING name)
INT i = 0
REPEAT COUNT_OF(s_setpiece) i
IF NOT IS_PED_INJURED(s_setpiece[i].ped)
//TASK_STAND_STILL(s_setpiece[i].ped, -1)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(s_setpiece[i].ped, TRUE)
IF NOT s_setpiece[i].b_is_created = TRUE
s_setpiece[i].b_is_created = TRUE
ENDIF
s_setpiece[i].i_event = 0
IF s_setpiece[i].i_timer !=0
s_setpiece[i].i_timer = 0
ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL_31 debug_name = name
debug_name += i
SET_PED_NAME_DEBUG(s_setpiece[i].ped, debug_name)
#ENDIF
#IF NOT IS_DEBUG_BUILD
name = name // to prevent an Unreferenced variable error
#ENDIF
ENDIF
ENDREPEAT
ENDPROC
PROC CLEAN_UP_SETPIECE_PED(SETPIECE_PED &s_setpiece, BOOL b_reset_variables = FALSE, BOOL bFullClean = FALSE)
IF DOES_BLIP_EXIST(s_setpiece.blip)
REMOVE_BLIP(s_setpiece.blip)
ENDIF
IF DOES_ENTITY_EXIST(s_setpiece.ped)
IF NOT IS_PED_INJURED(s_setpiece.ped)
CLEAR_PED_TASKS(s_setpiece.ped)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_setpiece.ped,0,TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_setpiece.ped)
IF DOES_ENTITY_EXIST(s_setpiece.obj_prop)
DETACH_ENTITY(s_setpiece.obj_prop)
IF bFullClean
DELETE_OBJECT(s_setpiece.obj_prop)
ELSE
SET_OBJECT_AS_NO_LONGER_NEEDED(s_setpiece.obj_prop)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_setpiece.ped)
IF bFullClean
DELETE_PED(s_setpiece.ped)
ELSE
SET_PED_AS_NO_LONGER_NEEDED(s_setpiece.ped)
ENDIF
REMOVE_COVER_POINT(s_setpiece.cover)
ENDIF
IF b_reset_variables
s_setpiece.b_is_created = FALSE
s_setpiece.i_event = 0
s_setpiece.i_timer = 0
ENDIF
ENDPROC
PROC createMercenary(INT i, BOOL bPatrol)
SPAWN_PED(pedMerc[i], S_M_Y_BlackOps_01, vMercStart[i], fMercStart[i], FALSE)
IF NOT IS_PED_INJURED(pedMerc[i])
SET_PED_COMBAT_RANGE(pedMerc[i], CR_FAR)
SET_PED_COMBAT_MOVEMENT(pedMerc[i], CM_WILLADVANCE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedMerc[i] ,rel_group_buddies)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(pedMerc[i] ,TRUE)
GIVE_WEAPON_TO_PED(pedMerc[i], wtAdRifle, INFINITE_AMMO, TRUE)
IF bPatrol = TRUE
IF bMercPatrolCreated[i] = FALSE
TEXT_LABEL sPatrol = "miss_merc"
sPatrol +=i
IF NOT IS_VECTOR_ZERO(vMercPatrol[i][0])
DELETE_PATROL_ROUTE(sPatrol)
OPEN_PATROL_ROUTE(sPatrol)
IF NOT IS_VECTOR_ZERO(vMercPatrol[i][0])
ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND",vMercPatrol[i][0] , vMercPatrol[i][0] , GET_RANDOM_INT_IN_RANGE(500,1500))
ENDIF
IF NOT IS_VECTOR_ZERO(vMercPatrol[i][1])
ADD_PATROL_ROUTE_NODE(2, "WORLD_HUMAN_GUARD_STAND",vMercPatrol[i][1] , vMercPatrol[i][1] , GET_RANDOM_INT_IN_RANGE(1000,6000))
ENDIF
IF NOT IS_VECTOR_ZERO(vMercPatrol[i][2])
ADD_PATROL_ROUTE_NODE(3, "WORLD_HUMAN_GUARD_STAND",vMercPatrol[i][2] , vMercPatrol[i][2] , GET_RANDOM_INT_IN_RANGE(1000,6000))
ENDIF
IF NOT IS_VECTOR_ZERO(vMercPatrol[i][3])
ADD_PATROL_ROUTE_NODE(4, "WORLD_HUMAN_GUARD_STAND",vMercPatrol[i][3] , vMercPatrol[i][3] , GET_RANDOM_INT_IN_RANGE(1000,6000))
ENDIF
ADD_PATROL_ROUTE_LINK(1, 2)
ADD_PATROL_ROUTE_LINK(2, 3)
ADD_PATROL_ROUTE_LINK(3, 4)
ADD_PATROL_ROUTE_LINK(4, 1)
CLOSE_PATROL_ROUTE()
CREATE_PATROL_ROUTE()
IF NOT IS_PED_INJURED(pedMerc[i])
TASK_PATROL(pedMerc[i], sPatrol, PAS_CASUAL, TRUE)
ENDIF
ENDIF
bMercPatrolCreated[i] = TRUE
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL tDebugName = "Merc "
tDebugName += i
SET_PED_NAME_DEBUG(pedMerc[i], tDebugName)
#ENDIF
ENDIF
ENDPROC
PROC createDockWorker(INT i,BOOL bPatrol = TRUE)
IF NOT DOES_ENTITY_EXIST(pedDockWorker[i])
IF IS_VECTOR_ZERO(vDockWorkerStart[i])
PRINTSTRING("vDockWorkerStart:")PRINTINT(i)PRINTNL()
ENDIF
SPAWN_PED(pedDockWorker[i], S_M_M_DOCKWORK_01, vDockWorkerStart[i], fDockWorkerStart[i], FALSE)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(pedDockWorker[i],TRUE)
SET_PED_CONFIG_FLAG(pedDockWorker[i],PCF_UseKinematicModeWhenStationary,TRUE)
ELSE
IF NOT IS_PED_INJURED(pedDockWorker[i])
SET_PED_COMBAT_RANGE(pedDockWorker[i], CR_FAR)
SET_PED_COMBAT_MOVEMENT(pedDockWorker[i], CM_WILLRETREAT)
SET_PED_CONFIG_FLAG(pedDockWorker[i],PCF_CanBeAgitated,TRUE)
//Temp make these dudes friendly
SET_PED_RELATIONSHIP_GROUP_HASH(pedDockWorker[i] ,rel_group_buddies)
//ADD SIGNAL MAN
IF i = 7
IF NOT IS_PED_INJURED(pedDockWorker[14])
IF sSpeech.PedInfo[8].Index = NULL
ADD_PED_FOR_DIALOGUE(sSpeech, 8, pedDockWorker[14], "SIGNALMAN")
ENDIF
ENDIF
ENDIF
IF bPatrol = TRUE
IF bPatrolCreated[i] = FALSE
TEXT_LABEL sPatrol = "miss_dock"
sPatrol +=i
IF NOT IS_VECTOR_ZERO(vDockPatrol[i][0])
DELETE_PATROL_ROUTE(sPatrol)
OPEN_PATROL_ROUTE(sPatrol)
IF NOT IS_VECTOR_ZERO(vDockPatrol[i][0])
ADD_PATROL_ROUTE_NODE(1, "StandGuard",vDockPatrol[i][0] , vDockPatrol[i][0] , 1000)
ENDIF
IF NOT IS_VECTOR_ZERO(vDockPatrol[i][1])
ADD_PATROL_ROUTE_NODE(2, "StandGuard",vDockPatrol[i][1] , vDockPatrol[i][1] , 1000)
ENDIF
IF NOT IS_VECTOR_ZERO(vDockPatrol[i][2])
ADD_PATROL_ROUTE_NODE(3, "StandGuard",vDockPatrol[i][2] , vDockPatrol[i][2] , 1000)
ENDIF
IF NOT IS_VECTOR_ZERO(vDockPatrol[i][3])
ADD_PATROL_ROUTE_NODE(4, "StandGuard",vDockPatrol[i][3] , vDockPatrol[i][3] , 1000)
ENDIF
ADD_PATROL_ROUTE_LINK(1, 2)
ADD_PATROL_ROUTE_LINK(2, 3)
ADD_PATROL_ROUTE_LINK(3, 4)
ADD_PATROL_ROUTE_LINK(4, 1)
CLOSE_PATROL_ROUTE()
CREATE_PATROL_ROUTE()
IF NOT IS_PED_INJURED(pedDockWorker[i])
TASK_PATROL(pedDockWorker[i], sPatrol, PAS_CASUAL, TRUE)
ENDIF
ENDIF
bPatrolCreated[i] = TRUE
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
TEXT_LABEL tDebugName = "Dock Worker"
tDebugName += i
SET_PED_NAME_DEBUG(pedDockWorker[i], tDebugName)
#ENDIF
ENDIF
ENDIF
ENDPROC
PROC createDockWorkersNow()
INT i
REPEAT 3 i
createDockWorker(i)
ENDREPEAT
ENDPROC
PROC createMercenaries()
INT i
REPEAT 3 i
IF NOT DOES_ENTITY_EXIST(pedMerc[i])
createMercenary(i)
ENDIF
ENDREPEAT
//Patrols
IF NOT IS_PED_INJURED(pedMerc[0])
TASK_PATROL(pedMerc[0], "miss_merc0", PAS_CASUAL, TRUE)
ENDIF
IF NOT IS_PED_INJURED(pedMerc[1])
TASK_PATROL(pedMerc[1], "miss_merc1", PAS_CASUAL, TRUE)
ENDIF
IF NOT IS_PED_INJURED(pedMerc[2])
TASK_PATROL(pedMerc[2], "miss_merc2", PAS_CASUAL, TRUE)
ENDIF
ENDPROC
// PURPOSE: If player is in a bike/car, remove player control 'til the car is stopped
PROC STOP_PLAYER_CAR(BOOL bAndLeave = FALSE,INT iDelay = 0)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
FLOAT playerCarSpeed
VEHICLE_INDEX playerCar
playerCar = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
IF IS_VEHICLE_DRIVEABLE(playerCar)
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
playerCarSpeed = GET_ENTITY_SPEED(playerCar)
WHILE playerCarSpeed > 0.2
WAIT(0)
IF NOT IS_ENTITY_DEAD(playerCar)
playerCarSpeed = GET_ENTITY_SPEED(playerCar)
ENDIF
ENDWHILE
IF NOT bAndLeave
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
//FINISH
IF bAndLeave
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(),SCRIPT_TASK_LEAVE_ANY_VEHICLE)<> PERFORMING_TASK
TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID(),iDelay)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
ENDIF
ENDIF
ENDPROC
PROC SET_PED_FACING_PED(PED_INDEX pedLookAt, PED_INDEX pedToFace)
VECTOR v1, v2, v1v2
IF NOT IS_PED_INJURED(pedLookAt)
IF NOT IS_PED_INJURED(pedToFace)
v1 = GET_ENTITY_COORDS(pedLookAt)
v2 = GET_ENTITY_COORDS(pedToFace)
v1v2 = v2 - v1
SET_ENTITY_HEADING(pedLookAt, GET_HEADING_FROM_VECTOR_2D(v1v2.x, v1v2.y))
ENDIF
ENDIF
ENDPROC
PROC SET_PED_FACING_COORD(PED_INDEX pedLookAt, VECTOR vCoord)
VECTOR v1, v1v2
IF NOT IS_PED_INJURED(pedLookAt)
v1 = GET_ENTITY_COORDS(pedLookAt)
v1v2 = vCoord - v1
SET_ENTITY_HEADING(pedLookAt, GET_HEADING_FROM_VECTOR_2D(v1v2.x, v1v2.y))
ENDIF
ENDPROC
PROC REMOVE_OBJECT(OBJECT_INDEX &obj, BOOL b_force_delete = FALSE)
IF DOES_ENTITY_EXIST(obj)
IF IS_ENTITY_ATTACHED(obj)
DETACH_ENTITY(obj)
ENDIF
IF b_force_delete
DELETE_OBJECT(obj)
ELSE
SET_OBJECT_AS_NO_LONGER_NEEDED(obj)
ENDIF
ENDIF
ENDPROC
FUNC BOOL IS_THIS_SYNCHRONISED_SCENE_COMPLETE(SynchList eSynchStage)
IF bSSComplete[eSynchStage]
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC PED_INDEX CREATE_DUMMY_PED(MODEL_NAMES model, VECTOR v_pos, FLOAT f_heading, REL_GROUP_HASH group,
INT i_health = 2000, INT i_armour = 0,PED_TYPE e_ped_type = PEDTYPE_MISSION)
PED_INDEX ped = CREATE_PED(e_ped_type, model, v_pos, f_heading)
SET_PED_MAX_HEALTH(ped, i_health)
SET_ENTITY_HEALTH(ped, i_health)
ADD_ARMOUR_TO_PED(ped, i_armour)
SET_ENTITY_VISIBLE(ped,TRUE)
SET_ENTITY_INVINCIBLE(ped,TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(ped, group)
RETURN ped
ENDFUNC
FUNC BOOL IS_SCENE_DATA_READY(SCENE_DATA sThisScene)
IF sThisScene.b_data_generated
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDFUNC
PROC RESET_SCENE_DATA(SCENE_DATA sThisScene)
IF sThisScene.b_data_generated
sThisScene.b_data_generated = FALSE
ENDIF
ENDPROC
PROC GET_SCENE_DATA(SynchList eSynchStage)
////PRINTLN(s_sd_arrive_at_docks.b_data_generated)
SWITCH eSynchStage
CASE SS_ARRIVE_AT_DOCKS
IF NOT IS_SCENE_DATA_READY(s_sd_arrive_at_docks)
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
REQUEST_MODEL(S_M_M_DOCKWORK_01)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_2_p1@new_structure")
AND HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneArriveStartId)
ped_dummy[0] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[1] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[2] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
sceneDummy = CREATE_SYNCHRONIZED_SCENE(s_sd_arrive_at_docks.v_scene_pos, s_sd_arrive_at_docks.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (ped_dummy[0],sceneDummy, "missheistdockssetup1ig_2_p1@new_structure", "supervisor_exitdoor_startidle_supervisor", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE )
TASK_SYNCHRONIZED_SCENE (ped_dummy[1],sceneDummy, "missheistdockssetup1ig_2_p1@new_structure", "supervisor_exitdoor_startidle_wade", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (ped_dummy[2],sceneDummy, "missheistdockssetup1ig_2_p1@new_structure", "supervisor_exitdoor_startidle_floyd", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE,RBF_PLAYER_IMPACT )
ELSE
IF NOT IS_PED_INJURED(ped_dummy[0])
s_sp_supervisor1[0].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[0])
s_sp_supervisor1[0].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[0])
DELETE_PED(ped_dummy[0])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[1])
v_ss_wade[SS_ARRIVE_AT_DOCKS]= GET_ENTITY_COORDS(ped_dummy[1])
f_ss_wade[SS_ARRIVE_AT_DOCKS]= GET_ENTITY_HEADING(ped_dummy[1])
DELETE_PED(ped_dummy[1])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[2])
v_ss_floyd[SS_ARRIVE_AT_DOCKS]= GET_ENTITY_COORDS(ped_dummy[2])
f_ss_floyd[SS_ARRIVE_AT_DOCKS] = GET_ENTITY_HEADING(ped_dummy[2])
DELETE_PED(ped_dummy[2])
ENDIF
s_sd_arrive_at_docks.b_data_generated = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE Ss_dock_workers_on_pipe
IF NOT IS_SCENE_DATA_READY(s_sd_arrive_at_docks)
REQUEST_MODEL(S_M_M_DOCKWORK_01)
IF HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
//SCRIPT_ASSERT("1")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneDummy)
ped_dummy[0] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[1] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[2] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
sceneDummy = CREATE_SYNCHRONIZED_SCENE(s_sd_dock_workers_on_pipe.v_scene_pos, s_sd_dock_workers_on_pipe.v_scene_rot)
//SCRIPT_ASSERT("2")
ELSE
IF NOT IS_PED_INJURED(ped_dummy[0])
s_sp_dock_workers_on_pipe[0].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[0])
s_sp_dock_workers_on_pipe[0].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[0])
DELETE_PED(ped_dummy[0])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[1])
s_sp_dock_workers_on_pipe[1].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[1])
s_sp_dock_workers_on_pipe[1].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[1])
DELETE_PED(ped_dummy[1])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[2])
s_sp_dock_workers_on_pipe[2].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[2])
s_sp_dock_workers_on_pipe[2].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[2])
DELETE_PED(ped_dummy[2])
ENDIF
// SCRIPT_ASSERT("3")
s_sd_dock_workers_on_pipe.b_data_generated = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE SS_blackwater_with_dockworker
IF NOT IS_SCENE_DATA_READY(S_sd_blackwater_with_dockworker)
REQUEST_MODEL(S_M_M_DOCKWORK_01)
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneDummy)
ped_dummy[0] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[1] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[2] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
sceneDummy = CREATE_SYNCHRONIZED_SCENE(S_sd_blackwater_with_dockworker.v_scene_pos, S_sd_blackwater_with_dockworker.v_scene_rot)
ELSE
IF NOT IS_PED_INJURED(ped_dummy[0])
s_sp_blackwater_with_dockworker[0].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[0])
s_sp_blackwater_with_dockworker[0].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[0])
DELETE_PED(ped_dummy[0])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[1])
s_sp_blackwater_with_dockworker[1].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[1])
s_sp_blackwater_with_dockworker[1].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[1])
DELETE_PED(ped_dummy[1])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[2])
s_sp_blackwater_with_dockworker[2].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[2])
s_sp_blackwater_with_dockworker[2].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[2])
DELETE_PED(ped_dummy[2])
ENDIF
S_sd_blackwater_with_dockworker.b_data_generated = TRUE
ENDIF
ENDIF
BREAK
CASE SS_FLOYD_GRABS_PACKAGE
IF NOT IS_SCENE_DATA_READY(s_sd_floyd_grabs_package)
REQUEST_ANIM_DICT("missheistdockssetup1ig_4@start_idle")
REQUEST_MODEL(S_M_M_DOCKWORK_01)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_4@start_idle")
AND HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneDummy)
ped_dummy[0] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[1] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[2] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
ped_dummy[3] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
sceneDummy = CREATE_SYNCHRONIZED_SCENE(s_sd_floyd_grabs_package.v_scene_pos, s_sd_floyd_grabs_package.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (ped_dummy[0],sceneDummy, "missheistdockssetup1ig_4@start_idle", "FLOYD_FellPackage_StartIdle_DockWorker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE )
TASK_SYNCHRONIZED_SCENE (ped_dummy[1],sceneDummy, "missheistdockssetup1ig_4@start_idle", "FLOYD_FellPackage_StartIdle_DockWorker2", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE )
TASK_SYNCHRONIZED_SCENE (ped_dummy[2],sceneDummy, "missheistdockssetup1ig_4@start_idle", "FLOYD_FellPackage_StartIdle_DockWorker3", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE )
TASK_SYNCHRONIZED_SCENE (ped_dummy[3],sceneDummy, "missheistdockssetup1ig_4@start_idle", "FLOYD_FellPackage_StartIdle_Floyd", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE,RBF_PLAYER_IMPACT )
ELSE
IF NOT IS_PED_INJURED(ped_dummy[0])
s_sp_floyd_grabs_package[0].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[0])
s_sp_floyd_grabs_package[0].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[0])
DELETE_PED(ped_dummy[0])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[1])
s_sp_floyd_grabs_package[1].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[1])
s_sp_floyd_grabs_package[1].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[1])
DELETE_PED(ped_dummy[1])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[2])
s_sp_floyd_grabs_package[2].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[2])
s_sp_floyd_grabs_package[2].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[2])
DELETE_PED(ped_dummy[2])
ENDIF
IF NOT IS_PED_INJURED(ped_dummy[3])
v_ss_floyd[SS_FLOYD_GRABS_PACKAGE] = GET_ENTITY_COORDS(ped_dummy[3])
f_ss_floyd[SS_FLOYD_GRABS_PACKAGE] = GET_ENTITY_HEADING(ped_dummy[3])
DELETE_PED(ped_dummy[3])
ENDIF
s_sd_floyd_grabs_package.b_data_generated = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE SS_WELDER
IF NOT IS_SCENE_DATA_READY(s_sd_welder)
REQUEST_ANIM_DICT("missheistdockssetup1ig_3")
REQUEST_MODEL(S_M_M_DOCKWORK_01)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_3")
AND HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneDummy)
ped_dummy[0] = CREATE_DUMMY_PED(S_M_M_DOCKWORK_01,<< -81.7436, -2456.1165, 5.0189 >>, 87.3373, rel_group_buddies)
IF DOES_ENTITY_EXIST(ped_dummy[0])
IF NOT IS_PED_INJURED(ped_dummy[0])
sceneDummy = CREATE_SYNCHRONIZED_SCENE(s_sd_welder.v_scene_pos,s_sd_welder.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (ped_dummy[0], sceneDummy, "missheistdockssetup1ig_3", "welding_enter_dockworker", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE )
ENDIF
ENDIF
ELSE
IF NOT IS_PED_INJURED(ped_dummy[0])
s_sp_welder[0].v_ss_pos = GET_ENTITY_COORDS(ped_dummy[0])
s_sp_welder[0].f_ss_rot = GET_ENTITY_HEADING(ped_dummy[0])
DELETE_PED(ped_dummy[0])
ENDIF
s_sd_welder.b_data_generated = TRUE
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
FUNC BOOL SETUP_PEDS_FOR_DIALOGUE()
IF DOES_ENTITY_EXIST(pedSecurity)
IF NOT IS_PED_INJURED(pedSecurity)
IF sSpeech.PedInfo[1].Index = NULL
ADD_PED_FOR_DIALOGUE(sSpeech, 1, pedSecurity, "GATEGUARD")
ENDIF
ENDIF
ELSE
IF sSpeech.PedInfo[1].Index <> NULL
REMOVE_PED_FOR_DIALOGUE(sSpeech, 1)
ENDIF
ENDIF
ADD_PED_FOR_DIALOGUE(sSpeech, 2, PLAYER_PED_ID(), "TREVOR")
IF DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(pedFloyd)
//IF sSpeech.PedInfo[3].Index = NULL
IF sSpeech.PedInfo[3].ActiveInConversation = FALSE
ADD_PED_FOR_DIALOGUE(sSpeech, 3, pedFloyd, "FLOYD")
ENDIF
ENDIF
ELSE
//IF sSpeech.PedInfo[3].Index <> NULL
IF sSpeech.PedInfo[3].ActiveInConversation = TRUE
REMOVE_PED_FOR_DIALOGUE(sSpeech, 3)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
IF sSpeech.PedInfo[4].Index = NULL
ADD_PED_FOR_DIALOGUE(sSpeech, 4, pedWade, "WADE")
ENDIF
ENDIF
ELSE
IF sSpeech.PedInfo[4].Index <> NULL
REMOVE_PED_FOR_DIALOGUE(sSpeech, 4)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_sp_supervisor1[0].ped)
IF NOT IS_PED_INJURED(s_sp_supervisor1[0].ped)
ADD_PED_FOR_DIALOGUE(sSpeech, 6, s_sp_supervisor1[0].ped, "SUPERVISOR1")
ENDIF
ELSE
IF sSpeech.PedInfo[6].Index <> NULL
REMOVE_PED_FOR_DIALOGUE(sSpeech, 6)
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_4
IF DOES_ENTITY_EXIST(s_sp_dock_workers_talking[0].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_talking[0].ped)
ADD_PED_FOR_DIALOGUE(sSpeech, 5, s_sp_dock_workers_talking[0].ped, "LONGSHOREMAN")
ENDIF
ELSE
IF sSpeech.PedInfo[5].Index <> NULL
REMOVE_PED_FOR_DIALOGUE(sSpeech, 5)
ENDIF
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_4
IF DOES_ENTITY_EXIST(s_sp_forklift_supervisorA[0].ped)
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
ADD_PED_FOR_DIALOGUE(sSpeech, 7, s_sp_forklift_supervisorA[0].ped, "SUPERVISOR2")
ENDIF
ELSE
IF sSpeech.PedInfo[7].Index <> NULL
REMOVE_PED_FOR_DIALOGUE(sSpeech, 7)
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_5
IF DOES_ENTITY_EXIST(pedDockWorker[14])
IF NOT IS_PED_INJURED(pedDockWorker[14])
ADD_PED_FOR_DIALOGUE(sSpeech, 8, pedDockWorker[14], "SIGNALMAN")
ENDIF
ELSE
IF sSpeech.PedInfo[8].Index <> NULL
REMOVE_PED_FOR_DIALOGUE(sSpeech, 8)
ENDIF
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
PROC GENERATE_ALL_SCENE_DATA()
IF NOT IS_SCENE_DATA_READY(s_sd_arrive_at_docks)
GET_SCENE_DATA(SS_ARRIVE_AT_DOCKS)
//SCRIPT_ASSERT("SS_ARRIVE_AT_DOCKS")
ENDIF
IF IS_SCENE_DATA_READY(s_sd_arrive_at_docks)
IF NOT IS_SCENE_DATA_READY(S_sd_dock_workers_on_pipe)
GET_SCENE_DATA(SS_dock_workers_on_pipe)
//SCRIPT_ASSERT("SS_dock_workers_on_pipe")
ENDIF
ENDIF
IF IS_SCENE_DATA_READY(S_sd_dock_workers_on_pipe)
IF NOT IS_SCENE_DATA_READY(S_sd_blackwater_with_dockworker)
GET_SCENE_DATA(SS_blackwater_with_dockworker)
//SCRIPT_ASSERT("SS_blackwater_with_dockworker")
ENDIF
ENDIF
IF IS_SCENE_DATA_READY(S_sd_blackwater_with_dockworker)
IF NOT IS_SCENE_DATA_READY(s_sd_gantry_guys_dynamic)
GET_SCENE_DATA(SS_GANTRY_GUYS)
//SCRIPT_ASSERT("SS_GANTRY_GUYS")
ENDIF
ENDIF
IF IS_SCENE_DATA_READY(s_sd_gantry_guys_dynamic)
IF NOT IS_SCENE_DATA_READY(s_sd_gantry_guys_static)
GET_SCENE_DATA(SS_STATIC_GANTRY_GUYS)
//SCRIPT_ASSERT("SS_STATIC_GANTRY_GUYS")
ENDIF
ENDIF
IF IS_SCENE_DATA_READY(s_sd_gantry_guys_static)
IF NOT IS_SCENE_DATA_READY(s_sd_floyd_grabs_package)
GET_SCENE_DATA(SS_FLOYD_GRABS_PACKAGE)
//SCRIPT_ASSERT("SS_FLOYD_GRABS_PACKAGE")
ENDIF
ENDIF
IF IS_SCENE_DATA_READY(s_sd_floyd_grabs_package)
IF NOT IS_SCENE_DATA_READY(s_sd_welder)
GET_SCENE_DATA(SS_WELDER)
//SCRIPT_ASSERT("SS_WELDER")
ENDIF
ENDIF
ENDPROC
PROC MANAGE_SPEECH_FOR_AMBIENT_SET_PIECE(AMBIENT_SET_PIECE_SPEECH_ENUM eAmbientSP)
SWITCH eAmbientSP
CASE AMBSP_BLACKWATER_WITH_DOCK_WORKER
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF s_sp_blackwater_with_dockworker[0].i_event = 0
// IF NOT HAS_LABEL_BEEN_TRIGGERED("TR2_DWAA")
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(enemy[2].ped,"TR2_AIAA","TREVOR2BIKER1","SPEECH_PARAMS_FORCE_FRONTEND")
// SET_LABEL_AS_TRIGGERED("TR2_DWAA",TRUE)
// ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("TR2_DWAB")
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(enemy[2].ped,"TR2_AIAB","TREVOR2BIKER1","SPEECH_PARAMS_FORCE_FRONTEND")
// SET_LABEL_AS_TRIGGERED("TR2_DWAB",TRUE)
// ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("TR2_DWAC")
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(enemy[2].ped,"TR2_AIAC","TREVOR2BIKER1","SPEECH_PARAMS_FORCE_FRONTEND")
// SET_LABEL_AS_TRIGGERED("TR2_DWAC",TRUE)
// bDialogue = TRUE
// ENDIF
// ENDIF
// ENDIF
ENDIF
ENDIF
BREAK
CASE AMBSP_DOCK_WORKERS_ON_PIPE
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
// IF s_sp_dock_workers_on_pipe[0].i_event = 0
// IF NOT HAS_LABEL_BEEN_TRIGGERED("TR2_DWAA")
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(enemy[2].ped,"TR2_AIAA","TREVOR2BIKER1","SPEECH_PARAMS_FORCE_FRONTEND")
// SET_LABEL_AS_TRIGGERED("TR2_DWAA",TRUE)
// ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("TR2_DWAB")
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(enemy[2].ped,"TR2_AIAB","TREVOR2BIKER1","SPEECH_PARAMS_FORCE_FRONTEND")
// SET_LABEL_AS_TRIGGERED("TR2_DWAB",TRUE)
// ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("TR2_DWAC")
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(enemy[2].ped,"TR2_AIAC","TREVOR2BIKER1","SPEECH_PARAMS_FORCE_FRONTEND")
// SET_LABEL_AS_TRIGGERED("TR2_DWAC",TRUE)
// bDialogue = TRUE
// ENDIF
// ENDIF
// ENDIF
// ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC MANAGE_DOCK_SETPIECES(VECTOR v_player_pos)
//SEQUENCE_INDEX seq
//Keep these models in memory
REQUEST_MODEL(S_M_M_DOCKWORK_01)
REQUEST_MODEL(S_M_Y_BLACKOPS_01)
/*
_ ___ ___ _ _ _ ___ _ ___ __ _ __ _ ___
/ \| o \ o \ | | | __| / \_ _| | \ / \ / _| |// _|
| o | / / | V | _| | o | | | o | o | (_| (\_ \
|_n_|_|\\_|\\_|\_/|___| |_n_|_| |__/ \_/ \__|_|\\__|
*/
IF NOT IS_THIS_SYNCHRONISED_SCENE_COMPLETE(SS_ARRIVE_AT_DOCKS)
IF NOT DOES_ENTITY_EXIST(s_sp_supervisor1[0].ped)
IF eMissionStage > MISSION_STAGE_1
AND eMissionStage < MISSION_STAGE_4
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
REQUEST_MODEL(s_sp_supervisor1[0].model)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_2_p1@new_structure")
AND HAS_MODEL_LOADED(s_sp_supervisor1[0].model)
s_sp_supervisor1[0].ped = CREATE_SETPIECE_PED(s_sp_supervisor1[0].model,s_sp_supervisor1[0].v_ss_pos, s_sp_supervisor1[0].f_ss_rot, rel_group_buddies, 200, 0)
ADD_PED_FOR_DIALOGUE(sSpeech, 6, s_sp_supervisor1[0].ped, "SUPERVISOR1")
INITIALISE_SETPIECE_GROUP(s_sp_supervisor1, "Arrive at docks")
v_ss_floyd[SS_ARRIVE_AT_DOCKS] = <<-61.30, -2523.86, 6.16>>
f_ss_floyd[SS_ARRIVE_AT_DOCKS] = -31.41
v_ss_wade[SS_ARRIVE_AT_DOCKS] = <<-60.50, -2523.52, 6.16>>
f_ss_wade[SS_ARRIVE_AT_DOCKS] = 59.25
ENDIF
ENDIF
ELSE
IF bSetPiece[SS_ARRIVE_AT_DOCKS]
SWITCH s_sp_supervisor1[0].i_event
//SUPERVISOR LEAVES THE BUILDING
CASE 0
IF DOES_ENTITY_EXIST(s_sp_supervisor1[0].ped)
AND DOES_ENTITY_EXIST(pedWade)
AND DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(s_sp_supervisor1[0].ped)
AND NOT IS_PED_INJURED(pedWade)
AND NOT IS_PED_INJURED(pedFloyd)
//KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
IF SETUP_PEDS_FOR_DIALOGUE()
sceneArriveStartId = CREATE_SYNCHRONIZED_SCENE(s_sd_arrive_at_docks.v_scene_pos, s_sd_arrive_at_docks.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_supervisor1[0].ped,sceneArriveStartId, "missheistdockssetup1ig_2_p1@new_structure", "walk_down_supervisor", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT)
s_sp_supervisor1[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
//SUPERVISOR WAIT LOOP
CASE 1
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneArriveStartId) > 0.1
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_03b")
IF NOT IS_PED_INJURED(s_sp_supervisor1[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_supervisor1[0].ped,"DH1_BXAB","SUPERVISOR",SPEECH_PARAMS_FORCE_FRONTEND)
PRINTSTRING("SHOUT")PRINTNL()
SET_LABEL_AS_TRIGGERED("DS1_03b",TRUE)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_sp_supervisor1[0].ped)
AND DOES_ENTITY_EXIST(pedWade)
AND DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(s_sp_supervisor1[0].ped)
AND NOT IS_PED_INJURED(pedWade)
AND NOT IS_PED_INJURED(pedFloyd)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneArriveStartId)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneArriveStartId) = 1.0
sceneArriveStartId = CREATE_SYNCHRONIZED_SCENE(s_sd_arrive_at_docks.v_scene_pos, s_sd_arrive_at_docks.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_supervisor1[0].ped,sceneArriveStartId, "missheistdockssetup1ig_2_p1@new_structure", "wait_loop_supervisor", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT)
SET_SYNCHRONIZED_SCENE_LOOPED(sceneArriveStartId,TRUE)
s_sp_supervisor1[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//START THE ACTION
CASE 2
IF DOES_ENTITY_EXIST(s_sp_supervisor1[0].ped)
AND DOES_ENTITY_EXIST(pedWade)
AND DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(s_sp_supervisor1[0].ped)
AND NOT IS_PED_INJURED(pedWade)
AND NOT IS_PED_INJURED(pedFloyd)
IF IS_PED_READY_FOR_ANIM(pedWade, v_ss_wade[SS_ARRIVE_AT_DOCKS], f_ss_wade[SS_ARRIVE_AT_DOCKS],<<0.2,0.2,2>>,360,TRUE)
AND IS_PED_READY_FOR_ANIM(pedFloyd,v_ss_floyd[SS_ARRIVE_AT_DOCKS], f_ss_floyd[SS_ARRIVE_AT_DOCKS],<<0.2,0.2,2>>,360,TRUE)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_03c")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_03c", CONV_PRIORITY_HIGH)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 7.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_03c",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
sceneArriveMainId = CREATE_SYNCHRONIZED_SCENE(s_sd_arrive_at_docks.v_scene_pos, s_sd_arrive_at_docks.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_supervisor1[0].ped,sceneArriveMainId, "missheistdockssetup1ig_2_p1@new_structure", "push_guy_back_supervisor", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT)
TASK_SYNCHRONIZED_SCENE (pedWade, sceneArriveMainId, "missheistdockssetup1ig_2_p1@new_structure", "push_guy_back_wade", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT,4)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneArriveMainId, "missheistdockssetup1ig_2_p1@new_structure", "push_guy_back_floyd", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT,4)
SET_SYNCHRONIZED_SCENE_LOOPED(sceneArriveMainId,FALSE)
s_sp_supervisor1[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//GET INTO END IDLE
CASE 3
IF DOES_ENTITY_EXIST(s_sp_supervisor1[0].ped)
AND DOES_ENTITY_EXIST(pedWade)
AND DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(s_sp_supervisor1[0].ped)
AND NOT IS_PED_INJURED(pedWade)
AND NOT IS_PED_INJURED(pedFloyd)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneArriveMainId)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneArriveMainId) > 0.7
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(P_CUT_DOOR_02,<<-63.19, -2519.27, 7.79>>,TRUE,0,0,0)
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@end_idle")
s_sp_supervisor1[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//FINISH UP - CLEAR TASKS ECT
CASE 4
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_2_p1@end_idle")
IF DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneArriveMainId)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneArriveMainId) = 1
IF eMissionStage = MISSION_STAGE_2
sceneArriveMainId = CREATE_SYNCHRONIZED_SCENE(s_sd_arrive_at_docks.v_scene_pos, s_sd_arrive_at_docks.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (pedFloyd,sceneArriveMainId, "missheistdockssetup1ig_2_p1@end_idle", "supervisor_exitdoor_endidle_floyd", NORMAL_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneArriveMainId,TRUE)
REMOVE_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
bSSComplete[SS_ARRIVE_AT_DOCKS] = TRUE
s_sp_supervisor1[0].i_event ++
ELSE
IF eMissionStage = MISSION_STAGE_4
IF iProgress < 3
sceneArriveMainId = CREATE_SYNCHRONIZED_SCENE(s_sd_arrive_at_docks.v_scene_pos, s_sd_arrive_at_docks.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (pedFloyd,sceneArriveMainId, "missheistdockssetup1ig_2_p1@end_idle", "supervisor_exitdoor_endidle_floyd", NORMAL_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneArriveMainId,TRUE)
REMOVE_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
bSSComplete[SS_ARRIVE_AT_DOCKS] = TRUE
s_sp_supervisor1[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 5
BREAK
ENDSWITCH
ELSE
ENDIF
ENDIF
ENDIF
/* ___ _ ___ ____ __ ___ _ ___ __ ___ _ __ _ _ _ __ ___
| __| | / \ V / \ / _|| o \/ \| o ) _| | o \/ \ / _| |/// \ / _|| __|
| _|| |_( o ) /| o ) ( |_n| / o | o \_ \ | _/ o ( (_| (| o ( |_n| _|
|_| |___|\_/|_||__/ \__/|_|\\_n_|___/__/ |_| |_n_|\__|_|\\_n_|\__/|___|*/
IF NOT IS_THIS_SYNCHRONISED_SCENE_COMPLETE(SS_FLOYD_GRABS_PACKAGE)
IF NOT DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[0].ped)
IF eMissionStage > MISSION_STAGE_1
REQUEST_ANIM_DICT("missheistdockssetup1ig_4@start_idle")
REQUEST_MODEL(s_sp_floyd_grabs_package[0].model)
REQUEST_MODEL(s_sp_floyd_grabs_package[1].model)
REQUEST_MODEL(s_sp_floyd_grabs_package[2].model)
//REQUEST_MODEL(PROP_CS_PACKAGE_01)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_4@start_idle")
AND HAS_MODEL_LOADED(s_sp_floyd_grabs_package[0].model)
AND HAS_MODEL_LOADED(s_sp_floyd_grabs_package[1].model)
AND HAS_MODEL_LOADED(s_sp_floyd_grabs_package[2].model)
//AND HAS_MODEL_LOADED(PROP_CS_PACKAGE_01)
s_sp_floyd_grabs_package[0].ped = CREATE_SETPIECE_PED(s_sp_floyd_grabs_package[0].model,s_sp_floyd_grabs_package[0].v_ss_pos, s_sp_floyd_grabs_package[0].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_floyd_grabs_package[1].ped = CREATE_SETPIECE_PED(s_sp_floyd_grabs_package[1].model,s_sp_floyd_grabs_package[1].v_ss_pos, s_sp_floyd_grabs_package[0].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_floyd_grabs_package[2].ped = CREATE_SETPIECE_PED(s_sp_floyd_grabs_package[2].model,s_sp_floyd_grabs_package[2].v_ss_pos, s_sp_floyd_grabs_package[0].f_ss_rot, rel_group_buddies, 200, 0)
//s_sp_floyd_grabs_package[0].obj_prop = CREATE_OBJECT(PROP_CS_PACKAGE_01,<< -56.6750, -2434.4624, 5.0008 >>)
INITIALISE_SETPIECE_GROUP(s_sp_floyd_grabs_package, "Floyd Grabs Package")
ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
SET_PED_CAPSULE(s_sp_floyd_grabs_package[0].ped, 0.4)
SET_PED_CAPSULE(s_sp_floyd_grabs_package[1].ped, 0.7)
SET_PED_CAPSULE(s_sp_floyd_grabs_package[2].ped, 0.4)
SWITCH s_sp_floyd_grabs_package[0].i_event
//GET PEDS INTO POSITION
CASE 0
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_4@start_idle")
IF DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[0].ped)
AND DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[1].ped)
AND DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[2].ped)
AND DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[0].ped)
AND NOT IS_PED_INJURED(s_sp_floyd_grabs_package[1].ped)
AND NOT IS_PED_INJURED(s_sp_floyd_grabs_package[2].ped)
AND NOT IS_PED_INJURED(pedFloyd)
sceneFloydPackage1init = CREATE_SYNCHRONIZED_SCENE(<< -88.341, -2502.575, 5.011 >>, << 0.000, -0.000, -32.844 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_floyd_grabs_package[0].ped,sceneFloydPackage1init, "missheistdockssetup1ig_4@start_idle", "FLOYD_FellPackage_StartIdle_DockWorker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_floyd_grabs_package[1].ped,sceneFloydPackage1init, "missheistdockssetup1ig_4@start_idle", "FLOYD_FellPackage_StartIdle_DockWorker2", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_floyd_grabs_package[2].ped,sceneFloydPackage1init, "missheistdockssetup1ig_4@start_idle", "FLOYD_FellPackage_StartIdle_DockWorker3", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneFloydPackage1init,TRUE)
s_sp_floyd_grabs_package[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 1
IF eMissionStage = MISSION_STAGE_4
IF DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[0].ped)
AND DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[1].ped)
AND DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[2].ped)
AND DOES_ENTITY_EXIST(pedFloyd)
IF HAS_LABEL_BEEN_TRIGGERED("FLOYD SEEN BOAT")
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[0].ped)
AND NOT IS_PED_INJURED(s_sp_floyd_grabs_package[1].ped)
AND NOT IS_PED_INJURED(s_sp_floyd_grabs_package[2].ped)
AND NOT IS_PED_INJURED(pedFloyd)
IF NOT IS_ENTITY_ON_SCREEN(s_sp_floyd_grabs_package[0].ped)
AND NOT IS_ENTITY_ON_SCREEN(s_sp_floyd_grabs_package[1].ped)
AND NOT IS_ENTITY_ON_SCREEN(s_sp_floyd_grabs_package[2].ped)
//CLEAR_PED_TASKS(pedFloyd)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_floyd_grabs_package[0].ped,SLOW_BLEND_OUT,TRUE)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_floyd_grabs_package[1].ped,SLOW_BLEND_OUT,TRUE)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_floyd_grabs_package[2].ped,SLOW_BLEND_OUT,TRUE)
CLEAR_PED_TASKS(s_sp_floyd_grabs_package[0].ped)
CLEAR_PED_TASKS(s_sp_floyd_grabs_package[1].ped)
CLEAR_PED_TASKS(s_sp_floyd_grabs_package[2].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_floyd_grabs_package[0].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_floyd_grabs_package[1].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_floyd_grabs_package[2].ped)
REMOVE_ANIM_DICT("missheistdockssetup1ig_4@start_idle")
bSSComplete[SS_FLOYD_GRABS_PACKAGE] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
/*
| | | |/ \| o \ |// | \| |/ _| / \| \| | | o \ | o \ __|
| V V ( o ) / (| | \\ ( |_n ( o ) \\ | | _/ | _/ _|
\_n_/ \_/|_|\\_|\\_|_|\_|\__/ \_/|_|\_| |_| |_|_| |___|
*/
IF NOT IS_THIS_SYNCHRONISED_SCENE_COMPLETE(SS_dock_workers_on_pipe)
IF bSetPiece[SS_dock_workers_on_pipe]
IF NOT DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[0].ped)
IF eMissionStage > MISSION_STAGE_1
REQUEST_MODEL(s_sp_dock_workers_on_pipe[0].model)
REQUEST_MODEL(s_sp_dock_workers_on_pipe[1].model)
REQUEST_MODEL(s_sp_dock_workers_on_pipe[2].model)
IF HAS_MODEL_LOADED(s_sp_dock_workers_on_pipe[0].model)
AND HAS_MODEL_LOADED(s_sp_dock_workers_on_pipe[1].model)
AND HAS_MODEL_LOADED(s_sp_dock_workers_on_pipe[2].model)
//IF IS_SCENE_DATA_READY(s_sd_dock_workers_on_pipe)
s_sp_dock_workers_on_pipe[0].ped = CREATE_SETPIECE_PED(s_sp_dock_workers_on_pipe[0].model,s_sp_dock_workers_on_pipe[0].v_ss_pos, s_sp_dock_workers_on_pipe[0].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_dock_workers_on_pipe[1].ped = CREATE_SETPIECE_PED(s_sp_dock_workers_on_pipe[1].model,s_sp_dock_workers_on_pipe[1].v_ss_pos, s_sp_dock_workers_on_pipe[1].f_ss_rot, rel_group_buddies, 200, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_HEAD, 1, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_HAIR, 0, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_LEG, 1, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_HAND, 0, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_FEET, 0, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_SPECIAL, 1, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_DECL, 0, 0)
SET_PED_COMPONENT_VARIATION(s_sp_dock_workers_on_pipe[1].ped, PED_COMP_JBIB, 0, 0)
SET_PED_PROP_INDEX(s_sp_dock_workers_on_pipe[1].ped, ANCHOR_HEAD, 0)
s_sp_dock_workers_on_pipe[2].ped = CREATE_SETPIECE_PED(s_sp_dock_workers_on_pipe[2].model,s_sp_dock_workers_on_pipe[2].v_ss_pos, s_sp_dock_workers_on_pipe[2].f_ss_rot, rel_group_buddies, 200, 0)
INITIALISE_SETPIECE_GROUP(s_sp_dock_workers_on_pipe, "Working on pipe")
//ELSE
//GET_SCENE_DATA(SS_dock_workers_on_pipe)
//ENDIF
ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sd_dock_workers_on_pipe.v_scene_pos) < 100
SWITCH s_sp_dock_workers_on_pipe[0].i_event
//GET PEDS INTO POSITION
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1ig_10@base")
s_sp_dock_workers_on_pipe[0].i_event ++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_10@base")
IF DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[0].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[1].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[2].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
sceneDockPipe1Id = CREATE_SYNCHRONIZED_SCENE(<< -68.320, -2531.518, 5.060 >>, << 0.000, -0.000, 3.640 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[0].ped,sceneDockPipe1Id, "missheistdockssetup1ig_10@base", "talk_pipe_base_worker1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[1].ped, sceneDockPipe1Id, "missheistdockssetup1ig_10@base", "talk_pipe_base_worker2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[2].ped, sceneDockPipe1Id, "missheistdockssetup1ig_10@base", "talk_pipe_base_worker3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneDockPipe1Id,TRUE)
s_sp_dock_workers_on_pipe[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
//START THE ACTION
CASE 2
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sd_dock_workers_on_pipe.v_scene_pos) < 20
REQUEST_ANIM_DICT("missheistdockssetup1ig_10@laugh")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_10@laugh")
IF DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[0].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[1].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[2].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
sceneDockPipe2Id = CREATE_SYNCHRONIZED_SCENE(<< -68.320, -2531.518, 5.060 >>, << 0.000, -0.000, 3.640 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[0].ped, sceneDockPipe2Id, "missheistdockssetup1ig_10@laugh", "laugh_pipe_worker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[1].ped, sceneDockPipe2Id, "missheistdockssetup1ig_10@laugh", "laugh_pipe_worker2", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[2].ped, sceneDockPipe2Id, "missheistdockssetup1ig_10@laugh", "laugh_pipe_worker3", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
REMOVE_ANIM_DICT("missheistdockssetup1ig_10@laugh")
REQUEST_ANIM_DICT("missheistdockssetup1ig_10@idle_b")
s_sp_dock_workers_on_pipe[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//LOOP AMBIENT AFTER TRIGGERING LAUGH
CASE 3
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_10@idle_b")
IF DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[0].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[1].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[2].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[0].ped, 0.5)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[1].ped, 0.5)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[2].ped, 0.5)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneDockPipe2Id)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneDockPipe2Id) = 1
sceneDockPipe3Id = CREATE_SYNCHRONIZED_SCENE(<< -68.320, -2531.518, 5.060 >>, << 0.000, -0.000, 3.640 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[0].ped,sceneDockPipe3Id, "missheistdockssetup1ig_10@idle_b", "talk_pipe_b_worker1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[1].ped, sceneDockPipe3Id, "missheistdockssetup1ig_10@idle_b", "talk_pipe_b_worker2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[2].ped, sceneDockPipe3Id, "missheistdockssetup1ig_10@idle_b", "talk_pipe_b_worker3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
REMOVE_ANIM_DICT("missheistdockssetup1ig_10@idle_b")
REQUEST_ANIM_DICT("missheistdockssetup1ig_10@idle_c")
s_sp_dock_workers_on_pipe[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//LOOP AMBIENT AFTER TRIGGERING LAUGH
CASE 4
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_10@idle_c")
IF DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[0].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[1].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[2].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[0].ped, 0.5)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[1].ped, 0.5)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[2].ped, 0.5)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneDockPipe3Id)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneDockPipe3Id) = 1
sceneDockPipe4Id = CREATE_SYNCHRONIZED_SCENE(<< -68.320, -2531.518, 5.060 >>, << 0.000, -0.000, 3.640 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[0].ped,sceneDockPipe4Id, "missheistdockssetup1ig_10@idle_c", "talk_pipe_c_worker1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[1].ped, sceneDockPipe4Id, "missheistdockssetup1ig_10@idle_c", "talk_pipe_c_worker2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[2].ped, sceneDockPipe4Id, "missheistdockssetup1ig_10@idle_c", "talk_pipe_c_worker3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
REMOVE_ANIM_DICT("missheistdockssetup1ig_10@idle_c")
REQUEST_ANIM_DICT("missheistdockssetup1ig_10@idle_d")
s_sp_dock_workers_on_pipe[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//LOOP AMBIENT AFTER TRIGGERING LAUGH
CASE 5
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_10@idle_d")
IF DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[0].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[1].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[2].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[0].ped, 0.5)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[1].ped, 0.5)
SET_PED_CAPSULE(s_sp_dock_workers_on_pipe[2].ped, 0.5)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneDockPipe4Id)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneDockPipe4Id) = 1
sceneDockPipe5Id = CREATE_SYNCHRONIZED_SCENE(<< -68.320, -2531.518, 5.060 >>, << 0.000, -0.000, 3.640 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[0].ped,sceneDockPipe5Id, "missheistdockssetup1ig_10@idle_d", "talk_pipe_d_worker1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[1].ped, sceneDockPipe5Id, "missheistdockssetup1ig_10@idle_d", "talk_pipe_d_worker2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_on_pipe[2].ped, sceneDockPipe5Id, "missheistdockssetup1ig_10@idle_d", "talk_pipe_d_worker3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneDockPipe5Id,TRUE)
s_sp_dock_workers_on_pipe[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//FINISH UP - CLEAR TASKS ECT
CASE 6
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
IF NOT IS_ENTITY_ON_SCREEN(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_ENTITY_ON_SCREEN(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_ENTITY_ON_SCREEN(s_sp_dock_workers_on_pipe[2].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_on_pipe[0].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_on_pipe[0].ped)
ENDIF
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_on_pipe[1].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_on_pipe[1].ped)
ENDIF
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_on_pipe[2].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_on_pipe[2].ped)
ENDIF
REMOVE_ANIM_DICT("missheistdockssetup1ig_10@idle_d")
bSSComplete[SS_dock_workers_on_pipe] = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
ENDIF
/*
__ _ _ _ ___ _____ __ __ _ ___ ____ ____ ___ _ _ _ _ _ __
/ _| / \| \| |_ _| o \ V / / _|| | \ V / _| | \ V / \| |/ \| \_/ | |/ _|
( |_n| o | \\ || || /\ / ( |_n| U |\ /\_ \ | o ) /| \\ | o | \_/ | ( (_
\__/|_n_|_|\_||_||_|\\|_| \__/|___||_||__/ |__/|_||_|\_|_n_|_| |_|_|\__| */
IF bSetPiece[SS_GANTRY_GUYS]
IF NOT DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[0].ped)
REQUEST_MODEL(s_sp_gantry_guys_dynamic[0].model)
REQUEST_MODEL(s_sp_gantry_guys_dynamic[1].model)
REQUEST_MODEL(s_sp_gantry_guys_dynamic[2].model)
REQUEST_MODEL(s_sp_gantry_guys_dynamic[3].model)
IF HAS_MODEL_LOADED(s_sp_gantry_guys_dynamic[0].model)
AND HAS_MODEL_LOADED(s_sp_gantry_guys_dynamic[1].model)
AND HAS_MODEL_LOADED(s_sp_gantry_guys_dynamic[2].model)
AND HAS_MODEL_LOADED(s_sp_gantry_guys_dynamic[3].model)
//IF IS_SCENE_DATA_READY(s_sd_gantry_guys_dynamic)
s_sp_gantry_guys_dynamic[0].ped = CREATE_SETPIECE_PED(s_sp_gantry_guys_dynamic[0].model,s_sp_gantry_guys_dynamic[0].v_ss_pos, s_sp_gantry_guys_dynamic[0].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_gantry_guys_dynamic[1].ped = CREATE_SETPIECE_PED(s_sp_gantry_guys_dynamic[1].model,s_sp_gantry_guys_dynamic[1].v_ss_pos, s_sp_gantry_guys_dynamic[1].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_gantry_guys_dynamic[2].ped = CREATE_SETPIECE_PED(s_sp_gantry_guys_dynamic[2].model,s_sp_gantry_guys_dynamic[2].v_ss_pos, s_sp_gantry_guys_dynamic[2].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_gantry_guys_dynamic[3].ped = CREATE_SETPIECE_PED(s_sp_gantry_guys_dynamic[3].model,s_sp_gantry_guys_dynamic[3].v_ss_pos, s_sp_gantry_guys_dynamic[3].f_ss_rot, rel_group_buddies, 200, 0)
INITIALISE_SETPIECE_GROUP(s_sp_gantry_guys_dynamic, "Gantry guys dynamic")
//ELSE
//GET_SCENE_DATA(SS_GANTRY_GUYS)
//ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sd_gantry_guys_dynamic.v_scene_pos) < 100
//REPEAT COUNT_OF(s_sp_gantry_guys_dynamic) i
//IF DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[i].ped)
//IF NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[i].ped)
SWITCH s_sp_gantry_guys_dynamic[0].i_event
//GET PEDS INTO POSITION
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1ig_12@base")
s_sp_gantry_guys_dynamic[0].i_event ++
BREAK
CASE 1
REQUEST_ANIM_DICT("missheistdockssetup1ig_12@base")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_12@base")
//LOOP OVER UNTIL PARK UP
IF DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[0].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[1].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[2].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[3].ped)
IF NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[0].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[1].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[2].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[3].ped)
sceneGantryCraneDynamic1 = CREATE_SYNCHRONIZED_SCENE(s_sd_gantry_guys_dynamic.v_scene_pos,s_sd_gantry_guys_dynamic.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[0].ped,sceneGantryCraneDynamic1, "missheistdockssetup1ig_12@base", "TALK_Gantry_Idle_Base_Worker1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[1].ped, sceneGantryCraneDynamic1,"missheistdockssetup1ig_12@base", "TALK_Gantry_Idle_Base_Worker2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[2].ped, sceneGantryCraneDynamic1,"missheistdockssetup1ig_12@base", "TALK_Gantry_Idle_Base_Worker3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[3].ped, sceneGantryCraneDynamic1,"missheistdockssetup1ig_12@base", "TALK_Gantry_Idle_Base_Worker4", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneGantryCraneDynamic1,TRUE)
s_sp_gantry_guys_dynamic[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
//START THE ACTION - WHEN THE PLAYER APPROACHES GET COORDS FOR CONDITION
CASE 2
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sd_gantry_guys_dynamic.v_scene_pos) < 50
REQUEST_ANIM_DICT("missheistdockssetup1ig_12@idle_a")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_12@idle_a")
IF DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[0].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[1].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[2].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[3].ped)
IF NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[0].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[1].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[2].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[3].ped)
sceneGantryCraneDynamic2 = CREATE_SYNCHRONIZED_SCENE(s_sd_gantry_guys_dynamic.v_scene_pos,s_sd_gantry_guys_dynamic.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[0].ped, sceneGantryCraneDynamic2, "missheistdockssetup1ig_12@idle_a", "TALK_Gantry_Idle_A_Worker1", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[1].ped, sceneGantryCraneDynamic2,"missheistdockssetup1ig_12@idle_a", "TALK_Gantry_Idle_A_Worker2", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[2].ped, sceneGantryCraneDynamic2,"missheistdockssetup1ig_12@idle_a", "TALK_Gantry_Idle_A_Worker3", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[3].ped, sceneGantryCraneDynamic2,"missheistdockssetup1ig_12@idle_a", "TALK_Gantry_Idle_A_Worker4", SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
REQUEST_ANIM_DICT("missheistdockssetup1ig_12@idle_b")
s_sp_gantry_guys_dynamic[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//SECOND ANIM
CASE 3
REQUEST_ANIM_DICT("missheistdockssetup1ig_12@idle_b")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_12@idle_b")
IF DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[0].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[1].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[2].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[3].ped)
IF NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[0].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[1].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[2].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[3].ped)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneGantryCraneDynamic2) = 1
sceneGantryCraneDynamic3 = CREATE_SYNCHRONIZED_SCENE(s_sd_gantry_guys_dynamic.v_scene_pos,s_sd_gantry_guys_dynamic.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[0].ped,sceneGantryCraneDynamic3, "missheistdockssetup1ig_12@idle_b", "TALK_Gantry_Idle_B_Worker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[1].ped, sceneGantryCraneDynamic3,"missheistdockssetup1ig_12@idle_b", "TALK_Gantry_Idle_B_Worker2", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[2].ped, sceneGantryCraneDynamic3,"missheistdockssetup1ig_12@idle_b", "TALK_Gantry_Idle_B_Worker3", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[3].ped, sceneGantryCraneDynamic3,"missheistdockssetup1ig_12@idle_b", "TALK_Gantry_Idle_B_Worker4", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
REQUEST_ANIM_DICT("missheistdockssetup1ig_12@idle_c")
s_sp_gantry_guys_dynamic[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//FINAL LOOP
CASE 4
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_b")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_12@idle_c")
IF DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[0].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[1].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[2].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[3].ped)
IF NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[0].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[1].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[2].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_dynamic[3].ped)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneGantryCraneDynamic3) = 1
sceneGantryCraneDynamic4= CREATE_SYNCHRONIZED_SCENE(s_sd_gantry_guys_dynamic.v_scene_pos,s_sd_gantry_guys_dynamic.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[0].ped, sceneGantryCraneDynamic4, "missheistdockssetup1ig_12@idle_c", "TALK_Gantry_Idle_C_Worker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[1].ped, sceneGantryCraneDynamic4,"missheistdockssetup1ig_12@idle_c", "TALK_Gantry_Idle_C_Worker2", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[2].ped, sceneGantryCraneDynamic4,"missheistdockssetup1ig_12@idle_c", "TALK_Gantry_Idle_C_Worker3", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_dynamic[3].ped, sceneGantryCraneDynamic4,"missheistdockssetup1ig_12@idle_c", "TALK_Gantry_Idle_C_Worker4", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneGantryCraneDynamic4,TRUE)
s_sp_gantry_guys_dynamic[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//FINISH UP - CLEAR TASKS ECT
CASE 5
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_a")
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_c")
BREAK
ENDSWITCH
//ENDIF
//ENDIF
//ENDREPEAT
ELSE
ENDIF
ENDIF
ENDIF
/*
__ _ ___ ____ _ ___ _ _ _ _ _ __ __ _ ___
/ _|| | \ V / _| / \| o \/ \| | | \| | \ / _|/ \| o \
( |_n| U |\ /\_ \ | o | ( o ) U | \\ | o ) ( (_| o | /
\__/|___||_||__/ |_n_|_|\\\_/|___|_|\_|__/ \__|_n_|_|\\ */
IF bSetPiece[SS_guys_around_car]
IF NOT DOES_ENTITY_EXIST(s_sp_guys_around_car[4].ped)
REQUEST_MODEL(s_sp_guys_around_car[0].model)
REQUEST_MODEL(s_sp_guys_around_car[1].model)
REQUEST_MODEL(s_sp_guys_around_car[2].model)
REQUEST_MODEL(s_sp_guys_around_car[3].model)
REQUEST_MODEL(s_sp_guys_around_car[4].model)
REQUEST_MODEL(BUFFALO)
IF HAS_MODEL_LOADED(s_sp_guys_around_car[0].model)
AND HAS_MODEL_LOADED(s_sp_guys_around_car[1].model)
AND HAS_MODEL_LOADED(s_sp_guys_around_car[2].model)
AND HAS_MODEL_LOADED(s_sp_guys_around_car[3].model)
AND HAS_MODEL_LOADED(s_sp_guys_around_car[4].model)
AND HAS_MODEL_LOADED(s_sv_car_to_admire[0].model)
s_sv_car_to_admire[0].veh = CREATE_SETPIECE_VEHICLE(BUFFALO,s_sv_car_to_admire[0].v_spawn_position,s_sv_car_to_admire[0].f_start_heading)
IF NOT s_sv_car_to_admire[0].b_is_created
s_sv_car_to_admire[0].b_is_created = TRUE
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(s_sv_car_to_admire[0].model)
s_sp_guys_around_car[0].ped = CREATE_SETPIECE_PED(s_sp_guys_around_car[0].model,s_sp_guys_around_car[0].v_spawn_position, s_sp_guys_around_car[0].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_guys_around_car[1].ped = CREATE_SETPIECE_PED(s_sp_guys_around_car[1].model,s_sp_guys_around_car[1].v_spawn_position, s_sp_guys_around_car[1].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_guys_around_car[2].ped = CREATE_SETPIECE_PED(s_sp_guys_around_car[2].model,s_sp_guys_around_car[2].v_spawn_position, s_sp_guys_around_car[2].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_guys_around_car[3].ped = CREATE_SETPIECE_PED(s_sp_guys_around_car[3].model,s_sp_guys_around_car[3].v_spawn_position, s_sp_guys_around_car[3].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_guys_around_car[4].ped = CREATE_SETPIECE_PED(s_sp_guys_around_car[4].model,s_sp_guys_around_car[4].v_spawn_position, s_sp_guys_around_car[4].f_ss_rot, rel_group_buddies, 200, 0)
INITIALISE_SETPIECE_GROUP(s_sp_guys_around_car, "Show off car")
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF IS_VEHICLE_DRIVEABLE(s_sv_car_to_admire[0].veh)
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,GET_ENTITY_COORDS(s_sv_car_to_admire[0].veh)) < 100
IF s_sp_guys_around_car[0].i_event > 1
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,GET_ENTITY_COORDS(s_sv_car_to_admire[0].veh)) > 20
REMOVE_ANIM_DICT("missheistdockssetup1showcar@idle_a")
REMOVE_ANIM_DICT("missheistdockssetup1showcar@idle_b")
REQUEST_ANIM_DICT("missheistdockssetup1showcar@base")
s_sp_guys_around_car[0].i_event = 1
ENDIF
ENDIF
SWITCH s_sp_guys_around_car[0].i_event
//GET PEDS INTO POSITION
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1showcar@base")
IF IS_VEHICLE_DRIVEABLE(s_sv_car_to_admire[0].veh)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(s_sv_car_to_admire[0].veh,FALSE)
FREEZE_ENTITY_POSITION(s_sv_car_to_admire[0].veh,TRUE)
ENDIF
s_sp_guys_around_car[0].i_event ++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1showcar@base")
//LOOP OVER UNTIL PARK UP
IF DOES_ENTITY_EXIST(s_sp_guys_around_car[0].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[1].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[2].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[3].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[4].ped)
IF NOT IS_PED_INJURED(s_sp_guys_around_car[0].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[1].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[2].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[3].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[4].ped)
sceneGuysAroundCar1 = CREATE_SYNCHRONIZED_SCENE(s_sd_guys_around_car.v_scene_pos,s_sd_guys_around_car.v_scene_rot)
IF IS_VEHICLE_DRIVEABLE(s_sv_car_to_admire[0].veh)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneGuysAroundCar1,s_sv_car_to_admire[0].veh,-1)
ENDIF
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[0].ped,sceneGuysAroundCar1, "missheistdockssetup1showcar@base", "base_1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[1].ped, sceneGuysAroundCar1,"missheistdockssetup1showcar@base", "base_2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[2].ped, sceneGuysAroundCar1,"missheistdockssetup1showcar@base", "base_3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[3].ped, sceneGuysAroundCar1,"missheistdockssetup1showcar@base", "base_4", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[4].ped, sceneGuysAroundCar1,"missheistdockssetup1showcar@base", "base_5", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneGuysAroundCar1,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(s_sp_guys_around_car[0].ped,s_sv_car_to_admire[0].veh,FALSE)
SET_ENTITY_NO_COLLISION_ENTITY(s_sp_guys_around_car[1].ped,s_sv_car_to_admire[0].veh,FALSE)
SET_ENTITY_NO_COLLISION_ENTITY(s_sp_guys_around_car[2].ped,s_sv_car_to_admire[0].veh,FALSE)
SET_ENTITY_NO_COLLISION_ENTITY(s_sp_guys_around_car[3].ped,s_sv_car_to_admire[0].veh,FALSE)
SET_ENTITY_NO_COLLISION_ENTITY(s_sp_guys_around_car[4].ped,s_sv_car_to_admire[0].veh,FALSE)
s_sp_guys_around_car[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,GET_ENTITY_COORDS(s_sv_car_to_admire[0].veh)) < 15
REQUEST_ANIM_DICT("missheistdockssetup1showcar@idle_a")
s_sp_guys_around_car[0].i_event ++
ENDIF
BREAK
//START THE ACTION - WHEN THE PLAYER APPROACHES GET COORDS FOR CONDITION
CASE 3
REQUEST_ANIM_DICT("missheistdockssetup1showcar@idle_a")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1showcar@idle_a")
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[0].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[1].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[2].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[3].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[4].ped)
IF NOT IS_PED_INJURED(s_sp_guys_around_car[0].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[1].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[2].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[3].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[4].ped)
sceneGuysAroundCar2 = CREATE_SYNCHRONIZED_SCENE(s_sd_guys_around_car.v_scene_pos,s_sd_guys_around_car.v_scene_rot)
IF IS_VEHICLE_DRIVEABLE(s_sv_car_to_admire[0].veh)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneGuysAroundCar2,s_sv_car_to_admire[0].veh,-1)
ENDIF
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[0].ped,sceneGuysAroundCar2, "missheistdockssetup1showcar@idle_a", "idle_a_1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[1].ped, sceneGuysAroundCar2,"missheistdockssetup1showcar@idle_a", "idle_a_2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[2].ped, sceneGuysAroundCar2,"missheistdockssetup1showcar@idle_a", "idle_a_3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[3].ped, sceneGuysAroundCar2,"missheistdockssetup1showcar@idle_a", "idle_a_4", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[4].ped, sceneGuysAroundCar2,"missheistdockssetup1showcar@idle_a", "idle_a_5", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneGuysAroundCar2,TRUE)
REMOVE_ANIM_DICT("missheistdockssetup1showcar@idle_a")
REQUEST_ANIM_DICT("missheistdockssetup1showcar@idle_b")
s_sp_guys_around_car[0].i_event ++
ENDIF
ENDIF
BREAK
//SECOND ANIM
CASE 4
REQUEST_ANIM_DICT("missheistdockssetup1showcar@idle_b")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1showcar@idle_b")
IF DOES_ENTITY_EXIST(s_sp_guys_around_car[0].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[1].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[2].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[3].ped)
AND DOES_ENTITY_EXIST(s_sp_guys_around_car[4].ped)
IF NOT IS_PED_INJURED(s_sp_guys_around_car[0].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[1].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[2].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[3].ped)
AND NOT IS_PED_INJURED(s_sp_guys_around_car[4].ped)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneGuysAroundCar2) = 1
sceneGuysAroundCar3 = CREATE_SYNCHRONIZED_SCENE(s_sd_guys_around_car.v_scene_pos,s_sd_guys_around_car.v_scene_rot)
IF IS_VEHICLE_DRIVEABLE(s_sv_car_to_admire[0].veh)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneGuysAroundCar3,s_sv_car_to_admire[0].veh,-1)
ENDIF
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[0].ped,sceneGuysAroundCar3, "missheistdockssetup1showcar@idle_b", "idle_b_1", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[1].ped, sceneGuysAroundCar3,"missheistdockssetup1showcar@idle_b", "idle_b_2", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[2].ped, sceneGuysAroundCar3,"missheistdockssetup1showcar@idle_b", "idle_b_3", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[3].ped, sceneGuysAroundCar3,"missheistdockssetup1showcar@idle_b", "idle_b_4", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_guys_around_car[4].ped, sceneGuysAroundCar3,"missheistdockssetup1showcar@idle_b", "idle_b_5", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneGuysAroundCar3,TRUE)
s_sp_guys_around_car[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//FINAL LOOP
CASE 5
REMOVE_ANIM_DICT("missheistdockssetup1showcar@idle_b")
REMOVE_ANIM_DICT("missheistdockssetup1showcar@idle_a")
s_sp_guys_around_car[0].i_event ++
BREAK
ENDSWITCH
ELSE
REMOVE_ANIM_DICT("missheistdockssetup1showcar@idle_b")
REMOVE_ANIM_DICT("missheistdockssetup1showcar@idle_a")
ENDIF
ELSE
//SCRIPT_ASSERT("Set Piece Car Not Drivable")
ENDIF
ENDIF
ENDIF
/*
_ _ _ ___ _ __ ___ ___
| | | | __| | | \| __| o \
| V V | _|| |_| o ) _|| /
\_n_/|___|___|__/|___|_|\\ */
//ANIMS DONE
IF NOT DOES_ENTITY_EXIST(s_sp_welder[0].ped)
REQUEST_MODEL(s_sp_welder[0].model)
REQUEST_MODEL(PROP_WELD_TORCH)
IF HAS_MODEL_LOADED(s_sp_welder[0].model)
AND HAS_MODEL_LOADED(PROP_WELD_TORCH)
IF s_sp_welder[0].i_event < 1
s_sp_welder[0].ped = CREATE_SETPIECE_PED(s_sp_welder[0].model,s_sp_welder[0].v_spawn_position, s_sp_welder[0].f_start_heading, rel_group_buddies, 200, 0)
s_sp_welder[0].obj_prop = CREATE_OBJECT(PROP_WELD_TORCH,<<-110.56, -2463.63, 5.04>>)
SET_RAGDOLL_BLOCKING_FLAGS(s_sp_welder[0].ped, RBF_PLAYER_IMPACT)
//SET_ENTITY_HEADING(s_sp_welder[0].obj_prop,s_sp_welder[0].f_start_heading)
INITIALISE_SETPIECE_GROUP(s_sp_welder, "Welder")
ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF bSetPiece[SS_WELDER]
SWITCH s_sp_welder[0].i_event
//GET PEDS INTO POSITION
CASE 0
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<< -102.1558, -2475.9209, 5.0203 >>,<<10,10,10>>)
REQUEST_ANIM_DICT("missheistdockssetup1ig_3@enter")
REQUEST_ANIM_DICT("missheistdockssetup1ig_3@talk")
s_sp_welder[0].i_event ++
ENDIF
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_3@enter")
IF DOES_ENTITY_EXIST(s_sp_welder[0].ped)
IF NOT IS_PED_INJURED(s_sp_welder[0].ped)
IF NOT IS_ENTITY_ON_SCREEN(s_sp_welder[0].ped)
sceneWelder = CREATE_SYNCHRONIZED_SCENE(s_sd_welder.v_scene_pos,s_sd_welder.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_welder[0].ped, sceneWelder, "missheistdockssetup1ig_3@enter", "welding_enter_dockworker", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_DONT_INTERRUPT | SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_ENTITY_TO_ENTITY(s_sp_welder[0].obj_prop, s_sp_welder[0].ped, GET_PED_BONE_INDEX(s_sp_welder[0].ped, BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>)
REMOVE_ANIM_DICT("missheistdockssetup1ig_3@enter")
s_sp_welder[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_3@talk")
IF DOES_ENTITY_EXIST(s_sp_welder[0].ped)
IF NOT IS_PED_INJURED(s_sp_welder[0].ped)
SET_PED_CAPSULE(s_sp_welder[0].ped, 0.4)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneWelder)
// IF NOT HAS_LABEL_BEEN_TRIGGERED("PICK UP WELDER")
// IF GET_SYNCHRONIZED_SCENE_PHASE(sceneWelder) > 0.66
// ATTACH_ENTITY_TO_ENTITY(s_sp_welder[0].obj_prop, s_sp_welder[0].ped, GET_PED_BONE_INDEX(s_sp_welder[0].ped, BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>)
// SET_LABEL_AS_TRIGGERED("PICK UP WELDER",TRUE)
// ENDIF
// ENDIF
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneWelder) = 1
sceneWelder = CREATE_SYNCHRONIZED_SCENE(s_sd_welder.v_scene_pos,s_sd_welder.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_welder[0].ped, sceneWelder, "missheistdockssetup1ig_3@talk", "oh_hey_vin_dockworker", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneWelder,TRUE)
REMOVE_ANIM_DICT("missheistdockssetup1ig_3@talk")
s_sp_welder[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF NOT IS_PED_INJURED(s_sp_welder[0].ped)
SET_PED_CAPSULE(s_sp_welder[0].ped, 0.4)
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
/*
Do anim dictionary stuff set up vectors etc
__ _ __ _ _ _ _ _ _ ___ _ ____ ___ __ ___ _ _ _ __ _ _ __
| \ / \ / _| |// | | | |/ \| o \ |// __| o Y _| |_ _/ \| | | |// | \| |/ _|
| o | o | (_| ( | V V ( o ) / (| _|| |_ \ | | o | |_| (| | \\ ( |_n
|__/ \_/ \__|_|\\ \_n_/ \_/|_|\\_|\\___|_|\\__/ |_|_n_|___|_|\\_|_|\_|\__/ */
IF NOT DOES_ENTITY_EXIST(s_sp_dock_workers_talking[0].ped)
REQUEST_MODEL(s_sp_dock_workers_talking[0].model)
REQUEST_MODEL(s_sp_dock_workers_talking[1].model)
IF HAS_MODEL_LOADED(s_sp_dock_workers_talking[0].model)
AND HAS_MODEL_LOADED(s_sp_dock_workers_talking[1].model)
//<<-110.41, -2481.24, 6.02>>
IF s_sp_dock_workers_talking[0].i_event < 0
s_sp_dock_workers_talking[0].ped = CREATE_SETPIECE_PED(s_sp_dock_workers_talking[0].model,s_sp_dock_workers_talking[0].v_spawn_position, s_sp_dock_workers_talking[0].f_start_heading, rel_group_buddies, 200, 0)
s_sp_dock_workers_talking[1].ped = CREATE_SETPIECE_PED(s_sp_dock_workers_talking[1].model,s_sp_dock_workers_talking[1].v_spawn_position, s_sp_dock_workers_talking[1].f_start_heading, rel_group_buddies, 200, 0)
INITIALISE_SETPIECE_GROUP(s_sp_dock_workers_talking, "Dockworkers talking by crates")
ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF bSetPiece[Ss_dock_workers_talking]
IF s_sp_dock_workers_talking[0].i_event = 0
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sp_dock_workers_talking[0].v_spawn_position) < 20
s_sp_dock_workers_talking[0].i_event = 1
ELSE
REMOVE_ANIM_DICT("missheistdockssetup1ig_5@base")
ENDIF
ENDIF
SWITCH s_sp_dock_workers_talking[0].i_event
//GET PEDS INTO POSITION
CASE 0
BREAK
CASE 1
REQUEST_ANIM_DICT("missheistdockssetup1ig_5@base")
s_sp_dock_workers_talking[0].i_event ++
BREAK
CASE 2
REQUEST_ANIM_DICT("missheistdockssetup1ig_5@base")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_5@base")
IF DOES_ENTITY_EXIST(s_sp_dock_workers_talking[1].ped)
AND DOES_ENTITY_EXIST(s_sp_dock_workers_talking[0].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_talking[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_talking[0].ped)
sceneDockWorkerTalking1A = CREATE_SYNCHRONIZED_SCENE(<< -110.402, -2481.259, 6.018 >>,<< 0.000, 0.000, -122.000 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_talking[0].ped, sceneDockWorkerTalking1A, "missheistdockssetup1ig_5@base","workers_talking_base_dockworker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneDockWorkerTalking1A,TRUE)
sceneDockWorkerTalking2A = CREATE_SYNCHRONIZED_SCENE(<< -109.253, -2481.959, 6.018 >>,<< 0.000, 0.000, 26.640 >>)
TASK_SYNCHRONIZED_SCENE (s_sp_dock_workers_talking[1].ped, sceneDockWorkerTalking2A, "missheistdockssetup1ig_5@base","workers_talking_base_dockworker2", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneDockWorkerTalking2A,TRUE)
s_sp_dock_workers_talking[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
BREAK
ENDSWITCH
ENDIF
ENDIF
/*
___ _ ___ _ __ _ ___ ___ __ _ _ ___ ___ ___ _ _ _ __ _ ___ _
| __/ \| o \ |// | | | __|_ _| / _| | | o \ __| o \ | | / _|/ \| o \ / \
| _( o ) / (| |_| | _| | | \_ \ U | _/ _|| / V | \_ ( o ) / | o |
|_| \_/|_|\\_|\\___|_|_| |_| |__/___|_| |___|_|\\\_/|_|__/\_/|_|\\ |_n_|*/
IF bSetPiece[SS_FORKLIFT_SUPERVISOR_A]
IF NOT DOES_ENTITY_EXIST(s_sp_forklift_supervisorA[0].ped)
IF eMissionStage > MISSION_STAGE_1
REQUEST_MODEL(s_sp_forklift_supervisorA[0].model)
IF HAS_MODEL_LOADED(s_sp_forklift_supervisorA[0].model)
s_sp_forklift_supervisorA[0].ped = CREATE_SETPIECE_PED(s_sp_forklift_supervisorA[0].model,s_sp_forklift_supervisorA[0].v_spawn_position, s_sp_forklift_supervisorA[0].f_start_heading, rel_group_buddies, 200, 0)
INITIALISE_SETPIECE_GROUP(s_sp_forklift_supervisorA, "Supervisor A")
//Set supervisor to specific variation
SET_PED_COMPONENT_VARIATION(s_sp_forklift_supervisorA[0].ped, INT_TO_ENUM(PED_COMPONENT,0), 1, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(s_sp_forklift_supervisorA[0].ped, INT_TO_ENUM(PED_COMPONENT,3), 0, 2, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(s_sp_forklift_supervisorA[0].ped, INT_TO_ENUM(PED_COMPONENT,4), 1, 1, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(s_sp_forklift_supervisorA[0].ped, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sd_forklift_supervisor_a.v_scene_pos) < 50
SWITCH s_sp_forklift_supervisorA[0].i_event
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@start_idle")
s_sp_forklift_supervisorA[0].i_event ++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_9@start_idle")
IF NOT DOES_ENTITY_EXIST(objClipboard[1])
objClipboard[1] = CREATE_OBJECT(P_CS_CLIPBOARD,<<-131.08, -2423.25, 8.00>>)
ELSE
IF NOT DOES_ENTITY_EXIST(objPencil[1])
objPencil[1] = CREATE_OBJECT(PROP_PENCIL_01,<<-131.08, -2423.25, 8.00>>)
ELSE
IF DOES_ENTITY_EXIST(s_sp_forklift_supervisorA[0].ped)
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
ATTACH_ENTITY_TO_ENTITY(objPencil[1],s_sp_forklift_supervisorA[0].ped,GET_PED_BONE_INDEX(s_sp_forklift_supervisorA[0].ped, BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
ATTACH_ENTITY_TO_ENTITY(objClipboard[1],s_sp_forklift_supervisorA[0].ped,GET_PED_BONE_INDEX(s_sp_forklift_supervisorA[0].ped, BONETAG_PH_L_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
TASK_PLAY_ANIM(s_sp_forklift_supervisorA[0].ped,"missheistdockssetup1ig_9@start_idle", "forklift_supervise_idlebase_supervisor",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING)
SET_PED_CAN_RAGDOLL(s_sp_forklift_supervisorA[0].ped,TRUE)
s_sp_forklift_supervisorA[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
/*
___ _ ___ _ __ _ ___ ___ __ _ _ ___ ___ ___ _ _ _ __ _ ___ ___
| __/ \| o \ |// | | | __|_ _| / _| | | o \ __| o \ | | / _|/ \| o \ | o )
| _( o ) / (| |_| | _| | | \_ \ U | _/ _|| / V | \_ ( o ) / | o \
|_| \_/|_|\\_|\\___|_|_| |_| |__/___|_| |___|_|\\\_/|_|__/\_/|_|\\ |___/*/
IF bSetPiece[SS_FORKLIFT_SUPERVISOR_B]
IF NOT DOES_ENTITY_EXIST(s_sp_forklift_supervisorB[0].ped)
IF eMissionStage > MISSION_STAGE_1
AND eMissionStage < MISSION_STAGE_5
REQUEST_MODEL(s_sp_forklift_supervisorB[0].model)
IF HAS_MODEL_LOADED(s_sp_forklift_supervisorB[0].model)
IF IS_SCENE_DATA_READY(s_sd_forklift_supervisor_b)
s_sp_forklift_supervisorB[0].ped = CREATE_SETPIECE_PED(s_sp_forklift_supervisorB[0].model,s_sp_forklift_supervisorB[0].v_spawn_position, s_sp_dock_workers_talking[0].f_start_heading, rel_group_buddies, 200, 0)
INITIALISE_SETPIECE_GROUP(s_sp_forklift_supervisorA, "Supervisor B")
ELSE
GET_SCENE_DATA(SS_FORKLIFT_SUPERVISOR_B)
ENDIF
ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sd_forklift_supervisor_b.v_scene_pos) < 50
//REPEAT COUNT_OF(s_sp_forklift_supervisorB) i
//IF DOES_ENTITY_EXIST(s_sp_forklift_supervisorB[i].ped)
//IF NOT IS_PED_INJURED(s_sp_forklift_supervisorB[i].ped)
SWITCH s_sp_forklift_supervisorB[0].i_event
//GET PEDS INTO POSITION
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
s_sp_forklift_supervisorB[0].i_event ++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_2_p1@new_structure")
IF DOES_ENTITY_EXIST(s_sp_forklift_supervisorB[0].ped)
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorB[0].ped)
sceneForkliftB1= CREATE_SYNCHRONIZED_SCENE(s_sd_forklift_supervisor_b.v_scene_pos,s_sd_forklift_supervisor_b.v_scene_rot)
//TASK_SYNCHRONIZED_SCENE (s_sp_forklift_supervisorB[0].ped, sceneForkliftB1, "missheistdockssetup1ig_12", "TALK_Gantry_Idle_C_Worker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneForkliftB1,TRUE)
s_sp_forklift_supervisorB[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
BREAK
ENDSWITCH
//ENDIF
//ENDIF
//ENDREPEAT
ELSE
ENDIF
ENDIF
ENDIF
/*
__ ___ _ ___ _ __ __ ___ _ _ _ ___ __ _ ___ ____
/ _|_ _/ \_ _| |/ _| / _| o \/ \| \| | __| / _|| | \ V / _|
\_ \| | o | || ( (_ ( (_| / o | \\ | _| ( |_n| U |\ /\_ \
|__/|_|_n_|_||_|\__| \__|_|\\_n_|_|\_|___| \__/|___||_||__/ */
//ANIMS DONE
IF bSetPiece[SS_STATIC_GANTRY_GUYS]
IF NOT DOES_ENTITY_EXIST(s_sp_gantry_guys_static[0].ped)
REQUEST_MODEL(s_sp_gantry_guys_static[0].model)
REQUEST_MODEL(s_sp_gantry_guys_static[1].model)
IF HAS_MODEL_LOADED(s_sp_gantry_guys_static[0].model)
AND HAS_MODEL_LOADED(s_sp_gantry_guys_static[1].model)
//IF IS_SCENE_DATA_READY(s_sd_gantry_guys_static)
s_sp_gantry_guys_static[0].ped = CREATE_SETPIECE_PED(s_sp_gantry_guys_static[0].model,s_sp_gantry_guys_static[0].v_ss_pos, s_sp_gantry_guys_static[0].f_ss_rot, rel_group_buddies, 200, 0)
s_sp_gantry_guys_static[1].ped = CREATE_SETPIECE_PED(s_sp_gantry_guys_static[1].model,s_sp_gantry_guys_static[1].v_ss_pos, s_sp_gantry_guys_static[1].f_ss_rot, rel_group_buddies, 200, 0)
INITIALISE_SETPIECE_GROUP(s_sp_gantry_guys_static, "Static Crane guys")
//ELSE
//GET_SCENE_DATA(SS_STATIC_GANTRY_GUYS)
//ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
//REPEAT COUNT_OF(s_sp_gantry_guys_static) i
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos,s_sd_gantry_guys_static.v_scene_pos) < 100
//IF DOES_ENTITY_EXIST(s_sp_gantry_guys_static[i].ped)
//IF NOT IS_PED_INJURED(s_sp_gantry_guys_static[i].ped)
SWITCH s_sp_gantry_guys_static[0].i_event
//GET PEDS INTO POSITION
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1ig_12@base")
s_sp_gantry_guys_static[0].i_event ++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_12@base")
IF DOES_ENTITY_EXIST(s_sp_gantry_guys_static[0].ped)
AND DOES_ENTITY_EXIST(s_sp_gantry_guys_static[1].ped)
IF NOT IS_PED_INJURED(s_sp_gantry_guys_static[0].ped)
AND NOT IS_PED_INJURED(s_sp_gantry_guys_static[1].ped)
sceneCraneStatic = CREATE_SYNCHRONIZED_SCENE(s_sd_gantry_guys_static.v_scene_pos,s_sd_gantry_guys_static.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_static[0].ped, sceneCraneStatic,"missheistdockssetup1ig_12@base", "talk_gantry_idle_base_worker2", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_gantry_guys_static[1].ped, sceneCraneStatic,"missheistdockssetup1ig_12@base", "talk_gantry_idle_base_worker1", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneCraneStatic,TRUE)
s_sp_gantry_guys_static[0].i_event ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
BREAK
ENDSWITCH
ENDIF
//ENDIF
//ENDIF
//ENDREPEAT
ENDIF
ENDIF
ENDPROC
// ======================================================================
// The Crane
// ======================================================================
FUNC BOOL CAN_CRANE_PICK_UP_CONTAINER(VECTOR v_container_pos, VECTOR v_spreader_pos)
IF NOT bForceNoGrab
IF ABSF(v_container_pos.x - v_spreader_pos.x) < fVal1
IF ABSF(v_container_pos.y - v_spreader_pos.y) < fVal2
IF (v_spreader_pos.z - v_container_pos.z) > fVal3
IF (v_spreader_pos.z - v_container_pos.z) < fVal4
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
INT iSoundAttachementTime
PROC CHECK_CONTAINER_ATTACHING(OBJECT_INDEX &obj_container)
//VECTOR vTempOffset
IF NOT bForceNoGrab
IF HAS_ANIM_DICT_LOADED("map_objects")
IF IS_ENTITY_ATTACHED(obj_container)
PLAY_ENTITY_ANIM(s_crane.obj_spreader, "Dock_crane_SLD_unload", "map_objects", NORMAL_BLEND_IN, FALSE, TRUE)
DETACH_ENTITY(obj_container, TRUE, FALSE)
SET_OBJECT_PHYSICS_PARAMS(obj_container, -1.0, -1.0, <<-1.0, -1.0, -1.0>>, <<-1.0, -1.0, -1.0>>)
PLAY_SOUND_FROM_ENTITY(-1, "Detach_Container", obj_container, "CRANE_SOUNDS")
iSoundAttachementTime = GET_GAME_TIMER()
s_crane.b_container_attached = FALSE
ELSE
IF NOT s_crane.b_container_attached
IF CAN_CRANE_PICK_UP_CONTAINER(GET_ENTITY_COORDS(obj_container), GET_ENTITY_COORDS(s_crane.obj_spreader))
PLAY_ENTITY_ANIM(s_crane.obj_spreader, "Dock_crane_SLD_load", "map_objects", NORMAL_BLEND_IN, FALSE, TRUE)
FREEZE_ENTITY_POSITION(obj_container, FALSE)
ATTACH_ENTITY_TO_ENTITY_PHYSICALLY(obj_container, s_crane.obj_spreader, -1, -1, vAttach1, vAttach2, vAttachRot, -1.0, b1, b2, b3, b4)
PLAY_SOUND_FROM_ENTITY(-1, "Attach_Container", obj_container, "CRANE_SOUNDS")
iSoundAttachementTime = GET_GAME_TIMER()
s_crane.b_container_attached = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
ENUM CRANE_ACTION
CRANE_ACTION_SPREADER,
CRANE_ACTION_CABIN,
CRANE_ACTION_GRABBER,
CRANE_ACTION_CRANE
ENDENUM
PROC INHIBIT_CRANE(CRANE_ACTION eAction)
IF eAction = CRANE_ACTION_SPREADER
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y)
ENDIF
IF eAction = CRANE_ACTION_GRABBER
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
ENDIF
IF eAction = CRANE_ACTION_CABIN
IF b_is_crane_cinematic_active
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_X)
ELSE
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_Y)
ENDIF
ENDIF
IF eAction = CRANE_ACTION_CRANE
IF b_is_crane_cinematic_active
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_Y)
ELSE
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_X)
ENDIF
ENDIF
ENDPROC
INT iMapAngle = 270
INT iOverheadMapAngle = 225
PROC MANAGE_CRANE(BOOL b_force_cam_into_position = FALSE)
ALLOW_ALTERNATIVE_SCRIPT_CONTROLS_LAYOUT(PLAYER_CONTROL)
ALLOW_ALTERNATIVE_SCRIPT_CONTROLS_LAYOUT(FRONTEND_CONTROL)
SET_RADAR_AS_INTERIOR_THIS_FRAME(GET_HASH_KEY("V_FakePortContainersPO102"), -80.0,-2410)
IF b_is_crane_cinematic_active
LOCK_MINIMAP_ANGLE(iMapAngle)
IF NOT HAS_LABEL_BEEN_TRIGGERED("CRANE TIMECYCLE")
CASCADE_SHADOWS_INIT_SESSION()
CLEAR_TIMECYCLE_MODIFIER()
SET_TIMECYCLE_MODIFIER("crane_cam")
SET_LABEL_AS_TRIGGERED("CRANE TIMECYCLE",TRUE)
SET_LABEL_AS_TRIGGERED("CINEMATIC TIMECYCLE",FALSE)
ENDIF
ELSE
LOCK_MINIMAP_ANGLE(iOverheadMapAngle)
IF NOT HAS_LABEL_BEEN_TRIGGERED("CINEMATIC TIMECYCLE")
CASCADE_SHADOWS_SET_SPLIT_Z_EXP_WEIGHT(0.5)
CASCADE_SHADOWS_SET_CASCADE_BOUNDS_SCALE(0.2)
CLEAR_TIMECYCLE_MODIFIER()
SET_TIMECYCLE_MODIFIER("crane_cam_cinematic")
SET_LABEL_AS_TRIGGERED("CINEMATIC TIMECYCLE",TRUE)
SET_LABEL_AS_TRIGGERED("CRANE TIMECYCLE",FALSE)
ENDIF
ENDIF
INT i_left_x = 0
INT i_left_y = 0
INT i_right_y = 0
//,i_right_x
IF bInhibitCrane = FALSE
//GET_POSITION_OF_ANALOGUE_STICKS(PAD1, i_left_x, i_left_y, i_right_x, i_right_y)
i_left_x = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_X) - 128
i_left_y = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_SCRIPT_RIGHT_AXIS_Y) - 128
i_right_y = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) - 128
ENDIF
INT i = 0
INT iCurrentlyAttachedContainer = -1
REPEAT COUNT_OF(s_Containers) i
IF DOES_ENTITY_EXIST(s_Containers[i].obj_Main)
IF IS_ENTITY_ATTACHED(s_Containers[i].obj_Main)
iCurrentlyAttachedContainer = i
ENDIF
ENDIF
ENDREPEAT
//IMRAN assigned to d pad
// IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
// i_left_x = 127
// //i_left_y = -127
// ENDIF
//
// IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
// i_left_x = -127
// //i_left_y = 127
// ENDIF
//
// IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
// i_left_y = -127
// //i_left_x = -127
// ENDIF
//
// IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
// i_left_y = 127
// //i_left_x = 127
// ENDIF
//Cap really small values to prevent jittering
IF ABSI(i_Left_X) < 15
i_Left_X = 0
ENDIF
IF ABSI(i_Left_Y) < 15
i_Left_Y = 0
ENDIF
IF ABSI(i_Right_Y) < 15
i_Right_Y = 0
ENDIF
//Detect if the spreader has hit the ground. If this is the case don't unwind ropes and don't move the camera.
VECTOR v_spreader_vel = GET_ENTITY_VELOCITY(s_crane.obj_spreader)
VECTOR v_spreader_pos = GET_ENTITY_COORDS(s_crane.obj_spreader)
VECTOR v_spreader_rot = GET_ENTITY_ROTATION(s_crane.obj_spreader)
VECTOR vLeftOffset1, vLeftOffset2, vRightOffset1, vRightOffset2, vBottomOffset1, vBottomOffset2
IF iCurrentlyAttachedContainer >= 0
vBottomOffset1 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, <<0.0, 5.0, -3.5>>)
vBottomOffset2 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, <<0.0, -5.0, -3.5>>)
ELSE
vBottomOffset1 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, <<0.0, 5.0, -1.0>>)
vBottomOffset2 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, <<0.0, -5.0, -1.0>>)
ENDIF
REQUEST_ANIM_DICT("map_objects")
IF NOT s_crane.b_spreader_stuck_on_ground
IF i_right_y >= 1
s_crane.i_num_vertical_movement_frames++
IF s_crane.i_num_vertical_movement_frames > 10
IF v_spreader_vel.z > -0.1
AND ABSF(v_spreader_rot.y) < 5.0
AND ABSF(s_crane.v_prev_spreader_rot.y - v_spreader_rot.y) < 0.5
s_crane.b_spreader_stuck_on_ground = TRUE
s_crane.i_num_vertical_movement_frames = 0
s_crane.i_num_cabin_movement_frames = 0
ENDIF
ENDIF
ELSE
s_crane.i_num_vertical_movement_frames = 0
s_crane.i_num_cabin_movement_frames = 0
ENDIF
ELSE
IF i_left_x != 0
s_crane.i_num_cabin_movement_frames++
ENDIF
IF ABSF(s_crane.v_prev_spreader_pos.z - v_spreader_pos.z) > 0.01
OR ABSF(s_crane.v_prev_spreader_rot.y - v_spreader_rot.y) > 0.5
OR ABSF(v_spreader_rot.y) > 5.0
OR ABSF(v_spreader_rot.x) > 5.0
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
s_crane.b_spreader_stuck_on_ground = FALSE
s_crane.i_num_vertical_movement_frames = 0
s_crane.i_num_cabin_movement_frames = 0
ENDIF
ENDIF
s_crane.v_prev_spreader_pos = v_spreader_pos
s_crane.v_prev_spreader_rot = v_spreader_rot
REPEAT 8 i
STOP_ROPE_UNWINDING_FRONT(s_crane.ropes[i])
STOP_ROPE_WINDING(s_crane.ropes[i])
IF i_right_y < 0
START_ROPE_WINDING(s_crane.ropes[i])
ENDIF
IF i_right_y > 0
START_ROPE_UNWINDING_FRONT(s_crane.ropes[i])
ENDIF
ENDREPEAT
//Detect if the spreader is being pushed downwards into map collision, if this is the case we need to disable rope unwinding.
IF i_Right_Y > 0
FLOAT fGroundZ1, fGroundZ2
GET_GROUND_Z_FOR_3D_COORD(vBottomOffset1 + <<0.0, 0.0, 50.0>>, fGroundZ1)
GET_GROUND_Z_FOR_3D_COORD(vBottomOffset2 + <<0.0, 0.0, 50.0>>, fGroundZ2)
IF fGroundZ1 > vBottomOffset1.z OR fGroundZ2 > vBottomOffset2.z
i_Right_Y = 0
ENDIF
//SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
//DRAW_DEBUG_SPHERE(vBottomOffset1, 0.1)
//DRAW_DEBUG_SPHERE(vBottomOffset2, 0.1)
ENDIF
//Detect if the spreader is moving sideways into map collision, if this is the case we need to disable movement in a direction based on which side is touching.
IF i_Left_X != 0
FLOAT fLeftGroundZ1, fLeftGroundZ2, fRightGroundZ1, fRightGroundZ2
GET_GROUND_Z_FOR_3D_COORD(vLeftOffset1 + <<0.0, 0.0, 50.0>>, fLeftGroundZ1)
GET_GROUND_Z_FOR_3D_COORD(vLeftOffset2 + <<0.0, 0.0, 50.0>>, fLeftGroundZ2)
GET_GROUND_Z_FOR_3D_COORD(vRightOffset1 + <<0.0, 0.0, 50.0>>, fRightGroundZ1)
GET_GROUND_Z_FOR_3D_COORD(vRightOffset2 + <<0.0, 0.0, 50.0>>, fRightGroundZ2)
IF fLeftGroundZ1 > vLeftOffset1.z OR fLeftGroundZ2 > vLeftOffset2.z
IF i_Left_X < 0
PRINTSTRING("INHIBIT SPREADER SIDEWAYS")PRINTNL()
//INHIBIT_CRANE(CRANE_ACTION_CABIN)
i_Left_X = 0
ENDIF
ELIF fRightGroundZ1 > vRightOffset1.z OR fRightGroundZ2 > vRightOffset2.z
IF i_Left_X > 0
PRINTSTRING("INHIBIT SPREADER SIDEWAYS")PRINTNL()
//INHIBIT_CRANE(CRANE_ACTION_CABIN)
i_Left_X = 0
ENDIF
ENDIF
ENDIF
//Detech for moving fowards into collision
IF i_Left_Y != 0
FLOAT fLeftGroundZ1, fLeftGroundZ2, fRightGroundZ1, fRightGroundZ2
GET_GROUND_Z_FOR_3D_COORD(vLeftOffset1 + <<0.0, 0.0, 50.0>>, fLeftGroundZ1)
GET_GROUND_Z_FOR_3D_COORD(vLeftOffset2 + <<0.0, 0.0, 50.0>>, fLeftGroundZ2)
GET_GROUND_Z_FOR_3D_COORD(vRightOffset1 + <<0.0, 0.0, 50.0>>, fRightGroundZ1)
GET_GROUND_Z_FOR_3D_COORD(vRightOffset2 + <<0.0, 0.0, 50.0>>, fRightGroundZ2)
IF fLeftGroundZ1 > vLeftOffset1.z OR fLeftGroundZ2 > vLeftOffset2.z
IF i_Left_Y < 0
PRINTSTRING("INHIBIT SPREADER FORWARD")PRINTNL()
// INHIBIT_CRANE(CRANE_ACTION_CRANE)
i_Left_Y = 0
ENDIF
ELIF fRightGroundZ1 > vRightOffset1.z OR fRightGroundZ2 > vRightOffset2.z
IF i_Left_Y > 0
PRINTSTRING("INHIBIT SPREADER FORWARD")PRINTNL()
//INHIBIT_CRANE(CRANE_ACTION_CRANE)
i_Left_Y = 0
ENDIF
ENDIF
ENDIF
//Detect if the spreader is touching one of the other containers, disable movement in this case too.
REPEAT COUNT_OF(s_Containers) i
IF DOES_ENTITY_EXIST(s_Containers[i].obj_main)
IF i != iCurrentlyAttachedContainer
IF i_Left_X != 0
IF IS_POINT_IN_ANGLED_AREA(vLeftOffset1, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, -6.0, 0.0>>),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, 6.0, 3.0>>), 3.0)
OR IS_POINT_IN_ANGLED_AREA(vLeftOffset2, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, -6.0, 0.0>>),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, 6.0, 3.0>>), 3.0)
IF i_Left_X < 0
PRINTSTRING("INHIBIT SPREADER DOWN")PRINTNL()
//INHIBIT_CRANE(CRANE_ACTION_CABIN)
i_Left_X = 0
ENDIF
ENDIF
IF IS_POINT_IN_ANGLED_AREA(vRightOffset1, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, -6.0, 0.0>>),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, 6.0, 3.0>>), 3.0)
OR IS_POINT_IN_ANGLED_AREA(vRightOffset2, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, -6.0, 0.0>>),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, 6.0, 3.0>>), 3.0)
IF i_Left_X > 0
PRINTSTRING("INHIBIT SPREADER DOWN")PRINTNL()
//INHIBIT_CRANE(CRANE_ACTION_CABIN)
i_Left_X = 0
ENDIF
ENDIF
ENDIF
IF i_Right_Y > 0
IF IS_POINT_IN_ANGLED_AREA(vBottomOffset1, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, -6.0, 0.0>>),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, 6.0, 2.7>>), 3.0)
OR IS_POINT_IN_ANGLED_AREA(vBottomOffset2, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, -6.0, 0.0>>),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Containers[i].obj_main, <<0.0, 6.0, 2.7>>), 3.0)
i_Right_Y = 0
PRINTSTRING("INHIBIT SPREADER DOWN")PRINTNL()
//INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
IF NOT b_is_audio_scene_active
START_AUDIO_SCENE("CAR_THEFT_EXPORT_CARS_CRANE_SECTION_SCENE")
b_is_audio_scene_active = TRUE
ENDIF
//TODO 100140: should not be able to move diagonally on the left stick, cancel one axis out if the other is greater.
IF ABSI(i_left_x) > ABSI(i_left_y)
i_left_y = 0
ELSE
i_left_x = 0
ENDIF
//CABIN
FLOAT f_cabin_speed_modifier = 1.0
IF ABSF(s_crane.v_cabin_attach_offset.y - MAX_CABIN_Y) < 4.0 AND s_crane.f_cabin_vel > 0.0
f_cabin_speed_modifier = ABSF(s_crane.v_cabin_attach_offset.y - MAX_CABIN_y) / 4.0
ELIF ABSF(s_crane.v_cabin_attach_offset.y - MIN_CABIN_Y) < 4.0 AND s_crane.f_cabin_vel < 0.0
f_cabin_speed_modifier = ABSF(s_crane.v_cabin_attach_offset.y - MIN_CABIN_y) / 4.0
ENDIF
FLOAT f_desired_cabin_vel
//CHANGED CONTROLS
IF b_is_crane_cinematic_active
f_desired_cabin_vel = ((TO_FLOAT(i_left_x) / 128.0) * MAX_CABIN_VEL) * f_cabin_speed_modifier
CONVERGE_VALUE(s_crane.f_cabin_vel, f_desired_cabin_vel, CABIN_ACCEL, TRUE)
s_crane.v_cabin_attach_offset.y = s_crane.v_cabin_attach_offset.y +@ s_crane.f_cabin_vel
ELSE
f_desired_cabin_vel = ((TO_FLOAT(i_left_y) / -128.0) * MAX_CABIN_VEL) * f_cabin_speed_modifier
CONVERGE_VALUE(s_crane.f_cabin_vel, f_desired_cabin_vel, CABIN_ACCEL, TRUE)
s_crane.v_cabin_attach_offset.y = s_crane.v_cabin_attach_offset.y +@ s_crane.f_cabin_vel
ENDIF
// IF b_is_crane_cinematic_active
// f_desired_cabin_vel = ((TO_FLOAT(i_left_x) / 128.0) * MAX_CABIN_VEL) * f_cabin_speed_modifier
// CONVERGE_VALUE(s_crane.f_cabin_vel, f_desired_cabin_vel, CABIN_ACCEL, TRUE)
// s_crane.v_cabin_attach_offset.y = s_crane.v_cabin_attach_offset.y +@ s_crane.f_cabin_vel
// ELSE
// f_desired_cabin_vel = ((TO_FLOAT(i_left_x) / 128.0) * MAX_CABIN_VEL) * f_cabin_speed_modifier
// CONVERGE_VALUE(s_crane.f_cabin_vel, f_desired_cabin_vel, CABIN_ACCEL, TRUE)
// s_crane.v_cabin_attach_offset.y = s_crane.v_cabin_attach_offset.y +@ s_crane.f_cabin_vel
// ENDIF
IF s_crane.v_cabin_attach_offset.y < MIN_CABIN_Y
s_crane.v_cabin_attach_offset.y = MIN_CABIN_Y
s_crane.f_cabin_vel = 0.0
ELIF s_crane.v_cabin_attach_offset.y > MAX_CABIN_Y
s_crane.v_cabin_attach_offset.y = MAX_CABIN_Y
s_crane.f_cabin_vel = 0.0
ENDIF
////
//CABIN AUDIO
IF ABSF(s_crane.f_cabin_vel) > AUDIO_TRIGGER_THRESHOLD
IF HAS_SOUND_FINISHED(s_crane.i_cabin_sound_id)
PLAY_SOUND_FROM_ENTITY(s_crane.i_cabin_sound_id, "Move_L_R", s_crane.obj_spreader, "CRANE_SOUNDS")
////PRINTLN("CABIN AUDIO PLAYING")//PRINTNL()
ENDIF
SET_VARIABLE_ON_SOUND(s_crane.i_cabin_sound_id, "Speed", ABSF(s_crane.f_cabin_vel / MAX_CABIN_VEL))
ELSE
IF NOT HAS_SOUND_FINISHED(s_crane.i_cabin_sound_id)
STOP_SOUND(s_crane.i_cabin_sound_id)
ENDIF
ENDIF
//SPREADER
FLOAT f_spreader_speed_modifier = 1.0
IF ABSF(s_crane.v_spreader_attach_offset.z - MAX_SPREADER_Z) < 4.0 AND s_crane.f_spreader_vel > 0.0
f_spreader_speed_modifier = ABSF(s_crane.v_spreader_attach_offset.z - MAX_SPREADER_Z) / 4.0
ELIF ABSF(s_crane.v_spreader_attach_offset.z - MIN_SPREADER_Z) < 4.0 AND s_crane.f_spreader_vel < 0.0
f_spreader_speed_modifier = ABSF(s_crane.v_spreader_attach_offset.z - MIN_SPREADER_Z) / 4.0
ENDIF
FLOAT f_desired_spreader_vel = ((TO_FLOAT(i_right_y) / 128.0) * -MAX_SPREADER_VEL) * f_spreader_speed_modifier
IF s_crane.b_spreader_stuck_on_ground
IF f_desired_spreader_vel < 0.0
f_desired_spreader_vel = 0.0
ENDIF
ENDIF
IF b_is_crane_cinematic_active
f_desired_spreader_vel = ((TO_FLOAT(i_right_y) / 128.0) * MAX_SPREADER_VEL) * f_spreader_speed_modifier
CONVERGE_VALUE(s_crane.f_spreader_vel, f_desired_spreader_vel, SPREADER_ACCEL, TRUE)
s_crane.v_spreader_attach_offset.z = s_crane.v_spreader_attach_offset.z +@ s_crane.f_spreader_vel
ELSE
f_desired_spreader_vel = ((TO_FLOAT(i_right_y) / 128.0) * -MAX_SPREADER_VEL) * f_spreader_speed_modifier
CONVERGE_VALUE(s_crane.f_spreader_vel, f_desired_spreader_vel, SPREADER_ACCEL, TRUE)
s_crane.v_spreader_attach_offset.z = s_crane.v_spreader_attach_offset.z +@ s_crane.f_spreader_vel
ENDIF
IF s_crane.v_spreader_attach_offset.z < MIN_SPREADER_Z
s_crane.v_spreader_attach_offset.z = MIN_SPREADER_Z
s_crane.f_spreader_vel = 0.0
ELIF s_crane.v_spreader_attach_offset.z > MAX_SPREADER_Z
s_crane.v_spreader_attach_offset.z = MAX_SPREADER_Z
s_crane.f_spreader_vel = 0.0
ENDIF
//DETACH_ENTITY(s_crane.obj_spreader)
//ATTACH_ENTITY_TO_ENTITY(s_crane.obj_spreader, s_crane.obj_cabin, 0, s_crane.v_spreader_attach_offset, <<0.0, 0.0, 0.0>>)
v_helper_offset = <<s_crane.v_spreader_attach_offset.x, s_crane.v_spreader_attach_offset.y, s_crane.v_spreader_attach_offset.z - SPREADER_START_OFFSET>>
IF DOES_ENTITY_EXIST(s_crane.obj_cabin)
SET_ENTITY_COORDS_NO_OFFSET(s_crane.obj_helper, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, v_helper_offset))
ENDIF
IF NOT MANAGE_MY_TIMER(iSoundAttachementTime,5000)
IF NOT HAS_LABEL_BEEN_TRIGGERED("CLAMP SOUND")
PRINTSTRING("PLAYINGSOUND")PRINTNL()
PLAY_SOUND_FROM_ENTITY(iCraneSound, "Clamp", s_crane.obj_spreader, "CRANE_SOUNDS")
SET_LABEL_AS_TRIGGERED("CLAMP SOUND",TRUE)
ENDIF
ELSE
IF HAS_LABEL_BEEN_TRIGGERED("CLAMP SOUND")
PRINTSTRING("STOPPEDSOUND")PRINTNL()
STOP_SOUND(iCraneSound)
SET_LABEL_AS_TRIGGERED("CLAMP SOUND",FALSE)
ENDIF
ENDIF
VECTOR vSpreaderPos
IF DOES_ENTITY_EXIST(s_Crane.obj_spreader)
vSpreaderPos = GET_ENTITY_COORDS(s_Crane.obj_spreader)
ENDIF
//SPEADER AUDIO
IF i_Right_Y != 0
AND NOT s_crane.b_spreader_stuck_on_ground
PRINTSTRING("vSpreaderPos")PRINTVECTOR(vSpreaderPos)PRINTNL()
IF vSpreaderPos. z > 17.52
IF HAS_SOUND_FINISHED(s_Crane.i_spreader_sound_id)
PLAY_SOUND_FROM_ENTITY(s_Crane.i_spreader_sound_id, "Move_Fail", s_Crane.obj_spreader, "CRANE_SOUNDS")
//PRINTLN("SPREADER AUDIO PLAYING")//PRINTNL()
ENDIF
SET_VARIABLE_ON_SOUND(s_Crane.i_spreader_sound_id, "Speed", MAX_SPREADER_VEL / 2.0)
ELSE
IF HAS_SOUND_FINISHED(s_Crane.i_spreader_sound_id)
PLAY_SOUND_FROM_ENTITY(s_Crane.i_spreader_sound_id, "Move_U_D", s_Crane.obj_spreader, "CRANE_SOUNDS")
//PRINTLN("SPREADER AUDIO PLAYING")//PRINTNL()
ENDIF
SET_VARIABLE_ON_SOUND(s_Crane.i_spreader_sound_id, "Speed", MAX_SPREADER_VEL / 2.0)
ENDIF
ELSE
IF NOT bFakeSound
IF NOT HAS_SOUND_FINISHED(s_Crane.i_spreader_sound_id)
STOP_SOUND(s_Crane.i_spreader_sound_id)
ENDIF
ENDIF
ENDIF
//MAIN CRANE
//CHANGE CRANE CONTROLS
//FLOAT f_desired_crane_vel = (TO_FLOAT(i_left_y) / 128.0) * -MAX_CRANE_VEL
IF b_is_crane_cinematic_active
FLOAT f_desired_crane_vel = (TO_FLOAT(i_left_y) / 128.0) * -MAX_CRANE_VEL
CONVERGE_VALUE(s_crane.f_crane_vel, f_desired_crane_vel, CRANE_ACCEL, TRUE)
s_crane.f_crane_offset = s_crane.f_crane_offset +@ s_crane.f_crane_vel
ELSE
FLOAT f_desired_crane_vel = (TO_FLOAT(i_left_x) / 128.0) * -MAX_CRANE_VEL
CONVERGE_VALUE(s_crane.f_crane_vel, f_desired_crane_vel, CRANE_ACCEL, TRUE)
s_crane.f_crane_offset = s_crane.f_crane_offset +@ s_crane.f_crane_vel
ENDIF
IF s_crane.f_crane_offset < MIN_CRANE_OFFSET
s_crane.f_crane_offset = MIN_CRANE_OFFSET
s_crane.f_crane_vel = 0.0
ELIF s_crane.f_crane_offset > MAX_CRANE_OFFSET
s_crane.f_crane_offset = MAX_CRANE_OFFSET
s_crane.f_crane_vel = 0.0
ENDIF
// DETACH_ENTITY(s_crane.obj_cabin)
// ATTACH_ENTITY_TO_ENTITY(s_crane.obj_cabin, s_crane.obj_main, -1, s_crane.v_cabin_attach_offset, <<0.0, 0.0, 0.0>>)
// SET_ENTITY_COORDS_NO_OFFSET(s_crane.obj_main, s_crane.v_start_pos + <<s_crane.f_crane_offset, 0.0, 0.0>>)
//PRINTSTRING("Crane Coords:")PRINTVECTOR(GET_ENTITY_COORDS(s_crane.obj_main))//PRINTNL()
//Spreader speed correction and damping
FLOAT spreader_damping = 0.0
IF ABSI(i_left_y) > 0 OR ABSI(i_left_x) > 0
s_crane.i_dampingframes = -1
VECTOR spreaderVelocity = GET_ENTITY_VELOCITY(s_crane.obj_spreader)
VECTOR desiredSpreaderVelocity = <<s_crane.f_crane_vel, -s_crane.f_cabin_vel, spreaderVelocity.z>>
FLOAT correctionSpeed = 0.3
APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS(s_crane.obj_spreader, APPLY_TYPE_IMPULSE, (desiredSpreaderVelocity-spreaderVelocity)*correctionSpeed, 0, FALSE, TRUE)
ELSE
IF s_crane.i_dampingframes = -1
s_crane.i_dampingframes = i_spreader_dampingframes
ENDIF
IF s_crane.i_dampingframes > 0
spreader_damping = f_spreader_damping
s_crane.i_dampingframes = s_crane.i_dampingframes - 1
ENDIF
ENDIF
SET_DAMPING( s_crane.obj_spreader, PHYSICS_DAMPING_LINEAR_V, spreader_damping)
//BASE AUDIO
//Audio
IF ABSF(s_crane.f_crane_vel) > AUDIO_TRIGGER_THRESHOLD
IF HAS_SOUND_FINISHED(s_crane.i_crane_sound_id)
PLAY_SOUND_FROM_ENTITY(s_crane.i_crane_sound_id, "Move_Base", s_crane.obj_spreader, "CRANE_SOUNDS")
ENDIF
SET_VARIABLE_ON_SOUND(s_crane.i_crane_sound_id, "Speed", ABSF(s_crane.f_crane_vel / MAX_CRANE_VEL))
ELSE
IF NOT HAS_SOUND_FINISHED(s_crane.i_crane_sound_id)
STOP_SOUND(s_crane.i_crane_sound_id)
ENDIF
ENDIF
//Fudge for spreader getting stuck: try to knock it into activity
VECTOR v_vel = GET_ENTITY_VELOCITY(s_crane.obj_spreader)
IF v_vel.x = 0.0 AND v_vel.y = 0.0 AND v_vel.z = 0.0
IF i_Right_Y < -10
SET_ENTITY_VELOCITY(s_crane.obj_spreader, <<0.0, 0.0, 4.0>>)
ENDIF
ENDIF
//Manage containers
REPEAT COUNT_OF(s_containers) i
IF DOES_ENTITY_EXIST(s_containers[i].obj_main)
s_containers[i].f_prev_speed = s_containers[i].f_speed
s_containers[i].f_speed = ABSF(GET_SCALAR_VELOCITY(GET_ENTITY_VELOCITY(s_containers[i].obj_main), FALSE))
VECTOR v_current_pos = GET_ENTITY_COORDS(s_containers[i].obj_main)
//Freeze if it's not moving (to stop it from being knocked too easily)
IF NOT IS_ENTITY_ATTACHED(s_containers[i].obj_main)
IF s_containers[i].f_speed < 0.02
IF v_current_pos.z > 1.0
FREEZE_ENTITY_POSITION(s_containers[i].obj_main, TRUE)
ENDIF
ENDIF
ENDIF
//Attachments
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
IF NOT CAN_CRANE_PICK_UP_CONTAINER(GET_ENTITY_COORDS(s_containers[0].obj_main), GET_ENTITY_COORDS(s_crane.obj_spreader))
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
IF NOT CAN_CRANE_PICK_UP_CONTAINER(GET_ENTITY_COORDS(s_containers[1].obj_main), GET_ENTITY_COORDS(s_crane.obj_spreader))
//Fail sound
IF HAS_SOUND_FINISHED(s_crane.i_spreader_fail_sound_id)
PLAY_SOUND_FROM_ENTITY(s_crane.i_spreader_fail_sound_id, "Attach_Container_Fail", s_crane.obj_spreader, "CRANE_SOUNDS")
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
CHECK_CONTAINER_ATTACHING(s_containers[i].obj_main)
ENDIF
//Container collision sounds - messy
FLOAT f_speed_diff = ABSF(s_containers[i].f_speed - s_containers[i].f_prev_speed)
IF f_speed_diff > 6.0
INT i_impact_sound_id = GET_SOUND_ID()
PLAY_SOUND_FROM_ENTITY(i_impact_sound_id, "Container_Impact", s_containers[i].obj_main, "CRANE_SOUNDS")
SET_VARIABLE_ON_SOUND(i_impact_sound_id, "Speed", f_speed_diff / 100.0)
RELEASE_SOUND_ID(i_impact_sound_id)
ENDIF
//Specific collision sound after dropping it
IF NOT IS_ENTITY_ATTACHED(s_containers[i].obj_main)
IF NOT s_containers[i].bCollisionSoundPrimed
IF GET_GAME_TIMER() - s_containers[i].iTimeSinceDropped < 3000
AND GET_GAME_TIMER() - s_containers[i].iTimeSinceLastCollisionSound > 4000
IF s_containers[i].f_speed > 5.0
s_containers[i].bCollisionSoundPrimed = TRUE
ENDIF
ENDIF
ELSE
IF HAS_ENTITY_COLLIDED_WITH_ANYTHING(s_containers[i].obj_main)
PLAY_SOUND_FROM_ENTITY(-1, "Container_Impact_Land", s_containers[i].obj_main, "CRANE_SOUNDS")
s_containers[i].bCollisionSoundPrimed = FALSE
s_containers[i].iTimeSinceLastCollisionSound = GET_GAME_TIMER()
ENDIF
ENDIF
ELSE
s_containers[i].bCollisionSoundPrimed = FALSE
s_containers[i].iTimeSinceLastCollisionSound = 0
ENDIF
ENDIF
ENDREPEAT
INT j = 0
IF ABSF(s_crane.f_spreader_vel) > 0.01
REPEAT 8 j
ROPE_RESET_LENGTH(s_crane.ropes[j], FALSE )
ENDREPEAT
ELSE
REPEAT 8 j
ROPE_RESET_LENGTH(s_crane.ropes[j], TRUE )
ENDREPEAT
FLOAT currentMaxLength = 0.0
FLOAT currentMinLength = 1000.0
FLOAT currentLength
REPEAT 8 j
currentLength = ROPE_GET_DISTANCE_BETWEEN_ENDS(s_crane.ropes[j])
IF currentLength > currentMaxLength
currentMaxLength = currentLength
ENDIF
IF currentLength < currentMinLength
currentMinLength = currentLength
ENDIF
ENDREPEAT
IF (currentMaxLength - currentMinLength) > 0.02
REPEAT 8 j
ROPE_FORCE_LENGTH(s_crane.ropes[j], currentMaxLength)
ENDREPEAT
ENDIF
ENDIF
//Camera: interp based on both the position of the cabin and the position of the spreader
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_SELECT)
b_is_crane_cinematic_active = NOT b_is_crane_cinematic_active
ENDIF
IF NOT DOES_CAM_EXIST(cam_cutscene)
cam_cutscene = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
SHAKE_CAM(cam_cutscene, "HAND_SHAKE", 0.1)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
ENDIF
SET_ENTITY_COORDS_NO_OFFSET(s_crane.obj_main, s_crane.v_start_pos + <<s_crane.f_crane_offset, 0.0, 0.0>>)
DETACH_ENTITY(s_crane.obj_cabin)
ATTACH_ENTITY_TO_ENTITY(s_crane.obj_cabin, s_crane.obj_main, -1, s_crane.v_cabin_attach_offset, <<0.0, 0.0, 0.0>>)
//Rotate wheels
REPEAT COUNT_OF(s_crane.obj_wheels) i
DETACH_ENTITY(s_crane.obj_wheels[i])
ATTACH_ENTITY_TO_ENTITY(s_crane.obj_wheels[i], s_crane.obj_main, -1, s_crane.v_wheel_offsets[i], <<0.0, s_crane.f_crane_offset*70*-1, 0.0>>)
ENDREPEAT
IF NOT b_is_crane_cinematic_active
VECTOR v_spreader_offset_from_cabin = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(s_crane.obj_cabin, v_spreader_pos)
VECTOR v_spreader_offset_from_main = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(s_crane.obj_main, v_spreader_pos)
IF v_spreader_offset_from_cabin.z < MIN_SPREADER_Z
v_spreader_offset_from_cabin.z = MIN_SPREADER_Z
ELIF v_spreader_offset_from_cabin.z > MAX_SPREADER_Z
v_spreader_offset_from_cabin.z = MAX_SPREADER_Z
ENDIF
IF v_spreader_offset_from_main.x < MIN_CABIN_Y
v_spreader_offset_from_main.x = MIN_CABIN_Y
ELIF v_spreader_offset_from_main.x > MAX_CABIN_Y
v_spreader_offset_from_main.x = MAX_CABIN_Y
ENDIF
FLOAT f_cabin_progress = (v_spreader_offset_from_main.x - MIN_CABIN_Y) / (MAX_CABIN_Y - MIN_CABIN_Y)
FLOAT f_spreader_progress = 1.0 - ((v_spreader_offset_from_cabin.z - MIN_SPREADER_Z) / (MAX_SPREADER_Z - MIN_SPREADER_Z))
IF b_force_cam_into_position
s_crane.f_cam_z_progress = f_spreader_progress
s_crane.f_cam_x_progress = f_cabin_progress
ELSE
s_crane.f_cam_z_progress = s_crane.f_cam_z_progress + ((f_spreader_progress - s_crane.f_cam_z_progress) * 0.2)
s_crane.f_cam_x_progress = s_crane.f_cam_x_progress + ((f_cabin_progress - s_crane.f_cam_x_progress) * 0.1)
ENDIF
VECTOR v_current_attach = v_cabin_attach_start
v_current_attach.x += (v_cabin_attach_end.x - v_cabin_attach_start.x) * s_crane.f_cam_x_progress
v_current_attach.y += (v_cabin_attach_end.y - v_cabin_attach_start.y) * s_crane.f_cam_x_progress
v_current_attach.z += (v_cabin_attach_end.z - v_cabin_attach_start.z) * s_crane.f_cam_x_progress
v_current_attach.x += (v_spreader_attach_end.x - v_spreader_attach_start.x) * s_crane.f_cam_z_progress
v_current_attach.y += (v_spreader_attach_end.y - v_spreader_attach_start.y) * s_crane.f_cam_z_progress
v_current_attach.z += (v_spreader_attach_end.z - v_spreader_attach_start.z) * s_crane.f_cam_z_progress
VECTOR v_current_point = v_cabin_point_start
v_current_point.x += (v_cabin_point_end.x - v_cabin_point_start.x) * s_crane.f_cam_x_progress
v_current_point.y += (v_cabin_point_end.y - v_cabin_point_start.y) * s_crane.f_cam_x_progress
v_current_point.z += (v_cabin_point_end.z - v_cabin_point_start.z) * s_crane.f_cam_x_progress
v_current_point.x += (v_spreader_point_end.x - v_spreader_point_start.x) * s_crane.f_cam_z_progress
v_current_point.y += (v_spreader_point_end.y - v_spreader_point_start.y) * s_crane.f_cam_z_progress
v_current_point.z += (v_spreader_point_end.z - v_spreader_point_start.z) * s_crane.f_cam_z_progress
ATTACH_CAM_TO_ENTITY(cam_cutscene, s_crane.obj_cabin, v_current_attach)
POINT_CAM_AT_ENTITY(cam_cutscene, s_crane.obj_cabin, v_current_point)
SET_CAM_FOV(cam_cutscene, f_crane_cam_fov)
SHAKE_CAM(cam_cutscene, "HAND_SHAKE", 0.1)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(-70.0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-70.0)
ELSE
VECTOR spreaderPos
spreaderPos = GET_ENTITY_COORDS( s_crane.obj_spreader )
VECTOR cabinPos
cabinPos = GET_ENTITY_COORDS( s_crane.obj_cabin )
VECTOR cameraPos
cameraPos.x = (cabinPos.x + spreaderPos.x) * 0.5 - spreaderPos.x // - 1.512
cameraPos.y = (cabinPos.y + spreaderPos.y) * 0.5 - spreaderPos.y
cameraPos.z = v_attach_to_cam_value.z - 1.55
ATTACH_CAM_TO_ENTITY(cam_cutscene, s_crane.obj_cabin, cameraPos)
// ATTACH_CAM_TO_ENTITY(cam_cutscene, s_crane.obj_cabin, v_attach_to_cam_value)
STOP_CAM_POINTING(cam_cutscene)
SET_CAM_NEAR_CLIP(cam_cutscene,0.1)
SET_CAM_ROT(cam_cutscene, v_crane_attach_cam_rot)
SET_CAM_FOV(cam_cutscene, f_crane_attach_cam_fov)
ENDIF
//Light: indicates where on the ground the spreader will land
//VECTOR v_spreader_pos = GET_ENTITY_COORDS(s_crane.obj_spreader)
VECTOR v_ground_pos = v_spreader_pos
GET_GROUND_Z_FOR_3D_COORD(v_spreader_pos, v_ground_pos.z)
v_ground_pos.z += 0.5
IF NOT s_crane.b_container_attached
REPEAT COUNT_OF(s_containers) i
IF DOES_ENTITY_EXIST(s_containers[i].obj_main)
VECTOR v_offset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(s_containers[i].obj_main, v_ground_pos)
IF ABSF(v_offset.x) < 1.3
IF ABSF(v_offset.y) < 6.0
IF v_offset.z < 2.8
VECTOR v_container_pos = GET_ENTITY_COORDS(s_containers[i].obj_main)
v_ground_pos.z = v_container_pos.z + 3.0
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
IF NOT s_crane.b_container_attached
IF DOES_ENTITY_EXIST(s_Crane.obj_Spreader)
DRAW_SPOT_LIGHT(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Crane.obj_Spreader,<<1.2658, 6.0654, -0.6602>>),<<0,0,-1>>,0, 255, 0, fFallOff,fIntensity,fInnerAngle,fOuterAngle,fExposure)
DRAW_SPOT_LIGHT(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Crane.obj_Spreader,<<-1.2819, 6.0349, -0.7461>>),<<0,0,-1>>,0, 255, 0, fFallOff,fIntensity,fInnerAngle,fOuterAngle,fExposure)
DRAW_SPOT_LIGHT(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Crane.obj_Spreader,<<-1.2073, -5.9944, -0.6715>>),<<0,0,-1>>,0, 255, 0, fFallOff,fIntensity,fInnerAngle,fOuterAngle,fExposure)
DRAW_SPOT_LIGHT(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_Crane.obj_Spreader,<<1.1668, -5.9398, -0.5084>>),<<0,0,-1>>,0, 255, 0, fFallOff,fIntensity,fInnerAngle,fOuterAngle,fExposure)
//DRAW_LIGHT_WITH_RANGE(v_ground_pos, 0, 255, 0, 4.0, 50.0)
ENDIF
ENDIF
//Strain sound effect: plays on the currently attached container.
IF s_Crane.b_container_attached
IF HAS_SOUND_FINISHED(s_Crane.i_strain_sound_Id)
REPEAT COUNT_OF(s_Containers) i
IF IS_ENTITY_ATTACHED_TO_ENTITY(s_Containers[i].obj_Main, s_Crane.obj_Spreader)
PLAY_SOUND_FROM_ENTITY(s_Crane.i_Strain_Sound_Id, "Strain", s_Containers[i].obj_Main, "CRANE_SOUNDS")
ENDIF
ENDREPEAT
ENDIF
ELSE
IF NOT HAS_SOUND_FINISHED(s_Crane.i_Strain_Sound_Id)
STOP_SOUND(s_Crane.i_Strain_Sound_Id)
ENDIF
ENDIF
ENDPROC
PROC REMOVE_ALL_OBJECTS(BOOL b_force_delete = FALSE)
REMOVE_OBJECT(s_crane.obj_spreader, TRUE)
REMOVE_OBJECT(s_crane.obj_cabin, TRUE)
REMOVE_OBJECT(s_crane.obj_lift, TRUE)
REMOVE_OBJECT(s_crane.obj_main, TRUE)
REMOVE_OBJECT(s_crane.obj_helper, TRUE)
REMOVE_OBJECT(s_crane.obj_boom_cable, TRUE)
INT i = 0
REPEAT COUNT_OF(s_containers) i
REMOVE_OBJECT(s_containers[i].obj_left_door, b_force_delete)
REMOVE_OBJECT(s_containers[i].obj_right_door, b_force_delete)
REMOVE_OBJECT(s_containers[i].obj_main, b_force_delete)
ENDREPEAT
REPEAT COUNT_OF(s_crane.obj_wheels) i
REMOVE_OBJECT(s_crane.obj_wheels[i], TRUE)
ENDREPEAT
ENDPROC
FUNC BOOL INITIALISE_CRANE(BOOL bPlacePlayerInside = TRUE)
//CRANE
IF DOES_ENTITY_EXIST(s_crane.obj_main)
INT i = 0
WAIT(0)
IF bPlacePlayerInside
REQUEST_ANIM_DICT("missheistdockssetup1trevor_crane")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1trevor_crane")
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(ssCraneAnims)
ssCraneAnims = CREATE_SYNCHRONIZED_SCENE(<< -0.100, -0.150, -0.350 >>,<< 0.000, 0.000, 0.000 >>)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(ssCraneAnims,s_crane.obj_cabin,-1)
TASK_SYNCHRONIZED_SCENE (PLAYER_PED_ID(), ssCraneAnims, "missheistdockssetup1trevor_crane", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(ssCraneAnims,FALSE)
SET_SYNCHRONIZED_SCENE_LOOPED(ssCraneAnims,TRUE)
ENDIF
ENDIF
ENDIF
//Close container doors
IF DOES_ENTITY_EXIST( s_containers[0].obj_main)
IF DOES_ENTITY_EXIST(s_containers[0].obj_left_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[0].obj_left_door, s_containers[0].obj_main, -1, v_left_door_offset, <<0.0, 0.0, 0.0>>)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_right_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[0].obj_right_door, s_containers[0].obj_main, -1, v_right_door_offset, <<0.0, 0.0, 0.0>>)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST( s_containers[1].obj_main)
IF DOES_ENTITY_EXIST(s_containers[1].obj_left_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[1].obj_left_door, s_containers[1].obj_main, -1, v_left_door_offset, <<0.0, 0.0, 0.0>>)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_right_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[1].obj_right_door, s_containers[1].obj_main, -1, v_right_door_offset, <<0.0, 0.0, 0.0>>)
ENDIF
ENDIF
//Attach crane parts to the main crane (collision is no longer needed on them)
//Added detach for freeze fix
DETACH_ENTITY(s_crane.obj_cabin)
FREEZE_ENTITY_POSITION(s_crane.obj_cabin, FALSE)
ATTACH_ENTITY_TO_ENTITY(s_crane.obj_cabin, s_crane.obj_main, -1, s_crane.v_cabin_attach_offset, <<0.0, 0.0, 0.0>>)
REPEAT COUNT_OF(s_crane.obj_wheels) i
//FREEZE_ENTITY_POSITION(s_crane.obj_wheels[i], FALSE)
ATTACH_ENTITY_TO_ENTITY(s_crane.obj_wheels[i], s_crane.obj_main, -1, s_crane.v_wheel_offsets[i], <<0.0, 0.0, 0.0>>)
ENDREPEAT
RETURN TRUE
ELSE
//SCRIPT_ASSERT("THE CRANE ISN'T LOADED IN...somehow.")
ENDIF
RETURN FALSE
ENDFUNC
// ======================================================================
// Waypoint Actions and Events
// ======================================================================
PROC MANAGE_PLAYER_OUTFIT()
PRINTSTRING("SETTING COMPONENTS")PRINTNL()
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT, OUTFIT_P2_DOCK_WORKER, FALSE)
SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR)
IF DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(pedFloyd)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HAIR, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_LEG, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HAND, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_FEET, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_SPECIAL, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_DECL, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_JBIB, 0, 0)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HAIR, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_LEG, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HAND, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_FEET, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_SPECIAL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_DECL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_JBIB, 0, 0)
ENDIF
ENDIF
ENDPROC
//Triggers and sets up waypoint actions for following floyd
PROC MANAGE_WAYPOINT_ACTIONS()
IF NOT IS_PED_INJURED(pedFloyd)
//PAUSE WHEN HE SEES THE SHIP
#IF CONST_IGNORE_THIS
IF IS_ENTITY_AT_COORD(pedFloyd,<< -116.8039, -2454.5374, 5.0187 >> ,<<2.0,2.0,2.0>>) AND bWaypointTask[2] = FALSE
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
WAYPOINT_PLAYBACK_PAUSE(pedFloyd,FALSE)
ENDIF
bWaypointTask[2] = TRUE
bDoCatchUp = FALSE
ENDIF
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(),GET_ENTITY_COORDS(pedFloyd),<<2.0,2.0,2.0>>) AND bWaypointTask[2] = TRUE
IF bNearShip = FALSE
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
OPEN_SEQUENCE_TASK(seqMain)
TASK_GO_STRAIGHT_TO_COORD(NULL,<< -117.9427, -2455.8772, 5.0191 >>,PEDMOVE_WALK)
TASK_ACHIEVE_HEADING(NULL,47.1444)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), seqMain)
IF NOT DOES_CAM_EXIST(camMain)
camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
ENDIF
SHAKE_CAM(camMain, "HAND_SHAKE", 0.01)
SET_CAM_PARAMS(camMain,
<< -116.3125, -2456.3374, 6.6209 >>, << -1.7519, -0.1310, 51.9340 >>,
41.1853,
0,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(camMain,
<< -116.3125, -2456.3374, 6.6209 >>, << 3.5014, -0.1310, 51.9340 >>,
24.4644,
6000,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
RENDER_SCRIPT_CAMS(TRUE, TRUE,3000)
SETTIMERA(0)
//bPrinted = FALSE
bNearShip = TRUE
ENDIF
ENDIF
IF bNearShip = TRUE AND bWaypointTask[3] = FALSE AND TIMERA() > 6000
CONTROL_COORD_CHASE_HINT_CAM_ON_FOOT(<< -217.4790, -2375.1294, 25.4562 >> )
RENDER_SCRIPT_CAMS(FALSE, TRUE,3000)
bDoCatchUp = TRUE
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
WAYPOINT_PLAYBACK_RESUME(pedFloyd,FALSE)
bWaypointTask[3] = TRUE
ENDIF
ENDIF
#ENDIF
//STOP FOR TRUCK
IF IS_ENTITY_AT_COORD(pedFloyd,<< -73.1476, -2514.1521, 5.0094 >>,<<2,2,2>>) AND bWaypointTask[0] = FALSE
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
//IF bTruckHasGone
//WAYPOINT_PLAYBACK_PAUSE(pedFloyd,FALSE)
bWaypointTask[0] = TRUE
//bDoCatchUp = FALSE
//ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[0])
IF IS_ENTITY_AT_COORD(vehDocks[0],<< -72.5587, -2502.6030, 5.0074 >>,<<8,8,8>>)
//bTruckHasGone = TRUE
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehDocks[0])
IF DOES_ENTITY_EXIST(vehDocks[0])
IF IS_ENTITY_AT_COORD(vehDocks[0],<< -72.5587, -2502.6030, 5.0074 >>,<<4,4,4>>) //AND bWaypointTask[1] = FALSE
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
WAYPOINT_PLAYBACK_RESUME(pedFloyd,FALSE)
bDoCatchUp = TRUE
bWaypointTask[1] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
//CRANE MOVING
IF bWaypointTask[4] = FALSE
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<< -72.5587, -2502.6030, 5.0074 >>,<<3,3,3>>)
//bPrinted = FALSE
//bPrinted = FALSE
bWaypointTask[4] = TRUE
ENDIF
ENDIF
//PRINTSTRING("bDOCatchUp:")PRINTBOOL(bDoCatchUp)//PRINTNL()
//PRINTSTRING("GET_DISTANCE_BETWEEN_PEDS:")PRINTFLOAT(GET_DISTANCE_BETWEEN_PEDS(pedFloyd,PLAYER_PED_ID()))//PRINTNL()
//PRINTSTRING("Doing Catch Up:")PRINTBOOL(bDoCatchUp)//PRINTNL()
INT iWayPoint
INT iRandBeckon
REQUEST_ANIM_DICT("missheistdockssetup1ig_8")
REQUEST_ANIM_DICT("MissHeistDocksSetup1")
//CATCH UP
IF bDoCatchUp = TRUE
IF GET_DISTANCE_BETWEEN_PEDS(pedFloyd,PLAYER_PED_ID()) > 4
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
//PRINTSTRING("WAYPOINT ACTION - DISTANCE LESS THAN 1")//PRINTNL()
WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT("floyddocks1",GET_ENTITY_COORDS(pedFloyd),iWayPoint)
IF bSetYourTimer = FALSE
SETTIMERA(0)
iRandBeckon = GET_RANDOM_INT_IN_RANGE(0,5)
bSetYourTimer = TRUE
ENDIF
IF TIMERA() > 1000
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_8")
AND HAS_ANIM_DICT_LOADED("MissHeistDocksSetup1")
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
CLEAR_PED_TASKS(pedFloyd)
IF iRandBeckon = 0
TASK_PLAY_ANIM(pedFloyd,"MissHeistDocksSetup1","Beckon")
ELIF iRandBeckon = 1
TASK_PLAY_ANIM(pedFloyd,"missheistdockssetup1ig_8","are_you_coming")
ELIF iRandBeckon = 2
TASK_PLAY_ANIM(pedFloyd,"missheistdockssetup1ig_8","Are_You_Gonna_Hurt")
ELIF iRandBeckon = 3
TASK_PLAY_ANIM(pedFloyd,"missheistdockssetup1ig_8","its_over_here_if")
ELIF iRandBeckon = 4
TASK_PLAY_ANIM(pedFloyd,"missheistdockssetup1ig_8","this_dont_make_me")
ENDIF
bSetYourTimer = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF GET_DISTANCE_BETWEEN_PEDS(pedFloyd,PLAYER_PED_ID()) < 3
//PRINTSTRING("WAYPOINT ACTION - DISTANCE GREATER THAN 1")//PRINTNL()
IF NOT IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT("floyddocks1",GET_ENTITY_COORDS(pedFloyd),iWayPoint)
TASK_FOLLOW_WAYPOINT_RECORDING(pedFloyd, "floyddocks1", iWayPoint)
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
//Triggers and sets up ambient events around the docks
PROC MANAGE_DOCKS_AMBIENCE()
VEHICLE_INDEX vehTemp
IF eMissionStage < MISSION_STAGE_5
AND eMissionStage > MISSION_STAGE_1
IF DOES_ENTITY_EXIST(s_sp_forklift_supervisorA[0].ped)
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
vehTemp = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
IF IS_VEHICLE_DRIVEABLE(vehTemp)
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
IF IS_ENTITY_TOUCHING_ENTITY(vehTemp,s_sp_forklift_supervisorA[0].ped)
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PED_RAGDOLL(s_sp_forklift_supervisorA[0].ped)
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
//CLEANING UP WASTE
IF eMissionStage > MISSION_STAGE_1
AND eMissionStage < MISSION_STAGE_5
IF NOT HAS_LABEL_BEEN_TRIGGERED("WORLD_HUMAN_JANITOR")
IF NOT IS_PED_INJURED(pedDockWorker[3])
TASK_START_SCENARIO_AT_POSITION(pedDockWorker[3],"WORLD_HUMAN_JANITOR",<<-62.19, -2539.51, 6.01>>,-157.31)
SET_LABEL_AS_TRIGGERED("WORLD_HUMAN_JANITOR",TRUE)
ENDIF
ENDIF
ENDIF
//UPON ARRIVING TO THE DOCKS AMBIENCE
IF eMissionStage = MISSION_STAGE_2
IF bTriggerSetPiece[9] = FALSE
IF DOES_ENTITY_EXIST(pedDockWorker[1])
IF NOT IS_PED_INJURED(pedDockWorker[1])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[1],"WORLD_HUMAN_STAND_MOBILE")
bTriggerSetPiece[9] = TRUE
ENDIF
ENDIF
ENDIF
IF bTriggerSetPiece[10] = FALSE
IF IS_VEHICLE_DRIVEABLE(vehDocks[3])
IF NOT IS_PED_INJURED(pedDockWorker[17])
REQUEST_VEHICLE_RECORDING(1,"AWDocks5")
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks5")
IF IS_PED_IN_VEHICLE(pedDockWorker[17],vehDocks[3])
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehDocks[3])
START_PLAYBACK_RECORDED_VEHICLE(vehDocks[3],1,"AWDocks5")
SET_PLAYBACK_SPEED(vehDocks[3],0.7)
bTriggerSetPiece[10] = TRUE
ENDIF
ELSE
IF IS_VEHICLE_SEAT_FREE(vehDocks[3],VS_DRIVER)
SET_PED_INTO_VEHICLE(pedDockWorker[17],vehDocks[3])
ENDIF
ENDIF
ELSE
REQUEST_VEHICLE_RECORDING(1,"AWDocks5")
ENDIF
ENDIF
ELSE
IF NOT IS_PED_INJURED(pedDockWorker[17])
DELETE_PED(pedDockWorker[17])
ENDIF
ENDIF
ENDIF
IF TIMERA() > 4000
IF bTriggerSetPiece[11] = FALSE
IF NOT DOES_ENTITY_EXIST(vehDocks[2])
IF IS_VEHICLE_DRIVEABLE(vehDocks[2])
IF NOT IS_PED_INJURED(pedDockWorker[18])
REQUEST_VEHICLE_RECORDING(1,"AWDocks4")
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks4")
IF IS_PED_IN_VEHICLE(pedDockWorker[18],vehDocks[2])
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehDocks[2])
START_PLAYBACK_RECORDED_VEHICLE(vehDocks[2],1,"AWDocks4")
SET_PLAYBACK_SPEED(vehDocks[2],0.7)
bTriggerSetPiece[11] = TRUE
ENDIF
ELSE
IF IS_VEHICLE_SEAT_FREE(vehDocks[2],VS_DRIVER)
SET_PED_INTO_VEHICLE(pedDockWorker[18],vehDocks[2])
ENDIF
ENDIF
ELSE
REQUEST_VEHICLE_RECORDING(1,"AWDocks4")
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(pedDockWorker[18])
DELETE_PED(pedDockWorker[18])
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF eMissionStage >= MISSION_STAGE_4
IF DOES_ENTITY_EXIST(vehDocks[2])
IF IS_VEHICLE_DRIVEABLE(vehDocks[2])
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),vehDocks[2]) > 30
IF NOT IS_ENTITY_ON_SCREEN(vehDocks[2])
DELETE_VEHICLE(vehDocks[2])
SET_MODEL_AS_NO_LONGER_NEEDED(BIFF)
REMOVE_VEHICLE_RECORDING(1,"AWDocks4")
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[3])
IF IS_VEHICLE_DRIVEABLE(vehDocks[3])
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),vehDocks[3]) > 30
IF NOT IS_ENTITY_ON_SCREEN(vehDocks[3])
DELETE_VEHICLE(vehDocks[3])
SET_MODEL_AS_NO_LONGER_NEEDED(BIFF)
REMOVE_VEHICLE_RECORDING(1,"AWDocks5")
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_2
AND eMissionStage < MISSION_STAGE_10
IF NOT IS_PED_INJURED(pedFloyd)
IF bTriggerSetPiece[0] = FALSE
IF NOT IS_PED_INJURED(pedDockWorker[11]) AND IS_VEHICLE_DRIVEABLE(vehDocks[0])
OPEN_SEQUENCE_TASK(seqMain)
TASK_ENTER_VEHICLE(NULL,vehDocks[0],1)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedDockWorker[11], seqMain)
ENDIF
bTriggerSetPiece[0] = TRUE
ENDIF
IF bTriggerSetPiece[1] = FALSE
IF NOT IS_PED_INJURED(pedDockWorker[11]) AND IS_VEHICLE_DRIVEABLE(vehDocks[0])
IF IS_PED_IN_VEHICLE(pedDockWorker[11],vehDocks[0])
//START_PLAYBACK_RECORDED_VEHICLE(vehDocks[0],1,"AWDock1")
//SET_PLAYBACK_SPEED(vehDocks[0],0.7)
bTriggerSetPiece[1] = TRUE
ENDIF
ENDIF
ENDIF
IF bTriggerSetPiece[2] = FALSE
IF NOT IS_PED_INJURED(pedDockWorker[4])
AND NOT IS_PED_INJURED(pedDockWorker[5])
//GUYS BY THE WALL
//TASK_START_SCENARIO_AT_POSITION(pedDockWorker[4],"WORLD_HUMAN_LEANING",<<-109.06, -2481.83, 6.02>>,144.23)
TASK_START_SCENARIO_AT_POSITION(pedDockWorker[4],"WORLD_HUMAN_SMOKING",<<-109.06, -2481.83, 6.02>>,144.23)
TASK_START_SCENARIO_AT_POSITION(pedDockWorker[5],"WORLD_HUMAN_HANG_OUT_STREET",<<-110.18, -2482.25, 6.02>>,-80.21)
bTriggerSetPiece[2] = TRUE
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_4
OR eMissionStage = MISSION_STAGE_5
//BEHIND LORRY
IF bTriggerSetPiece[5] = FALSE
IF NOT IS_PED_INJURED(pedDockWorker[14])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[14],"WORLD_HUMAN_DRINKING")
bTriggerSetPiece[5] = TRUE
ENDIF
ENDIF
ENDIF
//FORKLIFT COMING PAST
IF NOT IS_PED_INJURED(pedFloyd)
IF bTriggerSetPiece[6] = FALSE
IF IS_ENTITY_AT_COORD(pedFloyd,<<-106.5262, -2482.1042, 5.0181>>,<<5,5,5>>)
OR eMissionStage > MISSION_STAGE_4 AND eMissionStage < MISSION_STAGE_10
IF NOT IS_PED_INJURED(pedDockWorker[12]) AND IS_VEHICLE_DRIVEABLE(vehDocks[1])
IF IS_VEHICLE_SEAT_FREE(vehDocks[1],VS_DRIVER)
iBlockReplayCameraTimer = GET_GAME_TIMER() + 1000 // For B*2226188
SET_VEHICLE_DOORS_LOCKED(vehDocks[1],VEHICLELOCK_LOCKOUT_PLAYER_ONLY)
SET_PED_INTO_VEHICLE(pedDockWorker[12],vehDocks[1])
SET_FORKLIFT_FORK_HEIGHT(vehDocks[1],1.0)
ELSE
DELETE_PED(pedDockWorker[12])
ENDIF
bTriggerSetPiece[6] = TRUE
ENDIF
ENDIF
ENDIF
IF bTriggerSetPiece[6] = TRUE
IF bTriggerSetPiece[7] = FALSE
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
IF NOT IS_PED_INJURED(pedDockWorker[12]) AND IS_VEHICLE_DRIVEABLE(vehDocks[1])
IF NOT IS_PED_INJURED(pedDockWorker[7])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[7],"WORLD_HUMAN_AA_SMOKE")
ENDIF
IF IS_PED_IN_VEHICLE(pedDockWorker[12],vehDocks[1])
START_PLAYBACK_RECORDED_VEHICLE(vehDocks[1],1,"AWDocks2")
SET_PLAYBACK_SPEED(vehDocks[1],1.1)
bTriggerSetPiece[7] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
// ======================================================================
// Phone Stuff
// ======================================================================
PROC MANAGE_PHONE_HELP()
//HELP STUFF
SWITCH iHelp
CASE 0
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
ENDIF
IF NOT IS_CELLPHONE_ON_HOMESCREEN()
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PH_HELP2")
CLEAR_HELP()
ENDIF
ENDIF
IF NOT IS_PHONE_ONSCREEN()
IF iPhotosTaken = 3
IF NOT HAS_CONTACT_RECEIVED_PICTURE_MESSAGE(CHAR_RON)
IF NOT HAS_LABEL_BEEN_TRIGGERED("PH_HELP6")
PRINT_HELP("PH_HELP6")
SET_LABEL_AS_TRIGGERED("PH_HELP6",TRUE)
ENDIF
ENDIF
ENDIF
// IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PH_HELP1")
// CLEAR_HELP()
// PRINT_HELP("PH_HELP1")
// ENDIF
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PH_HELP2")
CLEAR_HELP()
ENDIF
ELSE
//SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PH_HELP1")
CLEAR_HELP()
ENDIF
iHelp ++
ENDIF
BREAK
CASE 1
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera")) = 0
IF iPhotosTaken != 3
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PH_HELP2")
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
PRINT_HELP_FOREVER("PH_HELP2")
ENDIF
ENDIF
ELSE
IF iPhotosTaken = 3
IF NOT HAS_CONTACT_RECEIVED_PICTURE_MESSAGE(CHAR_RON)
IF NOT HAS_LABEL_BEEN_TRIGGERED("PH_HELP6")
PRINT_HELP("PH_HELP6")
SET_LABEL_AS_TRIGGERED("PH_HELP6",TRUE)
ENDIF
ENDIF
ENDIF
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_CAMERA_READY_TO_TAKE_PHOTO)
iHelp ++
ENDIF
ENDIF
IF NOT IS_PHONE_ONSCREEN()
iHelp = 0
ENDIF
BREAK
CASE 2
IF iPhotosTaken = 0
//REMOVED HELP TEXT
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PHOTO_H1A")
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
SETTIMERA(0)
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
PRINT_HELP("PHOTO_H1A",60000)
ENDIF
ENDIF
ELSE
IF iPhotosTaken = 1
iHelp ++
ENDIF
IF iPhotosTaken = 2
iHelp = 4
ENDIF
IF iPhotosTaken = 3
iHelp = 5
ENDIF
ENDIF
IF IS_PHONE_ONSCREEN()
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera"))= 0
iHelp = 1
ENDIF
ELSE
iHelp = 0
ENDIF
BREAK
CASE 3
IF iPhotosTaken = 1
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PHOTO_H2A")
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
SETTIMERA(0)
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
PRINT_HELP("PHOTO_H2A",60000)
ENDIF
ENDIF
ELSE
IF iPhotosTaken = 2
iHelp ++
ENDIF
IF iPhotosTaken = 3
iHelp = 5
ENDIF
ENDIF
IF IS_PHONE_ONSCREEN()
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera"))= 0
iHelp = 1
ENDIF
ELSE
iHelp = 0
ENDIF
BREAK
CASE 4
IF iPhotosTaken = 2
//REMOVED HELP TEXT
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PHOTO_H3A")
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
SETTIMERA(0)
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
PRINT_HELP("PHOTO_H3A",60000)
ENDIF
ENDIF
ELSE
IF iPhotosTaken = 3
//ENABLE_AUTO_SCROLL_TO_CONTACT(CHAR_RON)
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
SETTIMERA(0)
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
PRINT_HELP_FOREVER("PH_HELP5")
iHelp ++
ENDIF
ENDIF
ENDIF
IF IS_PHONE_ONSCREEN()
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera"))= 0
iHelp = 1
ENDIF
ELSE
iHelp = 0
ENDIF
BREAK
CASE 5
IF IS_PHONE_ONSCREEN()
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera"))!= 0
IF IS_CONTACTS_LIST_ON_SCREEN()
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PH_HELP5")
CLEAR_HELP()
ENDIF
ENDIF
IF NOT HAS_CONTACT_RECEIVED_PICTURE_MESSAGE(CHAR_RON)
ELSE
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PH_HELP5")
CLEAR_HELP()
ENDIF
iHelp ++
ENDIF
ELSE
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
iHelp = 0
ENDIF
ELSE
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
iHelp = 0
ENDIF
BREAK
CASE 6
IF iPhotosTaken = 3
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera"))= 0
iHelp ++
CLEAR_HELP()
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
// ======================================================================
// Models
// ======================================================================
//Cleans up the loaded models
//Cleans up the loaded car recs
//Clean up anim dictionary
PROC CLEANUP_LOADED_ANIM_ARRAY()
INT i
IF iNumberAnimsLoaded > 0
FOR i = 0 TO (iNumberAnimsLoaded -1)
IF HAS_ANIM_DICT_LOADED(sAnimLoaded[i])
REMOVE_ANIM_DICT(sAnimLoaded[i])
////PRINTNL()PRINTSTRING("Anim cleaned up = ")PRINTINT(i)//PRINTNL()
ENDIF
ENDFOR
ENDIF
////PRINTNL()PRINTSTRING("CLEANUP_LOADED_CARREC_ARRAY done")//PRINTNL()
iNumberAnimsLoaded = 0
ENDPROC
//PURPOSE: adds a single Anim Request to the Array
PROC ADD_ANIM_REQUEST_TO_ARRAY(STRING Anim)
INT i
BOOL bAnimRequested
REQUEST_ANIM_DICT(Anim)
IF iNumberAnimsLoaded > 0
FOR i = 0 TO (iNumberAnimsLoaded -1)
IF IS_STRING_EQUAL_TO_STRING(Anim,sAnimLoaded[i])
bAnimRequested = TRUE
//PRINTSTRING("Anim already requested")//PRINTNL()
ENDIF
ENDFOR
IF NOT bAnimRequested
sAnimLoaded[iNumberAnimsLoaded] = Anim
iNumberAnimsLoaded++
//PRINTSTRING("number of anims requested : ")PRINTINT(iNumberAnimsLoaded)//PRINTNL()
ENDIF
ELIF iNumberAnimsLoaded = 0
sAnimLoaded[0] = Anim
//PRINTSTRING("first anim requested")//PRINTNL()
iNumberAnimsLoaded++
ENDIF
ENDPROC
//PURPOSE: checks to see if all the requested models in the array are in memory
FUNC BOOL ARE_REQUESTED_ANIMS_LOADED()
INT i
IF iNumberAnimsLoaded > 0
FOR i = 0 TO (iNumberAnimsLoaded-1)
IF NOT HAS_ANIM_DICT_LOADED(sAnimLoaded[i])
//PRINTSTRING("anims loading")//PRINTNL()
WAIT(0)
RETURN FALSE
ENDIF
ENDFOR
ENDIF
//PRINTSTRING("anims loaded")//PRINTNL()
RETURN TRUE
ENDFUNC
// Pass, Fail, Clean Up
// ======================================================================
//PURPOSE: gets the player into position, fades in and turns on control.
PROC INIT_STAGE(BOOL bWithFadeIn = TRUE)
//GIVE_PED_NECESSARY_WEAPONS()
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF IS_SCREEN_FADED_OUT()
IF NOT IS_ENTITY_ATTACHED(PLAYER_PED_ID())
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
ENDIF
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
ENDIF
bRunFailChecks = TRUE
bDialogue = FALSE
IF bWithFadeIn
CONTROL_FADE_IN(500)
ENDIF
ENDPROC
PROC CLEANUP_AUDIO_SCENES()
IF IS_AUDIO_SCENE_ACTIVE("DH_1_DRIVE_START")
STOP_AUDIO_SCENE("DH_1_DRIVE_START")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_DRIVE_APPROACH_DOCKS")
STOP_AUDIO_SCENE("DH_1_DRIVE_APPROACH_DOCKS")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_FOLLOW_FLOYD_START")
STOP_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_START")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")
STOP_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_HANDLER_START")
STOP_AUDIO_SCENE("DH_1_HANDLER_START")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_CLIMB_UP_CRANE")
STOP_AUDIO_SCENE("DH_1_CLIMB_UP_CRANE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_USE_CRANE")
STOP_AUDIO_SCENE("DH_1_USE_CRANE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_TAKE_PHOTOS")
STOP_AUDIO_SCENE("DH_1_TAKE_PHOTOS")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_PHONE_RON")
STOP_AUDIO_SCENE("DH_1_PHONE_RON")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_GET_TO_TRUCK")
STOP_AUDIO_SCENE("DH_1_GET_TO_TRUCK")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DH_1_DRIVE_TO_DOCKS")
STOP_AUDIO_SCENE("DH_1_DRIVE_TO_DOCKS")
ENDIF
ENDPROC
PROC SET_UP_DOCKS_RADIO(BOOL bEnable = TRUE)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_01",bEnable)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_02",bEnable)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_03",bEnable)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_04",bEnable)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_05",bEnable)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_06",bEnable)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_07",bEnable)
SET_STATIC_EMITTER_ENABLED("SE_LS_DOCKS_RADIO_08",bEnable)
ENDPROC
//PURPOSE: cleans up all resources used in the mission
PROC MISSION_CLEANUP(BOOL bRestart = FALSE, BOOL bMissionPassed = FALSE)
//IF IS_PLAYER_PLAYING(PLAYER_ID())
#IF IS_DEBUG_BUILD
// IF DOES_WIDGET_GROUP_EXIST(wgDOCKSSETUP)
// DELETE_WIDGET_GROUP(wgDOCKSSETUP)
// ENDIF
#ENDIF
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_PED_COMBAT_ATTRIBUTES(PLAYER_PED_ID(),CA_DO_DRIVEBYS,TRUE)
SET_PED_PATH_CAN_USE_LADDERS(PLAYER_PED_ID(),TRUE)
ENDIF
REPOSITION_LANDSCAPE_PHONE_FOR_LONG_SUBTITLES (FALSE)
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(FALSE)
CASCADE_SHADOWS_INIT_SESSION()
SET_USER_RADIO_CONTROL_ENABLED(TRUE)
SET_UP_DOCKS_RADIO(FALSE)
CLEANUP_AUDIO_SCENES()
CLEAR_TIMECYCLE_MODIFIER()
REMOVE_SCENARIO_BLOCKING_AREAS()
DISABLE_CHEAT(CHEAT_TYPE_ALL, FALSE)
REMOVE_FORCED_OBJECT(<<479.2571, -3115.5513, 5.0701>>,50,PROP_GATE_DOCKS_LD)
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_1")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_2")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_3")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_4")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_5")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_6")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_7")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_8")
IF IS_SCREEN_FADING_OUT()
OR IS_SCREEN_FADED_OUT()
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
//RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED_ID())
ENDIF
ENDIF
IF GET_IS_WAYPOINT_RECORDING_LOADED("cranassist")
REMOVE_WAYPOINT_RECORDING("cranassist")
ENDIF
IF b_is_audio_scene_active
STOP_AUDIO_SCENE("CAR_THEFT_EXPORT_CARS_CRANE_SECTION_SCENE")
b_is_audio_scene_active = FALSE
ENDIF
IF NOT HAS_SOUND_FINISHED(iCraneSound)
STOP_SOUND(iCraneSound)
RELEASE_SOUND_ID(iCraneSound)
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("DOCKS_HEIST_USING_CRANE")
STOP_AUDIO_SCENE("DOCKS_HEIST_USING_CRANE")
ENDIF
IF IS_THIS_TV_AVAILABLE_FOR_USE(TV_LOC_TREVOR_VENICE)
IF IS_THIS_TV_FORCED_ON(TV_LOC_TREVOR_VENICE)
FORCE_STOP_TV(TV_LOC_TREVOR_VENICE)
ENDIF
ENDIF
UNREGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MIL_DOCKS_GATE_IN,PLAYER_PED_ID())
//DOOR_SYSTEM_SET_HOLD_OPEN(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, FALSE)
DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, 0.0)
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID,DOORSTATE_LOCKED)
// Fix for PT - we need to stop locking the door open when we're done as the autodoor
// system locks on to this door and forgets about the rest.
LOCK_AUTOMATIC_DOOR_OPEN(AUTODOOR_DOCKS_BACK_GATE_OUT, FALSE, FALSE)
LOCK_AUTOMATIC_DOOR_OPEN(AUTODOOR_DOCKS_FRONT_GATE_OUT, FALSE, FALSE)
UNLOCK_MINIMAP_ANGLE()
SET_AUDIO_FLAG("MobileRadioInGame", FALSE)
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), FALSE)
ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(FALSE)
BYPASS_CELLPHONE_CAMERA_DEFAULT_SAVE_ROUTINE(FALSE)
CLEAR_BIT(BitSet_CellphoneDisplay,g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE)
DISABLE_VEHICLE_GEN_ON_MISSION(FALSE)
HIDE_ACTIVE_PHONE(FALSE)
bIgnoreTheseFails = FALSE
ROPE_UNLOAD_TEXTURES()
IF DOES_BLIP_EXIST(blipHaulerLoadingArea)
REMOVE_BLIP(blipHaulerLoadingArea)
ENDIF
INT iThisCount
REPEAT COUNT_OF(bDoneConversationAnim) iThisCount
bDoneConversationAnim[iThisCount] = FALSE
ENDREPEAT
CLEAR_TRIGGERED_LABELS()
Blip_player = GET_MAIN_PLAYER_BLIP_ID()
IF DOES_BLIP_EXIST(Blip_player)
SET_BLIP_ALPHA(Blip_player,100)
ENDIF
SET_VEHICLE_POPULATION_BUDGET(3)
SET_PED_POPULATION_BUDGET(3)
IF IS_CUTSCENE_ACTIVE()
AND IS_CUTSCENE_PLAYING()
STOP_CUTSCENE()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_WETNESS(PLAYER_PED_ID())
ENDIF
ENDIF
IF bRestart
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
DELETE_VEHICLE(vanByDocks)
ELSE
//TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
ENDIF
DELETE_VEHICLE(vanByDocks)
ENDIF
ELSE
DELETE_VEHICLE(vanByDocks)
ENDIF
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(vanByDocks)
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[14])
IF NOT IS_PED_INJURED(pedDockWorker[14])
DISABLE_PED_PAIN_AUDIO(pedDockWorker[14],TRUE)
STOP_PED_SPEAKING(pedDockWorker[14],TRUE)
IF NOT IS_ENTITY_ON_SCREEN(pedDockWorker[14])
DELETE_PED(pedDockWorker[14])
ELSE
SET_PED_AS_NO_LONGER_NEEDED(pedDockWorker[14])
ENDIF
ENDIF
ENDIF
v_crane_pos = << -53.6982, -2415.7900, 5.0500 >> //<< -53.2665, -2415.8633, 5.066 >>
bContainerSetUpForDrive = FALSE
g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
//RESET ALL SYNCH SCENE DATA
INT iTemp
REPEAT COUNT_OF(bSetPiece) iTemp
bSetPiece[iTemp] = FALSE
ENDREPEAT
REPEAT COUNT_OF(bSSComplete) iTemp
bSSComplete[iTemp] = FALSE
ENDREPEAT
REPEAT COUNT_OF(s_sv_car_to_admire) iCount
CLEAN_UP_SETPIECE_VEHILCE(s_sv_car_to_admire[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_blackwater_with_dockworker) iCount
CLEAN_UP_SETPIECE_PED(s_sp_blackwater_with_dockworker[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_dock_workers_on_pipe) iCount
CLEAN_UP_SETPIECE_PED(s_sp_dock_workers_on_pipe[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_dock_workers_talking) iCount
CLEAN_UP_SETPIECE_PED(s_sp_dock_workers_talking[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_forklift_supervisorA) iCount
CLEAN_UP_SETPIECE_PED(s_sp_forklift_supervisorA[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_forklift_supervisorB) iCount
CLEAN_UP_SETPIECE_PED(s_sp_forklift_supervisorB[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_blackwater_with_dockworker) iCount
CLEAN_UP_SETPIECE_PED(s_sp_blackwater_with_dockworker[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_gantry_guys_static) iCount
CLEAN_UP_SETPIECE_PED(s_sp_gantry_guys_static[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_guys_around_car) iCount
CLEAN_UP_SETPIECE_PED(s_sp_guys_around_car[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_supervisor1) iCount
CLEAN_UP_SETPIECE_PED(s_sp_supervisor1[iCount],TRUE,bRestart)
ENDREPEAT
REPEAT COUNT_OF(s_sp_welder) iCount
CLEAN_UP_SETPIECE_PED(s_sp_welder[iCount],TRUE,bRestart)
ENDREPEAT
SET_PLAYER_CAN_CHANGE_CLOTHES_ON_MISSION(TRUE)
DISABLE_TAXI_HAILING(FALSE)
CLEANUP_LOADED_MODEL_ARRAY()
CLEANUP_LOADED_ANIM_ARRAY()
CLEANUP_LOADED_CARREC_ARRAY("")
REMOVE_PED_FOR_DIALOGUE(sSpeech, 0)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 1)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 2)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 3)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 4)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 5)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 6)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 7)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 8)
REMOVE_PED_FOR_DIALOGUE(sSpeech, 9)
KILL_ANY_CONVERSATION()
IF DOES_BLIP_EXIST(blipHandlerContainers[0])
REMOVE_BLIP(blipHandlerContainers[0])
ENDIF
IF DOES_BLIP_EXIST(blipHandlerContainers[1])
REMOVE_BLIP(blipHandlerContainers[1])
ENDIF
IF DOES_BLIP_EXIST(blipHandlerContainers[2])
REMOVE_BLIP(blipHandlerContainers[2])
ENDIF
bInhibitCrane = FALSE
bForceNoGrab = FALSE
bDoneWithTruck = FALSE
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
IF IS_SCREEN_FADED_OUT() OR IS_SCREEN_FADING_OUT()
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehMission, FALSE)
IF DOES_ENTITY_EXIST(vehMission)
DELETE_VEHICLE(vehMission)
ENDIF
ENDIF
ENDIF
SET_ENTITY_VISIBLE(PLAYER_PED_ID(),TRUE)
ENDIF
ENDIF
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera"))> 0
HANG_UP_AND_PUT_AWAY_PHONE()
SET_GAME_PAUSED (FALSE)
ENDIF
IF NOT bRestart
INIT_STAGE(FALSE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(FORKLIFT,FALSE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BODHI2,FALSE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BIFF,FALSE)
ENDIF
//CLEAN UP OBJECTS
FOR iCount = 0 TO MAX_NUM_OF_CLIPBOARDS -1
IF bRestart
IF DOES_ENTITY_EXIST(objClipboard[iCount])
DELETE_OBJECT(objClipboard[iCount])
ENDIF
ELSE
IF DOES_ENTITY_EXIST(objClipboard[iCount])
SET_OBJECT_AS_NO_LONGER_NEEDED(objClipboard[iCount])
ENDIF
ENDIF
ENDFOR
FOR iCount = 0 TO MAX_NUM_OF_CLIPBOARDS -1
IF bRestart
IF DOES_ENTITY_EXIST(objPencil[iCount])
DELETE_OBJECT(objPencil[iCount])
ENDIF
ELSE
IF DOES_ENTITY_EXIST(objPencil[iCount])
SET_OBJECT_AS_NO_LONGER_NEEDED(objPencil[iCount])
ENDIF
ENDIF
ENDFOR
iMissionDialogue = 0
iManagePickerAudio = 0
//Vehs
FOR iCount = 0 To (MAX_MISSION_VEH -1)
IF DOES_ENTITY_EXIST(mission_veh[iCount].veh)
IF bRestart
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
DELETE_VEHICLE(mission_veh[iCount].veh)
ELSE
//TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
ENDIF
DELETE_VEHICLE(mission_veh[iCount].veh)
ENDIF
ELSE
DELETE_VEHICLE(mission_veh[iCount].veh)
ENDIF
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(mission_veh[iCount].veh)
ENDIF
ENDIF
IF DOES_BLIP_EXIST(mission_veh[iCount].blip)
REMOVE_BLIP(mission_veh[iCount].blip)
ENDIF
ENDFOR
//Enemies
FOR iCount = 0 To (MAX_ENEMY_PED -1)
IF DOES_ENTITY_EXIST(enemy[iCount].ped)
IF bRestart
DELETE_PED(enemy[iCount].ped)
ELSE
SET_PED_AS_NO_LONGER_NEEDED(enemy[iCount].ped)
ENDIF
ENDIF
IF DOES_BLIP_EXIST(enemy[iCount].blip)
REMOVE_BLIP(enemy[iCount].blip)
ENDIF
ENDFOR
//Buddies
FOR iCount = 0 To (MAX_BUDDY_PED -1)
IF DOES_ENTITY_EXIST(buddy[iCount].ped)
IF bRestart
DELETE_PED(buddy[iCount].ped)
ELSE
SET_PED_AS_NO_LONGER_NEEDED(buddy[iCount].ped)
ENDIF
ENDIF
IF DOES_BLIP_EXIST(buddy[iCount].blip)
REMOVE_BLIP(buddy[iCount].blip)
ENDIF
ENDFOR
//reenable the hotswap Stuff
IF bDisabledHotSwap = TRUE
ENABLE_SELECTOR()
ENDIF
IF bPatrolCreated[0] = TRUE
DELETE_PATROL_ROUTE("miss_dock")
bPatrolCreated[0] = FALSE
ENDIF
IF bPatrolCreated[1] = TRUE
DELETE_PATROL_ROUTE("miss_merc0")
DELETE_PATROL_ROUTE("miss_merc1")
DELETE_PATROL_ROUTE("miss_merc2")
bPatrolCreated[1] = FALSE
ENDIF
IF bMercPatrolCreated[0] = TRUE
DELETE_PATROL_ROUTE("miss_merc0")
DELETE_PATROL_ROUTE("miss_merc1")
DELETE_PATROL_ROUTE("miss_merc2")
bPatrolCreated[0] = FALSE
bPatrolCreated[1] = FALSE
bPatrolCreated[2] = FALSE
ENDIF
FOR iCount = 0 TO (iTotalNumberOfPtX -1)
IF bPTX_Triggered[iCount]
REMOVE_PARTICLE_FX(PTX_SHIP_EXPLOSIONS[iCount])
bPTX_Triggered[iCount] = FALSE
ENDIF
ENDFOR
//Dock Workers
FOR iCount = 0 To (iTotalDockWorker -1)
IF DOES_ENTITY_EXIST(pedDockWorker[iCount])
IF bRestart
DELETE_PED(pedDockWorker[iCount])
ELSE
SET_PED_AS_NO_LONGER_NEEDED(pedDockWorker[iCount])
ENDIF
ENDIF
IF DOES_BLIP_EXIST(blipDockWorker[iCount])
REMOVE_BLIP(blipDockWorker[iCount])
ENDIF
ENDFOR
//Mercs
FOR iCount = 0 To (iTotalMerc -1)
IF DOES_ENTITY_EXIST(pedMerc[iCount])
IF bRestart
DELETE_PED(pedMerc[iCount])
ELSE
SET_PED_AS_NO_LONGER_NEEDED(pedMerc[iCount])
ENDIF
ENDIF
ENDFOR
//Player entities
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
IF bRestart
DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
ELSE
SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_MICHAEL])
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
IF bRestart
DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
ELSE
SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_TREVOR])
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
IF bRestart
DELETE_PED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
ELSE
SET_PED_AS_NO_LONGER_NEEDED(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedFloyd)
IF bRestart
DELETE_PED(pedFloyd)
ELSE
SET_PED_AS_NO_LONGER_NEEDED(pedFloyd)
ENDIF
ENDIF
IF bMissionPassed = FALSE
IF DOES_ENTITY_EXIST(pedWade)
IF bRestart
DELETE_PED(pedWade)
ELSE
SET_PED_AS_NO_LONGER_NEEDED(pedWade)
ENDIF
ENDIF
ENDIF
//Docks Vehicles
FOR iCount = 0 To (iTotalVehicles-1)
IF DOES_ENTITY_EXIST(vehDocks[iCount])
IF bRestart
DELETE_VEHICLE(vehDocks[iCount])
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehDocks[iCount])
ENDIF
ENDIF
ENDFOR
IF DOES_ENTITY_EXIST(vehMission)
IF bRestart
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
DELETE_VEHICLE(vehMission)
ELSE
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
ENDIF
DELETE_VEHICLE(vehMission)
ENDIF
ELSE
DELETE_VEHICLE(vehMission)
ENDIF
ELSE
IF NOT IS_ENTITY_DEAD(vehMission)
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehMission, FALSE)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehMission)
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehFloydTruck)
IF bRestart
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
DELETE_VEHICLE(vehFloydTruck)
ELSE
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
ENDIF
DELETE_VEHICLE(vehFloydTruck)
ENDIF
ELSE
DELETE_VEHICLE(vehFloydTruck)
ENDIF
ELSE
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehFloydTruck, FALSE)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehFloydTruck)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer2)
IF bRestart
DELETE_VEHICLE(vehTrailer2)
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehTrailer2)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehFirstHauler)
IF bRestart
DELETE_VEHICLE(vehFirstHauler)
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehFirstHauler)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer1)
IF bRestart
DELETE_VEHICLE(vehTrailer1)
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehTrailer1)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehBlocking)
IF bRestart
DELETE_VEHICLE(vehBlocking)
ELSE
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehBlocking)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehHandler)
IF bRestart
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
DELETE_VEHICLE(vehHandler)
ELSE
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
DELETE_VEHICLE(vehHandler)
ENDIF
ELSE
DELETE_VEHICLE(vehHandler)
ENDIF
ELSE
IF DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehHandler, FALSE)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehHandler)
ENDIF
ENDIF
ENDIF
//DELETE ROPES FIRST
IF bAddedRopes
INT i = 0
REPEAT 8 i
IF DOES_ROPE_EXIST(s_Crane.ropes[i])
DELETE_ROPE(s_Crane.ropes[i])
ENDIF
ENDREPEAT
bAddedRopes = FALSE
ENDIF
REMOVE_ANIM_DICT("map_objects")
//DELETE THE CRANE AFTER THIS
IF DOES_ENTITY_EXIST(s_crane.obj_main)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF IS_ENTITY_ATTACHED(PLAYER_PED_ID())
DETACH_ENTITY(PLAYER_PED_ID())
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-62.8851, -2406.8723, 5.0009>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),338.2688)
ENDIF
ENDIF
IF NOT IS_ENTITY_ATTACHED(PLAYER_PED_ID())
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
FREEZE_ENTITY_POSITION(s_crane.obj_spreader,TRUE)
ENDIF
//PRINTSTRING("DELETING CRANE")//PRINTNL()
IF IS_SCREEN_FADED_OUT()
DELETE_OBJECT(s_crane.obj_main)
DELETE_OBJECT(s_crane.obj_cabin)
DELETE_OBJECT(s_crane.obj_spreader)
DELETE_OBJECT(s_crane.obj_helper)
DELETE_OBJECT(s_crane.obj_wheels[0])
DELETE_OBJECT(s_crane.obj_wheels[1])
DELETE_OBJECT(s_crane.obj_wheels[2])
DELETE_OBJECT(s_crane.obj_wheels[3])
DELETE_OBJECT(s_crane.obj_wheels[4])
DELETE_OBJECT(s_crane.obj_wheels[5])
DELETE_OBJECT(s_crane.obj_wheels[6])
DELETE_OBJECT(s_crane.obj_wheels[7])
DELETE_OBJECT(s_containers[0].obj_main)
DELETE_OBJECT(s_containers[0].obj_left_door)
DELETE_OBJECT(s_containers[0].obj_right_door)
DELETE_OBJECT(s_containers[1].obj_main)
DELETE_OBJECT(s_containers[1].obj_left_door)
DELETE_OBJECT(s_containers[1].obj_right_door)
ELSE
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_main)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_cabin)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_spreader)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_helper)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[0])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[1])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[2])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[3])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[4])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[5])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[6])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_crane.obj_wheels[7])
SET_OBJECT_AS_NO_LONGER_NEEDED(s_containers[0].obj_main)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_containers[0].obj_left_door)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_containers[0].obj_right_door)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_containers[1].obj_main)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_containers[1].obj_left_door)
SET_OBJECT_AS_NO_LONGER_NEEDED(s_containers[1].obj_right_door)
ENDIF
ENDIF
IF IS_CELLPHONE_CAMERA_INHIBITED_FOR_DOCKS_SETUP()
INHIBIT_CELLPHONE_CAMERA_FUNCTIONS_FOR_DOCKS_SETUP(FALSE)
ENDIF
//remove all blips
CLEAN_OBJECTIVE_BLIP_DISPLAY()
//remove all Models
CLEANUP_LOADED_MODEL_ARRAY()
CLEANUP_LOADED_CARREC_ARRAY("AWDocks1")
CLEANUP_LOADED_ANIM_ARRAY()
IF bRestart
CLEAR_AREA(vPlayerStart,200,TRUE,TRUE)
CLEAR_AREA_OF_OBJECTS(vPlayerStart,200)
CLEAR_AREA(vDocks,500,TRUE,TRUE)
CLEAR_AREA_OF_OBJECTS(vDocks,500)
WASH_DECALS_IN_RANGE(vDocks,500,1)
REMOVE_DECALS_IN_RANGE(vDocks,500)
REMOVE_ALL_PICKUPS_OF_TYPE(PICKUP_WEAPON_ASSAULTRIFLE)
CLEAR_PRINTS()
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF IS_ENTITY_ATTACHED(PLAYER_PED_ID())
DETACH_ENTITY(PLAYER_PED_ID())
ENDIF
ENDIF
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
ENDIF
//Allow particals to be displayed again
FOR iCount = 0 TO (iTotalNumberOfPtX -1)
bPTX_Triggered[iCount] = FALSE
ENDFOR
ENDIF
//house keeping
SET_WIDESCREEN_BORDERS(FALSE,0)
RENDER_SCRIPT_CAMS(FALSE, FALSE)
DESTROY_ALL_CAMS()
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
SET_TIME_SCALE(1.0)
CLEAR_TIMECYCLE_MODIFIER()
CLEANUP_PC_CONTROLS()
IF NOT bRestart
SET_MAX_WANTED_LEVEL(6)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
TERMINATE_THIS_THREAD()
ENDIF
//ENDIF
ENDPROC
PROC DISTANCE_FAIL_CHECKS(VECTOR vfailcheckcoords, FLOAT warningdist, FLOAT faildist,STRING sdistwarning,STRING scurrentobjective,MISSION_FAIL_ENUM efail = WADE_LEFT)
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),vfailcheckcoords) > faildist
eFailedStage = eMissionStage
reason_for_fail = efail
eMissionStage = MISSION_STAGE_FAIL
ELIF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),vfailcheckcoords) > warningdist
IF NOT bdistancewarning
PRINTSTRING("sdistwarning")PRINTNL()
PRINT_GOD_TEXT(sdistwarning)
bdistancewarning = TRUE
ENDIF
ELIF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),vfailcheckcoords) < (warningdist - 25)
IF bdistancewarning
PRINTSTRING("scurrentobjective")PRINTNL()
PRINT_GOD_TEXT(scurrentobjective)
bdistancewarning = FALSE
ENDIF
ENDIF
ENDPROC
INT iFlipTimer = -1
INT iTimeLastContact = 9999
BOOl bFlipTimerSetFork = FALSE
BOOL bContactTimerSet = FALSE
FUNC BOOL HAS_PLAYER_VEH_FLIPPED_VEH(VEHICLE_INDEX _player_veh, VEHICLE_INDEX _other_veh)
BOOL bRet = FALSE
IF bFlipTimerSetFork = FALSE
IF IS_ENTITY_TOUCHING_ENTITY(_player_veh, _other_veh)
OR IS_ENTITY_AT_ENTITY(_player_veh, _other_veh,<<3,3,3>>)
iTimeLastContact = GET_GAME_TIMER()
bContactTimerSet = TRUE
ENDIF
ENDIF
VECTOR vTestVec
IF bFlipTimerSet = FALSE
AND bContactTimerSet
IF NOT MANAGE_MY_TIMER(iTimeLastContact,4000)
vTestVec = NORMALISE_VECTOR(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(_other_veh, <<0,0,1>>) - GET_ENTITY_COORDS(_other_veh))
IF ABSF(GET_ANGLE_BETWEEN_2D_VECTORS(vTestVec.x, vTestVec.z, 0, 1)) > 80
OR ABSF(GET_ANGLE_BETWEEN_2D_VECTORS(vTestVec.y, vTestVec.z, 0, 1)) > 80
iFlipTimer = GET_GAME_TIMER()
bFlipTimerSetFork = TRUE
ENDIF
ENDIF
ELIF bFlipTimerSet = TRUE
vTestVec = NORMALISE_VECTOR(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(_other_veh, <<0,0,1>>) - GET_ENTITY_COORDS(_other_veh))
IF ABSF(GET_ANGLE_BETWEEN_2D_VECTORS(vTestVec.x, vTestVec.z, 0, 1)) < 45
AND ABSF(GET_ANGLE_BETWEEN_2D_VECTORS(vTestVec.y, vTestVec.z, 0, 1)) < 45
bFlipTimerSetFork = FALSE
bContactTimerSet = FALSE
ENDIF
ENDIF
IF MANAGE_MY_TIMER(iFlipTimer,4000)
AND bFlipTimerSetFork = TRUE
bRet = TRUE
ENDIF
RETURN bRet
ENDFUNC
BLIP_INDEX blipTrailer
INT iDialogueWarning
INT iConnectTrailerTimer
//PURPOSE: Tests for various fail conditions
PROC FAIL_CHECKS()
IF IS_PED_INJURED(PLAYER_PED_ID())
eFailedStage = eMissionStage
eMissionStage = MISSION_STAGE_FAIL
ENDIF
IF eMissionStage <> MISSION_STAGE_PASSED
IF DOES_ENTITY_EXIST(vehMission)
//REMOVED THIS CHECK CAUSE OF PT
IF NOT IS_VEHICLE_DRIVEABLE(vehMission)
eFailedStage = eMissionStage
reason_for_fail = VEHICLE_DEAD
eMissionStage = MISSION_STAGE_FAIL
ELSE
IF IS_VEHICLE_PERMANENTLY_STUCK(vehMission)
eFailedStage = eMissionStage
reason_for_fail = VEHICLE_STUCK
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWade)
IF DOES_ENTITY_EXIST(pedWade)
IF eMissionStage < MISSION_STAGE_4
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(pedWade)
DISTANCE_FAIL_CHECKS(GET_ENTITY_COORDS(pedWade), 150, 200,"AW_DONT_LEAVE_W","AW_DISTWARNW",WADE_LEFT)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWade) AND DOES_ENTITY_EXIST(pedFloyd)
IF eMissionStage < MISSION_STAGE_4
IF IS_PED_INJURED(pedWade) AND IS_PED_INJURED(pedFloyd)
eFailedStage = eMissionStage
reason_for_fail = WADE_AND_FLOYD_DEAD
eMissionStage = MISSION_STAGE_FAIL
ELIF IS_PED_INJURED(pedWade)
IF eMissionStage < MISSION_STAGE_4
eFailedStage = eMissionStage
reason_for_fail = WADE_DEAD
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ELIF IS_PED_INJURED(pedFloyd)
eFailedStage = eMissionStage
reason_for_fail = FLOYD_DEAD
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(pedFloyd)
IF IS_PED_INJURED(pedFloyd)
eFailedStage = eMissionStage
reason_for_fail = FLOYD_DEAD
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
IF eMissionStage < MISSION_STAGE_PASSED
IF DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(pedFloyd)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF eMissionStage = MISSION_STAGE_1
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_PED_IN_VEHICLE(pedFloyd,vehMission)
DISTANCE_FAIL_CHECKS(GET_ENTITY_COORDS(pedFloyd), 190, 250,"AW_DONT_LEAVE_T","AW_DISTWARNF",FLOYD_LEFT)
ENDIF
ENDIF
ELIF eMissionStage = MISSION_STAGE_4
DISTANCE_FAIL_CHECKS(GET_ENTITY_COORDS(pedFloyd), 190, 250,"AW_DONT_LEAVE_T","AW_DISTWARNF",FLOYD_LEFT)
ELIF eMissionStage = MISSION_STAGE_6
DISTANCE_FAIL_CHECKS(<<-65.59, -2467.65, 5.96>>, 180, 250,"AW_DISTWARNL","AW_DISTWARND",ABADONED_DOCKS)
ELIF eMissionStage = MISSION_STAGE_7
DISTANCE_FAIL_CHECKS(<<-65.59, -2467.65, 5.96>>, 180, 250,"AW_DISTWARNL","AW_DISTWARND",ABADONED_DOCKS)
ELSE
IF eMissionStage = MISSION_STAGE_2
IF iProgress > 1
DISTANCE_FAIL_CHECKS(<<-65.59, -2467.65, 5.96>>, 250, 270,"AW_DISTWARNL","AW_DISTWARND",ABADONED_DOCKS)
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_2
AND eMissionStage < MISSION_STAGE_10
IF eMissionStage != MISSION_STAGE_6
OR eMissionStage != MISSION_STAGE_7
DISTANCE_FAIL_CHECKS(<<-65.59, -2467.65, 5.96>>, 250, 270,"AW_DISTWARNL","AW_DISTWARND",ABADONED_DOCKS)
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_2
AND eMissionStage < MISSION_STAGE_4
VEHICLE_INDEX vehPlayer
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
vehPlayer = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
IF IS_ENTITY_TOUCHING_ENTITY(vehPlayer,pedFloyd)
IF IS_PED_RAGDOLL(pedFloyd)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE(pedFloyd)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_7 AND bDoneWithTruck = FALSE
IF DOES_ENTITY_EXIST(vehFloydTruck)
IF NOT IS_VEHICLE_DRIVEABLE(vehFloydTruck)
eFailedStage = eMissionStage
reason_for_fail = TRUCK_DEAD
eMissionStage = MISSION_STAGE_FAIL
ELSE
IF IS_VEHICLE_PERMANENTLY_STUCK(vehFloydTruck)
PRINTSTRING("WOULD HAVE FAILED")PRINTNL()
eFailedStage = eMissionStage
reason_for_fail = TRUCK_STUCK
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer2)
IF NOT IS_VEHICLE_DRIVEABLE(vehTrailer2)
eFailedStage = eMissionStage
reason_for_fail = DAMAGED_CARGO
eMissionStage = MISSION_STAGE_FAIL
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF IS_ENTITY_IN_WATER(vehTrailer2)
eFailedStage = eMissionStage
reason_for_fail = DAMAGED_CARGO
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_10
IF iProgress > 1
IF DOES_ENTITY_EXIST(vehFloydTruck)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF NOT HAS_LABEL_BEEN_TRIGGERED("TRAILER DISCONNECTED")
iConnectTrailerTimer = GET_GAME_TIMER()
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF NOT DOES_BLIP_EXIST(blipTrailer)
blipTrailer = ADD_BLIP_FOR_ENTITY(vehTrailer2)
SET_BLIP_COLOUR(blipTrailer,BLIP_COLOUR_BLUE)
ENDIF
ENDIF
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(TRUE)
ENDIF
ENDIF
PRINT_GOD_TEXT("AW_RECONTRA")
SET_LABEL_AS_TRIGGERED("TRAILER DISCONNECTED",TRUE)
ELSE
IF MANAGE_MY_TIMER(iConnectTrailerTimer,45000)
PRINTSTRING("WOULD HAVE FAILED")PRINTNL()
eFailedStage = eMissionStage
reason_for_fail = DITCHED_THE_CARGO
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ELSE
IF HAS_LABEL_BEEN_TRIGGERED("TRAILER DISCONNECTED")
IF DOES_BLIP_EXIST(blipTrailer)
REMOVE_BLIP(blipTrailer)
ENDIF
IF IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(FALSE)
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_RECONTRA")
CLEAR_PRINTS()
ENDIF
SET_LABEL_AS_TRIGGERED("TRAILER DISCONNECTED",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage < MISSION_STAGE_6
IF DOES_ENTITY_EXIST(vehHandler)
IF NOT IS_VEHICLE_DRIVEABLE(vehHandler)
OR IS_ENTITY_IN_WATER(vehHandler)
eFailedStage = eMissionStage
reason_for_fail = HANDLER_DEAD
eMissionStage = MISSION_STAGE_FAIL
ELSE
IF IS_VEHICLE_PERMANENTLY_STUCK(vehHandler)
eFailedStage = eMissionStage
reason_for_fail = HANDLER_STUCK
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
//Fail checks for containers: if placed on their side, dropped from a height, or slammed into another object, fail the mission.
IF eMissionStage = MISSION_STAGE_7
IF iCraneFailTimer = 0
CONST_FLOAT SAFE_CONTAINER_ROT 32.0
CONST_FLOAT SAFE_HELD_CONTAINER_ROT 45.0
CONST_FLOAT SAFE_CONTAINER_ZROTDEV 15.0
CONST_FLOAT SAFE_CONTAINER_VEL_CHANGE 5.0
INT i = 0
REPEAT COUNT_OF(s_Containers) i
IF s_Containers[i].b_loaded_on_truck = FALSE
IF DOES_ENTITY_EXIST(s_Containers[i].obj_main)
VECTOR vContainerRot = GET_ENTITY_ROTATION(s_Containers[i].obj_main)
VECTOR vContainerVel = GET_ENTITY_VELOCITY(s_Containers[i].obj_Main)
PRINTSTRING("Container Number:")PRINTINT(i)PRINTSTRING("vContainerRot:")PRINTVECTOR(vContainerRot)PRINTNL()
PRINTSTRING("Container Number:")PRINTINT(i)PRINTSTRING("vContainerVel:")PRINTVECTOR(vContainerVel)PRINTNL()
IF NOT IS_ENTITY_ATTACHED(s_Containers[i].obj_main)
IF vContainerRot.y > SAFE_HELD_CONTAINER_ROT OR vContainerRot.y < -SAFE_HELD_CONTAINER_ROT
iCraneFailTimer = GET_GAME_TIMER()
ENDIF
ELSE
IF vContainerRot.y > SAFE_CONTAINER_ROT OR vContainerRot.y < -SAFE_CONTAINER_ROT
iCraneFailTimer = GET_GAME_TIMER()
ENDIF
ENDIF
IF s_Containers[i].vPrevVel.z < -8.0
IF vContainerVel.z - s_Containers[i].vPrevVel.z > SAFE_CONTAINER_VEL_CHANGE
iCraneFailTimer = GET_GAME_TIMER()
ENDIF
ENDIF
IF NOT IS_ENTITY_ATTACHED(s_Containers[i].obj_main)
IF vContainerRot.z > 91.2705 + SAFE_CONTAINER_ZROTDEV OR vContainerRot.z < 91.2705 - SAFE_CONTAINER_ZROTDEV
iCraneFailTimer = GET_GAME_TIMER()
ENDIF
ENDIF
IF NOT IS_ENTITY_ATTACHED(s_Containers[i].obj_main)
IF NOT IS_ENTITY_IN_ANGLED_AREA(s_Containers[i].obj_main, <<-48.327007,-2415.719482,2.000961>>, <<-110.642082,-2416.208008,22.250463>>, 14.500000)
iCraneFailTimer = GET_GAME_TIMER()
ENDIF
ENDIF
//Supervisor shouts up if the player flings the containers around
IF iCraneFailTimer = 0
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF ABSF(VMAG(vContainerVel) - VMAG(s_Containers[i].vPrevVel)) > 4.0
KILL_FACE_TO_FACE_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10h", CONV_PRIORITY_MEDIUM)
iCraneDialogueTimer = GET_GAME_TIMER()
ENDIF
ENDIF
IF (GET_GAME_TIMER() - iCraneDialogueTimer > 8000 AND ABSF(vContainerRot.y) > 45.0 AND IS_ENTITY_ATTACHED(s_Containers[i].obj_Main))
KILL_FACE_TO_FACE_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10h", CONV_PRIORITY_MEDIUM)
iCraneDialogueTimer = GET_GAME_TIMER()
ENDIF
ENDIF
ENDIF
ENDIF
s_Containers[i].vPrevVel = vContainerVel
ENDIF
ENDIF
ENDREPEAT
ELIF GET_GAME_TIMER() - iCraneFailTimer > 1000
eFailedStage = eMissionStage
reason_for_fail = DAMAGED_CARGO
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
IF IS_ENTITY_IN_WATER(objHandlerContainer[0])
eFailedStage = eMissionStage
reason_for_fail = DAMAGED_CRATES
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(objHandlerContainer[1])
IF IS_ENTITY_IN_WATER(objHandlerContainer[1])
eFailedStage = eMissionStage
reason_for_fail = DAMAGED_CRATES
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF (eMissionStage > MISSION_STAGE_1 OR (IS_ENTITY_AT_COORD(PLAYER_PED_ID(), vDocks, << 20, 20, 20 >>) AND IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(),0)))
AND eMissionStage < MISSION_STAGE_11
IF bIgnoreTheseFails = FALSE
//player wanted level
IF IS_PLAYER_WANTED_LEVEL_GREATER(PLAYER_ID(),0)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
// start checking for attacking of people once player arrives at the docks
//IF HAS_PLAYER_DAMAGED_AT_LEAST_ONE_PED(PLAYER_ID())
IF HAS_PLAYER_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED(PLAYER_ID())
KILL_FACE_TO_FACE_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
//SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
//SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
PED_INDEX pedArray[5]
INT i = 0
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
GET_PED_NEARBY_PEDS(PLAYER_PED_ID(), pedArray)
FOR i = 0 TO (COUNT_OF(pedArray) - 1)
IF NOT IS_PED_INJURED(pedArray[i])
IF NOT IS_PED_MODEL(pedArray[i],IG_WADE)
AND NOT IS_PED_MODEL(pedArray[i],IG_FLOYD)
IF IS_PED_MODEL(pedArray[i],S_M_Y_BLACKOPS_01)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedArray[i],PLAYER_PED_ID())
OR IS_PED_IN_COMBAT(pedArray[i],PLAYER_PED_ID())
OR IS_ENTITY_TOUCHING_ENTITY(PLAYER_PED_ID(),pedArray[i])
//CHANGE RELATIONSHIP GROUPS
SET_PED_RELATIONSHIP_GROUP_HASH(pedArray[i],rel_group_enemies)
//SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,rel_group_enemies,RELGROUPHASH_PLAYER)
//SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,rel_group_buddies,rel_group_enemies)
TASK_COMBAT_PED(pedArray[i],PLAYER_PED_ID())
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF HAS_PED_RECEIVED_EVENT(pedArray[i], EVENT_RAN_OVER_PED)
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN_RAN_OVER
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ELSE
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedArray[i],PLAYER_PED_ID())
OR IS_PED_IN_COMBAT(pedArray[i],PLAYER_PED_ID())
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF HAS_PED_RECEIVED_EVENT(pedArray[i], EVENT_RAN_OVER_PED)
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN_RAN_OVER
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDFOR
ENDIF
FOR i = 0 TO (COUNT_OF(pedArray) - 1)
IF DOES_ENTITY_EXIST(pedArray[i])
IF NOT IS_PED_INJURED(pedArray[i])
IF IS_PED_MODEL(pedArray[i],S_M_Y_BLACKOPS_01)
OR IS_PED_MODEL(pedArray[i],S_M_Y_DOCKWORK_01)
OR IS_PED_MODEL(pedArray[i],S_M_M_DOCKWORK_01)
IF NOT IS_PED_MODEL(pedArray[i],IG_WADE)
AND NOT IS_PED_MODEL(pedArray[i],IG_FLOYD)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedArray[i],objHandlerContainer[0])
OR HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedArray[i],objHandlerContainer[1])
TASK_SMART_FLEE_PED(pedArray[i],PLAYER_PED_ID(),200,-1)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDFOR
// check for running over peds
REPEAT COUNT_OF(pedDockWorker) i
IF DOES_ENTITY_EXIST(pedDockWorker[i])
IF NOT IS_PED_INJURED(pedDockWorker[i])
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF HAS_PED_RECEIVED_EVENT(pedDockWorker[i], EVENT_POTENTIAL_GET_RUN_OVER)
OR HAS_PED_RECEIVED_EVENT(pedDockWorker[i], EVENT_RAN_OVER_PED)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_41")
IF NOT IS_PED_INJURED(pedFloyd)
KILL_ANY_CONVERSATION()
IF DOES_ENTITY_EXIST(vehHandler)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_FRONTEND)
ELSE
IF ARE_CHARS_SITTING_IN_SAME_VEHICLE(PLAYER_PED_ID(),pedFloyd)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_FRONTEND)
ELSE
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_NORMAL)
ENDIF
ENDIF
ELSE
IF ARE_CHARS_SITTING_IN_SAME_VEHICLE(PLAYER_PED_ID(),pedFloyd)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_FRONTEND)
ELSE
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_NORMAL)
ENDIF
ENDIF
ELSE
IF ARE_CHARS_SITTING_IN_SAME_VEHICLE(PLAYER_PED_ID(),pedFloyd)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_FRONTEND)
ELSE
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_NORMAL)
ENDIF
ENDIF
SET_LABEL_AS_TRIGGERED("DS1_41",TRUE)
iDialogueWarning = GET_GAME_TIMER()
ENDIF
ELSE
IF MANAGE_MY_TIMER(iDialogueWarning,9000)
SET_LABEL_AS_TRIGGERED("DS1_41",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedDockWorker[i],PLAYER_PED_ID())
OR (IS_PED_RAGDOLL(pedDockWorker[i]) AND IS_ENTITY_TOUCHING_ENTITY(pedDockWorker[i],PLAYER_PED_ID()))
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ELSE
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDREPEAT
IF NOT IS_PED_INJURED(pedSecurity)
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF HAS_PED_RECEIVED_EVENT(pedSecurity, EVENT_POTENTIAL_GET_RUN_OVER)
OR HAS_PED_RECEIVED_EVENT(pedSecurity, EVENT_RAN_OVER_PED)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_41")
IF NOT IS_PED_INJURED(pedFloyd)
KILL_ANY_CONVERSATION()
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_EWAA","FLOYD",SPEECH_PARAMS_FORCE_NORMAL)
SET_LABEL_AS_TRIGGERED("DS1_41",TRUE)
iDialogueWarning = GET_GAME_TIMER()
ENDIF
ELSE
IF MANAGE_MY_TIMER(iDialogueWarning,9000)
SET_LABEL_AS_TRIGGERED("DS1_41",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PED_SHOOTING(PLAYER_PED_ID())
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF IS_PED_PERFORMING_STEALTH_KILL(PLAYER_PED_ID())
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF IS_PED_IN_COMBAT(PLAYER_PED_ID())
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
//Walked into office
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-63.843861,-2515.959229,6.150424>>, <<-51.076782,-2525.074463,9.171206>>, 4.250000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-63.257442,-2519.074707,8.900423>>, <<-62.217762,-2519.834961,6.150424>>, 0.500000)
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-77.755180,-2364.332520,38.796139>>, <<-252.818283,-2363.691650,-2.910417>>, 35.750000)
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("MERRYWEATHER ALERTED")
IF DOES_ENTITY_EXIST(pedMerc[4])
AND DOES_ENTITY_EXIST(pedMerc[5])
AND DOES_ENTITY_EXIST(pedMerc[5])
IF NOT IS_PED_INJURED(pedMerc[4])
AND NOT IS_PED_INJURED(pedMerc[5])
AND NOT IS_PED_INJURED(pedMerc[6])
IF IS_PED_IN_COMBAT(pedMerc[4])
OR IS_PED_IN_COMBAT(pedMerc[5])
OR IS_PED_IN_COMBAT(pedMerc[6])
IF NOT HAS_SOUND_FINISHED(soundBeating)
STOP_SOUND(soundBeating)
RELEASE_SOUND_ID(soundBeating)
ENDIF
iMerryWeatherFail = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("MERRYWEATHER ALERTED",TRUE)
ENDIF
ELSE
IF eMissionStage = MISSION_STAGE_10
OR (eMissionStage = MISSION_STAGE_11 AND VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<478.596, -3116.911, 5.069>>) < 40000.0)
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF MANAGE_MY_TIMER(iMerryWeatherFail,6000)
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF bIgnoreTheseFails = FALSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-63.600880,-2517.614014,6.400066>>, <<-61.070011,-2519.372559,8.900066>>, 1.750000)
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_1
VEHICLE_INDEX vehTemp
vehTemp = GET_RANDOM_VEHICLE_IN_SPHERE(<<-62.70, -2527.79, 5.01>>, 40, DUMMY_MODEL_FOR_SCRIPT, VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
IF vehTemp != vehMission
IF DOES_ENTITY_EXIST(vehTemp)
IF IS_ENTITY_IN_ANGLED_AREA(vehTemp, <<-52.457756,-2535.257813,4.010103>>, <<-73.385857,-2520.341309,8.510103>>, 14.250000)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
INT iWorker
FOR iWorker = 0 TO (iTotalDockWorker -1)
IF DOES_ENTITY_EXIST(pedDockWorker[iWorker])
IF NOT IS_PED_INJURED(pedDockWorker[iWorker])
IF (IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedDockWorker[iWorker]) OR IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedDockWorker[iWorker]))
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
TASK_SMART_FLEE_PED(pedDockWorker[iWorker],PLAYER_PED_ID(),200,-1)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
ENDFOR
IF DOES_ENTITY_EXIST(pedSecurity)
IF NOT IS_PED_INJURED(pedSecurity)
IF (IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedSecurity) OR IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedSecurity))
KILL_ANY_CONVERSATION()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
TASK_SMART_FLEE_PED(pedSecurity,PLAYER_PED_ID(),200,-1)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedSecurity,PLAYER_PED_ID())
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDIF
FOR iWorker = 0 TO (iTotalDockWorker -1)
IF DOES_ENTITY_EXIST(pedDockWorker[iWorker])
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_PED_INJURED(pedDockWorker[iWorker])
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedDockWorker[iWorker],objHandlerContainer[0])
OR HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedDockWorker[iWorker],objHandlerContainer[1])
TASK_SMART_FLEE_PED(pedDockWorker[iWorker],PLAYER_PED_ID(),200,-1)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ELSE
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDFOR
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_5
IF iHandlerFailTimer = 0
CONST_FLOAT SAFE_HANDLER_CONTAINER_ROT 75.0
CONST_FLOAT SAFE_HANDLER_CONTAINER_ZROTDEV 35.0
VECTOR vHandlerContainerTemp
INT i = 0
REPEAT COUNT_OF(objHandlerContainer) i
IF DOES_ENTITY_EXIST(objHandlerContainer[i])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[i], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.750000)
IF DOES_ENTITY_EXIST(objHandlerContainer[i])
VECTOR vHandlerContainerRot = GET_ENTITY_ROTATION(objHandlerContainer[i])
IF vHandlerContainerRot.y > SAFE_HANDLER_CONTAINER_ROT OR vHandlerContainerRot.y < -SAFE_HANDLER_CONTAINER_ROT
iHandlerFailTimer = GET_GAME_TIMER()
PRINTSTRING("@@@@@@@@@ Fail for Y: @@@@@@@@@")PRINTNL()
ENDIF
IF NOT IS_ENTITY_ATTACHED(objHandlerContainer[i])
// 91.2705 + | 91.2705 -
IF vHandlerContainerRot.z > 55.003 + SAFE_HANDLER_CONTAINER_ZROTDEV OR vHandlerContainerRot.z < 55.003 - SAFE_HANDLER_CONTAINER_ZROTDEV
iHandlerFailTimer = GET_GAME_TIMER()
PRINTSTRING("@@@@@@@@@ Fail for Z: @@@@@@@@@")PRINTNL()
ENDIF
ENDIF
//PRINTSTRING("vHandlerContainerRot:")PRINTVECTOR(vHandlerContainerRot)PRINTNL()
ENDIF
IF DOES_ENTITY_EXIST(objHandlerContainer[i])
vHandlerContainerTemp = GET_ENTITY_COORDS(objHandlerContainer[i])
IF vHandlerContainerTemp. z > 10.6
iHandlerFailTimer = GET_GAME_TIMER()
PRINTSTRING("@@@@@@@@@ Fail for Z out of reach: @@@@@@@@@")PRINTNL()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
ELIF GET_GAME_TIMER() - iHandlerFailTimer > 2000
eFailedStage = eMissionStage
reason_for_fail = DAMAGED_HANDLER_CARGO
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
ENDPROC
//PURPOSE: controls the failure of the mission
PROC MISSION_FAILED()
TRIGGER_MUSIC_EVENT("AHP1_FAIL")
STRING sFailString
SWITCH reason_for_fail
CASE GENERIC
//FAIL_GENERIC
CLEAR_PRINTS()
sFailString = "AW_FAILED"
//PRINT_GOD_TEXT("AW_FAILED")
BREAK
CASE FLOYD_LEFT
//FAIL_GENERIC
CLEAR_PRINTS()
sFailString = "AW_FAILED_FL"
//PRINT_GOD_TEXT("AW_FAILED_FL")
BREAK
CASE FLOYD_DEAD
//FAIL_GENERIC
CLEAR_PRINTS()
sFailString = "AW_FAILED_FD"
//PRINT_GOD_TEXT("AW_FAILED_FD")
BREAK
CASE WADE_LEFT
//FAIL_GENERIC
CLEAR_PRINTS()
sFailString = "AW_FAILED_WL"
//PRINT_GOD_TEXT("AW_FAILED_WL")
BREAK
CASE WADE_DEAD
//FAIL_GENERIC
CLEAR_PRINTS()
sFailString = "AW_FAILED_WD"
//PRINT_GOD_TEXT("AW_FAILED_WD")
BREAK
CASE FLOYDS_FORKLIFT_DEAD
CLEAR_PRINTS()
sFailString = "AW_FAILED_FFLD"
//PRINT_GOD_TEXT("AW_FAILED_FLD")
BREAK
CASE FORKLIFT_DEAD
CLEAR_PRINTS()
sFailString = "AW_FAILED_FLD"
//PRINT_GOD_TEXT("AW_FAILED_FLD")
BREAK
CASE VEHICLE_DEAD
CLEAR_PRINTS()
sFailString = "AW_FAILED_TTD"
//PRINT_GOD_TEXT("AW_FAILED_TTD")
BREAK
CASE VEHICLE_STUCK
CLEAR_PRINTS()
sFailString = "AW_FAILED_TTS"
//PRINT_GOD_TEXT("AW_FAILED_TTD")
BREAK
CASE TRUCK_DEAD
CLEAR_PRINTS()
sFailString = "AW_FAILED_TRD"
//PRINT_GOD_TEXT("AW_FAILED_TRD")
BREAK
CASE TRUCK_STUCK
CLEAR_PRINTS()
sFailString = "AW_FAILED_TRS"
//PRINT_GOD_TEXT("AW_FAILED_TRD")
BREAK
CASE COVER_BLOWN
CLEAR_PRINTS()
sFailString = "AW_FAILED_CBL"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
CASE COVER_BLOWN_RAN_OVER
CLEAR_PRINTS()
sFailString = "AW_FAILED_CBL"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
CASE DAMAGED_CARGO
CLEAR_PRINTS()
sFailString = "AW_FAILED_DC"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
CASE DAMAGED_CRATES
CLEAR_PRINTS()
sFailString = "AW_FAILED_DC"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
CASE HANDLER_DEAD
CLEAR_PRINTS()
sFailString = "AW_FAILED_HD"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
CASE HANDLER_STUCK
CLEAR_PRINTS()
sFailString = "AW_FAILED_HS"
//PRINT_GOD_TEXT("AW_FAILED_TRD")
BREAK
CASE DAMAGED_HANDLER_CARGO
CLEAR_PRINTS()
sFailString = "AW_FAILED_HCD"
BREAK
CASE WADE_AND_FLOYD_DEAD
CLEAR_PRINTS()
sFailString = "AW_FAILED_FWD"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
CASE ABADONED_DOCKS
CLEAR_PRINTS()
sFailString = "AW_FAILED_AD"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
CASE DITCHED_THE_CARGO
CLEAR_PRINTS()
sFailString = "AW_FAILED_DTC"
//PRINT_GOD_TEXT("AW_FAILED_CBL")
BREAK
#IF IS_DEBUG_BUILD
CASE FORCE_FAIL
//FAIL_GENERIC
CLEAR_PRINTS()
PRINT_GOD_TEXT("AW_FAILED")
BREAK
#ENDIF
ENDSWITCH
MISSION_FLOW_MISSION_FAILED_WITH_REASON(sFailString)
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_DOCKS_PRIME_BOARD_TRANSITION, FALSE)
IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_PICTURE) != BUILDINGSTATE_NORMAL
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_PICTURE, BUILDINGSTATE_NORMAL)
ENDIF
IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT) != BUILDINGSTATE_NORMAL
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT, BUILDINGSTATE_NORMAL)
ENDIF
IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT_SOFA) != BUILDINGSTATE_NORMAL
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT_SOFA, BUILDINGSTATE_NORMAL)
ENDIF
// IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM) != BUILDINGSTATE_NORMAL
// SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM, BUILDINGSTATE_NORMAL)
// ENDIF
// IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM_CUTSCENE) != BUILDINGSTATE_DESTROYED
// SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM_CUTSCENE, BUILDINGSTATE_DESTROYED)
// ENDIF
WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
//Maintain anything that could look weird during fade out (e.g. enemies walking off).
IF bAddedRopes
INT i = 0
REPEAT 8 i
STOP_ROPE_UNWINDING_FRONT(s_Crane.ropes[i])
STOP_ROPE_WINDING(s_Crane.ropes[i])
ENDREPEAT
ENDIF
WAIT(0)
ENDWHILE
RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR, bHasChanged)
RESTORE_MISSION_START_OUTFIT()
// Call RemovePlayerFromRestrictedVehicle() here if you need to
// check if we need to respawn the player in a different position,
// if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here
IF eFailedStage > MISSION_STAGE_1
VEHICLE_INDEX vehPlayer
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
vehPlayer = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())
ENDIF
IF DOES_ENTITY_EXIST(vehPlayer)
IF IS_VEHICLE_DRIVEABLE(vehPlayer)
IF IS_ENTITY_A_MISSION_ENTITY(vehPlayer)
IF NOT IS_ENTITY_DEAD(vehPlayer)
IF IS_VEHICLE_MODEL(vehPlayer, HANDLER)
OR IS_VEHICLE_MODEL(vehPlayer, HAULER)
OR IS_VEHICLE_MODEL(vehPlayer, FORKLIFT)
OR IS_VEHICLE_MODEL(vehPlayer, BARRACKS)
OR IS_VEHICLE_MODEL(vehPlayer, BARRACKS2)
//RemovePlayerFromRestrictedVehicle(vehPlayer)
ENDIF
IF GET_ENTITY_MODEL(vehPlayer) = GET_PLAYER_VEH_MODEL(CHAR_TREVOR)
SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<<27.8582, -2553.9465, 5.0001>>,263.0292)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<20.1336, -2536.1494, 5.0502>>,232.2569)
IF DOES_ENTITY_EXIST(vehPlayer)
IF IS_VEHICLE_DRIVEABLE(vehPlayer)
IF IS_VEHICLE_MODEL(vehPlayer, GET_PLAYER_VEH_MODEL(CHAR_TREVOR))
IF NOT IS_ENTITY_DEAD(vehPlayer)
IF IS_VEHICLE_SEAT_FREE(vehPlayer,VS_DRIVER)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehPlayer)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
MISSION_CLEANUP() // must only take 1 frame and terminate the thread
ENDPROC
// ======================================================================
// Misc Procs
// ======================================================================
//
//FUNC PED_INDEX PLAYER_PED(SELECTOR_SLOTS_ENUM sSelectorSlots)
// PED_INDEX pedIndex
//
// IF sSelectorPeds.eCurrentSelectorPed = sSelectorSlots
// pedIndex = PLAYER_PED_ID()
// ELSE
// pedIndex = sSelectorPeds.pedID[sSelectorSlots]
// ENDIF
//
// RETURN pedIndex
//ENDFUNC
// all player peds block non-temporary events
PROC SET_PLAYER_PEDS_BLOCK_NON_TEMPORARY_EVENTS()
INT i
REPEAT COUNT_OF(sSelectorPeds.pedID) i
IF NOT IS_PED_INJURED(sSelectorPeds.pedID[i])
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(sSelectorPeds.pedID[i], TRUE)
ENDIF
ENDREPEAT
ENDPROC
PROC INHIBIT_ALL_CONTROLS_EXCEPT_THIS(CONTROL_ACTION eAction)
IF eAction = INPUT_FRONTEND_ACCEPT
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
ENDIF
IF eAction = INPUT_FRONTEND_RIGHT_AXIS_Y
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
ENDIF
IF eAction = INPUT_FRONTEND_RIGHT_AXIS_X
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
ENDIF
IF eAction = INPUT_FRONTEND_AXIS_X
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
ENDIF
IF eAction = INPUT_FRONTEND_AXIS_Y
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
ENDIF
//SPECIAL CASE
IF eAction = INPUT_FRONTEND_X
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
ENDIF
ENDPROC
PROC INHIBIT_LOWERING_SPREADER()
IF NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer1)
// IF IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1)
// PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
// ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer2)
// IF IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer2)
// PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
// ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer1)
// IF IS_ENTITY_TOUCHING_ENTITY(s_containers[1].obj_main,vehTrailer1)
// PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
// ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer2)
// IF IS_ENTITY_TOUCHING_ENTITY(s_containers[1].obj_main,vehTrailer2)
// PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
// ENDIF
ENDIF
ENDPROC
PROC INHIBIT_LOWERING_SPREADER_IF_TOUCHING()
IF NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer1)
IF IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1)
PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer2)
IF IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer2)
PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer1)
IF IS_ENTITY_TOUCHING_ENTITY(s_containers[1].obj_main,vehTrailer1)
PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer2)
IF IS_ENTITY_TOUCHING_ENTITY(s_containers[1].obj_main,vehTrailer2)
PRINTLN("@@@@@@@@@@ IS_ENTITY_TOUCHING_ENTITY(s_containers[0].obj_main,vehTrailer1) @@@@@@@@@@@@")
IF(GET_CONTROL_UNBOUND_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0)
PRINTLN("@@@@@@@@@@ INHIBIT_CRANE @@@@@@@@@@@@")
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
ENDIF
ENDIF
ENDIF
ENDPROC
PROC MANAGE_CRANE_HELP()
VECTOR v_cabin_pos
VECTOR v_container_pos_1
VECTOR v_container_pos_2
VECTOR v_spreader_pos
VECTOR vTemp
INT i
//FLOAT fTemp
SET_GAMEPLAY_CAM_RELATIVE_HEADING(fThisValue)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(fThisValue)
INHIBIT_LOWERING_SPREADER_IF_TOUCHING()
//Full help text
IF iCraneHelp > 8
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
v_spreader_pos = GET_ENTITY_COORDS(s_crane.obj_spreader)
ENDIF
VECTOR vContainer1Pos
VECTOR vContainer2Pos
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
vContainer1Pos = GET_ENTITY_COORDS(s_containers[0].obj_main,FALSE)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
vContainer2Pos = GET_ENTITY_COORDS(s_containers[1].obj_main,FALSE)
ENDIF
IF CAN_CRANE_PICK_UP_CONTAINER(vContainer1Pos, v_spreader_pos)
OR CAN_CRANE_PICK_UP_CONTAINER(vContainer2Pos, v_spreader_pos)
IF s_crane.b_container_attached = FALSE
IF iCraneHelp < 15
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_PICKUC")
PRINT_HELP_FOREVER("CRH_PICKUC")
ENDIF
ENDIF
ELSE
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3A")
PRINT_HELP_FOREVER("CRH_H3A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3B")
PRINT_HELP_FOREVER("CRH_H3B")
ENDIF
ENDIF
ENDIF
ELSE
IF s_crane.b_container_attached = TRUE
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer2)
IF IS_ENTITY_AT_ENTITY(s_containers[1].obj_main,vehTrailer2,<<1.5,1,1>>)
INHIBIT_LOWERING_SPREADER()
IF iCraneHelp < 15
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_RELC")
PRINT_HELP_FOREVER("CRH_RELC")
ENDIF
ENDIF
ELSE
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3A")
PRINT_HELP_FOREVER("CRH_H3A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3B")
PRINT_HELP_FOREVER("CRH_H3B")
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
IF NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer2)
IF IS_ENTITY_AT_ENTITY(s_containers[0].obj_main,vehTrailer2,<<1.5,1,1>>)
INHIBIT_LOWERING_SPREADER()
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_RELC")
PRINT_HELP_FOREVER("CRH_RELC")
ENDIF
ELSE
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3A")
PRINT_HELP_FOREVER("CRH_H3A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3B")
PRINT_HELP_FOREVER("CRH_H3B")
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3A")
PRINT_HELP_FOREVER("CRH_H3A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H3B")
PRINT_HELP_FOREVER("CRH_H3B")
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//Use ~INPUT_SCRIPT_RIGHT_AXIS_Y~ to move crane.~n~
//Use ~INPUT_SCRIPT_RIGHT_AXIS_X~ to move cabin.~n~
//Use ~INPUT_SCRIPT_LEFT_AXIS_Y~ to move spreader.~s~
IF iCraneHelp = 5
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_HELP2A")
PRINT_HELP_FOREVER("CRH_HELP2A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_HELP2B")
PRINT_HELP_FOREVER("CRH_HELP2B")
ENDIF
ENDIF
ENDIF
//~s~Use ~PAD_LSTICK_LEFTRIGHT~ to move the cabin.~n~
//~s~Use ~PAD_RSTICK_UPDOWN~ to move the spreader.~s~
IF iCraneHelp = 6
IF ABSF(v_spreader_pos.x - vTemp.x) < 5.0
ENDIF
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_HELP3A")
PRINT_HELP_FOREVER("CRH_HELP3A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_HELP3B")
PRINT_HELP_FOREVER("CRH_HELP3B")
ENDIF
ENDIF
ENDIF
//~s~Use ~PAD_LSTICK_LEFTRIGHT~ to move the crane.~s~
IF iCraneHelp = 1
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H1A")
PRINT_HELP_FOREVER("CRH_H1A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H1B")
PRINT_HELP_FOREVER("CRH_H1B")
ENDIF
ENDIF
ENDIF
IF iCraneHelp > 8
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehFirstHauler)
//PRINTSTRING("Trailer Position:")PRINTFLOAT(GET_TIME_POSITION_IN_RECORDING(vehFirstHauler))PRINTNL()
IF GET_TIME_POSITION_IN_RECORDING(vehFirstHauler) > 9757.000000
IF DOES_ENTITY_EXIST(vehTrailer1)
DELETE_VEHICLE(vehTrailer1)
ENDIF
IF DOES_ENTITY_EXIST(vehFirstHauler)
DELETE_VEHICLE(vehFirstHauler)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//BLIPS
IF iCraneHelp > 10 AND iCraneHelp < 15
IF s_crane.b_container_attached
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF NOT DOES_BLIP_EXIST(dest_blip)
dest_blip = CREATE_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehTrailer2))
SET_ENTITY_PROOFS(vehTrailer2,TRUE,TRUE,TRUE,TRUE,TRUE)
SET_BLIP_COLOUR(dest_blip,BLIP_COLOUR_BLUE)
ENDIF
ENDIF
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
ELSE
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
IF bCrate0Attached = FALSE
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
IF NOT DOES_BLIP_EXIST(container0_blip)
AND NOT DOES_BLIP_EXIST(GET_BLIP_FROM_ENTITY(s_containers[0].obj_main))
container0_blip = CREATE_BLIP_FOR_ENTITY(s_containers[0].obj_main)
SET_BLIP_COLOUR(container0_blip,BLIP_COLOUR_GREEN)
ENDIF
ENDIF
ELSE
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
ENDIF
IF bCrate1Attached = FALSE
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
IF NOT DOES_BLIP_EXIST(container1_blip)
AND NOT DOES_BLIP_EXIST(GET_BLIP_FROM_ENTITY(s_containers[1].obj_main))
container1_blip = CREATE_BLIP_FOR_ENTITY(s_containers[1].obj_main)
SET_BLIP_COLOUR(container1_blip,BLIP_COLOUR_GREEN)
ENDIF
ENDIF
ELSE
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
ENDIF
ENDIF
ELSE
IF iCraneHelp > 0
IF s_crane.b_container_attached
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehTrailer1)
IF NOT DOES_BLIP_EXIST(dest_blip)
dest_blip = CREATE_BLIP_FOR_COORD(GET_ENTITY_COORDS(vehTrailer1))
SET_BLIP_COLOUR(dest_blip,BLIP_COLOUR_BLUE)
ENDIF
ENDIF
ELSE
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
IF bCrate0Attached = FALSE
IF NOT DOES_BLIP_EXIST(container0_blip)
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
container0_blip = CREATE_BLIP_FOR_ENTITY(s_containers[0].obj_main)
SET_BLIP_COLOUR(container0_blip,BLIP_COLOUR_GREEN)
ENDIF
ENDIF
ELSE
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
ENDIF
IF bCrate1Attached = FALSE
IF NOT DOES_BLIP_EXIST(container1_blip)
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
container1_blip = CREATE_BLIP_FOR_ENTITY(s_containers[1].obj_main)
SET_BLIP_COLOUR(container1_blip,BLIP_COLOUR_GREEN)
ENDIF
ENDIF
ELSE
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//HIDE_HUD_AND_RADAR_THIS_FRAME()
#IF IS_DEBUG_BUILD // debug controls
//PRINTSTRING("iCraneHelp:")PRINTINT(iCraneHelp)PRINTNL()
//PRINTSTRING("s_crane.b_container_attached:")PRINTBOOL(s_crane.b_container_attached)PRINTNL()
//PRINTSTRING("Cabin Position:")PRINTVECTOR(GET_ENTITY_COORDS(s_crane.obj_cabin))PRINTNL()
#ENDIF
//LIGHTS
IF HAS_LABEL_BEEN_TRIGGERED("DS1_10a")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10a2")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10a2", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10a2",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
SWITCH iCraneHelp
CASE 0
IF NOT IS_AUDIO_SCENE_ACTIVE("DOCKS_HEIST_USING_CRANE")
START_AUDIO_SCENE("DOCKS_HEIST_USING_CRANE")
ENDIF
REQUEST_ANIM_DICT("missheistdockssetup1trevor_crane")
INHIBIT_CRANE(CRANE_ACTION_CABIN)
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
INHIBIT_CRANE(CRANE_ACTION_CRANE)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10",TRUE)
ENDIF
ENDIF
ELSE
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_DIALOGUE_IF_SUBTITLES_OFF)
PRINT_GOD_TEXT("AW_GRAB_CR")
container0_blip = CREATE_BLIP_FOR_ENTITY(s_containers[0].obj_main)
container1_blip = CREATE_BLIP_FOR_ENTITY(s_containers[1].obj_main)
SET_BLIP_COLOUR(container0_blip,BLIP_COLOUR_GREEN)
SET_BLIP_COLOUR(container1_blip,BLIP_COLOUR_GREEN)
//~s~Use ~PAD_LSTICK_UPDOWN~ to move the cabin.~n~
//Press ~PAD_BACK~ to change view.~s~
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H1A")
PRINT_HELP_FOREVER("CRH_H1A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_H1B")
PRINT_HELP_FOREVER("CRH_H1B")
ENDIF
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
SETTIMERA(0)
bForceNoGrab = FALSE
iCraneHelpTimer = GET_GAME_TIMER()
vInitialCabinPosition = GET_ENTITY_COORDS(s_crane.obj_cabin, FALSE)
iCraneHelp++
ENDIF
ENDIF
BREAK
CASE 1
IF MANAGE_MY_TIMER(iCraneHelpTimer,200)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10a")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10a", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10a",TRUE)
ENDIF
ENDIF
ELSE
ENDIF
v_cabin_pos = GET_ENTITY_COORDS(s_crane.obj_cabin, FALSE)
v_container_pos_1 = GET_ENTITY_COORDS(s_containers[0].obj_main, FALSE)
v_container_pos_2 = GET_ENTITY_COORDS(s_containers[1].obj_main, FALSE)
IF VDIST(vInitialCabinPosition,v_cabin_pos) > 1.0
OR ABSF(v_cabin_pos.x - v_container_pos_1.x) < 1.0
OR ABSF(v_cabin_pos.x - v_container_pos_2.x) < 1.0
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
v_spreader_pos = GET_ENTITY_COORDS(s_crane.obj_spreader)
ENDIF
IF CAN_CRANE_PICK_UP_CONTAINER(GET_ENTITY_COORDS(s_containers[0].obj_main, FALSE), v_spreader_pos)
OR CAN_CRANE_PICK_UP_CONTAINER(GET_ENTITY_COORDS(s_containers[1].obj_main, FALSE), v_spreader_pos)
CLEAR_HELP()
//~s~Use ~PAD_RSTICK_UPDOWN~ to move the spreader.~s~
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_SPR")
PRINT_HELP_FOREVER("CRH_SPR")
ENDIF
iCraneHelpTimer = GET_GAME_TIMER()
vInitialCabinPosition = GET_ENTITY_COORDS(s_crane.obj_cabin, FALSE)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
iCraneHelp++
ENDIF
//IF ABSF(v_cabin_pos.y - -2418.09) < 0.01
IF v_cabin_pos.y < -2418.09
OR v_cabin_pos.y > -2413.05
CLEAR_HELP()
//~s~Use ~PAD_RSTICK_UPDOWN~ to move the spreader.~s~
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_SPR")
PRINT_HELP_FOREVER("CRH_SPR")
ENDIF
iCraneHelpTimer = GET_GAME_TIMER()
vInitialCabinPosition = GET_ENTITY_COORDS(s_crane.obj_cabin, FALSE)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
iCraneHelp++
ELSE
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
ELSE
INHIBIT_CRANE(CRANE_ACTION_CABIN)
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
INHIBIT_CRANE(CRANE_ACTION_CRANE)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
BREAK
CASE 2
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10b")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10b", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10b",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
iCraneHelp++
ENDIF
BREAK
CASE 3
IF MANAGE_MY_TIMER(iCraneHelpTimer,1000)
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10c")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10c", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10c",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
v_spreader_pos = GET_ENTITY_COORDS(s_crane.obj_spreader)
ENDIF
IF CAN_CRANE_PICK_UP_CONTAINER(GET_ENTITY_COORDS(s_containers[0].obj_main, FALSE), v_spreader_pos)
OR CAN_CRANE_PICK_UP_CONTAINER(GET_ENTITY_COORDS(s_containers[1].obj_main, FALSE), v_spreader_pos)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_SPR")
CLEAR_HELP()
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_GRAB_CR")
CLEAR_PRINTS()
ENDIF
//PRINT_GOD_TEXT("AW_CRA_DIA3")
//PICK UP CONTAINER
//~s~Press ~PAD_A~ to pick up a container.~s~
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_PICKUC")
PRINT_HELP_FOREVER("CRH_PICKUC")
ENDIF
SETTIMERA(0)
iCraneHelp++
ELSE
//INHIBIT_CRANE(CRANE_ACTION_CABIN)
//INHIBIT_CRANE(CRANE_ACTION_CRANE)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
ELSE
INHIBIT_CRANE(CRANE_ACTION_CABIN)
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
INHIBIT_CRANE(CRANE_ACTION_CRANE)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
BREAK
CASE 4
IF s_crane.b_container_attached
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_PICKUC")
CLEAR_HELP()
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehTrailer1)
SET_ENTITY_INVINCIBLE(vehTrailer1,TRUE)
FREEZE_ENTITY_POSITION(vehTrailer1,TRUE)
SET_ENTITY_INVINCIBLE(vehTrailer1,TRUE)
SET_ENTITY_PROOFS(vehTrailer1,TRUE,TRUE,TRUE,TRUE,TRUE)
ENDIF
REMOVE_BLIP(container0_blip)
REMOVE_BLIP(container1_blip)
//PRINT_GOD_TEXT("AW_CRA_DIA4")
//LSTICK MOVE CRANE UP DOWN
IF b_is_crane_cinematic_active
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_HELP2A")
PRINT_HELP_FOREVER("CRH_HELP2A")
ENDIF
ELSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_HELP2B")
PRINT_HELP_FOREVER("CRH_HELP2B")
ENDIF
ENDIF
iCraneHelp++
ELSE
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10d")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10d", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10d",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
//INHIBIT_CRANE(CRANE_ACTION_CABIN)
//INHIBIT_CRANE(CRANE_ACTION_SPREADER)
//INHIBIT_CRANE(CRANE_ACTION_CRANE)
ENDIF
BREAK
CASE 5
IF s_crane.b_container_attached
IF s_crane.f_crane_offset < -55
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_HELP2A")
CLEAR_HELP()
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer1)
SET_ENTITY_INVINCIBLE(vehTrailer1,TRUE)
ENDIF
DELETE_VEHICLE(vehFloydTruck)
DELETE_VEHICLE(vehTrailer2)
//INHIBIT_CRANE(CRANE_ACTION_CABIN)
//INHIBIT_CRANE(CRANE_ACTION_SPREADER)
//INHIBIT_CRANE(CRANE_ACTION_CRANE)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
iCraneHelp++
ELSE
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10e")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10e", CONV_PRIORITY_MEDIUM)
REPLAY_RECORD_BACK_FOR_TIME(5.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_10e",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("DS1_10e")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10e3")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10e3", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10e3",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10e5")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10e5", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10e5",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
ENDIF
BREAK
//In position for dropping crate
CASE 6
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
AND NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer1)
IF (IS_ENTITY_AT_ENTITY(s_containers[1].obj_main,vehTrailer1,<<1.5,1,1>>) AND GET_ENTITY_SPEED(s_containers[1].obj_main) < 0.3)
OR (IS_ENTITY_AT_ENTITY(s_containers[0].obj_main,vehTrailer1,<<1.5,1,1>>) AND GET_ENTITY_SPEED(s_containers[0].obj_main) < 0.3)
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_RELC")
PRINT_HELP_FOREVER("CRH_RELC")
ENDIF
INHIBIT_LOWERING_SPREADER()
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
iCraneHelp++
ELSE
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10f")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10f", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10f",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("DS1_10f")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10e2")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10e2", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10e2",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
ENDIF
BREAK
//Drop off crate
CASE 7
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
AND NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
AND NOT IS_ENTITY_DEAD(vehTrailer1)
IF (IS_ENTITY_AT_ENTITY(s_containers[1].obj_main,vehTrailer1,<<1.5,1,1>>) AND GET_ENTITY_SPEED(s_containers[1].obj_main) < 0.3)
OR (IS_ENTITY_AT_ENTITY(s_containers[0].obj_main,vehTrailer1,<<1.5,1,1>>) AND GET_ENTITY_SPEED(s_containers[0].obj_main) < 0.3)
INHIBIT_LOWERING_SPREADER()
IF s_crane.b_container_attached = FALSE
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_RELC")
CLEAR_HELP()
ENDIF
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
INHIBIT_CRANE(CRANE_ACTION_CABIN)
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
INHIBIT_CRANE(CRANE_ACTION_CRANE)
iCraneHelp++
ENDIF
ELSE
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("DS1_10f")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10e2")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10e2", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10e2",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
// IF IS_VEHICLE_DRIVEABLE(vehTrailer1)
// IF IS_VEHICLE_DRIVEABLE(vehFirstHauler)
// IF ABSF(v_spreader_pos.x - vTemp.x ) < 0.8
// AND ABSF(v_spreader_pos.y - vTemp.y ) < 0.4
// AND ABSF(v_spreader_pos.z - vTemp.z ) < 4.2
// IF s_crane.b_container_attached = FALSE
// IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CRH_RELC")
// CLEAR_HELP()
// ENDIF
// INHIBIT_CRANE(CRANE_ACTION_GRABBER)
// INHIBIT_CRANE(CRANE_ACTION_CABIN)
// INHIBIT_CRANE(CRANE_ACTION_SPREADER)
// INHIBIT_CRANE(CRANE_ACTION_CRANE)
// iCraneHelp++
//
// ENDIF
// ELSE
// INHIBIT_CRANE(CRANE_ACTION_GRABBER)
// ENDIF
// ENDIF
// ENDIF
BREAK
//Crate dropped off
CASE 8
VECTOR vTempOffset1
IF IS_VEHICLE_DRIVEABLE(vehTrailer1)
IF s_crane.b_container_attached = FALSE
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
// IF NOT DOES_BLIP_EXIST(dest_blip)
// dest_blip = CREATE_BLIP_FOR_ENTITY(s_containers[1].obj_main)
// ENDIF
IF DOES_ENTITY_EXIST(vehTrailer1)
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
IF IS_ENTITY_AT_ENTITY(s_containers[1].obj_main,vehTrailer1,<<1.5,1,1>>)
INHIBIT_LOWERING_SPREADER()
IF GET_ENTITY_SPEED(s_containers[1].obj_main) < 0.3
IF NOT DOES_BLIP_EXIST(container0_blip)
container0_blip = CREATE_BLIP_FOR_ENTITY(s_containers[0].obj_main)
ENDIF
REMOVE_BLIP(dest_blip)
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
vTempOffset1 = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehTrailer1,GET_ENTITY_COORDS(s_containers[1].obj_main))
ATTACH_ENTITY_TO_ENTITY(s_containers[1].obj_main,vehTrailer1,0,vTempOffset1,<<0,0,0>>,TRUE,FALSE,FALSE)
bCrate1Attached = TRUE
bForceNoGrab = TRUE
s_Containers[1].b_loaded_on_truck = TRUE
ENDIF
ELSE
IF NOT IS_ENTITY_ATTACHED(s_containers[1].obj_main)
IF GET_ENTITY_SPEED(s_containers[1].obj_main) < 0.2
IF IS_ENTITY_AT_ENTITY(s_containers[1].obj_main,vehTrailer1,<<10.5,2,10>>)
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10l")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10l", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10l",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
IF IS_ENTITY_AT_ENTITY(s_containers[0].obj_main,vehTrailer1,<<1.5,1,1>>)
INHIBIT_LOWERING_SPREADER()
IF GET_ENTITY_SPEED(s_containers[0].obj_main) < 0.3
IF NOT DOES_BLIP_EXIST(container1_blip)
container1_blip = CREATE_BLIP_FOR_ENTITY(s_containers[1].obj_main)
ENDIF
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
REMOVE_BLIP(dest_blip)
vTempOffset1 = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehTrailer1,GET_ENTITY_COORDS(s_containers[0].obj_main))
ATTACH_ENTITY_TO_ENTITY(s_containers[0].obj_main,vehTrailer1,0,vTempOffset1,<<0,0,0>>,TRUE,FALSE,FALSE)
FREEZE_ENTITY_POSITION(vehFirstHauler,FALSE)
FREEZE_ENTITY_POSITION(vehTrailer1,FALSE)
bCrate0Attached = TRUE
bForceNoGrab = TRUE
s_Containers[0].b_loaded_on_truck = TRUE
ENDIF
ELSE
IF NOT IS_ENTITY_ATTACHED(s_containers[0].obj_main)
IF GET_ENTITY_SPEED(s_containers[0].obj_main) < 0.2
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10l")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10l", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10l",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF bCrate0Attached OR bCrate1Attached
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10f3")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10f3", CONV_PRIORITY_MEDIUM)
REPLAY_RECORD_BACK_FOR_TIME(5.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_10f3",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler)
//Start vehicle recording.
IF IS_ENTITY_ATTACHED_TO_ENTITY(vehTrailer1,s_containers[0].obj_main) OR IS_ENTITY_ATTACHED_TO_ENTITY(vehTrailer1,s_containers[1].obj_main)
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(2,"AWDocks1")
FREEZE_ENTITY_POSITION(vehFirstHauler,FALSE)
FREEZE_ENTITY_POSITION(vehTrailer1,FALSE)
START_PLAYBACK_RECORDED_VEHICLE(vehFirstHauler,2,"AWDocks1")
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
bInhibitCrane = TRUE
iCraneTimer = GET_GAME_TIMER()
bFakeSound = TRUE
SET_LABEL_AS_TRIGGERED("DS1_10l",FALSE)
iCraneHelp++
ELSE
REQUEST_VEHICLE_RECORDING(2,"AWDocks1")
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
INHIBIT_CRANE(CRANE_ACTION_CABIN)
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
INHIBIT_CRANE(CRANE_ACTION_CRANE)
ENDIF
ENDIF
BREAK
//So you can watch the truck leaving
CASE 9
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
INHIBIT_CRANE(CRANE_ACTION_SPREADER)
//1542589
//inhibting spreader
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10g")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10g", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10g",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT MANAGE_MY_TIMER(iCraneTimer, 1000)
REPEAT 8 i
STOP_ROPE_UNWINDING_FRONT(s_crane.ropes[i])
START_ROPE_WINDING(s_crane.ropes[i])
ENDREPEAT
IF HAS_SOUND_FINISHED(s_Crane.i_spreader_sound_id)
PLAY_SOUND_FROM_ENTITY(s_Crane.i_spreader_sound_id, "CRANE_MOVE_U_D", s_Crane.obj_spreader)
//PRINTLN("SPREADER AUDIO PLAYING")//PRINTNL()
ENDIF
ENDIF
IF MANAGE_MY_TIMER(iCraneTimer,5000)
bFakeSound = FALSE
bInhibitCrane = FALSE
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
iCraneTimer = GET_GAME_TIMER()
iCraneHelp++
ENDIF
BREAK
//Picked up another container
CASE 10
//1542589
//inhibting grabber until you are past
//INHIBIT_CRANE(CRANE_ACTION_GRABBER)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10g")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10g", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10g",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10g2")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10g2", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10g2",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF MANAGE_MY_TIMER(iCraneTimer,3000)
bForceNoGrab = FALSE
ENDIF
IF s_crane.b_container_attached
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
IF s_crane.b_container_attached OR s_crane.f_crane_offset > -22
CLEAR_PRINTS()
//PRINT_GOD_TEXT("AW_CRA_DIA7")
bForceNoGrab = FALSE
IF NOT DOES_ENTITY_EXIST(vehFloydTruck)
SPAWN_VEHICLE(vehFloydTruck,HAULER,<< -117.9839, -2416.6272, 5.0003 >>,91.3366)
ELSE
IF NOT DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SPAWN_VEHICLE(vehTrailer2,DOCKTRAILER,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehFloydTruck, <<-0.3, -9.5, -0.25>>), GET_ENTITY_HEADING(vehFloydTruck))
SET_VEHICLE_COLOURS(vehFloydTruck,0,0)
SET_VEHICLE_EXTRA(vehTrailer2,1,TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
//IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF NOT IS_PED_INJURED(pedFloyd)
TASK_ENTER_VEHICLE(pedFloyd,vehFloydTruck)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND DOES_ENTITY_EXIST(vehTrailer2)
//IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
//IF NOT IS_ENTITY_ATTACHED(vehFloydTruck)
FREEZE_ENTITY_POSITION(vehFloydTruck,TRUE)
//ENDIF
//IF NOT IS_ENTITY_ATTACHED(vehTrailer2)
FREEZE_ENTITY_POSITION(vehTrailer2,TRUE)
//ENDIF
SET_ENTITY_PROOFS(vehTrailer2,FALSE,FALSE,FALSE,TRUE,FALSE)
iCraneHelp++
//ELSE
//ENDIF
ENDIF
ENDIF
//ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 11
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10g3")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_10g3", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_10g3",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF s_crane.b_container_attached = TRUE
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
IF s_crane.f_crane_offset < -55
//PRINT_GOD_TEXT("AW_CRA_DIA10")
iCraneHelp++
ENDIF
BREAK
//check if both crates are in the area
// IF IS_ENTITY_AT_COORD(s_containers[1].obj_main,<< -106.7826, -2414.5659, 5.0003 >>,<<10,10,2>>)
// AND IS_ENTITY_AT_COORD(s_containers[0].obj_main,<< -106.7826, -2414.5659, 5.0003 >>,<<10,10,2>>)
CASE 12
//INHIBIT_CRANE(CRANE_ACTION_GRABBER)
VECTOR vTempOffset
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
vTemp = GET_ENTITY_COORDS(vehFloydTruck)
PRINTSTRING("float:")PRINTFLOAT(ABSF(v_spreader_pos.x - vTemp.x ))
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
//IF ABSF(v_spreader_pos.x - vTemp.x) < 5.0
IF s_crane.b_container_attached = FALSE
IF DOES_ENTITY_EXIST(vehTrailer2)
IF NOT IS_ENTITY_DEAD(s_containers[1].obj_main)
IF IS_ENTITY_AT_ENTITY(s_containers[1].obj_main,vehTrailer2,<<1.5,1,1>>)
INHIBIT_LOWERING_SPREADER()
IF GET_ENTITY_SPEED(s_containers[1].obj_main) < 0.3
IF bCrate1Attached = FALSE
DETACH_ENTITY(s_containers[1].obj_main)
s_Containers[1].b_loaded_on_truck = TRUE
//ATTACH_ENTITY_TO_ENTITY_PHYSICALLY(s_containers[1].obj_main,vehTrailer1, -1, -1, <<0,0,0>>,<<0,0,0>>,<<0,0,0>>, -1.0,TRUE,TRUE,TRUE,TRUE)
vTempOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehTrailer2,GET_ENTITY_COORDS(s_containers[1].obj_main))
ATTACH_ENTITY_TO_ENTITY(s_containers[1].obj_main,vehTrailer2,0,vTempOffset,<<0,0,0>>,TRUE,FALSE,FALSE)
bCrate1Attached = TRUE
bForceNoGrab = TRUE
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
IF DOES_ENTITY_EXIST(vehFirstHauler)
DELETE_VEHICLE(vehFirstHauler)
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer1)
DELETE_VEHICLE(vehTrailer1)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
DELETE_OBJECT(s_containers[0].obj_main)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_left_door)
DELETE_OBJECT(s_containers[0].obj_left_door)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_right_door)
DELETE_OBJECT(s_containers[0].obj_right_door)
ENDIF
CLEAR_PRINTS()
//PRINT_GOD_TEXT("AW_CRA_DIA9")
iCraneHelp++
ENDIF
ENDIF
ELSE
IF bCrate0Attached = FALSE
IF NOT IS_ENTITY_DEAD(s_containers[0].obj_main)
IF IS_ENTITY_AT_ENTITY(s_containers[0].obj_main,vehTrailer2,<<1.5,1,1>>)
INHIBIT_LOWERING_SPREADER()
IF GET_ENTITY_SPEED(s_containers[0].obj_main) < 0.3
s_Containers[0].b_loaded_on_truck = TRUE
DETACH_ENTITY(s_containers[0].obj_main)
vTempOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehTrailer2,GET_ENTITY_COORDS(s_containers[0].obj_main))
ATTACH_ENTITY_TO_ENTITY(s_containers[0].obj_main,vehTrailer2,0,vTempOffset,<<0,0,0>>,TRUE,FALSE,FALSE)
//ATTACH_ENTITY_TO_ENTITY_PHYSICALLY(s_containers[1].obj_main,vehTrailer1, -1, -1, <<0,0,0>>,<<0,0,0>>,<<0,0,0>>, -1.0,TRUE,TRUE,TRUE,TRUE)
//ATTACH_ENTITY_TO_ENTITY(s_containers[0].obj_main,vehTrailer2,0,<<0,0,0>>,<<0,0,0>>,TRUE,FALSE,TRUE)
bCrate0Attached = TRUE
bForceNoGrab = TRUE
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
IF DOES_ENTITY_EXIST(vehFirstHauler)
DELETE_VEHICLE(vehFirstHauler)
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer1)
DELETE_VEHICLE(vehTrailer1)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
DELETE_OBJECT(s_containers[1].obj_main)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_left_door)
DELETE_OBJECT(s_containers[1].obj_left_door)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_right_door)
DELETE_OBJECT(s_containers[1].obj_right_door)
ENDIF
CLEAR_PRINTS()
//PRINT_GOD_TEXT("AW_CRA_DIA9")
iCraneHelp++
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_noton")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_noton", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_noton",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//ENDIF
ENDIF
BREAK
//bInhibitCrane = TRUE
CASE 13
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
IF s_crane.b_container_attached = FALSE
IF s_crane.f_crane_offset < -55
CLEAR_PRINTS()
SETTIMERA(0)
//PRINT_GOD_TEXT("AW_CRA_DIA8")
bInhibitCrane = TRUE
bFakeSound = TRUE
iCraneHelp++
ELSE
SETTIMERA(0)
//PRINT_GOD_TEXT("AW_CRA_DIA9")
//iCraneHelp++
ENDIF
ENDIF
BREAK
CASE 14
IF s_crane.b_container_attached = FALSE
//IF bCrate0Attached AND bCrate1Attached
REPEAT 8 i
STOP_ROPE_UNWINDING_FRONT(s_crane.ropes[i])
START_ROPE_WINDING(s_crane.ropes[i])
ENDREPEAT
IF TIMERA() > 3000
IF s_crane.f_crane_offset < -55
//PRINT_GOD_TEXT("AW_CRA_DIA8")
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
//IF NOT IS_ENTITY_ATTACHED(vehFloydTruck)
FREEZE_ENTITY_POSITION(vehFloydTruck,FALSE)
//ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
//IF NOT IS_ENTITY_ATTACHED(vehTrailer2)
FREEZE_ENTITY_POSITION(vehTrailer2,FALSE)
//ENDIF
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
IF NOT HAS_SOUND_FINISHED(s_Crane.i_spreader_sound_id)
STOP_SOUND(s_Crane.i_spreader_sound_id)
ENDIF
UNLOCK_MINIMAP_ANGLE()
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(DH1_EMPLOYEE_OF_THE_MONTH)
bCraneSectionComplete = TRUE
IF IS_AUDIO_SCENE_ACTIVE("DOCKS_HEIST_USING_CRANE")
STOP_AUDIO_SCENE("DOCKS_HEIST_USING_CRANE")
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
bFakeSound = FALSE
iCraneHelp++
ENDIF
ELSE
IF NOT s_crane.b_spreader_stuck_on_ground
IF HAS_SOUND_FINISHED(s_Crane.i_spreader_sound_id)
PLAY_SOUND_FROM_ENTITY(s_Crane.i_spreader_sound_id, "CRANE_MOVE_U_D", s_Crane.obj_spreader)
//PRINTLN("SPREADER AUDIO PLAYING")//PRINTNL()
ENDIF
SET_VARIABLE_ON_SOUND(s_Crane.i_spreader_sound_id, "Speed", MAX_SPREADER_VEL / 2.0)
ELSE
IF NOT HAS_SOUND_FINISHED(s_Crane.i_spreader_sound_id)
STOP_SOUND(s_Crane.i_spreader_sound_id)
ENDIF
ENDIF
ENDIF
//ENDIF
ELSE
INHIBIT_CRANE(CRANE_ACTION_GRABBER)
ENDIF
BREAK
CASE 15
UNLOCK_MINIMAP_ANGLE()
DISPLAY_RADAR(TRUE)
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
CLEAR_PRINTS()
ENDIF
IF IS_HELP_MESSAGE_ON_SCREEN()
CLEAR_HELP()
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
BREAK
ENDSWITCH
ENDPROC
// ======================================================================
// Ropes
// ======================================================================
PROC CREATE_ROPES(ENTITY_INDEX &Entity, ROPE_INDEX &rope, BOOL &bRopesCreated)
IF NOT bRopesCreated
// INT i
VECTOR vCreatePos
IF NOT IS_ENTITY_DEAD(Entity)
vCreatePos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(Entity, <<0,0,0.7>>)
rope = ADD_ROPE(vCreatePos, <<0,0,0>>, 15, PHYSICS_ROPE_DEFAULT)
bRopesCreated = TRUE
ENDIF
ENDIF
ENDPROC
// attach sub to container with rope
PROC ATTACH_ROPE_FROM_ENTITY_TO_OBJECT(ENTITY_INDEX &Vehicle, OBJECT_INDEX &containerObject, ROPE_INDEX &rope, BOOL &bRopesCreated, BOOL &bRopesAttached, BOOL bPin, BOOL bSetPlaybackMass = FALSE)
IF NOT bRopesCreated
CREATE_ROPES(Vehicle, rope, bRopesCreated)
ENDIF
IF bRopesCreated
IF NOT bRopesAttached
// INT i
VECTOR vAttachPos
VECTOR vContainerAttachPos
IF NOT IS_ENTITY_DEAD(Vehicle)
AND DOES_ENTITY_EXIST(containerObject)
IF DOES_ENTITY_HAVE_PHYSICS(containerObject)
OR bPin
DETACH_ENTITY(containerObject)
vAttachPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(Vehicle, <<0,0,0.7>>)
vContainerAttachPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(containerObject, <<0,0,0.7>>)
IF bPin
DETACH_ROPE_FROM_ENTITY(rope, containerObject)
PIN_ROPE_VERTEX(rope, 0, vAttachPos)
PIN_ROPE_VERTEX(rope, GET_ROPE_VERTEX_COUNT(rope)-1, vContainerAttachPos)
ELSE
UNPIN_ROPE_VERTEX(rope, 0)
UNPIN_ROPE_VERTEX(rope, GET_ROPE_VERTEX_COUNT(rope)-1)
ATTACH_ENTITIES_TO_ROPE(rope, containerObject, Vehicle, vContainerAttachPos, vAttachPos, 15, 0, 0)
ENDIF
IF NOT bPin
FLOAT fMass
FLOAT fGravity
IF bSetPlaybackMass
fMass = 0.00001
fGravity = 1
ELSE
fMass = 0.00001
fGravity = 1
ENDIF
SET_OBJECT_PHYSICS_PARAMS(containerObject, fMass, fGravity, <<-1,-1,-1>>, <<-1,-1,-1>>)
ENDIF
bRopesAttached = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC MANAGE_FORCE_MERC_TASKS()
IF bForceTasks = TRUE
FOR iThisCounter = 0 TO iTotalMerc - 1
IF NOT IS_ENTITY_DEAD(pedMerc[iThisCounter])
IF NOT IS_ENTITY_DEAD(sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
IF GET_SCRIPT_TASK_STATUS(pedMerc[iThisCounter],SCRIPT_TASK_COMBAT)<> PERFORMING_TASK
TASK_COMBAT_PED(pedMerc[iThisCounter],sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN])
ENDIF
ENDIF
ENDIF
ENDFOR
ENDIF
ENDPROC
PROC SET_MAP_CRANE_VISIBLE(BOOL b_is_visible)
IF b_is_visible = FALSE
ENDIF
//Dockside Crane
CREATE_MODEL_HIDE(<< -72.16, -2390.39, 24.11 >> , 200.0, Prop_Dock_Crane_02, b_is_visible)
//SET_USES_COLLISION_OF_CLOSEST_OBJECT_OF_TYPE(<< -99.0574, -2389.7400, 5.0005 >> , 300.0, Prop_Dock_Crane_02, b_is_visible)
ENDPROC
//Some MISC debug procs.
#IF IS_DEBUG_BUILD
//PURPOSE: does a script assert
PROC ScriptAssert(STRING errorPassed)
PRINTSTRING("------- Docks Setup 1 Script Assert --------")//PRINTNL()
PRINTSTRING("MISSION_STAGE_ENUM = ")PRINTINT(ENUM_TO_INT(eMissionStage))//PRINTNL()
PRINTSTRING("iprogress = ")PRINTINT(iprogress)//PRINTNL()
PRINTSTRING("iPreLoadStage = ")PRINTINT(iPreStreamStage)//PRINTNL()
PRINTSTRING("iSpeechProgress = ")PRINTINT(iSpeechProgress)//PRINTNL()
//PRINTSTRING("iBuddyProgress = ")PRINTINT(iBuddyProgress)//PRINTNL()
//PRINTSTRING("ienemyAIprog = ")PRINTINT(ienemyAIprog)//PRINTNL()
//PRINTSTRING("icutsceneprog = ")PRINTINT(icutsceneprog)//PRINTNL()
SCRIPT_ASSERT(errorPassed)
ENDPROC
//PURPOSE: Prints a line so it's easy to find my db output in logs
PROC DBOutPut()
PRINTSTRING("Docks Setup 1 output")//PRINTNL()
ENDPROC
//PURPOSE: Prints thigs when they change value
PROC Where_are_we()
IF iMissionStageDB <> ENUM_TO_INT(eMissionStage)
iMissionStageDB = ENUM_TO_INT(eMissionStage)
DBOutPut()
PRINTSTRING("MISSION_STAGE_ENUM = ")PRINTINT(iMissionStageDB)//PRINTNL()
ENDIF
IF iProgressDB <> iProgress
iProgressDB = iProgress
DBOutPut()
PRINTSTRING("iprogress = ")PRINTINT(iprogress)//PRINTNL()
ENDIF
IF iPreLoadStageDB <> iPreStreamStage
iPreLoadStageDB = iPreStreamStage
DBOutPut()
PRINTSTRING("iPreLoadStage = ")PRINTINT(iPreStreamStage)//PRINTNL()
ENDIF
IF iSpeechTextProgressDB <> iSpeechProgress
iSpeechTextProgressDB = iSpeechProgress
DBOutPut()
PRINTSTRING("iSpeechProgress = ")PRINTINT(iSpeechProgress)//PRINTNL()
ENDIF
IF iMissionDialogueDB <> iMissionDialogue
iMissionDialogueDB = iMissionDialogue
DBOutPut()
PRINTSTRING("iMissionDialogue = ")PRINTINT(iMissionDialogue)//PRINTNL()
ENDIF
IF iCraneHelpDB <> iCraneHelp
iCraneHelpDB = iCraneHelp
DBOutPut()
PRINTSTRING("iCraneHelp = ")PRINTINT(iCraneHelp)//PRINTNL()
ENDIF
ENDPROC
#ENDIF
//PURPOSE: controls the sucessfull completion of the mission
PROC MISSION_PASSED()
// IF IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_IN(500)
// ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(DH1_HONEST_DAYS_WORK)
SET_HEIST_BOARD_DISPLAY_GROUP_VISIBLE(HEIST_DOCKS, PBDG_1, TRUE)
//RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR, bHasChanged)
//Make sure the board intro cutscene is loading as we pass.
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_DOCKS_PRIME_BOARD_TRANSITION, TRUE)
IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_PICTURE) != BUILDINGSTATE_DESTROYED
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_PICTURE, BUILDINGSTATE_DESTROYED)
ENDIF
IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT) != BUILDINGSTATE_DESTROYED
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT, BUILDINGSTATE_DESTROYED)
ENDIF
IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT_SOFA) != BUILDINGSTATE_DESTROYED
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT_SOFA, BUILDINGSTATE_DESTROYED)
ENDIF
// IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM) != BUILDINGSTATE_DESTROYED
// SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM, BUILDINGSTATE_DESTROYED)
// ENDIF
// IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM_CUTSCENE) != BUILDINGSTATE_NORMAL
// SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM_CUTSCENE, BUILDINGSTATE_NORMAL)
// ENDIF
Mission_Flow_Mission_Passed(TRUE)
//RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED_ID())
MISSION_CLEANUP(FALSE,TRUE)
ENDPROC
//PURPOSE: resets the mission stage ints
PROC RESET_MISSION_STAGE_VARIABLES()
iProgress = 0
iPreStreamStage = 0
//iSpeechProgress = 0
//iBuddyProgress = 0
//icutsceneprog = 0
//ienemyAIprog = 0
iSetupProgress = 0
bCraneSectionComplete = FALSE
bForceNoGrab = FALSE
bInhibitCrane = FALSE
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
bObjectsCreated[0] = FALSE
bObjectsCreated[1] = FALSE
bObjectsCreated[2] = FALSE
#IF IS_DEBUG_BUILD
iProgressDB = 0
iPreLoadStageDB = 0
iSpeechTextProgressDB = 0
//icutsceneprogDB = 0
//ienemyAIprogDB = 0
iMissionStageDB = 0
#ENDIF
ENDPROC
//PURPOSE: resets the mission stage ints if you skipp
PROC RESET_MISSION_STAGE_INTS_SKIP()
RESET_MISSION_STAGE_VARIABLES()
bmissionstageloaded = TRUE
#IF IS_DEBUG_BUILD
bskipping = FALSE
#ENDIF
ENDPROC
PROC ADVANCE_MISSION_STAGE()
//bPrinted = FALSE
eMissionStage = INT_TO_ENUM(MISSION_STAGE_ENUM, (ENUM_TO_INT(eMissionStage) + 1))
RESET_MISSION_STAGE_VARIABLES()
ENDPROC
// ======================================================================
// PED & Vehicle Creation
// ======================================================================
//Create the docks stuff
FUNC BOOL CREATE_THE_DOCKS_STUFF()
IF eMissionStage = MISSION_STAGE_1
IF bObjectsCreated[0] = FALSE
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),vDocks) < 100
REQUEST_MODEL(S_M_Y_BlackOps_01)
REQUEST_MODEL(S_M_M_DOCKWORK_01)
REQUEST_MODEL(BIFF)
REQUEST_MODEL(FORKLIFT)
IF HAS_MODEL_LOADED(S_M_Y_BlackOps_01)
AND HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
AND HAS_MODEL_LOADED(BIFF)
AND HAS_MODEL_LOADED(FORKLIFT)
IF NOT DOES_ENTITY_EXIST(vehDocks[0])
SPAWN_VEHICLE(vehDocks[0],BIFF,vDockVeh[0],fDockVeh[0],-1,1.0,FALSE)
ELSE
IF NOT DOES_ENTITY_EXIST(vehDocks[1])
SPAWN_VEHICLE(vehDocks[1],FORKLIFT,vDockVeh[1],fDockVeh[1],-1,1.0,FALSE)
ELSE
createMercenary(0,TRUE)
createMercenary(1,TRUE)
createMercenary(2,TRUE)
createMercenary(3,FALSE)
createMercenary(7,FALSE)
createMercenary(8,FALSE)
//createDockWorker(3)
createDockWorker(4)
createDockWorker(5)
createDockWorker(6)
createDockWorker(7)
createDockWorker(8)
IF eMissionStage != MISSION_STAGE_6
createDockWorker(12)
ENDIF
createDockWorker(13)
createDockWorker(14)
createDockWorker(17)
createDockWorker(18)
bObjectsCreated[0] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_1 AND eMissionStage < MISSION_STAGE_5
IF bObjectsCreated[0] = FALSE
REQUEST_MODEL(S_M_Y_BlackOps_01)
REQUEST_MODEL(S_M_M_DOCKWORK_01)
REQUEST_MODEL(BIFF)
REQUEST_MODEL(FORKLIFT)
IF HAS_MODEL_LOADED(S_M_Y_BlackOps_01)
AND HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
AND HAS_MODEL_LOADED(BIFF)
AND HAS_MODEL_LOADED(FORKLIFT)
IF eMissionStage = MISSION_STAGE_2
IF NOT DOES_ENTITY_EXIST(vehDocks[2])
SPAWN_VEHICLE(vehDocks[2],BIFF,vDockVeh[2],fDockVeh[2],-1,1.0,FALSE)
ELSE
IF NOT DOES_ENTITY_EXIST(vehDocks[3])
SPAWN_VEHICLE(vehDocks[3],BIFF,vDockVeh[3],fDockVeh[3],-1,1.0,FALSE)
ELSE
IF NOT DOES_ENTITY_EXIST(vehDocks[0])
SPAWN_VEHICLE(vehDocks[0],BIFF,vDockVeh[0],fDockVeh[0],-1,1.0,FALSE)
ELSE
IF NOT DOES_ENTITY_EXIST(vehDocks[1])
SPAWN_VEHICLE(vehDocks[1],FORKLIFT,vDockVeh[1],fDockVeh[1],-1,1.0,FALSE)
ELSE
createMercenary(0,TRUE)
createMercenary(1,TRUE)
createMercenary(2,TRUE)
createMercenary(3,FALSE)
createMercenary(7,FALSE)
createMercenary(8,FALSE)
createDockWorker(4)
createDockWorker(5)
createDockWorker(6)
createDockWorker(7)
createDockWorker(8)
IF eMissionStage != MISSION_STAGE_6
createDockWorker(12)
ENDIF
createDockWorker(13)
createDockWorker(14)
createDockWorker(17)
createDockWorker(18)
bObjectsCreated[0] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF NOT DOES_ENTITY_EXIST(vehDocks[1])
SPAWN_VEHICLE(vehDocks[1],FORKLIFT,vDockVeh[1],fDockVeh[1],-1,1.0,FALSE)
ELSE
createMercenary(0,TRUE)
createMercenary(1,TRUE)
createMercenary(2,TRUE)
createMercenary(3,FALSE)
createMercenary(7,FALSE)
createMercenary(8,FALSE)
createDockWorker(4)
createDockWorker(5)
createDockWorker(6)
createDockWorker(7)
createDockWorker(8)
IF eMissionStage != MISSION_STAGE_6
createDockWorker(12)
ENDIF
createDockWorker(13)
createDockWorker(14)
createDockWorker(17)
createDockWorker(18)
bObjectsCreated[0] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_4
IF bObjectsCreated[0] = FALSE
REQUEST_MODEL(S_M_Y_BlackOps_01)
REQUEST_MODEL(S_M_M_DOCKWORK_01)
IF HAS_MODEL_LOADED(S_M_Y_BlackOps_01)
AND HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
createMercenary(0,TRUE)
createMercenary(1,TRUE)
createMercenary(2,TRUE)
createMercenary(3,FALSE)
createMercenary(7,FALSE)
createMercenary(8,FALSE)
createDockWorker(4)
createDockWorker(5)
createDockWorker(6)
createDockWorker(7)
createDockWorker(8)
IF eMissionStage != MISSION_STAGE_6
createDockWorker(12)
ENDIF
createDockWorker(13)
createDockWorker(14)
createDockWorker(17)
createDockWorker(18)
bObjectsCreated[0] = TRUE
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_2 AND eMissionStage < MISSION_STAGE_PASSED
IF bObjectsCreated[1] = FALSE
IF bObjectsCreated[0] = TRUE
REQUEST_MODEL(HANDLER)
REQUEST_MODEL(FORKLIFT)
REQUEST_MODEL(PROP_CONTR_03B_LD)
IF HAS_MODEL_LOADED(FORKLIFT)
AND HAS_MODEL_LOADED(PROP_CONTR_03B_LD)
AND HAS_MODEL_LOADED(HANDLER)
IF eMissionStage < MISSION_STAGE_7
IF NOT DOES_ENTITY_EXIST(vehHandler)
IF eMissionStage = MISSION_STAGE_6
SPAWN_VEHICLE(vehHandler,HANDLER,<<-92.7994, -2448.4775, 5.0163>>, 257.5271,-1,1.0,FALSE)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,FALSE)
SET_VEHICLE_COLOUR_COMBINATION(vehHandler,0)
SET_VEHICLE_AUTOMATICALLY_ATTACHES(vehHandler,FALSE)
SET_VEHICLE_PROVIDES_COVER(vehHandler,FALSE)
ELSE
SPAWN_VEHICLE(vehHandler,HANDLER,<<-129.77, -2418.28, 6.24>>,183.0850,-1,1.0,FALSE)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,FALSE)
SET_VEHICLE_COLOUR_COMBINATION(vehHandler,0)
SET_VEHICLE_AUTOMATICALLY_ATTACHES(vehHandler,FALSE)
FREEZE_ENTITY_POSITION(vehHandler,TRUE)
SET_VEHICLE_PROVIDES_COVER(vehHandler,FALSE)
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedMerc[3])
TASK_START_SCENARIO_AT_POSITION(pedMerc[3],"WORLD_HUMAN_GUARD_STAND",<<-123.91, -2352.94, 9.32>>,-0.21)
ENDIF
IF NOT IS_PED_INJURED(pedMerc[7])
TASK_START_SCENARIO_AT_POSITION(pedMerc[7],"WORLD_HUMAN_SMOKING",<<-133.26, -2379.25, 9.32>>,153.86)
ENDIF
IF NOT IS_PED_INJURED(pedMerc[8])
TASK_START_SCENARIO_AT_POSITION(pedMerc[8],"WORLD_HUMAN_BINOCULARS",<<-216.83, -2376.18, 26.46>>,-160.35)
ENDIF
IF NOT IS_PED_INJURED(pedDockWorker[6])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[6],"WORLD_HUMAN_WELDING")
SET_PED_CAN_EVASIVE_DIVE(pedDockWorker[6],FALSE)
SET_RAGDOLL_BLOCKING_FLAGS(pedDockWorker[6],RBF_PLAYER_IMPACT)
ENDIF
IF NOT IS_PED_INJURED(pedDockWorker[8])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[8],"WORLD_HUMAN_STAND_MOBILE")
ENDIF
IF NOT IS_PED_INJURED(pedDockWorker[13])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[13],"WORLD_HUMAN_CLIPBOARD")
SET_RAGDOLL_BLOCKING_FLAGS(pedDockWorker[13],RBF_PLAYER_IMPACT)
ENDIF
bObjectsCreated[1] = TRUE
ENDIF
ENDIF
ELSE
IF NOT IS_PED_INJURED(pedDockWorker[6])
SET_PED_CAPSULE(pedDockWorker[6], 0.5)
ENDIF
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_7
IF bObjectsCreated[3] = FALSE
REQUEST_MODEL(HAULER)
REQUEST_MODEL(DOCKTRAILER)
IF HAS_MODEL_LOADED(HAULER)
AND HAS_MODEL_LOADED(DOCKTRAILER)
IF NOT DOES_ENTITY_EXIST(vehFirstHauler)
SPAWN_VEHICLE(vehFirstHauler,HAULER,<< -117.9839, -2416.6272, 5.0003 >>,91.3366)
ELSE
IF NOT DOES_ENTITY_EXIST(vehTrailer1)
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler)
SPAWN_VEHICLE(vehTrailer1,DOCKTRAILER,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehFirstHauler, <<-0.3, -9.5, -0.25>>), GET_ENTITY_HEADING(vehFirstHauler))
ACTIVATE_PHYSICS(vehFirstHauler)
ACTIVATE_PHYSICS(vehTrailer1)
SET_VEHICLE_EXTRA(vehTrailer1,1,TRUE)
ENDIF
ELSE
bObjectsCreated[3] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_8
IF bObjectsCreated[3] = FALSE
REQUEST_MODEL(HAULER)
REQUEST_MODEL(DOCKTRAILER)
IF HAS_MODEL_LOADED(HAULER)
AND HAS_MODEL_LOADED(DOCKTRAILER)
IF NOT DOES_ENTITY_EXIST(vehFloydTruck)
SPAWN_VEHICLE(vehFloydTruck,HAULER,<< -117.9839, -2416.6272, 5.0003 >>,91.3366)
ELSE
IF NOT DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_VEHICLE_COLOURS(vehFloydTruck,0,0)
SPAWN_VEHICLE(vehTrailer2,DOCKTRAILER,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehFloydTruck, <<-0.3, -9.5, -0.25>>), GET_ENTITY_HEADING(vehFloydTruck))
ACTIVATE_PHYSICS(vehFloydTruck)
ACTIVATE_PHYSICS(vehTrailer2)
SET_VEHICLE_EXTRA(vehTrailer2,1,TRUE)
ENDIF
ELSE
bObjectsCreated[3] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_8
IF bObjectsCreated[2] = FALSE
REQUEST_MODEL(S_M_M_DOCKWORK_01)
REQUEST_MODEL(TIPTRUCK)
IF HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
AND HAS_MODEL_LOADED(TIPTRUCK)
IF NOT DOES_ENTITY_EXIST(vehFinal)
SPAWN_VEHICLE(vehFinal,TIPTRUCK, << 465.8751, -3037.0837, 5.0686 >>, 126.3433)
ELSE
IF NOT DOES_ENTITY_EXIST(pedDockWorker[15])
createDockWorker(15)
ELSE
IF NOT DOES_ENTITY_EXIST(pedDockWorker[16])
createDockWorker(16)
ELSE
bObjectsCreated[2] = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_1
IF eMissionStage = MISSION_STAGE_2
IF bObjectsCreated[0] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_2
IF bObjectsCreated[0] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_4
IF bObjectsCreated[0] = TRUE AND bObjectsCreated[1] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_5
IF bObjectsCreated[0] = TRUE AND bObjectsCreated[1] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_6
IF bObjectsCreated[0] = TRUE AND bObjectsCreated[1] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_7
IF bObjectsCreated[0] = TRUE AND bObjectsCreated[1] = TRUE AND bObjectsCreated[3] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_8
IF bObjectsCreated[0] = TRUE AND bObjectsCreated[1] = TRUE AND bObjectsCreated[3] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_10
IF bObjectsCreated[0] = TRUE AND bObjectsCreated[1] = TRUE AND bObjectsCreated[2] = TRUE
CLEANUP_LOADED_MODEL_ARRAY()
//PRINTSTRING("DOCKS STUFF CREATED")//PRINTNL()
RETURN TRUE
ELSE
//PRINTSTRING("CREATING THE DOCKS STUFF")//PRINTNL()
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
//PURPOSE: Makes a vehicle without a driver
FUNC BOOL CREATE_MISSION_VEHICLE(INT index,MODEL_NAMES vehmod,VECTOR vVehloc,FLOAT vehhead)
//PRINTINT(index)
////PRINTNL()
IF NOT DOES_ENTITY_EXIST(mission_veh[index].veh)
mission_veh[index].veh=CREATE_VEHICLE(vehmod,vVehloc,vehhead)
ELSE
IF IS_VEHICLE_DRIVEABLE(mission_veh[index].veh)
#IF IS_DEBUG_BUILD
TEXT_LABEL_23 nameLabel = "VEHICLE "
nameLabel += index
SET_VEHICLE_NAME_DEBUG(mission_veh[index].veh ,nameLabel)
PRINTSTRING("vehicle made")//PRINTNL()
#ENDIF
RETURN TRUE
ENDIF
ENDIF
//PRINTSTRING("CREATE_MISSION_VEHICLE - FALSE")//PRINTNL()
RETURN FALSE
ENDFUNC
FUNC BOOL SETUP_MISSION_REQUIREMENT_WITH_LOCATION(MISSION_REQUIREMENT eRequirement, VECTOR vPos, FLOAT fHeading = 0.0)
SWITCH eRequirement
CASE REQ_HAULER_WITH_TRAILER
REQUEST_MODEL(HAULER)
REQUEST_MODEL(DOCKTRAILER)
IF HAS_MODEL_LOADED(HAULER)
AND HAS_MODEL_LOADED(DOCKTRAILER)
IF NOT DOES_ENTITY_EXIST(vehFirstHauler)
SPAWN_VEHICLE(vehFirstHauler,HAULER,<< -117.9839, -2416.6272, 5.0003 >>,91.3366)
ELSE
IF NOT DOES_ENTITY_EXIST(vehTrailer1)
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler)
SPAWN_VEHICLE(vehTrailer1,DOCKTRAILER,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehFirstHauler, <<-0.3, -9.5, -0.25>>), GET_ENTITY_HEADING(vehFirstHauler))
SET_VEHICLE_EXTRA(vehTrailer1,1,TRUE)
SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehFirstHauler,SC_DOOR_FRONT_LEFT,FALSE)
SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehFirstHauler,SC_DOOR_FRONT_RIGHT,FALSE)
SET_VEHICLE_AS_RESTRICTED(vehTrailer1,0)
SET_VEHICLE_AS_RESTRICTED(vehFirstHauler,1)
//PRINTSTRING("REQ_HAULER_WITH_TRAILER")
RETURN TRUE
ELSE
//SCRIPT_ASSERT("HAULER NOT DRIVABLE")
ENDIF
ELSE
//PRINTSTRING("REQ_HAULER_WITH_TRAILER")
IF IS_VEHICLE_DRIVEABLE(vehTrailer1)
SET_VEHICLE_EXTRA(vehTrailer1,1,TRUE)
ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE REQ_CONTAINERS_FOR_HANDLER_SECTION_FINAL
IF NOT DOES_ENTITY_EXIST(objHandlerContainer[0])
REQUEST_MODEL(PROP_CONTR_03B_LD)
IF HAS_MODEL_LOADED(PROP_CONTR_03B_LD)
objHandlerContainer[0] = CREATE_OBJECT_NO_OFFSET(PROP_CONTR_03B_LD,<< -96.71, -2455.31, 5.02 >>)
IF DOES_ENTITY_HAVE_PHYSICS(objHandlerContainer[0])
SET_OBJECT_PHYSICS_PARAMS(objHandlerContainer[0],5000,-1,<<0,0,0>>,<<0,0,0>>)
ENDIF
SET_ENTITY_ROTATION (objHandlerContainer[0], <<0.000000,0.000000,55.00>>)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(objHandlerContainer[0],TRUE)
ENDIF
ELSE
IF NOT DOES_ENTITY_EXIST(objHandlerContainer[1])
objHandlerContainer[1] = CREATE_OBJECT_NO_OFFSET(PROP_CONTR_03B_LD,<<-99.99, -2461.02, 5.02 >>)
IF DOES_ENTITY_HAVE_PHYSICS(objHandlerContainer[1])
SET_OBJECT_PHYSICS_PARAMS(objHandlerContainer[1],5000,-1,<<0,0,0>>,<<0,0,0>>)
ENDIF
SET_ENTITY_ROTATION (objHandlerContainer[1],<<0.03, 0.02, 54.13>>)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(objHandlerContainer[1],TRUE)
ELSE
RETURN TRUE
ENDIF
ENDIF
BREAK
CASE REQ_CONTAINERS_FOR_HANDLER_SECTION_START
IF NOT DOES_ENTITY_EXIST(objHandlerContainer[0])
REQUEST_MODEL(PROP_CONTR_03B_LD)
IF HAS_MODEL_LOADED(PROP_CONTR_03B_LD)
objHandlerContainer[0] = CREATE_OBJECT_NO_OFFSET(PROP_CONTR_03B_LD,<<42.829399,-2476.966064,4.933219>>)
IF DOES_ENTITY_HAVE_PHYSICS(objHandlerContainer[0])
SET_OBJECT_PHYSICS_PARAMS(objHandlerContainer[0],5000,-1,<<0,0,0>>,<<0,0,0>>)
ENDIF
SET_ENTITY_ROTATION (objHandlerContainer[0], <<0.000000,0.000000,55.248119>>)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(objHandlerContainer[0],TRUE)
ENDIF
ELSE
IF NOT DOES_ENTITY_EXIST(objHandlerContainer[1])
objHandlerContainer[1] = CREATE_OBJECT_NO_OFFSET(PROP_CONTR_03B_LD,<<39.751469,-2481.112793,4.981983>>)
IF DOES_ENTITY_HAVE_PHYSICS(objHandlerContainer[1])
SET_OBJECT_PHYSICS_PARAMS(objHandlerContainer[1],5000,-1,<<0,0,0>>,<<0,0,0>>)
ENDIF
SET_ENTITY_ROTATION (objHandlerContainer[1],<<0.000000,0.000000,55.002975>>)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(objHandlerContainer[1],TRUE)
ELSE
RETURN TRUE
ENDIF
ENDIF
BREAK
CASE REQ_HAULER_WITH_TRAILER_FINAL_STAGE
REQUEST_MODEL(HAULER)
REQUEST_MODEL(DOCKTRAILER)
IF HAS_MODEL_LOADED(HAULER)
AND HAS_MODEL_LOADED(DOCKTRAILER)
IF NOT DOES_ENTITY_EXIST(vehFloydTruck)
SPAWN_VEHICLE(vehFloydTruck,HAULER,<<479.47, -3109.19, 6.28>>,180.19)
ELSE
IF NOT DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SPAWN_VEHICLE(vehTrailer2,DOCKTRAILER,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehFloydTruck, <<-0.3, -9.5, -0.25>>), GET_ENTITY_HEADING(vehFloydTruck))
SET_VEHICLE_EXTRA(vehTrailer2,1,FALSE)
SET_VEHICLE_COLOURS(vehFloydTruck,0,0)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehFloydTruck,FALSE)
ACTIVATE_PHYSICS(vehFloydTruck)
ACTIVATE_PHYSICS(vehTrailer2)
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
SET_VEHICLE_AS_RESTRICTED(vehFloydTruck,2)
SET_VEHICLE_AS_RESTRICTED(vehTrailer2,3)
SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehFloydTruck,SC_DOOR_FRONT_LEFT,FALSE)
SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF(vehFloydTruck,SC_DOOR_FRONT_RIGHT,FALSE)
//PRINTSTRING("REQ_HAULER_WITH_TRAILER")
RETURN TRUE
ELSE
//SCRIPT_ASSERT("HAULER NOT DRIVABLE")
ENDIF
ELSE
//PRINTSTRING("REQ_HAULER_WITH_TRAILER")
RETURN TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE REQ_GUARDS_AND_FLOYD
IF DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(pedFloyd)
REQUEST_MODEL(S_M_Y_BlackOps_01)
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@kick_idle")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@kick_idle")
IF DOES_ENTITY_EXIST(pedFloyd)
AND DOES_ENTITY_EXIST(pedMerc[4])
AND DOES_ENTITY_EXIST(pedMerc[5])
IF NOT IS_PED_INJURED(pedFloyd)
AND NOT IS_PED_INJURED(pedMerc[4])
AND NOT IS_PED_INJURED(pedMerc[5])
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackAbuse)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedFloyd,TRUE)
REMOVE_PED_FROM_GROUP(pedFloyd)
sceneBlackAbuse = CREATE_SYNCHRONIZED_SCENE(<< 478.596, -3116.911, 5.069 >>,<< -0.000, -0.000, 53.446 >>)
TASK_SYNCHRONIZED_SCENE (pedFloyd,sceneBlackAbuse, "missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_dockworker", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (pedMerc[4], sceneBlackAbuse,"missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_guard1", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (pedMerc[5], sceneBlackAbuse, "missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_guard2", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlackAbuse,TRUE)
RETURN TRUE
ENDIF
ENDIF
ELSE
IF HAS_MODEL_LOADED(S_M_Y_BlackOps_01)
IF NOT DOES_ENTITY_EXIST(pedMerc[4])
createMercenary(4,FALSE)
ENDIF
IF NOT DOES_ENTITY_EXIST(pedMerc[5])
createMercenary(5,FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF CREATE_NPC_PED_ON_FOOT(pedFloyd, CHAR_FLOYD, <<479.753, -3114.320, 5.070>>, 0.0)
SET_PED_CAN_BE_TARGETTED(pedFloyd, FALSE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedFloyd, TRUE)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedFloyd, FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedFloyd, RELGROUPHASH_PLAYER)
SET_PED_RELATIONSHIP_GROUP_HASH(pedFloyd ,rel_group_buddies)
SET_ENTITY_PROOFS(pedFloyd, FALSE, FALSE, FALSE, TRUE, FALSE)
SET_PED_AS_ENEMY(pedFloyd , FALSE)
SET_PED_CONFIG_FLAG(pedFloyd,PCF_CanActivateRagdollWhenVehicleUpsideDown,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(pedFloyd)
ADD_PED_FOR_DIALOGUE(sSpeech, 3, pedFloyd, "FLOYD")
ENDIF
ENDIF
BREAK
CASE REQ_TREVORS_TRUCK
IF NOT DOES_ENTITY_EXIST(vehMission)
REQUEST_VEHICLE_ASSET(BODHI2)
CREATE_PLAYER_VEHICLE(vehMission, CHAR_TREVOR ,vPos, fHeading, TRUE)
ELSE
REQUEST_VEHICLE_ASSET(BODHI2)
IF HAS_VEHICLE_ASSET_LOADED(BODHI2)
IF IS_VEHICLE_DRIVEABLE(vehMission)
SET_VEHICLE_HAS_STRONG_AXLES(vehMission,TRUE)
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehMission)
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(vehMission)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(vehMission,TRUE)
SET_VEHICLE_DISABLE_TOWING(vehMission,TRUE)
SET_VEHICLE_AUTOMATICALLY_ATTACHES(vehMission,FALSE)
SET_VEHICLE_CAN_LEAK_PETROL(vehMission,FALSE)
//PRINTLN("TREVOR TRUCK CREATED")//PRINTNL()
RETURN TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE REQ_FLOYD
IF NOT DOES_ENTITY_EXIST(pedFloyd)
IF CREATE_NPC_PED_ON_FOOT(pedFloyd, CHAR_FLOYD, vPos, fHeading)
SET_PED_CAN_BE_TARGETTED(pedFloyd, FALSE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedFloyd, TRUE)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedFloyd, FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedFloyd, RELGROUPHASH_PLAYER)
SET_PED_RELATIONSHIP_GROUP_HASH(pedFloyd ,rel_group_buddies)
SET_ENTITY_PROOFS(pedFloyd, FALSE, FALSE, FALSE, TRUE, FALSE)
SET_PED_AS_ENEMY(pedFloyd , FALSE)
SET_PED_CONFIG_FLAG(pedFloyd,PCF_CanActivateRagdollWhenVehicleUpsideDown,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(pedFloyd)
ADD_PED_FOR_DIALOGUE(sSpeech, 3, pedFloyd, "FLOYD")
IF eMissionStage = MISSION_STAGE_OPENING_CUTSCENE
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HAIR, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_TORSO, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_LEG, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HAND, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_FEET, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_SPECIAL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_DECL, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_JBIB, 0, 0)
CLEAR_ALL_PED_PROPS(pedFloyd)
PRINTSTRING("setting up Floyd's component variation for Opening cutscene for repeat play") PRINTNL()
PRINTSTRING("CLEAR_ALL_PED_PROPS(pedFloyd)") PRINTNL()
ENDIF
//PRINTLN("CREATING FLOYD")//PRINTNL()
RETURN TRUE
ENDIF
ELSE
IF sSpeech.PedInfo[3].Index != pedFloyd
ADD_PED_FOR_DIALOGUE(sSpeech, 3, pedFloyd, "FLOYD")
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
SET_PED_CAN_BE_TARGETTED(pedFloyd, FALSE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedFloyd, TRUE)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedFloyd, FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedFloyd, RELGROUPHASH_PLAYER)
SET_PED_RELATIONSHIP_GROUP_HASH(pedFloyd ,rel_group_buddies)
SET_ENTITY_PROOFS(pedFloyd, FALSE, FALSE, FALSE, TRUE, FALSE)
SET_PED_AS_ENEMY(pedFloyd , FALSE)
SET_PED_CONFIG_FLAG(pedFloyd,PCF_CanActivateRagdollWhenVehicleUpsideDown,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(pedFloyd)
ENDIF
//PRINTLN("CREATING FLOYD")//PRINTNL()
RETURN TRUE
ENDIF
BREAK
CASE REQ_WADE
IF NOT DOES_ENTITY_EXIST(pedWade)
IF CREATE_NPC_PED_ON_FOOT(pedWade, CHAR_WADE, vPos, fHeading)
SET_PED_CAN_BE_TARGETTED(pedWade, FALSE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedWade, TRUE)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedWade, FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedWade, RELGROUPHASH_PLAYER)
SET_PED_RELATIONSHIP_GROUP_HASH(pedWade ,rel_group_buddies)
SET_ENTITY_PROOFS(pedWade, FALSE, FALSE, FALSE, TRUE, FALSE)
SET_PED_CONFIG_FLAG(pedWade,PCF_CanActivateRagdollWhenVehicleUpsideDown,TRUE)
SET_PED_AS_ENEMY(pedWade , FALSE)
SET_ENTITY_AS_MISSION_ENTITY(pedWade)
ADD_PED_FOR_DIALOGUE(sSpeech, 4, pedWade, "WADE")
//PRINTLN("CREATED WADE")//PRINTNL()
RETURN TRUE
ENDIF
ELSE
IF sSpeech.PedInfo[4].Index != pedWade
ADD_PED_FOR_DIALOGUE(sSpeech, 4, pedWade, "WADE")
ENDIF
IF NOT IS_PED_INJURED(pedWade)
SET_PED_CAN_BE_TARGETTED(pedWade, FALSE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedWade, TRUE)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedWade, FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(pedWade, RELGROUPHASH_PLAYER)
SET_PED_RELATIONSHIP_GROUP_HASH(pedWade ,rel_group_buddies)
SET_ENTITY_PROOFS(pedWade, FALSE, FALSE, FALSE, TRUE, FALSE)
SET_PED_CONFIG_FLAG(pedWade,PCF_CanActivateRagdollWhenVehicleUpsideDown,TRUE)
SET_PED_AS_ENEMY(pedWade , FALSE)
SET_ENTITY_AS_MISSION_ENTITY(pedWade)
ENDIF
//PRINTLN("CREATED WADE")//PRINTNL()
RETURN TRUE
ENDIF
BREAK
CASE REQ_SECURITY
IF NOT DOES_ENTITY_EXIST(pedSecurity)
REQUEST_MODEL(S_M_M_DOCKWORK_01)
IF HAS_MODEL_LOADED(S_M_M_DOCKWORK_01)
IF NOT DOES_ENTITY_EXIST(pedSecurity)
SPAWN_PED(pedSecurity,S_M_M_DOCKWORK_01,vSecurity,fSecurity)
SET_RAGDOLL_BLOCKING_FLAGS(pedSecurity,RBF_PLAYER_IMPACT)
SET_PED_CAPSULE(pedSecurity,0.4)
//PRINTLN("CREATED SECURITY")//PRINTNL()
RETURN TRUE
ENDIF
ENDIF
ELSE
//PRINTLN("CREATED SECURITY")//PRINTNL()
RETURN TRUE
ENDIF
BREAK
CASE REQ_HANDLER
IF NOT DOES_ENTITY_EXIST(vehHandler)
REQUEST_VEHICLE_ASSET(HANDLER)
REQUEST_MODEL(HANDLER)
IF HAS_MODEL_LOADED(HANDLER)
SPAWN_VEHICLE(vehHandler,HANDLER,<<-129.77, -2418.28, 6.24>>,183.0850)
SET_VEHICLE_ON_GROUND_PROPERLY(vehHandler)
SET_VEHICLE_PROVIDES_COVER(vehHandler,FALSE)
SET_VEHICLE_AS_RESTRICTED(vehHandler,4)
RETURN TRUE
ENDIF
ELSE
REQUEST_VEHICLE_ASSET(HANDLER)
IF HAS_VEHICLE_ASSET_LOADED(HANDLER)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
RETURN TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE REQ_CAR_TO_DRIVE_FINAL_STAGE
IF NOT DOES_ENTITY_EXIST(vanByDocks)
REQUEST_MODEL(TOWTRUCK)
IF HAS_MODEL_LOADED(TOWTRUCK)
SPAWN_VEHICLE(vanByDocks,TOWTRUCK,<<505.8820, -3053.2310, 5.0695>>, 180.3786)
SET_VEHICLE_NUMBER_PLATE_TEXT(vanByDocks,"5T3ALM3")
RETURN TRUE
ENDIF
ELSE
RETURN TRUE
ENDIF
BREAK
CASE REQ_MERRYWEATHER_GUARDS_AT_OTHER_DOCKS
IF NOT DOES_ENTITY_EXIST(pedMerc[4])
AND NOT DOES_ENTITY_EXIST(pedMerc[5])
AND NOT DOES_ENTITY_EXIST(pedMerc[6])
REQUEST_MODEL(S_M_Y_BlackOps_01)
IF HAS_MODEL_LOADED(S_M_Y_BlackOps_01)
createMercenary(4,FALSE)
createMercenary(5,FALSE)
createMercenary(6,FALSE)
ENDIF
ELSE
IF NOT IS_PED_INJURED(pedMerc[4])
TASK_START_SCENARIO_IN_PLACE(pedMerc[4],"WORLD_HUMAN_GUARD_STAND_ARMY")
ENDIF
IF NOT IS_PED_INJURED(pedMerc[5])
TASK_START_SCENARIO_IN_PLACE(pedMerc[5],"WORLD_HUMAN_GUARD_STAND_ARMY")
ENDIF
IF NOT IS_PED_INJURED(pedMerc[6])
TASK_START_SCENARIO_IN_PLACE(pedMerc[6],"WORLD_HUMAN_GUARD_STAND")
ENDIF
RETURN TRUE
ENDIF
BREAK
CASE REQ_CRANE
IF IS_VECTOR_ZERO(vPos)
ENDIF
IF fHeading > 0
ENDIF
IF NOT DOES_ENTITY_EXIST(s_crane.obj_main)
REQUEST_MODEL(model_crane)
REQUEST_MODEL(model_spreader)
REQUEST_MODEL(model_cabin)
REQUEST_MODEL(model_wheel_left)
REQUEST_MODEL(model_wheel_right)
REQUEST_MODEL(model_boom)
REQUEST_MODEL(model_container)
REQUEST_MODEL(model_left_door)
REQUEST_MODEL(model_right_door)
REQUEST_COLLISION_FOR_MODEL(model_spreader)
REQUEST_ANIM_DICT("missheistdockssetup1leadinoutlsdhs_mcs_1_p2")
ROPE_LOAD_TEXTURES()
IF HAS_MODEL_LOADED(model_crane)
AND HAS_MODEL_LOADED(model_spreader)
AND HAS_MODEL_LOADED(model_cabin)
AND HAS_MODEL_LOADED(model_container)
AND HAS_MODEL_LOADED(model_left_door)
AND HAS_MODEL_LOADED(model_right_door)
AND HAS_MODEL_LOADED(model_wheel_left)
AND HAS_MODEL_LOADED(model_wheel_right)
AND HAS_MODEL_LOADED(model_boom)
AND REQUEST_AMBIENT_AUDIO_BANK("Crane")
AND REQUEST_AMBIENT_AUDIO_BANK("Crane_Stress")
AND REQUEST_AMBIENT_AUDIO_BANK("Crane_Impact_Sweeteners")
AND HAS_ANIM_DICT_LOADED("missheistdockssetup1leadinoutlsdhs_mcs_1_p2")
AND ROPE_ARE_TEXTURES_LOADED()
REMOVE_IPL("pcranecont")
//Main crane
s_crane.v_start_pos = v_crane_pos
s_crane.obj_main = CREATE_OBJECT(model_crane, s_crane.v_start_pos)
SET_ENTITY_HEADING(s_crane.obj_main, 180)
FREEZE_ENTITY_POSITION(s_crane.obj_main, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(model_crane)
//Cabin
//s_crane.v_cabin_attach_offset = <<9.028, 0.0, 33.65>>
//P_Dock_RTG_LD_Cab
s_crane.obj_cabin = CREATE_OBJECT(model_cabin, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_main, s_crane.v_cabin_attach_offset))
SET_ENTITY_COORDS_NO_OFFSET(s_crane.obj_cabin, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_main, s_crane.v_cabin_attach_offset))
SET_ENTITY_HEADING(s_crane.obj_cabin, GET_ENTITY_HEADING(s_crane.obj_main))
FREEZE_ENTITY_POSITION(s_crane.obj_cabin, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(model_cabin)
//Spreader and helper: the spreader is attached via ropes to an invisible helper object (currently no way to resize rope attachments, so instead
//the invisible object is moved)
s_crane.v_spreader_attach_offset = <<0.0, 0.0, SPREADER_START_OFFSET>>
//s_crane.obj_spreader = CREATE_OBJECT(model_spreader, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, s_crane.v_spreader_attach_offset))
s_crane.obj_spreader = CREATE_OBJECT_NO_OFFSET(model_spreader, vSpreaderPosition)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(s_crane.obj_spreader, FALSE)
//DAMPENING
SET_OBJECT_PHYSICS_PARAMS(s_crane.obj_spreader, -1, -1, <<-1,-1,-1>>, <<1,2.3,0.7>>)
//NO SWING
//FREEZE_ENTITY_POSITION(s_crane.obj_spreader, TRUE)
ATTACH_ENTITY_TO_ENTITY(s_crane.obj_spreader, s_crane.obj_cabin, -1, s_crane.v_spreader_attach_offset, <<0.0, 0.0, -90.0>>)
DETACH_ENTITY(s_Crane.obj_Spreader, TRUE, FALSE)
v_helper_offset = s_crane.v_spreader_attach_offset - <<0.0, 0.0, SPREADER_START_OFFSET>>
//NO SWING
//s_crane.obj_helper = CREATE_OBJECT(model_spreader, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, v_helper_offset))
s_crane.obj_helper = CREATE_OBJECT(model_spreader, vSpreaderPosition)
SET_ENTITY_HEADING(s_crane.obj_helper, GET_ENTITY_HEADING(s_crane.obj_cabin))
FREEZE_ENTITY_POSITION(s_crane.obj_helper, TRUE)
SET_ENTITY_VISIBLE(s_crane.obj_helper, FALSE)
SET_ENTITY_COLLISION(s_crane.obj_helper,FALSE)
//SET_ENTITY_VISIBLE(s_crane.obj_helper, TRUE)
SET_MODEL_AS_NO_LONGER_NEEDED(model_spreader)
s_crane.i_dampingframes = 0
//15.26
//New Wheel positions
// ____________________
// |6 2|
// |7 3|
// | |
// | |
// | |
// |4 1|
// _5________________0_
//Set 1 0-1
// s_crane.v_wheel_offsets[0] = <<4.800, 9.300, 0.680>>
// s_crane.v_wheel_offsets[1] = <<3.400, 9.300, 0.680>>
// //Set 2 2-3
// s_crane.v_wheel_offsets[2] = <<-4.900, 9.300, 0.680>>
// s_crane.v_wheel_offsets[3] = <<-3.500, 9.300, 0.680>>
// //Set 3 4-5
// s_crane.v_wheel_offsets[4] = <<4.800, -9.300, 0.680>>
// s_crane.v_wheel_offsets[5] = <<3.400, -9.300, 0.680>>
// //Set 4 6-7
// s_crane.v_wheel_offsets[6] = <<-4.900, -9.300, 0.680>>
// s_crane.v_wheel_offsets[7] = <<-3.500, -9.300, 0.680>>
s_crane.v_wheel_offsets[0] = <<4.700, 9.450, 0.680>>
s_crane.v_wheel_offsets[1] = <<3.300, 9.450, 0.680>>
//Set 2 2-3
s_crane.v_wheel_offsets[2] = <<-5.000, 9.450, 0.680>>
s_crane.v_wheel_offsets[3] = <<-3.600, 9.450, 0.680>>
//Set 3 4-5
s_crane.v_wheel_offsets[4] = <<4.700, -9.025, 0.680>>
s_crane.v_wheel_offsets[5] = <<3.300, -9.025, 0.680>>
//Set 4 6-7
s_crane.v_wheel_offsets[6] = <<-5.000, -9.025, 0.680>>
s_crane.v_wheel_offsets[7] = <<-3.600, -9.025, 0.680>>
INT i
REPEAT COUNT_OF(s_crane.obj_wheels) i
IF i > 3
model_wheel = model_wheel_right
s_crane.obj_wheels[i] = CREATE_OBJECT_NO_OFFSET(model_wheel, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_main, s_crane.v_wheel_offsets[i]))
SET_ENTITY_HEADING(s_crane.obj_wheels[i], GET_ENTITY_HEADING(s_crane.obj_main)-180)
ELSE
s_crane.obj_wheels[i] = CREATE_OBJECT_NO_OFFSET(model_wheel, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_main, s_crane.v_wheel_offsets[i]))
SET_ENTITY_HEADING(s_crane.obj_wheels[i], GET_ENTITY_HEADING(s_crane.obj_main))
ENDIF
ENDREPEAT
REPEAT COUNT_OF(s_crane.obj_wheels) i
//FREEZE_ENTITY_POSITION(s_crane.obj_wheels[i], FALSE)
ATTACH_ENTITY_TO_ENTITY(s_crane.obj_wheels[i], s_crane.obj_main, -1, s_crane.v_wheel_offsets[i], <<0.0, 0.0, 0.0>>)
ENDREPEAT
SET_MODEL_AS_NO_LONGER_NEEDED(model_wheel_left)
SET_MODEL_AS_NO_LONGER_NEEDED(model_wheel_right)
//Setup crane sound ids
s_crane.i_cabin_sound_id = GET_SOUND_ID()
s_crane.i_crane_sound_id = GET_SOUND_ID()
s_crane.i_spreader_sound_id = GET_SOUND_ID()
s_crane.i_lift_sound_id = GET_SOUND_ID()
s_crane.i_strain_sound_id = GET_SOUND_ID()
s_crane.i_spreader_fail_sound_id = GET_SOUND_ID()
s_crane.b_spreader_stuck_on_ground = FALSE
ENDIF
ELIF NOT bAddedRopes
IF DOES_ENTITY_HAVE_PHYSICS(s_Crane.obj_spreader)
AND DOES_ENTITY_HAVE_PHYSICS(s_Crane.obj_cabin)
//FLOAT fRopeStartLength
//fRopeStartLength = -SPREADER_START_OFFSET - 4.0
//Fudge for ropes not working on Z-skip: the code needs physics on the cabin, so load the scene and unfreeze the object, then freeze it again
//after attaching the ropes.
IF bIsJumpingDirectlyToStage
AND eMissionStage > MISSION_STAGE_6
FREEZE_ENTITY_POSITION(s_Crane.obj_Cabin, FALSE)
SET_ENTITY_COORDS(PLAYER_PED_ID(), s_crane.v_start_pos)
LOAD_SCENE(s_crane.v_start_pos)
WAIT(500)
ENDIF
s_crane.ropes[0] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, <<-1.0, -2.7, -1.78>>), //-1.78 //-1.75
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET , f_ropes_min_len, f_ropes_len_change_rate ) //15.26
s_crane.ropes[1] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, <<-1.0, 2.7, -1.78>>),
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET , f_ropes_min_len, f_ropes_len_change_rate )
s_crane.ropes[2] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, <<1.0, 2.7, -1.78>>),
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET , f_ropes_min_len, f_ropes_len_change_rate )
s_crane.ropes[3] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin,<<1.0, 2.7, -1.78>>),
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET , f_ropes_min_len, f_ropes_len_change_rate )
s_crane.ropes[4] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, <<-0.05, -2.7, -1.78>>),
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET , f_ropes_min_len, f_ropes_len_change_rate )
s_crane.ropes[5] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, <<-0.05, 2.7, -1.78>>),
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET , f_ropes_min_len, f_ropes_len_change_rate )
s_crane.ropes[6] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, <<0.05, -2.7, -1.78>>),
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET , f_ropes_min_len, f_ropes_len_change_rate )
s_crane.ropes[7] = ADD_ROPE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, <<0.05, 2.7, -1.78>>),
<<0.0, 0.0, 0.0>>, 15.26, PHYSICS_ROPE_THIN, -SPREADER_START_OFFSET, f_ropes_min_len, f_ropes_len_change_rate )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[0], TRUE )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[1], TRUE )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[2], TRUE )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[3], TRUE )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[4], TRUE )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[5], TRUE )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[6], TRUE )
ROPE_SET_SMOOTH_REELIN( s_crane.ropes[7], TRUE )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[0], 2 )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[1], 2 )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[2], 2 )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[3], 2 )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[4], 2 )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[5], 2 )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[6], 2 )
ROPE_SET_UPDATE_ORDER( s_crane.ropes[7], 2 )
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[0], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop1),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom1), -SPREADER_START_OFFSET , 0, 0)
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[1], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop2),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom2), -SPREADER_START_OFFSET , 0, 0)
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[2], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop3),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom3), -SPREADER_START_OFFSET, 0, 0)
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[3], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop4),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom4), -SPREADER_START_OFFSET, 0, 0)
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[4], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop5),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom5), -SPREADER_START_OFFSET , 0, 0)
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[5], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop6),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom6), -SPREADER_START_OFFSET , 0, 0)
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[6], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop7),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom7), -SPREADER_START_OFFSET, 0, 0)
ATTACH_ENTITIES_TO_ROPE(s_crane.ropes[7], s_crane.obj_cabin, s_crane.obj_spreader,
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, vRopeTop8),
GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_spreader, vRopeBottom8), -SPREADER_START_OFFSET, 0, 0)
//CRANE GUY STUFF
IF eMissionStage != MISSION_STAGE_8
IF DOES_ENTITY_EXIST(pedDockWorker[14])
IF NOT IS_PED_INJURED(pedDockWorker[14])
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(ssCraneWorker)
ssCraneWorker = CREATE_SYNCHRONIZED_SCENE(<< 3.050, -0.350, 0.350 >>, << 0.000, 0.000, 180.000 >>)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(ssCraneWorker,s_crane.obj_cabin,-1)
//ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(ssCraneWorker,s_crane.obj_helper,-1)
TASK_SYNCHRONIZED_SCENE (pedDockWorker[14],ssCraneWorker, "missheistdockssetup1leadinoutlsdhs_mcs_1_p2", "leadin_idle_b", INSTANT_BLEND_IN, INSTANT_BLEND_OUT , SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT)
SET_ENTITY_NO_COLLISION_ENTITY(pedDockWorker[14],s_crane.obj_cabin,FALSE)
SET_SYNCHRONIZED_SCENE_LOOPED(ssCraneWorker,TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
bAddedRopes = TRUE
//NO SWING
FREEZE_ENTITY_POSITION(s_crane.obj_spreader, FALSE)
APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS(s_crane.obj_spreader, APPLY_TYPE_IMPULSE, <<0.0, 0.0, 0.01>>, 0, FALSE, TRUE)
IF bIsJumpingDirectlyToStage
AND eMissionStage > MISSION_STAGE_4
FREEZE_ENTITY_POSITION(s_crane.obj_cabin, TRUE)
ENDIF
RETURN TRUE
ELSE
PRINTSTRING("AWAITING PHYSICS ON CRANE PROPS")//PRINTNL()
IF NOT DOES_ENTITY_HAVE_PHYSICS(s_Crane.obj_spreader)
PRINTSTRING("NO PHYSICS ON SPREADER")//PRINTNL()
ENDIF
IF NOT DOES_ENTITY_HAVE_PHYSICS(s_Crane.obj_cabin)
PRINTSTRING("NO PHYSICS ON CABIN")//PRINTNL()
ENDIF
ENDIF
ELSE
RETURN TRUE
ENDIF
BREAK
CASE REQ_CRANE_CONTAINERS
REQUEST_MODEL(model_container)
REQUEST_MODEL(model_left_door)
REQUEST_MODEL(model_right_door)
IF HAS_MODEL_LOADED(model_container)
AND HAS_MODEL_LOADED(model_left_door)
AND HAS_MODEL_LOADED(model_right_door)
//Containers
IF NOT DOES_ENTITY_EXIST( s_containers[0].obj_main)
s_containers[0].obj_main = CREATE_OBJECT_NO_OFFSET(model_container, << -53.2547, -2412.8684, 5.0007 >>)
SET_ENTITY_HEADING(s_containers[0].obj_main, 91.2705)
FREEZE_ENTITY_POSITION(s_containers[0].obj_main, TRUE)
ENDIF
IF NOT DOES_ENTITY_EXIST( s_containers[0].obj_left_door)
s_containers[0].obj_left_door = CREATE_OBJECT(model_left_door, << -53.2547, -2411.8684, 5.0007 >>)
SET_ENTITY_COORDS_NO_OFFSET(s_containers[0].obj_left_door, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_containers[0].obj_main, v_left_door_offset))
SET_ENTITY_HEADING(s_containers[0].obj_left_door, GET_ENTITY_HEADING(s_containers[0].obj_main) - 150.0)
FREEZE_ENTITY_POSITION(s_containers[0].obj_left_door, TRUE)
ENDIF
IF NOT DOES_ENTITY_EXIST( s_containers[0].obj_right_door)
s_containers[0].obj_right_door = CREATE_OBJECT(model_right_door, << -53.2547, -2413.8684, 5.0007 >>)
SET_ENTITY_COORDS_NO_OFFSET(s_containers[0].obj_right_door, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_containers[0].obj_main, v_right_door_offset))
SET_ENTITY_HEADING(s_containers[0].obj_right_door, GET_ENTITY_HEADING(s_containers[0].obj_main) + 150.0)
FREEZE_ENTITY_POSITION(s_containers[0].obj_right_door, TRUE)
ENDIF
//99.2664
IF NOT DOES_ENTITY_EXIST( s_containers[1].obj_main)
s_containers[1].obj_main = CREATE_OBJECT_NO_OFFSET(model_container, << -52.8189, -2418.3357, 5.0009 >>)
SET_ENTITY_HEADING(s_containers[1].obj_main, 91.2705)
FREEZE_ENTITY_POSITION(s_containers[1].obj_main, TRUE)
ENDIF
IF NOT DOES_ENTITY_EXIST( s_containers[1].obj_left_door)
s_containers[1].obj_left_door = CREATE_OBJECT(model_left_door, << -52.8189, -2417.3357, 5.0009 >>)
SET_ENTITY_COORDS_NO_OFFSET(s_containers[1].obj_left_door, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_containers[1].obj_main, v_left_door_offset))
SET_ENTITY_HEADING(s_containers[1].obj_left_door, GET_ENTITY_HEADING(s_containers[0].obj_main) - 150.0)
FREEZE_ENTITY_POSITION(s_containers[1].obj_left_door, TRUE)
ENDIF
IF NOT DOES_ENTITY_EXIST( s_containers[1].obj_right_door)
s_containers[1].obj_right_door = CREATE_OBJECT(model_right_door, << -52.8189, -2415.3357, 5.0009 >>)
SET_ENTITY_COORDS_NO_OFFSET(s_containers[1].obj_right_door, GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_containers[1].obj_main, v_right_door_offset))
SET_ENTITY_HEADING(s_containers[1].obj_right_door, GET_ENTITY_HEADING(s_containers[0].obj_main) + 150.0)
FREEZE_ENTITY_POSITION(s_containers[1].obj_right_door, TRUE)
ENDIF
//Close container doors
IF DOES_ENTITY_EXIST( s_containers[0].obj_main)
IF DOES_ENTITY_EXIST(s_containers[0].obj_left_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[0].obj_left_door, s_containers[0].obj_main, -1, v_left_door_offset, <<0.0, 0.0, 0.0>>,FALSE,FALSE,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(s_containers[0].obj_left_door, s_containers[0].obj_main,TRUE)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_right_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[0].obj_right_door, s_containers[0].obj_main, -1, v_right_door_offset, <<0.0, 0.0, 0.0>>,FALSE,FALSE,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(s_containers[0].obj_right_door, s_containers[0].obj_main,TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST( s_containers[1].obj_main)
AND DOES_ENTITY_EXIST( s_containers[0].obj_main)
IF DOES_ENTITY_EXIST(s_containers[1].obj_left_door)
AND DOES_ENTITY_EXIST(s_containers[0].obj_left_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[1].obj_left_door, s_containers[1].obj_main, -1, v_left_door_offset, <<0.0, 0.0, 0.0>>,FALSE,FALSE,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(s_containers[1].obj_left_door, s_containers[1].obj_main,TRUE)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_right_door)
AND DOES_ENTITY_EXIST(s_containers[1].obj_right_door)
ATTACH_ENTITY_TO_ENTITY(s_containers[1].obj_right_door, s_containers[1].obj_main, -1, v_right_door_offset, <<0.0, 0.0, 0.0>>,FALSE,FALSE,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(s_containers[1].obj_right_door, s_containers[1].obj_main,TRUE)
ENDIF
RETURN TRUE
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(model_container)
SET_MODEL_AS_NO_LONGER_NEEDED(model_left_door)
SET_MODEL_AS_NO_LONGER_NEEDED(model_right_door)
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL SETUP_MISSION_REQUIREMENT(MISSION_REQUIREMENT eRequirement)
RETURN SETUP_MISSION_REQUIREMENT_WITH_LOCATION(eRequirement, <<0.0, 0.0, 0.0>>)
ENDFUNC
PROC SWITCH_CRANE_VISIBILITY(BOOL bVisible)
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
SET_ENTITY_VISIBLE(s_crane.obj_spreader,bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_main)
SET_ENTITY_VISIBLE(s_crane.obj_main,bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_cabin)
SET_ENTITY_VISIBLE(s_crane.obj_cabin,bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_lift)
SET_ENTITY_VISIBLE(s_crane.obj_lift,bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_boom_cable)
SET_ENTITY_VISIBLE(s_crane.obj_boom_cable,bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
SET_ENTITY_COORDS(s_crane.obj_spreader,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(s_crane.obj_cabin, s_crane.v_spreader_attach_offset) - <<0.0, 0.0, 1.0>> )
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[0])
//SET_ENTITY_VISIBLE(s_crane.ropes[0],bVisible)
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[1])
//SET_ENTITY_VISIBLE(s_crane.ropes[1],bVisible)
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[2])
//SET_ENTITY_VISIBLE(s_crane.ropes[2],bVisible)
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[3])
//SET_ENTITY_VISIBLE(s_crane.ropes[3],bVisible)
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[4])
//SET_ENTITY_VISIBLE(s_crane.ropes[4],bVisible)
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[5])
//SET_ENTITY_VISIBLE(s_crane.ropes[5],bVisible)
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[6])
//SET_ENTITY_VISIBLE(s_crane.ropes[6],bVisible)
ENDIF
IF DOES_ROPE_EXIST(s_crane.ropes[7])
//SET_ENTITY_VISIBLE(s_crane.ropes[7],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[0])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[0],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[1])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[1],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[2])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[2],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[3])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[3],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[4])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[4],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[5])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[5],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[6])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[6],bVisible)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_wheels[7])
SET_ENTITY_VISIBLE(s_crane.obj_wheels[7],bVisible)
ENDIF
ENDPROC
// ======================================================================
// Load Stages
// ======================================================================
//PURPOSE: PreLoads the next stage when the player get near to it.
FUNC BOOL PRE_STREAM_MISSION_STAGE()
MISSION_STAGE_ENUM eStageToLoad = INT_TO_ENUM(MISSION_STAGE_ENUM, (ENUM_TO_INT(eMissionStage) + 1))
SWITCH iPreStreamStage
CASE 0
IF eStageToLoad = MISSION_STAGE_SETUP
iPreStreamStage++
ELIF eStageToLoad = MISSION_STAGE_OPENING_CUTSCENE
iPreStreamStage++
ELIF eStageToLoad = MISSION_STAGE_1
iPreStreamStage++
//PLAYER PARKS UP AND GET'S CHANGED
ELIF eStageToLoad = MISSION_STAGE_2
//ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
//ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
//ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
//ADD_MODEL_REQUEST_TO_ARRAY(FORKLIFT)
REQUEST_VEHICLE_RECORDING(1,"AWDocks4")
REQUEST_VEHICLE_RECORDING(1,"AWDocks5")
iPreStreamStage++
//CUTSCENE GET CHANGED
// ELIF eStageToLoad = MISSION_STAGE_3
// iPreStreamStage++
//FOLLOW floyd AROUND DOCKS
ELIF eStageToLoad = MISSION_STAGE_4
CLEANUP_LOADED_MODEL_ARRAY()
REQUEST_WAYPOINT_RECORDING("floyddocks1")
REQUEST_WAYPOINT_RECORDING("docksplayer1")
REQUEST_VEHICLE_RECORDING(1,"AWDock1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
iPreStreamStage++
//FORKLIFT AND TASKS
ELIF eStageToLoad = MISSION_STAGE_5
REQUEST_VEHICLE_RECORDING(1,"AWDocks3")
iPreStreamStage++
//FOLLOW floyd TO CRANE
ELIF eStageToLoad = MISSION_STAGE_6
CLEANUP_LOADED_MODEL_ARRAY()
ADD_MODEL_REQUEST_TO_ARRAY(Prop_Dock_RTG_LD)
ADD_MODEL_REQUEST_TO_ARRAY(P_Dock_RTG_LD_spdr)
ADD_MODEL_REQUEST_TO_ARRAY(P_Dock_RTG_LD_Cab)
ADD_MODEL_REQUEST_TO_ARRAY(PROP_CONTAINER_LD) //PROP_CONTAINER_LD_D
ADD_MODEL_REQUEST_TO_ARRAY(P_Dock_RTG_LD_wheel)
ADD_MODEL_REQUEST_TO_ARRAY(P_Dock_RTG_LD_wheel)
//ADD_MODEL_REQUEST_TO_ARRAY(P_DOCK_CRANE_CABLES)
ADD_MODEL_REQUEST_TO_ARRAY(PROP_CNTRDOOR_LD_L)
ADD_MODEL_REQUEST_TO_ARRAY(PROP_CNTRDOOR_LD_R)
iPreStreamStage++
//CRANE SECTION
ELIF eStageToLoad = MISSION_STAGE_7
CLEANUP_LOADED_MODEL_ARRAY()
REQUEST_VEHICLE_RECORDING(2,"AWDocks1")
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(HAULER)
ADD_MODEL_REQUEST_TO_ARRAY(DOCKTRAILER)
iPreStreamStage++
//USE CAMERA
ELIF eStageToLoad = MISSION_STAGE_8
CLEANUP_LOADED_MODEL_ARRAY()
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(HAULER)
ADD_MODEL_REQUEST_TO_ARRAY(DOCKTRAILER)
iPreStreamStage++
//DRIVE TO OTHER DOCKS
ELIF eStageToLoad = MISSION_STAGE_10
CLEANUP_LOADED_MODEL_ARRAY()
ADD_MODEL_REQUEST_TO_ARRAY(HAULER)
ADD_MODEL_REQUEST_TO_ARRAY(DOCKTRAILER)
ADD_MODEL_REQUEST_TO_ARRAY(TIPTRUCK)
//ADD_MODEL_REQUEST_TO_ARRAY(SUBMARINE)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
iPreStreamStage++
ENDIF
BREAK
CASE 1
IF ARE_REQUESTED_MODELS_LOADED()
AND ARE_REQUESTED_CARRECS_LOADED("AWDocks1")
//AND ARE_REQUESTED_ANIMS_LOADED()
iPreStreamStage++
ENDIF
BREAK
CASE 2
IF eStageToLoad = MISSION_STAGE_SETUP
iPreStreamStage++
ELIF eStageToLoad = MISSION_STAGE_OPENING_CUTSCENE
iPreStreamStage++
ELIF eStageToLoad = MISSION_STAGE_1
iPreStreamStage++
//PLAYER PARKS UP AND GET'S CHANGED
ELIF eStageToLoad = MISSION_STAGE_2
iPreStreamStage++
//CUTSCENE GET CHANGED
// ELIF eStageToLoad = MISSION_STAGE_3
// iPreStreamStage++
//FOLLOW floyd AROUND DOCKS
ELIF eStageToLoad = MISSION_STAGE_4
IF GET_IS_WAYPOINT_RECORDING_LOADED("floyddocks1")
AND GET_IS_WAYPOINT_RECORDING_LOADED("docksplayer1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDock1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
iPreStreamStage++
ENDIF
//FORKLIFT AND TASKS
ELIF eStageToLoad = MISSION_STAGE_5
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks3")
iPreStreamStage++
ENDIF
//FOLLOW floyd TO CRANE
ELIF eStageToLoad = MISSION_STAGE_6
iPreStreamStage++
//CRANE SECTION
ELIF eStageToLoad = MISSION_STAGE_7
iPreStreamStage++
//USE CAMERA
ELIF eStageToLoad = MISSION_STAGE_8
CLEANUP_LOADED_ANIM_ARRAY()
CLEANUP_LOADED_MODEL_ARRAY()
iPreStreamStage++
//DRIVE TO DOCKS
ELIF eStageToLoad = MISSION_STAGE_10
//CLEANUP_LOADED_CARREC_ARRAY()
iPreStreamStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
// ======================================================================
// Controls
// ======================================================================
// PURPOSE: controls the display of objective blips (vehcile, ped or loc)
PROC CONTROL_OBJECTIVE_BLIP_DISPLAY(PED_INDEX target_ped, VEHICLE_INDEX target_veh, VECTOR target_coords)
IF target_veh <> NULL // adds vehicle blip and removes others
IF IS_VEHICLE_DRIVEABLE(target_veh)
IF NOT DOES_BLIP_EXIST(veh_blip)
veh_blip=CREATE_BLIP_FOR_VEHICLE(target_veh, FALSE)
TURN_ON_GPS_FOR_BLIP(veh_blip, sLocatesData)
//PRINTSTRING("veh obj blip")
////PRINTNL()
ENDIF
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
IF DOES_BLIP_EXIST(ped_blip)
REMOVE_BLIP(ped_blip)
ENDIF
ELIF target_ped <> NULL //adds ped blip and removes others
IF NOT IS_PED_INJURED(target_ped)
IF NOT DOES_BLIP_EXIST(ped_blip)
ped_blip = CREATE_BLIP_FOR_PED(target_ped, FALSE)
TURN_ON_GPS_FOR_BLIP(ped_blip, sLocatesData)
//PRINTSTRING("ped obj blip")
////PRINTNL()
ENDIF
ENDIF
IF DOES_BLIP_EXIST(veh_blip)
REMOVE_BLIP(veh_blip)
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
ELSE //adds location blip and removes others
IF NOT DOES_BLIP_EXIST(dest_blip)
dest_blip = CREATE_BLIP_FOR_COORD(target_coords, FALSE)
TURN_ON_GPS_FOR_BLIP(dest_blip, sLocatesData)
//PRINTSTRING("dest obj blip")
////PRINTNL()
ENDIF
IF DOES_BLIP_EXIST(veh_blip)
REMOVE_BLIP(veh_blip)
ENDIF
IF DOES_BLIP_EXIST(ped_blip)
REMOVE_BLIP(ped_blip)
ENDIF
ENDIF
ENDPROC
PROC RESET_CREATE_DOCKS_STUFF()
bObjectsCreated[0] = FALSE
bObjectsCreated[1] = FALSE
bObjectsCreated[2] = FALSE
//bCreateCrane = TRUE
ENDPROC
//PURPOSE: this is used to load a specific mission stage, for both restart and j/p skips.
//Load mission stage - lets go!
PROC LOAD_MISSION_STAGE(MISSION_STAGE_ENUM eStageToLoad)
IF NOT bcleanup //first cleans up all existing mission assets
IF bSkipping = TRUE
CONTROL_FADE_OUT(500)
ENDIF
IF IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE()
ENDIF
CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED(PLAYER_ID())
DISABLE_CHEAT(CHEAT_TYPE_ALL, TRUE) //disables all cheats.
MISSION_CLEANUP(TRUE)
//Assign model names
//model_trevor_vehicle = GET_PLAYER_VEH_MODEL(CHAR_TREVOR)
PRINTSTRING("LOAD_MISSION_STAGE - MISSION_STAGE_ENUM = ")//PRINTNL()
PRINTINT(ENUM_TO_INT(eStageToLoad))
CLEAR_PRINTS()
IF eStageToLoad != MISSION_STAGE_OPENING_CUTSCENE
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
ENDIF
ENDIF
ADD_SCENARIO_BLOCKING_AREA(<<18.380921,-2524.460205,10.000374>>,<<10.180921,-2534.460205,4.800374>>)
ADD_SCENARIO_BLOCKING_AREA(<<509.775757,-3161.031006,38.319389>> - <<87.250000,240.000000,43.000000>>, <<509.775757,-3161.031006,38.319389>> + <<87.250000,240.000000,43.000000>> )
ADD_NAVMESH_BLOCKING_OBJECT(<<1712.584,3304.912,41.960>>,<<13.000,13.600,3.700>>,15.578)
ADD_SCENARIO_BLOCKING_AREA(<<18.380921,-2524.460205,10.000374>>,<<10.180921,-2534.460205,4.800374>>)
ADD_NAVMESH_BLOCKING_OBJECT(<<-107,-2415.304,5.381>>,<<16.4,15.3,1.6>>,-1.619)
ADD_NAVMESH_BLOCKING_OBJECT(<<-53.081,-2415.703,5.119>>,<<16.4,15.3,1.6>>,1.584)
ADD_SCENARIO_BLOCKING_AREA(<<-73.987930,-2415.800781,8.000994>> -<<43.250000,8.000000,3.250000>>,<<-73.987930,-2415.800781,8.000994>>+<<43.250000,8.000000,3.250000>>)
CLEAR_AREA(vStageStart,1000,TRUE,TRUE)
CLEAR_AREA(vDocks,1000,TRUE,TRUE)
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(),0)
PRINTSTRING("MISSION STAGE PRE-LOAD CLEANUP")//PRINTNL()
bMercPatrolCreated[0] = FALSE
bMercPatrolCreated[1] = FALSE
bMercPatrolCreated[2] = FALSE
iSetupProgress = 0
i_current_event = 0
iSecurityTimer = 0
balarmtriggered = FALSE
bLockForklift = FALSE
bContainerSetUpForDrive = FALSE
bIsJumpingDirectlyToStage = TRUE
e_section_stage = SECTION_STAGE_SETUP
INT iCounter
FOR iCounter = 0 TO iNumberOfDockSetPieces -1
bTriggerSetPiece[iCounter] = FALSE
ENDFOR
bRunFailChecks = FALSE
bCrate1Attached = FALSE
bCrate0Attached = FALSE
bForceNoGrab = FALSE
bIsJumpingDirectlyToStage = TRUE
DISABLE_TAXI_HAILING(TRUE)
SET_PLAYER_CAN_CHANGE_CLOTHES_ON_MISSION(FALSE)
//bCreateCrane = TRUE
bcleanup = TRUE
ENDIF
SWITCH iSetupProgress
CASE 0 //request shit and set the player to the correct model
INITALISE_ARRAYS()
SET_UP_DOCKS_RADIO()
IF eStageToLoad = MISSION_STAGE_OPENING_CUTSCENE
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
iSetupProgress++
ENDIF
//DRIVE WITH FLOYD TO DOCKS
ELIF eStageToLoad = MISSION_STAGE_1
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_FLOYD, vfloydStart, ffloydStart )
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_WADE, vWadeStart, fWadeStart )
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK, << -1155.02, -1522.81, 3.3397 >> ,38.40)
OR NOT SETUP_MISSION_REQUIREMENT(REQ_SECURITY)
WAIT(0)
ENDWHILE
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
RESET_CREATE_DOCKS_STUFF()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
//LOAD_SCENE(<< -1154.6117, -1520.0699, 3.3456 >>)
RESET_CREATE_DOCKS_STUFF()
iSetupProgress++
ENDIF
ENDIF
ELIF eStageToLoad = MISSION_STAGE_2
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
WHILE NOT SETUP_MISSION_REQUIREMENT(REQ_SECURITY)
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK,<<21.3604, -2534.8997, 5.0505>>, 55.3357)
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_FLOYD, vfloydStart, ffloydStart)
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_WADE, vWadeStart, fWadeStart )
WAIT(0)
ENDWHILE
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_WADE))
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(FORKLIFT)
REQUEST_ANIM_DICT("misslsdhs")
RESET_CREATE_DOCKS_STUFF()
// SET_VEHICLE_POPULATION_BUDGET(2)
// SET_PED_POPULATION_BUDGET(2)
IF NOT IS_PED_INJURED(pedFloyd)
IF NOT IS_PED_INJURED(pedWade)
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF IS_VEHICLE_SEAT_FREE(vehMission,VS_BACK_LEFT)
SET_PED_INTO_VEHICLE(pedWade,vehMission,VS_BACK_LEFT)
ENDIF
IF IS_VEHICLE_SEAT_FREE(vehMission,VS_FRONT_RIGHT)
SET_PED_INTO_VEHICLE(pedFloyd,vehMission,VS_FRONT_RIGHT)
ENDIF
SET_VEHICLE_ENGINE_ON(vehMission,TRUE,TRUE)
CLEAR_AREA(<< 12.2127, -2531.0344, 5.0509 >>,100,TRUE,TRUE,TRUE)
SET_PED_NON_CREATION_AREA(<< 12.2127, -2531.0344, 5.0509 >> - << 10, 10, 10 >>, << 12.2127, -2531.0344, 5.0509 >> + << 10, 10, 10 >>)
ENDIF
ENDIF
ENDIF
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP(vehMission)
RESET_CREATE_DOCKS_STUFF()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF IS_VEHICLE_SEAT_FREE(vehMission,VS_DRIVER)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehMission,VS_DRIVER)
ENDIF
ENDIF
LOAD_SCENE(<< 21.3604, -2534.8997, 5.0505 >>)
RESET_CREATE_DOCKS_STUFF()
iSetupProgress++
ENDIF
ENDIF
ELIF eStageToLoad = MISSION_STAGE_4
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
REQUEST_VEHICLE_RECORDING(1,"AWDocks1")
REQUEST_WAYPOINT_RECORDING("floyddocks1")
REQUEST_WAYPOINT_RECORDING("docksplayer1")
REQUEST_VEHICLE_RECORDING(1,"AWDock1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(FORKLIFT)
RESET_CREATE_DOCKS_STUFF()
// SET_VEHICLE_POPULATION_BUDGET(2)
// SET_PED_POPULATION_BUDGET(2)
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
//FORKLIFT AND TASKS
ELIF eStageToLoad = MISSION_STAGE_5
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_CONTAINERS_FOR_HANDLER_SECTION_START,<<0,0,0>>)
WAIT(0)
ENDWHILE
REQUEST_VEHICLE_RECORDING(1,"AWDock1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
REQUEST_VEHICLE_RECORDING(1,"AWDocks3")
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(FORKLIFT)
RESET_CREATE_DOCKS_STUFF()
// SET_VEHICLE_POPULATION_BUDGET(2)
// SET_PED_POPULATION_BUDGET(2)
s_sp_blackwater_with_dockworker[0].i_event = 8
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
//FOLLOW floyd TO CRANE
ELIF eStageToLoad = MISSION_STAGE_6
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_CONTAINERS_FOR_HANDLER_SECTION_FINAL,<<0,0,0>>)
WAIT(0)
ENDWHILE
REQUEST_VEHICLE_RECORDING(1,"AWDock1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
REQUEST_ANIM_DICT("missheistdockssetup1ig_14")
START_AUDIO_SCENE("DH_1_HANDLER_START")
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(FORKLIFT)
ADD_MODEL_REQUEST_TO_ARRAY(PROP_CONTR_03B_LD)
RESET_CREATE_DOCKS_STUFF()
// SET_VEHICLE_POPULATION_BUDGET(2)
// SET_PED_POPULATION_BUDGET(2)
s_sp_blackwater_with_dockworker[0].i_event = 8
iFloydHauler = 0
vSpreaderPosition = <<-53.02, -2416.04, 14.75>>
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
//CRANE SECTION
ELIF eStageToLoad = MISSION_STAGE_7
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_CONTAINERS_FOR_HANDLER_SECTION_FINAL,<<0,0,0>>)
WAIT(0)
ENDWHILE
REQUEST_VEHICLE_RECORDING(2,"AWDocks1")
REQUEST_VEHICLE_RECORDING(1,"AWDock1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
REQUEST_ANIM_DICT("missheistdockssetup1trevor_crane")
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(FORKLIFT)
ADD_MODEL_REQUEST_TO_ARRAY(HAULER)
ADD_MODEL_REQUEST_TO_ARRAY(DOCKTRAILER)
RESET_CREATE_DOCKS_STUFF()
// SET_VEHICLE_POPULATION_BUDGET(2)
// SET_PED_POPULATION_BUDGET(2)
s_sp_blackwater_with_dockworker[0].i_event = 8
vSpreaderPosition = <<-53.02, -2416.04, 14.75>>
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
//USE CAMERA
ELIF eStageToLoad = MISSION_STAGE_8
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),TRUE)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_CONTAINERS_FOR_HANDLER_SECTION_FINAL,<<0,0,0>>)
WAIT(0)
ENDWHILE
REQUEST_VEHICLE_RECORDING(1,"AWDock1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(HAULER)
ADD_MODEL_REQUEST_TO_ARRAY(DOCKTRAILER)
RESET_CREATE_DOCKS_STUFF()
// SET_VEHICLE_POPULATION_BUDGET(2)
// SET_PED_POPULATION_BUDGET(2)
s_sp_blackwater_with_dockworker[0].i_event = 8
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
//DRIVE TO OTHER DOCKS
ELIF eStageToLoad = MISSION_STAGE_10
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_CONTAINERS_FOR_HANDLER_SECTION_FINAL,<<0,0,0>>)
WAIT(0)
ENDWHILE
REQUEST_VEHICLE_RECORDING(1,"AWDock1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks2")
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(FORKLIFT)
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(HAULER)
ADD_MODEL_REQUEST_TO_ARRAY(DOCKTRAILER)
RESET_CREATE_DOCKS_STUFF()
s_sp_blackwater_with_dockworker[0].i_event = 8
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
LOAD_SCENE(<<-120.9023, -2411.2688, 5.0007>>)
iSetupProgress++
ENDIF
ENDIF
//DRIVE TO FLOYDS
ELIF eStageToLoad = MISSION_STAGE_11
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_CONTAINERS_FOR_HANDLER_SECTION_FINAL,<<0,0,0>>)
WAIT(0)
ENDWHILE
WHILE NOT SETUP_MISSION_REQUIREMENT(REQ_HAULER_WITH_TRAILER_FINAL_STAGE)
WAIT(0)
ENDWHILE
WHILE NOT SETUP_MISSION_REQUIREMENT(REQ_GUARDS_AND_FLOYD)
WAIT(0)
ENDWHILE
PRINTSTRING("!!!JUMPING TO DRIVE TO FLOYDS 1")PRINTNL()
ADD_MODEL_REQUEST_TO_ARRAY(S_M_Y_BlackOps_01)
ADD_MODEL_REQUEST_TO_ARRAY(S_M_M_DOCKWORK_01)
ADD_MODEL_REQUEST_TO_ARRAY(GET_NPC_PED_MODEL(CHAR_FLOYD))
ADD_MODEL_REQUEST_TO_ARRAY(BIFF)
ADD_MODEL_REQUEST_TO_ARRAY(HAULER)
ADD_MODEL_REQUEST_TO_ARRAY(DOCKTRAILER)
RESET_CREATE_DOCKS_STUFF()
s_sp_blackwater_with_dockworker[0].i_event = 8
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
//PASSED MISSION
ELIF eStageToLoad = MISSION_STAGE_PASSED
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
LOAD_SCENE(<<-1153.4308, -1517.1697, 9.6327>>)
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
BREAK
CASE 1 // load shit that takes one frame and you only want to call once, create items
//IF ARE_REQUESTED_ANIMS_LOADED()
IF ARE_REQUESTED_MODELS_LOADED()
IF ARE_REQUESTED_CARRECS_LOADED("AWDocks1")
IF eStageToLoad = MISSION_STAGE_OPENING_CUTSCENE
iSetupProgress++
//DRIVE WITH floyd TO DOCKS
ELIF eStageToLoad = MISSION_STAGE_1
IF SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
MANAGE_PLAYER_OUTFIT()
IF HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedFloyd)
AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWade)
AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED_ID())
iSetupProgress++
ENDIF
ENDIF
//PLAYER PARKS UP AND GETS CHANGED
ELIF eStageToLoad = MISSION_STAGE_2
IF NOT DOES_ENTITY_EXIST(pedFloyd)
SPAWN_BUDDY(pedFloyd, GET_NPC_PED_MODEL(CHAR_FLOYD), vfloydStart, ffloydStart,TRUE,WEAPONTYPE_UNARMED,TRUE,"FLOYD",3)
ELSE
IF NOT DOES_ENTITY_EXIST(pedWade)
SPAWN_BUDDY(pedWade, GET_NPC_PED_MODEL(CHAR_WADE), vWadeStart, fWadeStart,TRUE,WEAPONTYPE_UNARMED,TRUE,"WADE",4)
ELSE
IF NOT DOES_ENTITY_EXIST(vehMission)
SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK,vDocks ,55.2078)
ELSE
IF CREATE_THE_DOCKS_STUFF()
IF NOT DOES_ENTITY_EXIST(objClipboard[0])
objClipboard[0] = CREATE_OBJECT(P_CS_CLIPBOARD,vDocks)
ELSE
IF NOT DOES_ENTITY_EXIST(objPencil[0])
objPencil[0] = CREATE_OBJECT(PROP_PENCIL_01,vDocks)
MANAGE_PLAYER_OUTFIT()
ELSE
IF DOES_ENTITY_EXIST(pedSecurity)
IF NOT IS_PED_INJURED(pedSecurity)
REQUEST_ANIM_DICT("misslsdhsclipboard@base")
IF HAS_ANIM_DICT_LOADED("misslsdhsclipboard@base")
AND HAS_ANIM_DICT_LOADED("misslsdhs")
IF NOT IS_PED_INJURED(pedFloyd)
AND NOT IS_PED_INJURED(pedWade)
IF HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedFloyd)
AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWade)
AND HAVE_ALL_STREAMING_REQUESTS_COMPLETED(PLAYER_PED_ID())
CLEAR_ALL_PED_PROPS(pedSecurity)
ATTACH_ENTITY_TO_ENTITY(objPencil[0],pedSecurity,GET_PED_BONE_INDEX(pedSecurity, BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>,TRUE,TRUE)
ATTACH_ENTITY_TO_ENTITY(objClipboard[0],pedSecurity,GET_PED_BONE_INDEX(pedSecurity, BONETAG_PH_L_HAND),<<0,0,0>>,<<0,0,0>>,TRUE,TRUE,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(objClipboard[0],pedSecurity,TRUE)
TASK_PLAY_ANIM(pedSecurity,"misslsdhsclipboard@base", "base",INSTANT_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING)
ADD_PED_FOR_DIALOGUE(sSpeech, 1, pedSecurity, "GATEGUARD")
SET_PED_CAN_EVASIVE_DIVE(pedSecurity,FALSE)
FORCE_PED_AI_AND_ANIMATION_UPDATE(pedSecurity)
iSetupProgress++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//FOLLOW floyd AROUND THE DOCKS
ELIF eStageToLoad = MISSION_STAGE_4
IF GET_IS_WAYPOINT_RECORDING_LOADED("floyddocks1")
AND GET_IS_WAYPOINT_RECORDING_LOADED("docksplayer1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDock1")
IF NOT DOES_ENTITY_EXIST(pedFloyd)
SPAWN_BUDDY(pedFloyd, GET_NPC_PED_MODEL(CHAR_FLOYD), << -63.91, -2523.12, 5.0110 >>, 58.62,TRUE,WEAPONTYPE_UNARMED,TRUE,"FLOYD",3)
ELSE
IF NOT DOES_ENTITY_EXIST(vehMission)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK,vParkUpHere ,56)
WAIT(0)
ENDWHILE
ELSE
IF CREATE_THE_DOCKS_STUFF()
IF IS_VEHICLE_DRIVEABLE(vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission,FALSE)
ENDIF
iSetupProgress++
ENDIF
ENDIF
ENDIF
ENDIF
//FORKLIFT AND TASKS
ELIF eStageToLoad = MISSION_STAGE_5
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDock1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks3")
IF NOT DOES_ENTITY_EXIST(pedFloyd)
SPAWN_BUDDY(pedFloyd, GET_NPC_PED_MODEL(CHAR_FLOYD), << -58.7087, -2524.6753, 5.0110 >>, 191.0631,TRUE,WEAPONTYPE_UNARMED,TRUE,"FLOYD",3)
ELSE
IF NOT DOES_ENTITY_EXIST(vehMission)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK,vParkUpHere ,56)
WAIT(0)
ENDWHILE
ELSE
IF NOT DOES_ENTITY_EXIST(vehHandler)
SPAWN_VEHICLE(vehHandler,HANDLER,<<-129.77, -2418.28, 6.24>>,183.0850,-1,1.0)
SET_VEHICLE_COLOUR_COMBINATION(vehHandler,0)
SET_VEHICLE_PROVIDES_COVER(vehHandler,FALSE)
ELSE
IF CREATE_THE_DOCKS_STUFF()
IF NOT DOES_ENTITY_EXIST(s_sp_forklift_supervisorA[0].ped)
REQUEST_MODEL(s_sp_forklift_supervisorA[0].model)
IF HAS_MODEL_LOADED(s_sp_forklift_supervisorA[0].model)
s_sp_forklift_supervisorA[0].ped = CREATE_SETPIECE_PED(s_sp_forklift_supervisorA[0].model,s_sp_forklift_supervisorA[0].v_spawn_position, s_sp_forklift_supervisorA[0].f_start_heading, rel_group_buddies, 200, 0)
ENDIF
ELSE
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@start_idle")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_9@start_idle")
REQUEST_MODEL(P_CS_CLIPBOARD)
IF HAS_MODEL_LOADED(P_CS_CLIPBOARD)
IF NOT DOES_ENTITY_EXIST(objClipboard[1])
objClipboard[1] = CREATE_OBJECT(P_CS_CLIPBOARD,<<-131.08, -2423.25, 8.00>>)
ELSE
REQUEST_MODEL(PROP_PENCIL_01)
IF HAS_MODEL_LOADED(PROP_PENCIL_01)
IF NOT DOES_ENTITY_EXIST(objPencil[1])
objPencil[1] = CREATE_OBJECT(PROP_PENCIL_01,<<-131.08, -2423.25, 8.00>>)
ELSE
IF DOES_ENTITY_EXIST(s_sp_forklift_supervisorA[0].ped)
IF NOT IS_ENTITY_ATTACHED(objPencil[1])
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
ATTACH_ENTITY_TO_ENTITY(objPencil[1],s_sp_forklift_supervisorA[0].ped,GET_PED_BONE_INDEX(s_sp_forklift_supervisorA[0].ped, BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
ENDIF
ELSE
IF NOT IS_ENTITY_ATTACHED(objClipboard[1])
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
ATTACH_ENTITY_TO_ENTITY(objClipboard[1],s_sp_forklift_supervisorA[0].ped,GET_PED_BONE_INDEX(s_sp_forklift_supervisorA[0].ped, BONETAG_PH_L_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission,FALSE)
ENDIF
iSetupProgress++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//FOLLOW floyd TO CRANE
ELIF eStageToLoad = MISSION_STAGE_6
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDock1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
AND HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_14")
IF NOT DOES_ENTITY_EXIST(pedFloyd)
SPAWN_BUDDY(pedFloyd, GET_NPC_PED_MODEL(CHAR_FLOYD), <<-129.77, -2418.28, 6.24>>, 191.0631,TRUE,WEAPONTYPE_UNARMED,TRUE,"FLOYD",3)
ELSE
IF NOT DOES_ENTITY_EXIST(vehMission)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK,vParkUpHere ,56)
WAIT(0)
ENDWHILE
ELSE
IF NOT DOES_ENTITY_EXIST(vehHandler)
SPAWN_VEHICLE(vehHandler,HANDLER,<<-88.8838, -2451.5679, 5.0175>>, 317.2729,-1,1.0)
SET_VEHICLE_COLOUR_COMBINATION(vehHandler,0)
SET_VEHICLE_PROVIDES_COVER(vehHandler,FALSE)
ELSE
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF IS_VEHICLE_SEAT_FREE(vehHandler)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehHandler)
ENDIF
ELSE
IF CREATE_THE_DOCKS_STUFF()
iSetupProgress++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//CRANE SECTION
ELIF eStageToLoad = MISSION_STAGE_7
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDock1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1trevor_crane")
IF NOT DOES_ENTITY_EXIST(pedFloyd)
SPAWN_BUDDY(pedFloyd, GET_NPC_PED_MODEL(CHAR_FLOYD), <<-120.65, -2422.97, 5.00>>, -38.16,TRUE,WEAPONTYPE_UNARMED,TRUE,"FLOYD",3)
ELSE
IF NOT DOES_ENTITY_EXIST(vehMission)
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK,vParkUpHere ,56)
WAIT(0)
ENDWHILE
ELSE
IF CREATE_THE_DOCKS_STUFF()
iSetupProgress++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//USE CAMERA
ELIF eStageToLoad = MISSION_STAGE_8
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDock1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
IF NOT DOES_ENTITY_EXIST(pedFloyd)
SPAWN_BUDDY(pedFloyd, GET_NPC_PED_MODEL(CHAR_FLOYD), << -145.1769, -2472.3149, 5.0310 >>, ffloydStart,TRUE,WEAPONTYPE_UNARMED,TRUE,"FLOYD",3)
ELSE
IF NOT DOES_ENTITY_EXIST(vehFloydTruck)
SPAWN_VEHICLE(vehFloydTruck,HAULER,<< -117.9839, -2416.6272, 5.0003 >>,91.3366)
ELSE
IF NOT DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_VEHICLE_COLOURS(vehFloydTruck,0,0)
SPAWN_VEHICLE(vehTrailer2,DOCKTRAILER,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehFloydTruck, <<-0.3, -9.5, -0.25>>), GET_ENTITY_HEADING(vehFloydTruck))
SET_VEHICLE_EXTRA(vehTrailer2,1,FALSE)
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
ELSE
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_VEHICLE_SEAT_FREE(vehFloydTruck,VS_FRONT_RIGHT)
SET_PED_INTO_VEHICLE(pedFloyd,vehFloydTruck,VS_FRONT_RIGHT)
ENDIF
ENDIF
ENDIF
//IF CREATE_CRANE()
IF CREATE_THE_DOCKS_STUFF()
iSetupProgress++
ENDIF
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
//ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//CREATE_THE_DOCKS_STUFF()
ENDIF
//DRIVE TO OTHER DOCKS
ELIF eStageToLoad = MISSION_STAGE_10
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDock1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks2")
IF NOT DOES_ENTITY_EXIST(pedFloyd)
SPAWN_BUDDY(pedFloyd, GET_NPC_PED_MODEL(CHAR_FLOYD), << -145.1769, -2472.3149, 5.0310 >>, ffloydStart,TRUE,WEAPONTYPE_UNARMED,TRUE,"FLOYD",3)
ELSE
IF NOT DOES_ENTITY_EXIST(vehFloydTruck)
SPAWN_VEHICLE(vehFloydTruck,HAULER,<<-116.3106, -2415.3901, 5.0005>>, 88.7066)
ELSE
IF NOT DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_VEHICLE_COLOURS(vehFloydTruck,0,0)
SPAWN_VEHICLE(vehTrailer2,DOCKTRAILER,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehFloydTruck, <<-0.3, -9.5, -0.25>>), GET_ENTITY_HEADING(vehFloydTruck))
SET_VEHICLE_EXTRA(vehTrailer2,1,FALSE)
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
ELSE
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_SEAT_FREE(vehFloydTruck,VS_FRONT_RIGHT)
SET_PED_INTO_VEHICLE(pedFloyd,vehFloydTruck,VS_FRONT_RIGHT)
ENDIF
// IF IS_VEHICLE_SEAT_FREE(vehFloydTruck,VS_DRIVER)
// SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehFloydTruck,VS_DRIVER)
// ENDIF
//IF CREATE_CRANE()
IF CREATE_THE_DOCKS_STUFF()
REQUEST_IPL("pcranecont")
iSetupProgress++
ENDIF
//ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//DRIVE HOME
ELIF eStageToLoad = MISSION_STAGE_11
IF NOT DOES_ENTITY_EXIST(vehFinal)
SPAWN_VEHICLE(vehFinal,TIPTRUCK, << 465.8751, -3037.0837, 5.0686 >>, 126.3433,-1,1)
ELSE
PRINTSTRING("!!!JUMPING TO DRIVE TO FLOYDS 2")PRINTNL()
iSetupProgress++
ENDIF
//BLANK STAGE
//PASSED MISSION
ELIF eStageToLoad = MISSION_STAGE_PASSED
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
iSetupProgress++
ELSE
SET_PLAYER_START_POSITION(eStageToLoad)
iSetupProgress++
ENDIF
ENDIF
ENDIF
ENDIF
//ENDIF
BREAK
CASE 2 //Things that might take more than one frame and you don't mind calling multiple times and set player starting position
IF eStageToLoad > MISSION_STAGE_OPENING_CUTSCENE
MANAGE_PLAYER_OUTFIT()
ENDIF
IF eStageToLoad > MISSION_STAGE_2
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_DOCKS_BACK_GATE_IN,PLAYER_PED_ID())
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_DOCKS_BACK_GATE_OUT,PLAYER_PED_ID())
//LOCK GATE
UNREGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_DOCKS_FRONT_GATE_OUT,PLAYER_PED_ID())
ENDIF
IF eStageToLoad <> MISSION_STAGE_1 OR eStageToLoad <> MISSION_STAGE_OPENING_CUTSCENE
iprogress = 0
IF NOT Is_Replay_In_Progress()
SET_PLAYER_START_POSITION(eStageToLoad)
ENDIF
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
IF eStageToLoad = MISSION_STAGE_OPENING_CUTSCENE
iprogress = 0
eMissionStage = MISSION_STAGE_OPENING_CUTSCENE
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_1
iprogress = 0
eMissionStage = MISSION_STAGE_1
IF bskipping = TRUE
ENDIF
REQUEST_IPL("Talklaugh_Pipe")
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_2
eMissionStage = MISSION_STAGE_2
REQUEST_IPL("Talklaugh_Pipe")
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_4
IF NOT DOES_ENTITY_EXIST(pedFloyd)
FORCE_PED_MOTION_STATE(pedFloyd, MS_ON_FOOT_WALK, FALSE, FAUS_CUTSCENE_EXIT)
ENDIF
eMissionStage = MISSION_STAGE_4
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_5
CLEANUP_LOADED_MODEL_ARRAY()
REQUEST_IPL("Talklaugh_Pipe")
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_VEHICLE_SEAT_FREE(vehHandler)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehHandler)
ENDIF
ENDIF
eMissionStage = MISSION_STAGE_5
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_6
REQUEST_IPL("Talklaugh_Pipe")
eMissionStage = MISSION_STAGE_6
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_7
REQUEST_IPL("Talklaugh_Pipe")
eMissionStage = MISSION_STAGE_7
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_8
REQUEST_IPL("Talklaugh_Pipe")
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),TRUE)
eMissionStage = MISSION_STAGE_8
STOP_GAMEPLAY_HINT()
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SETTIMERA(0)
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_10
REQUEST_IPL("Talklaugh_Pipe")
//CLEANUP_LOADED_MODEL_ARRAY()
eMissionStage = MISSION_STAGE_10
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_11
REQUEST_IPL("Talklaugh_Pipe")
PRINTSTRING("!!!JUMPING TO DRIVE TO FLOYDS 3")PRINTNL()
CLEANUP_LOADED_MODEL_ARRAY()
CLEANUP_LOADED_ANIM_ARRAY()
eMissionStage = MISSION_STAGE_11
RESET_MISSION_STAGE_INTS_SKIP()
ELIF eStageToLoad = MISSION_STAGE_PASSED
PRINTSTRING("!!!JUMPING TO ")PRINTNL()
CLEANUP_LOADED_MODEL_ARRAY()
CLEANUP_LOADED_ANIM_ARRAY()
eMissionStage = MISSION_STAGE_PASSED
RESET_MISSION_STAGE_INTS_SKIP()
ENDIF
BREAK
ENDSWITCH
ENDPROC
// ======================================================================
// MISSION STAGES AND CUTSCENES AS PROCEDURES
// ======================================================================
//PURPOSE: Requests and creates any assets etc that are initally required for the mission stage then holds in the load mission stage loop until complete
PROC MISSION_SETUP()
ADD_SCENARIO_BLOCKING_AREA(<<509.775757,-3161.031006,38.319389>> - <<87.250000,240.000000,43.000000>>, <<509.775757,-3161.031006,38.319389>> + <<87.250000,240.000000,43.000000>> )
ADD_NAVMESH_BLOCKING_OBJECT(<<-107,-2415.304,5.381>>,<<16.4,15.3,1.6>>,-1.619)
ADD_NAVMESH_BLOCKING_OBJECT(<<-53.081,-2415.703,5.119>>,<<16.4,15.3,1.6>>,1.584)
ADD_SCENARIO_BLOCKING_AREA(<<-73.987930,-2415.800781,8.000994>> -<<43.250000,8.000000,3.250000>>,<<-73.987930,-2415.800781,8.000994>>+<<43.250000,8.000000,3.250000>>)
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
PRINTSTRING("DOCKS HEIST - MISSION_SETUP")//PRINTNL()
SET_PLAYER_CAN_CHANGE_CLOTHES_ON_MISSION(FALSE)
//INFORM_MISSION_STATS_OF_MISSION_START_DOCKS_HEIST_SETUP()
// Loads the mission text
REQUEST_ADDITIONAL_TEXT("DOCKH1", MISSION_TEXT_SLOT)
//1045747
//REQUEST_ADDITIONAL_TEXT("D1AUD", 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)
ENDWHILE
DISABLE_CHEAT(CHEAT_TYPE_ALL, TRUE) //disables all cheats.
SET_UP_DOCKS_RADIO()
REGISTER_SCRIPT_WITH_AUDIO()
//DISABLE_VEHICLE_GEN_ON_MISSION(TRUE)
//DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<1187,-1398,4.3>>, 10)
REMOVE_RELATIONSHIP_GROUP(rel_group_buddies)
REMOVE_RELATIONSHIP_GROUP(rel_group_enemies)
ADD_RELATIONSHIP_GROUP("BUDDIES", rel_group_buddies)
ADD_RELATIONSHIP_GROUP("ENEMIES", rel_group_enemies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,rel_group_buddies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,RELGROUPHASH_PLAYER,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,rel_group_enemies,rel_group_enemies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,rel_group_enemies,rel_group_enemies)
//SET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID() ,rel_group_buddies)
SET_GROUP_SEPARATION_RANGE(PLAYER_GROUP_ID(), 150.0)
//SET_MAX_WANTED_LEVEL(0)
SET_WANTED_LEVEL_MULTIPLIER(0.4)
DISABLE_TAXI_HAILING(TRUE)
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(),PCF_WillFlyThroughWindscreen,FALSE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(FORKLIFT,TRUE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BODHI2,TRUE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BIFF,TRUE)
SET_PED_MODEL_IS_SUPPRESSED(GET_NPC_PED_MODEL(CHAR_WADE),TRUE)
SET_PED_MODEL_IS_SUPPRESSED(GET_NPC_PED_MODEL(CHAR_FLOYD),TRUE)
bHasChanged = GET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR)
SETUP_PEDS_FOR_DIALOGUE()
IF Is_Replay_In_Progress()
//Load appropriate mission stage dependent on checkpoint
IF Get_Replay_Mid_Mission_Stage() > ENUM_TO_INT(MISSION_STAGE_SETUP) AND Get_Replay_Mid_Mission_Stage() < ENUM_TO_INT(MISSION_STAGE_PASSED)
iReplayStage = Get_Replay_Mid_Mission_Stage()
IF g_bShitskipAccepted = TRUE
iReplayStage = iReplayStage + 1
IF iReplayStage < ENUM_TO_INT(MISSION_STAGE_PASSED)
PRINTSTRING("******* Actual value - iReplayStage= ")PRINTINT(iReplayStage)PRINTNL()
IF iReplayStage = 1
//DRIVE
START_REPLAY_SETUP(<< 24.4835, -2536.4578, 5.0410 >>,55.2078)
eMissionStage = MISSION_STAGE_2
PRINTSTRING("******* iReplayStage = 2")//PRINTNL()
ELIF iReplayStage = 2
//PARK
START_REPLAY_SETUP(<< 24.4835, -2536.4578, 5.0410 >>,55.2078)
eMissionStage = MISSION_STAGE_2
PRINTSTRING("******* iReplayStage = 3")//PRINTNL()
ELIF iReplayStage = 3
//FOLLOW FLOYD
START_REPLAY_SETUP(<< -61.5066, -2525.5120, 5.0101 >>,56.9516)
eMissionStage = MISSION_STAGE_4
PRINTSTRING("******* iReplayStage = 4")//PRINTNL()
ELIF iReplayStage = 4
//FORKLIFTS
START_REPLAY_SETUP(<<-125.5439, -2421.8813, 5.0005>> ,49.0800)
eMissionStage = MISSION_STAGE_5
PRINTSTRING("******* iReplayStage = 5")//PRINTNL()
ELIF iReplayStage = 5
//GO TO CRANE
START_REPLAY_SETUP(<<-88.8838, -2451.5679, 5.0175>> ,317.2729)
eMissionStage = MISSION_STAGE_6
PRINTSTRING("******* iReplayStage = 6")//PRINTNL()
ELIF iReplayStage = 6
//USE CRANE
START_REPLAY_SETUP(<< -50.2985, -2403.9036, 5.0003 >> ,191.2160)
eMissionStage = MISSION_STAGE_7
PRINTSTRING("******* iReplayStage = 7")//PRINTNL()
ELIF iReplayStage = 7
//PHOTOGRAPH BOAT
START_REPLAY_SETUP(<< -114.5969, -2406.8113, 22.2282 >> ,359.8527)
eMissionStage = MISSION_STAGE_8
PRINTSTRING("******* iReplayStage = 8")//PRINTNL()
ELIF iReplayStage = 8
START_REPLAY_SETUP(<<-120.9023, -2411.2688, 5.0007>> ,195.5543)
//DRIVE TO OTHER DOCKS
eMissionStage = MISSION_STAGE_10
PRINTSTRING("******* iReplayStage = 10")//PRINTNL()
ELIF iReplayStage = 9
//DRIVE HOME
START_REPLAY_SETUP(<<479.0352, -3050.4910, 5.0937>> , 0.7722 )
eMissionStage = MISSION_STAGE_11
PRINTSTRING("******* iReplayStage = 10")//PRINTNL()
ELIF iReplayStage = 10
//DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME_SHORT)
eMissionStage = MISSION_STAGE_PASSED
//PASSED
START_REPLAY_SETUP(<<-1153.4308, -1517.1697, 9.6327>>, 126.3936 )
eMissionStage = MISSION_STAGE_PASSED
PRINTSTRING("******* iReplayStage = MISSION_STAGE_PASSED")//PRINTNL()
ELIF iReplayStage = 11
//DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME_SHORT)
eMissionStage = MISSION_STAGE_PASSED
//PASSED
START_REPLAY_SETUP(<<-1153.4308, -1517.1697, 9.6327>>, 126.3936 )
eMissionStage = MISSION_STAGE_PASSED
PRINTSTRING("******* iReplayStage = MISSION_STAGE_PASSED")//PRINTNL()
ELSE
SCRIPT_ASSERT("Docks Setup: Trying to replay a mission stage that doesn't exist!")
ENDIF
ELSE
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME_SHORT)
eMissionStage = MISSION_STAGE_PASSED
ENDIF
ELSE
//If the player chose to start from a checkpoint, jump to the last checkpoint reached.
//eMissionStage = INT_TO_ENUM(MISSION_STAGE_ENUM, (Get_Replay_Mid_Mission_Stage()+1))
IF iReplayStage = 0
//DRIVE
START_REPLAY_SETUP(<<-1156.4092, -1523.9283, 3.2957>>,323.2638)
eMissionStage = MISSION_STAGE_1
PRINTSTRING("******* iReplayStage = 1")//PRINTNL()
ELIF iReplayStage = 2
//PARK
START_REPLAY_SETUP(<< 24.4835, -2536.4578, 5.0410 >>,55.2078)
eMissionStage = MISSION_STAGE_2
PRINTSTRING("******* iReplayStage = 2")//PRINTNL()
ELIF iReplayStage = 3
//FOLLOW FLOYD
START_REPLAY_SETUP(<< -61.5066, -2525.5120, 5.0101 >>,56.9516)
eMissionStage = MISSION_STAGE_4
PRINTSTRING("******* iReplayStage = 3")//PRINTNL()
ELIF iReplayStage = 4
//FORKLIFTS
START_REPLAY_SETUP(<<-125.5439, -2421.8813, 5.0005>> ,49.0800)
eMissionStage = MISSION_STAGE_5
PRINTSTRING("******* iReplayStage = 4")//PRINTNL()
ELIF iReplayStage = 5
//GO TO CRANE
START_REPLAY_SETUP(<<-88.8838, -2451.5679, 5.0175>> ,317.2729)
eMissionStage = MISSION_STAGE_6
PRINTSTRING("******* iReplayStage = 5")//PRINTNL()
ELIF iReplayStage = 6
//USE CRANE
START_REPLAY_SETUP(<< -50.2985, -2403.9036, 5.0003 >> ,191.2160)
eMissionStage = MISSION_STAGE_7
PRINTSTRING("******* iReplayStage = 6")//PRINTNL()
ELIF iReplayStage = 7
//PHOTOGRAPH BOAT
START_REPLAY_SETUP(<< -114.5969, -2406.8113, 22.2282 >> ,359.8527)
eMissionStage = MISSION_STAGE_8
PRINTSTRING("******* iReplayStage = 7")//PRINTNL()
ELIF iReplayStage = 8
//DRIVE TO OTHER DOCKS
START_REPLAY_SETUP(<<-120.9023, -2411.2688, 5.0007>> ,195.5543)
eMissionStage = MISSION_STAGE_10
PRINTSTRING("******* iReplayStage = 8")//PRINTNL()
ELIF iReplayStage = 9
//DRIVE HOME
START_REPLAY_SETUP(<<479.0352, -3050.4910, 5.0937>> , 0.7722 )
eMissionStage = MISSION_STAGE_11
PRINTSTRING("******* iReplayStage =9")//PRINTNL()
ELSE
SCRIPT_ASSERT("Trevor2: Trying to replay a mission stage that doesn't exist!")
ENDIF
ENDIF
ELSE
IF iReplayStage = 0
IF g_bShitskipAccepted = TRUE
eMissionStage = MISSION_STAGE_2
PRINTSTRING("******* jumping past the drive")PRINTNL()
ELSE
eMissionStage = MISSION_STAGE_1
PRINTSTRING("******* iReplayStage = 0")PRINTNL()
ENDIF
ELSE
eMissionStage = MISSION_STAGE_OPENING_CUTSCENE
ENDIF
ENDIF
//SET_PLAYER_START_POSITION(eMissionStage)
ELSE
PRINTSTRING("******* Here - 1")PRINTNL()
// Your mission is being played normally, not being replayed
eMissionStage = MISSION_STAGE_OPENING_CUTSCENE
ENDIF
IF eMissionStage != MISSION_STAGE_OPENING_CUTSCENE
PRINTSTRING("******* Here - 2")PRINTNL()
WHILE NOT bmissionstageloaded // continues requesting asserts/setup for particular stage until all are loaded
WAIT(0)
LOAD_MISSION_STAGE(eMissionStage)
ENDWHILE
ENDIF
bmissionstageloaded = FALSE
ENDPROC
FUNC BOOL MANAGE_GOD_TEXT_AND_DIALOGUE(STRING sGodText, STRING sDialogueBlock, STRING sDialogueRoot)
IF bDialogue = FALSE
IF bGodText = FALSE
IF NOT IS_STRING_NULL(sGodText)
IF NOT IS_THIS_PRINT_BEING_DISPLAYED(sGodText)
PRINT_GOD_TEXT(sGodText)
iGandDTimer = GET_GAME_TIMER()
bGodText = TRUE
ENDIF
ELSE
bGodText = TRUE
ENDIF
ELSE
//IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData)
IF NOT IS_STRING_NULL(sGodText)
IF MANAGE_MY_TIMER(iGandDTimer,4000)
IF NOT IS_THIS_PRINT_BEING_DISPLAYED(sGodText)
IF CREATE_CONVERSATION(sSpeech,sDialogueBlock, sDialogueRoot, CONV_PRIORITY_HIGH )
bDialogue = TRUE
RETURN TRUE
ENDIF
ENDIF
ENDIF
ELSE
IF CREATE_CONVERSATION(sSpeech,sDialogueBlock, sDialogueRoot, CONV_PRIORITY_HIGH)
bDialogue = TRUE
RETURN TRUE
ENDIF
ENDIF
//ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC MANAGE_DIALOGUE()
//PRINTSTRING("iMissionDialogue: ")PRINTINT(iMissionDialogue)
SWITCH iMissionDialogue
CASE 0
//PURPOSE: Drive to the Docks with floyd, trigger dialogue about the bridge
IF eMissionStage = MISSION_STAGE_1
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<352.884644,-2391.758301,8.183699>>, <<351.202393,-2238.528809,12.798820>>, 29.000000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<369.152985,-2225.729980,9.336354>>, <<342.831940,-2223.622803,27.368328>>, 86.500000)
IF SETUP_PEDS_FOR_DIALOGUE()
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_01a", CONV_PRIORITY_HIGH)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
iMissionDialogue ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 1
//PURPOSE: Get to gate
IF eMissionStage = MISSION_STAGE_1
iMissionDialogue ++
ENDIF
BREAK
CASE 2
//PURPOSE: Wade gets called off
IF eMissionStage = MISSION_STAGE_2
IF iProgress >= 4
iMissionDialogue++
ENDIF
ENDIF
BREAK
CASE 3
iMissionDialogue ++
BREAK
CASE 4
iMissionDialogue ++
BREAK
CASE 5
iMissionDialogue ++
BREAK
CASE 6
iMissionDialogue ++
BREAK
CASE 7
//PURPOSE: Wander around the docks - That's the freighter I told you about.
iMissionDialogue ++
BREAK
CASE 8
//PURPOSE: Wander around the docks - You, you! I need drivers on these forklifts. We got crates to clear ASAP.
IF eMissionStage = MISSION_STAGE_4
IF bcutsceneplaying
IF iCutsceneStage > 0
IF SETUP_PEDS_FOR_DIALOGUE()
iMissionDialogue ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 9
//PURPOSE: Forklifts, player gets into forklift
IF eMissionStage = MISSION_STAGE_5
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF SETUP_PEDS_FOR_DIALOGUE()
iMissionDialogue ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 10
//PURPOSE: Ok now let's clear the area up and see what we can find.
IF eMissionStage = MISSION_STAGE_5
iMissionDialogue ++
ENDIF
BREAK
CASE 11
//PURPOSE: Drive to the crane
IF eMissionStage = MISSION_STAGE_6
//Add drive to crane god text.
IF SETUP_PEDS_FOR_DIALOGUE()
//IF MANAGE_GOD_TEXT_AND_DIALOGUE("","D1AUD","DS1_08a")
bDialogue = FALSE
bGodText = FALSE
iMissionDialogue ++
//ENDIF
ENDIF
ENDIF
BREAK
CASE 12
//PURPOSE: In Crane
IF eMissionStage = MISSION_STAGE_7
//Add crane god text
IF iProgress > 1
IF SETUP_PEDS_FOR_DIALOGUE()
IF DOES_ENTITY_EXIST(pedDockWorker[14])
IF NOT IS_PED_INJURED(pedDockWorker[14])
ADD_PED_FOR_DIALOGUE(sSpeech, 8, pedDockWorker[14], "SIGNALMAN")
ENDIF
ELSE
IF sSpeech.PedInfo[8].Index <> NULL
REMOVE_PED_FOR_DIALOGUE(sSpeech, 8)
ENDIF
ENDIF
iMissionDialogue ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 13
//PURPOSE: Take Photos
IF eMissionStage = MISSION_STAGE_8
IF iProgress = 2
IF SETUP_PEDS_FOR_DIALOGUE()
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("AW_TAKE_PHOTO")
IF SETUP_PEDS_FOR_DIALOGUE()
//IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_11", CONV_PRIORITY_HIGH)
iMissionDialogue ++
//ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 14
//PURPOSE: Take Photos - One taken
IF eMissionStage = MISSION_STAGE_8
IF iProgress = 4
IF SETUP_PEDS_FOR_DIALOGUE()
//KILL_ANY_CONVERSATION()
// IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_1", CONV_PRIORITY_HIGH)
iMissionDialogue ++
//ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 15
//PURPOSE: Take Photos - Two Taken
IF eMissionStage = MISSION_STAGE_8
IF iProgress = 5
IF SETUP_PEDS_FOR_DIALOGUE()
//KILL_ANY_CONVERSATION()
//CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_11c", CONV_PRIORITY_HIGH)
iMissionDialogue ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 16
//PURPOSE: Photos Done Cutscene
iMissionDialogue ++
//Now handled within the cutscene
BREAK
CASE 17
//PURPOSE: Drive to other docks
IF eMissionStage = MISSION_STAGE_10
IF SETUP_PEDS_FOR_DIALOGUE()
//IF MANAGE_GOD_TEXT_AND_DIALOGUE("AW_TREVTRU","D1AUD","DS1_15")
//bDialogue = FALSE
//bGodText = FALSE
iMissionDialogue ++
//ENDIF
ENDIF
ENDIF
BREAK
CASE 18
BREAK
ENDSWITCH
ENDPROC
FUNC BOOL DO_PHONECALL()
IF NOT bPhoneCallStarted
IF PLAYER_CALL_CHAR_CELLPHONE( sSpeech, CHAR_RON, "D1AUD", "DS1_12", CONV_PRIORITY_VERY_HIGH)
DISABLE_HANGUP_FOR_THIS_CALL(TRUE)
bPhoneCallStarted = TRUE
SETTIMERA(0)
ENDIF
ELSE
IF HAS_CELLPHONE_CALL_FINISHED()
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC CUTSCENE_SPY_ON_DOCKS()
SETTIMERA(0)
bcutsceneplaying = TRUE
HIDE_HUD_AND_RADAR_THIS_FRAME()
WHILE bcutsceneplaying //holds the script inside here until cutscene is complete
WAIT(0)
HIDE_HUD_AND_RADAR_THIS_FRAME()
//CONTROL_SPEECH()
#IF IS_DEBUG_BUILD // allows j/p skip to work even in cutscene
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)OR IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P)
bcutsceneplaying = FALSE
ENDIF
#ENDIF
IF icutsceneprog >1
IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY() // controls the cutscene skip
OR HAS_CELLPHONE_CALL_FINISHED()
SETTIMERB(6001)
//CONTROL_FADE_OUT(500)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
DETACH_ENTITY(PLAYER_PED_ID(),TRUE)
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
ENDIF
icutsceneprog = 6
ENDIF
ENDIF
SWITCH icutsceneprog
CASE 0
bContainerSetUpForDrive = FALSE
//CREATE_CRANE()
//Player Control
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
CLEAR_PRINTS()
DISABLE_CELLPHONE(FALSE)
DESTROY_ALL_CAMS()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
IF NOT IS_PED_INJURED(pedFloyd) AND IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_PED_INTO_VEHICLE(pedFloyd,vehFloydTruck,VS_FRONT_RIGHT)
ENDIF
REQUEST_MODEL(BIFF)
IF IS_PLAYER_PLAYING(PLAYER_ID())
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF IS_ENTITY_ATTACHED_TO_ANY_VEHICLE(PLAYER_PED_ID())
DETACH_ENTITY(PLAYER_PED_ID())
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
ELSE
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_cabin)
IF IS_ENTITY_ATTACHED_TO_ENTITY(PLAYER_PED_ID(), s_crane.obj_cabin)
DETACH_ENTITY(PLAYER_PED_ID())
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
CLEAR_PED_TASKS_IMMEDIATELY(pedFloyd)
SET_ENTITY_COORDS(pedFloyd,<<-52.97, -2412.93, 5.00>>)
SET_ENTITY_HEADING(pedFloyd,91.63)
ENDIF
ENDIF
s_crane.f_crane_offset = MIN_CRANE_OFFSET
s_crane.f_crane_vel = 0.0
IF HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED)
AND NOT IS_PHONE_ONSCREEN()
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED,TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[0])
DELETE_VEHICLE(vehDocks[0])
ENDIF
ADD_PED_FOR_DIALOGUE(sSpeech,0,NULL,"NERVOUSRON")
bInitStage = TRUE
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
iMissionDialogue = 16
icutsceneprog ++
BREAK
CASE 1
IF TIMERB() > 1000
IF SETUP_PEDS_FOR_DIALOGUE()
KILL_ANY_CONVERSATION()
IF PLAYER_CALL_CHAR_CELLPHONE( sSpeech, CHAR_RON, "D1AUD", "DS1_12", CONV_PRIORITY_VERY_HIGH)
//DISABLE_HANGUP_FOR_THIS_CALL(TRUE)
bPhoneCallStarted = TRUE
//Camera
IF NOT DOES_CAM_EXIST(camMain)
camMain = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
ENDIF
//BEHIND PLAYER AND DOWN
SHAKE_CAM(camMain, "HAND_SHAKE", 0.01)
SET_CAM_PARAMS(camMain,
<< -112.6306, -2408.0786, 24.3142 >>, << -15.5866, -0.0846, 21.1613 >>,
47.4496,
0,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(camMain,
<< -112.6132, -2408.1243, 24.1435 >>, << -15.5866, -0.0846, 21.1613 >>,
46.4496,
8200,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
SETTIMERB(0)
icutsceneprog ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF HAS_MODEL_LOADED(BIFF)
IF TIMERB() > 7800
//ZOOM IN ON GUARD
SHAKE_CAM(camMain, "HAND_SHAKE", 0.01)
SET_CAM_PARAMS(camMain,
<< -103.4377, -2396.3796, 14.5640 >>, << -8.5924, -1.4284, 33.1103 >>,
16.0059,
0,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(camMain,
<< -109.5450, -2400.3953, 14.3838 >>, << -8.5924, -1.4284, 33.1103 >>,
15.0059,
9000,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SETTIMERB(0)
IF NOT DOES_ENTITY_EXIST(vehDocks[0])
SPAWN_VEHICLE(vehDocks[0],BIFF,<< -42.4866, -2397.1814, 5.0003 >>, 91.1803)
ENDIF
REQUEST_VEHICLE_RECORDING(1,"AWDocks8")
icutsceneprog ++
ENDIF
ENDIF
BREAK
CASE 3
IF TIMERB() > 8200
//REAR PAN
SHAKE_CAM(camMain, "HAND_SHAKE", 0.05)
SET_CAM_PARAMS(camMain,
<< -165.5269, -2278.7788, 22.0802 >>, << -3.7631, 0.0397, -151.0943 >>,
11.2438,
0,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(camMain,
<< -180.5885, -2287.0940, 22.0683 >>, << -3.7631, 0.0397, -151.0943 >>,
11.0438,
15000,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SETTIMERB(0)
IF DOES_ENTITY_EXIST(vehDocks[0])
IF IS_VEHICLE_DRIVEABLE(vehDocks[0])
IF NOT IS_PED_INJURED(pedDockWorker[13])
SET_PED_INTO_VEHICLE(pedDockWorker[13],vehDocks[0])
ENDIF
ENDIF
ENDIF
icutsceneprog ++
ENDIF
BREAK
CASE 4
IF TIMERB() > 10000
//PAN BEHIND CRANE LOOKING AT SHIP
SHAKE_CAM(camMain, "HAND_SHAKE", 0.01)
SET_CAM_PARAMS(camMain,
<< -74.0709, -2442.3132, 21.5670 >>, << -6.4020, -1.4284, 46.5438 >>,
16.0059,
0,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(camMain,
<< -65.6630, -2433.3894, 21.8708 >>, << -6.4020, -1.4284, 46.5438 >>,
16.4059,
24000,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SETTIMERB(0)
IF DOES_ENTITY_EXIST(vehDocks[0])
IF IS_VEHICLE_DRIVEABLE(vehDocks[0])
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks8")
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehDocks[0])
START_PLAYBACK_RECORDED_VEHICLE(vehDocks[0],1,"AWDocks8")
ENDIF
ENDIF
ENDIF
ENDIF
icutsceneprog ++
ENDIF
BREAK
CASE 5
IF TIMERB() > 3000
IF HAS_CELLPHONE_CALL_FINISHED()
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -105.3935, -2404.4043, 4.9999 >> ,TRUE)
SET_ENTITY_HEADING(PLAYER_PED_ID(),58.9704)
//BEHIND PED LOOK AT FRONT OF SHIP
SHAKE_CAM(camMain, "HAND_SHAKE", 0.01)
SET_CAM_PARAMS(camMain,
<< -131.2179, -2396.0811, 8.8231 >>, << -3.1815, -1.4284, -137.3740 >>,
23.6303,
0,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SET_CAM_PARAMS(camMain,
<< -126.9600, -2392.1514, 8.6789 >>, << -3.1815, -1.4284, -137.3740 >>,
23.6303,
3500,
GRAPH_TYPE_LINEAR,
GRAPH_TYPE_LINEAR)
SETTIMERB(0)
icutsceneprog ++
ENDIF
ENDIF
BREAK
CASE 6
IF TIMERB() > 3500
IF DOES_CAM_EXIST(camMain)
SET_CAM_ACTIVE(camMain,FALSE)
RENDER_SCRIPT_CAMS(FALSE,FALSE)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehMission)
TASK_LEAVE_VEHICLE(PLAYER_PED_ID(),vehMission)
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
SET_WIDESCREEN_BORDERS(FALSE,0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
CONTROL_FADE_IN(500)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
CLEAR_PRINTS()
PRINTSTRING("quad cut end")
IF DOES_CAM_EXIST(camMain)
DESTROY_CAM(camMain)
ENDIF
icutsceneprog = 0
SET_WIDESCREEN_BORDERS(FALSE,0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
SET_TIME_SCALE(1.0)
DISPLAY_RADAR(TRUE)
IF IS_PLAYER_PLAYING(PLAYER_ID())
SET_PLAYER_CONTROL (PLAYER_ID(), TRUE)
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[0])
DELETE_VEHICLE(vehDocks[0])
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[1])
DELETE_VEHICLE(vehDocks[1])
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[2])
DELETE_VEHICLE(vehDocks[2])
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[3])
DELETE_VEHICLE(vehDocks[3])
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[4])
DELETE_VEHICLE(vehDocks[4])
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(BIFF)
SET_MODEL_AS_NO_LONGER_NEEDED(FORKLIFT)
TASK_USE_MOBILE_PHONE(PLAYER_PED_ID(),FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
DISPLAY_HUD(TRUE)
DISABLE_CELLPHONE(FALSE)
//SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER (CHAR_RON, "TXT_PHOTO3", TXTMSG_UNLOCKED)
CLEAR_PRINTS()
KILL_ANY_CONVERSATION()
CLEAR_HELP()
HIDE_ACTIVE_PHONE(FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
KILL_ANY_CONVERSATION()
brunfailchecks = FALSE
bcutsceneplaying = FALSE
ENDIF
BREAK
ENDSWITCH
ENDWHILE
ENDPROC
PROC CLEAR_UP_EVENTS_AFTER_WALK_AND_TALK()
IF NOT IS_PED_INJURED(pedFloyd)
CLEAR_PED_TASKS(pedFloyd)
CLEAR_PED_ALTERNATE_WALK_ANIM(pedFloyd)
CLEAR_PED_ALTERNATE_WALK_ANIM(PLAYER_PED_ID())
ENDIF
IF bSetPiece[SS_STATIC_GANTRY_GUYS] = TRUE
bSetPiece[SS_STATIC_GANTRY_GUYS] = FALSE
ENDIF
IF bSetPiece[SS_ARRIVE_AT_DOCKS] = TRUE
bSetPiece[SS_ARRIVE_AT_DOCKS] = FALSE
ENDIF
IF bSetPiece[SS_FLOYD_GRABS_PACKAGE] = TRUE
bSetPiece[SS_FLOYD_GRABS_PACKAGE] = FALSE
ENDIF
IF bSetPiece[SS_GANTRY_GUYS] = TRUE
bSetPiece[SS_GANTRY_GUYS] = FALSE
ENDIF
IF bSetPiece[SS_dock_workers_on_pipe] = TRUE
bSetPiece[SS_dock_workers_on_pipe] = FALSE
ENDIF
IF bSetPiece[Ss_dock_workers_talking] = TRUE
bSetPiece[Ss_dock_workers_talking] = FALSE
ENDIF
IF bSetPiece[SS_guys_around_car] = TRUE
bSetPiece[SS_guys_around_car] = FALSE
ENDIF
REPEAT COUNT_OF(s_sv_car_to_admire) iCount
CLEAN_UP_SETPIECE_VEHILCE(s_sv_car_to_admire[iCount],TRUE,FALSE)
ENDREPEAT
REPEAT COUNT_OF(s_sp_dock_workers_on_pipe) iCount
CLEAN_UP_SETPIECE_PED(s_sp_dock_workers_on_pipe[iCount],TRUE,FALSE)
ENDREPEAT
REPEAT COUNT_OF(s_sp_dock_workers_talking) iCount
CLEAN_UP_SETPIECE_PED(s_sp_dock_workers_talking[iCount],TRUE,FALSE)
ENDREPEAT
REPEAT COUNT_OF(s_sp_floyd_grabs_package) iCount
CLEAN_UP_SETPIECE_PED(s_sp_floyd_grabs_package[iCount],TRUE,FALSE)
ENDREPEAT
REPEAT COUNT_OF(s_sp_guys_around_car) iCount
CLEAN_UP_SETPIECE_PED(s_sp_guys_around_car[iCount],TRUE,FALSE)
ENDREPEAT
REPEAT COUNT_OF(s_sp_gantry_guys_dynamic) iCount
CLEAN_UP_SETPIECE_PED(s_sp_gantry_guys_dynamic[iCount],TRUE,FALSE)
ENDREPEAT
REPEAT COUNT_OF(s_sp_gantry_guys_static) iCount
CLEAN_UP_SETPIECE_PED(s_sp_gantry_guys_static[iCount],TRUE,FALSE)
ENDREPEAT
REMOVE_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
REMOVE_ANIM_DICT("missdocksshowoffcar@idle_a")
REMOVE_ANIM_DICT("missdocksshowoffcar@idle_b")
REMOVE_ANIM_DICT("missdocksshowoffcar@base")
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@main_action")
REQUEST_ANIM_DICT("missheistdockssetup1ig_14")
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,FALSE)
ENDIF
ENDPROC
INT ipedDockWorker13Timer
INT iAmbientDialogueTimerDock3
INT iAmbientDialogueTimerDock4
PROC MANAGE_DOCK_WORKER_AMBIENT_DIALOGUE()
//WELDER {dock 1 sees Floyd}
IF DOES_ENTITY_EXIST(s_sp_welder[0].ped)
IF NOT IS_PED_INJURED(s_sp_welder[0].ped)
IF NOT IS_PED_INJURED(pedFloyd)
IF MANAGE_MY_TIMER(iAmbientDialogueTimer, GET_RANDOM_INT_IN_RANGE(8000,10000))
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(pedFloyd),GET_ENTITY_COORDS(s_sp_welder[0].ped)) < 10
IF NOT IS_PED_INJURED(s_sp_welder[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_welder[0].ped,"DH1_CRAA","DOCKWORKER1",SPEECH_PARAMS_FORCE_NORMAL)
iAmbientDialogueTimer = GET_GAME_TIMER()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//PED ON PHONE - {dock 3 is on the phone} - 1
IF DOES_ENTITY_EXIST(pedDockWorker[5])
IF NOT IS_PED_INJURED(pedDockWorker[5])
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(pedDockWorker[5])) < 10
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CUAA")
IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[5])
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedDockWorker[5],"DH1_CUAA","DS1DOCKW3",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CUAA",TRUE)
PRINTSTRING("DH1_CUAA")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CUAB")
IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[5])
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedDockWorker[5],"DH1_CUAB","DS1DOCKW3",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CUAB",TRUE)
PRINTSTRING("DH1_CUAB")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CUAC")
IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[5])
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedDockWorker[5],"DH1_CUAC","DS1DOCKW3",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CUAC",TRUE)
PRINTSTRING("DH1_CUAC")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CUAD")
IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[5])
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedDockWorker[5],"DH1_CUAD","DS1DOCKW3",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CUAD",TRUE)
PRINTSTRING("DH1_CUAD")PRINTNL()
iAmbientDialogueTimerDock3 = GET_GAME_TIMER()
ENDIF
ELSE
IF MANAGE_MY_TIMER(iAmbientDialogueTimerDock3, GET_RANDOM_INT_IN_RANGE(8000,15000))
SET_LABEL_AS_TRIGGERED("DH1_CUAD",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_CUAC",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_CUAB",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_CUAA",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//WORKING ON PIPE
IF DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[0].ped)
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
AND NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(s_sp_dock_workers_on_pipe[0].ped)) < 10
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAA")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[0].ped,"DH1_CYAA","DS1DOCKW4",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAA",TRUE)
PRINTSTRING("DH1_CYAA")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAB")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[1].ped,"DH1_CYAB","DS1DOCKW5",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAB",TRUE)
PRINTSTRING("DH1_CYAB")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAC")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[1].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[0].ped,"DH1_CYAC","DS1DOCKW4",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAC",TRUE)
PRINTSTRING("DH1_CYAC")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAD")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[2].ped,"DH1_CYAD","DS1DOCKW6",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAD",TRUE)
PRINTSTRING("DH1_CYAD")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAE")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[2].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[0].ped,"DH1_CYAE","DS1DOCKW4",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAE",TRUE)
PRINTSTRING("DH1_CYAE")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAF")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[2].ped,"DH1_CYAF","DS1DOCKW6",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAF",TRUE)
PRINTSTRING("DH1_CYAF")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAG")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[2].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[0].ped,"DH1_CYAG","DS1DOCKW4",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAG",TRUE)
PRINTSTRING("DH1_CYAG")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAH")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[2].ped,"DH1_CYAH","DS1DOCKW6",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAH",TRUE)
PRINTSTRING("DH1_CYAH")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAI")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[2].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[1].ped,"DH1_CYAI","DS1DOCKW5",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAI",TRUE)
PRINTSTRING("DH1_CYAI")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CYAJ")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_dock_workers_on_pipe[1].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_dock_workers_on_pipe[0].ped,"DH1_CYAJ","DS1DOCKW4",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_CYAJ",TRUE)
PRINTSTRING("DH1_CYAJ")PRINTNL()
iAmbientDialogueTimerDock4 = GET_GAME_TIMER()
ENDIF
ELSE
IF MANAGE_MY_TIMER(iAmbientDialogueTimerDock4, GET_RANDOM_INT_IN_RANGE(8000,15000))
SET_LABEL_AS_TRIGGERED("DH1_CYAJ",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAI",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAH",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAF",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAE",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAD",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAC",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAB",TRUE)
SET_LABEL_AS_TRIGGERED("DH1_CYAA",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//PED SMOKING - {dock4 sees Trevor}
IF DOES_ENTITY_EXIST(pedDockWorker[7])
IF NOT IS_PED_INJURED(pedDockWorker[7])
IF MANAGE_MY_TIMER(iAmbientDialogueTimer, GET_RANDOM_INT_IN_RANGE(8000,10000))
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(pedDockWorker[7])) < 10
//TASK_TURN_PED_TO_FACE_ENTITY(pedDockWorker[7],PLAYER_PED_ID())
TASK_LOOK_AT_ENTITY(pedDockWorker[7],PLAYER_PED_ID(),5000)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedDockWorker[7],"DH1_CZAA","DS1DOCKW4",SPEECH_PARAMS_FORCE)
iAmbientDialogueTimer = GET_GAME_TIMER()
PRINTSTRING("DH1_CZAA")PRINTNL()
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[0].ped)
AND DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[1].ped)
AND DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[2].ped)
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[0].ped)
AND NOT IS_PED_INJURED(s_sp_floyd_grabs_package[1].ped)
AND NOT IS_PED_INJURED(s_sp_floyd_grabs_package[2].ped)
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(s_sp_floyd_grabs_package[0].ped)) < 10
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_COAA")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_floyd_grabs_package[0].ped,"DH1_COAA","DS1DOCKWORKER1",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_COAA",TRUE)
PRINTSTRING("DH1_COAA")PRINTNL()
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_COAB")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[1].ped)
AND NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[0].ped)
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[1].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_floyd_grabs_package[1].ped,"DH1_COAB","DS1DOCKW2",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_COAB",TRUE)
PRINTSTRING("DH1_COAB")PRINTNL()
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_COAC")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[0].ped)
AND NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[1].ped)
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_floyd_grabs_package[0].ped,"DH1_COAC","DS1DOCKWORKER1",SPEECH_PARAMS_FORCE)
SET_LABEL_AS_TRIGGERED("DH1_COAC",TRUE)
PRINTSTRING("DH1_COAC")PRINTNL()
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_COAD")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[1].ped)
AND NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[0].ped)
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[1].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_floyd_grabs_package[1].ped,"DH1_COAD","DS1DOCKW2",SPEECH_PARAMS_FORCE)
ipedDockWorker13Timer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("DH1_COAD",TRUE)
PRINTSTRING("DH1_COAD")PRINTNL()
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_COAE")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[0].ped)
AND NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[1].ped)
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[0].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_floyd_grabs_package[0].ped,"DH1_COAE","DS1DOCKWORKER1",SPEECH_PARAMS_FORCE)
ipedDockWorker13Timer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("DH1_COAE",TRUE)
PRINTSTRING("DH1_COAE")PRINTNL()
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_COAF")
IF NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[1].ped)
AND NOT IS_AMBIENT_SPEECH_PLAYING(s_sp_floyd_grabs_package[0].ped)
IF NOT IS_PED_INJURED(s_sp_floyd_grabs_package[1].ped)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(s_sp_floyd_grabs_package[1].ped,"DH1_COAF","DS1DOCKW2",SPEECH_PARAMS_FORCE)
ipedDockWorker13Timer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("DH1_COAF",TRUE)
PRINTSTRING("DH1_COAF")PRINTNL()
ENDIF
ENDIF
ELSE
IF MANAGE_MY_TIMER(ipedDockWorker13Timer, 25000)
SET_LABEL_AS_TRIGGERED("DH1_COAA",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_COAB",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_COAC",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_COAD",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_COAE",FALSE)
SET_LABEL_AS_TRIGGERED("DH1_COAF",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//PED IN LOADING AREA - {dock 3 sees T and F}
IF DOES_ENTITY_EXIST(pedDockWorker[13])
IF NOT IS_PED_INJURED(pedDockWorker[13])
IF eMissionStage = MISSION_STAGE_5
IF bCarryingContainer = TRUE
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehHandler),GET_ENTITY_COORDS(pedDockWorker[13])) < 15
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(pedDockWorker[13])) < 8
IF MANAGE_MY_TIMER(iAmbientDialogueTimer, GET_RANDOM_INT_IN_RANGE(8000,12000))
IF NOT IS_PED_INJURED(pedDockWorker[13])
TASK_TURN_PED_TO_FACE_ENTITY(pedDockWorker[13],PLAYER_PED_ID())
TASK_LOOK_AT_ENTITY(pedDockWorker[13],PLAYER_PED_ID(),5000)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedDockWorker[13],"DH1_AYAA","SUPERVISOR2",SPEECH_PARAMS_FORCE)
iAmbientDialogueTimer = GET_GAME_TIMER()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehHandler),GET_ENTITY_COORDS(pedDockWorker[13])) < 15
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(pedDockWorker[13])) < 12
IF MANAGE_MY_TIMER(iAmbientDialogueTimer, GET_RANDOM_INT_IN_RANGE(8000,12000))
IF NOT IS_PED_INJURED(pedDockWorker[13])
TASK_TURN_PED_TO_FACE_ENTITY(pedDockWorker[13],PLAYER_PED_ID())
TASK_LOOK_AT_ENTITY(pedDockWorker[13],PLAYER_PED_ID(),5000)
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedDockWorker[13],"DH1_AZAA","SUPERVISOR2",SPEECH_PARAMS_FORCE)
iAmbientDialogueTimer = GET_GAME_TIMER()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
//NO LONGER ON PHONE
// IF DOES_ENTITY_EXIST(pedDockWorker[13])
// IF NOT IS_PED_INJURED(pedDockWorker[13])
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(pedDockWorker[13])) < 15
// IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CVAA")
// IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[13])
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(pedDockWorker[13],"DH1_CVAA","DS1DOCKW3","SPEECH_PARAMS_FORCE")
// SET_LABEL_AS_TRIGGERED("DH1_CVAA",TRUE)
// ENDIF
// ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CVAB")
// IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[13])
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(pedDockWorker[13],"DH1_CVAB","DS1DOCKW3","SPEECH_PARAMS_FORCE")
// SET_LABEL_AS_TRIGGERED("DH1_CVAB",TRUE)
// ENDIF
// ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CVAC")
// IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[13])
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(pedDockWorker[13],"DH1_CVAC","DS1DOCKW3","SPEECH_PARAMS_FORCE")
// SET_LABEL_AS_TRIGGERED("DH1_CVAC",TRUE)
// ENDIF
// ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_CVAD")
// IF NOT IS_AMBIENT_SPEECH_PLAYING(pedDockWorker[13])
// PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(pedDockWorker[13],"DH1_CVAD","DS1DOCKW3","SPEECH_PARAMS_FORCE")
// ipedDockWorker13Timer = GET_GAME_TIMER()
// SET_LABEL_AS_TRIGGERED("DH1_CVAD",TRUE)
// ENDIF
// ELSE
// IF MANAGE_MY_TIMER(ipedDockWorker13Timer, 15000)
// SET_LABEL_AS_TRIGGERED("DH1_CVAA",FALSE)
// SET_LABEL_AS_TRIGGERED("DH1_CVAB",FALSE)
// SET_LABEL_AS_TRIGGERED("DH1_CVAC",FALSE)
// SET_LABEL_AS_TRIGGERED("DH1_CVAD",FALSE)
// ENDIF
// ENDIF
// ENDIF
// ENDIF
// ENDIF
// ENDIF
// ENDIF
// ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC IS_PED_IN_DOCKS_AREA()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<85.606041,-2512.530273,4.390195>>, <<-78.482826,-2401.053223,18.251068>>, 76.000000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<15.037971,-2537.353271,4.401426>>, <<-230.935333,-2374.307129,21.569214>>, 76.000000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<65.696030,-2539.073730,4.405972>>, <<12.275644,-2502.675293,18.257154>>, 22.750000)
ENDIF
ENDPROC
PROC SET_CUTSCENE_PED_COMPONENT_VARIATIONS(STRING strCutsceneName)
INT iNameHash = GET_HASH_KEY(strCutsceneName)
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
IF iNameHash = HASH("LSDH_INT")
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", PLAYER_PED_ID())
IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[0])
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Floyd", g_sTriggerSceneAssets.ped[0])
PRINTSTRING("SETTING g_sTriggerSceneAssets.ped[0] variations")PRINTNL()
ENDIF
IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[1])
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Wade", g_sTriggerSceneAssets.ped[1])
PRINTSTRING("SETTING g_sTriggerSceneAssets.ped[1] variations")PRINTNL()
ENDIF
IF DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(pedFloyd)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Floyd", pedFloyd)
PRINTSTRING("SETTING pedFloyd variations")PRINTNL()
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Wade", pedWade)
PRINTSTRING("SETTING pedWade variations")PRINTNL()
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
INT iTrevorComponentSwitch
PED_INDEX pedTrevor
ENTITY_INDEX entity_trevor
INT iLegText
INT iLegDraw
PROC MANAGE_TREVOR_COMPONENT_SWITCH()
PRINTSTRING("iTrevorComponentSwitch: ")PRINTINT(iTrevorComponentSwitch)PRINTNL()
SWITCH iTrevorComponentSwitch
CASE 0
IF IS_CUTSCENE_PLAYING()
IF NOT DOES_ENTITY_EXIST(pedTrevor)
entity_trevor = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Trevor")
IF DOES_ENTITY_EXIST(entity_trevor)
pedTrevor = GET_PED_INDEX_FROM_ENTITY_INDEX(entity_trevor)
ENDIF
ELSE
iTrevorComponentSwitch ++
ENDIF
ENDIF
BREAK
CASE 1
iLegDraw = GET_PED_DRAWABLE_VARIATION(pedTrevor, PED_COMP_LEG)
iLegText = GET_PED_TEXTURE_VARIATION(pedTrevor, PED_COMP_LEG)
PRINTSTRING("Saving -iLegDraw:")PRINTINT(iLegDraw)PRINTNL()
PRINTSTRING("Saving -iLegText:")PRINTINT(iLegText)PRINTNL()
SET_PED_PRELOAD_VARIATION_DATA(pedTrevor,PED_COMP_LEG, 25, 0)
//SET_PED_PRELOAD_VARIATION_DATA(pedTrevor,PED_COMP_LEG, iLegDraw, iLegText)
iTrevorComponentSwitch ++
BREAK
CASE 2
IF GET_CUTSCENE_TIME() > 54435
IF HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(pedTrevor)
SET_PED_COMPONENT_VARIATION(pedTrevor, PED_COMP_LEG, 25, 0)
SET_PED_PRELOAD_VARIATION_DATA(pedTrevor,PED_COMP_LEG, iLegDraw, iLegText)
iTrevorComponentSwitch ++
ENDIF
ENDIF
BREAK
CASE 3
IF GET_CUTSCENE_TIME() > 76453
IF HAS_PED_PRELOAD_VARIATION_DATA_FINISHED(pedTrevor)
PRINTSTRING("Restoring -iLegDraw:")PRINTINT(iLegDraw)PRINTNL()
PRINTSTRING("Restoring -iLegText:")PRINTINT(iLegText)PRINTNL()
SET_PED_COMPONENT_VARIATION(pedTrevor, PED_COMP_LEG, iLegDraw, iLegText)
iTrevorComponentSwitch ++
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
/// PURPOSE:
/// Play the into mocap
PROC OPENING_CUTSCENE()
bcutsceneplaying = TRUE
#IF IS_DEBUG_BUILD
IF IS_CUTSCENE_ACTIVE()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
STOP_CUTSCENE()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
ENDIF
#ENDIF
#IF NOT IS_JAPANESE_BUILD
MANAGE_TREVOR_COMPONENT_SWITCH()
#ENDIF
IF GET_CURRENT_PLAYER_PED_ENUM() != CHAR_TREVOR
SET_CURRENT_SELECTOR_PED(SELECTOR_PED_TREVOR)
ENDIF
IF e_section_stage = SECTION_STAGE_SETUP
IF b_is_jumping_directly_to_stage
CONTROL_FADE_IN(500)
b_is_jumping_directly_to_stage = FALSE
ELSE
IF i_current_event = 0
PRINTSTRING("PLAYING OPENING CUTSCENE - 1")PRINTNL()
//SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0,"Opening Mocap")
bcutsceneplaying = TRUE
IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[0])
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.ped[0],TRUE,TRUE)
pedFloyd = g_sTriggerSceneAssets.ped[0]
ENDIF
IF NOT IS_PED_INJURED(g_sTriggerSceneAssets.ped[1])
SET_ENTITY_AS_MISSION_ENTITY(g_sTriggerSceneAssets.ped[1],TRUE,TRUE)
pedWade = g_sTriggerSceneAssets.ped[1]
ENDIF
IF IS_VEHICLE_DRIVEABLE(veh_pre_mission_car)
ENDIF
IF IS_REPEAT_PLAY_ACTIVE()
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_FLOYD, vfloydStart, ffloydStart )
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_WADE, vWadeStart, fWadeStart )
WAIT(0)
ENDWHILE
ENDIF
REQUEST_MODEL(GET_PLAYER_VEH_MODEL(CHAR_TREVOR, VEHICLE_TYPE_CAR))
PRINTSTRING("REQUEST_CUTSCENE(LSDH_INT)")PRINTNL()
//REMOVE_CUTSCENE()
REQUEST_CUTSCENE("LSDH_INT")
SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_TREVOR)
bClearCutscenArea = FALSE
i_current_event++
ELIF i_current_event = 1
//Bug 1839805 Need to check for CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()returning true for repeat play.
IF NOT IS_REPEAT_PLAY_ACTIVE()
OR CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
PRINTSTRING("CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() - TRUE")PRINTNL()
//Components
IF IS_REPEAT_PLAY_ACTIVE()
SET_PED_DEFAULT_COMPONENT_VARIATION(PLAYER_PED_ID())
ELSE
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Trevor", PLAYER_PED_ID())
ENDIF
IF IS_REPEAT_PLAY_ACTIVE()
IF NOT IS_PED_INJURED(pedFloyd)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Floyd", pedFloyd)
PRINTSTRING("SETTING default Floyd variations")PRINTNL()
ENDIF
ELSE
IF NOT IS_PED_INJURED(pedFloyd)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Floyd", pedFloyd)
PRINTSTRING("SETTING g_sTriggerSceneAssets.ped[0] variations")PRINTNL()
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedWade)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Wade", pedWade)
PRINTSTRING("SETTING g_sTriggerSceneAssets.ped[1] variations")PRINTNL()
ENDIF
i_current_event++
ELSE
PRINTSTRING("CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() - FALSE")PRINTNL()
ENDIF
ELIF i_current_event = 2
IF HAS_CUTSCENE_LOADED()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ELSE
WAIT(0)
ENDIF
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
IF NOT IS_PED_INJURED(pedWade)
REGISTER_ENTITY_FOR_CUTSCENE(pedWade, "Wade", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
REGISTER_ENTITY_FOR_CUTSCENE(pedFloyd, "Floyd", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
// IF IS_VEHICLE_DRIVEABLE(vehMission)
// REGISTER_ENTITY_FOR_CUTSCENE(vehMission, "Trevors_Lorry", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IS_CASCADE_SHADOW_FOCUS_ENTITY_DURING_EXIT)
// ENDIF
//1987148 - Turn off TV subtitles during the cutscene. NOTE: it should be fine to not reset this, as by default subtitles should be off and
//the TV/cinema scripts turn them back on when needed. Resetting it to TRUE could potentially cause more issues.
ENABLE_MOVIE_SUBTITLES(FALSE)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
SET_CUTSCENE_FADE_VALUES(FALSE,FALSE,FALSE,FALSE)
START_CUTSCENE()
MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_HEIST_DOCKS_1)
PRINTSTRING("PLAYING OPENING CUTSCENE - 2")PRINTNL()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
iTrevorComponentSwitch = 0
b_skipped_mocap = FALSE
e_section_stage = SECTION_STAGE_RUNNING
ELSE
PRINTSTRING("CUTSCENE LOADING")PRINTNL()
ENDIF
ENDIF
ENDIF
ENDIF
IF e_section_stage = SECTION_STAGE_RUNNING
IF NOT b_skipped_mocap
IF IS_CUTSCENE_SKIP_BUTTON_PRESSED()
//b_skipped_mocap = TRUE
ENDIF
ENDIF
IF IS_CUTSCENE_PLAYING()
IF bClearCutscenArea = FALSE
IF IS_REPEAT_PLAY_ACTIVE()
CONTROL_FADE_IN(500)
ENDIF
//Move the last vehicle somewhere if it's in the way.
veh_pre_mission_car = GET_PLAYERS_LAST_VEHICLE()
DISABLE_VEHICLE_GEN_ON_MISSION(TRUE)
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<1187,-1398,4.3>>, 10)
DELETE_VEHICLE_GEN_VEHICLE(VEHGEN_TREVOR_SAVEHOUSE_CITY)
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-1167.186768,-1506.043579,2.992951>>, <<-1146.530762,-1533.760376,6.597246>>, 9.000000,<<-1187.1825, -1491.1740, 3.3797>>, 304.3311,<<5,5,3>>)
//RESOLVE_VEHICLES_AT_MISSION_TRIGGER(<<-1161.9291, -1525.1603, 3.2477>>, 35.1845,FALSE)
//1396587
//RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<-1167.186768,-1506.043579,2.992951>>, <<-1146.530762,-1533.760376,6.597246>>, 9.000000,<<-1187.1825, -1491.1740, 3.3797>>, 304.3311 )
CLEAR_AREA(<< -1154.6117, -1520.0699, 3.3456 >>, 200.0, TRUE)
DELETE_ALL_SCRIPT_CREATED_PLAYER_VEHICLES(CHAR_TREVOR)
STOP_GAMEPLAY_HINT(TRUE)
SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE(FALSE)
bClearCutscenArea = TRUE
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("TOD SWITCH")
IF GET_CUTSCENE_TIME() >= 111300
SET_CLOCK_TIME(6,00,00)
MANAGE_PLAYER_OUTFIT()
SET_LABEL_AS_TRIGGERED("TOD SWITCH",TRUE)
ENDIF
ENDIF
ENDIF
IF bClearCutscenArea = TRUE
PRINTSTRING("RUNNING OPENING CUTSCENE - 3")PRINTNL()
SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK, << -1155.02, -1522.81, 3.3397 >> ,38.40 )
IF NOT DOES_ENTITY_EXIST(pedWade)
ENTITY_INDEX entity_wade = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Wade")
IF DOES_ENTITY_EXIST(entity_wade)
pedWade = GET_PED_INDEX_FROM_ENTITY_INDEX(entity_wade)
ENDIF
ENDIF
IF NOT DOES_ENTITY_EXIST(pedFloyd)
ENTITY_INDEX entity_floyd = GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Floyd_Wades_Cousin")
IF DOES_ENTITY_EXIST(entity_floyd)
pedFloyd = GET_PED_INDEX_FROM_ENTITY_INDEX(entity_floyd)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("LSDH_INT CAMERA EXIT")
// IF CAN_SET_EXIT_STATE_FOR_CAMERA()
// PRINTSTRING("CAN_SET_EXIT_STATE_FOR_CAMERA")PRINTNL()
// SET_LABEL_AS_TRIGGERED("LSDH_INT - CAMERA EXIT",TRUE)
// ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("LSDH_INT TREVOR EXIT")
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(),PCF_ForceDirectEntry,TRUE)
IF IS_VEHICLE_DRIVEABLE(vehMission)
TASK_ENTER_VEHICLE(PLAYER_PED_ID(),vehMission,DEFAULT_TIME_NEVER_WARP,VS_DRIVER,PEDMOVEBLENDRATIO_WALK,ECF_BLOCK_SEAT_SHUFFLING)
ENDIF
//FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_ON_FOOT_WALK, FALSE, FAUS_CUTSCENE_EXIT)
//SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 1000, 115.3521, FALSE)
PRINTSTRING("CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY(Trevor)")PRINTNL()
SET_LABEL_AS_TRIGGERED("LSDH_INT TREVOR EXIT",TRUE)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Floyd")
IF DOES_ENTITY_EXIST(pedFloyd)
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_SCREEN_FADED_OUT()
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HAIR, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_LEG, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_HAND, 1, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_FEET, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_SPECIAL, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_DECL, 0, 0)
SET_PED_COMPONENT_VARIATION(pedFloyd, PED_COMP_JBIB, 0, 0)
ENDIF
FORCE_PED_MOTION_STATE(pedFloyd, MS_ON_FOOT_WALK, TRUE, FAUS_CUTSCENE_EXIT)
PRINTSTRING("CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY Floyd")PRINTNL()
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Wade")
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
IF IS_SCREEN_FADED_OUT()
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HEAD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HAIR, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_TORSO, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_LEG, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HAND, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_FEET, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_SPECIAL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_DECL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_JBIB, 0, 0)
ENDIF
FORCE_PED_MOTION_STATE(pedWade, MS_ON_FOOT_WALK, TRUE, FAUS_CUTSCENE_EXIT)
PRINTSTRING("CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY Wade")PRINTNL()
ENDIF
ENDIF
ENDIF
IF HAS_CUTSCENE_FINISHED()
AND bClearCutscenArea = TRUE
e_section_stage = SECTION_STAGE_CLEANUP
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF IS_CUTSCENE_ACTIVE()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
STOP_CUTSCENE()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
ENDIF
#ENDIF
ENDIF
IF e_section_stage = SECTION_STAGE_CLEANUP
IF b_skipped_mocap
REPLAY_CANCEL_EVENT()
//If the player skipped the mocap the peds need to be warped.
STOP_CUTSCENE()
//Make sure necessary assets get made.
IF NOT IS_SCREEN_FADING_OUT()
OR NOT IS_SCREEN_FADED_OUT()
CONTROL_FADE_OUT(500)
ENDIF
IF IS_SCREEN_FADING_OUT()
OR IS_SCREEN_FADED_OUT()
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
ENDIF
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
//Make sure necessary assets get made.
WHILE NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_FLOYD, vfloydStart, ffloydStart )
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_WADE, vWadeStart, fWadeStart )
OR NOT SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_TREVORS_TRUCK, << -1155.02, -1522.81, 3.3397 >> ,38.40 )
WAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
IF IS_VEHICLE_SEAT_FREE(vehMission)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehMission)
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(pedFloyd)
IF IS_VEHICLE_SEAT_FREE(vehMission,VS_FRONT_RIGHT)
SET_ENTITY_COORDS(pedFloyd,vfloydStart)
SET_ENTITY_HEADING(pedFloyd, ffloydStart)
SET_PED_INTO_VEHICLE(pedFloyd,vehMission,VS_FRONT_RIGHT)
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(pedWade)
IF IS_VEHICLE_SEAT_FREE(vehMission,VS_BACK_LEFT)
SET_ENTITY_COORDS(pedWade, vfloydStart)
SET_PED_INTO_VEHICLE(pedWade,vehMission,VS_BACK_LEFT)
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehMission)
//SET_VEHICLE_ON_GROUND_PROPERLY(vehMission)
ENDIF
ENDIF
IF NOT IS_ENTITY_DEAD(vehMission)
SET_VEHICLE_AUTOMATICALLY_ATTACHES(vehMission,FALSE)
SET_VEHICLE_DISABLE_TOWING(vehMission,TRUE)
ENDIF
ENDIF
REPLAY_STOP_EVENT()
//Setup buddy relationship groups etc.
INFORM_MISSION_STATS_SYSTEM_OF_INGAME_CUTSCENE_END()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
i_current_event = 0
PRINTSTRING("JUMPING TO STAGE 1")
eMissionStage = MISSION_STAGE_1
e_section_stage = SECTION_STAGE_SETUP
SET_PLAYER_CAN_CHANGE_CLOTHES_ON_MISSION(FALSE)
SET_VEHICLE_POPULATION_BUDGET(3)
SET_PED_POPULATION_BUDGET(3)
bcutsceneplaying = FALSE
ENDIF
IF e_section_stage = SECTION_STAGE_SKIP
STOP_CUTSCENE()
b_skipped_mocap = TRUE
e_section_stage = SECTION_STAGE_RUNNING
ENDIF
ENDPROC
PROC MAKE_THE_SECURITY_GUARD_WHEN_NEAR_TO_THE_DOCKS()
IF NOT HAS_LABEL_BEEN_TRIGGERED("CREATE DOCKS SECURITY")
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),vDocks) < 100
SETUP_MISSION_REQUIREMENT(REQ_SECURITY)
REQUEST_ANIM_DICT("misslsdhs")
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
REQUEST_ANIM_DICT("misslsdhsclipboard@base")
REQUEST_MODEL(P_CS_Clipboard)
REQUEST_MODEL(PROP_PENCIL_01)
IF HAS_ANIM_DICT_LOADED("misslsdhs")
AND HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
AND HAS_ANIM_DICT_LOADED("misslsdhsclipboard@base")
AND HAS_MODEL_LOADED(P_CS_Clipboard)
AND HAS_MODEL_LOADED(PROP_PENCIL_01)
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT DOES_ENTITY_EXIST(objClipboard[0])
objClipboard[0] = CREATE_OBJECT(P_CS_CLIPBOARD,vDocks)
ELSE
IF NOT DOES_ENTITY_EXIST(objPencil[0])
objPencil[0] = CREATE_OBJECT(PROP_PENCIL_01,vDocks)
ELSE
IF DOES_ENTITY_EXIST(pedSecurity)
IF NOT IS_PED_INJURED(pedSecurity)
CLEAR_ALL_PED_PROPS(pedSecurity)
ATTACH_ENTITY_TO_ENTITY(objPencil[0],pedSecurity,GET_PED_BONE_INDEX(pedSecurity, BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>,TRUE,TRUE)
ATTACH_ENTITY_TO_ENTITY(objClipboard[0],pedSecurity,GET_PED_BONE_INDEX(pedSecurity, BONETAG_PH_L_HAND),<<0,0,0>>,<<0,0,0>>,TRUE,TRUE,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(objClipboard[0],pedSecurity,TRUE)
TASK_PLAY_ANIM(pedSecurity,"misslsdhsclipboard@base", "base",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING |AF_USE_KINEMATIC_PHYSICS)
ADD_PED_FOR_DIALOGUE(sSpeech, 1, pedSecurity, "GATEGUARD")
SET_RAGDOLL_BLOCKING_FLAGS(pedSecurity,RBF_PLAYER_IMPACT)
SET_PED_CAN_EVASIVE_DIVE(pedSecurity,FALSE)
SET_LABEL_AS_TRIGGERED("CREATE DOCKS SECURITY",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
//PURPOSE: Drive to the Docks with floyd
PROC MISSION_STAGE_1_PROC()
CREATE_THE_DOCKS_STUFF()
MAKE_THE_SECURITY_GUARD_WHEN_NEAR_TO_THE_DOCKS()
SWITCH iProgress
CASE 0//Create objective specific items- print objective, add blips etc
IF SETUP_PEDS_FOR_DIALOGUE()
AND SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_FLOYD, vfloydStart, ffloydStart )
AND SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_WADE, vWadeStart, fWadeStart )
DISABLE_VEHICLE_GEN_ON_MISSION(TRUE)
bDialogue = FALSE
iMissionDialogue = 0
//SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Drive to the docks")
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
bIsJumpingDirectlyToStage = FALSE
INITALISE_ARRAYS()
bWaveIn = FALSE
// SET_BIT (BitSet_CellphoneDisplay, g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE)
bDialogue = FALSE
bGodText = FALSE
SETTIMERA(0)
g_bDocksBackGatesIgnoreTrevorsUniform = TRUE
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(P_CUT_DOOR_02,<<-63.19, -2519.27, 7.79>>,TRUE,0,0,0)
REPLAY_RECORD_BACK_FOR_TIME(0.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
IF IS_SCREEN_FADED_OUT()
IF NOT HAS_LABEL_BEEN_TRIGGERED("TOD SWITCH")
SET_CLOCK_TIME(6,00,00)
SET_LABEL_AS_TRIGGERED("TOD SWITCH",TRUE)
ENDIF
//LOAD_SCENE(<<-1156.5227, -1523.5519, 3.3044>>)
IF IS_VEHICLE_DRIVEABLE(vehMission)
// SET_ENTITY_COORDS(vehMission,<<-1155.32, -1522.79, 4.27>>)
// SET_ENTITY_HEADING(vehMission,38.40)
// SET_VEHICLE_ON_GROUND_PROPERLY(vehMission)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF GET_FOLLOW_PED_CAM_VIEW_MODE() != CAM_VIEW_MODE_FIRST_PERSON
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-1156.5227, -1523.5519, 3.3044>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),306.1213)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-1156.8860, -1524.1942, 3.2833>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),313.4019)
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_WALK, 100)
ENDIF
// IF NOT IS_PED_SITTING_IN_VEHICLE_SEAT(PLAYER_PED_ID(),vehMission,VS_DRIVER)
// SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehMission,VS_DRIVER)
// ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
IF NOT IS_PED_SITTING_IN_VEHICLE_SEAT(pedFloyd,vehMission,VS_FRONT_RIGHT)
SET_PED_INTO_VEHICLE(pedFloyd,vehMission,VS_FRONT_RIGHT)
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedWade)
IF NOT IS_PED_SITTING_IN_VEHICLE_SEAT(pedWade,vehMission,VS_BACK_LEFT)
SET_PED_INTO_VEHICLE(pedWade,vehMission,VS_BACK_LEFT)
ENDIF
ENDIF
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
IF IS_THIS_TV_ON(TV_LOC_TREVOR_VENICE)
FORCE_STOP_TV(TV_LOC_TREVOR_VENICE)
ENDIF
ENDIF
iProgress = 99
ENDIF
BREAK
//CLEAR PRINTS CHECK ANIM REQUESTS AND SET UP SECURITY GUY
CASE 99
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM, BUILDINGSTATE_DESTROYED)
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM_CUTSCENE, BUILDINGSTATE_NORMAL)
ADD_SCENARIO_BLOCKING_AREA(<<18.380921,-2524.460205,10.000374>>,<<10.180921,-2534.460205,4.800374>>)
CLEAR_AREA(vDocks,40,TRUE)
//LOCK GATE
UNREGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_DOCKS_FRONT_GATE_OUT,PLAYER_PED_ID())
DOOR_SYSTEM_SET_HOLD_OPEN(g_sAutoDoorData[AUTODOOR_DOCKS_FRONT_GATE_OUT].doorID, FALSE)
DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[AUTODOOR_DOCKS_FRONT_GATE_OUT].doorID, 0.0)
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_DOCKS_FRONT_GATE_OUT].doorID,DOORSTATE_LOCKED)
INIT_STAGE()
DISABLE_VEHICLE_GEN_ON_MISSION(FALSE)
bGoToSpeach = FALSE
iProgress = 1
BREAK
//HAS THE PLAYER ARRIVED AT THE DOCKS
CASE 1
IF IS_SCREEN_FADED_OUT()
AND NOT IS_SCREEN_FADING_IN()
DO_SCREEN_FADE_IN(500)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_DRIVE_START")
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
START_AUDIO_SCENE("DH_1_DRIVE_START")
SET_LABEL_AS_TRIGGERED("DH_1_DRIVE_START",TRUE)
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_DRIVE_APPROACH_DOCKS")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<352.884644,-2391.758301,8.183699>>, <<351.202393,-2238.528809,12.798820>>, 29.000000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<369.152985,-2225.729980,9.336354>>, <<342.831940,-2223.622803,27.368328>>, 86.500000)
IF IS_AUDIO_SCENE_ACTIVE("DH_1_DRIVE_START")
STOP_AUDIO_SCENE("DH_1_DRIVE_START")
ELSE
START_AUDIO_SCENE("DH_1_DRIVE_APPROACH_DOCKS")
SET_LABEL_AS_TRIGGERED("DH_1_DRIVE_APPROACH_DOCKS",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("TURN OFF RAGDOLL")
IF NOT IS_PED_INJURED(pedWade)
IF IS_PED_SITTING_IN_VEHICLE_SEAT(pedWade,vehMission,VS_BACK_LEFT)
SET_RAGDOLL_BLOCKING_FLAGS(pedWade,RBF_NONE)
SET_PED_CAN_RAGDOLL(pedWade,TRUE)
SET_LABEL_AS_TRIGGERED("TURN OFF RAGDOLL",TRUE)
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vDocks,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,TRUE,pedFloyd,pedWade,NULL,vehMission,"AW_GO_DOCKS","AW_DONT_LEAVE_T","AW_DONT_LEAVE_W","","AW_PICK_UP_B","AW_YTREVTRU","AW_GETBACK_IN",FALSE,TRUE,TRUE)
REPLAY_RECORD_BACK_FOR_TIME(10.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
bGodText = FALSE
bGoToSpeach = FALSE
KILL_ANY_CONVERSATION()
iProgress++
ELSE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
IF HAS_LABEL_BEEN_TRIGGERED("DS1_01b")
SET_LABEL_AS_TRIGGERED("DS1_01b",FALSE)
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
SET_PED_CAN_RAGDOLL(pedFloyd,TRUE)
ENDIF
IF NOT IS_PED_INJURED(pedWade)
SET_PED_CAN_RAGDOLL(pedWade,TRUE)
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_YTREVTRU")
CLEAR_PRINTS()
ENDIF
//DS1_00b
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF bGoToSpeach = FALSE
IF SETUP_PEDS_FOR_DIALOGUE()
IF GET_FAILS_COUNT_TOTAL_FOR_THIS_MISSION_SCRIPT() = 0
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_01", CONV_PRIORITY_MEDIUM)
bGoToSpeach = TRUE
ENDIF
ELSE
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_01", CONV_PRIORITY_MEDIUM)
bGoToSpeach = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<11.943290,-2544.413086,4.799920>>, <<23.731033,-2528.028809,8.649944>>, 22.250000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<11.943290,-2544.413086,4.799920>>, <<23.731033,-2528.028809,8.649944>>, 22.250000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(),<<10.628066,-2533.844971,7.540140>>, <<32.967224,-2550.335449,19.500061>>, 16.000000)
IF bWaveIn = FALSE
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
IF HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
IF NOT IS_PED_INJURED(pedSecurity)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL,PLAYER_PED_ID(),-1)
//TASK_TURN_PED_TO_FACE_ENTITY(NULL,PLAYER_PED_ID())
TASK_PLAY_ANIM(NULL,"misslsdhs", "reaction_to_truck",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT | AF_USE_KINEMATIC_PHYSICS)
TASK_PLAY_ANIM(NULL,"misslsdhs", "wave_truck",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT | AF_USE_KINEMATIC_PHYSICS)
TASK_PLAY_ANIM(NULL,"misslsdhsclipboard@idle_a", "idle_a",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING | AF_USE_KINEMATIC_PHYSICS)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedSecurity, seqMain)
bWaveIn = TRUE
ENDIF
ENDIF
ENDIF
BRING_VEHICLE_TO_HALT(vehMission,11.0,1)
bGodText = FALSE
REQUEST_IPL("Talklaugh_Pipe")
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
KILL_FACE_TO_FACE_CONVERSATION()
iProgress++
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_01b")
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) > 0
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_01b", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_01b",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_00")
IF DOES_BLIP_EXIST(sLocatesData.vehicleBlip)
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_00", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_00",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//MANAGE PAUSE DIALOGUE
IF bGoToSpeach = TRUE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
IF IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(FALSE)
CLEAR_PRINTS()
ENDIF
//Play conversation
ELSE
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(TRUE)
CLEAR_PRINTS()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_02")
IF SETUP_PEDS_FOR_DIALOGUE()
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_02", CONV_PRIORITY_HIGH)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_02",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
IF IS_ENTITY_PLAYING_ANIM(PLAYER_PED_ID(),"misslsdhs", "reaction_from_truck_fds")
STOP_ANIM_TASK(PLAYER_PED_ID(),"misslsdhs", "reaction_from_truck_fds")
ENDIF
ENDIF
ENDIF
// IF NOT IS_PED_INJURED(pedWade)
// OPEN_SEQUENCE_TASK(seqMain)
// TASK_PLAY_ANIM(NULL,"misslsdhs", "reaction_from_truck_rds",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT)
// CLOSE_SEQUENCE_TASK(seqMain)
// TASK_PERFORM_SEQUENCE(pedWade, seqMain)
// ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL,"misslsdhs", "reaction_from_truck_fps",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd, seqMain)
ENDIF
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL,"misslsdhs", "reaction_from_truck_fds",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT|AF_SECONDARY|AF_UPPERBODY)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), seqMain)
ENDIF
bSetPiece[SS_dock_workers_on_pipe] = TRUE
bSetPiece[SS_guys_around_car] = TRUE
bSetPiece[SS_STATIC_GANTRY_GUYS] = TRUE
REMOVE_ANIM_DICT("misslsdhs")
REMOVE_ANIM_DICT("misslsdhsclipboard@idle_a")
REMOVE_ANIM_DICT("misslsdhsclipboard@base")
g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
iProgress++
ENDIF
BREAK
CASE 3
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
IF IS_ENTITY_PLAYING_ANIM(PLAYER_PED_ID(),"misslsdhs", "reaction_from_truck_fds")
STOP_ANIM_TASK(PLAYER_PED_ID(),"misslsdhs", "reaction_from_truck_fds")
ENDIF
ENDIF
ENDIF
IF PRE_STREAM_MISSION_STAGE()
IF NOT IS_PED_INJURED(pedFloyd)
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(pedFloyd)
ENDIF
IF NOT IS_PED_INJURED(pedWade)
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(pedWade)
ENDIF
RESET_MISSION_STAGE_VARIABLES()
CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED(PLAYER_ID())
ADVANCE_MISSION_STAGE()
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC MANAGE_GATE_SECURITY_GUY()
SWITCH iGateSecurityGuy
CASE 0
IF NOT IS_PED_INJURED(pedSecurity)
REQUEST_ANIM_DICT("misslsdhs")
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
iGateSecurityGuy ++
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(pedSecurity)
IF HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
AND HAS_ANIM_DICT_LOADED("misslsdhs")
IF GET_SCRIPT_TASK_STATUS(pedSecurity,SCRIPT_TASK_PERFORM_SEQUENCE) != PERFORMING_TASK
iSecurityTimer = GET_GAME_TIMER()
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF NOT IS_PED_INJURED(pedSecurity)
IF MANAGE_MY_TIMER(iSecurityTimer,1000)
IF IS_ENTITY_PLAYING_ANIM(pedSecurity,"misslsdhsclipboard@idle_a", "idle_a")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<6.580805,-2543.854736,5.050115>>, <<19.957510,-2525.047852,6.009008>>, 20.000000)
REQUEST_ANIM_DICT("misslsdhs")
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
IF HAS_ANIM_DICT_LOADED("misslsdhs")
AND HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
IF NOT IS_PED_INJURED(pedSecurity)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL,PLAYER_PED_ID(),-1)
TASK_PLAY_ANIM(NULL,"misslsdhs", "reaction_to_truck",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT | AF_USE_KINEMATIC_PHYSICS)
TASK_PLAY_ANIM(NULL,"misslsdhs", "wave_truck",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT | AF_USE_KINEMATIC_PHYSICS)
TASK_PLAY_ANIM(NULL,"misslsdhsclipboard@idle_a", "idle_a",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_LOOPING | AF_USE_KINEMATIC_PHYSICS)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedSecurity, seqMain)
iGateSecurityGuy ++
ENDIF
ENDIF
ENDIF
ELSE
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
IF HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
IF NOT IS_PED_INJURED(pedSecurity)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL,"misslsdhsclipboard@idle_a", "idle_a",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_LOOPING | AF_USE_KINEMATIC_PHYSICS)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedSecurity, seqMain)
iGateSecurityGuy ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
INT iGetOutTimer
INT iWarningTimer
//PURPOSE: Player parks up and get's changed
PROC MISSION_STAGE_2_PROC()
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_02b")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-39.359322,-2382.808838,4.250790>>, <<-130.746674,-2514.060303,14.204694>>, 83.000000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-291.898834,-2400.596191,4.250148>>, <<-124.852646,-2449.263184,7.767045>>, 144.000000)
IF GET_RANDOM_BOOL()
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_02b", CONV_PRIORITY_MEDIUM)
iWarningTimer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("DS1_02b",TRUE)
ENDIF
ELSE
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_38", CONV_PRIORITY_MEDIUM)
iWarningTimer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("DS1_38",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF MANAGE_MY_TIMER(iWarningTimer,GET_RANDOM_INT_IN_RANGE(12000,22000))
SET_LABEL_AS_TRIGGERED("DS1_02b",FALSE)
ENDIF
ENDIF
IF iProgress > 2
IF MANAGE_MY_TIMER(iGetOutTimer,4000)
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission, FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
TASK_LEAVE_VEHICLE(PLAYER_PED_ID(),vehMission)
ENDIF
ENDIF
ENDIF
ENDIF
MANAGE_GATE_SECURITY_GUY()
CREATE_THE_DOCKS_STUFF()
IF iProgress > 4
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
IF WOULD_ENTITY_BE_OCCLUDED(IG_WADE,GET_ENTITY_COORDS(pedWade))
OR NOT IS_ENTITY_ON_SCREEN(pedWade)
DELETE_PED(pedWade)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_WADE)
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
IF IS_ENTITY_PLAYING_ANIM(PLAYER_PED_ID(),"misslsdhs", "reaction_from_truck_fds")
STOP_ANIM_TASK(PLAYER_PED_ID(),"misslsdhs", "reaction_from_truck_fds")
ENDIF
ENDIF
ENDIF
IF iProgress > 1
DISABLE_CELLPHONE(TRUE)
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),0.5)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_FOLLOW_FLOYD_START")
IF IS_AUDIO_SCENE_ACTIVE("DH_1_DRIVE_APPROACH_DOCKS")
STOP_AUDIO_SCENE("DH_1_DRIVE_APPROACH_DOCKS")
ELSE
START_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_START")
SET_LABEL_AS_TRIGGERED("DH_1_FOLLOW_FLOYD_START",TRUE)
ENDIF
ENDIF
ENDIF
//PRINTSTRING("s_sp_supervisor1[0].i_event")PRINTINT(s_sp_supervisor1[0].i_event)//PRINTNL()
SWITCH iProgress
CASE 0//Create objective specific items- print objective, add blips etc
IF SETUP_PEDS_FOR_DIALOGUE()
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
IF NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedFloyd)
AND NOT HAVE_ALL_STREAMING_REQUESTS_COMPLETED(pedWade)
WAIT(0)
ENDIF
ENDIF
IF IS_SCREEN_FADED_OUT()
iGateSecurityGuy = 0
ENDIF
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Park up")
bSetPiece[SS_dock_workers_on_pipe] = TRUE
bSetPiece[SS_STATIC_GANTRY_GUYS] = TRUE
bSetPiece[SS_guys_around_car] = TRUE
bSetPiece[SS_GANTRY_GUYS] = TRUE
iMissionDialogue = 2
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
REQUEST_IPL("pcranecont")
g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(P_CUT_DOOR_02,<<-63.19, -2519.27, 7.79>>,TRUE,0,0,0)
bIsJumpingDirectlyToStage = FALSE
INIT_STAGE()
// SET_VEHICLE_POPULATION_BUDGET(2)
// SET_PED_POPULATION_BUDGET(2)
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
IF bWaveIn = FALSE
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
REQUEST_ANIM_DICT("misslsdhs")
IF HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
AND HAS_ANIM_DICT_LOADED("misslsdhs")
IF NOT IS_PED_INJURED(pedSecurity)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL,"misslsdhs", "wave_truck",REALLY_SLOW_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT| AF_USE_KINEMATIC_PHYSICS)
TASK_PLAY_ANIM(NULL,"misslsdhs", "reaction_to_truck",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT| AF_USE_KINEMATIC_PHYSICS)
TASK_PLAY_ANIM(NULL,"misslsdhsclipboard@idle_a", "idle_a",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT| AF_USE_KINEMATIC_PHYSICS)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedSecurity, seqMain)
bWaveIn = TRUE
ENDIF
ENDIF
ENDIF
iProgress++
ENDIF
BREAK
CASE 1
IF IS_PLAYER_AT_LOCATION_WITH_BUDDIES_IN_VEHICLE(sLocatesData,vParkUpHere,<<0.001,0.001,LOCATE_SIZE_HEIGHT>>,TRUE,pedFloyd,pedWade,NULL,vehMission,"AW_GO_PARK","AW_DONT_LEAVE_T","AW_DONT_LEAVE_W","","AW_PICK_UP_B","AW_DOCK1","AW_GETBACK_IN",FALSE,FALSE)
bSetPiece[SS_ARRIVE_AT_DOCKS] = TRUE
bGodText = FALSE
bDialogue = FALSE
KILL_ANY_CONVERSATION()
REMOVE_BLIP(sLocatesData.LocationBlip)
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@start_idle")
iGetOutTimer = GET_GAME_TIMER()
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE,SPC_LEAVE_CAMERA_CONTROL_ON)
iProgress++
ELSE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
IF (IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-70.137924,-2523.794189,4.010104>>, <<-56.489647,-2533.662354,9.010103>>, 7.500000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-60.260574,-2528.604736,4.010104>>, <<-55.287464,-2531.858643,9.010103>>, 11.500000))
AND CAN_PLAYER_START_CUTSCENE(TRUE,TRUE)
IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehMission,5,-1)
bSetPiece[SS_ARRIVE_AT_DOCKS] = TRUE
bGodText = FALSE
bDialogue = FALSE
KILL_ANY_CONVERSATION()
REMOVE_BLIP(sLocatesData.LocationBlip)
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@start_idle")
iGetOutTimer = GET_GAME_TIMER()
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE,SPC_LEAVE_CAMERA_CONTROL_ON)
iProgress++
ENDIF
ENDIF
ENDIF
IF bClearTasks = FALSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1.572346,-2541.401611,4.841759>>, <<14.998902,-2521.360352,6.507655>>, 2.250000)
OR NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
CLEAR_PED_TASKS(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(pedFloyd)
CLEAR_PED_TASKS(pedFloyd)
ENDIF
IF NOT IS_PED_INJURED(pedWade)
CLEAR_PED_TASKS(pedWade)
ENDIF
bClearTasks = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF IS_VEHICLE_DRIVEABLE(vehMission)
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1@start_idle")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_2_p1@start_idle")
IF SETUP_PEDS_FOR_DIALOGUE()
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(P_CUT_DOOR_02,<<-63.19, -2519.27, 7.79>>,FALSE,0,0,0)
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_GO_PARK")
CLEAR_PRINTS()
ENDIF
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_PED_INJURED(pedWade)
SET_PED_CONFIG_FLAG(pedWade,PCF_DisablePedAvoidance,TRUE)
ENDIF
CLEAR_PED_TASKS(PLAYER_PED_ID())
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(),PCF_AllowPlayerToInterruptVehicleEntryExit,TRUE)
IF IS_VEHICLE_DRIVEABLE(vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission, FALSE)
ENDIF
IF NOT IS_PED_INJURED(pedWade)
IF NOT IS_PED_INJURED(pedFloyd)
REMOVE_PED_FROM_GROUP(pedFloyd)
SET_PED_CAN_RAGDOLL(pedFloyd,FALSE)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LEAVE_ANY_VEHICLE(NULL,1000)
TASK_LOOK_AT_ENTITY(NULL,pedWade,3000)
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_VEHICLE_ROUGHLY_FACING_THIS_DIRECTION(vehMission,238.3604,60)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,<<-62.05, -2524.82, 6.01>>,1.0,DEFAULT_TIME_BEFORE_WARP, 0.1, ENAV_DEFAULT | ENAV_NO_STOPPING)
ENDIF
ENDIF
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,v_ss_floyd[SS_ARRIVE_AT_DOCKS],1.0,DEFAULT_TIME_BEFORE_WARP, 0.1, ENAV_STOP_EXACTLY,f_ss_floyd[SS_ARRIVE_AT_DOCKS])
TASK_PLAY_ANIM(NULL,"missheistdockssetup1ig_2_p1@start_idle", "supervisor_exitdoor_startidle_floyd",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_USE_KINEMATIC_PHYSICS| AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
ENDIF
IF NOT IS_PED_INJURED(pedWade)
REMOVE_PED_FROM_GROUP(pedWade)
SET_PED_CAN_RAGDOLL(pedWade,FALSE)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LEAVE_ANY_VEHICLE(NULL)
TASK_LOOK_AT_ENTITY(NULL,pedFloyd,3000)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,<<-58.30, -2525.55, 6.16>>,1.0,DEFAULT_TIME_BEFORE_WARP, 0.1, ENAV_DEFAULT | ENAV_NO_STOPPING )
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,v_ss_wade[SS_ARRIVE_AT_DOCKS],1.0,DEFAULT_TIME_BEFORE_WARP, 0.1, ENAV_STOP_EXACTLY,f_ss_wade[SS_ARRIVE_AT_DOCKS])
TASK_PLAY_ANIM(NULL,"missheistdockssetup1ig_2_p1@start_idle", "supervisor_exitdoor_startidle_wade",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_USE_KINEMATIC_PHYSICS| AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedWade,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
ENDIF
ENDIF
SAFE_ADD_BLIP_PED(dest_blip,pedFloyd,TRUE)
IF NOT IS_PED_INJURED(pedFloyd)
TASK_LOOK_AT_ENTITY(PLAYER_PED_ID(),pedFloyd,-1)
ENDIF
iTimer = GET_GAME_TIMER()
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2222054
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_02a")
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_02a", CONV_PRIORITY_MEDIUM)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 7.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_02a",TRUE)
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF NOT IS_PED_INJURED(pedFloyd)
AND NOT IS_PED_INJURED(pedWade)
IF NOT IS_PED_IN_VEHICLE(pedFloyd,vehMission)
AND NOT IS_PED_IN_VEHICLE(pedWade,vehMission)
IF NOT IS_PED_INJURED(pedWade)
SET_RAGDOLL_BLOCKING_FLAGS(pedWade,RBF_PLAYER_IMPACT)
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
SET_RAGDOLL_BLOCKING_FLAGS(pedFloyd,RBF_PLAYER_IMPACT)
ENDIF
bGodText = FALSE
bDialogue = FALSE
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(),PCF_AllowPlayerToInterruptVehicleEntryExit,FALSE)
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
CASE 4
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2222054
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
IF MANAGE_MY_TIMER(iTimer,4000)
PRINTSTRING("SLOWING PEDS DOWN")PRINTNL()
IF NOT IS_PED_INJURED(pedWade)
SET_PED_MAX_MOVE_BLEND_RATIO(pedWade,1.0)
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
SET_PED_MAX_MOVE_BLEND_RATIO(pedFloyd,1.0)
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
ENDIF
IF s_sp_supervisor1[0].i_event > 3
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission, FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
TASK_LEAVE_VEHICLE(PLAYER_PED_ID(),vehMission)
ENDIF
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
IF NOT IS_PED_INJURED(pedFloyd)
TASK_LOOK_AT_ENTITY(pedFloyd,PLAYER_PED_ID(),-1,SLF_WHILE_NOT_IN_FOV,SLF_LOOKAT_MEDIUM)
ENDIF
IF NOT IS_PED_INJURED(pedWade)
SET_PED_CONFIG_FLAG(pedWade,PCF_DisablePedAvoidance,FALSE)
ENDIF
REMOVE_ANIM_DICT("missheistdockssetup1ig_2_p1@start_idle")
SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(P_CUT_DOOR_02,<<-63.19, -2519.27, 7.79>>,TRUE,0,0,0)
bSetPiece[Ss_dock_workers_talking] = TRUE
bSetPiece[SS_blackwater_with_dockworker] = TRUE
bSetPiece[SS_WELDER] = TRUE
bDialogue = FALSE
bClearText = FALSE
bGodText = FALSE
iProgress++
ENDIF
BREAK
CASE 5
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2222054
IF IS_VEHICLE_DRIVEABLE(vehMission)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission, FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
TASK_LEAVE_VEHICLE(PLAYER_PED_ID(),vehMission)
ELSE
IF PRE_STREAM_MISSION_STAGE()
RESET_MISSION_STAGE_VARIABLES()
eMissionStage = MISSION_STAGE_4
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC MANAGE_RUBBER_BANDING(PED_INDEX ped, FLOAT fIdealDist, FLOAT fMinSpeed, FLOAT FMaxSpeed, FLOAT fCatchUp, STRING sWaypoint)
taskStatus = GET_SCRIPT_TASK_STATUS(ped, SCRIPT_TASK_FOLLOW_WAYPOINT_ROUTE)
IF NOT IS_PED_INJURED(ped)
IF taskStatus = PERFORMING_TASK
WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT(sWaypoint,GET_ENTITY_COORDS(ped),iWayTarget)
WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT(sWaypoint,GET_ENTITY_COORDS(PLAYER_PED_ID()),iWayPlayer)
WAYPOINT_RECORDING_GET_COORD(sWaypoint,iWayTarget,vDistTarget)
WAYPOINT_RECORDING_GET_COORD(sWaypoint,iWayPlayer,vDistPlayer)
fTargetDist = GET_DISTANCE_BETWEEN_COORDS(vDistTarget,GET_ENTITY_COORDS(ped))
fPlayerDist = GET_DISTANCE_BETWEEN_COORDS(vDistTarget,GET_ENTITY_COORDS(PLAYER_PED_ID()))
IF iWayPlayer > iWayTarget
OR fPlayerDist < fTargetDist
IF fThisSpeed < fCatchUp
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(ped)
fThisSpeed = fThisSpeed + 0.1
WAYPOINT_PLAYBACK_OVERRIDE_SPEED(ped,fThisSpeed)
ENDIF
ELSE
WAYPOINT_PLAYBACK_OVERRIDE_SPEED(ped,fThisSpeed)
ENDIF
ELSE
FLOAT fDist = GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), ped)
IF fDist < fIdealDist
fSpeed = fMaxSpeed
ELSE
fSpeed = fMinSpeed
ENDIF
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(ped)
fThisSpeed = fSpeed
WAYPOINT_PLAYBACK_OVERRIDE_SPEED(ped,fSpeed)
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
// remove mission text
PROC REMOVE_MISSION_TEXT(BOOL bClearSpeech = TRUE, BOOL bClearGodText = TRUE, BOOL bClearHelpText = TRUE)
IF bClearSpeech
KILL_ANY_CONVERSATION()
ENDIF
IF bClearGodText
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR bClearSpeech
CLEAR_PRINTS()
ENDIF
CLEAR_REMINDER_MESSAGE()
ENDIF
IF bClearHelpText
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
ENDIF
ENDPROC
// do mission speech
FUNC BOOL DO_MISSION_SPEECH(STRING sStringSpeech, BOOL bSupercedeText = FALSE, INT iLine = 0, BOOL bFromSpecifiedLine = FALSE)
IF bSupercedeText OR NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF iLine = 0
RETURN CREATE_CONVERSATION(sSpeech,"D1AUD", sStringSpeech, CONV_PRIORITY_HIGH)
ELSE
TEXT_LABEL tLine
tLine = sStringSpeech
tLine+="_"
tLine+=iLine
IF NOT bFromSpecifiedLine
RETURN PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeech,"D1AUD", sStringSpeech, tLine, CONV_PRIORITY_HIGH)
ELSE
RETURN CREATE_CONVERSATION_FROM_SPECIFIC_LINE(sSpeech,"D1AUD", sStringSpeech, tLine, CONV_PRIORITY_HIGH)
ENDIF
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
// restore banter
FUNC BOOL RESTORE_CONVO()
IF bSavedConvo
//IF DO_MISSION_SPEECH(tSavedBanterRoot, FALSE, 23, TRUE)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINTLN("@@@@@@@@@@@@@@@@@ RESTORE_CONVO() ROOT: ", tSavedBanterRoot, " LINE: ", tResumeBanterLabel, " @@@@@@@@@@@@@@@@")
CREATE_CONVERSATION_FROM_SPECIFIC_LINE(sSpeech,"D1AUD", tSavedBanterRoot, tResumeBanterLabel, CONV_PRIORITY_HIGH)
RETURN TRUE
ENDIF
ELSE
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC STORE_CONVO()
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
TEXT_LABEL_23 tBanter = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
bSavedConvo = TRUE
tSavedBanterRoot = tBanter
tResumeBanterLabel = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
KILL_FACE_TO_FACE_CONVERSATION()
PRINTLN("@@@@@@@@@@@@@@@@@ STORE_CONVO() ROOT: ", tSavedBanterRoot, " LINE: ", tResumeBanterLabel, " @@@@@@@@@@@@@@@@")
ENDIF
ENDPROC
// lamar follow pavement
PROC DO_FLOYD_WALK_AND_TALK()
IF NOT IS_PED_INJURED(pedFloyd)
TASK_FOLLOW_WAYPOINT_RECORDING(pedFloyd, "floyddocks1", 0, EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS | EWAYPOINT_START_FROM_CLOSEST_POINT)
ENDIF
ENDPROC
PROC DO_WALK_AND_TALK_DIALOGUE()
IF NOT IS_PED_INJURED(pedFloyd)
IF NOT HAS_LABEL_BEEN_TRIGGERED("FLOYD SEEN BOAT")
IF IS_ENTITY_IN_ANGLED_AREA(pedFloyd, <<-101.658623,-2472.183105,4.021717>>, <<-98.129723,-2474.698730,8.271718>>, 2.250000)
SET_LABEL_AS_TRIGGERED("FLOYD SEEN BOAT",TRUE)
ENDIF
ENDIF
SWITCH iWalkAndTalk
CASE 0
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF SETUP_PEDS_FOR_DIALOGUE()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_04", CONV_PRIORITY_HIGH)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
iWalkAndTalk ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_05a", CONV_PRIORITY_HIGH)
iWalkAndTalk ++
ENDIF
ENDIF
BREAK
CASE 2
//PURPOSE: Wander around the docks - Land and air is fucked
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_05b")
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_05b", CONV_PRIORITY_HIGH)
SET_LABEL_AS_TRIGGERED("DS1_05b",TRUE)
ENDIF
ELSE
iWalkAndTalk = 4
ENDIF
ENDIF
BREAK
CASE 3
//SKIP FOR NOW
//PURPOSE: Wander around the docks - Whoa. Gotta keep your head on the swivel round here
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_05c", CONV_PRIORITY_HIGH)
iWalkAndTalk ++
ENDIF
ENDIF
BREAK
CASE 4
//PURPOSE: Wander around the docks - That's the freighter I told you about.
IF HAS_LABEL_BEEN_TRIGGERED("FLOYD SEEN BOAT")
IF REQUEST_AMBIENT_AUDIO_BANK("CREAK_V1")
IF NOT IS_AUDIO_SCENE_ACTIVE("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")
START_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")
ENDIF
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_06", CONV_PRIORITY_HIGH)
PLAY_SOUND_FROM_COORD(-1,"CREAK_01",<<-212.5920, -2375.6167, 16.3326>>,"DOCKS_HEIST_SETUP_SOUNDS")
iWalkAndTalk ++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//Merryweather
CASE 5
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater1Id)
OR IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater2Id)
OR IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater3Id)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_04b", CONV_PRIORITY_HIGH)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
TASK_LOOK_AT_ENTITY(pedFloyd, s_sp_blackwater_with_dockworker[0].ped,5000,SLF_WHILE_NOT_IN_FOV,SLF_LOOKAT_VERY_HIGH)
ENDIF
iWalkAndTalk ++
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDPROC
INT iRandHurryUp
CONST_FLOAT FLOYD_PAUSE_DIST 7.0
CONST_FLOAT FLOYD_UNPAUSE_DIST 3.2
PROC MANAGE_WALK_AND_TALK()
IF NOT IS_PED_INJURED(pedFloyd)
SET_PED_CAN_PLAY_GESTURE_ANIMS(PLAYER_PED_ID(),false)
SET_PED_CAN_PLAY_GESTURE_ANIMS(pedFloyd,false)
IF GET_ENTITY_SPEED(PLAYER_PED_ID()) < 1.2
OR IS_PED_RUNNING(PLAYER_PED_ID())
CLEAR_PED_SECONDARY_TASK(PLAYER_PED_ID())
PRINTLN("CLEAR SECONDARY PLAYER ANIMS")//PRINTNL()
ENDIF
IF GET_ENTITY_SPEED(pedFloyd) < 0.1
//OR GET_SCRIPT_TASK_STATUS(pedFloyd, SCRIPT_TASK_FOLLOW_WAYPOINT_ROUTE) = FINISHED_TASK
PRINTLN("CLEAR SECONDARY FLOYD ANIMS")//PRINTNL()
CLEAR_PED_SECONDARY_TASK(pedFloyd)
ENDIF
// force walk
IF GET_GAME_TIMER() <= iStageStartTime + 1500
//SET_PED_MIN_MOVE_BLEND_RATIO(pedFloyd,PEDMOVE_WALK)
ENDIF
IF GET_GAME_TIMER() <= iStageStartTime + 1000
//SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID() ,PEDMOVE_WALK)
ENDIF
IF bIncreaseFloydSpeed
fFloydWalkSpeed = fFloydWalkSpeed +@ 0.014
IF fFloydWalkSpeed > 1.08
fFloydWalkSpeed = 1.08
ENDIF
ENDIF
IF NOT bFloydWalkPaused
IF NOT IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(), pedFloyd, <<FLOYD_PAUSE_DIST, FLOYD_PAUSE_DIST, 4>>)
REQUEST_ANIM_DICT("missheistdockssetup1ig_8")
REQUEST_ANIM_DICT("MissHeistDocksSetup1")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_8")
AND HAS_ANIM_DICT_LOADED("MissHeistDocksSetup1")
CLEAR_SEQUENCE_TASK(seqMain)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL, PLAYER_PED_ID(), -1,SLF_WHILE_NOT_IN_FOV)
TASK_TURN_PED_TO_FACE_ENTITY(NULL, PLAYER_PED_ID(), -1)
iRandHurryUp = GET_RANDOM_INT_IN_RANGE(0,5)
IF iRandHurryUp = 0
TASK_PLAY_ANIM(NULL,"MissHeistDocksSetup1","Beckon")
ELIF iRandHurryUp = 1
TASK_PLAY_ANIM(NULL,"missheistdockssetup1ig_8","are_you_coming")
ELIF iRandHurryUp = 2
TASK_PLAY_ANIM(NULL,"missheistdockssetup1ig_8","Are_You_Gonna_Hurt")
ELIF iRandHurryUp = 3
TASK_PLAY_ANIM(NULL,"missheistdockssetup1ig_8","its_over_here_if")
ELIF iRandHurryUp = 4
TASK_PLAY_ANIM(NULL,"missheistdockssetup1ig_8","this_dont_make_me")
ENDIF
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd, seqMain)
CLEAR_PED_SECONDARY_TASK(pedFloyd)
CLEAR_PED_SECONDARY_TASK(PLAYER_PED_ID())
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
bKilledOnFootConversation = FALSE
bDoneHurrySpeech = FALSE
bSetAltAnim = FALSE
bFloydWalkPaused = TRUE
ENDIF
ELSE
DO_WALK_AND_TALK_DIALOGUE()
IF IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(), pedFloyd, <<FLOYD_PAUSE_DIST, FLOYD_UNPAUSE_DIST, 4>>)
bIncreaseFloydSpeed = TRUE
ENDIF
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), pedFloyd) < 1
PRINTLN("CONSTRAINING MOVESPEED")//PRINTNL()
SET_PED_MOVE_RATE_OVERRIDE(PLAYER_PED_ID(), 0.91)
ELSE
SET_PED_MOVE_RATE_OVERRIDE(PLAYER_PED_ID(), 0.94)
ENDIF
IF bSavedConvo
IF RESTORE_CONVO()
bSavedConvo = FALSE
bSetAltAnim = TRUE
ENDIF
ENDIF
IF bSetAltAnim = TRUE
// conversation anims
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
TEXT_LABEL_23 tCurrentLabel = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_LABEL()
//INT iLineNumber = GET_CURRENT_SCRIPTED_CONVERSATION_LINE()
PRINTSTRING("CURRENT LABEL: ")PRINTSTRING(tCurrentLabel)PRINTNL()
IF ARE_STRINGS_EQUAL(tCurrentLabel,"DS1_05a_1")
iLineMatch = 0
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_05a_3")
iLineMatch = 1
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_05b_1")
iLineMatch = 2
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_05b_13")
iLineMatch = 3
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_05b_11")
iLineMatch = 4
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_06_1")
iLineMatch = 5
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_06_8")
iLineMatch = 6
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_06_12")
iLineMatch = 7
ELIF ARE_STRINGS_EQUAL(tCurrentLabel, "DS1_06_15")
iLineMatch = 8
ENDIF
IF iLineMatch >= 0
IF NOT bDoneConversationAnim[iLineMatch]
STRING sTrevorLine
STRING sFloydLine
STRING sAnimDictionary
SWITCH iLineMatch
CASE 0
sTrevorLine = "you_ever_get_helicopters_trevor"
sFloydLine = "you_ever_get_helicopters_floyd"
sAnimDictionary = "missheistdockssetup1ig_2_p2"
BREAK
CASE 1
sTrevorLine = "now_this_is_restricted_trevor"
sFloydLine = "now_this_is_restricted_floyd"
sAnimDictionary = "missheistdockssetup1ig_2_p2"
BREAK
CASE 2
sTrevorLine = "how_is_a_man_trevor"
sFloydLine = "how_is_a_man_floyd"
sAnimDictionary = "missheistdockssetup1ig_2_p3"
BREAK
CASE 3
sTrevorLine = "i_just_said_they_trevor"
sFloydLine = "i_just_said_they_floyd"
sAnimDictionary = "missheistdockssetup1ig_2_p3"
BREAK
CASE 4
sTrevorLine = "maybe_ill_have_to_trevor"
sFloydLine = "maybe_ill_have_to_floyd"
sAnimDictionary = "missheistdockssetup1ig_2_p3"
BREAK
CASE 5
sTrevorLine = "thats_the_freighter_i_trevor"
sFloydLine = "thats_the_freighter_i_floyd"
sAnimDictionary = "missheistdockssetup1ig_7"
BREAK
CASE 6
sTrevorLine = "but_these_are_marked_trevor"
sFloydLine = "but_these_are_marked_floyd"
sAnimDictionary = "missheistdockssetup1ig_7"
BREAK
CASE 7
sTrevorLine = "the_government_stuff_is_floyd"
sFloydLine = "the_government_stuff_is_trevor"
sAnimDictionary = "missheistdockssetup1ig_7"
BREAK
CASE 8
sTrevorLine = "you_are_beginning_to_trevor"
sFloydLine = "you_are_beginning_to_floyd"
sAnimDictionary = "missheistdockssetup1ig_7"
BREAK
ENDSWITCH
IF bDoPlayerAnims
TASK_PLAY_ANIM(PLAYER_PED_ID(), sAnimDictionary, sTrevorLine, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_UPPERBODY|AF_SECONDARY|AF_TAG_SYNC_IN|AF_TAG_SYNC_OUT|AF_TAG_SYNC_CONTINUOUS)
TASK_PLAY_ANIM(pedfloyd, sAnimDictionary, sFloydLine, NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1, AF_UPPERBODY|AF_SECONDARY|AF_TAG_SYNC_IN|AF_TAG_SYNC_OUT|AF_TAG_SYNC_CONTINUOUS)
ENDIF
bDoneConversationAnim[iLineMatch] = TRUE
REMOVE_ANIM_DICT(sAnimDictionary)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF NOT bKilledOnFootConversation
STORE_CONVO()
bKilledOnFootConversation = TRUE
ENDIF
IF NOT bDoneHurrySpeech
IF iProgress > 5
IF GET_GAME_TIMER() >= iNextFloydHurrySpeechTime
IF NOT IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(TRUE)
ELSE
IF NOT IS_ANY_SPEECH_PLAYING(pedFloyd)
OR NOT IS_ANY_SPEECH_PLAYING(PLAYER_PED_ID())
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(pedFloyd,"DH1_CAAA","FLOYD",SPEECH_PARAMS_FORCE_SHOUTED)
PRINTSTRING("PLAY FLOYD HURRRY UP SPEECH")PRINTNL()
bDoneHurrySpeech = TRUE
iNextFloydHurrySpeechTime = GET_GAME_TIMER() + 10000
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF (IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(), pedFloyd, <<FLOYD_UNPAUSE_DIST, FLOYD_UNPAUSE_DIST, 4>>))
TASK_LOOK_AT_ENTITY(pedFloyd, PLAYER_PED_ID(), -1,SLF_WHILE_NOT_IN_FOV)
TASK_LOOK_AT_ENTITY(PLAYER_PED_ID(), pedFloyd, -1,SLF_DEFAULT)
IF IS_FACE_TO_FACE_CONVERSATION_PAUSED()
PAUSE_FACE_TO_FACE_CONVERSATION(FALSE)
CLEAR_PRINTS()
ELSE
DO_FLOYD_WALK_AND_TALK()
bKilledOnFootConversation = FALSE
bSetAltAnim = TRUE
bFloydWalkPaused = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
VECTOR vHandlerRot
PROC MANAGE_FLOYD_ATTACHMENT()
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_VEHICLE_ON_ALL_WHEELS(vehHandler)
vHandlerRot = GET_ENTITY_ROTATION(vehHandler)
IF vHandlerRot.x > 80
OR vHandlerRot.x < -80
IF IS_ENTITY_ATTACHED_TO_ENTITY(pedFloyd,vehHandler)
DETACH_ENTITY(pedFloyd)
SET_LABEL_AS_TRIGGERED("HANDLER NOT SAFE",TRUE)
ENDIF
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("HANDLER NOT SAFE",FALSE)
ENDIF
ENDIF
ENDPROC
INT iFloydTimer
//PURPOSE: Trevor follows floyd around the docks to the Forklift area
PROC MISSION_STAGE_4_PROC()
IF NOT DOES_ENTITY_EXIST(vehHandler)
SPAWN_VEHICLE(vehHandler,HANDLER,<<-129.77, -2418.28, 6.24>>,183.0850,-1,1.0,FALSE)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,FALSE)
SET_VEHICLE_COLOUR_COMBINATION(vehHandler,0)
SET_VEHICLE_AUTOMATICALLY_ATTACHES(vehHandler,FALSE)
FREEZE_ENTITY_POSITION(vehHandler,TRUE)
SET_VEHICLE_PROVIDES_COVER(vehHandler,FALSE)
ENDIF
IF bHitMarkToTriggerAudioSceneChange = FALSE
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_ENTITY_IN_ANGLED_AREA(pedFloyd, <<-89.282677,-2481.734375,1.273084>>, <<-91.874001,-2485.461670,10.770866>>, 2.250000)
PRINTSTRING("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")PRINTNL()
STOP_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_START")
START_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")
bHitMarkToTriggerAudioSceneChange = TRUE
ENDIF
ENDIF
ENDIF
IF iProgress > 6
AND iProgress < 12
IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-127.401070,-2416.403564,4.500676>>, <<-127.351868,-2418.019287,7.250676>>, 1.750000)
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),1.0)
ELSE
IF iProgress < 10
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),0.0)
ENDIF
ENDIF
ENDIF
IF iProgress > 0
AND iProgress < 7
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER)
ENDIF
//VECTOR vTemp
CREATE_THE_DOCKS_STUFF()
MANAGE_FLOYD_ATTACHMENT()
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
IF NOT IS_ENTITY_ON_SCREEN(pedWade)
DELETE_PED(pedWade)
SET_MODEL_AS_NO_LONGER_NEEDED(IG_WADE)
ENDIF
ENDIF
ENDIF
IF NOT bLockForklift
IF DOES_ENTITY_EXIST(vehHandler)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
AND IS_VEHICLE_DRIVEABLE(vehDocks[1])
SET_VEHICLE_DOORS_LOCKED(vehHandler,VEHICLELOCK_LOCKOUT_PLAYER_ONLY)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,FALSE)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehDocks[1],FALSE)
bLockForklift = TRUE
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_AIM)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK2)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(), FALSE)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
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_SPRINT)
ENDIF
ENDIF
IF iProgress > 4
AND iProgress < 7
MANAGE_WALK_AND_TALK()
ENDIF
IF iProgress > 2
IF bClearText = FALSE
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_FLOW_FLO")
IF MANAGE_MY_TIMER(iDialogueTimer,5000)
CLEAR_PRINTS()
bClearText = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
IF iProgress < 7
REQUEST_CLIP_SET("ANIM_GROUP_GESTURE_MISS_DocksSetup1")
IF HAS_ANIM_SET_LOADED("ANIM_GROUP_GESTURE_MISS_DocksSetup1")
SET_PED_GESTURE_GROUP(PLAYER_PED_ID(), "ANIM_GROUP_GESTURE_MISS_DocksSetup1")
IF NOT IS_PED_INJURED(pedFloyd)
SET_PED_GESTURE_GROUP(pedFloyd, "ANIM_GROUP_GESTURE_MISS_DocksSetup1")
ENDIF
ENDIF
ENDIF
SWITCH iProgress
CASE 0//Create objective specific items- print objective, add blips etc
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2222054
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(),pedFloyd,<<15,15,15>>)
SET_PED_MOVE_RATE_OVERRIDE(PLAYER_PED_ID(),0.8)
ENDIF
ENDIF
IF SETUP_PEDS_FOR_DIALOGUE()
IF IS_VEHICLE_DRIVEABLE(vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission, FALSE)
ENDIF
SAFE_ADD_BLIP_PED(dest_blip,pedFloyd,TRUE)
REQUEST_WAYPOINT_RECORDING("floyddocks1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks3")
REQUEST_VEHICLE_RECORDING(1,"AWDocks6")
bSetPiece[Ss_dock_workers_talking] = TRUE
bSetPiece[SS_blackwater_with_dockworker] = TRUE
bSetPiece[SS_GANTRY_GUYS] = TRUE
bSetPiece[SS_WELDER] = TRUE
bDoCatchUp = FALSE
bGodText = FALSE
bDialogue = FALSE
bLockForklift = FALSE
REQUEST_ANIM_DICT("missheistdockssetup1ig_2_p1b")
REQUEST_WAYPOINT_RECORDING("floyddocks1")
REQUEST_IPL("pcranecont")
iMissionDialogue = 3
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Follow Floyd")
iWalkAndTalk = 0
DISABLE_CELLPHONE(TRUE)
iStageStartTime = GET_GAME_TIMER()
bTriggerSetPiece[6] = FALSE
bTriggerSetPiece[5] = FALSE
bIsJumpingDirectlyToStage = FALSE
bHitMarkToTriggerAudioSceneChange = FALSE
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
SET_PED_PATH_CAN_USE_LADDERS(PLAYER_PED_ID(),FALSE)
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
iHandlerDialogueSwitch = 0
IF NOT IS_AUDIO_SCENE_ACTIVE("DH_1_FOLLOW_FLOYD_START")
START_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_START")
ENDIF
iProgress++
ENDIF
BREAK
CASE 1
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2222054
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(),pedFloyd,<<15,15,15>>)
SET_PED_MOVE_RATE_OVERRIDE(PLAYER_PED_ID(),0.8)
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(),pedFloyd,<<6,6,6>>)
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks6")
IF bTooFar = FALSE
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("AW_FLOW_FLO")
KILL_ANY_CONVERSATION()
PRINT_NOW("AW_FLOW_FLO",DEFAULT_GOD_TEXT_TIME,1)
ENDIF
bTooFar = TRUE
ENDIF
REMOVE_PED_FROM_GROUP(pedFloyd)
iDialogueTimer = GET_GAME_TIMER()
REQUEST_ANIM_DICT("missheistdockssetup1ig_4@main_action")
INIT_STAGE()
iProgress++
ENDIF
ELSE
IF bTooFar = FALSE
iDialogueTimer = GET_GAME_TIMER()
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("AW_FLOW_FLO")
KILL_ANY_CONVERSATION()
PRINT_NOW("AW_FLOW_FLO",DEFAULT_GOD_TEXT_TIME,1)
ENDIF
bTooFar = TRUE
ENDIF
// IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_36")
// IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
// IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
// IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_36", CONV_PRIORITY_MEDIUM) // {trevor wanders off}
// iDialogueTimer = GET_GAME_TIMER()
// SET_LABEL_AS_TRIGGERED("DS1_36", TRUE)
// ENDIF
// ENDIF
// ENDIF
// ELSE
// IF MANAGE_MY_TIMER(iDialogueTimer,GET_RANDOM_INT_IN_RANGE(10000,15000))
// SET_LABEL_AS_TRIGGERED("DS1_36", FALSE)
// ENDIF
// ENDIF
ENDIF
ENDIF
BREAK
CASE 2
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2222054
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_4@main_action")
IF GET_IS_WAYPOINT_RECORDING_LOADED("floyddocks1")
CLEAR_PED_TASKS(pedFloyd)
OPEN_SEQUENCE_TASK(seqMain)
TASK_FOLLOW_WAYPOINT_RECORDING(NULL, "floyddocks1", 0,EWAYPOINT_START_FROM_CLOSEST_POINT)//|EWAYPOINT_DO_NOT_RESPOND_TO_COLLISION_EVENTS)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
bSetAltAnim = TRUE
IF NOT IS_PED_INJURED(pedFloyd)
TASK_CLEAR_LOOK_AT(PLAYER_PED_ID())
ENDIF
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedFloyd,FALSE)
iProgress++
ENDIF
ENDIF
BREAK
CASE 3
IF IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(pedFloyd)
iProgress++
ENDIF
BREAK
CASE 4
IF SETUP_MISSION_REQUIREMENT(REQ_CRANE_CONTAINERS)
iProgress++
ENDIF
BREAK
CASE 5
IF GET_IS_WAYPOINT_RECORDING_LOADED("floyddocks1")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(1,"AWDocks3")
IF NOT IS_PED_INJURED(pedFloyd)
IF GET_IS_WAYPOINT_RECORDING_LOADED("floyddocks1")
REMOVE_PED_FROM_GROUP(pedFloyd)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(pedFloyd,FALSE)
bSetPiece[SS_FORKLIFT_SUPERVISOR_A] = TRUE
iProgress++
ENDIF
ENDIF
ELSE
REQUEST_WAYPOINT_RECORDING("floyddocks1")
REQUEST_VEHICLE_RECORDING(1,"AWDocks3")
ENDIF
BREAK
CASE 6
IF bSetPiece[SS_blackwater_with_dockworker] = FALSE
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<< -102.1558, -2475.9209, 5.0203 >>,<<3,3,3>>)
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@main_action")
bSetPiece[SS_blackwater_with_dockworker] = TRUE
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-121.87, -2425.34, 6.00>>,<<5,5,5>>)
AND IS_ENTITY_AT_COORD(pedFloyd, <<-121.87, -2425.34, 6.00>>,<<5,5,5>>)
bDoCatchUp = FALSE
KILL_ANY_CONVERSATION()
CLEAR_UP_EVENTS_AFTER_WALK_AND_TALK()
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
OPEN_SEQUENCE_TASK(seqMain)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-123.5851, -2422.3521, 5.0013>>,1.0,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_SUPPRESS_EXACT_STOP)
TASK_LOOK_AT_ENTITY(NULL,s_sp_forklift_supervisorA[0].ped,6000,SLF_WHILE_NOT_IN_FOV)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
ENDIF
CLEAR_PRINTS()
iProgress ++
ELSE
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-121.87, -2425.34, 6.00>>,<<10,10,10>>)
AND IS_ENTITY_AT_COORD(pedFloyd, <<-121.87, -2425.34, 6.00>>,<<5,5,5>>)
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
KILL_ANY_CONVERSATION()
CLEAR_UP_EVENTS_AFTER_WALK_AND_TALK()
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
OPEN_SEQUENCE_TASK(seqMain)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,<<-123.5851, -2422.3521, 5.0013>>,1.0,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_SUPPRESS_EXACT_STOP)
TASK_LOOK_AT_ENTITY(NULL,s_sp_forklift_supervisorA[0].ped,6000)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
ENDIF
CLEAR_PRINTS()
iProgress ++
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("ANIMATEFLOYD")
REQUEST_ANIM_DICT("MissHeistDocksSetup1")
IF NOT HAS_ANIM_DICT_LOADED("MissHeistDocksSetup1")
IF IS_ENTITY_AT_COORD(pedFloyd, <<-121.87, -2425.34, 6.00>>,<<5,5,5>>)
AND NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<<-121.87, -2425.34, 6.00>>,<<5,5,5>>)
CLEAR_SEQUENCE_TASK(seqMain)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL, PLAYER_PED_ID(), -1,SLF_WHILE_NOT_IN_FOV)
TASK_PLAY_ANIM(NULL,"MissHeistDocksSetup1","Beckon")
TASK_TURN_PED_TO_FACE_ENTITY(NULL, PLAYER_PED_ID(), -1)
TASK_PLAY_ANIM(NULL,"amb@dockworker@stand@idle_a", "idle_a",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd, seqMain)
SET_LABEL_AS_TRIGGERED("ANIMATEFLOYD",TRUE)
ENDIF
ENDIF
ELSE
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(), <<-121.87, -2425.34, 6.00>>,<<5,5,5>>)
CLEAR_PED_TASKS(pedFloyd)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 7
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@main_action")
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@start_idle")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_9@main_action")
AND HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_9@start_idle")
IF NOT IS_PED_INJURED(pedFloyd)
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL,pedFloyd,6000)
TASK_PLAY_ANIM(NULL, "missheistdockssetup1ig_9@main_action", "forklift_supervise_mainaction_supervisor",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1)
TASK_PLAY_ANIM(NULL, "missheistdockssetup1ig_9@start_idle", "forklift_supervise_idlea_supervisor",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING | AF_USE_KINEMATIC_PHYSICS,0,FALSE,AIK_NONE)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(s_sp_forklift_supervisorA[0].ped,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
SET_RAGDOLL_BLOCKING_FLAGS(s_sp_forklift_supervisorA[0].ped,RBF_PLAYER_IMPACT)
REMOVE_ANIM_DICT("missheistdockssetup1ig_9@main_action")
REMOVE_ANIM_DICT("missheistdockssetup1ig_9@start_idle")
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehDocks[1])
IF IS_VEHICLE_DRIVEABLE(vehDocks[1])
IF NOT IS_ENTITY_ON_SCREEN(vehDocks[1])
DELETE_VEHICLE(vehDocks[1])
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[12])
IF NOT IS_PED_INJURED(pedDockWorker[12])
IF NOT IS_ENTITY_ON_SCREEN(pedDockWorker[12])
DELETE_PED(pedDockWorker[12])
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_VEHICLE_DOORS_LOCKED(vehHandler,VEHICLELOCK_UNLOCKED)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,FALSE)
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
REMOVE_ANIM_SET("ANIM_GROUP_GESTURE_MISS_DocksSetup1")
// DISABLE_CELLPHONE(FALSE)
SET_PED_PATH_CAN_USE_LADDERS(PLAYER_PED_ID(),TRUE)
iProgress ++
ENDIF
BREAK
CASE 8
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_05e")
IF SETUP_PEDS_FOR_DIALOGUE()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_05e", CONV_PRIORITY_MEDIUM)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_05e",TRUE)
ENDIF
ENDIF
ELSE
iFloydTimer = GET_GAME_TIMER()
iProgress ++
ENDIF
BREAK
CASE 9
IF MANAGE_MY_TIMER(iFloydTimer,2000)
IF NOT HAS_LABEL_BEEN_TRIGGERED("TASK FLOYD")
SET_PED_STEERS_AROUND_VEHICLES(pedFloyd,FALSE)
IF NOT IS_PED_INJURED(pedFloyd)
OPEN_SEQUENCE_TASK(seqMain)
TASK_GO_STRAIGHT_TO_COORD(NULL, << -127.37, -2417.29, 5.54 >>,1.0,DEFAULT_TIME_BEFORE_WARP,88.64)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
REQUEST_ANIM_DICT("missheistdockssetup1ig_14")
SET_LABEL_AS_TRIGGERED("TASK FLOYD",TRUE)
ENDIF
ELSE
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_14")
IF IS_PED_READY_FOR_ANIM(pedFloyd, << -127.37, -2417.29, 5.94 >>, 97.5,<<0.2,0.2,2>>)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_climb_up", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT,NORMAL_BLEND_IN )
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,FALSE)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_PED_STEERS_AROUND_VEHICLES(pedFloyd,FALSE)
iProgress ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 10
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneHandlerA1) > 0.5
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_VEHICLE_DOORS_LOCKED(vehHandler,VEHICLELOCK_UNLOCKED)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,TRUE)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SAFE_ADD_BLIP_VEHICLE(veh_blip,vehHandler,TRUE)
ENDIF
iProgress ++
ENDIF
ENDIF
BREAK
CASE 11
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneHandlerA1) >= 1
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_VEHICLE_DOORS_LOCKED(vehHandler,VEHICLELOCK_UNLOCKED)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SAFE_ADD_BLIP_VEHICLE(veh_blip,vehHandler,TRUE)
ENDIF
IF PRE_STREAM_MISSION_STAGE()
SAFE_REMOVE_BLIP(dest_blip)
RESET_MISSION_STAGE_VARIABLES()
ADVANCE_MISSION_STAGE()
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC MANAGE_FLOYD_ACTIVITY()
IF NOT HAS_LABEL_BEEN_TRIGGERED("HANDLER NOT SAFE")
SWITCH iFloydHauler
//REQUESTS
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1ig_14")
IF eMissionStage = MISSION_STAGE_6
iFloydHauler = 6
ELSE
iFloydHauler ++
ENDIF
BREAK
//LETS GET GOING
CASE 1
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_14")
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_lets_get_going", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
iFloydHauler ++
ENDIF
ENDIF
ENDIF
BREAK
//GET TO THE CONTAINERS
CASE 2
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_14")
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneHandlerA1) = 1
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_get_to_the_containers", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
iFloydHauler ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//GENERAL IDLE
CASE 3
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_14")
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneHandlerA1) = 1
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_idle_base", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
SET_SYNCHRONIZED_SCENE_LOOPED(sceneHandlerA1,TRUE)
iFloydHauler ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//SPECIFIC EVENTS
CASE 4
IF NOT IS_PED_INJURED(pedFloyd)
IF eMissionStage != MISSION_STAGE_6
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF GET_DISTANCE_BETWEEN_ENTITIES(vehHandler,objHandlerContainer[0]) < 8
OR GET_DISTANCE_BETWEEN_ENTITIES(vehHandler,objHandlerContainer[1]) < 8
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_ok_now_grab_the_container", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
iFloydHauler = 3
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(vehHandler),<<-97.1716, -2459.1846, 5.0204>>) > 10
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_take_this_to_the_loading_area", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
iFloydHauler = 3
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
OR IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF NOT HAS_LABEL_BEEN_TRIGGERED("GOOD WORK")
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_good_work", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
SET_LABEL_AS_TRIGGERED("GOOD WORK",TRUE)
iFloydHauler = 3
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
AND IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF HAS_LABEL_BEEN_TRIGGERED("GOOD WORK")
IF NOT HAS_LABEL_BEEN_TRIGGERED("TASK COMPLETE")
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_task_complete", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
SET_LABEL_AS_TRIGGERED("TASK COMPLETE",TRUE)
iFloydHauler = 3
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF iProgress > 2
IF IS_VEHICLE_DRIVEABLE(vehHandler)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_climb_down", NORMAL_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
iFloydHauler = 5
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//ONCE FLOYD HAS LEFT THE HANDLER
CASE 5
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_14")
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneHandlerA1) = 1
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_PED_INJURED(pedFloyd)
SET_RAGDOLL_BLOCKING_FLAGS(pedFloyd,RBF_PLAYER_IMPACT)
ENDIF
OPEN_SEQUENCE_TASK(seqMain)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,<<-120.65, -2422.97, 6.00>>,1.0,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,-38.16)
TASK_LOOK_AT_ENTITY(NULL,PLAYER_PED_ID(),-1)
TASK_START_SCENARIO_IN_PLACE(NULL,"WORLD_HUMAN_STAND_IMPATIENT",0,TRUE)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd, seqMain)
iFloydHauler = 7
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//SPECIAL CASE IF THE PLAYER SKIPS
CASE 6
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_14")
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_idle_base", NORMAL_BLEND_IN, NORMAL_BLEND_OUT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
SET_SYNCHRONIZED_SCENE_LOOPED(sceneHandlerA1,TRUE)
SET_LABEL_AS_TRIGGERED("TASK COMPLETE",TRUE)
SET_LABEL_AS_TRIGGERED("GOOD WORK",TRUE)
iFloydHauler = 4
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDPROC
INT iHandlerHelpTimer
PROC MANAGE_HANDLER_ATTACHMENTS()
//
// [HD_HELP1:DOCKH1]
// Position the handler's frame over a container using ~INPUT_SCRIPT_LEFT_AXIS_Y~.
//
// [HD_HELP1B:DOCKH1]
// Press ~INPUT_CONTEXT~ to pick up the container.
//
// [HD_HELP2:DOCKH1]
// Press ~INPUT_CONTEXT~ to release the container.
//
//[HD_HELP3:DOCKH1]
//Use ~INPUT_SCRIPT_LEFT_AXIS_Y~ to move the handler frame.
SET_VEHICLE_LIGHTS(vehHandler,FORCE_VEHICLE_LIGHTS_OFF)
//PRINTSTRING("SCRIPTS COMPILED?")
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[0])
OR IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[1])
IF NOT HAS_LABEL_BEEN_TRIGGERED("HD_HELP1B")
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HD_HELP1")
CLEAR_HELP()
ELSE
iHandlerHelpTimer = GET_GAME_TIMER()
PRINT_HELP_FOREVER("HD_HELP1B")
SET_LABEL_AS_TRIGGERED("HD_HELP1B",TRUE)
ENDIF
ENDIF
ELSE
IF HAS_LABEL_BEEN_TRIGGERED("HD_HELP1B")
IF MANAGE_MY_TIMER(iHandlerHelpTimer,3000)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HD_HELP1B")
CLEAR_HELP()
SET_LABEL_AS_TRIGGERED("HD_HELP1B",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//"Container_Release"
IF HAS_LABEL_BEEN_TRIGGERED("PICKED UP A CONTAINER")
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
//PRINTSTRING("DROPPED SOMETHING")PRINTNL()
IF NOT HAS_LABEL_BEEN_TRIGGERED("Container_Release_audio")
PRINTSTRING("PLAYING RELEASE AUDIO")PRINTNL()
PLAY_SOUND_FROM_ENTITY(-1,"Container_Release",vehHandler,"CONTAINER_LIFTER_SOUNDS")
//DETACH_CONTAINER_FROM_HANDLER_FRAME(vehHandler)
iReleaseTimer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("CONTAINER LAND",FALSE)
SET_LABEL_AS_TRIGGERED("Container_Release_audio",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF NOT HAS_LABEL_BEEN_TRIGGERED("PICKED UP A CONTAINER")
SET_LABEL_AS_TRIGGERED("PICKED UP A CONTAINER",TRUE)
PRINTSTRING("PICKED UP A CONTAINER")PRINTNL()
ENDIF
ENDIF
ENDIF
//"Container_Land"\
IF HAS_LABEL_BEEN_TRIGGERED("PICKED UP A CONTAINER")
IF MANAGE_MY_TIMER(iReleaseTimer,20)
IF NOT HAS_LABEL_BEEN_TRIGGERED("CONTAINER LAND")
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF HAS_ENTITY_COLLIDED_WITH_ANYTHING(objHandlerContainer[0])
OR HAS_ENTITY_COLLIDED_WITH_ANYTHING(objHandlerContainer[1])
IF REQUEST_SCRIPT_AUDIO_BANK("Container_Lifter")
PRINTSTRING("PLAYING Container_Land SOUND")PRINTNL()
PLAY_SOUND_FROM_ENTITY(-1,"Container_Land",vehHandler,"CONTAINER_LIFTER_SOUNDS")
ENDIF
SET_LABEL_AS_TRIGGERED("CONTAINER LAND",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF MANAGE_MY_TIMER(iReleaseTimer,1000)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL,INPUT_CONTEXT)
IF IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[0])
IF REQUEST_SCRIPT_AUDIO_BANK("Container_Lifter")
PRINTSTRING("PLAYING ATTACH SOUND")PRINTNL()
PLAY_SOUND_FROM_ENTITY(-1,"Container_Attach",vehHandler,"CONTAINER_LIFTER_SOUNDS")
ENDIF
ATTACH_CONTAINER_TO_HANDLER_FRAME_WHEN_LINED_UP(vehHandler,objHandlerContainer[0])
PRINTSTRING("ATTACHING")PRINTNL()
IF NOT HAS_LABEL_BEEN_TRIGGERED("PICKED UP A CONTAINER")
SET_LABEL_AS_TRIGGERED("PICKED UP A CONTAINER",TRUE)
ENDIF
SET_LABEL_AS_TRIGGERED("Container_Release_audio",FALSE)
ENDIF
ENDIF
ENDIF
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL,INPUT_CONTEXT)
IF IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[1])
IF REQUEST_SCRIPT_AUDIO_BANK("Container_Lifter")
PRINTSTRING("PLAYING ATTACH SOUND")PRINTNL()
PLAY_SOUND_FROM_ENTITY(-1,"Container_Attach",vehHandler,"CONTAINER_LIFTER_SOUNDS")
ENDIF
ATTACH_CONTAINER_TO_HANDLER_FRAME_WHEN_LINED_UP(vehHandler,objHandlerContainer[1])
PRINTSTRING("ATTACHING")PRINTNL()
IF NOT HAS_LABEL_BEEN_TRIGGERED("PICKED UP A CONTAINER")
SET_LABEL_AS_TRIGGERED("PICKED UP A CONTAINER",TRUE)
ENDIF
SET_LABEL_AS_TRIGGERED("Container_Release_audio",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HD_HELP1B")
CLEAR_HELP()
ENDIF
ENDIF
ENDPROC
FLOAT fHandlerHealth
INT iHandlerDamageTimer
BOOL bDropContainerObjective = FALSE
PROC MANAGE_HANDLER_DIALOGUE()
//GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
//GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_LABEL()
SWITCH iHandlerDialogueSwitch
CASE 0
IF IS_VEHICLE_DRIVEABLE(vehHandler)
//If the player damages the handler - wreckless
IF NOT IS_PED_INJURED(pedFloyd)
IF GET_ENTITY_SPEED(vehHandler) > 30.0 AND HAS_ENTITY_COLLIDED_WITH_ANYTHING(vehHandler)
OR fHandlerHealth > GET_ENTITY_HEALTH(vehHandler)+GET_VEHICLE_ENGINE_HEALTH(vehHandler)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_07hb")
INTERRUPT_CONVERSATION(pedFloyd,"DH1_DXAA","FLOYD")
iHandlerDamageTimer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("DS1_07hb",TRUE)
//KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
// IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
// IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_07hb", CONV_PRIORITY_MEDIUM)
// iHandlerDamageTimer = GET_GAME_TIMER()
// SET_LABEL_AS_TRIGGERED("DS1_07hb",TRUE)
// ENDIF
// ENDIF
ELSE
IF MANAGE_MY_TIMER(iHandlerDamageTimer,12000)
SET_LABEL_AS_TRIGGERED("DS1_07hb",FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
fHandlerHealth = GET_ENTITY_HEALTH(vehHandler)+GET_VEHICLE_ENGINE_HEALTH(vehHandler)
//Player damages a crate
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_41b")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF GET_ENTITY_SPEED(objHandlerContainer[0]) > 4.0
OR GET_ENTITY_SPEED(objHandlerContainer[1]) > 4.0
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_41b", CONV_PRIORITY_MEDIUM)
iDamagedContainer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("DS1_41b",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF MANAGE_MY_TIMER(iDamagedContainer,7000)
SET_LABEL_AS_TRIGGERED("DS1_41b",FALSE)
ENDIF
ENDIF
//If the player is near to the containers - Floyd sees them
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_sees")
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),objHandlerContainer[0]) < 15
OR GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),objHandlerContainer[1]) < 15
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_sees", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_sees",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//If the player is near the containers tells them to line up with them
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_line")
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),objHandlerContainer[0]) < 4
OR GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),objHandlerContainer[1]) < 4
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_line", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_line",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//handler in place, Floyd says to attach the crate
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_attach")
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[0])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_attach", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_attach",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_attach", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_attach",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF HAS_LABEL_BEEN_TRIGGERED("DS1_08")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_attach2")
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[0])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_attach", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_attach2",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER(vehHandler,objHandlerContainer[1])
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_attach", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_attach2",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//picked up the container
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_dockf")
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_dockf", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_dockf",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//Random chat while going to container
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_13")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_13", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_13",TRUE)
ENDIF
ENDIF
ELSE
IF HAS_LABEL_BEEN_TRIGGERED("DS1_attach2")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_13b")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_13b", CONV_PRIORITY_MEDIUM)
REPLAY_RECORD_BACK_FOR_TIME(3.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_13b",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//Random chat after picking up the first container
IF HAS_LABEL_BEEN_TRIGGERED("DS1_dockf")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_13c")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_13c", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_13c",TRUE)
ENDIF
ENDIF
ELSE
//First container in place
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_08")
IF IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
OR IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_Drop", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_08",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_13d")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_13d", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_13d",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_07hb")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_07hb", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_07hb",TRUE)
ENDIF
ENDIF
ENDIF
ENDPROC
PROC MANAGE_HANDLER_SECTION()
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
bCarryingContainer = TRUE
ELSE
bCarryingContainer = FALSE
ENDIF
ENDIF
MANAGE_HANDLER_ATTACHMENTS()
IF iHandlerSection > 1
MANAGE_HANDLER_DIALOGUE()
ENDIF
PRINTSTRING("iHandler:")PRINTINT(iHandlerSection)//PRINTNL()
SWITCH iHandlerSection
CASE 0
REQUEST_SCRIPT_AUDIO_BANK("Container_Lifter")
SET_LABEL_AS_TRIGGERED("HD_HELP1",FALSE)
iHandlerSection ++
BREAK
CASE 1
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF HAS_LABEL_BEEN_TRIGGERED("DS1_07hc")
SET_LABEL_AS_TRIGGERED("DS1_07hc",FALSE)
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_BACK_IN_HAND")
CLEAR_PRINTS()
ENDIF
IF DOES_BLIP_EXIST(veh_blip)
SAFE_REMOVE_BLIP(veh_blip)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("HD_HELP1")
PRINT_HELP_FOREVER("HD_HELP1")
SET_LABEL_AS_TRIGGERED("HD_HELP1",TRUE)
ENDIF
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
SAFE_ADD_BLIP_LOCATION(blipHandlerContainers[0],GET_ENTITY_COORDS(objHandlerContainer[0]))
SET_BLIP_COLOUR(blipHandlerContainers[0],BLIP_COLOUR_GREEN)
SET_BLIP_NAME_FROM_TEXT_FILE(blipHandlerContainers[0],"CONT_LABEL")
//SET_BLIP_SCALE(blipHandlerContainers[0],0.5)
ELSE
SAFE_REMOVE_BLIP(blipHandlerContainers[0])
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
SAFE_ADD_BLIP_LOCATION(blipHandlerContainers[1],GET_ENTITY_COORDS(objHandlerContainer[1]))
SET_BLIP_COLOUR(blipHandlerContainers[1],BLIP_COLOUR_GREEN)
SET_BLIP_NAME_FROM_TEXT_FILE(blipHandlerContainers[1],"CONT_LABEL")
//SET_BLIP_SCALE(blipHandlerContainers[1],0.5)
ELSE
// IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_08")
// KILL_FACE_TO_FACE_CONVERSATION()
// IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
// IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_08", CONV_PRIORITY_MEDIUM)
// SET_LABEL_AS_TRIGGERED("DS1_08",TRUE)
// ENDIF
// ENDIF
// ENDIF
SAFE_REMOVE_BLIP(blipHandlerContainers[1])
ENDIF
ENDIF
ENDIF
bToggleObjective = FALSE
iHandlerSection ++
ELSE
IF bToggleObjective = FALSE
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("AW_BACK_IN_HAND")
SAFE_REMOVE_BLIP(blipHandlerContainers[0])
SAFE_REMOVE_BLIP(blipHandlerContainers[1])
SAFE_REMOVE_BLIP(blipHaulerLoadingArea)
SAFE_ADD_BLIP_VEHICLE(veh_blip,vehHandler,TRUE)
KILL_FACE_TO_FACE_CONVERSATION()
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
CLEAR_PRINTS()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_DIALOGUE_IF_SUBTITLES_OFF)
IF NOT HAS_LABEL_BEEN_TRIGGERED("AW_BACK_IN_HAND")
PRINT("AW_BACK_IN_HAND",DEFAULT_GOD_TEXT_TIME,0)
SET_LABEL_AS_TRIGGERED("AW_BACK_IN_HAND",TRUE)
ENDIF
bToggleObjective = TRUE
ENDIF
ENDIF
ENDIF
IF HAS_LABEL_BEEN_TRIGGERED("AW_BACK_IN_HAND")
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_07hc")
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_07hc", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_07hc",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
iHandlerSection = 1
ENDIF
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HD_HELP2")
CLEAR_HELP()
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF NOT DOES_BLIP_EXIST(blipHandlerContainers[0])
SAFE_ADD_BLIP_LOCATION(blipHandlerContainers[0],GET_ENTITY_COORDS(objHandlerContainer[0]))
SET_BLIP_COLOUR(blipHandlerContainers[0],BLIP_COLOUR_GREEN)
SET_BLIP_NAME_FROM_TEXT_FILE(blipHandlerContainers[0],"CONT_LABEL")
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("1st CONTAINER IN",TRUE)
SAFE_REMOVE_BLIP(blipHandlerContainers[0])
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(objHandlerContainer[1])
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF NOT DOES_BLIP_EXIST(blipHandlerContainers[1])
SAFE_ADD_BLIP_LOCATION(blipHandlerContainers[1],GET_ENTITY_COORDS(objHandlerContainer[1]))
SET_BLIP_COLOUR(blipHandlerContainers[1],BLIP_COLOUR_GREEN)
SET_BLIP_NAME_FROM_TEXT_FILE(blipHandlerContainers[1],"CONT_LABEL")
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("2nd CONTAINER IN",TRUE)
SAFE_REMOVE_BLIP(blipHandlerContainers[1])
//REPLAY_RECORD_BACK_FOR_TIME(1)
ENDIF
ENDIF
IF DOES_BLIP_EXIST(blipHaulerLoadingArea)
SAFE_REMOVE_BLIP(blipHaulerLoadingArea)
ENDIF
IF GET_DISTANCE_BETWEEN_ENTITIES(vehHandler,objHandlerContainer[0]) < 30
OR GET_DISTANCE_BETWEEN_ENTITIES(vehHandler,objHandlerContainer[1]) < 30
IF bHelpText = FALSE
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("HD_HELP1")
PRINT_HELP("HD_HELP1")
SET_LABEL_AS_TRIGGERED("HD_HELP1",TRUE)
bHelpText = TRUE
ENDIF
ENDIF
ENDIF
ELSE
//CLEAR_PRINTS()
//TAKE THE CRATE TO THE LOADING AREA
//KILL_FACE_TO_FACE_CONVERSATION()
SAFE_REMOVE_BLIP(blipHandlerContainers[0])
SAFE_REMOVE_BLIP(blipHandlerContainers[1])
SAFE_REMOVE_BLIP(blipHandlerContainers[2])
SAFE_ADD_BLIP_LOCATION(blipHaulerLoadingArea,vForkLiftLoadingArea)
bGodText = FALSE
bDropContainerObjective = FALSE
iHandlerSection ++
ENDIF
ENDIF
BREAK
CASE 3
IF IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_DIALOGUE_IF_SUBTITLES_OFF)
IF bGodText = FALSE
//Only do this god text once
IF HAS_LABEL_BEEN_TRIGGERED("AW_HAND_GOTC")
PRINT("AW_HAND_GOTC",DEFAULT_GOD_TEXT_TIME,0)
bGodText = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
iHandlerSection = 1
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
AND NOT IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
CLEAR_PRINTS()
//DRIVE TO THE CRATES
SAFE_REMOVE_BLIP(blipHaulerLoadingArea)
IF NOT HAS_LABEL_BEEN_TRIGGERED("AW_HAND_TASK")
PRINT("AW_HAND_TASK",DEFAULT_GOD_TEXT_TIME,0)
SET_LABEL_AS_TRIGGERED("AW_HAND_TASK",TRUE)
ENDIF
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_HAND_GOTC")
CLEAR_PRINTS()
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_HAND_DROP")
CLEAR_PRINTS()
ENDIF
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
iHandlerSection = 2
ELSE
IF IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler)
IF bDropContainerObjective = FALSE
IF IS_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler,objHandlerContainer[0])
AND IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-93.626404,-2450.864014,28.266687>>, <<-102.872566,-2464.122803,3.520514>>, 16.250000)
//SET THE CRATE DOWN IN THIS AREA
IF NOT HAS_LABEL_BEEN_TRIGGERED("AW_HAND_DROP")
CLEAR_PRINTS()
PRINT("AW_HAND_DROP",DEFAULT_GOD_TEXT_TIME,0)
SET_LABEL_AS_TRIGGERED("AW_HAND_DROP",TRUE)
ENDIF
PRINT_HELP("HD_HELP2")
bDropContainerObjective = TRUE
ENDIF
IF IS_ENTITY_ATTACHED_TO_HANDLER_FRAME(vehHandler,objHandlerContainer[1])
AND IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-93.626404,-2450.864014,28.266687>>, <<-102.872566,-2464.122803,3.520514>>, 16.250000)
//SET THE CRATE DOWN IN THIS AREA
IF NOT HAS_LABEL_BEEN_TRIGGERED("AW_HAND_DROP")
CLEAR_PRINTS()
PRINT("AW_HAND_DROP",DEFAULT_GOD_TEXT_TIME,0)
SET_LABEL_AS_TRIGGERED("AW_HAND_DROP",TRUE)
ENDIF
PRINT_HELP("HD_HELP2")
bDropContainerObjective = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
INT iMWShoutTimer
PROC MERRYWEATHER_WITH_DOCK_WORKER()
/*
| o ) | / \ / _| |// | | |/ \_ _| __| o \ | | | | |_ _| U | | \ / \ / _| |// | | |/ \| o \ |// __| o Y _|
| o \ |_| o ( (_| (| V V | o | || _|| / | V V | || || | | o | o | (_| (| V V ( o ) / (| _|| |_ \
|___/___|_n_|\__|_|\\\_n_/|_n_|_||___|_|\\ \_n_/|_||_||_n_| |__/ \_/ \__|_|\\\_n_/ \_/|_|\\_|\\___|_|\\__/*/
IF s_sp_blackwater_with_dockworker[0].i_event > 0
AND s_sp_blackwater_with_dockworker[0].i_event < 5
IF NOT HAS_LABEL_BEEN_TRIGGERED("MERRYWEATHER SHOUT")
IF GET_RANDOM_BOOL()
IF NOT IS_PED_DEAD_OR_DYING(s_sp_blackwater_with_dockworker[1].ped)
PLAY_PED_AMBIENT_SPEECH(s_sp_blackwater_with_dockworker[1].ped,"GENERIC_INSULT_HIGH")
SET_LABEL_AS_TRIGGERED("MERRYWEATHER SHOUT",TRUE)
iMWShoutTimer = GET_GAME_TIMER()
ENDIF
ELSE
IF NOT IS_PED_DEAD_OR_DYING(s_sp_blackwater_with_dockworker[2].ped)
PLAY_PED_AMBIENT_SPEECH(s_sp_blackwater_with_dockworker[2].ped,"GENERIC_INSULT_HIGH")
SET_LABEL_AS_TRIGGERED("MERRYWEATHER SHOUT",TRUE)
iMWShoutTimer = GET_GAME_TIMER()
ENDIF
ENDIF
ELSE
IF MANAGE_MY_TIMER(iMWShoutTimer,GET_RANDOM_INT_IN_RANGE(7000,14000))
SET_LABEL_AS_TRIGGERED("MERRYWEATHER SHOUT",FALSE)
ENDIF
ENDIF
ENDIF
//BREAK OUT IF MESSED WITH
IF s_sp_blackwater_with_dockworker[0].i_event < 7
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF IS_ENTITY_TOUCHING_ENTITY(PLAYER_PED_ID(),s_sp_blackwater_with_dockworker[0].ped)
OR IS_ENTITY_TOUCHING_ENTITY(PLAYER_PED_ID(),s_sp_blackwater_with_dockworker[0].ped)
OR IS_ENTITY_TOUCHING_ENTITY(PLAYER_PED_ID(),s_sp_blackwater_with_dockworker[0].ped)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_blackwater_with_dockworker[0].ped,SLOW_BLEND_OUT,TRUE)
TASK_SMART_FLEE_COORD(s_sp_blackwater_with_dockworker[0].ped, << -294.5143, -2497.9805, 5.0015 >>,100,-1)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_blackwater_with_dockworker[1].ped,SLOW_BLEND_OUT,TRUE)
TASK_COMBAT_PED(s_sp_blackwater_with_dockworker[1].ped,PLAYER_PED_ID())
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_blackwater_with_dockworker[2].ped,SLOW_BLEND_OUT,TRUE)
TASK_COMBAT_PED(s_sp_blackwater_with_dockworker[2].ped,PLAYER_PED_ID())
s_sp_blackwater_with_dockworker[0].i_event = 7
ENDIF
ENDIF
ENDIF
ENDIF
IF bSetPiece[SS_blackwater_with_dockworker]
MANAGE_SPEECH_FOR_AMBIENT_SET_PIECE(AMBSP_BLACKWATER_WITH_DOCK_WORKER)
IF NOT DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
IF eMissionStage > MISSION_STAGE_1
AND eMissionStage < MISSION_STAGE_5
REQUEST_MODEL(s_sp_blackwater_with_dockworker[0].model)
REQUEST_MODEL(s_sp_blackwater_with_dockworker[1].model)
REQUEST_MODEL(s_sp_blackwater_with_dockworker[2].model)
IF HAS_MODEL_LOADED(s_sp_blackwater_with_dockworker[0].model)
AND HAS_MODEL_LOADED(s_sp_blackwater_with_dockworker[1].model)
AND HAS_MODEL_LOADED(s_sp_blackwater_with_dockworker[2].model)
s_sp_blackwater_with_dockworker[0].ped = CREATE_SETPIECE_PED(s_sp_blackwater_with_dockworker[0].model,<< -294.5143, -2497.9805, 5.0015 >>, 87.3385, rel_group_buddies, 200, 0)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(s_sp_blackwater_with_dockworker[0].ped,TRUE)
SET_PED_CAPSULE(s_sp_blackwater_with_dockworker[0].ped,0.4)
s_sp_blackwater_with_dockworker[1].ped = CREATE_SETPIECE_PED(s_sp_blackwater_with_dockworker[1].model,<< -295.4659, -2496.8794, 5.0015 >>, 349.2262, rel_group_buddies, 200, 0)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(s_sp_blackwater_with_dockworker[1].ped,TRUE)
s_sp_blackwater_with_dockworker[2].ped = CREATE_SETPIECE_PED(s_sp_blackwater_with_dockworker[2].model,<< -294.3614, -2495.9116, 5.0015 >>, 181.5108, rel_group_buddies, 200, 0)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(s_sp_blackwater_with_dockworker[2].ped,TRUE)
INITIALISE_SETPIECE_GROUP(s_sp_blackwater_with_dockworker, "Blackwater with dockworker")
ENDIF
ENDIF
ELSE
//All the enemies are triggered off the same locate, so do outside the loop.
IF bSetPiece[SS_blackwater_with_dockworker]
//PRINTSTRING("_sp_blackwater_with_dockworker[0].i_event: ")PRINTINT(s_sp_blackwater_with_dockworker[0].i_event)PRINTNL()
IF s_sp_blackwater_with_dockworker[0].i_event > 3
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2221950
ENDIF
SWITCH s_sp_blackwater_with_dockworker[0].i_event
//GET PEDS INTO POSITION
CASE 0
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),S_sd_blackwater_with_dockworker.v_scene_pos) < 60
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
INIT_SYNCH_SCENE_AUDIO_WITH_POSITION("LSDHS_IG_13", S_sd_blackwater_with_dockworker.v_scene_pos)
s_sp_blackwater_with_dockworker[0].i_event ++
ENDIF
BREAK
CASE 1
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
IF PREPARE_SYNCHRONIZED_AUDIO_EVENT("LSDHS_IG_13", 0)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@start_idle")
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),S_sd_blackwater_with_dockworker.v_scene_pos) < 60
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
//CLEARING UP PREVIOUS SCENES ONCE WE GET HERE
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[0].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_on_pipe[0].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_on_pipe[0].ped)
ENDIF
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[1].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_on_pipe[1].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_on_pipe[1].ped)
ENDIF
IF NOT IS_PED_INJURED(s_sp_dock_workers_on_pipe[2].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_on_pipe[2].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_on_pipe[2].ped)
ENDIF
REMOVE_ANIM_DICT("missheistdockssetup1ig_10@idle_a")
REMOVE_ANIM_DICT("missheistdockssetup1ig_10@idle_b")
REMOVE_ANIM_DICT("missheistdockssetup1ig_10@idle_c")
REMOVE_ANIM_DICT( "missheistdockssetup1ig_10@idle_d")
IF NOT IS_PED_INJURED(s_sp_dock_workers_talking[0].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_talking[0].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_talking[0].ped)
ENDIF
IF NOT IS_PED_INJURED(s_sp_dock_workers_talking[1].ped)
CLEAR_PED_TASKS(s_sp_dock_workers_talking[1].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_dock_workers_talking[1].ped)
ENDIF
REMOVE_ANIM_DICT("missheistdockssetup1ig_5@base")
sceneBlackWater1Id = CREATE_SYNCHRONIZED_SCENE(S_sd_blackwater_with_dockworker.v_scene_pos,S_sd_blackwater_with_dockworker.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[0].ped,sceneBlackWater1Id, "missheistdockssetup1ig_13@start_idle", "guard_beatup_startidle_dockworker", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[1].ped, sceneBlackWater1Id,"missheistdockssetup1ig_13@start_idle", "guard_beatup_startidle_guard1", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[2].ped, sceneBlackWater1Id,"missheistdockssetup1ig_13@start_idle", "guard_beatup_startidle_guard2", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlackWater1Id,TRUE)
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@main_action")
s_sp_blackwater_with_dockworker[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//START THE ACTION - WHEN THE PLAYER APPROACHES GET COORDS FOR CONDITION
CASE 2
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@main_action")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@main_action")
IF VDIST(GET_ENTITY_COORDS(PLAYER_PED_ID()),S_sd_blackwater_with_dockworker.v_scene_pos) < 50
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF IS_ENTITY_ON_SCREEN(s_sp_blackwater_with_dockworker[0].ped)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater1Id)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlackWater1Id) > 0.99
sceneBlackWater2Id = CREATE_SYNCHRONIZED_SCENE(S_sd_blackwater_with_dockworker.v_scene_pos,S_sd_blackwater_with_dockworker.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[0].ped,sceneBlackWater2Id, "missheistdockssetup1ig_13@main_action", "guard_beatup_mainaction_dockworker", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[1].ped, sceneBlackWater2Id, "missheistdockssetup1ig_13@main_action", "guard_beatup_mainaction_guard1", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[2].ped, sceneBlackWater2Id, "missheistdockssetup1ig_13@main_action", "guard_beatup_mainaction_guard2", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlackWater2Id,FALSE)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@start_idle")
REMOVE_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
ENDIF
PLAY_SYNCHRONIZED_AUDIO_EVENT(sceneBlackWater2Id)
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@kick_idle")
//s_sp_blackwater_with_dockworker[0].i_event ++
s_sp_blackwater_with_dockworker[0].i_event = 4
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//BEGIN KICKING
CASE 3
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@kick_idle")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@kick_idle")
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater2Id)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlackWater2Id) >= 1
sceneBlackWater3Id = CREATE_SYNCHRONIZED_SCENE(S_sd_blackwater_with_dockworker.v_scene_pos,S_sd_blackwater_with_dockworker.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[0].ped,sceneBlackWater3Id, "missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_dockworker", REALLY_SLOW_BLEND_IN, INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[1].ped, sceneBlackWater3Id,"missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_guard1", REALLY_SLOW_BLEND_IN, INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[2].ped, sceneBlackWater3Id, "missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_guard2", REALLY_SLOW_BLEND_IN, INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlackWater3Id,FALSE)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@main_action")
REMOVE_ANIM_DICT( "missheistdockssetup1ig_13@main_action")
ENDIF
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@exit")
s_sp_blackwater_with_dockworker[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//EXIT BEATUP
CASE 4
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@exit")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@exit")
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater2Id)
//IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater3Id)
//IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlackWater3Id) > 0.99
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlackWater2Id) > 0.99
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@kick_idle")
REMOVE_ANIM_DICT("missheistdockssetup1ig_13@kick_idle")
ENDIF
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@main_action")
REMOVE_ANIM_DICT( "missheistdockssetup1ig_13@main_action")
ENDIF
sceneBlackWater4Id = CREATE_SYNCHRONIZED_SCENE(S_sd_blackwater_with_dockworker.v_scene_pos,S_sd_blackwater_with_dockworker.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[0].ped,sceneBlackWater4Id, "missheistdockssetup1ig_13@exit", "guard_beatup_exit_dockworker", REALLY_SLOW_BLEND_IN, INSTANT_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[1].ped, sceneBlackWater4Id,"missheistdockssetup1ig_13@exit", "guard_beatup_exit_guard1", REALLY_SLOW_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[2].ped, sceneBlackWater4Id, "missheistdockssetup1ig_13@exit", "guard_beatup_exit_guard2", REALLY_SLOW_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlackWater4Id,FALSE)
s_sp_blackwater_with_dockworker[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
//FINISH UP - CLEAR TASKS ECT
CASE 5
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@exit")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@exit")
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater4Id)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlackWater4Id) > 0.99
sceneBlackWater5Id = CREATE_SYNCHRONIZED_SCENE(S_sd_blackwater_with_dockworker.v_scene_pos,S_sd_blackwater_with_dockworker.v_scene_rot)
TASK_SYNCHRONIZED_SCENE (s_sp_blackwater_with_dockworker[0].ped,sceneBlackWater5Id, "missheistdockssetup1ig_13@exit", "GUARD_Beatup_RollIdle_DockWorker", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlackWater5Id,TRUE)
//CLEAR_PED_TASKS(s_sp_blackwater_with_dockworker[1].ped)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_blackwater_with_dockworker[1].ped,SLOW_BLEND_OUT,TRUE)
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_blackwater_with_dockworker[2].ped,SLOW_BLEND_OUT,TRUE)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL,PLAYER_PED_ID(),4000)
TASK_PAUSE(NULL,1000)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-116.1250, -2386.3333, 5.0000>>, PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP)
TASK_WANDER_STANDARD(NULL)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(s_sp_blackwater_with_dockworker[1].ped,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
SET_PED_CONFIG_FLAG(s_sp_blackwater_with_dockworker[1].ped,PCF_KeepRelationshipGroupAfterCleanUp,TRUE)
ENDIF
SET_PED_KEEP_TASK(s_sp_blackwater_with_dockworker[1].ped,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_blackwater_with_dockworker[1].ped)
//CLEAR_PED_TASKS(s_sp_blackwater_with_dockworker[2].ped)
OPEN_SEQUENCE_TASK(seqMain)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-68.8121, -2431.8848, 5.0005>>, PEDMOVE_WALK, DEFAULT_TIME_NEVER_WARP)
TASK_WANDER_STANDARD(NULL)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(s_sp_blackwater_with_dockworker[2].ped,seqMain)
CLEAR_SEQUENCE_TASK(seqMain)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
SET_PED_CONFIG_FLAG(s_sp_blackwater_with_dockworker[2].ped,PCF_KeepRelationshipGroupAfterCleanUp,TRUE)
ENDIF
SET_PED_KEEP_TASK(s_sp_blackwater_with_dockworker[2].ped,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_blackwater_with_dockworker[2].ped)
s_sp_blackwater_with_dockworker[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 6
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@exit")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@exit")
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
AND DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
AND NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackWater5Id)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlackWater5Id) > 0.99
STOP_SYNCHRONIZED_ENTITY_ANIM(s_sp_blackwater_with_dockworker[0].ped,SLOW_BLEND_OUT,TRUE)
CLEAR_PED_TASKS(s_sp_blackwater_with_dockworker[0].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_blackwater_with_dockworker[0].ped)
s_sp_blackwater_with_dockworker[0].i_event ++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//
BREAK
CASE 7
REMOVE_ANIM_DICT("missheistdockssetup1ig_13@exit")
s_sp_blackwater_with_dockworker[0].i_event ++
bSetPiece[SS_blackwater_with_dockworker] = FALSE
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_blackwater_with_dockworker[0].ped)
ENDIF
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_blackwater_with_dockworker[1].ped)
ENDIF
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
SET_PED_AS_NO_LONGER_NEEDED(s_sp_blackwater_with_dockworker[2].ped)
ENDIF
BREAK
ENDSWITCH
ELSE
ENDIF
ENDIF
ENDIF
ENDPROC
INT iSafetyTimer
BOOL bGetSafeTimer
//IS_ANY_ENTITY_ATTACHED_TO_FORKLIFT_FORKS
//DETACH_PALLET_FROM_FORKLIFT_FORKS.
//IS_ENTITY_ATTACHED_TO_FORKLIFT_FORKS
//PURPOSE: Trevor gets in the handler and does the tasks
PROC MISSION_STAGE_5_PROC()
IF NOT IS_ENTITY_DEAD(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME(2.0)
SET_AMBIENT_PED_RANGE_MULTIPLIER_THIS_FRAME(2.0)
ENDIF
ENDIF
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ATTACK)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_ATTACK2)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_AIM)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_NEXT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_SELECT_PREV_WEAPON)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_HANDLER_START")
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF IS_AUDIO_SCENE_ACTIVE("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")
STOP_AUDIO_SCENE("DH_1_FOLLOW_FLOYD_SEE_FREIGHTER")
ELSE
START_AUDIO_SCENE("DH_1_HANDLER_START")
SET_LABEL_AS_TRIGGERED("DH_1_HANDLER_START",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[0].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[0].ped)
IF VDIST(GET_ENTITY_COORDS(s_sp_blackwater_with_dockworker[0].ped),GET_ENTITY_COORDS(PLAYER_PED_ID())) > 5
IF NOT IS_ENTITY_ON_SCREEN(s_sp_blackwater_with_dockworker[0].ped)
DELETE_PED(s_sp_blackwater_with_dockworker[0].ped)
ENDIF
ENDIF
ENDIF
ENDIF
IF s_sp_blackwater_with_dockworker[0].i_event < 6
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[1].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[1].ped)
IF VDIST(GET_ENTITY_COORDS(s_sp_blackwater_with_dockworker[1].ped),GET_ENTITY_COORDS(PLAYER_PED_ID())) > 5
IF NOT IS_ENTITY_ON_SCREEN(s_sp_blackwater_with_dockworker[1].ped)
DELETE_PED(s_sp_blackwater_with_dockworker[1].ped)
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_sp_blackwater_with_dockworker[2].ped)
IF NOT IS_PED_INJURED(s_sp_blackwater_with_dockworker[2].ped)
IF VDIST(GET_ENTITY_COORDS(s_sp_blackwater_with_dockworker[2].ped),GET_ENTITY_COORDS(PLAYER_PED_ID())) > 5
IF NOT IS_ENTITY_ON_SCREEN(s_sp_blackwater_with_dockworker[2].ped)
DELETE_PED(s_sp_blackwater_with_dockworker[2].ped)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("SET UP PHYSICS FOR 0")
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
IF DOES_ENTITY_HAVE_PHYSICS(objHandlerContainer[0])
SET_OBJECT_PHYSICS_PARAMS(objHandlerContainer[0],15000,-1,<<0,0,0>>,<<0,0,0>>)
SET_LABEL_AS_TRIGGERED("SET UP PHYSICS FOR 0",TRUE)
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("SET UP PHYSICS FOR 1")
IF DOES_ENTITY_EXIST(objHandlerContainer[1])
IF DOES_ENTITY_HAVE_PHYSICS(objHandlerContainer[1])
SET_OBJECT_PHYSICS_PARAMS(objHandlerContainer[1],15000,-1,<<0,0,0>>,<<0,0,0>>)
SET_LABEL_AS_TRIGGERED("SET UP PHYSICS FOR 1",TRUE)
ENDIF
ENDIF
ENDIF
MANAGE_FLOYD_ATTACHMENT()
CREATE_THE_DOCKS_STUFF()
SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_CONTAINERS_FOR_HANDLER_SECTION_START,<<0,0,0>>)
IF DOES_ENTITY_EXIST(objHandlerContainer[0])
AND DOES_ENTITY_EXIST(objHandlerContainer[1])
MANAGE_FLOYD_ACTIVITY()
ELSE
CREATE_THE_DOCKS_STUFF()
ENDIF
IF iProgress > 0
IF bIsJumpingDirectlyToStage = TRUE
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
INIT_STAGE()
bIsJumpingDirectlyToStage = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
SWITCH iProgress
CASE 0//Create objective specific items- print objective, add blips etc
IF SETUP_PEDS_FOR_DIALOGUE()
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
SAFE_ADD_BLIP_VEHICLE(veh_blip,vehHandler,TRUE)
ENDIF
ENDIF
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4,"Handler Work")
bGodText = FALSE
iFloydHauler = 0
iMissionDialogue = 9
bGetSafeTimer = FALSE
IF DOES_ENTITY_EXIST(vehHandler)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,TRUE)
FREEZE_ENTITY_POSITION(vehHandler,FALSE)
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
REMOVE_PED_FROM_GROUP(pedFloyd)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedFloyd, TRUE)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehMission)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehMission, FALSE)
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[12])
IF NOT IS_PED_INJURED(pedDockWorker[12])
DELETE_PED(pedDockWorker[12])
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[7])
IF NOT IS_PED_INJURED(pedDockWorker[7])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[7],"WORLD_HUMAN_AA_SMOKE")
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[13])
IF NOT IS_PED_INJURED(pedDockWorker[13])
TASK_START_SCENARIO_IN_PLACE(pedDockWorker[13],"WORLD_HUMAN_CLIPBOARD")
ENDIF
ENDIF
SET_PED_COMBAT_ATTRIBUTES(PLAYER_PED_ID(),CA_DO_DRIVEBYS,FALSE)
REQUEST_IPL("pcranecont")
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
IF NOT IS_ENTITY_DEAD(vehHandler)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF bIsJumpingDirectlyToStage = FALSE
IF bDialogue = FALSE
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_07h", CONV_PRIORITY_MEDIUM)
iHandlerSection = 0
bDialogue = FALSE
iProgress++
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("AW_HAND_TASK")
PRINT("AW_HAND_TASK",DEFAULT_GOD_TEXT_TIME,0)
SET_LABEL_AS_TRIGGERED("AW_HAND_TASK",TRUE)
ENDIF
iHandlerSection = 0
bDialogue = FALSE
iProgress++
ENDIF
ELSE
iHandlerSection = 0
bDialogue = FALSE
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_ENTITY_DEAD(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_GETIN_HAND")
CLEAR_PRINTS()
ENDIF
IF DOES_BLIP_EXIST(veh_blip)
REMOVE_BLIP(veh_blip)
ENDIF
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_07ha", CONV_PRIORITY_MEDIUM)
REPLAY_RECORD_BACK_FOR_TIME(2.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(DH1_FORKLIFT_TIME)
bToggleObjective = FALSE
bGodText = FALSE
bHelpText = FALSE
bInitialGodText = FALSE
iProgress++
ENDIF
ELSE
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF bGodText = FALSE
PRINT_GOD_TEXT("AW_GETIN_HAND")
bGodText = TRUE
ENDIF
ENDIF
IF bGodText = TRUE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_Act")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_Act", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_Act", TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
MANAGE_HANDLER_SECTION()
IF bInitialGodText = FALSE
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
PRINT_GOD_TEXT("AW_HAND_TASK")
bInitialGodText = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF bCarryingContainer = FALSE
IF IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[0], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
AND IS_ENTITY_IN_ANGLED_AREA(objHandlerContainer[1], <<-92.523666,-2461.800049,8.267201>>, <<-103.638123,-2453.989258,4.520514>>, 14.7500000)
IF bGetSafeTimer = FALSE
iSafetyTimer = GET_GAME_TIMER()
bGetSafeTimer = TRUE
ENDIF
IF bGetSafeTimer = TRUE
IF HAS_LABEL_BEEN_TRIGGERED("CONTAINER LAND")
OR MANAGE_MY_TIMER(iSafetyTimer,1000)
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
CLEAN_OBJECTIVE_BLIP_DISPLAY()
SAFE_REMOVE_BLIP(blipHaulerLoadingArea)
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED()
iStaggerTimer = GET_GAME_TIMER()
KILL_FACE_TO_FACE_CONVERSATION()
iProgress++
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF MANAGE_MY_TIMER(iStaggerTimer,2000)
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_08a", CONV_PRIORITY_MEDIUM)
IF NOT IS_PED_INJURED(pedDockWorker[14])
OPEN_SEQUENCE_TASK(seqMain)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, << -57.3390, -2448.3562, 6.2399 >>,1.0)
TASK_ACHIEVE_HEADING(NULL,144.9673)
TASK_STAND_STILL(NULL,2000)
TASK_TURN_PED_TO_FACE_ENTITY(NULL,PLAYER_PED_ID())
TASK_START_SCENARIO_IN_PLACE(NULL,"WORLD_HUMAN_AA_COFFEE",0,TRUE)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedDockWorker[14], seqMain)
ENDIF
IF NOT IS_PED_INJURED(pedSecurity)
SET_PED_AS_NO_LONGER_NEEDED(pedSecurity)
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
CASE 4
IF PRE_STREAM_MISSION_STAGE()
bIsJumpingDirectlyToStage = FALSE
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_a")
SAFE_REMOVE_BLIP(blipHandlerContainers[0])
SAFE_REMOVE_BLIP(blipHandlerContainers[1])
SAFE_REMOVE_BLIP(blipHandlerContainers[2])
RESET_MISSION_STAGE_VARIABLES()
ADVANCE_MISSION_STAGE()
ENDIF
BREAK
ENDSWITCH
ENDPROC
/// PURPOSE:
/// Play the crane mocap
FUNC BOOL RUN_CRANE_CUTSCENE()
bcutsceneplaying = TRUE
#IF IS_DEBUG_BUILD
IF IS_CUTSCENE_ACTIVE()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
STOP_CUTSCENE()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
ENDIF
#ENDIF
IF e_section_stage = SECTION_STAGE_SETUP
IF b_is_jumping_directly_to_stage
CONTROL_FADE_IN(500)
b_is_jumping_directly_to_stage = FALSE
ELSE
IF i_current_event = 0
PRINTSTRING("PLAYING CRANE CUTSCNE- 1")//PRINTNL()
bcutsceneplaying = TRUE
REQUEST_CUTSCENE("LSDHS_MCS_1")
REQUEST_MODEL(PROP_PENCIL_01)
REQUEST_MODEL(P_CS_CLIPBOARD)
i_current_event++
ELIF i_current_event = 1
IF HAS_CUTSCENE_LOADED()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ELSE
WAIT(0)
ENDIF
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
SET_CUTSCENE_FADE_VALUES(FALSE,FALSE,FALSE,FALSE)
//START_CUTSCENE()
//Wait a couple of frames before clearing/warping stuff, so the cutscene is active first.
WAIT(0)
PRINTSTRING("RUNNING CRANE CUTSCENE - 3")//PRINTNL()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
b_skipped_mocap = FALSE
i_current_event = 0
e_section_stage = SECTION_STAGE_RUNNING
ELSE
PRINTSTRING("CUTSCENE LOADING")//PRINTNL()
ENDIF
ENDIF
ENDIF
ENDIF
IF e_section_stage = SECTION_STAGE_RUNNING
IF NOT b_skipped_mocap
IF IS_CUTSCENE_SKIP_BUTTON_PRESSED()
b_skipped_mocap = TRUE
ENDIF
ENDIF
PRINTSTRING("RUNNING CRANE CUTSCENE - 3")//PRINTNL()
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
IF NOT IS_PED_INJURED(pedFloyd)
SET_ENTITY_COORDS(pedFloyd,<<-114.33, -2426.18, 6.00>>)
SET_ENTITY_HEADING(pedFloyd,-4.84)
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[12])
DELETE_PED(pedDockWorker[12])
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_ENTITY_COORDS(vehHandler,<< -166.8165, -2460.6479, 5.2973 >>)
ENDIF
IF NOT DOES_CAM_EXIST(cam_interp)
cam_interp = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE)
SET_CAM_PARAMS(cam_interp,<< -63.5991, -2390.1675, 23.4720 >>, << -20.2428, 0.0000, -154.0613 >>,45.0193)
RENDER_SCRIPT_CAMS(TRUE,FALSE)
SET_CAM_ACTIVE(cam_interp,TRUE)
ENDIF
SET_ENTITY_VISIBLE(PLAYER_PED_ID(),FALSE)
REMOVE_IPL("pcranecont")
SWITCH_CRANE_VISIBILITY(TRUE)
ENDIF
ENDIF
IF HAS_CUTSCENE_FINISHED()
e_section_stage = SECTION_STAGE_CLEANUP
ENDIF
#IF IS_DEBUG_BUILD
IF IS_CUTSCENE_ACTIVE()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
STOP_CUTSCENE()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
ENDIF
#ENDIF
ENDIF
IF e_section_stage = SECTION_STAGE_CLEANUP
IF b_skipped_mocap
//If the player skipped the mocap the peds need to be warped.
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
//Setup buddy relationship groups etc.
INFORM_MISSION_STATS_SYSTEM_OF_INGAME_CUTSCENE_END()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
i_current_event = 0
RETURN TRUE
bcutsceneplaying = FALSE
ENDIF
IF e_section_stage = SECTION_STAGE_SKIP
CONTROL_FADE_OUT(500)
STOP_CUTSCENE()
b_skipped_mocap = TRUE
e_section_stage = SECTION_STAGE_RUNNING
ENDIF
RETURN FALSE
ENDFUNC
/*
As discussed we want to wait until the get off has finished playing.
If you can query this anim
"get_off_Bottom_Front_Stand"
The get in animation should be played around phase 0.6.
That phase is quite aggressive so you might need to push it a bit further back.
Give me a shout when you are doing this so I can take a look.
*/
//PURPOSE: Trevor follows floyd to the Crane
STRING sGodText
PROC MISSION_STAGE_6_PROC()
MANAGE_floyd_ACTIVITY()
CREATE_THE_DOCKS_STUFF()
MANAGE_FLOYD_ATTACHMENT()
IF iProgress > 0
AND iProgress < 8
REQUEST_WAYPOINT_RECORDING("cranassist")
IF GET_IS_WAYPOINT_RECORDING_LOADED("cranassist")
USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("cranassist",TRUE,1,0.5)
ENDIF
ENDIF
//Set the ped on the crane variation
IF DOES_ENTITY_EXIST(pedDockWorker[14])
AND NOT bPedDockCraneVariation
PRINTLN("PED DOCK VARIATION SET!")
SET_PED_COMPONENT_VARIATION(pedDockWorker[14], INT_TO_ENUM(PED_COMPONENT,0), 0, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(pedDockWorker[14], INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(pedDockWorker[14], INT_TO_ENUM(PED_COMPONENT,4), 0, 1, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(pedDockWorker[14], INT_TO_ENUM(PED_COMPONENT,8), 1, 0, 0) //(accs)
bPedDockCraneVariation = TRUE
ENDIF
IF iProgress < 5
IF NOT HAS_LABEL_BEEN_TRIGGERED("GOT TO CABIN EARLY")
IF NOT IS_PED_CLIMBING(PLAYER_PED_ID())
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-51.946228,-2414.439209,20.533628>>, <<-51.964249,-2413.213867,22.335625>>, 1.750000)
iProgress = 5
SET_LABEL_AS_TRIGGERED("GOT TO CABIN EARLY",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
SWITCH iProgress
CASE 0//Create objective specific items- print objective, add blips etc
IF SETUP_PEDS_FOR_DIALOGUE()
s_crane.f_crane_offset = 0.297
s_crane.f_crane_vel = 0.0
vSpreaderPosition = <<-53.02, -2416.04, 14.75>>
WHILE NOT SETUP_MISSION_REQUIREMENT(REQ_CRANE)
WAIT(0)
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_ThePortOfLSHeistSetup")
ENDWHILE
IF bIsJumpingDirectlyToStage = TRUE
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
sceneHandlerA1 = CREATE_SYNCHRONIZED_SCENE(<<0,0,0>>, <<0,0,0>>)
TASK_SYNCHRONIZED_SCENE (pedFloyd, sceneHandlerA1, "missheistdockssetup1ig_14", "floyd_lets_get_going", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS,RBF_PLAYER_IMPACT )
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(sceneHandlerA1,vehHandler,-1)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
iFloydHauler = 4
ENDIF
ENDIF
ENDIF
SWITCH_CRANE_VISIBILITY(TRUE)
iMissionDialogue = 11
IF NOT IS_PED_INJURED(pedFloyd)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedFloyd, TRUE)
//CLEAR_PED_TASKS(pedFloyd)
ENDIF
REMOVE_CUTSCENE()
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(5,"Follow Floyd to crane")
IF IS_SCREEN_FADED_OUT()
WHILE NOT SETUP_MISSION_REQUIREMENT(REQ_CRANE_CONTAINERS)
WAIT(0)
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_ThePortOfLSHeistSetup")
ENDWHILE
MANAGE_PLAYER_OUTFIT()
ENDIF
REMOVE_IPL("pcranecont")
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
IF DOES_ENTITY_EXIST(pedDockWorker[12])
DELETE_PED(pedDockWorker[12])
ENDIF
SET_PED_COMBAT_ATTRIBUTES(PLAYER_PED_ID(),CA_DO_DRIVEBYS,FALSE)
sGodText = "AW_CLIMB_CRA"
iProgress++
ENDIF
BREAK
CASE 1
INIT_STAGE()
iProgress++
BREAK
CASE 2
IF IS_PLAYER_AT_LOCATION_ANY_MEANS(sLocatesData,<<-49.8470, -2404.4475, 5.0006>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,TRUE,"AW_DRIVE_TO_CRA")
ELSE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
SET_BLIP_ROUTE(sLocatesData.LocationBlip,FALSE)
ENDIF
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
REPLAY_RECORD_BACK_FOR_TIME(3.0, 3.0, REPLAY_IMPORTANCE_HIGHEST)
iProgress = 3
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-36.008926,-2398.947754,5.000000>>, <<-65.415092,-2398.950684,15.036324>>, 35.000000)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
REPLAY_RECORD_BACK_FOR_TIME(3.0, 3.0, REPLAY_IMPORTANCE_HIGHEST)
iProgress++
ELSE
REPLAY_RECORD_BACK_FOR_TIME(3.0, 3.0, REPLAY_IMPORTANCE_HIGHEST)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
iProgress = 3
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF NOT IS_PED_INJURED(pedFloyd)
IF iFloydHauler = 5
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneHandlerA1) > 0.6
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
TASK_LEAVE_VEHICLE(PLAYER_PED_ID(),vehHandler)
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehHandler,FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
iProgress++
ENDIF
ENDIF
BREAK
CASE 4
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_CLIMB_UP_CRANE")
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF IS_AUDIO_SCENE_ACTIVE("DH_1_HANDLER_START")
STOP_AUDIO_SCENE("DH_1_HANDLER_START")
ELSE
START_AUDIO_SCENE("DH_1_CLIMB_UP_CRANE")
SET_LABEL_AS_TRIGGERED("DH_1_CLIMB_UP_CRANE",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
sGodText = ""
iProgress--
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
IF iFloydHauler = 5
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneHandlerA1)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneHandlerA1) > 0.6
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
TASK_LEAVE_VEHICLE(PLAYER_PED_ID(),vehHandler)
ENDIF
SET_ENTITY_NO_COLLISION_ENTITY(pedFloyd,vehHandler,TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
IF IS_PLAYER_AT_LOCATION_ON_FOOT(sLocatesData,<<-49.8470, -2404.4475, 5.0006>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,TRUE,sGodText)
iProgress++
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-48.895756,-2405.313965,4.250962>>, <<-50.765312,-2405.310059,7.750961>>, 2.500000)
OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-48.721390,-2405.790039,7.760520>>, <<-50.121132,-2405.803711,9.510519>>, 1.000000)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
//I've been waiting on a crane driver for over an hour
CASE 5
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-53.425056,-2407.837402,14.789022>>, <<-49.817219,-2407.882324,17.539022>>, 1.250000)
IF NOT IS_PED_CLIMBING(PLAYER_PED_ID())
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),1.0)
ENDIF
ELSE
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),2.0)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_MCS1_P2")
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-51.256855,-2406.551514,18.558769>>, <<-50.185169,-2406.576416,20.952829>>, 1.500000)
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_MCS1_P2", CONV_PRIORITY_HIGH)
TASK_LOOK_AT_ENTITY(pedDockWorker[14],PLAYER_PED_ID(),-1,SLF_WHILE_NOT_IN_FOV,SLF_LOOKAT_HIGH)
REPLAY_RECORD_BACK_FOR_TIME(5.0, 8.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_MCS1_P2",TRUE)
ENDIF
ENDIF
ELSE
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_PED_CLIMBING(PLAYER_PED_ID())
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_getin")
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_getin", CONV_PRIORITY_HIGH)
SET_LABEL_AS_TRIGGERED("DS1_getin",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
SET_GPS_ACTIVE(FALSE)
ENDIF
IF IS_PLAYER_AT_LOCATION_ON_FOOT(sLocatesData,<<-52.2530, -2413.9524, 20.5856>>,<<0.100000,0.100000,LOCATE_SIZE_HEIGHT>>,TRUE,"")
ELSE
IF NOT IS_PED_CLIMBING(PLAYER_PED_ID())
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-51.946228,-2414.439209,20.533628>>, <<-51.964249,-2413.213867,22.335625>>, 1.750000)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehHandler)
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
ENDIF
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
REQUEST_ANIM_DICT("missheistdockssetup1trevor_crane")
REMOVE_BLIP(sLocatesData.LocationBlip)
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
//P_Dock_RTG_LD_Cab
//s_crane.obj_cabin
//missheistdockssetup1ig
CASE 6
REQUEST_ANIM_DICT("missheistdockssetup1trevor_crane")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1trevor_crane")
IF NOT DOES_CAM_EXIST(camMain)
camMain = CREATE_CAM("DEFAULT_ANIMATED_CAMERA", TRUE)
ENDIF
RELEASE_NAMED_SCRIPT_AUDIO_BANK("Container_Lifter")
RELEASE_NAMED_SCRIPT_AUDIO_BANK("Creak_V1")
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
PLAY_CAM_ANIM(camMain, "get_in_cam", "missheistdockssetup1trevor_crane",<< -53.139, -2415.768, 22.604 >>,<< 0.000, 0.000, -178.200 >>)
SET_CAM_ACTIVE(camMain,TRUE)
RENDER_SCRIPT_CAMS(TRUE,FALSE)
ssCraneAnims = CREATE_SYNCHRONIZED_SCENE(<< -0.100, -0.100, -0.350 >>,<< 0.000, 0.000, 0.000 >>)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(ssCraneAnims,s_crane.obj_cabin,-1)
TASK_SYNCHRONIZED_SCENE (PLAYER_PED_ID(), ssCraneAnims, "missheistdockssetup1trevor_crane", "get_in", INSTANT_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_NONE,RBF_NONE )
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(ssCraneAnims,TRUE)
iProgress++
ENDIF
BREAK
CASE 7
DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
SETUP_MISSION_REQUIREMENT(REQ_CRANE_CONTAINERS)
REQUEST_ANIM_DICT("missheistdockssetup1trevor_crane")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1trevor_crane")
IF IS_SYNCHRONIZED_SCENE_RUNNING(ssCraneAnims)
IF GET_SYNCHRONIZED_SCENE_PHASE(ssCraneAnims) = 1
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
ssCraneAnims = CREATE_SYNCHRONIZED_SCENE(<< -0.100, -0.100, -0.350 >>,<< 0.000, 0.000, 0.000 >>)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(ssCraneAnims,s_crane.obj_cabin,-1)
TASK_SYNCHRONIZED_SCENE (PLAYER_PED_ID(), ssCraneAnims, "missheistdockssetup1trevor_crane", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT )
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(ssCraneAnims,FALSE)
SET_SYNCHRONIZED_SCENE_LOOPED(ssCraneAnims,TRUE)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_PED_CLIMBING(PLAYER_PED_ID())
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_climbin", CONV_PRIORITY_HIGH)
SET_LABEL_AS_TRIGGERED("DS1_climbin",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
CASE 8
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_ENTITY_COORDS(vehHandler,<< -166.8165, -2460.6479, 5.2973 >>)
DELETE_VEHICLE(vehHandler)
SET_MODEL_AS_NO_LONGER_NEEDED(HANDLER)
ENDIF
REMOVE_WAYPOINT_RECORDING("cranassist")
iProgress++
BREAK
CASE 9
IF PRE_STREAM_MISSION_STAGE()
RESET_MISSION_STAGE_VARIABLES()
ADVANCE_MISSION_STAGE()
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC CUTSCENE_FINISHED_CRANE()
SETTIMERA(0)
bcutsceneplaying = TRUE
HIDE_HUD_AND_RADAR_THIS_FRAME()
WHILE bcutsceneplaying //holds the script inside here until cutscene is complete
WAIT(0)
HIDE_HUD_AND_RADAR_THIS_FRAME()
//CONTROL_SPEECH()
// #IF IS_DEBUG_BUILD // allows j/p skip to work even in cutscene
// IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)OR IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P)
// bcutsceneplaying = FALSE
// ENDIF
// #ENDIF
// IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY() AND icutsceneprog >1 // controls the cutscene skip
// SETTIMERB(6001)
// CONTROL_FADE_OUT(500)
// IF NOT IS_PED_INJURED(PLAYER_PED_ID())
// SET_ENTITY_VISIBLE(PLAYER_PED_ID(),TRUE)
// IF NOT IS_ENTITY_ATTACHED(PLAYER_PED_ID())
// FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
// ENDIF
// ENDIF
// icutsceneprog = 3
// ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_10j")
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_10j", CONV_PRIORITY_HIGH)
SET_LABEL_AS_TRIGGERED("DS1_10j",TRUE)
ENDIF
ENDIF
//PRINTSTRING("icutsceneprog:")PRINTINT(icutsceneprog)PRINTNL()
SWITCH icutsceneprog
CASE 0
REQUEST_ANIM_DICT("missheistdockssetup1trevor_crane")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1trevor_crane")
CLEAR_TIMECYCLE_MODIFIER()
bContainerSetUpForDrive = FALSE
//CREATE_CRANE()
IF NOT IS_PED_INJURED(pedDockWorker[13])
CLEAR_ALL_PED_PROPS(pedDockWorker[13])
ENDIF
INT i
REPEAT COUNT_OF(s_containers) i
IF DOES_ENTITY_EXIST( s_containers[i].obj_main )
AND NOT IS_ENTITY_DEAD( s_containers[i].obj_main )
IF IS_ENTITY_ATTACHED( s_containers[i].obj_main )
DETACH_ENTITY( s_containers[i].obj_main )
SET_ENTITY_COORDS(s_containers[i].obj_main, <<-110.211067, -2416.435303, 6.472473>>)
SET_ENTITY_ROTATION(s_containers[i].obj_main, <<-0.051485, 0.000001, 91.338051>>)
IF DOES_ENTITY_EXIST(vehTrailer2)
AND NOT IS_ENTITY_DEAD(vehTrailer2)
ATTACH_ENTITY_TO_ENTITY(s_containers[i].obj_main,vehTrailer2,0,GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehTrailer2, <<-110.211067, -2416.435303, 6.472473>>),<<0,0,0>>,TRUE,FALSE,TRUE)
ENDIF
ENDIF
ENDIF
ENDREPEAT
//Player Control
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
CLEAR_PRINTS()
CLEAR_HELP(TRUE)
DISABLE_CELLPHONE(FALSE)
DESTROY_ALL_CAMS()
RENDER_SCRIPT_CAMS(FALSE,FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
s_crane.f_crane_offset = 0.297
s_crane.f_crane_vel = 0.0
bInitStage = TRUE
INIT_STAGE()
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
KILL_ANY_CONVERSATION()
REMOVE_PED_FOR_DIALOGUE(sSpeech,8)
ADD_PED_FOR_DIALOGUE(sSpeech,8,pedDockWorker[13],"SIGNALMAN")
IF DOES_ENTITY_EXIST(pedDockWorker[14])
DELETE_PED(pedDockWorker[14])
ENDIF
IF NOT DOES_CAM_EXIST(camMain)
camMain = CREATE_CAM("DEFAULT_ANIMATED_CAMERA", TRUE)
ENDIF
SET_ENTITY_COORDS_NO_OFFSET(s_crane.obj_main, <<-110.2902, -2415.7900, 5.0000>>)
PLAY_CAM_ANIM(camMain, "get_out_cam", "missheistdockssetup1trevor_crane",<< -108.078, -2413.115, 20.586 >>,<< 0.000, 0.000, 180.000 >>)
SET_CAM_ACTIVE(camMain,TRUE)
RENDER_SCRIPT_CAMS(TRUE,FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
ssCraneAnims = CREATE_SYNCHRONIZED_SCENE(<< -0.100, -0.10, -0.350 >>,<< 0.000, 0.000, 0.000 >>)
SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(ssCraneAnims,TRUE)
SET_SYNCHRONIZED_SCENE_LOOPED(ssCraneAnims,FALSE)
ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY(ssCraneAnims,s_crane.obj_cabin,-1)
TASK_SYNCHRONIZED_SCENE (PLAYER_PED_ID(), ssCraneAnims, "missheistdockssetup1trevor_crane", "get_out", NORMAL_BLEND_IN, SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_DONT_INTERRUPT)
SET_AUDIO_FLAG("MobileRadioInGame", FALSE)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
icutsceneprog ++
ENDIF
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("misslsdhs")
IF NOT IS_PED_INJURED(pedDockWorker[13])
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL,PLAYER_PED_ID(),-1)
TASK_PLAY_ANIM(NULL,"misslsdhs", "reaction_to_truck",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT | AF_USE_KINEMATIC_PHYSICS)
TASK_PLAY_ANIM(NULL,"misslsdhs", "wave_truck",NORMAL_BLEND_IN,SLOW_BLEND_OUT,-1,AF_DEFAULT | AF_USE_KINEMATIC_PHYSICS)
TASK_START_SCENARIO_IN_PLACE(NULL,"WORLD_HUMAN_CLIPBOARD")
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedDockWorker[13], seqMain)
ENDIF
SET_ENTITY_VISIBLE(PLAYER_PED_ID(),TRUE)
IF NOT IS_ENTITY_ATTACHED(PLAYER_PED_ID())
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
ENDIF
SET_ENTITY_COLLISION(s_crane.obj_cabin,TRUE)
SET_FOLLOW_PED_CAM_VIEW_MODE(cCam)
icutsceneprog ++
ENDIF
BREAK
CASE 2
IF IS_SYNCHRONIZED_SCENE_RUNNING(ssCraneAnims)
IF GET_SYNCHRONIZED_SCENE_PHASE(ssCraneAnims) > 0.95
//STOP_SYNCHRONIZED_ENTITY_ANIM(PLAYER_PED_ID(),NORMAL_BLEND_OUT,TRUE)
IF GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT) = CAM_VIEW_MODE_FIRST_PERSON
TASK_TURN_PED_TO_FACE_COORD(PLAYER_PED_ID(), <<-105.3195, -2603.9893, 5.0007>>)
ELSE
CLEAR_PED_TASKS(PLAYER_PED_ID())
ENDIF
//TASK_ACHIEVE_HEADING(PLAYER_PED_ID(),179.9661)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
SET_WIDESCREEN_BORDERS(FALSE,0)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(-90.000)
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
CONTROL_FADE_IN(500)
CLEAR_PRINTS()
RENDER_SCRIPT_CAMS(FALSE, TRUE,1000)
// IF DOES_CAM_EXIST(camMain)
// DESTROY_CAM(camMain)
// ENDIF
SET_WIDESCREEN_BORDERS(FALSE,0)
//SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
SET_TIME_SCALE(1.0)
DISPLAY_RADAR(TRUE)
REMOVE_ANIM_DICT("misslsdhs")
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
DISPLAY_HUD(TRUE)
DISABLE_CELLPHONE(FALSE)
CLEAR_HELP()
KILL_ANY_CONVERSATION()
REPLAY_STOP_EVENT()
HIDE_ACTIVE_PHONE(FALSE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
icutsceneprog = 0
brunfailchecks = FALSE
bcutsceneplaying = FALSE
//ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDWHILE
ENDPROC
//PURPOSE: Trevor uses the crane
PROC MISSION_STAGE_7_PROC()
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_USE_CRANE")
IF IS_AUDIO_SCENE_ACTIVE("DH_1_CLIMB_UP_CRANE")
STOP_AUDIO_SCENE("DH_1_CLIMB_UP_CRANE")
ELSE
START_AUDIO_SCENE("DH_1_USE_CRANE")
SET_LABEL_AS_TRIGGERED("DH_1_USE_CRANE",TRUE)
ENDIF
ENDIF
SET_MAP_CRANE_VISIBLE(FALSE)
CREATE_THE_DOCKS_STUFF()
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2170341
SWITCH iProgress
CASE 0
SETUP_PC_CONTROLS()
cCam = GET_CAM_VIEW_MODE_FOR_CONTEXT(CAM_VIEW_MODE_CONTEXT_ON_FOOT)
IF bIsJumpingDirectlyToStage
s_crane.f_crane_offset = 0.297
s_crane.f_crane_vel = 0.0
v_crane_pos = << -53.6982, -2415.7900, 5.0500 >> //<< -53.267, -2415.863, 5.066 >>
vSpreaderPosition = <<-53.02, -2416.04, 14.75>>
SET_LABEL_AS_TRIGGERED("DS1_10",FALSE)
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_ENTITY_COORDS(vehHandler,<< -166.8165, -2460.6479, 5.2973 >>)
DELETE_VEHICLE(vehHandler)
SET_MODEL_AS_NO_LONGER_NEEDED(HANDLER)
ENDIF
WHILE NOT SETUP_MISSION_REQUIREMENT(REQ_CRANE)
OR NOT SETUP_MISSION_REQUIREMENT(REQ_HAULER_WITH_TRAILER)
OR NOT SETUP_MISSION_REQUIREMENT(REQ_CRANE_CONTAINERS)
WAIT(0)
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_ThePortOfLSHeistSetup")
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler)
AND IS_VEHICLE_DRIVEABLE(vehTrailer1)
ATTACH_VEHICLE_TO_TRAILER(vehFirstHauler,vehTrailer1)
FREEZE_ENTITY_POSITION(vehFirstHauler,TRUE)
FREEZE_ENTITY_POSITION(vehTrailer1,TRUE)
SET_VEHICLE_EXTRA(vehTrailer1,1,TRUE)
SET_VEHICLE_STRONG(vehTrailer1, TRUE)
SET_VEHICLE_HAS_STRONG_AXLES(vehTrailer1, TRUE)
ENDIF
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
IF SETUP_PEDS_FOR_DIALOGUE()
IF NOT IS_PED_INJURED(pedFloyd)
SET_ENTITY_COORDS(pedFloyd,<<-114.33, -2426.18, 6.00>>)
SET_ENTITY_HEADING(pedFloyd,-4.84)
ENDIF
Blip_player = GET_MAIN_PLAYER_BLIP_ID()
IF DOES_BLIP_EXIST(Blip_player)
SET_BLIP_ALPHA(Blip_player,0)
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[12])
DELETE_PED(pedDockWorker[12])
ENDIF
g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
iMissionDialogue = 12
iCraneHelp = 0
REMOVE_IPL("pcranecont")
SWITCH_CRANE_VISIBILITY(TRUE)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(6,"Use Crane")
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
SET_USER_RADIO_CONTROL_ENABLED(FALSE)
CASCADE_SHADOWS_ENABLE_FREEZER( false)
iProgress++
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("DS1_10",TRUE)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(6,"Use Crane")
SETUP_PEDS_FOR_DIALOGUE()
RENDER_SCRIPT_CAMS(FALSE,FALSE)
DESTROY_CAM(camMain)
MANAGE_CRANE(TRUE)
bCreateFirstHauler = FALSE
bTrailerAttachements = FALSE
iCraneHelp = 0
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
SET_USER_RADIO_CONTROL_ENABLED(FALSE)
CASCADE_SHADOWS_ENABLE_FREEZER( false)
iProgress++
ENDIF
BREAK
CASE 1//Create objective specific items- print objective, add blips etc
IF NOT bIsJumpingDirectlyToStage
MANAGE_CRANE(TRUE)
IF INITIALISE_CRANE()
//MANAGE_CRANE(TRUE)
IF NOT IS_PED_INJURED(pedDockWorker[13])
SET_ENTITY_COORDS(pedDockWorker[13],<<-116.91, -2401.23, 6.00>>)
SET_ENTITY_HEADING(pedDockWorker[13],163.87)
ENDIF
IF NOT IS_PED_INJURED(s_sp_forklift_supervisorA[0].ped)
IF DOES_ENTITY_EXIST(objPencil[1])
DELETE_OBJECT(objPencil[1])
ENDIF
IF DOES_ENTITY_EXIST(objClipboard[1])
DELETE_OBJECT(objClipboard[1])
ENDIF
TASK_WANDER_IN_AREA(s_sp_forklift_supervisorA[0].ped,<<-149.3773, -2482.7092, 5.0189>>,15)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehHandler)
SET_ENTITY_COORDS(vehHandler,<< -166.8165, -2460.6479, 5.2973 >>)
DELETE_VEHICLE(vehHandler)
SET_MODEL_AS_NO_LONGER_NEEDED(HANDLER)
ELSE
DELETE_VEHICLE(vehHandler)
SET_MODEL_AS_NO_LONGER_NEEDED(HANDLER)
ENDIF
PRINTSTRING("PASSING THROUGH HERE - 2")//PRINTNL()
iProgress++
ENDIF
ELSE
IF INITIALISE_CRANE()
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler) AND IS_VEHICLE_DRIVEABLE(vehTrailer1)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFirstHauler)
SET_VEHICLE_EXTRA(vehTrailer1,1,TRUE)
ATTACH_VEHICLE_TO_TRAILER(vehFirstHauler,vehTrailer1)
SET_ENTITY_PROOFS(vehTrailer1,FALSE,FALSE,FALSE,TRUE,FALSE)
ENDIF
IF NOT IS_PED_INJURED(pedDockWorker[11]) AND IS_VEHICLE_DRIVEABLE(vehDocks[0])
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehDocks[0])
IF IS_PED_IN_VEHICLE(pedDockWorker[11],vehDocks[0])
START_PLAYBACK_RECORDED_VEHICLE(vehDocks[0],1,"AWDock1")
SET_PLAYBACK_SPEED(vehDocks[0],0.8)
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler) AND DOES_ENTITY_EXIST(vehTrailer1)
IF NOT IS_PED_INJURED(pedDockWorker[13])
SET_ENTITY_COORDS(pedDockWorker[13],<<-116.91, -2401.23, 6.00>>)
SET_ENTITY_HEADING(pedDockWorker[13],163.87)
ENDIF
FREEZE_ENTITY_POSITION(vehFirstHauler,TRUE)
FREEZE_ENTITY_POSITION(vehTrailer1,TRUE)
iProgress++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
MANAGE_CRANE(TRUE)
IF bIsJumpingDirectlyToStage = FALSE
PRINTSTRING("PASSING THROUGH HERE - 2")//PRINTNL()
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_main)
bIsJumpingDirectlyToStage = FALSE
REQUEST_ANIM_DICT("misslsdhs")
s_crane.b_container_attached = FALSE
INIT_STAGE()
IF DOES_CAM_EXIST(cam_interp)
PRINTSTRING("INTERPING")//PRINTNL()
SET_CAM_ACTIVE_WITH_INTERP(cam_cutscene,cam_interp,2000)
ENDIF
SET_AUDIO_FLAG("MobileRadioInGame", TRUE)
SET_RADIO_TO_STATION_NAME("RADIO_04_PUNK")
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(DH1_CRANE_TIME)
HANG_UP_AND_PUT_AWAY_PHONE()
CASCADE_SHADOWS_SET_CASCADE_BOUNDS_SCALE(0.2)
iProgress++
ENDIF
BREAK
CASE 3
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_RADIO_WHEEL)
IF NOT bIsJumpingDirectlyToStage
IF NOT bCreateFirstHauler
IF SETUP_MISSION_REQUIREMENT(REQ_HAULER_WITH_TRAILER)
bCreateFirstHauler = TRUE
ENDIF
ENDIF
ENDIF
IF NOT bTrailerAttachements
IF IS_VEHICLE_DRIVEABLE(vehFirstHauler)
IF IS_VEHICLE_DRIVEABLE(vehTrailer1)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFirstHauler)
ATTACH_VEHICLE_TO_TRAILER(vehFirstHauler,vehTrailer1)
FREEZE_ENTITY_POSITION(vehFirstHauler,TRUE)
FREEZE_ENTITY_POSITION(vehTrailer1,TRUE)
SET_VEHICLE_EXTRA(vehTrailer1,1,TRUE)
bTrailerAttachements = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ALLOW_ALTERNATIVE_SCRIPT_CONTROLS_LAYOUT(PLAYER_CONTROL)
ALLOW_ALTERNATIVE_SCRIPT_CONTROLS_LAYOUT(FRONTEND_CONTROL)
//SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
MANAGE_CRANE()
MANAGE_CRANE_HELP()
IF bCraneSectionComplete
IF NOT IS_PED_INJURED(pedDockWorker[13])
IF HAS_LABEL_BEEN_TRIGGERED("CLAMP SOUND")
PRINTSTRING("STOPPEDSOUND")PRINTNL()
STOP_SOUND(iCraneSound)
SET_LABEL_AS_TRIGGERED("CLAMP SOUND",FALSE)
ENDIF
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED()
REMOVE_PED_FOR_DIALOGUE(sSpeech,8)
ADD_PED_FOR_DIALOGUE(sSpeech,8,pedDockWorker[13],"SIGNALMAN")
iProgress++
ENDIF
ENDIF
BREAK
CASE 4
CUTSCENE_FINISHED_CRANE()
IF b_is_audio_scene_active
STOP_AUDIO_SCENE("CAR_THEFT_EXPORT_CARS_CRANE_SECTION_SCENE")
b_is_audio_scene_active = FALSE
ENDIF
CASCADE_SHADOWS_INIT_SESSION()
CASCADE_SHADOWS_ENABLE_FREEZER(TRUE)
CASCADE_SHADOWS_INIT_SESSION()
CLEANUP_PC_CONTROLS()
iProgress++
BREAK
CASE 5
Blip_player = GET_MAIN_PLAYER_BLIP_ID()
IF DOES_BLIP_EXIST(Blip_player)
SET_BLIP_ALPHA(Blip_player,100)
ENDIF
SAFE_REMOVE_BLIP(blipCrane)
SAFE_REMOVE_BLIP(blip_current_destination)
STOP_GAMEPLAY_HINT()
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
FREEZE_ENTITY_POSITION(vehFloydTruck,TRUE)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehFloydTruck,FALSE)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
FREEZE_ENTITY_POSITION(vehTrailer2,TRUE)
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
REMOVE_ANIM_DICT("missheistdockssetup1trevor_crane")
SETTIMERA(0)
SET_AUDIO_FLAG("MobileRadioInGame", FALSE)
SET_USER_RADIO_CONTROL_ENABLED(TRUE)
iProgress++
BREAK
CASE 6
IF PRE_STREAM_MISSION_STAGE()
REMOVE_ANIM_DICT("map_objects")
CLEAN_OBJECTIVE_BLIP_DISPLAY()
RESET_MISSION_STAGE_VARIABLES()
ADVANCE_MISSION_STAGE()
ENDIF
BREAK
ENDSWITCH
ENDPROC
FUNC BOOL IS_ENTITY_IN_CAMERA_PHONE_FRAME(PED_INDEX PedIndex, FLOAT fThisXTolerance = 0.23, FLOAT fThisYTolerance = 0.47)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF DOES_ENTITY_EXIST(PedIndex)
IF NOT IS_ENTITY_DEAD(PedIndex)
IF IS_ENTITY_ON_SCREEN(PedIndex)
IF IS_SPHERE_VISIBLE(GET_ENTITY_COORDS(PedIndex), 0.001)
FLOAT fXPosition, fYPosition
GET_SCREEN_COORD_FROM_WORLD_COORD(GET_ENTITY_COORDS(PedIndex), fXPosition, fYPosition)
IF (fXPosition > 0.5 - fThisXTolerance) AND (fXPosition < 0.5 + fThisXTolerance)
AND (fYPosition > 0.5 - fThisYTolerance) AND (fYPosition < 0.5 + fThisYTolerance)
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
BOOL bTakePhotoStat
BOOL bPerfectSurveillance = TRUE
BOOL bAtNeedToFreeze = FALSE
INT iTextMessageDelay
//camera section
PROC MISSION_STAGE_8_PROC()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-108.585716,-2429.462158,26.250675>>, <<-108.808174,-2400.434082,16.000675>>, 13.000000)
SET_PED_CAPSULE(PLAYER_PED_ID(),0.25)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_TAKE_PHOTOS")
IF IS_AUDIO_SCENE_ACTIVE("DH_1_USE_CRANE")
STOP_AUDIO_SCENE("DH_1_USE_CRANE")
ELSE
START_AUDIO_SCENE("DH_1_TAKE_PHOTOS")
REPLAY_RECORD_BACK_FOR_TIME(4.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DH_1_TAKE_PHOTOS",TRUE)
ENDIF
ENDIF
IF iProgress > 0
IF NOT bTakePhotoStat
IF HAS_CELLPHONE_CAM_JUST_TAKEN_PIC()
INFORM_MISSION_STATS_OF_INCREMENT(DH1_PHOTOS_TAKEN)
bTakePhotoStat = TRUE
ENDIF
ELSE
IF NOT HAS_CELLPHONE_CAM_JUST_TAKEN_PIC()
bTakePhotoStat = FALSE
ENDIF
ENDIF
ENDIF
SET_MAP_CRANE_VISIBLE(FALSE)
IF iProgress > 2 AND iProgress != 66
MANAGE_PHONE_HELP()
//MANAGE_HELP_TEXT_UPDATE()
ENDIF
IF bAtNeedToFreeze = TRUE
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),0)
ELSE
IF NOT IS_ENTITY_IN_WATER(PLAYER_PED_ID())
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),1)
ENDIF
ENDIF
IF iProgress > 2
IF NOT HAS_LABEL_BEEN_TRIGGERED("START SKIP FADE")
IF bIsJumpingDirectlyToStage = TRUE
IF NOT IS_ENTITY_IN_AIR(PLAYER_PED_ID())
iJumpTimer = GET_GAME_TIMER()
SET_LABEL_AS_TRIGGERED("START SKIP FADE",TRUE)
ENDIF
ENDIF
ELSE
IF IS_SCREEN_FADED_OUT()
OR NOT IS_SCREEN_FADING_IN()
IF MANAGE_MY_TIMER(iJumpTimer,800)
INIT_STAGE()
bIsJumpingDirectlyToStage = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
SWITCH iProgress
CASE 0
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_1")
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_2")
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_3")
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_4")
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_5")
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_6")
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_7")
ASSISTED_MOVEMENT_REQUEST_ROUTE("pols_8")
bAtNeedToFreeze = FALSE
bPerfectSurveillance = TRUE
REPOSITION_LANDSCAPE_PHONE_FOR_LONG_SUBTITLES (TRUE)
bTakePhotoStat = FALSE
v_crane_pos = <<-110.2902, -2415.7900, 5.0500>>
vSpreaderPosition = <<-109.87, -2415.71, 14.67>>
IF bIsJumpingDirectlyToStage = TRUE
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
IF SETUP_MISSION_REQUIREMENT(REQ_CRANE)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(7,"Photograph Boat")
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
iProgress++
ENDIF
ELSE
g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(7,"Photograph Boat")
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
iProgress++
ENDIF
BREAK
CASE 1 //Create objective specific items- print objective, add blips etc
v_crane_pos = <<-110.2902, -2415.7900, 5.0500>>
IF bIsJumpingDirectlyToStage = TRUE
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
ENDIF
IF IS_RADAR_HIDDEN()
DISPLAY_RADAR(TRUE)
ENDIF
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
CLEAR_CONTACT_PICTURE_MESSAGE(CHAR_RON)
IF INITIALISE_CRANE(FALSE)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF SETUP_PEDS_FOR_DIALOGUE()
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
IF IS_SCREEN_FADED_OUT()
IF NOT IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<< -114.5969, -2406.8113, 22.2282 >>,<<2,2,2>>)
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -114.5969, -2406.8113, 22.2282 >>,TRUE)
SET_ENTITY_HEADING(PLAYER_PED_ID(),359.8527)
SET_PED_STEALTH_MOVEMENT(PLAYER_PED_ID(),FALSE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
DELETE_OBJECT(s_containers[1].obj_main)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_left_door)
DELETE_OBJECT(s_containers[1].obj_left_door)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_right_door)
DELETE_OBJECT(s_containers[1].obj_right_door)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
DELETE_OBJECT(s_containers[0].obj_main)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_left_door)
DELETE_OBJECT(s_containers[0].obj_left_door)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_right_door)
DELETE_OBJECT(s_containers[0].obj_right_door)
ENDIF
SET_VEHICLE_EXTRA(vehTrailer2,1,FALSE)
// SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(PLAYER_PED_ID(),TRUE)
DETACH_ENTITY(PLAYER_PED_ID(),TRUE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
IF NOT IS_PHONE_ONSCREEN()
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED,TRUE)
ENDIF
SETTIMERA(0)
iMissionDialogue = 13
iPhotosTaken = 0
iHelp = 0
IF DOES_ENTITY_EXIST(s_crane.obj_cabin)
SET_ENTITY_COLLISION(s_crane.obj_cabin,TRUE)
ENDIF
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
IF DOES_BLIP_EXIST(container0_blip)
REMOVE_BLIP(container0_blip)
ENDIF
IF DOES_BLIP_EXIST(container1_blip)
REMOVE_BLIP(container1_blip)
ENDIF
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF bIsJumpingDirectlyToStage = TRUE
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
ENDIF
IF DOES_ENTITY_EXIST(vehFloydTruck)
IF DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehFloydTruck)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_VEHICLE_ON_GROUND_PROPERLY(vehFloydTruck)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehTrailer2)
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
SET_VEHICLE_ON_GROUND_PROPERLY(vehTrailer2)
ENDIF
ENDIF
//SET_BIT (BitSet_CellphoneDisplay, g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE)
//INHIBIT_CELLPHONE_CAMERA_FUNCTIONS_FOR_DOCKS_SETUP(TRUE)
BYPASS_CELLPHONE_CAMERA_DEFAULT_SAVE_ROUTINE(TRUE)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
DISABLE_CELLPHONE(FALSE)
UNLOCK_MINIMAP_ANGLE()
IF bIsJumpingDirectlyToStage = FALSE
INIT_STAGE()
ENDIF
iProgress = 66
BREAK
CASE 66
IF bIsJumpingDirectlyToStage = TRUE
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH1_START")
TRIGGER_MUSIC_EVENT("DH1_START")
SET_LABEL_AS_TRIGGERED("DH1_START",TRUE)
ENDIF
IF IS_SCREEN_FADED_IN()
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_SNAP")
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_SNAP", CONV_PRIORITY_HIGH)
SET_LABEL_AS_TRIGGERED("DS1_SNAP",TRUE)
ENDIF
ELSE
IF bIsJumpingDirectlyToStage = FALSE
IF DOES_ENTITY_EXIST(s_crane.obj_main)
IF IS_PLAYER_AT_LOCATION_ON_FOOT(sLocatesData,<<-114.5757, -2407.0234, 22.4000>>,<<0.500000,0.500000,LOCATE_SIZE_HEIGHT>>,TRUE,"AW_VANTAGE")
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
REMOVE_BLIP(sLocatesData.LocationBlip)
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_VANTAGE")
CLEAR_PRINTS()
ENDIF
bAtNeedToFreeze = TRUE
iProgress = 3
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-114.597664,-2406.989258,22.045231>>, <<-112.793289,-2407.079346,24.337223>>, 1.750000)
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
REMOVE_BLIP(sLocatesData.LocationBlip)
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_VANTAGE")
CLEAR_PRINTS()
ENDIF
bAtNeedToFreeze = TRUE
iProgress = 3
ENDIF
ENDIF
ENDIF
ELSE
IF DOES_BLIP_EXIST(dest_blip)
REMOVE_BLIP(dest_blip)
ENDIF
REMOVE_BLIP(sLocatesData.LocationBlip)
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_VANTAGE")
CLEAR_PRINTS()
ENDIF
iProgress = 3
ENDIF
ENDIF
ENDIF
BREAK
CASE 3 //photo one
IF NOT HAS_LABEL_BEEN_TRIGGERED("AW_TAKE_PHOTO")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
PRINT_GOD_TEXT("AW_TAKE_PHOTO")
SET_LABEL_AS_TRIGGERED("AW_TAKE_PHOTO",TRUE)
ENDIF
ENDIF
IF IS_BIT_SET(BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PHOTO_H1A")
CLEAR_HELP()
ENDIF
ENDIF
IF NOT WOULD_ENTITY_BE_OCCLUDED(S_M_M_DOCKWORK_01,<< -84.0127, -2365.9124, 16.5003 >>)
AND IS_POINT_VISIBLE(<< -84.0127, -2365.9124, 16.5003 >>,0.2,200)
IF HAS_CELLPHONE_CAM_JUST_TAKEN_PIC()
IF NOT IS_CELLPHONE_CAMERA_IN_SELFIE_MODE()
CLEAR_HELP()
#IF IS_DEBUG_BUILD
PRINTSTRING("Photo is taken - 1")PRINTNL()
#ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
iCameraTimer = GET_GAME_TIMER()
iPhotosTaken = 1
iProgress = 99
ENDIF
IF iProgress != 99
IF bPerfectSurveillance
bPerfectSurveillance = FALSE
ENDIF
ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
PRINTSTRING("PHOTO NOT READY")PRINTNL()
#ENDIF
ENDIF
BREAK
CASE 99
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
IF NOT HAS_CELLPHONE_CAM_JUST_TAKEN_PIC()
IF NOT IS_PED_INJURED(pedMerc[0])
REQUEST_PED_VISIBILITY_TRACKING(pedMerc[0])
ENDIF
IF NOT IS_PED_INJURED(pedMerc[1])
REQUEST_PED_VISIBILITY_TRACKING(pedMerc[1])
ENDIF
IF NOT IS_PED_INJURED(pedMerc[2])
REQUEST_PED_VISIBILITY_TRACKING(pedMerc[2])
ENDIF
IF NOT IS_PED_INJURED(pedMerc[3])
REQUEST_PED_VISIBILITY_TRACKING(pedMerc[3])
ENDIF
iProgress = 4
ENDIF
BREAK
CASE 4 //photo two
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
ENDIF
IF IS_BIT_SET(BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PHOTO_H2A")
CLEAR_HELP()
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedMerc[0])
AND NOT IS_PED_INJURED(pedMerc[1])
AND NOT IS_PED_INJURED(pedMerc[2])
AND NOT IS_PED_INJURED(pedMerc[3])
PRINTSTRING("HERE-2")PRINTNL()
IF IS_TRACKED_PED_VISIBLE(pedMerc[0])
OR IS_TRACKED_PED_VISIBLE(pedMerc[1])
OR IS_TRACKED_PED_VISIBLE(pedMerc[2])
OR IS_TRACKED_PED_VISIBLE(pedMerc[3])
IF IS_ENTITY_IN_CAMERA_PHONE_FRAME(pedMerc[0],fXTolerance,fYTolerance)
OR IS_ENTITY_IN_CAMERA_PHONE_FRAME(pedMerc[1],fXTolerance,fYTolerance)
OR IS_ENTITY_IN_CAMERA_PHONE_FRAME(pedMerc[2],fXTolerance,fYTolerance)
OR IS_ENTITY_IN_CAMERA_PHONE_FRAME(pedMerc[3],fXTolerance,fYTolerance)
IF HAS_CELLPHONE_CAM_JUST_TAKEN_PIC()
IF NOT IS_CELLPHONE_CAMERA_IN_SELFIE_MODE()
CLEAR_HELP()
#IF IS_DEBUG_BUILD
PRINTSTRING("Photo is taken - 2")PRINTNL()
#ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
iPhotosTaken = 2
iCameraTimer = GET_GAME_TIMER()
iProgress = 98
ENDIF
IF iProgress != 98
IF bPerfectSurveillance
bPerfectSurveillance = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 98
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
IF NOT HAS_CELLPHONE_CAM_JUST_TAKEN_PIC()
iProgress = 5
ENDIF
BREAK
CASE 5 //photo three
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
//REMOVE SPECIFIC OBJECTIVES
IF NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
ENDIF
IF IS_BIT_SET(BitSet_CellphoneDisplay, g_BS_PICTURE_TAKE_BUTTON_PRESSED)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PHOTO_H2A")
CLEAR_HELP()
ENDIF
ENDIF
IF NOT WOULD_ENTITY_BE_OCCLUDED(S_M_M_DOCKWORK_01,<< -220.3576, -2365.8496, 28.6856 >>)
IF HAS_CELLPHONE_CAM_JUST_TAKEN_PIC() AND MANAGE_MY_TIMER(iCameraTimer,2200)
IF NOT IS_CELLPHONE_CAMERA_IN_SELFIE_MODE()
IF IS_CELLPHONE_CAMERA_INHIBITED_FOR_DOCKS_SETUP()
INHIBIT_CELLPHONE_CAMERA_FUNCTIONS_FOR_DOCKS_SETUP(FALSE)
ENDIF
ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(TRUE)
PRINT_GOD_TEXT("PHOTO_OB1")
iPhotosTaken = 3
#IF IS_DEBUG_BUILD
PRINTSTRING("Photo is taken - 3")PRINTNL()
#ENDIF
iProgress++
SETTIMERA(0)
ENDIF
IF iProgress != 6
IF bPerfectSurveillance
bPerfectSurveillance = FALSE
ENDIF
ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
PRINTSTRING("PHOTO NOT READY")PRINTNL()
#ENDIF
ENDIF
BREAK
CASE 6
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
IF IS_CONTACTS_LIST_ON_SCREEN()
IF IS_PHONE_ONSCREEN()
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(DH1_PERFECT_SURVEILLANCE)
FORCE_SELECTION_OF_THIS_CONTACT_ONLY(CHAR_RON)
iProgress++
ENDIF
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
ENDIF
BREAK
CASE 7 //send the photos
IF HAS_CONTACT_RECEIVED_PICTURE_MESSAGE(CHAR_RON)
REPLAY_RECORD_BACK_FOR_TIME(4.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
bAtNeedToFreeze = FALSE
iProgress++
ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(FALSE)
SETTIMERA(0)
ENDIF
BREAK
CASE 8 //delay to show sending
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_PHONE_RON")
IF IS_AUDIO_SCENE_ACTIVE("DH_1_TAKE_PHOTOS")
STOP_AUDIO_SCENE("DH_1_TAKE_PHOTOS")
ELSE
START_AUDIO_SCENE("DH_1_PHONE_RON")
SET_LABEL_AS_TRIGGERED("DH_1_PHONE_RON",TRUE)
ENDIF
ENDIF
IF TIMERA() > 2000
bcutsceneplaying = FALSE
BYPASS_CELLPHONE_CAMERA_DEFAULT_SAVE_ROUTINE(FALSE)
SETTIMERA(0)
iTextMessageDelay = GET_GAME_TIMER()
iProgress++
ENDIF
BREAK
CASE 9
IF TIMERA() > 2000
//CUTSCENE_SPY_ON_DOCKS()
iProgress++
ENDIF
BREAK
CASE 10
IF PRE_STREAM_MISSION_STAGE()
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehFloydTruck,TRUE)
ENDIF
TRIGGER_MUSIC_EVENT("DH1_STOP")
REPOSITION_LANDSCAPE_PHONE_FOR_LONG_SUBTITLES (FALSE)
RESET_MISSION_STAGE_VARIABLES()
eMissionStage = MISSION_STAGE_10
ENDIF
BREAK
ENDSWITCH
ENDPROC
/// PURPOSE:
/// Run the Merryweather cutscene
PROC RUN_MERRY_WEATHER_CUTSCENE()
bcutsceneplaying = TRUE
WHILE bcutsceneplaying
WAIT(0)
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_ThePortOfLSHeistSetup")
DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, 1.0)
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID,DOORSTATE_FORCE_OPEN_THIS_FRAME)
IF NOT DOES_ENTITY_EXIST(vanByDocks)
SETUP_MISSION_REQUIREMENT(REQ_CAR_TO_DRIVE_FINAL_STAGE)
ENDIF
IF e_section_stage = SECTION_STAGE_SETUP
IF b_is_jumping_directly_to_stage
b_is_jumping_directly_to_stage = FALSE
ELSE
IF i_current_event = 0
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@kick_idle")
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@main_action")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_9@main_action")
AND HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_9@main_action")
bcutsceneplaying = TRUE
bClearCutscenArea = FALSE
REQUEST_CUTSCENE("LSDHS_MCS_2")
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_VEH_RADIO_STATION(vehFloydTruck, "OFF")
ENDIF
i_current_event++
ENDIF
ELIF i_current_event = 1
IF HAS_CUTSCENE_LOADED()
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ELSE
WAIT(0)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
REGISTER_ENTITY_FOR_CUTSCENE(vehFloydTruck, "Trevors_Lorry", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
SET_VEHICLE_DOOR_CONTROL(vehFloydTruck,SC_DOOR_FRONT_LEFT,DT_DOOR_INTACT,0)
SET_VEHICLE_DOOR_CONTROL(vehFloydTruck,SC_DOOR_FRONT_RIGHT,DT_DOOR_INTACT,0)
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
REGISTER_ENTITY_FOR_CUTSCENE(pedFloyd, "Floyd", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
IF NOT IS_PED_INJURED(pedMerc[4])
REGISTER_ENTITY_FOR_CUTSCENE(pedMerc[4], "Guard_kick_Floyd_back", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
IF NOT IS_PED_INJURED(pedMerc[5])
REGISTER_ENTITY_FOR_CUTSCENE(pedMerc[5], "Office_guard", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
IF NOT IS_PED_INJURED(pedMerc[6])
REGISTER_ENTITY_FOR_CUTSCENE(pedMerc[6], "Guard_with_gun", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
ENDIF
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
b_skipped_mocap = FALSE
i_current_event = 0
e_section_stage = SECTION_STAGE_RUNNING
ENDIF
ENDIF
ENDIF
ENDIF
IF e_section_stage = SECTION_STAGE_RUNNING
IF bClearCutscenArea = TRUE
IF NOT b_skipped_mocap
IF IS_CUTSCENE_SKIP_BUTTON_PRESSED()
#IF IS_DEBUG_BUILD
e_section_stage = SECTION_STAGE_SKIP
#ENDIF
PRINTSTRING("J SKIPPED")//PRINTNL()
b_skipped_mocap = TRUE
ENDIF
ENDIF
ENDIF
IF IS_CUTSCENE_PLAYING()
IF bClearCutscenArea = FALSE
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
SET_VEHICLE_ON_GROUND_PROPERLY(vehTrailer2)
ENDIF
CLEAR_AREA(<< 476.4661, -3040.6094, 6.0984 >>,100,TRUE,TRUE)
bClearCutscenArea = TRUE
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DAMAGE FLOYD")
ENTITY_INDEX entityFloyd
PED_INDEX cutsceneFloyd
entityFloyd = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY("Floyd", CS_FLOYD)
IF DOES_ENTITY_EXIST(entityFloyd)
cutsceneFloyd = GET_PED_INDEX_FROM_ENTITY_INDEX(entityFloyd)
ENDIF
IF NOT IS_PED_INJURED(cutsceneFloyd)
IF HAS_ANIM_EVENT_FIRED(entityFloyd,GET_HASH_KEY("Floyd_Beaten"))
IF DOES_ENTITY_EXIST(entityFloyd)
AND NOT IS_ENTITY_DEAD(entityFloyd)
APPLY_PED_DAMAGE_DECAL(GET_PED_INDEX_FROM_ENTITY_INDEX(entityFloyd), PDZ_HEAD, 0.426, 0.755, 218.157, 1.0, 1.0, 3, TRUE, "bruise")
PRINTSTRING("DAMAGE FLOYD")PRINTNL()
SET_LABEL_AS_TRIGGERED("DAMAGE FLOYD", TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_CAMERA()
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_BRIEFCASE_02,-1,TRUE)
//SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED,TRUE)
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_ON_FOOT_RUN, TRUE, FAUS_CUTSCENE_EXIT)
IF GET_FOLLOW_PED_CAM_VIEW_MODE() != CAM_VIEW_MODE_FIRST_PERSON
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_RUN, 3000, 1.2757, FALSE)
ELSE
SIMULATE_PLAYER_INPUT_GAIT(PLAYER_ID(), PEDMOVE_SPRINT, 3000, 1.2757, FALSE)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Floyd")
IF NOT IS_PED_INJURED(pedFloyd)
IF DOES_ENTITY_EXIST(pedFloyd)
AND DOES_ENTITY_EXIST(pedMerc[4])
AND DOES_ENTITY_EXIST(pedMerc[5])
IF NOT IS_PED_INJURED(pedFloyd)
AND NOT IS_PED_INJURED(pedMerc[4])
AND NOT IS_PED_INJURED(pedMerc[5])
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackAbuse)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedFloyd,TRUE)
REMOVE_PED_FROM_GROUP(pedFloyd)
sceneBlackAbuse = CREATE_SYNCHRONIZED_SCENE(<< 478.596, -3116.911, 5.069 >>,<< -0.000, -0.000, 53.446 >>)
TASK_SYNCHRONIZED_SCENE (pedFloyd,sceneBlackAbuse, "missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_dockworker", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS|SYNCED_SCENE_DONT_INTERRUPT,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (pedMerc[4], sceneBlackAbuse,"missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_guard1", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS|SYNCED_SCENE_DONT_INTERRUPT,RBF_PLAYER_IMPACT )
TASK_SYNCHRONIZED_SCENE (pedMerc[5], sceneBlackAbuse, "missheistdockssetup1ig_13@kick_idle", "guard_beatup_kickidle_guard2", REALLY_SLOW_BLEND_IN, NORMAL_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS|SYNCED_SCENE_DONT_INTERRUPT,RBF_PLAYER_IMPACT )
SET_SYNCHRONIZED_SCENE_LOOPED(sceneBlackAbuse,TRUE)
SET_PED_KEEP_TASK(pedFloyd,TRUE)
SET_PED_KEEP_TASK(pedMerc[4],TRUE)
SET_PED_KEEP_TASK(pedMerc[5],TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_CUTSCENE_FINISHED()
AND bClearCutscenArea = TRUE
IF DOES_ENTITY_EXIST(pedMerc[6])
IF NOT IS_PED_INJURED(pedMerc[6])
SET_ENTITY_COORDS(pedMerc[6],<<481.60, -3119.79, 6.07>>)
SET_ENTITY_HEADING(pedMerc[6],51.57)
TASK_START_SCENARIO_IN_PLACE(pedMerc[6],"WORLD_HUMAN_GUARD_STAND")
ENDIF
ENDIF
e_section_stage = SECTION_STAGE_CLEANUP
ENDIF
ENDIF
IF e_section_stage = SECTION_STAGE_CLEANUP
IF b_skipped_mocap
REPLAY_CANCEL_EVENT()
STOP_CUTSCENE()
//If the player skipped the mocap the peds need to be warped.
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
REPLAY_STOP_EVENT()
//Setup buddy relationship groups etc.
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
REMOVE_CUTSCENE()
i_current_event = 0
e_section_stage = SECTION_STAGE_SETUP
bcutsceneplaying = FALSE
ENDIF
IF e_section_stage = SECTION_STAGE_SKIP
STOP_CUTSCENE()
b_skipped_mocap = TRUE
e_section_stage = SECTION_STAGE_RUNNING
ENDIF
ENDWHILE
ENDPROC
PROC CLEANUP_THE_CRANE()
INT i
REPEAT 8 i
IF DOES_ROPE_EXIST(s_crane.ropes[i])
DELETE_ROPE(s_crane.ropes[i])
ENDIF
bAddedRopes = FALSE
ENDREPEAT
IF DOES_ENTITY_EXIST(s_crane.obj_main)
DELETE_OBJECT(s_crane.obj_main)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_cabin)
DELETE_OBJECT(s_crane.obj_cabin)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
DELETE_OBJECT(s_crane.obj_spreader)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_lift)
DELETE_OBJECT(s_crane.obj_lift)
ENDIF
REPEAT COUNT_OF(s_crane.obj_wheels) i
REMOVE_OBJECT(s_crane.obj_wheels[i], TRUE)
ENDREPEAT
IF DOES_ENTITY_EXIST(s_crane.obj_helper)
DELETE_OBJECT(s_crane.obj_helper)
ENDIF
IF DOES_ENTITY_EXIST(s_crane.obj_boom_cable)
DELETE_OBJECT(s_crane.obj_boom_cable)
ENDIF
SET_MODEL_AS_NO_LONGER_NEEDED(model_spreader)
SET_MODEL_AS_NO_LONGER_NEEDED(model_cabin)
SET_MODEL_AS_NO_LONGER_NEEDED(model_container)
SET_MODEL_AS_NO_LONGER_NEEDED(model_wheel_left)
SET_MODEL_AS_NO_LONGER_NEEDED(model_wheel_right)
SET_MODEL_AS_NO_LONGER_NEEDED(model_boom)
SET_MODEL_AS_NO_LONGER_NEEDED(model_left_door)
SET_MODEL_AS_NO_LONGER_NEEDED(model_right_door)
ENDPROC
PROC MANAGE_MERRYWEATHER_RESPONSE()
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehFloydTruck)
IF bRestrictedSupressed = FALSE
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,TRUE)
FOR iCount = 0 To (iTotalMerc -1)
IF NOT IS_PED_INJURED(pedMerc[iCount])
SET_PED_RELATIONSHIP_GROUP_HASH(pedMerc[iCount] ,rel_group_buddies)
ENDIF
ENDFOR
bRestrictedSupressed = TRUE
ENDIF
ELSE
IF bRestrictedSupressed = TRUE
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
RELEASE_SUPPRESSED_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
FOR iCount = 0 To (iTotalMerc -1)
IF NOT IS_PED_INJURED(pedMerc[iCount])
SET_PED_RELATIONSHIP_GROUP_HASH(pedMerc[iCount] ,rel_group_enemies)
ENDIF
ENDFOR
bRestrictedSupressed = FALSE
ENDIF
ENDIF
ELSE
IF bRestrictedSupressed = TRUE
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
RELEASE_SUPPRESSED_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
FOR iCount = 0 To (iTotalMerc -1)
IF NOT IS_PED_INJURED(pedMerc[iCount])
SET_PED_RELATIONSHIP_GROUP_HASH(pedMerc[iCount] ,rel_group_enemies)
ENDIF
ENDFOR
bRestrictedSupressed = FALSE
ENDIF
ENDIF
ENDPROC
PROC MANAGE_MERRYWEATHER_RESPONSE_TO_PLAYER()
SWITCH iMerryWeatherResponse
CASE 0
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehFloydTruck)
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<485.275024,-3108.497559,5.069427>>, <<485.774292,-3285.950684,17.068666>>, 52.000000)
iMerryWeatherResponse = 1
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<471.226837,-3083.325684,3.819052>>, <<497.850739,-3085.000488,16.605831>>, 63.750000)
FOR iCount = 0 To (iTotalMerc -1)
IF NOT IS_PED_INJURED(pedMerc[iCount])
IF HAS_PED_RECEIVED_EVENT(pedMerc[iCount],EVENT_SHOT_FIRED)
OR IS_PED_SHOOTING_IN_AREA(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<-15,-15,-15>>),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<15,15,15>>), FALSE)
OR IS_SNIPER_BULLET_IN_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<-2,-2,-1>>),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<2,2,1>>))
OR HAS_PED_RECEIVED_EVENT(pedMerc[iCount],EVENT_SHOT_FIRED_BULLET_IMPACT)
OR HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedMerc[iCount],PLAYER_PED_ID())
OR HAS_PED_RECEIVED_EVENT(pedMerc[iCount],EVENT_SHOCKING_EXPLOSION)
OR IS_PROJECTILE_TYPE_IN_ANGLED_AREA(<<471.610931,-3121.303711,13.559713>>, <<484.699463,-3121.514160,4.570057>>, 12.750000,WEAPONTYPE_GRENADE)
OR IS_PROJECTILE_TYPE_IN_ANGLED_AREA(<<471.610931,-3121.303711,13.559713>>, <<484.699463,-3121.514160,4.570057>>, 12.750000,WEAPONTYPE_SMOKEGRENADE)
OR ((IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedMerc[iCount]) OR IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedMerc[iCount])) AND IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(), pedMerc[iCount], << 10, 10, 10 >>))
iMerryWeatherResponse = 1
ENDIF
ENDIF
ENDFOR
ENDIF
ENDIF
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<471.226837,-3083.325684,3.819052>>, <<497.850739,-3085.000488,16.605831>>, 63.750000)
FOR iCount = 0 To (iTotalMerc -1)
IF NOT IS_PED_INJURED(pedMerc[iCount])
IF HAS_PED_RECEIVED_EVENT(pedMerc[iCount],EVENT_SHOT_FIRED)
OR IS_PED_SHOOTING_IN_AREA(PLAYER_PED_ID(), GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<-15,-15,-15>>),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<15,15,15>>), FALSE)
OR IS_SNIPER_BULLET_IN_AREA(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<-2,-2,-1>>),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(pedMerc[iCount],<<2,2,1>>))
OR HAS_PED_RECEIVED_EVENT(pedMerc[iCount],EVENT_SHOT_FIRED_BULLET_IMPACT)
OR HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedMerc[iCount],PLAYER_PED_ID())
OR HAS_PED_RECEIVED_EVENT(pedMerc[iCount],EVENT_SHOCKING_EXPLOSION)
OR IS_PROJECTILE_TYPE_IN_ANGLED_AREA(<<471.610931,-3121.303711,13.559713>>, <<484.699463,-3121.514160,4.570057>>, 12.750000,WEAPONTYPE_GRENADE)
OR IS_PROJECTILE_TYPE_IN_ANGLED_AREA(<<471.610931,-3121.303711,13.559713>>, <<484.699463,-3121.514160,4.570057>>, 12.750000,WEAPONTYPE_SMOKEGRENADE)
OR ((IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(), pedMerc[iCount]) OR IS_PLAYER_FREE_AIMING_AT_ENTITY(PLAYER_ID(), pedMerc[iCount])) AND IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(), pedMerc[iCount], << 10, 10, 10 >>))
iMerryWeatherResponse = 1
ENDIF
ENDIF
ENDFOR
ENDIF
ENDIF
BREAK
CASE 1
FOR iCount = 0 To (iTotalMerc -1)
IF NOT IS_PED_INJURED(pedMerc[iCount])
SET_PED_RELATIONSHIP_GROUP_HASH(pedMerc[iCount] ,rel_group_enemies)
TASK_COMBAT_PED(pedMerc[iCount],PLAYER_PED_ID())
ENDIF
IF NOT HAS_SOUND_FINISHED(soundBeating)
STOP_SOUND(soundBeating)
RELEASE_SOUND_ID(soundBeating)
ENDIF
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,rel_group_buddies)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_enemies,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_IGNORE,rel_group_buddies,rel_group_enemies)
SET_PLAYER_WANTED_LEVEL(PLAYER_ID(),3)
iFailTimer = GET_GAME_TIMER()
iMerryWeatherResponse = 2
ENDFOR
BREAK
CASE 2
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackAbuse2)
IF NOT IS_PED_INJURED(pedFloyd)
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@exit")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@exit")
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneBlackAbuse)
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneBlackAbuse) > 0.99
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@kick_idle")
REMOVE_ANIM_DICT("missheistdockssetup1ig_13@kick_idle")
ENDIF
sceneBlackAbuse2 = CREATE_SYNCHRONIZED_SCENE(<< 478.596, -3116.911, 5.069 >>,<< -0.000, -0.000, 53.446 >>)
TASK_SYNCHRONIZED_SCENE(pedFloyd, sceneBlackAbuse2, "missheistdockssetup1ig_13@exit", "guard_beatup_exit_dockworker", REALLY_SLOW_BLEND_IN, REALLY_SLOW_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS|SYNCED_SCENE_DONT_INTERRUPT, RBF_PLAYER_IMPACT)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_10
OR (eMissionStage = MISSION_STAGE_11 AND VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), <<478.596, -3116.911, 5.069>>) < 40000.0)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_38", CONV_PRIORITY_HIGH)
IF MANAGE_MY_TIMER(iFailTimer,7000)
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC MANAGE_CRANE_CLEANUP()
IF GET_DISTANCE_BETWEEN_COORDS(<<-119.67, -2415.13, 6.00>>,GET_ENTITY_COORDS(PLAYER_PED_ID())) > 100
IF DOES_ENTITY_EXIST(s_crane.obj_main)
IF NOT IS_ENTITY_ON_SCREEN(s_crane.obj_main)
DELETE_OBJECT(s_crane.obj_main)
DELETE_OBJECT(s_crane.obj_cabin)
DELETE_OBJECT(s_crane.obj_spreader)
DELETE_OBJECT(s_crane.obj_helper)
DELETE_OBJECT(s_crane.obj_wheels[0])
DELETE_OBJECT(s_crane.obj_wheels[1])
DELETE_OBJECT(s_crane.obj_wheels[2])
DELETE_OBJECT(s_crane.obj_wheels[3])
DELETE_OBJECT(s_crane.obj_wheels[4])
DELETE_OBJECT(s_crane.obj_wheels[5])
DELETE_OBJECT(s_crane.obj_wheels[6])
DELETE_OBJECT(s_crane.obj_wheels[7])
DELETE_OBJECT(s_containers[0].obj_main)
DELETE_OBJECT(s_containers[0].obj_left_door)
DELETE_OBJECT(s_containers[0].obj_right_door)
DELETE_OBJECT(s_containers[1].obj_main)
DELETE_OBJECT(s_containers[1].obj_left_door)
DELETE_OBJECT(s_containers[1].obj_right_door)
SET_MODEL_AS_NO_LONGER_NEEDED(model_crane)
SET_MODEL_AS_NO_LONGER_NEEDED(model_spreader)
SET_MODEL_AS_NO_LONGER_NEEDED(model_cabin)
SET_MODEL_AS_NO_LONGER_NEEDED(model_container)
SET_MODEL_AS_NO_LONGER_NEEDED(model_wheel_left)
SET_MODEL_AS_NO_LONGER_NEEDED(model_wheel_right)
SET_MODEL_AS_NO_LONGER_NEEDED(model_boom)
SET_MODEL_AS_NO_LONGER_NEEDED(model_left_door)
SET_MODEL_AS_NO_LONGER_NEEDED(model_right_door)
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_a")
REQUEST_IPL("pcranecont")
ENDIF
ENDIF
ENDIF
ENDPROC
PROC MANAGE_DOCKWORKER_PROPS()
IF NOT IS_PED_INJURED(pedDockWorker[15])
IF IS_PED_IN_COMBAT(pedDockWorker[15],PLAYER_PED_ID())
OR IS_PED_RAGDOLL(pedDockWorker[15])
IF IS_ENTITY_ATTACHED_TO_ANY_PED(objPencil[3])
DETACH_ENTITY(objPencil[3])
ENDIF
IF IS_ENTITY_ATTACHED_TO_ANY_PED(objClipboard[3])
DETACH_ENTITY(objClipboard[3])
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedSecurity)
IF IS_PED_IN_COMBAT(pedSecurity,PLAYER_PED_ID())
OR IS_PED_RAGDOLL(pedSecurity)
IF IS_ENTITY_ATTACHED_TO_ANY_PED(objPencil[0])
DETACH_ENTITY(objPencil[0])
ENDIF
IF IS_ENTITY_ATTACHED_TO_ANY_PED(objClipboard[0])
DETACH_ENTITY(objClipboard[0])
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedDockWorker[16])
IF IS_PED_IN_COMBAT(pedDockWorker[16],PLAYER_PED_ID())
OR IS_PED_RAGDOLL(pedDockWorker[16])
IF IS_ENTITY_ATTACHED_TO_ANY_PED(objPencil[2])
DETACH_ENTITY(objPencil[2])
ENDIF
IF IS_ENTITY_ATTACHED_TO_ANY_PED(objClipboard[2])
DETACH_ENTITY(objClipboard[2])
ENDIF
ENDIF
ENDIF
ENDPROC
INT iFloydPain
INT iPainTimer
PROC MANAGE_FLOYD_PAIN()
SWITCH iFloydPain
CASE 0
IF NOT IS_PED_INJURED(pedFloyd)
iPainTimer = GET_GAME_TIMER()
PLAY_PAIN(pedFloyd, AUD_DAMAGE_REASON_SCREAM_PANIC_SHORT)
iFloydPain ++
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(pedMerc[4])
IF MANAGE_MY_TIMER(iPainTimer,GET_RANDOM_INT_IN_RANGE(9000,24000))
iPainTimer = GET_GAME_TIMER()
IF GET_RANDOM_BOOL()
PLAY_PED_AMBIENT_SPEECH(pedMerc[4],"GENERIC_INSULT_HIGH",SPEECH_PARAMS_SHOUTED_CLEAR)
ELSE
IF NOT IS_PED_INJURED(pedMerc[5])
PLAY_PED_AMBIENT_SPEECH(pedMerc[5],"GENERIC_INSULT_HIGH",SPEECH_PARAMS_SHOUTED_CLEAR)
ENDIF
ENDIF
iFloydPain ++
ENDIF
ENDIF
BREAK
CASE 2
IF MANAGE_MY_TIMER(iPainTimer,GET_RANDOM_INT_IN_RANGE(2000,6000))
iFloydPain = 0
ENDIF
BREAK
ENDSWITCH
ENDPROC
INT iAllowResponseTimer
VECTOR vPlayerPosition
BOOL bLeftDocks
INT iSafeTimer
//PURPOSE: Manage michael driving to other docks
PROC MISSION_STAGE_10_PROC()
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-108.585716,-2429.462158,26.250675>>, <<-108.808174,-2400.434082,16.000675>>, 13.000000)
SET_PED_CAPSULE(PLAYER_PED_ID(),0.25)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("TEXT FROM RON")
IF MANAGE_MY_TIMER(iTextMessageDelay,5000)
SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER (CHAR_RON, "TXT_PHOTO_R", TXTMSG_UNLOCKED)
SET_LABEL_AS_TRIGGERED("TEXT FROM RON",TRUE)
ENDIF
ENDIF
MANAGE_CRANE_CLEANUP()
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_GET_TO_TRUCK")
IF IS_AUDIO_SCENE_ACTIVE("DH_1_PHONE_RON")
STOP_AUDIO_SCENE("DH_1_PHONE_RON")
ELSE
START_AUDIO_SCENE("DH_1_GET_TO_TRUCK")
SET_LABEL_AS_TRIGGERED("DH_1_GET_TO_TRUCK",TRUE)
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehFloydTruck)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DH_1_DRIVE_TO_DOCKS")
IF IS_AUDIO_SCENE_ACTIVE("DH_1_GET_TO_TRUCK")
STOP_AUDIO_SCENE("DH_1_GET_TO_TRUCK")
ELSE
START_AUDIO_SCENE("DH_1_DRIVE_TO_DOCKS")
SET_LABEL_AS_TRIGGERED("DH_1_DRIVE_TO_DOCKS",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-207.146667,-2515.569336,4.152911>>, <<-187.418167,-2515.733154,13.297941>>, 43.000000)
LOCK_AUTOMATIC_DOOR_OPEN(AUTODOOR_DOCKS_BACK_GATE_OUT,TRUE,FALSE)
SET_SCRIPT_UPDATE_DOOR_AUDIO(g_sAutoDoorData[AUTODOOR_DOCKS_BACK_GATE_OUT].doorID,TRUE)
ELSE
FORCE_AUTOMATIC_DOOR_SLIDE_OPEN(AUTODOOR_DOCKS_BACK_GATE_OUT,FALSE)
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<20.904465,-2527.153320,4.268342>>, <<9.272564,-2544.315674,11.300495>>, 46.250000)
LOCK_AUTOMATIC_DOOR_OPEN(AUTODOOR_DOCKS_FRONT_GATE_OUT,TRUE,FALSE)
SET_SCRIPT_UPDATE_DOOR_AUDIO(g_sAutoDoorData[AUTODOOR_DOCKS_FRONT_GATE_OUT].doorID,TRUE)
ELSE
FORCE_AUTOMATIC_DOOR_SLIDE_OPEN(AUTODOOR_DOCKS_FRONT_GATE_OUT,FALSE)
ENDIF
CREATE_THE_DOCKS_STUFF()
IF NOT bLeftDocks
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-183.039520,-2523.408203,13.262724>>, <<-208.735977,-2522.902832,4.504209>>, 12.750000)
bLeftDocks = TRUE
ENDIF
ENDIF
IF bLeftDocks
IF GET_DISTANCE_BETWEEN_COORDS(<<5.0966, -2528.8704, 5.0503>>,GET_ENTITY_COORDS(PLAYER_PED_ID())) > 300
SAFE_CLEANUP_PED(pedMerc[0],S_M_Y_BLACKOPS_01)
SAFE_CLEANUP_PED(pedMerc[1],S_M_Y_BLACKOPS_01)
SAFE_CLEANUP_PED(pedMerc[2],S_M_Y_BLACKOPS_01)
SAFE_CLEANUP_PED(pedMerc[3],S_M_Y_BLACKOPS_01)
SAFE_CLEANUP_PED(pedMerc[7],S_M_Y_BLACKOPS_01)
SAFE_CLEANUP_PED(pedMerc[8],S_M_Y_BLACKOPS_01)
ENDIF
ENDIF
IF GET_DISTANCE_BETWEEN_COORDS(<<485.0831, -3051.7222, 5.2262>>,GET_ENTITY_COORDS(PLAYER_PED_ID())) < 100
IF NOT HAS_LABEL_BEEN_TRIGGERED("REQ_MERRYWEATHER_GUARDS_AT_OTHER_DOCKS")
IF SETUP_MISSION_REQUIREMENT(REQ_MERRYWEATHER_GUARDS_AT_OTHER_DOCKS)
SET_LABEL_AS_TRIGGERED("REQ_MERRYWEATHER_GUARDS_AT_OTHER_DOCKS",TRUE)
ENDIF
ENDIF
ENDIF
IF iProgress < 6
OR iProgress = 98
OR iProgress = 99
DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, 1.0)
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID,DOORSTATE_FORCE_OPEN_THIS_FRAME)
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<497.518677,-3065.054443,3.576474>>, <<471.410797,-3065.453857,35.069195>>, 100.000000)
MANAGE_MERRYWEATHER_RESPONSE_TO_PLAYER()
MANAGE_MERRYWEATHER_RESPONSE()
ENDIF
ENDIF
SWITCH iProgress
CASE 0//Create objective specific items- print objective, add blips etc
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
s_crane.f_crane_offset = MIN_CRANE_OFFSET
s_crane.f_crane_vel = 0.0
IF DOES_ENTITY_EXIST(vehHandler)
DELETE_VEHICLE(vehHandler)
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[17])
DELETE_PED(pedDockWorker[17])
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[18])
DELETE_PED(pedDockWorker[18])
ENDIF
IF SETUP_PEDS_FOR_DIALOGUE()
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF NOT IS_SCREEN_FADED_OUT()
IF NOT IS_PED_INJURED(pedFloyd)
CLEAR_PED_TASKS_IMMEDIATELY(pedFloyd)
// SET_ENTITY_COORDS(pedFloyd, <<-118.3164, -2412.3242, 5.0000>>)
// SET_ENTITY_HEADING(pedFloyd, 330.0682)
// IF NOT IS_PED_INJURED(pedFloyd)
// IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
// IF IS_VEHICLE_SEAT_FREE(vehFloydTruck,VS_FRONT_RIGHT)
// SET_PED_INTO_VEHICLE(pedFloyd,vehFloydTruck,VS_FRONT_RIGHT)
// ENDIF
// ENDIF
// ENDIF
SET_ENTITY_COORDS(pedFloyd, <<-120.1837, -2418.3833, 5.0014>>)
SET_ENTITY_HEADING(pedFloyd, 2.0550)
SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION(pedFloyd,TRUE)
OPEN_SEQUENCE_TASK(seqMain)
TASK_LEAVE_ANY_VEHICLE(NULL)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL, <<-118.3164, -2412.3242, 5.0000>>,1)
TASK_START_SCENARIO_AT_POSITION(NULL,"WORLD_HUMAN_STAND_IMPATIENT",<<-118.3164, -2412.3242, 5.0000>>,330.0682)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedFloyd, seqMain)
ENDIF
ENDIF
SET_VEHICLE_EXTRA(vehTrailer2,1,FALSE)
IF NOT IS_PED_INJURED(pedDockWorker[13])
TASK_WANDER_STANDARD(pedDockWorker[13])
SET_PED_AS_NO_LONGER_NEEDED(pedDockWorker[13])
ENDIF
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_a")
REMOVE_ANIM_DICT("oddjobs@towingpleadingidle_a")
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehFloydTruck,TRUE)
REQUEST_MODEL(TIPTRUCK)
iMissionDialogue = 17
iFloydPain = 0
bRestrictedSupressed = FALSE
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(8,"Drive to the other docks")
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
CLEAR_AREA(<< 476.4661, -3040.6094, 6.0984 >>,100,FALSE)
SET_PED_NON_CREATION_AREA(<<682.4604, -2936.8667, 2.9499>>,<<260.5602, -3529.1248, -17.7944>>)
SET_PED_COMBAT_ATTRIBUTES(PLAYER_PED_ID(),CA_DO_DRIVEBYS,TRUE)
CREATE_FORCED_OBJECT(<<479.2571, -3115.5513, 5.0701>>,50,PROP_GATE_DOCKS_LD,TRUE)
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MIL_DOCKS_GATE_IN,PLAYER_PED_ID())
//DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, 1.0)
//DOOR_SYSTEM_SET_HOLD_OPEN(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, TRUE)
IF bIsJumpingDirectlyToStage = TRUE
v_crane_pos = <<-110.2902, -2415.7900, 5.0500>>
vSpreaderPosition = <<-109.87, -2415.71, 14.67>>
IF SETUP_MISSION_REQUIREMENT(REQ_CRANE)
bLeftDocks = FALSE
iProgress++
ENDIF
ELSE
bLeftDocks = FALSE
iProgress++
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 1
IF bContainerSetUpForDrive = FALSE
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
//HAD TO TURN OFF COLLISION
IF IS_SCREEN_FADED_OUT()
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_ENTITY_COORDS(vehFloydTruck,<< -117.1943, -2415.8176, 5.0001 >>)
SET_ENTITY_HEADING(vehFloydTruck,89.5928)
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0)
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
DELETE_OBJECT(s_containers[1].obj_main)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
DELETE_OBJECT(s_containers[0].obj_main)
ENDIF
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-118.3399, -2410.1582, 5.0013>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),145.9175)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF NOT IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
ENDIF
ENDIF
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_VEHICLE_SEAT_FREE(vehFloydTruck,VS_FRONT_RIGHT)
SET_PED_INTO_VEHICLE(pedFloyd,vehFloydTruck,VS_FRONT_RIGHT)
ENDIF
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(s_containers[1].obj_main)
DELETE_OBJECT(s_containers[1].obj_main)
ENDIF
IF DOES_ENTITY_EXIST(s_containers[0].obj_main)
DELETE_OBJECT(s_containers[0].obj_main)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
FREEZE_ENTITY_POSITION(vehFloydTruck,FALSE)
FREEZE_ENTITY_POSITION(vehTrailer2,FALSE)
ENDIF
SET_VEHICLE_EXTRA(vehTrailer2,1,FALSE)
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
REQUEST_ANIM_DICT("misslsdhsclipboard@base")
REQUEST_ANIM_DICT("amb@code_human_police_crowd_control@idle_a")
REQUEST_ANIM_DICT("misslsdhs")
REQUEST_MODEL(P_CS_Clipboard)
REQUEST_MODEL(PROP_PENCIL_01)
REQUEST_MODEL(TIPTRUCK)
REQUEST_MODEL(prop_barrier_work06a)
bContainerSetUpForDrive = TRUE
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck) AND IS_VEHICLE_DRIVEABLE(vehTrailer2)
FREEZE_ENTITY_POSITION(vehFloydTruck,FALSE)
FREEZE_ENTITY_POSITION(vehTrailer2,FALSE)
ENDIF
INIT_STAGE()
createDockWorker(21)
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
REQUEST_ANIM_DICT("misslsdhsclipboard@base")
REQUEST_ANIM_DICT("amb@code_human_police_crowd_control@idle_a")
REQUEST_ANIM_DICT("misslsdhs")
REQUEST_MODEL(P_CS_Clipboard)
REQUEST_MODEL(PROP_PENCIL_01)
REQUEST_MODEL(TIPTRUCK)
REQUEST_MODEL(prop_barrier_work06a)
iProgress = 99
ELSE
ATTACH_VEHICLE_TO_TRAILER(vehFloydTruck,vehTrailer2)
ENDIF
ENDIF
ENDIF
BREAK
//CLEAR PRINTS CHECK ANIM REQUESTS AND SET UP SECURITY GUY
CASE 99
REQUEST_MODEL(TIPTRUCK)
IF HAS_ANIM_DICT_LOADED("misslsdhs")
AND HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
AND HAS_ANIM_DICT_LOADED("misslsdhsclipboard@base")
AND HAS_ANIM_DICT_LOADED("amb@code_human_police_crowd_control@idle_a")
AND HAS_MODEL_LOADED(P_CS_Clipboard)
AND HAS_MODEL_LOADED(PROP_PENCIL_01)
AND HAS_MODEL_LOADED(TIPTRUCK)
AND HAS_MODEL_LOADED(prop_barrier_work06a)
IF NOT DOES_ENTITY_EXIST(objClipboard[2])
objClipboard[2] = CREATE_OBJECT(P_CS_CLIPBOARD,<< -128.2126, -2568.8252, 5.0010 >>)
ELSE
IF NOT DOES_ENTITY_EXIST(objPencil[2])
objPencil[2] = CREATE_OBJECT(PROP_PENCIL_01,<< -128.2126, -2568.8252, 5.0010 >>)
ELSE
IF NOT DOES_ENTITY_EXIST(objClipboard[3])
objClipboard[3] = CREATE_OBJECT(P_CS_CLIPBOARD,vDocks)
ELSE
IF NOT DOES_ENTITY_EXIST(objPencil[3])
objPencil[3] = CREATE_OBJECT(PROP_PENCIL_01,vDocks)
ELSE
IF DOES_ENTITY_EXIST(pedDockWorker[15])
IF NOT IS_PED_INJURED(pedDockWorker[15])
CLEAR_ALL_PED_PROPS(pedDockWorker[15])
ATTACH_ENTITY_TO_ENTITY(objPencil[3],pedDockWorker[15],GET_PED_BONE_INDEX(pedDockWorker[15], BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
ATTACH_ENTITY_TO_ENTITY(objClipboard[3],pedDockWorker[15],GET_PED_BONE_INDEX(pedDockWorker[15], BONETAG_PH_L_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
TASK_PLAY_ANIM(pedDockWorker[15],"misslsdhsclipboard@base", "base",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING)
ADD_PED_FOR_DIALOGUE(sSpeech, 5, pedDockWorker[15], "GATEGUARD")
SET_PED_CAN_EVASIVE_DIVE(pedDockWorker[15],FALSE)
SET_PED_KEEP_TASK(pedDockWorker[15],TRUE)
ENDIF
ENDIF
//BLOCKING
IF HAS_MODEL_LOADED(TIPTRUCK)
IF NOT DOES_ENTITY_EXIST(vehBlocking)
SPAWN_VEHICLE(vehBlocking,TIPTRUCK, << 491.91, -3051.15, 5.77 >>, 6.20,-1,1,FALSE)
ENDIF
ENDIF
IF HAS_MODEL_LOADED(prop_barrier_work06a)
IF NOT DOES_ENTITY_EXIST(ObjdockProps[0])
ObjdockProps[0] = CREATE_OBJECT_NO_OFFSET(prop_barrier_work06a,<<488.82, -3048.82, 5.11>>)
ENDIF
ENDIF
IF HAS_MODEL_LOADED(prop_barrier_work06a)
IF NOT DOES_ENTITY_EXIST(ObjdockProps[1])
ObjdockProps[1] = CREATE_OBJECT_NO_OFFSET(prop_barrier_work06a,<<494.70, -3049.03, 5.11>>)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[16])
IF NOT IS_PED_INJURED(pedDockWorker[16])
CLEAR_ALL_PED_PROPS(pedDockWorker[16])
ATTACH_ENTITY_TO_ENTITY(objPencil[2],pedDockWorker[16],GET_PED_BONE_INDEX(pedDockWorker[16], BONETAG_PH_R_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
ATTACH_ENTITY_TO_ENTITY(objClipboard[2],pedDockWorker[16],GET_PED_BONE_INDEX(pedDockWorker[16], BONETAG_PH_L_HAND),<<0,0,0>>,<<0,0,0>>,TRUE)
TASK_PLAY_ANIM(pedDockWorker[16],"misslsdhsclipboard@base", "base",INSTANT_BLEND_IN,INSTANT_BLEND_OUT,-1,AF_LOOPING)
ADD_PED_FOR_DIALOGUE(sSpeech, 6, pedDockWorker[16], "GATEGUARD")
SET_PED_CAN_EVASIVE_DIVE(pedDockWorker[16],FALSE)
SET_PED_KEEP_TASK(pedDockWorker[16],TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(pedDockWorker[21])
IF NOT IS_PED_INJURED(pedDockWorker[21])
OPEN_SEQUENCE_TASK(seqMain)
TASK_LOOK_AT_ENTITY(NULL,pedDockWorker[16],-1)
TASK_PLAY_ANIM(NULL,"amb@code_human_police_crowd_control@idle_a", "idle_a",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT)
TASK_PAUSE(NULL,GET_RANDOM_INT_IN_RANGE(1000,3000))
TASK_PLAY_ANIM(NULL,"amb@code_human_police_crowd_control@idle_a", "idle_b",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT)
TASK_PLAY_ANIM(NULL,"amb@code_human_police_crowd_control@idle_a", "idle_c",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT)
TASK_PAUSE(NULL,GET_RANDOM_INT_IN_RANGE(500,1000))
TASK_PLAY_ANIM(NULL,"amb@code_human_police_crowd_control@idle_a", "idle_a",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT)
TASK_PLAY_ANIM(NULL,"amb@code_human_police_crowd_control@idle_a", "idle_c",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT)
TASK_PLAY_ANIM(NULL,"amb@code_human_police_crowd_control@idle_a", "idle_b",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_DEFAULT)
SET_SEQUENCE_TO_REPEAT(seqMain,REPEAT_FOREVER)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedDockWorker[21], seqMain)
SET_PED_KEEP_TASK(pedDockWorker[21],TRUE)
SET_PED_CAN_EVASIVE_DIVE(pedDockWorker[21],FALSE)
ENDIF
ENDIF
IF bIsJumpingDirectlyToStage
iProgress = 3
ELSE
iProgress = 2
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
vPlayerPosition = GET_ENTITY_COORDS(PLAYER_PED_ID())
PRINTSTRING("Z - ")PRINTFLOAT(vPlayerPosition.z)
IF vPlayerPosition.z > 6.1
IF IS_PLAYER_AT_LOCATION_ANY_MEANS(sLocatesData,<<-106.4769, -2404.5315, 5.0013>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,TRUE,"DESCRA")
ELSE
IF vPlayerPosition.z < 6.1
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_37")
IF NOT IS_SCREEN_FADED_OUT()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_37", CONV_PRIORITY_HIGH) // {floyd yells to trevor from truck}
REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_37", TRUE)
ENDIF
ENDIF
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("DS1_37", TRUE)
ENDIF
ELSE
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_1")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_2")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_3")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_4")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_5")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_6")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_7")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_8")
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
iSafeTimer = GET_GAME_TIMER()
iProgress = 98
ENDIF
ENDIF
ENDIF
ELSE
IF vPlayerPosition.z < 6.1
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_37")
IF NOT IS_SCREEN_FADED_OUT()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_37", CONV_PRIORITY_HIGH) // {floyd yells to trevor from truck}
SET_LABEL_AS_TRIGGERED("DS1_37", TRUE)
ENDIF
ENDIF
ENDIF
ELSE
SET_LABEL_AS_TRIGGERED("DS1_37", TRUE)
ENDIF
ELSE
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_1")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_2")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_3")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_4")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_5")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_6")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_7")
ASSISTED_MOVEMENT_REMOVE_ROUTE("pols_8")
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
iSafeTimer = GET_GAME_TIMER()
iProgress = 98
ENDIF
ENDIF
ENDIF
BREAK
CASE 98
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF NOT IS_PED_IN_VEHICLE(pedFloyd,vehFloydTruck)
IF GET_SCRIPT_TASK_STATUS(pedFloyd,SCRIPT_TASK_ENTER_VEHICLE)<> PERFORMING_TASK
TASK_ENTER_VEHICLE(pedFloyd,vehFloydTruck,DEFAULT_TIME_BEFORE_WARP, VS_FRONT_RIGHT,PEDMOVEBLENDRATIO_WALK,ECF_BLOCK_SEAT_SHUFFLING)
ENDIF
ENDIF
ENDIF
ENDIF
IF MANAGE_MY_TIMER(iSafeTimer,5000)
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_PED_GETTING_INTO_A_VEHICLE(pedFloyd)
OR IS_PED_IN_VEHICLE(pedFloyd,vehFloydTruck)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
bGoToSpeach = FALSE
iStageStartTime = GET_GAME_TIMER()
iProgress = 3
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_37b")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech,"D1AUD", "DS1_37b", CONV_PRIORITY_HIGH) // {floyd yells to trevor from truck}
SET_LABEL_AS_TRIGGERED("DS1_37b", TRUE)
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
CLEAR_PED_TASKS(pedFloyd)
TASK_ENTER_VEHICLE(pedFloyd,vehFloydTruck,DEFAULT_TIME_BEFORE_WARP, VS_FRONT_RIGHT,PEDMOVEBLENDRATIO_WALK,ECF_BLOCK_SEAT_SHUFFLING)
ENDIF
ENDIF
iStageStartTime = GET_GAME_TIMER()
ENDIF
ENDIF
ENDIF
ELSE
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_PED_GETTING_INTO_A_VEHICLE(pedFloyd)
OR IS_PED_IN_VEHICLE(pedFloyd,vehFloydTruck)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
bGoToSpeach = FALSE
iStageStartTime = GET_GAME_TIMER()
iProgress = 3
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF NOT IS_PED_INJURED(pedFloyd)
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF NOT IS_PED_IN_VEHICLE(pedFloyd,vehFloydTruck)
IF GET_SCRIPT_TASK_STATUS(pedFloyd,SCRIPT_TASK_ENTER_VEHICLE)<> PERFORMING_TASK
TASK_ENTER_VEHICLE(pedFloyd,vehFloydTruck,DEFAULT_TIME_BEFORE_WARP, VS_FRONT_RIGHT,PEDMOVEBLENDRATIO_WALK,ECF_BLOCK_SEAT_SHUFFLING)
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("GET IN BIG RIG")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData,IAT_IGNORE_DIALOGUE_IF_SUBTITLES_OFF)
PRINT_GOD_TEXT("AW_TREVTRU")
SET_LABEL_AS_TRIGGERED("GET IN BIG RIG", TRUE)
ENDIF
ENDIF
IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<471.729736,-3121.691895,4.570057>>, <<484.070709,-3121.885742,11.820057>>, 11.250000)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<483.672943,-3107.970459,4.570056>>, <<474.004242,-3108.686523,12.070057>>, 12.750000)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
FLOAT vDistA
FLOAT vDistB
//TEXT_LABEL Conversation
PED_INDEX pedTemp
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF IS_PLAYER_AT_LOCATION_WITH_BUDDY_IN_VEHICLE(sLocatesData,<< 476.4661, -3040.6094, 5.0913>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,FALSE,pedFloyd,vehFloydTruck,"AW_DRI_SUB","AW_DONT_LEAVE_T","","AW_GETBACK_INT",FALSE,FALSE)
ELSE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
IF IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<< 476.4661, -3040.6094, 6.0984 >>,<<7,7,7>>)
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
IF HAS_ANIM_DICT_LOADED("misslsdhsclipboard@idle_a")
KILL_FACE_TO_FACE_CONVERSATION()
IF NOT IS_PED_INJURED(pedDockWorker[15])
vDistA = GET_DISTANCE_BETWEEN_ENTITIES(pedDockWorker[15],vehFloydTruck)
ENDIF
IF NOT IS_PED_INJURED(pedDockWorker[16])
vDistB = GET_DISTANCE_BETWEEN_ENTITIES(pedDockWorker[16],vehFloydTruck)
ENDIF
IF vDistA < vDistB
pedTemp = pedDockWorker[15]
ELSE
pedTemp = pedDockWorker[16]
ENDIF
IF NOT IS_PED_INJURED(pedTemp)
OPEN_SEQUENCE_TASK(seqMain)
TASK_PLAY_ANIM(NULL,"misslsdhsclipboard@idle_a", "idle_a",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(pedTemp, seqMain)
ENDIF
REMOVE_CUTSCENE()
REQUEST_CUTSCENE("LSDHS_MCS_2")
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@kick_idle")
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
iProgress++
ENDIF
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_37c")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_37c", CONV_PRIORITY_MEDIUM)
REPLAY_RECORD_BACK_FOR_TIME(8.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
SET_LABEL_AS_TRIGGERED("DS1_37c",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF bGoToSpeach = FALSE
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_16", CONV_PRIORITY_MEDIUM)
bGoToSpeach = TRUE
ENDIF
ENDIF
ENDIF
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_39")
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_39", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_39",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_IN_VEHICLE(PLAYER_PED_ID(), vehFloydTruck)
IF NOT DOES_BLIP_EXIST(sLocatesData.vehicleBlip)
sLocatesData.vehicleBlip = ADD_BLIP_FOR_ENTITY(vehFloydTruck)
SET_BLIP_COLOUR(sLocatesData.vehicleBlip,BLIP_COLOUR_BLUE)
ENDIF
ENDIF
IF bGoToSpeach = TRUE
//MANAGE PAUSE DIALOGUE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
IF IS_FACE_TO_FACE_CONVERSATION_PAUSED()
CLEAR_PRINTS()
PAUSE_FACE_TO_FACE_CONVERSATION(FALSE)
ENDIF
//Play conversation
ELSE
IF NOT IS_FACE_TO_FACE_CONVERSATION_PAUSED()
IF IS_THIS_PRINT_BEING_DISPLAYED("AW_GETBACK_INT")
CLEAR_PRINTS()
ENDIF
PAUSE_FACE_TO_FACE_CONVERSATION(TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF MANAGE_MY_TIMER(iStageStartTime,3000)
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
OR DOES_BLIP_EXIST(sLocatesData.vehicleBlip)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 4
PRINTLN("@@@@@@@ CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() @@@@@@@@@@@")
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
PRINTLN("@@@@@@@ SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED @@@@@@@@@@@")
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Floyd", pedFloyd)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_17")
IF CREATE_CONVERSATION(sSpeech,"D1AUD","DS1_17", CONV_PRIORITY_HIGH)
SET_LABEL_AS_TRIGGERED("DS1_17",TRUE)
ENDIF
ENDIF
IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<471.729736,-3121.691895,4.570057>>, <<484.070709,-3121.885742,11.820057>>, 11.250000)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<483.672943,-3107.970459,4.570056>>, <<474.004242,-3108.686523,12.070057>>, 12.750000)
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
IF IS_VEHICLE_ATTACHED_TO_TRAILER(vehFloydTruck)
IF IS_VEHICLE_DRIVEABLE(vehTrailer2)
IF NOT IS_ENTITY_IN_ANGLED_AREA(vehTrailer2, <<478.711945,-3105.557373,4.570057>>, <<479.165710,-3123.542236,10.820057>>, 6.500000)
//IF IS_PLAYER_AT_LOCATION_WITH_BUDDY_IN_VEHICLE(sLocatesData,<< 478.8654, -3107.2019, 6.0984 >>,<<5,5,5>>,FALSE,pedFloyd,vehFloydTruck,"AW_DRI_SUB2","AW_DONT_LEAVE_T","AW_DOCK1","AW_GETBACK_INT",FALSE,FALSE)
IF IS_PLAYER_AT_LOCATION_WITH_BUDDY_IN_VEHICLE(sLocatesData,<< 478.8654, -3107.2019, 5.0690 >>,<<5,5,LOCATE_SIZE_HEIGHT>>,TRUE,pedFloyd,vehFloydTruck,"","AW_DONT_LEAVE_T","AW_DOCK1","AW_GETBACK_INT",FALSE,FALSE)
IF NOT HAS_LABEL_BEEN_TRIGGERED("HALT")
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
PLAY_SOUND_FROM_ENTITY(-1, "Truck_Stop", vehFloydTruck, "DOCKS_HEIST_SETUP_SOUNDS")
SET_LABEL_AS_TRIGGERED("HALT",TRUE)
ENDIF
ENDIF
IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehFloydTruck,6.0,1)
REPLAY_RECORD_BACK_FOR_TIME(6.0, 0.0)
bDoneWithTruck = TRUE
KILL_ANY_CONVERSATION()
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
REQUEST_CUTSCENE("LSDHS_MCS_2")
bIgnoreTheseFails = TRUE
e_section_stage = SECTION_STAGE_SETUP
i_current_event = 0
iProgress++
ENDIF
ENDIF
ELSE
eFailedStage = eMissionStage
reason_for_fail = COVER_BLOWN
eMissionStage = MISSION_STAGE_FAIL
ENDIF
ENDIF
ELSE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
OR DOES_BLIP_EXIST(sLocatesData.vehicleBlip)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
ENDIF
ENDIF
ENDIF
BREAK
CASE 5
IF NOT IS_SCRIPTED_CONVERSATION_ONGOING()
IF IS_AUDIO_SCENE_ACTIVE("DH_1_DRIVE_TO_DOCKS")
STOP_AUDIO_SCENE("DH_1_DRIVE_TO_DOCKS")
ENDIF
RUN_MERRY_WEATHER_CUTSCENE()
REQUEST_ANIM_DICT("missheistdockssetup1ig_9@main_action")
REQUEST_ANIM_DICT("misslsdhsclipboard@idle_a")
iAllowResponseTimer = GET_GAME_TIMER()
iProgress++
ENDIF
BREAK
CASE 6
IF NOT DOES_ENTITY_EXIST(vanByDocks)
SETUP_MISSION_REQUIREMENT(REQ_CAR_TO_DRIVE_FINAL_STAGE)
ELSE
IF NOT IS_CUTSCENE_ACTIVE()
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_9@main_action")
//FIX FOR CLEANING UP UNUSED ASSETS
IF DOES_ENTITY_EXIST(vehMission)
DELETE_VEHICLE(vehMission)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_VEH_MODEL(CHAR_TREVOR) )
ELSE
SET_MODEL_AS_NO_LONGER_NEEDED(GET_PLAYER_VEH_MODEL(CHAR_TREVOR) )
ENDIF
IF DOES_ENTITY_EXIST(pedWade)
DELETE_PED(pedWade)
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_WADE))
ELSE
SET_MODEL_AS_NO_LONGER_NEEDED(GET_NPC_PED_MODEL(CHAR_WADE))
ENDIF
IF DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[0].obj_prop)
DELETE_OBJECT(s_sp_floyd_grabs_package[0].obj_prop)
SET_MODEL_AS_NO_LONGER_NEEDED(prop_cs_package_01)
ELSE
SET_MODEL_AS_NO_LONGER_NEEDED(prop_cs_package_01)
ENDIF
REMOVE_ANIM_DICT("missheistdockssetup1ig_4@start_idle")
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@base")
REMOVE_ANIM_DICT("missheistdockssetup1ig_4@main_action")
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_a")
REMOVE_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
REMOVE_ANIM_DICT("missheistdockssetup1ig_3@talk")
REMOVE_ANIM_DICT("missheistdockssetup1ig_3@base")
REMOVE_ANIM_DICT("missheistdockssetup1ig_13@main_action")
REMOVE_ANIM_DICT("missheistdockssetup1ig_5@base")
REMOVE_ANIM_DICT("missheistdockssetup1ig_7")
REMOVE_ANIM_DICT("misslsdhsclipboard@idle_a")
REMOVE_ANIM_DICT("missheistdockssetup1ig_12@idle_c")
CLEANUP_THE_CRANE()
IF IS_VEHICLE_DRIVEABLE(vehFloydTruck)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehFloydTruck,FALSE)
ENDIF
UNREGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_MIL_DOCKS_GATE_IN,PLAYER_PED_ID())
//DOOR_SYSTEM_SET_HOLD_OPEN(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, FALSE)
DOOR_SYSTEM_SET_OPEN_RATIO(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID, 0.0)
DOOR_SYSTEM_SET_DOOR_STATE(g_sAutoDoorData[AUTODOOR_MIL_DOCKS_GATE_IN].doorID,DOORSTATE_LOCKED)
iProgress++
ENDIF
ENDIF
ENDIF
BREAK
CASE 7
IF MANAGE_MY_TIMER(iAllowResponseTimer,3000)
MANAGE_MERRYWEATHER_RESPONSE_TO_PLAYER()
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_SOF")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_SOF", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_SOF",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_AT_ANGLED_AREA_ANY_MEANS(sLocatesData,<<476.6509, -3048.0332, 5.0939>>,<<522.403198,-3048.688477,4.068941>>, <<465.621979,-3048.312012,21.168930>>, 8.000000,FALSE,"LEAVE_RESTA")
REPLAY_RECORD_BACK_FOR_TIME(10.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
iProgress++
ELSE
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
REMOVE_BLIP(sLocatesData.LocationBlip)
ENDIF
IF VDIST(<<476.6509, -3048.0332, 5.0939>>,GET_ENTITY_COORDS(PLAYER_PED_ID())) > 100
IF DOES_BLIP_EXIST(sLocatesData.LocationBlip)
REMOVE_BLIP(sLocatesData.LocationBlip)
ENDIF
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
iProgress++
ENDIF
ENDIF
BREAK
CASE 8
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
RELEASE_SUPPRESSED_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
RESET_MISSION_STAGE_VARIABLES()
ADVANCE_MISSION_STAGE()
BREAK
ENDSWITCH
ENDPROC
INT iTimeBeforePhoneCall
INT iTimeInVehicle
BOOL bGotInVehicle
BOOL bDoPhoneCall
//PURPOSE: Drive home
PROC MISSION_STAGE_11_PROC()
CAM_VIEW_MODE_CONTEXT activeViewModeContext
CAM_VIEW_MODE activeViewMode
//Disable changing camera when near to drop off
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< -1147.4010, -1522.5767, 9.4130 >>) < 30
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
ENDIF
IF iProgress > 0
IF bDoPhoneCall = FALSE
IF IS_PED_SITTING_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF bGotInVehicle = FALSE
bGotInVehicle = TRUE
SET_WANTED_LEVEL_MULTIPLIER(0.2)
iTimeInVehicle = GET_GAME_TIMER()
ENDIF
ELSE
IF bGotInVehicle = FALSE
bGotInVehicle = TRUE
ENDIF
ENDIF
IF MANAGE_MY_TIMER(iTimeBeforePhoneCall,60000)
OR MANAGE_MY_TIMER(iTimeInVehicle,7500) AND IS_PED_SITTING_IN_ANY_VEHICLE(PLAYER_PED_ID())
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) = 0
IF SETUP_PEDS_FOR_DIALOGUE()
IF CHAR_CALL_PLAYER_CELLPHONE( sSpeech, CHAR_RON, "D1AUD", "DS1_12", CONV_PRIORITY_VERY_HIGH)
bDoPhoneCall = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1150.458984,-1521.551270,9.632723>>, <<-1153.754761,-1516.601074,12.382723>>, 22.250000)
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),0.8)
ENDIF
MANAGE_MERRYWEATHER_RESPONSE_TO_PLAYER()
SWITCH iProgress
CASE 0//Create objective specific items- print objective, add blips etc
IF IS_SCREEN_FADED_OUT()
MANAGE_PLAYER_OUTFIT()
ENDIF
WHILE NOT SETUP_MISSION_REQUIREMENT(REQ_CAR_TO_DRIVE_FINAL_STAGE)
WAIT(0)
ENDWHILE
REQUEST_MODEL(TIPTRUCK)
DISABLE_TAXI_HAILING(FALSE)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(9,"Drive home",TRUE)
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
RELEASE_SUPPRESSED_RESTRICTED_AREA_WANTED_LEVEL(AC_MILITARY_DOCKS,FALSE)
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT, BUILDINGSTATE_DESTROYED) // Trodden mess in the apartment.
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_SHIT_SOFA, BUILDINGSTATE_DESTROYED) // Mess on the sofa
SET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_PICTURE, BUILDINGSTATE_DESTROYED)
bDialogue = FALSE
soundBeating = GET_SOUND_ID()
INIT_STAGE()
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
RELEASE_AMBIENT_AUDIO_BANK()
iTimeBeforePhoneCall = GET_GAME_TIMER()
bDoPhoneCall = FALSE
ADD_PED_FOR_DIALOGUE(sSpeech, 2, PLAYER_PED_ID(), "TREVOR")
ADD_PED_FOR_DIALOGUE(sSpeech,0,NULL,"NERVOUSRON")
iProgress++
BREAK
CASE 1
iProgress++
BREAK
CASE 2
IF NOT HAS_LABEL_BEEN_TRIGGERED("Floyd_Beating")
IF REQUEST_AMBIENT_AUDIO_BANK("SCRIPT\\PORT_OF_LS_01_FLOYD_BEATING")
PLAY_SOUND_FROM_COORD(soundBeating,"Floyd_Beating",<<479, -3106, 8>>,"DOCKS_HEIST_SETUP_SOUNDS")
SET_LABEL_AS_TRIGGERED("Floyd_Beating",TRUE)
ENDIF
ENDIF
IF HAS_MODEL_LOADED(TIPTRUCK)
IF NOT DOES_ENTITY_EXIST(vehFinal)
SPAWN_VEHICLE(vehFinal,TIPTRUCK, << 465.8751, -3037.0837, 5.0686 >>, 126.3433,-1,1)
ENDIF
ENDIF
//Request the end cutscene and planning board section once the player gets close enough to Floyd's.
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
IF NOT bBoardCutsceneRequested
IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), << -1147.4010, -1522.5767, 9.4130 >>) < 5625 //75^2
// Pre-load the cutscene in the heist controller for our arrival.
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_DOCKS_PRIME_BOARD_TRANSITION, TRUE)
bBoardCutsceneRequested = TRUE
ENDIF
ELSE
IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID()), << -1147.4010, -1522.5767, 9.4130 >>) > 6400 //80^2
// Remove cutscene if player then drives further away from Floyd's place
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_JEWEL_PRIME_BOARD_TRANSITION, FALSE)
bBoardCutsceneRequested = FALSE
ENDIF
ENDIF
ENDIF
//B* 1694464: Make player walk up the stairs so the streaming has time to load the interior
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< -1147.4010, -1522.5767, 9.4130 >>) < 30
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(), PEDMOVE_WALK)
ELSE
SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(), PEDMOVE_SPRINT)
ENDIF
IF NOT HAS_LABEL_BEEN_TRIGGERED("Pin interior")
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< -1147.4010, -1522.5767, 9.4130 >>) < 100
interior_living_room = get_interior_at_coords(<< -1158.3411, -1520.8929, 9.6345 >>)
REQUEST_ANIM_DICT("missheistdockssetup1leadinoutlsdhs_mcs_3")
IF is_valid_interior(interior_living_room)
pin_interior_in_memory(interior_living_room)
SET_LABEL_AS_TRIGGERED("Pin interior",TRUE)
ENDIF
ENDIF
ELSE
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< -1147.4010, -1522.5767, 9.4130 >>) < 100
IF NOT DOES_ENTITY_EXIST(pedWade)
SETUP_MISSION_REQUIREMENT_WITH_LOCATION(REQ_WADE, vWadeStart, fWadeStart)
ELSE
IF NOT HAS_LABEL_BEEN_TRIGGERED("wade_sit_couch")
REQUEST_ANIM_DICT("missheistdockssetup1leadinoutlsdhs_mcs_3")
REQUEST_WAYPOINT_RECORDING("d1leadin")
IF NOT IS_PED_INJURED(pedWade)
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1leadinoutlsdhs_mcs_3")
AND GET_IS_WAYPOINT_RECORDING_LOADED("d1leadin")
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HEAD, 0, 1)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_BERD, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HAIR, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_TORSO, 1, 1)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_LEG, 1, 1)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_HAND, 1, 1)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_FEET, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_TEETH, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_SPECIAL, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_SPECIAL2, 0, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_DECL, 1, 0)
SET_PED_COMPONENT_VARIATION(pedWade, PED_COMP_JBIB, 0, 0)
USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("d1leadin",TRUE)
ssWadeOnCouch = CREATE_SYNCHRONIZED_SCENE(<< -1158.595, -1519.261, 9.608 >>,<< 0.000, 0.000, -51.000 >>)
TASK_SYNCHRONIZED_SCENE(pedWade, ssWadeOnCouch, "missheistdockssetup1leadinoutlsdhs_mcs_3", "wade_sit_couch", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT)
SET_SYNCHRONIZED_SCENE_LOOPED(ssWadeOnCouch,TRUE)
SET_PED_KEEP_TASK(pedWade, TRUE)
SET_LABEL_AS_TRIGGERED("wade_sit_couch",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),<< -1147.4010, -1522.5767, 9.4130 >>) > 120
IF DOES_ENTITY_EXIST(pedWade)
DELETE_PED(pedWade)
SET_LABEL_AS_TRIGGERED("wade_sit_couch",FALSE)
ENDIF
REMOVE_ANIM_DICT("missheistdockssetup1leadinoutlsdhs_mcs_3")
IF interior_living_room != NULL
UNPIN_INTERIOR(interior_living_room)
SET_LABEL_AS_TRIGGERED("Pin interior",FALSE)
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_AT_LOCATION_ANY_MEANS(sLocatesData,<<-1156.1887, -1519.6130, 9.6327>>,<<0.1,0.1,LOCATE_SIZE_HEIGHT>>,TRUE,"AW_RETURN_HOME",TRUE)
IF NOT HAS_SOUND_FINISHED(soundBeating)
STOP_SOUND(soundBeating)
RELEASE_SOUND_ID(soundBeating)
ENDIF
REQUEST_ANIM_DICT("missheistdockssetup1leadinoutlsdhs_mcs_3")
iProgress++
ELSE
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-1153.995117,-1518.853638,9.632723>>, <<-1155.095581,-1517.376221,12.382723>>, 2.250000)
IF NOT HAS_SOUND_FINISHED(soundBeating)
STOP_SOUND(soundBeating)
RELEASE_SOUND_ID(soundBeating)
ENDIF
REQUEST_ANIM_DICT("missheistdockssetup1leadinoutlsdhs_mcs_3")
iProgress++
ENDIF
//Play dialogue on entering the door in first person
activeViewModeContext = GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()
IF activeViewModeContext = CAM_VIEW_MODE_CONTEXT_ON_FOOT
activeViewMode = GET_CAM_VIEW_MODE_FOR_CONTEXT(activeViewModeContext)
IF activeViewMode = CAM_VIEW_MODE_FIRST_PERSON
//On player entering the door in first person play dialogue line
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<-1149.637939,-1522.367432,9.382867>>, <<-1151.353516,-1519.901245,12.382729>>, 1.500000)
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_MCS3LI")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeech, "D1AUD", "DS1_MCS3LI", "DS1_MCS3LI_3", CONV_PRIORITY_MEDIUM)
PRINTLN("FIRST PERSON CONVERSATION TRIGGERED!")
SET_LABEL_AS_TRIGGERED("DS1_MCS3LI",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
activeViewModeContext = GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()
IF activeViewModeContext = CAM_VIEW_MODE_CONTEXT_ON_FOOT
activeViewMode = GET_CAM_VIEW_MODE_FOR_CONTEXT(activeViewModeContext)
IF activeViewMode != CAM_VIEW_MODE_FIRST_PERSON
//If third person progress as usual
REQUEST_ANIM_DICT("missheistdockssetup1leadinoutlsdhs_mcs_3")
IF HAS_ANIM_DICT_LOADED("missheistdockssetup1leadinoutlsdhs_mcs_3")
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(),TRUE)
SET_PLAYER_CONTROL(PLAYER_ID(),FALSE)
OPEN_SEQUENCE_TASK(seqMain)
TASK_SWAP_WEAPON(NULL, TRUE)
TASK_FOLLOW_NAV_MESH_TO_COORD(NULL,<<-1155.5874, -1518.9718, 9.6327>>,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_NO_STOPPING)
TASK_PLAY_ANIM(NULL,"missheistdockssetup1leadinoutlsdhs_mcs_3", "trevor_react",SLOW_BLEND_IN,SLOW_BLEND_OUT)
CLOSE_SEQUENCE_TASK(seqMain)
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), seqMain)
ENDIF
SETTIMERB(0)
iProgress++
ENDIF
ELSE
//Have Trevor stop after entering trigger
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
//When first person mode progress stage immediately
SETTIMERB(1500)
iProgress++
ENDIF
ENDIF
BREAK
CASE 4
IF TIMERB() > 420
IF NOT IS_PHONE_ONSCREEN()
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED,TRUE)
ENDIF
IF TIMERB() > 1500
activeViewModeContext = GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()
IF activeViewModeContext = CAM_VIEW_MODE_CONTEXT_ON_FOOT
activeViewMode = GET_CAM_VIEW_MODE_FOR_CONTEXT(activeViewModeContext)
IF activeViewMode != CAM_VIEW_MODE_FIRST_PERSON
//Standard progression when third person
IF NOT HAS_LABEL_BEEN_TRIGGERED("DS1_MCS3LI")
IF NOT IS_ANY_TEXT_BEING_DISPLAYED(sLocatesData, IAT_IGNORE_GOD_TEXT_IF_SUBTITLES_OFF)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION(sSpeech, "D1AUD", "DS1_MCS3LI", CONV_PRIORITY_MEDIUM)
SET_LABEL_AS_TRIGGERED("DS1_MCS3LI",TRUE)
ENDIF
ENDIF
ENDIF
ELSE
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
g_sTriggerSceneAssets.ped[0] = pedWade
ENDIF
ENDIF
RESET_MISSION_STAGE_VARIABLES()
ADVANCE_MISSION_STAGE()
ENDIF
ENDIF
ELSE
//When in first person trigger immediately on hitting cut-scene location
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF DOES_ENTITY_EXIST(pedWade)
IF NOT IS_PED_INJURED(pedWade)
g_sTriggerSceneAssets.ped[0] = pedWade
ENDIF
ENDIF
RESET_MISSION_STAGE_VARIABLES()
ADVANCE_MISSION_STAGE()
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC MANAGE_PED_BLIPS()
//Enemy blips
REPEAT iTotalMerc iThisCounter
IF SAFE_DEATH_CHECK_PED(pedMerc[iThisCounter])
// SAFE_REMOVE_BLIP(blipMerc[iThisCounter])
ENDIF
ENDREPEAT
//Worker blips
REPEAT iTotalDockWorker iThisCounter
IF SAFE_DEATH_CHECK_PED(pedDockWorker[iThisCounter])
SAFE_REMOVE_BLIP(blipDockWorker[iThisCounter])
ENDIF
ENDREPEAT
ENDPROC
PROC MANAGE_CRANE_SOUNDS()
SWITCH iManagePickerAudio
CASE 0
IF REQUEST_AMBIENT_AUDIO_BANK("Crane")
AND REQUEST_AMBIENT_AUDIO_BANK("Crane_Stress")
AND REQUEST_AMBIENT_AUDIO_BANK("Crane_Impact_Sweeteners")
//PRINTSTRING("strain audio prepped")PRINTNL()
iManagePickerAudio ++
ENDIF
BREAK
CASE 1
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
IF DOES_ENTITY_EXIST(s_Containers[0].obj_Main)
AND DOES_ENTITY_EXIST(s_Containers[1].obj_Main)
IF NOT IS_ENTITY_ATTACHED_TO_ENTITY(s_Containers[0].obj_Main,s_crane.obj_spreader)
AND NOT IS_ENTITY_ATTACHED_TO_ENTITY(s_Containers[1].obj_Main,s_crane.obj_spreader)
PLAY_SOUND_FROM_ENTITY(iCraneStrain, "Strain_No_Container", s_crane.obj_spreader, "CRANE_SOUNDS")
iManagePickerAudio ++
//PRINTSTRING("strain audio")PRINTNL()
ENDIF
ENDIF
ENDIF
BREAK
CASE 2
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
IF DOES_ENTITY_EXIST(s_Containers[0].obj_Main)
AND DOES_ENTITY_EXIST(s_Containers[1].obj_Main)
IF IS_ENTITY_ATTACHED_TO_ENTITY(s_Containers[0].obj_Main,s_crane.obj_spreader)
OR IS_ENTITY_ATTACHED_TO_ENTITY(s_Containers[1].obj_Main,s_crane.obj_spreader)
iManagePickerAudio ++
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF DOES_ENTITY_EXIST(s_crane.obj_spreader)
IF DOES_ENTITY_EXIST(s_Containers[0].obj_Main)
AND DOES_ENTITY_EXIST(s_Containers[1].obj_Main)
IF NOT IS_ENTITY_ATTACHED_TO_ENTITY(s_Containers[0].obj_Main,s_crane.obj_spreader)
AND NOT IS_ENTITY_ATTACHED_TO_ENTITY(s_Containers[1].obj_Main,s_crane.obj_spreader)
PLAY_SOUND_FROM_ENTITY(iCraneStrain, "Strain_No_Container", s_crane.obj_spreader, "CRANE_SOUNDS")
iManagePickerAudio = 1
//PRINTSTRING("strain audio")PRINTNL()
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDPROC
// ================================== START OF MAIN SCRIPT =================================
SCRIPT
//SET_PROFILING_OF_THIS_SCRIPT(TRUE)
SET_MISSION_FLAG (TRUE)
// death arrest check
IF HAS_FORCE_CLEANUP_OCCURRED()
Mission_Flow_Mission_Force_Cleanup()
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_DOCKS_PRIME_BOARD_TRANSITION, FALSE)
b_is_jumping_directly_to_stage = FALSE //If the mission is in the middle of a debug skip cleanup (e.g. waiting for a cutscene to finish) Force cleanup could break.
MISSION_CLEANUP()
TERMINATE_THIS_THREAD() //Just in case.
ENDIF
//set up the Widgets.
// #IF IS_DEBUG_BUILD
// wgDOCKSSETUP = START_WIDGET_GROUP("DOCKS SETUP CRANE")
// // Widgets for the Main Mission Controlers
// START_WIDGET_GROUP(" Main Mission Controlers")
// ADD_WIDGET_INT_SLIDER("eMissionStage", ieMissionStageTemp, 0, 99, 1)
// ADD_WIDGET_INT_SLIDER("iSetupProgress", iSetupProgress, 0, 99, 1)
// ADD_WIDGET_INT_SLIDER("iProgress", iProgress, 0, 99, 1)
// //ADD_WIDGET_INT_SLIDER("icutsceneprog", icutsceneprog, 0, 99, 1)
// ADD_WIDGET_INT_SLIDER("iSpeechTextProgress", iSpeechProgress, 0, 99, 1)
// //ADD_WIDGET_INT_SLIDER("iBuddyProgress", iBuddyProgress, 0, 99, 1)
// //ADD_WIDGET_INT_SLIDER("ienemyAIprog", ienemyAIprog, 0, 99, 1)
// STOP_WIDGET_GROUP()
// START_NEW_WIDGET_COMBO()
// ADD_TO_WIDGET_COMBO("SETUP")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_1_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_2_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_3_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_4_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_5_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_6_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_7_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_8_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_9_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_10_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_11_PROC")
// ADD_TO_WIDGET_COMBO("MISSION_STAGE_12_PROC")
// ADD_TO_WIDGET_COMBO("END_CUT")
// ADD_TO_WIDGET_COMBO("PASSED")
// ADD_TO_WIDGET_COMBO("FAIL")
// STOP_WIDGET_COMBO("Mission Skip",iWidgetMissionSkip)
// ADD_WIDGET_BOOL("Jump to point in mission",bJumpToMissionJump)
// ADD_WIDGET_BOOL("bmissionstageloaded",bmissionstageloaded)
// //ADD_WIDGET_BOOL("Override attachments", b_override_crane_attach)
// //ADD_WIDGET_BOOL("View spreader attachments", b_debug_view_attachments)
//
// //ADD_WIDGET_VECTOR_SLIDER("vAttachOffset",vAttachOffset,-10.0,10.0,0.001)
// //ADD_WIDGET_BOOL("bAttachPallet", bAttachPallet)
// //ADD_WIDGET_BOOL("Create Crane",bCreateCrane)
// ADD_WIDGET_VECTOR_SLIDER("Crane",v_crane_pos,-4000.0,4000.0,0.001)
// ADD_WIDGET_VECTOR_SLIDER("Cabin", s_crane.v_cabin_attach_offset, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("Lift", s_crane.v_lift_attach_offset, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("Spreader", s_crane.v_spreader_attach_offset, -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -1 0", s_crane.v_wheel_offsets[0], -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -1 1", s_crane.v_wheel_offsets[1], -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -2 2", s_crane.v_wheel_offsets[2], -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -2 3", s_crane.v_wheel_offsets[3], -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -3 4", s_crane.v_wheel_offsets[0], -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -3 5", s_crane.v_wheel_offsets[1], -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -4 6", s_crane.v_wheel_offsets[2], -100.0, 100.0, 0.001)
//// ADD_WIDGET_VECTOR_SLIDER("Wheel -4 7", s_crane.v_wheel_offsets[3], -100.0, 100.0, 0.001)
// //Attachment offsets
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop1", vRopeTop1, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom1", vRopeBottom1, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop2", vRopeTop2, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom2", vRopeBottom2, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop3", vRopeTop3, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom3", vRopeBottom3, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop4", vRopeTop4, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom4", vRopeBottom4, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop5", vRopeTop5, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom5", vRopeBottom5, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop6", vRopeTop6, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom6", vRopeBottom6, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop7", vRopeTop7, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom7", vRopeBottom7, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeTop8", vRopeTop8, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER("vRopeBottom8", vRopeBottom8, -100.0, 100.0, 0.001)
// // - Other offsets
// //ADD_WIDGET_VECTOR_SLIDER("Wheel offset", v_debug_wheel_offset, -100.0, 100.0, 0.001)
// //ADD_WIDGET_VECTOR_SLIDER("Wheel rotation", v_debug_wheel_rotation, -180.0, 180.0, 0.001)
// ADD_WIDGET_FLOAT_SLIDER("MAX_CABIN_Y",MAX_CABIN_Y,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("MIN_CABIN_Y",MIN_CABIN_Y,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("MAX_SPREADER_Z",MAX_SPREADER_Z,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("MIN_SPREADER_Z",MIN_SPREADER_Z,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("MAX_CRANE_OFFSET",MAX_CRANE_OFFSET,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("MIN_CRANE_OFFSET",MIN_CRANE_OFFSET,-100,100,0.1)
//
// ADD_WIDGET_FLOAT_SLIDER("MAX_CABIN_VEL",MAX_CABIN_VEL,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("MAX SPREADER_VEL",MAX_SPREADER_VEL,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("MAX CRANE_VEL",MAX_CRANE_VEL,-100,100,0.1)
//
// ADD_WIDGET_FLOAT_SLIDER("CABIN_ACCEL",CABIN_ACCEL,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("SPREADER_ACCEL",SPREADER_ACCEL,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("CRANE_ACCEL",CRANE_ACCEL,-100,100,0.1)
//
// ADD_WIDGET_VECTOR_SLIDER(" v_spreader_attach_start", v_spreader_attach_start, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER(" v_spreader_attach_end", v_spreader_attach_end, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER(" v_spreader_point_end", v_spreader_point_end, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER(" v_cabin_attach_start", v_cabin_attach_start, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER(" v_cabin_point_start", v_cabin_point_start, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER(" v_cabin_attach_end", v_cabin_attach_end, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER(" v_cabin_point_end", v_cabin_point_end, -100.0, 100.0, 0.001)
//
//
// ADD_WIDGET_VECTOR_SLIDER(" v_attach_to_cam_value", v_attach_to_cam_value, -100.0, 100.0, 0.001)
// ADD_WIDGET_VECTOR_SLIDER(" v_crane_attach_cam_rot", v_crane_attach_cam_rot, -100.0, 100.0, 0.001)
// ADD_WIDGET_FLOAT_SLIDER("f_crane_cam_fov",f_crane_cam_fov,-100,100,0.1)
// ADD_WIDGET_FLOAT_SLIDER("f_crane_attach_cam_fov",f_crane_attach_cam_fov,-100,100,0.1)
// STOP_WIDGET_GROUP()
// SET_LOCATES_HEADER_WIDGET_GROUP(wgDOCKSSETUP )
// #ENDIF
#IF IS_DEBUG_BUILD
//SET_CURRENT_WIDGET_GROUP(wgThisMissionsWidget)
wgDOCKSSETUP = START_WIDGET_GROUP("DOCKS SETUP")
// Widgets for the Main Mission Controlers
START_WIDGET_GROUP(" Main Mission Controlers")
ADD_WIDGET_INT_SLIDER("eMissionStage", ieMissionStageTemp, 0, 99, 1)
ADD_WIDGET_INT_SLIDER("iSetupProgress", iSetupProgress, 0, 99, 1)
ADD_WIDGET_INT_SLIDER("iProgress", iProgress, 0, 99, 1)
ADD_WIDGET_INT_READ_ONLY("iHandlerSection",iHandlerSection)
ADD_WIDGET_INT_SLIDER("iMapAngle",iMapAngle,-360, 360, 1)
ADD_WIDGET_INT_SLIDER("iOverheadMapAngle",iOverheadMapAngle,-360, 360, 1)
ADD_WIDGET_FLOAT_SLIDER("fXTolerance",fXTolerance,-100,100,0.01)
ADD_WIDGET_FLOAT_SLIDER("fYTolerance",fYTolerance,-100,100,0.01)
ADD_WIDGET_VECTOR_SLIDER("vAttach1",vAttach1,-10,10,0.01)
ADD_WIDGET_VECTOR_SLIDER("vAttach2",vAttach2,-10,10,0.01)
ADD_WIDGET_VECTOR_SLIDER("vAttachRot",vAttachRot,-360,360,0.01)
ADD_WIDGET_FLOAT_SLIDER("MAX_CABIN_Y",MAX_CABIN_Y,-100,100,0.1)
ADD_WIDGET_FLOAT_SLIDER("MIN_CABIN_Y",MIN_CABIN_Y,-100,100,0.1)
ADD_WIDGET_FLOAT_SLIDER("MAX_SPREADER_Z",MAX_SPREADER_Z,-100,100,0.1)
ADD_WIDGET_FLOAT_SLIDER("MIN_SPREADER_Z",MIN_SPREADER_Z,-100,100,0.1)
ADD_WIDGET_BOOL("b1",b1)
ADD_WIDGET_BOOL("b2",b2)
ADD_WIDGET_BOOL("b3",b3)
ADD_WIDGET_BOOL("b4",b4)
ADD_WIDGET_FLOAT_SLIDER("fVal1",fVal1,0,10,0.1)
ADD_WIDGET_FLOAT_SLIDER("fVal2",fVal2,0,10,0.1)
ADD_WIDGET_FLOAT_SLIDER("fVal3",fVal3,0,10,0.1)
ADD_WIDGET_FLOAT_SLIDER("fVal4",fVal4,0,10,0.1)
ADD_WIDGET_FLOAT_SLIDER("fFallOff",fFallOff,-1000,1000,0.1)
ADD_WIDGET_FLOAT_SLIDER("fIntensity",fIntensity,-1000,1000,0.1)
ADD_WIDGET_FLOAT_SLIDER("fInnerAngle",fInnerAngle,-1000,1000,0.1)
ADD_WIDGET_FLOAT_SLIDER("fOuterAngle", fOuterAngle,-1000,1000,0.1)
ADD_WIDGET_FLOAT_SLIDER("fExposure",fExposure,-1000,1000,0.1)
ADD_WIDGET_FLOAT_SLIDER("fIdealDistance",fIdealDistance,-10,10,00.01)
ADD_WIDGET_FLOAT_SLIDER("fMinDistance",fMinDistance,-10,10,00.01)
ADD_WIDGET_FLOAT_SLIDER("fMaxDistance",fMaxDistance,-10,10,00.01)
ADD_WIDGET_FLOAT_SLIDER("fTargerMaxCatchUp",fTargerMaxCatchUp,-10,10,00.01)
ADD_WIDGET_FLOAT_SLIDER("fThisValue",fThisValue,-1000,1000,0.1)
ADD_WIDGET_INT_SLIDER("iSpeechTextProgress", iSpeechProgress, 0, 99, 1)
ADD_WIDGET_VECTOR_SLIDER("Crane - v_crane_pos",v_crane_pos,-4000.0,4000.0,0.001)
ADD_WIDGET_FLOAT_SLIDER("Crane - s_crane.f_crane_offset",s_crane.f_crane_offset,-4000.0,4000.0,0.001)
ADD_WIDGET_INT_SLIDER("iCraneHelp", iCraneHelp, 0, 99, 1)
STOP_WIDGET_GROUP()
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO("SETUP")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_1_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_2_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_3_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_4_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_5_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_6_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_7_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_8_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_9_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_10_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_11_PROC")
ADD_TO_WIDGET_COMBO("MISSION_STAGE_12_PROC")
ADD_TO_WIDGET_COMBO("END_CUT")
ADD_TO_WIDGET_COMBO("PASSED")
ADD_TO_WIDGET_COMBO("FAIL")
STOP_WIDGET_COMBO("Mission Skip",iWidgetMissionSkip)
ADD_WIDGET_BOOL("Jump to point in mission",bJumpToMissionJump)
ADD_WIDGET_BOOL("bmissionstageloaded",bmissionstageloaded)
STOP_WIDGET_GROUP()
SET_LOCATES_HEADER_WIDGET_GROUP(wgDOCKSSETUP)
#ENDIF
// Mission Loop: Loops forever until mission is passed or failed
WHILE TRUE
WAIT(0)
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_ThePortOfLSHeistSetup")
// Blocking replay camera movement when iBlockReplayCameraTimer is set B*2226188
IF iBlockReplayCameraTimer > GET_GAME_TIMER()
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME()
ENDIF
IF brunfailchecks // controls fail checks
FAIL_CHECKS()
ENDIF
IF balarmtriggered
IF HAS_SOUND_FINISHED(iAlarmID)
PLAY_SOUND_FRONTEND(iAlarmID,"Generic_Alarm_Electronic_01")
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_10
IF iprogress > 5
IF iprogress != 99
OR iprogress != 98
MANAGE_FLOYD_PAIN()
ENDIF
ENDIF
ENDIF
IF eMissionStage = MISSION_STAGE_11
MANAGE_FLOYD_PAIN()
ENDIF
IF eMissionStage > MISSION_STAGE_5
SET_GLOBAL_MIN_BIRD_FLIGHT_HEIGHT(25.3383)
ENDIF
//MANAGE_PED_BLIPS()
//Always run dock ambience after stage
IF eMissionStage < MISSION_STAGE_10
MANAGE_DOCKS_AMBIENCE()
MANAGE_DOCK_WORKER_AMBIENT_DIALOGUE()
ENDIF
IF eMissionStage > MISSION_STAGE_5
AND eMissionStage < MISSION_STAGE_10
MANAGE_CRANE_SOUNDS()
ENDIF
// controls the dialog
MANAGE_DIALOGUE()
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF eMissionStage > MISSION_STAGE_SETUP
AND eMissionStage < MISSION_STAGE_5
//SCRIPT_ASSERT("MANAGING SETPIECES")
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),vDocks) < 200
MANAGE_DOCK_SETPIECES(GET_ENTITY_COORDS(PLAYER_PED_ID()))
ENDIF
ELSE
IF eMissionStage > MISSION_STAGE_SETUP
IF eMissionStage > MISSION_STAGE_4
AND s_sp_blackwater_with_dockworker[0].i_event > 7
IF bSetPiece[SS_STATIC_GANTRY_GUYS] = TRUE
bSetPiece[SS_STATIC_GANTRY_GUYS] = FALSE
ENDIF
IF bSetPiece[SS_ARRIVE_AT_DOCKS] = TRUE
bSetPiece[SS_ARRIVE_AT_DOCKS] = FALSE
ENDIF
IF bSetPiece[SS_FLOYD_GRABS_PACKAGE] = TRUE
bSetPiece[SS_FLOYD_GRABS_PACKAGE] = FALSE
ENDIF
IF bSetPiece[SS_GANTRY_GUYS] = TRUE
bSetPiece[SS_GANTRY_GUYS] = FALSE
ENDIF
IF bSetPiece[SS_dock_workers_on_pipe] = TRUE
bSetPiece[SS_dock_workers_on_pipe] = FALSE
ENDIF
IF bSetPiece[Ss_dock_workers_talking] = TRUE
bSetPiece[Ss_dock_workers_talking] = FALSE
ENDIF
IF bSetPiece[SS_guys_around_car] = TRUE
bSetPiece[SS_guys_around_car] = FALSE
ENDIF
REPEAT COUNT_OF(s_sv_car_to_admire) iCount
IF DOES_ENTITY_EXIST(s_sv_car_to_admire[iCount].veh)
CLEAN_UP_SETPIECE_VEHILCE(s_sv_car_to_admire[iCount],TRUE,FALSE)
ENDIF
ENDREPEAT
REPEAT COUNT_OF(s_sp_dock_workers_on_pipe) iCount
IF DOES_ENTITY_EXIST(s_sp_dock_workers_on_pipe[iCount].ped)
CLEAN_UP_SETPIECE_PED(s_sp_dock_workers_on_pipe[iCount],TRUE,FALSE)
ENDIF
ENDREPEAT
REPEAT COUNT_OF(s_sp_dock_workers_talking) iCount
IF DOES_ENTITY_EXIST(s_sp_dock_workers_talking[iCount].ped)
CLEAN_UP_SETPIECE_PED(s_sp_dock_workers_talking[iCount],TRUE,FALSE)
ENDIF
ENDREPEAT
REPEAT COUNT_OF(s_sp_floyd_grabs_package) iCount
IF DOES_ENTITY_EXIST(s_sp_floyd_grabs_package[iCount].ped)
CLEAN_UP_SETPIECE_PED(s_sp_floyd_grabs_package[iCount],TRUE,FALSE)
ENDIF
ENDREPEAT
REPEAT COUNT_OF(s_sp_guys_around_car) iCount
IF DOES_ENTITY_EXIST(s_sp_guys_around_car[iCount].ped)
CLEAN_UP_SETPIECE_PED(s_sp_guys_around_car[iCount],TRUE,FALSE)
ENDIF
ENDREPEAT
REPEAT COUNT_OF(s_sp_gantry_guys_dynamic) iCount
IF DOES_ENTITY_EXIST(s_sp_gantry_guys_dynamic[iCount].ped)
CLEAN_UP_SETPIECE_PED(s_sp_gantry_guys_dynamic[iCount],TRUE,FALSE)
ENDIF
ENDREPEAT
REPEAT COUNT_OF(s_sp_gantry_guys_static) iCount
IF DOES_ENTITY_EXIST(s_sp_gantry_guys_static[iCount].ped)
CLEAN_UP_SETPIECE_PED(s_sp_gantry_guys_static[iCount],TRUE,FALSE)
ENDIF
ENDREPEAT
REMOVE_ANIM_DICT("missheistdockssetup1ig_2_p1@new_structure")
REMOVE_ANIM_DICT("missdocksshowoffcar@idle_a")
REMOVE_ANIM_DICT("missdocksshowoffcar@idle_b")
REMOVE_ANIM_DICT("missdocksshowoffcar@base")
ENDIF
ENDIF
ENDIF
ENDIF
// preloads and then creates assets for the next stage.
PRE_STREAM_MISSION_STAGE()
MANAGE_DOCKWORKER_PROPS()
//do't do the locates header J skips.
#IF IS_DEBUG_BUILD
DONT_DO_J_SKIP(sLocatesData)
#ENDIF
IF eMissionStage < MISSION_STAGE_4
IF g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
g_bDocksBackGatesIgnoreTrevorsUniform = TRUE
ENDIF
ELSE
IF g_bDocksBackGatesIgnoreTrevorsUniform = TRUE
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_DOCKS_BACK_GATE_IN,PLAYER_PED_ID())
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_DOCKS_BACK_GATE_OUT,PLAYER_PED_ID())
g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_8
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<497.625580,-3113.236328,4.570056>>, <<471.186218,-3113.169922,15.352262>>, 13.250000)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_JUMP)
ENDIF
ENDIF
IF eMissionStage > MISSION_STAGE_1
AND eMissionStage < MISSION_STAGE_10
DISABLE_COMBAT_CONTROLS_THIS_FRAME()
ENDIF
IF eMissionStage >= MISSION_STAGE_4
MERRYWEATHER_WITH_DOCK_WORKER()
ENDIF
// main mission switch
SWITCH eMissionStage
CASE MISSION_STAGE_SETUP //controls the loading of assets needed for the appropriate stage
MISSION_SETUP()
BREAK
CASE MISSION_STAGE_OPENING_CUTSCENE //plays the opening cutscene
OPENING_CUTSCENE()
BREAK
CASE MISSION_STAGE_1 //DRIVE
MISSION_STAGE_1_PROC()
BREAK
CASE MISSION_STAGE_2 //PARK
MISSION_STAGE_2_PROC()
BREAK
CASE MISSION_STAGE_4 //FOLLOW FLOYD
MISSION_STAGE_4_PROC()
BREAK
CASE MISSION_STAGE_5 //HANDLER WORK
MISSION_STAGE_5_PROC()
BREAK
CASE MISSION_STAGE_6 // FOLLOW TO CRANE
MISSION_STAGE_6_PROC()
BREAK
CASE MISSION_STAGE_7 //CRANE
MISSION_STAGE_7_PROC()
BREAK
CASE MISSION_STAGE_8 //CAMERA
MISSION_STAGE_8_PROC()
BREAK
CASE MISSION_STAGE_10 //DRIVE TO OTHER DOCKS
MISSION_STAGE_10_PROC()
BREAK
CASE MISSION_STAGE_11 //DRIVE BACK TO FLOYD'S APARTMENT
MISSION_STAGE_11_PROC()
BREAK
CASE MISSION_STAGE_PASSED //mission completed
MISSION_PASSED()
BREAK
CASE MISSION_STAGE_FAIL //mission failed
MISSION_FAILED()
BREAK
ENDSWITCH
// debug controls
#IF IS_DEBUG_BUILD
//Tells us where the mission stage is at.
Where_are_we()
// Checks if the keyboard key S has been pressed and if sets the current mission state to complete
IF IS_KEYBOARD_KEY_PRESSED (KEY_S)
PRINT_GOD_TEXT("AW_PASSED")
eMissionStage = MISSION_STAGE_PASSED
ENDIF
// Checks if the keyboard key F has been pressed and if so sets the current mission state to failed
IF IS_KEYBOARD_KEY_PRESSED (KEY_F)
//PRINT_GOD_TEXT("AW_FAILED")
reason_for_fail = GENERIC
eMissionStage = MISSION_STAGE_FAIL
ENDIF
//launch the mission skip menu
IF LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct, iReturnStage, ENUM_TO_INT(eMissionStage), FALSE, "",TRUE,TRUE)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-90)
bcleanup = FALSE
iprogress = 99
bskipping = TRUE
IF iReturnStage < 1
iReturnStage = 1
ENDIF
IF iReturnStage > ENUM_TO_INT(MISSION_STAGE_PASSED) OR iReturnStage > ENUM_TO_INT(MISSION_STAGE_10)
iReturnStage = ENUM_TO_INT(MISSION_STAGE_PASSED)
ENDIF
IF iReturnStage = 1
SET_PLAYER_START_POSITION(eMissionStage)
ENDIF
IF iReturnStage > 11
MISSION_PASSED()
ENDIF
eMissionStage = INT_TO_ENUM(MISSION_STAGE_ENUM, iReturnStage)
ENDIF
WHILE bskipping = TRUE //Load new stage if skipping
IF iReturnStage > ENUM_TO_INT(MISSION_STAGE_11)
CONTROL_FADE_IN(500)
bskipping = FALSE
ELSE
WAIT(0)
LOAD_MISSION_STAGE(eMissionStage)
ENDIF
ENDWHILE
//For the widget thing
ieMissionStageTemp = ENUM_TO_INT(eMissionStage)
#ENDIF
ENDWHILE
ENDSCRIPT