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

20569 lines
738 KiB
Python
Executable File

//Compile out Title Update changes to header functions.
//Must be before includes.
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_camera.sch"
USING "commands_pad.sch"
USING "commands_script.sch"
USING "flow_public_core_override.sch"
USING "Flow_Mission_Data_Public.sch"
USING "Commands_streaming.sch"
USING "commands_clock.sch"
USING "commands_ped.sch"
USING "commands_task.sch"
USING "commands_object.sch"
USING "selector_public.sch"
USING "commands_fire.sch"
USING "commands_event.sch"
using "commands_misc.sch"
USING "commands_graphics.sch"
using "dialogue_public.sch"
//USING "cutscene_builder.sch"
USING "script_blips.sch"
USING "replay_public.sch"
USING "locates_public.sch"
#IF IS_DEBUG_BUILD
USING "scripted_cam_editor_public.sch"
#ENDIF
USING "mission_stat_public.sch"
using "help_at_location.sch"
USING "CompletionPercentage_public.sch"
USING "CompletionPercentage_public.sch"
using "clearmissionarea.sch"
USING "commands_recording.sch"
USING "player_ped_public.sch"
CONST_INT ENABLE_ENHANCED_HUD_FEATURES 1
CONST_INT MAX_SCANNABLE_PEDS 10
CONST_INT MAX_HELIHUD_COORD_COUNT 5
CONST_INT MAX_MESSAGES 1
CONST_INT MAX_PED_NAMES 11
CONST_INT MAX_BRAIN_TRACKERS 1
USING "helicopterhud.sch"
//USING "beam_effect.sch"
USING "clearmissionarea.sch"
USING "timelapse.sch"
USING "shop_public.sch"
USING "spline_cam_edit.sch"
USING "taxi_functions.sch"
USING "push_in_public.sch"
USING "script_misc.sch"
#IF IS_DEBUG_BUILD
USING "select_mission_stage.sch"
CONST_INT MAX_SKIP_MENU_LENGTH 13
MissionStageMenuTextStruct SkipMenuStruct[MAX_SKIP_MENU_LENGTH]
#ENDIF
//WIDGET_GROUP_ID widWidgets
ENUM CARSTEAL2_SWITCH_CAM_STATE
SWITCH_CAM_IDLE,
SWITCH_CAM_START_SPLINE1,
SWITCH_CAM_PLAYING_SPLINE1,
SWITCH_CAM_WAITING_FOR_PLAYER_CONTROL,
SWITCH_CAM_RETURN_TO_GAMEPLAY
ENDENUM
CARSTEAL2_SWITCH_CAM_STATE eSwitchCamState = SWITCH_CAM_IDLE
SWITCH_CAM_STRUCT scsCarsteal2
//first person push-ins
PUSH_IN_DATA s_cs2_pushin
INTERIOR_INSTANCE_INDEX intHangar
int iConvoAttempts
int iConvoLastAttmpetTime
bool bDoReplayToHere
BOOL bTrevorHeadTrackStarted = FALSE
FLOAT fTrevorHeadTrackPhase = 0.0
FLOAT fFranklinAimingHeading = 145.4926
BOOL bFranklinAnimStarted = FALSE
FLOAT fFranklinAnimStartPhase = 0.37
float fFranklinAnimTalkPhase = 0.4
BOOL bPlayerControlStarted = FALSE
INT iWhooshSound,iWhooshSoundMid
BOOL bPlayerinFirstPerson
BOOL bWhooshStarted = FALSE
BOOL bWhooshFinished = FALSE
FLOAT fWhooshStartPhase = 0.278269
float fWhooshMidAudioPhase = 0.345958
FLOAT fWhooshStopPhase = 0.95
bool bMidWhooshPlayed = FALSE
CONST_INT MAX_PED_COUNT 18
CONST_INT MAX_VEH_COUNT 14
CONST_INT MAX_ASSETS 44
CONST_INT MAX_EVENTS 20
CONST_INT MAX_ACTIONS 21
CONST_INT MAX_DIALOGUE 25
string sVehicleRecordingLibrary
int iStoreStatBit
enum enumFailState
MISSION_STATE_SKIP,
MISSION_STATE_FAILED,
MISSION_STATE_DEATH_ARREST,
MISSION_STATE_PASSED
endenum
enum enumAction
action_null
endenum
ENUM enumMissionStage
STAGE_STARTUP, //0
STAGE_TREVOR_GET_CHOPPER, //1
STAGE_FRANKLIN_AWAITS_TREVOR, //2
STAGE_LEARN_TO_SCAN, //3
STAGE_APPROACH_SCAN_AREA_ONE, //4
STAGE_APPROACH_SCAN_AREA_THREE, //5
STAGE_CHASE_BEGINS, //6
STAGE_CARPARK, //7
STAGE_SCAN_CARPARK_PEDS, //8
STAGE_TAKE_ZTYPE, //9
STAGE_DRIVE_VEHICLE_TO_OBJECTIVE, //10
STAGE_APPROACH_AIRPORT_GATES, //11
STAGE_FINAL_CUT, //12
STAGE_LEAVE_AIRPORT, //13
STAGE_GAME_OVER, //14
STAGE_CLEANUP, //15
STAGE_NULL //16
ENDENUM
enumMissionStage missionProgress
enum andOrEnum
cFORCEtrue,
cIGNORE,
cIF,
cIFnot,
cAND,
cAndNOT,
cOR,
cWasTrueNowFalse,
cORbracket
endenum
bool conditionsTrue
bool bracketOpen
//Activities
enum enumFails
FAIL_NULL,
FAIL_PLAYER_HAS_WEAPON_DRAWN_IN_POL_DEPT,
FAIL_HAS_WANTED_LEVEL_IN_POLICE_DEPT,
FAIL_COP_DIES,
FAIL_PLAYER_SHOOTING_NEAR_POLICE_DEPT,
FAIL_PLAYER_CREATED_DISTURBANCE_NEAR_POL_DEPT,
FAIL_COPS_IN_COMBAT,
FAIL_CHOPPER_DESTROYED,
FAIL_PLAYER_WANDERS_AWAY_FROM_POLICE_DEPT,
FAIL_PILOT_FLEW_AWAY,
FAIL_ZTYPE_DAMAGED,
FAIL_PLAYER_LEAVES_ZTYPE,
FAIL_CHAD_ESCAPES_WITH_ZTYPE,
FAIL_ZTYPE_STUCK,
FAIL_DEVIN_KILLED,
FAIL_DEVIN_SCARED_OFF,
FAIL_COPS_AT_DEVIN,
FAIL_FLEW_TOO_FAR_AWAY,
fail_devins_plane_destroyed,
fail_attacked_devins_entourage
endenum
enumFails failReason
int failDelay
// Conditions setup
ENUM enumconditions
COND_NULL,
COND_FAILING,
COND_COP_WALKING_TO_STAIRS,
COND_CUTSCENE_ENDED,
COND_PLAYER_ENTERED_RECEPTION,
COND_COP_IN_CORRIDOR,
COND_PLAYER_ANYWHERE_IN_STAIRWALL,
COND_PLAYER_LAGS_BEHIND_OR_WANDERS,
COND_PLAYER_UP_STAIRWELL,
COND_PLAYER_IN_CORRIDOR,
COND_PLAYER_OUT_OF_BOUNDS,
COND_PLAYER_NEARBY,
COND_COPS_ALERTED_CONDITION,
COND_COP_IN_STAIRWELL,
COND_COP_FINISHED_LEADING_PLAYER,
COND_CAN_SPAWN_CHOPPER,
COND_PLAYER_NOT_FOLLOWING_COP,
COND_DIA_COP_LEADING,
COND_PLAYER_ON_ROOF,
COND_PLAYER_TRYS_TO_ENTER_CHOPPER,
COND_PLAYER_IN_LOCKER_ROOM,
COND_PLAYER_RUNS_AHEAD,
COND_TREVOR_TELLS_PILOT_TO_TAKE_OFF,
COND_TREVOR_TELLS_PILOT_TO_ACTIVATE_SCANNER,
COND_READY_TO_TURN_ON_SCANNER,
COND_DIA_BACK_TO_FRONT_DESK,
COND_DIA_GET_IN,
COND_PLAYER_IN_CHOPPER,
COND_COP_LEADING_PLAYER,
COND_PLAYER_SPOTTED_BY_PILOT,
COND_START_FRANKLIN,
COND_PLAYER_LEAVING_TREVOR,
COND_END_FRANKLIN,
//learn to scan
COND_SCAN_STAGE_START,
COND_STARTED_AS_TREVOR,
COND_FAR_ENOUGH_FROM_FRANKLIN_TO_PLAY_CONVO,
COND_LEARNT_TO_SCAN,
COND_BOOTING_UP_LINE_PLAYED,
COND_FRANKLIN_SCANNED,
COND_DIA_SCANNED_CONVO_FINISHED,
COND_DIA_SCAN_MY_BUDDY,
COND_TREV_SAID_TO_FIND_FRANKLIN,
COND_TOLD_TO_SCAN_FRANKLIN,
COND_OUTSIDE_SAFE_ZONE,
COND_FLEW_IN_TO_FAIL_ZONE,
COND_APPROACHING_FRANKLIN,
COND_SCAN_STAGE_END,
//scan area 1
COND_START_SCAN_AREA_1,
COND_POSTAL_BEING_OBSERVED,
COND_PERVERT_BEING_OBSERVED,
COND_AREA1_PED_JUST_SCANNED,
COND_SCANNED_PED_WAS_A_WOMAN,
COND_DIA_COME_IN_FRANKLIN_PLAYED,
COND_CHOPPER_IN_VIEWING_RANGE_OF_AREA1,
COND_START_SCAN_AREA_3,
COND_LISTENING_IN_ON_DIALOGUE,
COND_END_SCAN_AREA_1,
//scan area 3
COND_AREA3_PED_JUST_SCANNED,
COND_PROSIE_BEING_OBSERVED,
COND_CHAD_BEING_OBSERVED,
COND_CHAD_WAS_SCANNED,
COND_CHAD_HIDDEN,
COND_CHAD_ON_SCREEN,
COND_CHAD_OFFSCREEN_FOR_4_SECONDS,
COND_CHAD_BY_GARAGES,
COND_CHAD_IN_APARTMENT_LOCATE,
COND_GARAGE_DOOR_OPENING,
COND_END_SCAN_AREA_3,
//CAR PARK CONDITONS
COND_CARPARK_STARTS, //21
COND_CHOPPER_DESCENDING,
COND_FRANKLIN_STOPPED_HIS_CAR,
COND_FRANKLIN_HAS_STOPPED_RUNNING,
COND_A_LITTLE_AFTER_EXITS_CLEAR_DIA,
COND_DIA_TAKE_US_DOWN,
COND_DIA_THERMAL_VISION,
COND_DIA_CAN_YOU_SEE_FRANKLIN,
COND_DIA_ANY_OTHER_HEAT_SOURCES,
COND_DIA_LOOK_FOR_MORE_HEAT_PLAYED,
COND_DIA_FRANKLIN_SEES_PISSER,
COND_DIA_FRANKLIN_SEES_FIXING_MAN,
COND_DIA_FRANKLIN_SEES_CHAD,
COND_DIA_TREVOR_SEE_FRANKLIN_ENDED,
COND_CHOPPER_AT_CAR_PARK_LEVEL,
COND_THERMAL_TURNED_ON,
COND_FRANKLIN_OBSERVED_WITH_THERMAL,
COND_SEE_WANKER,
COND_SEE_FIXING_MAN,
COND_SEE_CHAD,
COND_SEE_LEANING_MAN,
COND_SEE_PHONE_CAR_MAN,
COND_FRANKLIN_AT_PHONE_MAN,
COND_FRANKLIN_AT_CHAD,
COND_THERMAL_READY,
COND_DIA_TREVOR_SEES_CHAD_ENDED,
COND_SWITCH_BEGUN,
COND_BLOCK_LISTENING,
COND_FRANKLIN_SAW_WRONG_GUY,
COND_DIA_FROM_FRANKLIN_SEEING_CHAD,
COND_FRANKLIN_RUNS_TO_CAR,
COND_WAITING_FOR_NEXT_TARGET,
COND_NEXT_TARGET_FOUND,
COND_INVESTIGATING_NEXT_TARGET,
COND_CAR_PARK_ENDS,
//ztype drive conditions
COND_ZTYPE_STARTS,
COND_CHAD_INTERRUPTED,
COND_CHAD_CAN_BACK_OFF,
COND_GUN_AIMED_AT_CHAD,
COND_CHAD_DAMAGED_BY_PLAYER,
COND_CHAD_CAN_RUN,
COND_PLAYER_AT_SECURITY,
COND_PLAYER_200M_FROM_SECURITY,
COND_CHAD_PLAYER_IN_GARAGE,
COND_CHAD_RAGDOLL,
COND_PLAYER_GOT_IN_CAR,
COND_PROCEED_TO_HANGAR_CONDITIONS_MET,
COND_PHONE_CALL_MADE,
COND_NO_DIALOGUE_FOR_TWO_SECONDS,
COND_CHAD_DEAD,
COND_CHAD_PLAYER_100m_FROM_CAR_PARK,
COND_PLAYER_30m_from_garage,
COND_PLAYER_200m_from_garage,
COND_PLAYER_300m_from_garage,
COND_PLAYER_DEFAULT_LOAD_CUT_RANGE_FROM_HANGAR,
COND_WANTED,
COND_HIT_BLIP,
COND_PLAYER_IN_ZTYPE,
COND_DRIVE_TO_INSTRUCTIONS_GIVEN,
COND_CHAD_ESCAPED_IN_ZTYPE,
COND_PLAYER_SHOOTING_NEAR_CHAD,
COND_DEVIN_WALKING_IN_TO_ZTYPE,
COND_CHOPPER_DAMAGED_BY_PLAYER,
COND_DAMAGED_ZTYPE,
COND_PLAYER_7M_FROM_CHAD,
COND_ZTYPE_IN_HANGAR,
COND_ZTYPE_IN_CAR_STOP_RANGE,
COND_ZTYPE_IS_STOPPED,
COND_STOP_FOR_DEVIN,
COND_STOP_FOR_CORRECT,
COND_ZTYPE_ENDS,
COND_EXIT_AIRPORT_START,
COND_PLAY_IN_ZTYPE,
COND_EXIT_AIRPORT_END
ENDENUM
//ACTION SETUP
ENUM enumActions
ACT_NULL,
ACT_SPAWN_COPS,
ACT_INTRO_CUTSCENE,
ACT_LOOK_AT_PLAYER_ENTRY,
ACT_POINT_TO_STAITRS,
ACT_WALK_TO_STAIRS,
ACT_COPS_ALERTED,
ACT_SPAWN_CHOPPER,
ACT_PED_AT_VENDING_MACHINE_LEAVES,
ACT_COP_RETURNS_TO_FRONT_DESK,
ACT_PLAYER_GETS_IN_CHOPPER,
ACT_PILOT_FLIES_OFF,
ACT_PILOT_LOOKS_AT_TREVOR,
ACT_COP_WAITS_FOR_PLAYER,
ACT_LOCK_GUN_ROOM,
ACT_DO_TREVOR_STAND,
//get chopper as Franklin
ACT_CLEAR_SWITCH_INSTRUCTIONS,
ACT_LOAD_STAND_ANIM,
ACT_BLOCK_CAM_MODE_CHANGE,
//learn to scan
ACT_TURN_ON_SCANNER,
ACT_MUSIC_SCANNER_ON,
ACT_FRANKLIN_LOOKS_AT_CHOPPER,
ACT_FRANKLIN_REACTS_TO_TREVOR_CONVERSATION,
ACT_FRAKNLIN_GETS_IN_CAR,
ACT_LOAD_PATH_NODES,
ACT_CREATE_PLAYER_CAR,
ACT_CHANGE_FRANKLIN_LOD_LEVEL_UP,
ACT_CHANGE_FRANKLIN_LOD_LEVEL_DOWN,
//scan area 1
ACT_STOP_AUDIO_CAR_2_SCAN_FRANKLIN,
ACT_SCANNING_AUDIO_SCENE,
ACT_STOP_CAR_2_SCAN_THE_SUSPECTS,
ACT_DELETE_FRANKLIN,
ACT_GARAGE_OPENING_SOUND,
//scan area 3
ACT_RELEASE_AREA_1_ASSETS,
ACT_SPAWN_ZTYPE,
ACT_DOG_BARKS,
ACT_TARGET_LOST_SOUND,
//chase stage
ACT_block_peds_on_chase_route,
ACT_AUDIO_SCENE_TRANSITION,
action_load_audio_scene,
act_update_target_car_audio_level,
act_remove_trees,
//Car Park stage
ACT_CHOPPER_CONTROL,
ACT_CAR_HAS_PISS,
ACT_BONNET_SEX,
ACT_CAR_FIXER,
ACT_ON_PHONE_IN_CAR,
ACT_LEANING_ON_CAR,
ACT_FRANKLIN_RUNS_TO_ROOF,
ACT_FRANKLIN_WAVES_AT_CHOPPER_CAMERA,
ACT_FRANKLIN_RUNS_TO_BONNET_CAR,
ACT_FRANKLIN_RUNS_TO_PISSER_CAR,
ACT_FRANKLIN_RUNS_TO_CHAD_CAR,
ACT_FRANKLIN_RUNS_TO_LEANING_MAN,
ACT_FRANKLIN_RUNS_TO_PHONE_MAN,
ACT_FRANKLIN_REACTS_TO_WRONG_CAR,
ACT_CHAD_LOOKS_ABOUT,
ACT_CHAD_EXITS_CAR,
ACT_MAKE_FRANKLIN_WALK_ON_SWITCH,
ACT_PREP_SWITCH,
ACT_DO_SWITCH,
//take ztype
ACT_PREP_STAGE,
ACT_START_AUDIO_CAR_2_DRIVE_BACK_TO_GARAGE,
ACT_STOP_AUDIO_CAR_2_STEAL_THE_CAR,
ACT_CHAD_RUNS_OFF,
ACT_CHAD_TRIES_TO_CREEP_AWAY,
ACT_REACTS_TO_PLAYER_IN_CAR,
ACT_LOAD_END_CUTSCENE,
ACT_CHAD_CALLS_COPS,
ACT_FLY_TO_GARAGE,
ACT_REMOVE_CAR_PARK_ASSETS,
ACT_SET_UP_DEVIN_LEADIN,
ACT_SPAWN_SECURITY_GUARD,
ACT_OPEN_GATES,
ACT_CONTROL_CHOPPER,
ACT_STOP_ZTYPE_IN_HANGAR,
ACT_RETURN_CONTROL_TO_PLAYER,
ACT_STAT_CS2_SCANMAN,
ACT_DEVIN_DRIVES_OFF_ZTYPE,
ACT_MAKE_PLAYER_WALK,
ACT_OPEN_EXIT_GATE,
ACT_TURN_PLANE_ENGINE_ON
ENDENUM
// Set up instructions
ENUM enumInstructions
INS_NULL,
INS_GET_TO_RECEPTION,
INS_FOLLOW_COP,
INS_GET_TO_ROOF,
INS_GET_IN_CHOPPER,
INS_ABANDON_TREVOR,
//learn to scan
INS_TEACH_TO_SCAN,
INS_SCAN_FRANKLIN,
INS_SCAN_COMPLETE,
INS_GET_BACK_TO_FRANKLIN,
//scan area 3
INS_FOLLOW_CHAD,
INS_SHOW_HIDDEN_HELP,
// ==== Car Park Instructions ====
INS_TURN_ON_THERMAL_VISION,
INS_ZOOM_IN_ON_FRANKLIN,
INS_LOOK_FOR_A_HEAT_SOURCES,
INS_LOOK_FOR_ANOTHER_HEAT_SOURCES,
INS_SWITCH_TO_FRANKLIN,
//====== take ztype =======
INS_GET_IN_THE_ZTYPE,
INS_DRIVE_TO_AIRPORT,
INS_DRIVE_TO_DESTINATION,
INS_WARNING_WANTED_LEVEL,
INS_DRIVE_IN_TO_GARAGE,
//exit airport
INS_EXIT_AIRPORT,
INS_RETURN_ZTYPE
ENDENUM
enum enumDialogue
DIA_NULL,
DIA_CAN_I_HELP,
DIA_INTEROGATE_COP,
DIA_COP_WALK_CHAT,
DIA_COME_ON,
DIA_COP_RETURNS_TO_DESK,
DIA_PLAYER_GETS_IN_CHOPPER,
DIA_PLAYER_LAGS_OR_LEAVES,
DIA_PLAYER_THREAT_IN_POL_DEPT,
DIA_PILOT_SEES_PLAYER,
DIA_PLAYER_ENTERS_LOCKER_ROOM,
DIA_WRONG_WAY,
DIA_RESTART_CONV,
dia_player_doesnt_switch,
//learn to scan
DIA_BOOTING_UP,
DIA_SCAN_BUDDY_NEARBY,
DIA_CONV_ON_WAY_TO_FRANKLIN,
DIA_SCAN_MY_BUDDY,
DIA_FRANKLIN_SCANNED,
DIA_GOING_TO_FIND_BUDDY,
DIA_ACTOR_LINE_PLAYS,
DIA_FLYING_AWAY,
DIA_WAITING_TO_SCAN,
//scan area 1
DIA_TREVOR_COMMENTS_ON_POSTAL,
DIA_TREVOR_COMMENTS_ON_PERVERT,
DIA_TREVOR_COMMENTS_ON_PROSTITUTE,
DIA_TREVOR_COMMENTS_ON_CHADGIRL,
DIA_TREVOR_MAKES_SCAN_COMPLETE_COMMENT,
//scan area 3
DIA_SEEN_CHAD,
DIA_CHAD_HIDDEN,
DIA_CHAD_WALKING_THROUGH_APARTMENTS,
DIA_CHAD_OFF_SCREEN,
DIA_FRANKLIN_FIND_HIM,
DIA_FOUND_CHAD,
DIA_TREVOR_BANTER_DURING_CHAD_WALK,
DIA_CHAD_AT_GARAGE,
//car park dialogue
DIA_TAKE_US_DOWN,
DIA_TREVOR_SCARED,
DIA_EXITS_CLEAR,
DIA_THERMAL_VISION,
DIA_TREVOR_REACTION_TO_THERMAL_VISION_ON,
DIA_FRANKLIN_ASKS_IF_PLAYER_CAN_SEE_HIM,
DIA_TREVOR_SEE_FRANKLIN,
DIA_ANY_OTHER_HEAT_SOURCES,
DIA_TREVOR_SEES_PISSER,
DIA_TREVOR_SEES_FIXING_MAN,
DIA_TREVOR_SEES_CHAD,
DIA_TREVOR_SEES_LEANING_MAN,
DIA_TREVOR_SEES_PHONE_CAR_MAN,
DIA_FRANKLIN_SEES_PISSER,
DIA_FRANKLIN_SEES_FIXING_MAN,
DIA_FRANKLIN_SEES_ZTYPE,
DIA_FRANKLIN_SEES_LEANING_MAN,
DIA_FRANKLIN_SEES_PHONE_MAN,
DIA_OVERHEAR_FUCKERS_WITH_SCANNER,
DIA_OVERHEAR_CAR_FIXER_WITH_SCANNER,
DIA_OVERHEAR_PISSER_WITH_SCANNER,
DIA_OVERHEAR_CHAD_WITH_SCANNER,
DIA_OVERHEAR_CAR_LEANING_GUY,
DIA_OVERHEAR_CAR_ON_PHONE,
DIA_TREVOR_RANTS_IN_SWITCH,
DIA_PLAYER_SHOOTING_CHOPPER,
DIA_DRIVING_BACK,
DIA_CRASH_ZTYPE,
DIA_WHERES_THE_CAR,
//collect car
DIA_BEG_TO_LET_GO,
DIA_DONT_TAKE_CAR,
DIA_FLEE_PANIC,
DIA_FLEE_PANIC_NOT_HIT,
DIA_PLAYER_GOT_IN_CAR,
DIA_DRIVING_AWAY,
DIA_WARNING_COPS,
DIA_KILLED_CHAD,
DIA_CALL_DEVIN,
DIA_OPEN_GATES,
DIA_FRANKLIN_THREATENS_CHAD,
DIA_PLAYER_RUNS_OFF
ENDENUM
//conversation types
ENUM enum_conv_types
CONVTYPE_NULL,
CONVTYPE_UNIMPORTANT,
CONVTYPE_CHOPPER_CAM,
CONVTYPE_BANTER,
CONVTYPE_GAMEPLAY
ENDENUM
enum_conv_types currentConvType
//events
enum enumEvents
EVENTS_REMOVE_INTRO_CUT_ASSETS, //0
EVENTS_CHOPPER_LANDS, //1
EVENTS_LOAD_FIRST_LOCATION_PEDS, //2
EVENTS_CLEAR_FIRST_LOCATION, //3
EVENTS_LOAD_SECOND_LOCATION_PEDS, //4
EVENTS_CLEAR_SECOND_LOCATION, //5
EVENTS_LOAD_FINAL_LOCATION_PEDS, //6
EVENTS_CLEAR_FINAL_LOCATION, //7
EVENTS_REMOVE_FRANKLIN, //8
EVENTS_CHOPPER_BLADES, //9
events_control_playback, //10
events_control_golf_playback, //11
EVENTS_GOLF_COURSE, //12
EVENTS_HOVER_CHOPPER, //13
EVENTS_FILL_CARPARK, //14
EVENTS_CHOPPER_CARPARK, //15
EVENTS_CONTROL_INFRARED, //16
EVENTS_TREVOR_DRIVE_TO_CARPARK, //17
EVENTS_CONVERSATION_ON_ROUTE, //18
EVENTS_CHASE_CHATTER, //19
EVENTS_CONTROL_GOLF_CONVERSATION, //20
EVENTS_CARPARK_CONVERSATION, //21
EVENTS_KEEP_CHAD_SAFE, //22
EVENTS_REMOVE_CARPARK_ASSETS, //23
EVENTS_ENABLE_CHOPPER_BEAM, //24
EVENTS_REMOVE_CARPARK_CARS, //25
EVENTS_CHECK_COLLISION, //26
EVENTS_SPEED_UP_CHOPPER, //27
EVENTS_PRINT_CHADBUST_MESSAGE, //28
EVENTS_TRY_HEIST_VEHICLE, //29
events_disable_franklin_car, //30
EVENTS_FRANKLIN_ARRIVE, //31
EVENTS_DRIVE_OFF, //32
EVENTS_REPOSITION_HEIST_CAR, //33
events_chopper_push, //34
EVENTS_FRANKLIN_INVESTIGATES_PEDS, //35
events_look_for_another_heat_source, //36
EVENTS_GETCHAD_INST, //37
EVENTS_KILL_CONVERSATION_WHEN_LEAVING_CAR, //38
events_blow_up_cars, //39
EVENTS_CHOPPER_TRACKS_FRANKLIN, //40
EVENTS_CHOPPER_HOVER, //41
EVENTS_DEAL_WITH_PLAYER_CAR, //42
events_change_playback_speed, //43
EVENTS_OPEN_GARAGE, //44
EVENTS_CHOPPER_AT_START, //45
EVENTS_CHAD_COWER, //46
EVENTS_FAIL_CHASE, //47
EVENTS_LOAD_COLLISION_AROUND_CHAD, //48
EVENTS_STREAM_ALLEY, //49
events_scene_mugging, //50
EVENTS_SCENE_BURY_BODY, //51
EVENTS_SCENE_PERVERT, //52
events_scene_chadGirl, //53
events_scene_pimp, //54
EVENTS_SCENE_CHADJACK, //55
EVENTS_SCENE_CHAD_EXITS_CAR, //56
EVENTS_SCENE_CAR_FUCK, //57
events_scene_car_wank, //58
events_freeze_car, //59
events_witness_mugging, //60
events_witness_pervert, //61
events_witness_pimp, //62
events_witness_chadgirl, //63
events_show_goto_instructions, //64
EVENTS_REMOVE_SCAN_BOXES, //65
events_hover_over_first_location, //66
events_hover_over_second_location, //67
events_pimp_achievement, //68
EVENTS_UPSIDE_DOWN, //69
events_set_player_ids, //71
events_create_franklin_and_car, //72
events_Franklin_enters_carpark, //73
events_switch_to_franklin, //74
events_listen_help, //75
EVENTS_QUAD_BLOCKING, //76
EVENTS_CHAD_DIALOGUE, //77
EVENTS_REMOVE_RANDOM_CARS, //78
EVENTS_ADDITIONAL_ZOOM_HELP, //79
events_waypoint_through_police_dept, //80
EVENTS_STEALTH_REMOVE_TRAFFIC, //81
events_is_chad_hidden,
events_create_chopper_pilot,
events_spawn_ztype,
events_bum_on_chad_walk,
events_dog_walks_by,
events_load_cutscene,
events_garage_beep,
events_scan_music_change,
events_chad_car_brief_hint,
EVENTS_MISSION_FAILS, //82
EVENTS_NULL //83
ENDENUM
// =============================================== ASSETS
enum eMissionAssets
ASSET_Police_DEPT,
ASSET_CHOPPER,
ASSET_PILOT_AT_START,
ASSET_AREA_1_ASSETS,
ASSET_AREA_2_ASSETS,
ASSET_CHAD,
ASSET_ZYPE,
ASSET_CARPARK,
ASSET_DEVIN,
ASSET_CHASE_AUDIO
endenum
enum eAssetStage
ASSETS_STAGE_STARTUP,
ASSETS_STAGE_POLICE_STATION,
ASSETS_STAGE_AFTER_LEADIN,
ASSETS_STAGE_IN_CHOPPER,
ASSETS_STAGE_PREP_AREA_1,
ASSETS_STAGE_PREP_AREA_2,
ASSETS_STAGE_RELEASE_AREA_1,
ASSETS_STAGE_LOAD_ZTYPE,
ASSETS_STAGE_RELEASE_AREA_2,
ASSETS_STAGE_PREP_CAR_PARK,
ASSETS_STAGE_END_CAR_CHASE,
ASSETS_STAGE_RELEASE_CAR_PARK,
ASSETS_STAGE_FINAL_CUTSCENE,
ASSETS_STAGE_GAME_OVER
endenum
struct structAssets
eAssetStage loadFor
eAssetStage releaseOn
bool loaded
endstruct
structAssets ASSETS[count_of(eMissionAssets)]
eAssetStage currentAssetStage
bool bAssetChageInProgress
vector devinCoord = << -993.41, -3023.94, 12.94 >>
float fDevinHeading = -20.61
vector carDropoffCoord = <<-990.14, -3016.53, 12.94>>
vector airportBarrier = <<-967.8815, -2796.7524, 12.9648>>
// =============================================== END ASSETS
/*
enum enumAction
action_none,
action_at_front_desk,
action_guarding_door,
action_lead_player,
action_sitting_in_chopper,
action_player_threat
endenum
*/
//special switch cases that it's best to leave fixed rather than have numerixc
CONST_INT CASE_CHECK_PLAYER_ON_ROOF 10000
CONST_INT CASE_SWITCH_BEGUN 10001
CONST_INT CASE_SWITCH_IN_PROGRESS 10002
USING "BoltsCommonCommands.sch"
INT iReturnStage
//
// Author: KB Date: 02/06/2010
//
//
//
// Car Steal Heist - Setup 5
//
//
//
structHelicopterHUDVars HUD
helihud_marker destMarker[5]
//car recs
vector vStartPos,vStartRot,vTargetBlendPos,vTargetBlendRot
float fBlendTime
//CONSTS
bool bWaveformDisplayingQuiet,bWaveformDisplayingLoud
bool bplayVehRecs
bool playAsTrevor
//peds
//0 = player
CONST_INT ped_trevor 1
CONST_INT ped_pilot 2
CONST_INT ped_chad 3
CONST_INT ped_franklin 4
CONST_INT ped_courier 5
CONST_INT ped_mugger 6
CONST_INT ped_husband 7
CONST_INT ped_pervert 8
CONST_INT ped_wife 9
CONST_INT ped_chadGirl 10
CONST_INT ped_pimp 11
CONST_INT ped_punter 12
CONST_INT ped_hooker 13
CONST_INT ped_bum 14
CONST_INT ped_dog_walk 15
CONST_INT ped_dog 16
CONST_INT ped_wrong_wanker 5
CONST_INT ped_wrong_fucker 6
CONST_INT ped_wrong_phone 7
CONST_INT ped_wrong_lean 8
CONST_INT ped_killer 5
CONST_INT ped_body 6
CONST_INT ped_cop1 5
CONST_INT ped_cop2 6
CONST_INT ped_cop3 7
CONST_INT ped_cop4 8
CONST_INT ped_civ1 9
CONST_INT ped_civ2 10
CONST_INT ped_civ3 11
CONST_INT ped_civ4 12
CONST_INT ped_civ5 13
CONST_INT ped_busDriver 6
ped_index pedDevin
ped_index pedList[16]
int iStoredLastReplay
//============================== sync scenes ===================================
int iDevinSyncSCene,iDevinSyncSCeneB=-1
CONST_INT MAX_TIMELINES 33
enum enumSceneName
SCENENAME_POSTAL,
SCENENAME_ROOF,
SCENENAME_PIMP,
SCENENAME_CHAD
endenum
enum sceneEventEnum
SCENE_INIT,
SCENE_TRIGGER,
SCENE_LISTEN_LINE,
SCENE_ACTION,
SCENE_LOOPED_DIALOGUE,
SCENE_DEBUG
endenum
struct sceneTimelineStruct
sceneEventEnum event
int triggerTime
endstruct
struct viewedScenedStruct
int syncSceneID[2]
vector pos
vector rot
sceneTimelineStruct timeLine[MAX_TIMELINES]
int triggerTime = 0
int nextAction
int dialogueLine
int nextEvent
int listenDia
ENDSTRUCT
viewedScenedStruct viewScene[4]
INTERIOR_INSTANCE_INDEX int_garage
INT sceneId[8] //7 = blend out chadgirl
OBJECT_INDEX prop[3]
object_index fakeGarageDoor,realGarageDoor
int scene_chad_reacts_to_franklin_jack
int scene_franklin_tries_to_jack_chad
int scene_chad_leaves_car
int scene_car_fuck, scene_car_phone, scene_car_lean
bool bPauseListenerDialogue
//int scene_handjob
//========================= stream vol id
STREAMVOL_ID sVol
//====================== bezier ==================
//=====chopper beam=======
struct bezier
float fTime
vector vcontrol
vector vPos
vector Rot
endstruct
// ============================= TOD ==========================
// TIME OF DAY VARIABLES
structTimelapse cs2Timelapse
int iTrevBlocker
SCENARIO_BLOCKING_INDEX copScenarioBlocker
// ===========================================help timer for learning to use chopper cam
int helpTimer
int timeAllowingProgress
int iMovingStickCount
bool bMovingStick
//============================Natural motion grab
#IF IS_DEBUG_BUILD
vector vgrab1 = << -0, 2.057, 0.218 >>
vector vgrab2 = << 0.308, 2.064, 0.2655 >>
vector vgrab3 = << -0.344, 2.072, 0.2755 >>
vector vgrab4 = << -0.0585, 2.059, 0.2705 >>
vector vgrab5 = << 0.935, -1.59, 0.358 >>
vector vgrab6 = << 0.945, -1.862, 0.378 >>
vector vgrab7 = << 0.9335, -1.3155, 0.248 >>
vector vgrab8 = << 0.9515, -1.5915, 0.388 >>
bool bShowGrab
bool bPrintGrab
bool bSkipSwitch = false
#ENDIF
//scripted cut
#if IS_DEBUG_BUILD model_names model_franklin #endif
MODEL_NAMES model_pilot
MODEL_NAMES model_chad
//locates navigation
LOCATES_HEADER_DATA sLocatesData
//Enums
// ======= bools =======
//bool bBeamOn
//bool bAimAtCar
bool infraRed=FALSE
#IF IS_DEBUG_BUILD
bool bFrameTimer
bool bScreenConditions
bool bscreenDialogue
bool bScreenActions,bScreenActionsB
bool bScreenInstructions
bool bResetScene,bSceneExport
int iDebugScene,iLastDebugScene
int iDebugEvent,iLastDebugEvent
int iDebugTimer,iLastDebugTimer
#endif
//chase dialogue
struct chaseDialogueStruct
int askTime
int replyByTime
int TrevorResponseTime
int chadRecordingToCheck
string conv_root
int conv_line
bool askForDirections
bool mustBeSeen
bool FailForNotSeeing
endstruct
chaseDialogueStruct chaseDialogue[17]
//int iTrack
//chopper breeze
//float fBreezeMultiplier
float fPlaybackSpeed
//Vehicle Recording Struct
//navdata nv
CONST_INT MAX_CAR_RECS 72
STRUCT StructRecordingData
MODEL_NAMES model = DUMMY_MODEL_FOR_SCRIPT
VEHICLE_INDEX vehicleID
int startPlaybackTime
int Recording=-1
bool playing
bool ended
bool isHeistCar
bool isChaseCar
ENDSTRUCT
StructRecordingData recordingData[MAX_CAR_RECS]
//vehicles
VEHICLE_INDEX carParkVehicles[35]
int carParkCounter
// SCENARIO VECTORS
//vector vStartPosition
//SCENARIO_BLOCKING_INDEX scenario_block_spawn_area
//recordings
//locations
//cutscenes
//chopper bez timer
float fOpenRatio
//blips
BLIP_INDEX blipTarget
//cams
// hotswap
//SELECTOR_PED_STRUCT sSelectorPeds
//SELECTOR_CAM_STRUCT sCamDetails
//timers
//int itimer
//BITS
//int bitStoreEntry //stores bits for ensuring no random dialogue entries are repeated.
//INTS
//int pedBeingScanned
int pedScanned
int scanPedToRemove
int pedRemoveTimer
//int iCamTimer
//ped variables
//PED_INDEX pedTrevor
//vehicle variables
//car park variables
//int icarParkLevel = 1
int StaticSoundID = -1
int listenDialogue = -1
CONST_INT vehChopper 0
CONST_INT vehFranklin 1
CONST_INT vehHeist 2
CONST_INT player_vehicle 3
CONST_INT vehDeliveryVan 4
CONST_INT veh_postie 5
CONST_INT veh_camper 6
CONST_INT veh_vanhide 7
CONST_INT veh_wrong1 8
CONST_INT veh_wrong2 9
CONST_INT vehJet 5
CONST_INT veh_phoneChat 10
CONST_INT veh_lean 11
CONST_INT vehSec1 4
CONST_INT vehSec2 12
CONST_INT vehSec3 13
//chopper beam
//float fBeamSpread = 4.0
//float fBeamDrawRange = 250.0
//float fInBeamTime
INTERIOR_INSTANCE_INDEX int_police
#IF IS_DEBUG_BUILD
//widget
WIDGET_GROUP_ID carStealWidget
bool bSkipChopper
bool bWidget_skipChadOnWaypoint
int iMissionProg
//int iSkipPos
//debug
// vehicle removal vars
//chopper sound volumes
#ENDIF
int audio_level_flag
vehicle_index DelCar
int iFoundCars
TEXT_LABEL_23 restartLine,restartRoot,crashRestartLine
TEXT_LABEL_23 bumRestartLine
func bool IS_CONV_ROOT_PLAYING(string conv_root_to_check)
TEXT_LABEL_23 txt
txt = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
IF ARE_STRINGS_EQUAL(txt,conv_root_to_check)
OR ARE_STRINGS_EQUAL(restartRoot,conv_root_to_check)
RETURN TRUE
ENDIF
RETURN FALSE
endfunc
PROC SAFEWAIT(int waittime=0)
#if IS_DEBUG_BUILD
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
TERMINATE_THIS_THREAD()
ENDIF
#endif
WAIT(waittime)
ENDPROC
// PC CONTROL FOR HELI CAMERA
BOOL bPCCOntrolsSetup = FALSE
PROC SETUP_PC_CONTROLS()
IF IS_PC_VERSION()
IF bPCCOntrolsSetup = FALSE
INIT_PC_SCRIPTED_CONTROLS("CARSTEAL2 HELICAM")
bPCCOntrolsSetup = TRUE
ENDIF
ENDIF
ENDPROC
PROC CLEANUP_PC_CONTROLS()
IF IS_PC_VERSION()
IF bPCCOntrolsSetup = TRUE
SHUTDOWN_PC_SCRIPTED_CONTROLS()
bPCCOntrolsSetup = FALSE
ENDIF
ENDIF
ENDPROC
func bool SC2_PLAYER_IN_FIRST_PERSON()
IF GET_CAM_VIEW_MODE_FOR_CONTEXT( CAM_VIEW_MODE_CONTEXT_ON_FOOT ) = CAM_VIEW_MODE_FIRST_PERSON
OR GET_CAM_VIEW_MODE_FOR_CONTEXT( CAM_VIEW_MODE_CONTEXT_IN_VEHICLE ) = CAM_VIEW_MODE_FIRST_PERSON
RETURN TRUE
ENDIF
RETURN FALSE
endfunc
func string GET_INSTRUCTION_STRING(enumInstructions thisIn)
SWITCH thisIn
CASE INS_NULL RETURN "INS_NULL" BREAK
CASE INS_GET_TO_RECEPTION RETURN "INS_GET_TO_RECEPTION" BREAK
CASE INS_FOLLOW_COP RETURN "INS_FOLLOW_COP" BREAK
CASE INS_GET_TO_ROOF RETURN "INS_GET_TO_ROOF" BREAK
CASE INS_GET_IN_CHOPPER RETURN "INS_GET_IN_CHOPPER" BREAK
CASE INS_ABANDON_TREVOR RETURN "INS_ABANDON_TREVOR" BREAK
CASE INS_TEACH_TO_SCAN RETURN "INS_TEACH_TO_SCAN" BREAK
CASE INS_SCAN_FRANKLIN RETURN "INS_SCAN_FRANKLIN" BREAK
CASE INS_SCAN_COMPLETE RETURN "INS_SCAN_COMPLETE" BREAK
CASE INS_GET_BACK_TO_FRANKLIN RETURN "INS_GET_BACK_TO_FRANKLIN" BREAK
CASE INS_FOLLOW_CHAD RETURN "INS_FOLLOW_CHAD" BREAK
CASE INS_SHOW_HIDDEN_HELP RETURN "INS_SHOW_HIDDEN_HELP" BREAK
CASE INS_TURN_ON_THERMAL_VISION RETURN "INS_TURN_ON_THERMAL_VISION" BREAK
CASE INS_ZOOM_IN_ON_FRANKLIN RETURN "INS_ZOOM_IN_ON_FRANKLIN" BREAK
CASE INS_LOOK_FOR_A_HEAT_SOURCES RETURN "INS_LOOK_FOR_A_HEAT_SOURCES" BREAK
CASE INS_LOOK_FOR_ANOTHER_HEAT_SOURCES RETURN "INS_LOOK_FOR_ANOTHER_HEAT_SOURCES" BREAK
CASE INS_SWITCH_TO_FRANKLIN RETURN "INS_SWITCH_TO_FRANKLIN" BREAK
CASE INS_GET_IN_THE_ZTYPE RETURN "INS_GET_IN_THE_ZTYPE" BREAK
CASE INS_DRIVE_TO_AIRPORT RETURN "INS_DRIVE_TO_AIRPORT" BREAK
CASE INS_DRIVE_TO_DESTINATION RETURN "INS_DRIVE_TO_DESTINATION" BREAK
CASE INS_WARNING_WANTED_LEVEL RETURN "INS_WARNING_WANTED_LEVEL" BREAK
CASE INS_DRIVE_IN_TO_GARAGE RETURN "INS_DRIVE_IN_TO_GARAGE" BREAK
CASE INS_EXIT_AIRPORT RETURN "INS_EXIT_AIRPORT" BREAK
CASE INS_RETURN_ZTYPE RETURN "INS_RETURN_ZTYPE" BREAK
ENDSWITCH
RETURN "NO DATA"
ENDFUNC
#IF IS_DEBUG_BUILD
PROC CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS(WIDGET_GROUP_ID widParentGroup)
CDEBUG3LN(DEBUG_MISSION, "CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS")
//INT i
//TEXT_LABEL_15 txtLabel
SET_CURRENT_WIDGET_GROUP(widParentGroup)
START_WIDGET_GROUP("Custom Switch Cameras - Extra Tunables -")
ADD_WIDGET_FLOAT_SLIDER("Trevor Start Head Track Phase", fTrevorHeadTrackPhase, 0, 1.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("Franklin Start Anim Phase", fFranklinAnimStartPhase, 0, 1.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("Franklin Aim Heading", fFranklinAimingHeading, -360.0, 360.0, 0.1)
START_WIDGET_GROUP("Whoosh Sound")
ADD_WIDGET_FLOAT_SLIDER("Whoosh Start Phase", fWhooshStartPhase, 0, 1.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("Whoosh Stop Phase", fWhooshStopPhase, 0, 1.0, 0.01)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
CLEAR_CURRENT_WIDGET_GROUP(widParentGroup)
ENDPROC
PROC DO_INSTANT_SWITCH(ped_index this_franklin,ped_index this_trevor)
sSelectorPeds.pedID[SELECTOR_PED_FRANKLIN] = this_franklin
sSelectorPeds.pedID[SELECTOR_PED_TREVOR] = this_trevor
prep_selector_ped(SELECTOR_PED_FRANKLIN)
prep_selector_ped(SELECTOR_PED_TREVOR)
TAKE_CONTROL_OF_SELECTOR_PED(sSelectorPeds,true,true)
ENDPROC
PROC UPDATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS
//CDEBUG3LN(DEBUG_MISSION, "UPDATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS")
ENDPROC
#ENDIF
PROC SETUP_SPLINE_CAM_NODE_ARRAY_CHOPPER_TO_FRANKLIN(SWITCH_CAM_STRUCT &thisSwitchCam, VEHICLE_INDEX viHeli, PED_INDEX piFranklin)
CDEBUG3LN(DEBUG_MISSION, "SETUP_SPLINE_CAM_NODE_ARRAY_CHOPPER_TO_FRANKLIN")
//IF NOT thisSwitchCam.bInitialized
//--- Start of Cam Data ---
/*
thisSwitchCam.nodes[0].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[0].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[0].iNodeTime = 0
thisSwitchCam.nodes[0].vNodePos = <<-2.4172, 4.2304, 0.1681>>
thisSwitchCam.nodes[0].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[0].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[0].vNodeDir = <<0.9921, 1.0670, 0.0872>>
thisSwitchCam.nodes[0].bPointAtEntity = TRUE
thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = TRUE
thisSwitchCam.nodes[0].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[0].fNodeFOV = 45.0000
thisSwitchCam.nodes[0].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[0].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[0].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[0].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[0].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[0].fNodeCamShake = 0.0000
thisSwitchCam.nodes[0].iCamEaseType = 0
thisSwitchCam.nodes[0].fCamEaseScaler = 1.0000
thisSwitchCam.nodes[0].bCamEaseForceLinear = FALSE
thisSwitchCam.nodes[0].bCamEaseForceLevel = TRUE
thisSwitchCam.nodes[0].fTimeScale = 1.0000
thisSwitchCam.nodes[0].iTimeScaleEaseType = 0
thisSwitchCam.nodes[0].fTimeScaleEaseScaler = 1.0000
thisSwitchCam.nodes[0].bFlashEnabled = FALSE
thisSwitchCam.nodes[0].fMinExposure = 0.0000
thisSwitchCam.nodes[0].fMaxExposure = 0.0000
thisSwitchCam.nodes[0].iRampUpDuration = 0
thisSwitchCam.nodes[0].iRampDownDuration = 0
thisSwitchCam.nodes[0].iHoldDuration = 0
thisSwitchCam.nodes[0].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[0].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[0].bUseCustomDOF = FALSE
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[1].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[1].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[1].iNodeTime = 2000
thisSwitchCam.nodes[1].vNodePos = <<-2.4172, 4.2304, 0.1681>>
thisSwitchCam.nodes[1].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[1].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[1].vNodeDir = <<0.9921, 1.0670, 0.0872>>
thisSwitchCam.nodes[1].bPointAtEntity = TRUE
thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = TRUE
thisSwitchCam.nodes[1].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[1].fNodeFOV = 50.0000
thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[1].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[1].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[1].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[1].fNodeCamShake = 0.0000
thisSwitchCam.nodes[1].iCamEaseType = 0
thisSwitchCam.nodes[1].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[1].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[1].bCamEaseForceLevel = TRUE
thisSwitchCam.nodes[1].fTimeScale = 1.0000
thisSwitchCam.nodes[1].iTimeScaleEaseType = 0
thisSwitchCam.nodes[1].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[1].bFlashEnabled = FALSE
thisSwitchCam.nodes[1].fMinExposure = 0.0000
thisSwitchCam.nodes[1].fMaxExposure = 0.0000
thisSwitchCam.nodes[1].iRampUpDuration = 0
thisSwitchCam.nodes[1].iRampDownDuration = 0
thisSwitchCam.nodes[1].iHoldDuration = 0
thisSwitchCam.nodes[1].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[1].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[1].bUseCustomDOF = FALSE
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[2].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
//thisSwitchCam.nodes[2].SwitchCamType = SWITCH_CAM_WORLD_POS
thisSwitchCam.nodes[2].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[2].iNodeTime = 1600
thisSwitchCam.nodes[2].vNodePos = <<0,-3.2,0.27>> //<<1.072,1.92,0.27>> //<<-0.0618, 1.8094, 0.2695>>
thisSwitchCam.nodes[2].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[2].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[2].vNodeDir = <<-4.0088, 0.0236, 146.3507>>
thisSwitchCam.nodes[2].bPointAtEntity = FALSE
thisSwitchCam.nodes[2].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[2].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[2].fNodeFOV = 45.0000
thisSwitchCam.nodes[2].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[2].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[2].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[2].fNodeMotionBlur = 0.1000
thisSwitchCam.nodes[2].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[2].fNodeCamShake = 0.0000
thisSwitchCam.nodes[2].iCamEaseType = 0
thisSwitchCam.nodes[2].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[2].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[2].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[2].fTimeScale = 1.0000
thisSwitchCam.nodes[2].iTimeScaleEaseType = 0
thisSwitchCam.nodes[2].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[2].bFlashEnabled = FALSE
thisSwitchCam.nodes[2].fMinExposure = 0.0000
thisSwitchCam.nodes[2].fMaxExposure = 0.0000
thisSwitchCam.nodes[2].iRampUpDuration = 0
thisSwitchCam.nodes[2].iRampDownDuration = 0
thisSwitchCam.nodes[2].iHoldDuration = 0
thisSwitchCam.nodes[2].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[2].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[2].bUseCustomDOF = FALSE
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[3].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[3].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[3].iNodeTime = 2200
thisSwitchCam.nodes[3].vNodePos = <<0,-3.2,0.27>> //<<1.072,1.92,0.27>> //<<-0.0618, 1.8094, 0.2695>>
thisSwitchCam.nodes[3].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[3].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[3].vNodeDir = <<-4.0088, 0.0236, 146.3507>>
thisSwitchCam.nodes[3].bPointAtEntity = FALSE
thisSwitchCam.nodes[3].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[3].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[3].fNodeFOV = 45.0000
thisSwitchCam.nodes[3].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[3].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[3].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[3].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[3].NodeCamShakeType = CAM_SHAKE_MEDIUM
thisSwitchCam.nodes[3].fNodeCamShake = 0.0000
thisSwitchCam.nodes[3].iCamEaseType = 0
thisSwitchCam.nodes[3].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[3].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[3].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[3].fTimeScale = 1.0000
thisSwitchCam.nodes[3].iTimeScaleEaseType = 0
thisSwitchCam.nodes[3].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[3].bFlashEnabled = FALSE
thisSwitchCam.nodes[3].fMinExposure = 0.0000
thisSwitchCam.nodes[3].fMaxExposure = 0.0000
thisSwitchCam.nodes[3].iRampUpDuration = 0
thisSwitchCam.nodes[3].iRampDownDuration = 0
thisSwitchCam.nodes[3].iHoldDuration = 0
thisSwitchCam.nodes[3].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[3].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[3].bUseCustomDOF = FALSE
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[4].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
thisSwitchCam.nodes[4].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[4].iNodeTime = 500
thisSwitchCam.nodes[4].vNodePos = <<0.5885, 1.4540, 0.6298>>
thisSwitchCam.nodes[4].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[4].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[4].vNodeDir = <<-0.7384, 0.0000, 143.2135>>
thisSwitchCam.nodes[4].bPointAtEntity = FALSE
thisSwitchCam.nodes[4].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[4].bAttachOffsetIsRelative = FALSE
thisSwitchCam.nodes[4].fNodeFOV = 45.0000
thisSwitchCam.nodes[4].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[4].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[4].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[4].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[4].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[4].fNodeCamShake = 0.0000
thisSwitchCam.nodes[4].iCamEaseType = 0
thisSwitchCam.nodes[4].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[4].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[4].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[4].fTimeScale = 1.0000
thisSwitchCam.nodes[4].iTimeScaleEaseType = 0
thisSwitchCam.nodes[4].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[4].bFlashEnabled = FALSE
thisSwitchCam.nodes[4].fMinExposure = 0.0000
thisSwitchCam.nodes[4].fMaxExposure = 0.0000
thisSwitchCam.nodes[4].iRampUpDuration = 0
thisSwitchCam.nodes[4].iRampDownDuration = 0
thisSwitchCam.nodes[4].iHoldDuration = 0
thisSwitchCam.nodes[4].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[4].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[4].bUseCustomDOF = FALSE
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[4].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.iNumNodes = 4
thisSwitchCam.iCamSwitchFocusNode = 2
thisSwitchCam.bSplineNoSmoothing = FALSE
thisSwitchCam.bAddGameplayCamAsLastNode = TRUE
thisSwitchCam.iGameplayNodeBlendDuration = 1000
*/
//--- End of Cam Data ---
IF NOT bPlayerinFirstPerson
thisSwitchCam.nodes[0].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[0].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[0].iNodeTime = 0
thisSwitchCam.nodes[0].vNodePos = <<-2.4172, 4.2304, 0.1681>>
thisSwitchCam.nodes[0].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[0].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[0].vNodeDir = <<0.9921, 1.0670, 0.0872>>
thisSwitchCam.nodes[0].bPointAtEntity = TRUE
thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = TRUE
thisSwitchCam.nodes[0].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[0].fNodeFOV = 45.0000
thisSwitchCam.nodes[0].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[0].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[0].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[0].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[0].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[0].fNodeCamShake = 0.0000
thisSwitchCam.nodes[0].iCamEaseType = 0
thisSwitchCam.nodes[0].fCamEaseScaler = 1.0000
thisSwitchCam.nodes[0].bCamEaseForceLinear = FALSE
thisSwitchCam.nodes[0].bCamEaseForceLevel = TRUE
thisSwitchCam.nodes[0].fTimeScale = 1.0000
thisSwitchCam.nodes[0].iTimeScaleEaseType = 0
thisSwitchCam.nodes[0].fTimeScaleEaseScaler = 1.0000
thisSwitchCam.nodes[0].bFlashEnabled = FALSE
thisSwitchCam.nodes[0].fMinExposure = 0.0000
thisSwitchCam.nodes[0].fMaxExposure = 0.0000
thisSwitchCam.nodes[0].iRampUpDuration = 0
thisSwitchCam.nodes[0].iRampDownDuration = 0
thisSwitchCam.nodes[0].iHoldDuration = 0
thisSwitchCam.nodes[0].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[0].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[0].bUseCustomDOF = FALSE
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[1].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[1].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[1].iNodeTime = 1800
thisSwitchCam.nodes[1].vNodePos = <<-2.4172, 4.2304, 0.1681>>
thisSwitchCam.nodes[1].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[1].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[1].vNodeDir = <<0.9921, 1.0670, 0.0872>>
thisSwitchCam.nodes[1].bPointAtEntity = TRUE
thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = TRUE
thisSwitchCam.nodes[1].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[1].fNodeFOV = 50.0000
thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[1].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[1].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[1].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[1].fNodeCamShake = 0.0000
thisSwitchCam.nodes[1].iCamEaseType = 0
thisSwitchCam.nodes[1].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[1].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[1].bCamEaseForceLevel = TRUE
thisSwitchCam.nodes[1].fTimeScale = 1.0000
thisSwitchCam.nodes[1].iTimeScaleEaseType = 0
thisSwitchCam.nodes[1].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[1].bFlashEnabled = FALSE
thisSwitchCam.nodes[1].fMinExposure = 0.0000
thisSwitchCam.nodes[1].fMaxExposure = 0.0000
thisSwitchCam.nodes[1].iRampUpDuration = 0
thisSwitchCam.nodes[1].iRampDownDuration = 0
thisSwitchCam.nodes[1].iHoldDuration = 0
thisSwitchCam.nodes[1].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[1].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[1].bUseCustomDOF = FALSE
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[2].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[2].bIsGameplayCamCopy = TRUE
thisSwitchCam.nodes[2].iNodeTime = 1600
thisSwitchCam.nodes[2].vNodePos = <<0,0,0>>
thisSwitchCam.nodes[2].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[2].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[2].vNodeDir = <<0,0,0>>
thisSwitchCam.nodes[2].bPointAtEntity = FALSE
thisSwitchCam.nodes[2].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[2].bAttachOffsetIsRelative = FALSE
thisSwitchCam.nodes[2].fNodeFOV = 45.0000
thisSwitchCam.nodes[2].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[2].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[2].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[2].fNodeMotionBlur = 0.1000
thisSwitchCam.nodes[2].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[2].fNodeCamShake = 0.0000
thisSwitchCam.nodes[2].iCamEaseType = 0
thisSwitchCam.nodes[2].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[2].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[2].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[2].fTimeScale = 1.0000
thisSwitchCam.nodes[2].iTimeScaleEaseType = 0
thisSwitchCam.nodes[2].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[2].bFlashEnabled = FALSE
thisSwitchCam.nodes[2].fMinExposure = 0.0000
thisSwitchCam.nodes[2].fMaxExposure = 0.0000
thisSwitchCam.nodes[2].iRampUpDuration = 0
thisSwitchCam.nodes[2].iRampDownDuration = 0
thisSwitchCam.nodes[2].iHoldDuration = 0
thisSwitchCam.nodes[2].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[2].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[2].bUseCustomDOF = FALSE
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_EffectStrength = 0.0000
/*
thisSwitchCam.nodes[3].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[3].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[3].iNodeTime = 1000
thisSwitchCam.nodes[3].vNodePos = <<0,-3.2,0.27>> //<<-0.0618, 1.8094, 0.2695>>
thisSwitchCam.nodes[3].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[3].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[3].vNodeDir = <<-4.0088, 0.0236, 151.3507>>
thisSwitchCam.nodes[3].bPointAtEntity = FALSE
thisSwitchCam.nodes[3].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[3].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[3].fNodeFOV = 45.0000
thisSwitchCam.nodes[3].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[3].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[3].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[3].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[3].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[3].fNodeCamShake = 0.0000
thisSwitchCam.nodes[3].iCamEaseType = 0
thisSwitchCam.nodes[3].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[3].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[3].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[3].fTimeScale = 1.0000
thisSwitchCam.nodes[3].iTimeScaleEaseType = 0
thisSwitchCam.nodes[3].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[3].bFlashEnabled = FALSE
thisSwitchCam.nodes[3].fMinExposure = 0.0000
thisSwitchCam.nodes[3].fMaxExposure = 0.0000
thisSwitchCam.nodes[3].iRampUpDuration = 0
thisSwitchCam.nodes[3].iRampDownDuration = 0
thisSwitchCam.nodes[3].iHoldDuration = 0
thisSwitchCam.nodes[3].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[3].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[3].bUseCustomDOF = FALSE
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_EffectStrength = 0.0000*/
thisSwitchCam.nodes[3].SwitchCamType = SWITCH_CAM_OLD_SYSTEM
thisSwitchCam.nodes[3].bIsGameplayCamCopy = TRUE
thisSwitchCam.nodes[3].iNodeTime = 2000
thisSwitchCam.nodes[3].vNodePos = <<0,0,0>>
thisSwitchCam.nodes[3].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[3].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[3].vNodeDir = <<0,0,0>>
thisSwitchCam.nodes[3].bPointAtEntity = FALSE
thisSwitchCam.nodes[3].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[3].bAttachOffsetIsRelative = FALSE
thisSwitchCam.nodes[3].fNodeFOV = 45.0000
thisSwitchCam.nodes[3].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[3].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[3].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[3].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[3].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[3].fNodeCamShake = 0.0000
thisSwitchCam.nodes[3].iCamEaseType = 0
thisSwitchCam.nodes[3].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[3].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[3].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[3].fTimeScale = 1.0000
thisSwitchCam.nodes[3].iTimeScaleEaseType = 0
thisSwitchCam.nodes[3].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[3].bFlashEnabled = FALSE
thisSwitchCam.nodes[3].fMinExposure = 0.0000
thisSwitchCam.nodes[3].fMaxExposure = 0.0000
thisSwitchCam.nodes[3].iRampUpDuration = 0
thisSwitchCam.nodes[3].iRampDownDuration = 0
thisSwitchCam.nodes[3].iHoldDuration = 0
thisSwitchCam.nodes[3].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[3].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[3].bUseCustomDOF = FALSE
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.iNumNodes = 4
thisSwitchCam.iCamSwitchFocusNode = 2
thisSwitchCam.bSplineNoSmoothing = FALSE
thisSwitchCam.bAddGameplayCamAsLastNode = TRUE
thisSwitchCam.iGameplayNodeBlendDuration = 1000
ELSE
CPRINTLN(DEBUG_TREVOR3,"rEVISE SWITCH FOR FIRST PERSON")
thisSwitchCam.nodes[0].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[0].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[0].iNodeTime = 0
thisSwitchCam.nodes[0].vNodePos = <<-2.4172, 4.2304, 0.1681>>
thisSwitchCam.nodes[0].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[0].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[0].vNodeDir = <<0.9921, 1.0670, 0.0872>>
thisSwitchCam.nodes[0].bPointAtEntity = TRUE
thisSwitchCam.nodes[0].bPointAtOffsetIsRelative = TRUE
thisSwitchCam.nodes[0].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[0].fNodeFOV = 45.0000
thisSwitchCam.nodes[0].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[0].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[0].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[0].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[0].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[0].fNodeCamShake = 0.0000
thisSwitchCam.nodes[0].iCamEaseType = 0
thisSwitchCam.nodes[0].fCamEaseScaler = 1.0000
thisSwitchCam.nodes[0].bCamEaseForceLinear = FALSE
thisSwitchCam.nodes[0].bCamEaseForceLevel = TRUE
thisSwitchCam.nodes[0].fTimeScale = 1.0000
thisSwitchCam.nodes[0].iTimeScaleEaseType = 0
thisSwitchCam.nodes[0].fTimeScaleEaseScaler = 1.0000
thisSwitchCam.nodes[0].bFlashEnabled = FALSE
thisSwitchCam.nodes[0].fMinExposure = 0.0000
thisSwitchCam.nodes[0].fMaxExposure = 0.0000
thisSwitchCam.nodes[0].iRampUpDuration = 0
thisSwitchCam.nodes[0].iRampDownDuration = 0
thisSwitchCam.nodes[0].iHoldDuration = 0
thisSwitchCam.nodes[0].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[0].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[0].bUseCustomDOF = FALSE
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[0].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[1].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[1].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[1].iNodeTime = 1800
thisSwitchCam.nodes[1].vNodePos = <<-2.4172, 4.2304, 0.1681>>
thisSwitchCam.nodes[1].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[1].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[1].vNodeDir = <<0.9921, 1.0670, 0.0872>>
thisSwitchCam.nodes[1].bPointAtEntity = TRUE
thisSwitchCam.nodes[1].bPointAtOffsetIsRelative = TRUE
thisSwitchCam.nodes[1].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[1].fNodeFOV = 50.0000
thisSwitchCam.nodes[1].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[1].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[1].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[1].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[1].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[1].fNodeCamShake = 0.0000
thisSwitchCam.nodes[1].iCamEaseType = 0
thisSwitchCam.nodes[1].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[1].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[1].bCamEaseForceLevel = TRUE
thisSwitchCam.nodes[1].fTimeScale = 1.0000
thisSwitchCam.nodes[1].iTimeScaleEaseType = 0
thisSwitchCam.nodes[1].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[1].bFlashEnabled = FALSE
thisSwitchCam.nodes[1].fMinExposure = 0.0000
thisSwitchCam.nodes[1].fMaxExposure = 0.0000
thisSwitchCam.nodes[1].iRampUpDuration = 0
thisSwitchCam.nodes[1].iRampDownDuration = 0
thisSwitchCam.nodes[1].iHoldDuration = 0
thisSwitchCam.nodes[1].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[1].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[1].bUseCustomDOF = FALSE
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[1].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[2].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
//thisSwitchCam.nodes[2].SwitchCamType = SWITCH_CAM_WORLD_POS
thisSwitchCam.nodes[2].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[2].iNodeTime = 1600
thisSwitchCam.nodes[2].vNodePos = <<0,-3.2,0.67>> //<<1.072,1.92,0.27>> //<<-0.0618, 1.8094, 0.2695>>
thisSwitchCam.nodes[2].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[2].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[2].vNodeDir = <<-4, 0.0236, 145.3507>>
thisSwitchCam.nodes[2].bPointAtEntity = FALSE
thisSwitchCam.nodes[2].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[2].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[2].fNodeFOV = 45.0000
thisSwitchCam.nodes[2].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[2].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[2].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[2].fNodeMotionBlur = 0.1000
thisSwitchCam.nodes[2].NodeCamShakeType = CAM_SHAKE_DEFAULT
thisSwitchCam.nodes[2].fNodeCamShake = 0.0000
thisSwitchCam.nodes[2].iCamEaseType = 0
thisSwitchCam.nodes[2].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[2].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[2].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[2].fTimeScale = 1.0000
thisSwitchCam.nodes[2].iTimeScaleEaseType = 0
thisSwitchCam.nodes[2].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[2].bFlashEnabled = FALSE
thisSwitchCam.nodes[2].fMinExposure = 0.0000
thisSwitchCam.nodes[2].fMaxExposure = 0.0000
thisSwitchCam.nodes[2].iRampUpDuration = 0
thisSwitchCam.nodes[2].iRampDownDuration = 0
thisSwitchCam.nodes[2].iHoldDuration = 0
thisSwitchCam.nodes[2].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[2].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[2].bUseCustomDOF = FALSE
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[2].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.nodes[3].SwitchCamType = SWITCH_ENTITY_ATTACHED_CAM
thisSwitchCam.nodes[3].bIsGameplayCamCopy = FALSE
thisSwitchCam.nodes[3].iNodeTime = 2000
thisSwitchCam.nodes[3].vNodePos = <<0,-3.2,0.67>> //<<1.072,1.92,0.27>> //<<-0.0618, 1.8094, 0.2695>>
thisSwitchCam.nodes[3].vWorldPosLookAt = <<0.0000, 0.0000, 0.0000>>
thisSwitchCam.nodes[3].fNodeOffsetDist = 0.0000
thisSwitchCam.nodes[3].vNodeDir = <<-4.0088, 0.0236, 145.3507>>
thisSwitchCam.nodes[3].bPointAtEntity = FALSE
thisSwitchCam.nodes[3].bPointAtOffsetIsRelative = FALSE
thisSwitchCam.nodes[3].bAttachOffsetIsRelative = TRUE
thisSwitchCam.nodes[3].fNodeFOV = 45.0000
thisSwitchCam.nodes[3].NodeTimePostFX_Type = NO_EFFECT
thisSwitchCam.nodes[3].fNodeTimePostFXBlendTime = 0.0000
thisSwitchCam.nodes[3].fNodeTimePostFXTimeOffset = 0.0000
thisSwitchCam.nodes[3].fNodeMotionBlur = 0.0000
thisSwitchCam.nodes[3].NodeCamShakeType = CAM_SHAKE_MEDIUM
thisSwitchCam.nodes[3].fNodeCamShake = 0.0000
thisSwitchCam.nodes[3].iCamEaseType = 0
thisSwitchCam.nodes[3].fCamEaseScaler = 0.0000
thisSwitchCam.nodes[3].bCamEaseForceLinear = TRUE
thisSwitchCam.nodes[3].bCamEaseForceLevel = FALSE
thisSwitchCam.nodes[3].fTimeScale = 1.0000
thisSwitchCam.nodes[3].iTimeScaleEaseType = 0
thisSwitchCam.nodes[3].fTimeScaleEaseScaler = 0.0000
thisSwitchCam.nodes[3].bFlashEnabled = FALSE
thisSwitchCam.nodes[3].fMinExposure = 0.0000
thisSwitchCam.nodes[3].fMaxExposure = 0.0000
thisSwitchCam.nodes[3].iRampUpDuration = 0
thisSwitchCam.nodes[3].iRampDownDuration = 0
thisSwitchCam.nodes[3].iHoldDuration = 0
thisSwitchCam.nodes[3].fFlashNodePhaseOffset = 0.0000
thisSwitchCam.nodes[3].bIsLowDetailNode = FALSE
thisSwitchCam.nodes[3].bUseCustomDOF = FALSE
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_NearDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_FarDOF = 0.0000
thisSwitchCam.nodes[3].NodeDOF_Info.fDOF_EffectStrength = 0.0000
thisSwitchCam.iNumNodes = 4
thisSwitchCam.iCamSwitchFocusNode = 2
thisSwitchCam.bSplineNoSmoothing = FALSE
thisSwitchCam.bAddGameplayCamAsLastNode = TRUE
thisSwitchCam.iGameplayNodeBlendDuration = 1000
cprintln(debug_trevor3,"first person switch")
ENDIF
thisSwitchCam.strOutputStructName = "thisSwitchCam"
thisSwitchCam.strOutputFileName = "CameraInfo_CarSteal2_HeliToFranklin.txt"
thisSwitchCam.strXMLFileName = "CameraInfo_CarSteal2_HeliToFranklin.xml"
thisSwitchCam.bInitialized = TRUE
// ENDIF
thisSwitchCam.viVehicles[0] = viHeli
thisSwitchCam.piPeds[1] = piFranklin
ENDPROC
enum eGarageDoorState
GD_NONE,
GD_CREATE_AND_LOCK,
GD_LOCKING,
GD_OPEN,
GD_NO_LONGER_NEEDED,
GD_RESET
endenum
eGarageDoorState eCurrentDoorState
PROC UPDATE_GARAGE_DOOR_STATE()
SWITCH eCurrentDoorState
CASE GD_NONE
BREAK
CASE GD_CREATE_AND_LOCK
//set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,true,0)
IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<201.400284,-153.364517,57.848885>>,1.0,PROP_GAR_DOOR_05)
realGarageDoor = GET_CLOSEST_OBJECT_OF_TYPE(<<201.400284,-153.364517,57.848885>>,1.0,PROP_GAR_DOOR_05)
set_entity_coords(realGarageDoor,<<201.400284,-153.364517,47.848885>>)
fakeGarageDoor = CREATE_OBJECT_NO_OFFSET(PROP_GAR_DOOR_05,<<201.400284,-153.364517,57.848885>>)
set_entity_rotation(fakeGarageDoor,<<-1.441772,-0.000000,-20.000166>>)
SET_ENTITY_LOD_DIST(fakeGarageDoor,400)
eCurrentDoorState = GD_LOCKING
cprintln(debug_trevor3,"DOOR NOW CREATED")
ENDIF
BREAK
CASE GD_LOCKING
IF set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,TRUE,-2)
cprintln(debug_trevor3,"DOOR NOW LOCKED")
eCurrentDoorState = GD_NONE
ENDIF
BREAK
CASE GD_OPEN
set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,false,1.0) //just unlock it and let it open itself
eCurrentDoorState = GD_NONE
BREAK
CASE GD_NO_LONGER_NEEDED
cprintln(debug_trevor3,"SET DOOR AS NO LONGER NEEDED")
IF DOES_ENTITY_EXIST(realGarageDoor)
cprintln(debug_trevor3,"TRYING TO RESET REAL DOOR")
IF DOES_ENTITY_EXIST(fakeGarageDoor)
DELETE_OBJECT(fakeGarageDoor)
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_GAR_DOOR_05)
ENDIF
IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<201.400284,-153.364517,57.848885>>,1.0,PROP_GAR_DOOR_05)
set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,47.8>>,false,1.0)
set_entity_coords(realGarageDoor,<<201.400284,-153.364517,57.848885>>)
ENDIF
eCurrentDoorState = GD_NONE
ENDIF
BREAK
CASE GD_RESET
IF DOES_ENTITY_EXIST(fakeGarageDoor)
DELETE_OBJECT(fakeGarageDoor)
ENDIF
IF DOES_ENTITY_EXIST(realGarageDoor)
set_entity_coords(realGarageDoor,<<201.400284,-153.364517,57.848885>>)
ENDIF
eCurrentDoorState = GD_NONE
BREAK
ENDSWITCH
ENDPROC
PROC SET_GARAGE_DOOR_STATE(eGarageDoorState eNewDoorState)
eCurrentDoorState = eNewDoorState
ENDPROC
FUNC BOOL IS_PLAYER_PRESSING_A_CONTROL_BUTTON()
IF GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_MOVE_LR) != 127
OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_MOVE_UD) != 127
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_ATTACK)
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_SELECT_CHARACTER_TREVOR)
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_AIM)
OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_SCALED_LOOK_UD) != 127
OR GET_CONTROL_VALUE(FRONTEND_CONTROL,INPUT_SCALED_LOOK_LR) != 127
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
// =============================================== Asssets
FUNC BOOL IS_ASSET_READY(eMissionAssets ethisAsset,bool bReadyIfLoadedOnly = false)
int thisAsset = enum_to_int(ethisAsset)
IF currentAssetStage >= assets[thisAsset].loadFor
AND currentAssetStage < assets[thisAsset].releaseOn
SWITCH int_to_enum(eMissionAssets,thisAsset)
CASE ASSET_Police_DEPT
IF HAS_MODEL_LOADED(S_M_Y_COP_01)
AND HAS_MODEL_LOADED(A_M_Y_GenStreet_02)
AND HAS_ANIM_DICT_LOADED("missheistdockssetup1ig_13@start_idle")
AND HAS_ANIM_DICT_LOADED("misscarsteal2officer")
AND HAS_ANIM_DICT_LOADED("reaction@points@")
AND HAS_ANIM_DICT_LOADED("switch@trevor@head_in_sink")
RETURN TRUE
ENDIF
BREAK
CASE ASSET_CHOPPER IF HAS_MODEL_LOADED(POLMAV) RETURN TRUE ENDIF BREAK
CASE ASSET_PILOT_AT_START
IF HAS_MODEL_LOADED(model_pilot)
RETURN TRUE
ENDIF
BREAK
CASE ASSET_AREA_1_ASSETS
IF HAS_MODEL_LOADED(PROP_CS_PACKAGE_01)
AND HAS_MODEL_LOADED(BOXVILLE2)
AND HAS_MODEL_LOADED(s_f_y_hooker_01)
AND HAS_MODEL_LOADED(S_M_M_janitor)
AND HAS_MODEL_LOADED(A_M_Y_BEACH_02)
AND HAS_ANIM_DICT_LOADED("misscarsteal2MUGGING")
AND HAS_ANIM_DICT_LOADED("misscarsteal2PERVERT")
RETURN TRUE
ENDIF
BREAK
CASE ASSET_AREA_2_ASSETS
IF HAS_MODEL_LOADED(s_f_y_hooker_02)
AND HAS_MODEL_LOADED(s_f_y_hooker_01) //pimp scene
AND HAS_MODEL_LOADED(U_M_Y_FIBMugger_01)
AND HAS_MODEL_LOADED(A_M_M_OG_BOSS_01)
AND HAS_MODEL_LOADED(A_C_ROTTWEILER) //dog walker
AND HAS_MODEL_LOADED(A_M_Y_BEACH_02)
AND HAS_MODEL_LOADED(PROP_GAR_DOOR_05)
AND HAS_ANIM_DICT_LOADED("misscarsteal2PIMPSEX")
AND HAS_ANIM_DICT_LOADED("misscarsteal2CHAD_GOODBYE")
AND HAS_ANIM_DICT_LOADED("misscarsteal2_bum")
AND HAS_ANIM_DICT_LOADED("CREATURES@ROTTWEILER@AMB@WORLD_DOG_BARKING@idle_a")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(102,"CS2")
AND HAS_VEHICLE_RECORDING_BEEN_LOADED(103,"CS2")
AND GET_IS_WAYPOINT_RECORDING_LOADED("cs2_01")
RETURN TRUE
ENDIF
BREAK
CASE ASSET_CHAD IF HAS_MODEL_LOADED(model_chad) RETURN TRUE ENDIF BREAK
CASE ASSET_ZYPE IF HAS_MODEL_LOADED(ZTYPE) RETURN TRUE ENDIF cprintln(DEBUG_TREVOR3,"HAS ZTYPE LOADED") BREAK
CASE ASSET_CARPARK
IF HAS_MODEL_LOADED(BURRITO) //car park
AND HAS_MODEL_LOADED(DOMINATOR)
AND HAS_MODEL_LOADED(HABANERO)
AND HAS_MODEL_LOADED(DUBSTA)
AND HAS_MODEL_LOADED(model_pilot)
AND HAS_MODEL_LOADED(A_M_Y_GENSTREET_01)
AND HAS_ANIM_DICT_LOADED("misscarsteal2peeing")
AND HAS_ANIM_DICT_LOADED("misscarstealfinalecar_5_ig_1")
AND HAS_ANIM_DICT_LOADED("missarmenian2lamar_idles")
AND HAS_ANIM_DICT_LOADED("misscarsteal2")
AND HAS_ANIM_DICT_LOADED("misscarsteal2Chad_waiting")
AND HAS_ANIM_DICT_LOADED("misscarsteal2CAR_STOLEN")
AND HAS_ANIM_DICT_LOADED("misscarsteal2CHAD_GARAGE")
AND HAS_ANIM_DICT_LOADED("misscarsteal2switch")
AND HAS_ANIM_DICT_LOADED("misscarsteal2fixer")
AND GET_IS_WAYPOINT_RECORDING_LOADED("cs2_10")
RETURN TRUE
ENDIF
BREAK
CASE ASSET_DEVIN
IF HAS_MODEL_LOADED(IG_DEVIN)
AND HAS_MODEL_LOADED(S_M_Y_DEVINSEC_01)
AND HAS_MODEL_LOADED(S_M_M_Security_01)
AND HAS_MODEL_LOADED(CS_MOLLY)
AND HAS_MODEL_LOADED(SHAMAL)
AND HAS_MODEL_LOADED(TAILGATER)
AND HAS_MODEL_LOADED(S_M_M_PILOT_01)
AND HAS_ANIM_DICT_LOADED("misscarsteal2leadinoutcar_2_mcs_1")
RETURN TRUE
ENDIF
BREAK
CASE ASSET_CHASE_AUDIO
RETURN TRUE
BREAK
ENDSWITCH
ELSE
IF bReadyIfLoadedOnly
RETURN FALSE
ELSE
RETURN TRUE
ENDIF
ENDIF
//cprintln(debug_trevor3,"Asset not ready: ",ethisAsset)
RETURN FALSE
ENDFUNC
FUNC BOOL IS_ASSET_LOADED(eMissionAssets ethisAsset)
IF IS_ASSET_READY(ethisAsset,TRUE)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNc
FUNC BOOL IS_ASSET_STAGE_READY(eAssetStage thisStage)
IF NOT bAssetChageInProgress
AND currentAssetStage = thisStage
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL HANDLE_ASSETS()
IF bAssetChageInProgress
int i
REPEAT COUNT_OF(ASSETS) i
IF NOT IS_ASSET_READY(INT_TO_ENUM(eMissionAssets,i))
RETURN FALSE
ENDIF
ENDREPEAT
ENDIF
bAssetChageInProgress = FALSE
RETURN TRUE
ENDFUNC
PROC LOAD_AND_RELEASE_ASSETS(eAssetStage newAssetStage)
//cprintln(debug_Trevor3,"LOAD_AND_RELEASE_ASSETS: ",newAssetStage)
int iAssetArray
//remove models first
REPEAT COUNT_OF(assets) iAssetArray
IF newAssetStage >= assets[iAssetArray].loadFor
AND newAssetStage < assets[iAssetArray].releaseOn
ELSE
IF assets[iAssetArray].loaded
SWITCH int_to_enum(eMissionAssets,iAssetArray)
CASE ASSET_Police_DEPT
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_Y_COP_01)
REMOVE_ANIM_DICT("misscarsteal2officer")
REMOVE_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
REMOVE_ANIM_DICT("reaction@points@")
REMOVE_ANIM_DICT("switch@trevor@head_in_sink")
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_GenStreet_02)
BREAK
CASE ASSET_CHOPPER SET_MODEL_AS_NO_LONGER_NEEDED(POLMAV) BREAK
CASE ASSET_PILOT_AT_START SET_MODEL_AS_NO_LONGER_NEEDED(model_pilot) BREAK
CASE ASSET_AREA_1_ASSETS
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_CS_PACKAGE_01)
SET_MODEL_AS_NO_LONGER_NEEDED(BOXVILLE2)
SET_MODEL_AS_NO_LONGER_NEEDED(s_f_y_hooker_01)
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_janitor)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_BEACH_02)
REMOVE_ANIM_DICT("misscarsteal2MUGGING")
REMOVE_ANIM_DICT("misscarsteal2PERVERT")
BREAK
CASE ASSET_AREA_2_ASSETS
SET_MODEL_AS_NO_LONGER_NEEDED(s_f_y_hooker_02)
SET_MODEL_AS_NO_LONGER_NEEDED(s_f_y_hooker_01) //pimp scene
SET_MODEL_AS_NO_LONGER_NEEDED(U_M_Y_FIBMugger_01)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_M_OG_BOSS_01)
SET_MODEL_AS_NO_LONGER_NEEDED(A_C_ROTTWEILER) //dog walker
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_BEACH_02)
SET_MODEL_AS_NO_LONGER_NEEDED(PROP_GAR_DOOR_05)
REMOVE_ANIM_DICT("misscarsteal2PIMPSEX")
REMOVE_ANIM_DICT("misscarsteal2CHAD_GOODBYE")
REMOVE_ANIM_DICT("misscarsteal2_bum")
REMOVE_ANIM_DICT("CREATURES@ROTTWEILER@AMB@WORLD_DOG_BARKING@idle_a")
REMOVE_VEHICLE_RECORDING(102,"CS2")
REMOVE_VEHICLE_RECORDING(103,"CS2")
REMOVE_WAYPOINT_RECORDING("cs2_01")
RELEASE_SCRIPT_AUDIO_BANK()
BREAK
CASE ASSET_CHAD SET_MODEL_AS_NO_LONGER_NEEDED(model_chad) BREAK
CASE ASSET_ZYPE SET_MODEL_AS_NO_LONGER_NEEDED(ZTYPE) cprintln(DEBUG_TREVOR3,"REMOVe ZTYPE") BREAK
CASE ASSET_CARPARK
SET_MODEL_AS_NO_LONGER_NEEDED(BURRITO) //car park
SET_MODEL_AS_NO_LONGER_NEEDED(DOMINATOR)
SET_MODEL_AS_NO_LONGER_NEEDED(HABANERO)
SET_MODEL_AS_NO_LONGER_NEEDED(DUBSTA)
SET_MODEL_AS_NO_LONGER_NEEDED(A_M_Y_GENSTREET_01)
SET_MODEL_AS_NO_LONGER_NEEDED(model_pilot)
REMOVE_ANIM_DICT("misscarsteal2peeing")
REMOVE_ANIM_DICT("misscarstealfinalecar_5_ig_1")
REMOVE_ANIM_DICT("missarmenian2lamar_idles")
REMOVE_ANIM_DICT("misscarsteal2")
REMOVE_ANIM_DICT("misscarsteal2Chad_waiting")
REMOVE_ANIM_DICT("misscarsteal2CAR_STOLEN")
REMOVE_ANIM_DICT("misscarsteal2CHAD_GARAGE")
REMOVE_ANIM_DICT("misscarsteal2switch")
REMOVE_ANIM_DICT("misscarsteal2fixer")
REMOVE_WAYPOINT_RECORDING("cs2_10")
BREAK
CASE ASSET_DEVIN
SET_MODEL_AS_NO_LONGER_NEEDED(IG_DEVIN)
SET_MODEL_AS_NO_LONGER_NEEDED(SHAMAL)
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_Y_DEVINSEC_01)
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_Security_01)
SET_MODEL_AS_NO_LONGER_NEEDED(CS_MOLLY)
SET_MODEL_AS_NO_LONGER_NEEDED(TAILGATER)
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_M_PILOT_01)
REMOVE_ANIM_DICT("misscarsteal2leadinoutcar_2_mcs_1")
BREAK
CASE ASSET_CHASE_AUDIO
RELEASE_NAMED_SCRIPT_AUDIO_BANK("CAR_CRASHES_01")
BREAK
ENDSWITCH
assets[iAssetArray].loaded = FALSE
ENDIF
ENDIF
ENDREPEAT
//load assets
REPEAT COUNT_OF(assets) iAssetArray
IF newAssetStage >= assets[iAssetArray].loadFor
AND newAssetStage < assets[iAssetArray].releaseOn
//cprintln(debug_Trevor3,"LOAD ASSETS: ",iAssetArray)
//load assets
SWITCH int_to_enum(eMissionAssets,iAssetArray)
CASE ASSET_Police_DEPT
REQUEST_MODEL(S_M_Y_COP_01)
REQUEST_MODEL(A_M_Y_GenStreet_02)
REQUEST_ANIM_DICT("misscarsteal2officer")
REQUEST_ANIM_DICT("reaction@points@")
REQUEST_ANIM_DICT("missheistdockssetup1ig_13@start_idle")
REQUEST_ANIM_DICT("switch@trevor@head_in_sink")
BREAK
CASE ASSET_CHOPPER REQUEST_MODEL(POLMAV) BREAK
CASE ASSET_PILOT_AT_START REQUEST_MODEL(model_pilot) BREAK
CASE ASSET_AREA_1_ASSETS
REQUEST_MODEL(PROP_CS_PACKAGE_01)
REQUEST_MODEL(BOXVILLE2)
REQUEST_MODEL(s_f_y_hooker_01)
REQUEST_MODEL(S_M_M_janitor)
REQUEST_MODEL(A_M_Y_BEACH_02)
REQUEST_ANIM_DICT("misscarsteal2MUGGING")
REQUEST_ANIM_DICT("misscarsteal2PERVERT")
BREAK
CASE ASSET_AREA_2_ASSETS
REQUEST_MODEL(s_f_y_hooker_02)
REQUEST_MODEL(s_f_y_hooker_01) //pimp scene
REQUEST_MODEL(U_M_Y_FIBMugger_01)
REQUEST_MODEL(A_M_M_OG_BOSS_01)
REQUEST_MODEL(A_C_ROTTWEILER) //dog walker
REQUEST_MODEL(A_M_Y_BEACH_02)
REQUEST_MODEL(PROP_GAR_DOOR_05)
REQUEST_ANIM_DICT("misscarsteal2PIMPSEX")
REQUEST_ANIM_DICT("misscarsteal2CHAD_GOODBYE")
REQUEST_ANIM_DICT("misscarsteal2_bum")
REQUEST_ANIM_DICT("CREATURES@ROTTWEILER@AMB@WORLD_DOG_BARKING@idle_a")
REQUEST_VEHICLE_RECORDING(102,"CS2")
REQUEST_VEHICLE_RECORDING(103,"CS2")
REQUEST_WAYPOINT_RECORDING("cs2_01")
BREAK
CASE ASSET_CHAD REQUEST_MODEL(model_chad) BREAK
CASE ASSET_ZYPE REQUEST_MODEL(ZTYPE) cprintln(DEBUG_TREVOR3,"LOAD ZTYPE") BREAK
CASE ASSET_CARPARK
REQUEST_MODEL(BURRITO) //car park
REQUEST_MODEL(DOMINATOR)
REQUEST_MODEL(HABANERO)
REQUEST_MODEL(DUBSTA)
REQUEST_MODEL(model_pilot)
REQUEST_MODEL(A_M_Y_GENSTREET_01)
REQUEST_ANIM_DICT("misscarsteal2peeing")
REQUEST_ANIM_DICT("misscarstealfinalecar_5_ig_1")
REQUEST_ANIM_DICT("missarmenian2lamar_idles")
REQUEST_ANIM_DICT("misscarsteal2")
REQUEST_ANIM_DICT("misscarsteal2Chad_waiting")
REQUEST_ANIM_DICT("misscarsteal2CAR_STOLEN")
REQUEST_ANIM_DICT("misscarsteal2CHAD_GARAGE")
REQUEST_ANIM_DICT("misscarsteal2switch")
REQUEST_ANIM_DICT("misscarsteal2fixer")
REQUEST_WAYPOINT_RECORDING("cs2_10")
BREAK
CASE ASSET_DEVIN
REQUEST_MODEL(IG_DEVIN)
REQUEST_MODEL(SHAMAL)
REQUEST_MODEL(S_M_Y_DEVINSEC_01)
REQUEST_MODEL(S_M_M_Security_01)
REQUEST_MODEL(CS_MOLLY)
REQUEST_MODEL(TAILGATER)
REQUEST_MODEL(S_M_M_PILOT_01)
REQUEST_ANIM_DICT("misscarsteal2leadinoutcar_2_mcs_1")
BREAK
CASE ASSET_CHASE_AUDIO
REQUEST_SCRIPT_AUDIO_BANK("CAR_CRASHES_01")
BREAK
ENDSWITCH
assets[iAssetArray].loaded = TRUE
ENDIF
endrepeat
ENDPROC
PROC SET_ASSET_STAGE(eAssetStage newAssetStage)
//cprintln(debug_Trevor3,"SET_ASSET_STAGE: ",newAssetStage)
bAssetChageInProgress = TRUE
currentAssetStage = newAssetStage
LOAD_AND_RELEASE_ASSETS(newAssetStage)
ENDPROC
PROC FORCE_ASSET_STAGE(eAssetStage newAssetStage)
//cprintln(debug_Trevor3,"FORCE_ASSET_STAGE: ",newAssetStage)
bAssetChageInProgress = TRUE
currentAssetStage = newAssetStage
LOAD_AND_RELEASE_ASSETS(newAssetStage)
WHILE bAssetChageInProgress
HANDLE_ASSETS()
safewait()
ENDWHILE
ENDPROC
PROC PREP_ASSET(eMissionAssets assetType, eAssetStage startAt, eAssetStage endOn)
ASSETS[enum_to_int(assetType)].loadFor = startAt
ASSETS[enum_to_int(assetType)].releaseOn = endOn
ENDPROC
//end assets
//set up heist steal vehicle
PROC initHeistVehicle(vector vPos,float fHeading)
initVehicle(vehHeist,ztype,vPos,fHeading)
SET_VEHICLE_COLOURS(vehicle[vehHeist].id, CARSTEAL_COLOURS_ZTYPE, CARSTEAL_COLOURS_ZTYPE)
SET_VEHICLE_EXTRA_COLOURS(vehicle[vehHeist].id, CARSTEAL_COLOURS_ZTYPE, CARSTEAL_COLOURS_ZTYPE)
SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehicle[vehHeist].id,FALSE)
SET_VEHICLE_HAS_STRONG_AXLES(vehicle[vehHeist].id,TRUE)
SET_ENTITY_HEALTH(vehicle[vehHeist].id,1000)
SET_VEHICLE_AS_RESTRICTED(vehicle[vehHeist].id, 0)
ENDPROC
FUNC STRING GET_FAIL_STRING(enumFails failCondition)
SWITCH failCondition
CASE FAIL_NULL RETURN "FAIL_NULL" BREAK
CASE FAIL_PLAYER_HAS_WEAPON_DRAWN_IN_POL_DEPT RETURN "FAIL_PLAYER_HAS_WEAPON_DRAWN_IN_POL_DEPT" BREAK
CASE FAIL_HAS_WANTED_LEVEL_IN_POLICE_DEPT RETURN "FAIL_HAS_WANTED_LEVEL_IN_POLICE_DEPT" BREAK
CASE FAIL_COP_DIES RETURN "FAIL_COP_DIES" BREAK
CASE FAIL_PLAYER_SHOOTING_NEAR_POLICE_DEPT RETURN "FAIL_PLAYER_SHOOTING_NEAR_POLICE_DEPT" BREAK
CASE FAIL_PLAYER_CREATED_DISTURBANCE_NEAR_POL_DEPT RETURN "FAIL_PLAYER_CREATED_DISTURBANCE_NEAR_POL_DEPT" BREAK
CASE FAIL_COPS_IN_COMBAT RETURN "FAIL_COPS_IN_COMBAT" BREAK
CASE FAIL_CHOPPER_DESTROYED RETURN "FAIL_CHOPPER_DESTROYED" BREAK
CASE FAIL_PLAYER_WANDERS_AWAY_FROM_POLICE_DEPT RETURN "FAIL_PLAYER_WANDERS_AWAY_FROM_POLICE_DEPT" BREAK
CASE FAIL_PILOT_FLEW_AWAY RETURN "FAIL_PILOT_FLEW_AWAY" BREAK
CASE FAIL_ZTYPE_DAMAGED RETURN "FAIL_ZTYPE_DAMAGED" BREAK
CASE FAIL_PLAYER_LEAVES_ZTYPE RETURN "FAIL_PLAYER_LEAVES_ZTYPE" BREAK
CASE FAIL_CHAD_ESCAPES_WITH_ZTYPE RETURN "FAIL_CHAD_ESCAPES_WITH_ZTYPE" BREAK
CASE FAIL_ZTYPE_STUCK RETURN "FAIL_ZTYPE_STUCK" BREAK
CASE FAIL_FLEW_TOO_FAR_AWAY RETURN "FAIL_FLEW_TOO_FAR_AWAY" BREAK
ENDSWITCH
RETURN "NULL"
ENDFUNC
FUNC STRING GET_CONDITION_STRING(enumconditions thisCond)
SWITCH thisCond
CASE COND_NULL RETURN " COND_NULL RETURN " BREAK
CASE COND_FAILING RETURN " COND_FAILING RETURN " BREAK
CASE COND_COP_WALKING_TO_STAIRS RETURN " COND_COP_WALKING_TO_STAIRS RETURN " BREAK
CASE COND_CUTSCENE_ENDED RETURN " COND_CUTSCENE_ENDED RETURN " BREAK
CASE COND_PLAYER_ENTERED_RECEPTION RETURN " COND_PLAYER_ENTERED_RECEPTION RETURN " BREAK
CASE COND_COP_IN_CORRIDOR RETURN " COND_COP_IN_CORRIDOR RETURN " BREAK
CASE COND_PLAYER_ANYWHERE_IN_STAIRWALL RETURN " COND_PLAYER_ANYWHERE_IN_STAIRWALL RETURN " BREAK
CASE COND_PLAYER_LAGS_BEHIND_OR_WANDERS RETURN " COND_PLAYER_LAGS_BEHIND_OR_WANDERS RETURN " BREAK
CASE COND_PLAYER_UP_STAIRWELL RETURN " COND_PLAYER_UP_STAIRWELL RETURN " BREAK
CASE COND_PLAYER_IN_CORRIDOR RETURN " COND_PLAYER_IN_CORRIDOR RETURN " BREAK
CASE COND_PLAYER_OUT_OF_BOUNDS RETURN " COND_PLAYER_OUT_OF_BOUNDS RETURN " BREAK
CASE COND_PLAYER_NEARBY RETURN " COND_PLAYER_NEARBY RETURN " BREAK
CASE COND_COPS_ALERTED_CONDITION RETURN " COND_COPS_ALERTED_CONDITION RETURN " BREAK
CASE COND_COP_IN_STAIRWELL RETURN " COND_COP_IN_STAIRWELL RETURN " BREAK
CASE COND_COP_FINISHED_LEADING_PLAYER RETURN " COND_COP_FINISHED_LEADING_PLAYER RETURN " BREAK
CASE COND_CAN_SPAWN_CHOPPER RETURN " COND_CAN_SPAWN_CHOPPER RETURN " BREAK
CASE COND_PLAYER_NOT_FOLLOWING_COP RETURN " COND_PLAYER_NOT_FOLLOWING_COP RETURN " BREAK
CASE COND_DIA_COP_LEADING RETURN " COND_DIA_COP_LEADING RETURN " BREAK
CASE COND_PLAYER_ON_ROOF RETURN " COND_PLAYER_ON_ROOF RETURN " BREAK
CASE COND_PLAYER_TRYS_TO_ENTER_CHOPPER RETURN " COND_PLAYER_TRYS_TO_ENTER_CHOPPER RETURN " BREAK
CASE COND_PLAYER_IN_LOCKER_ROOM RETURN " COND_PLAYER_IN_LOCKER_ROOM RETURN " BREAK
CASE COND_PLAYER_RUNS_AHEAD RETURN " COND_PLAYER_RUNS_AHEAD RETURN " BREAK
CASE COND_TREVOR_TELLS_PILOT_TO_TAKE_OFF RETURN " COND_TREVOR_TELLS_PILOT_TO_TAKE_OFF RETURN " BREAK
CASE COND_TREVOR_TELLS_PILOT_TO_ACTIVATE_SCANNER RETURN " COND_TREVOR_TELLS_PILOT_TO_ACTIVATE_SCANNER RETURN " BREAK
CASE COND_READY_TO_TURN_ON_SCANNER RETURN " COND_READY_TO_TURN_ON_SCANNER RETURN " BREAK
CASE COND_DIA_BACK_TO_FRONT_DESK RETURN " COND_DIA_BACK_TO_FRONT_DESK RETURN " BREAK
CASE COND_DIA_GET_IN RETURN " COND_DIA_GET_IN RETURN " BREAK
CASE COND_PLAYER_IN_CHOPPER RETURN " COND_PLAYER_IN_CHOPPER RETURN " BREAK
CASE COND_COP_LEADING_PLAYER RETURN " COND_COP_LEADING_PLAYER RETURN " BREAK
CASE COND_PLAYER_SPOTTED_BY_PILOT RETURN " COND_PLAYER_SPOTTED_BY_PILOT RETURN " BREAK
CASE COND_START_FRANKLIN RETURN " COND_START_FRANKLIN RETURN " BREAK
CASE COND_PLAYER_LEAVING_TREVOR RETURN " COND_PLAYER_LEAVING_TREVOR RETURN " BREAK
CASE COND_END_FRANKLIN RETURN " COND_END_FRANKLIN RETURN " BREAK
CASE COND_SCAN_STAGE_START RETURN " COND_SCAN_STAGE_START RETURN " BREAK
CASE COND_STARTED_AS_TREVOR RETURN " COND_STARTED_AS_TREVOR RETURN " BREAK
CASE COND_FAR_ENOUGH_FROM_FRANKLIN_TO_PLAY_CONVO RETURN " COND_FAR_ENOUGH_FROM_FRANKLIN_TO_PLAY_CONVO RETURN " BREAK
CASE COND_LEARNT_TO_SCAN RETURN " COND_LEARNT_TO_SCAN RETURN " BREAK
CASE COND_BOOTING_UP_LINE_PLAYED RETURN " COND_BOOTING_UP_LINE_PLAYED RETURN " BREAK
CASE COND_FRANKLIN_SCANNED RETURN " COND_FRANKLIN_SCANNED RETURN " BREAK
CASE COND_DIA_SCANNED_CONVO_FINISHED RETURN " COND_DIA_SCANNED_CONVO_FINISHED RETURN " BREAK
CASE COND_DIA_SCAN_MY_BUDDY RETURN " COND_DIA_SCAN_MY_BUDDY RETURN " BREAK
CASE COND_TREV_SAID_TO_FIND_FRANKLIN RETURN " COND_TREV_SAID_TO_FIND_FRANKLIN RETURN " BREAK
CASE COND_TOLD_TO_SCAN_FRANKLIN RETURN " COND_TOLD_TO_SCAN_FRANKLIN RETURN " BREAK
CASE COND_OUTSIDE_SAFE_ZONE RETURN " COND_OUTSIDE_SAFE_ZONE RETURN " BREAK
CASE COND_FLEW_IN_TO_FAIL_ZONE RETURN " COND_FLEW_IN_TO_FAIL_ZONE RETURN " BREAK
CASE COND_SCAN_STAGE_END RETURN " COND_SCAN_STAGE_END RETURN " BREAK
CASE COND_START_SCAN_AREA_1 RETURN " COND_START_SCAN_AREA_1 RETURN " BREAK
CASE COND_POSTAL_BEING_OBSERVED RETURN " COND_POSTAL_BEING_OBSERVED RETURN " BREAK
CASE COND_PERVERT_BEING_OBSERVED RETURN " COND_PERVERT_BEING_OBSERVED RETURN " BREAK
CASE COND_AREA1_PED_JUST_SCANNED RETURN " COND_AREA1_PED_JUST_SCANNED RETURN " BREAK
CASE COND_SCANNED_PED_WAS_A_WOMAN RETURN " COND_SCANNED_PED_WAS_A_WOMAN RETURN " BREAK
CASE COND_DIA_COME_IN_FRANKLIN_PLAYED RETURN " COND_DIA_COME_IN_FRANKLIN_PLAYED RETURN " BREAK
CASE COND_CHOPPER_IN_VIEWING_RANGE_OF_AREA1 RETURN " COND_CHOPPER_IN_VIEWING_RANGE_OF_AREA1 RETURN " BREAK
CASE COND_START_SCAN_AREA_3 RETURN " COND_START_SCAN_AREA_3 RETURN " BREAK
CASE COND_LISTENING_IN_ON_DIALOGUE RETURN " COND_LISTENING_IN_ON_DIALOGUE RETURN " BREAK
CASE COND_END_SCAN_AREA_1 RETURN " COND_END_SCAN_AREA_1 RETURN " BREAK
CASE COND_AREA3_PED_JUST_SCANNED RETURN " COND_AREA3_PED_JUST_SCANNED RETURN " BREAK
CASE COND_PROSIE_BEING_OBSERVED RETURN " COND_PROSIE_BEING_OBSERVED RETURN " BREAK
CASE COND_CHAD_BEING_OBSERVED RETURN " COND_CHAD_BEING_OBSERVED RETURN " BREAK
CASE COND_CHAD_WAS_SCANNED RETURN " COND_CHAD_WAS_SCANNED RETURN " BREAK
CASE COND_CHAD_HIDDEN RETURN " COND_CHAD_HIDDEN RETURN " BREAK
CASE COND_CHAD_ON_SCREEN RETURN " COND_CHAD_ON_SCREEN RETURN " BREAK
CASE COND_CHAD_OFFSCREEN_FOR_4_SECONDS RETURN " COND_CHAD_OFFSCREEN_FOR_4_SECONDS RETURN " BREAK
CASE COND_CHAD_BY_GARAGES RETURN " COND_CHAD_BY_GARAGES RETURN " BREAK
CASE COND_CHAD_IN_APARTMENT_LOCATE RETURN " COND_CHAD_IN_APARTMENT_LOCATE RETURN " BREAK
CASE COND_GARAGE_DOOR_OPENING RETURN " COND_GARAGE_DOOR_OPENING RETURN " BREAK
CASE COND_END_SCAN_AREA_3 RETURN " COND_END_SCAN_AREA_3 RETURN " BREAK
CASE COND_CARPARK_STARTS RETURN " COND_CARPARK_STARTS RETURN " BREAK
CASE COND_CHOPPER_DESCENDING RETURN " COND_CHOPPER_DESCENDING RETURN " BREAK
CASE COND_FRANKLIN_STOPPED_HIS_CAR RETURN " COND_FRANKLIN_STOPPED_HIS_CAR RETURN " BREAK
CASE COND_FRANKLIN_HAS_STOPPED_RUNNING RETURN " COND_FRANKLIN_HAS_STOPPED_RUNNING RETURN " BREAK
CASE COND_A_LITTLE_AFTER_EXITS_CLEAR_DIA RETURN " COND_A_LITTLE_AFTER_EXITS_CLEAR_DIA RETURN " BREAK
CASE COND_DIA_TAKE_US_DOWN RETURN " COND_DIA_TAKE_US_DOWN RETURN " BREAK
CASE COND_DIA_THERMAL_VISION RETURN " COND_DIA_THERMAL_VISION RETURN " BREAK
CASE COND_DIA_CAN_YOU_SEE_FRANKLIN RETURN " COND_DIA_CAN_YOU_SEE_FRANKLIN RETURN " BREAK
CASE COND_DIA_ANY_OTHER_HEAT_SOURCES RETURN " COND_DIA_ANY_OTHER_HEAT_SOURCES RETURN " BREAK
CASE COND_DIA_LOOK_FOR_MORE_HEAT_PLAYED RETURN " COND_DIA_LOOK_FOR_MORE_HEAT_PLAYED RETURN " BREAK
CASE COND_DIA_FRANKLIN_SEES_PISSER RETURN " COND_DIA_FRANKLIN_SEES_PISSER RETURN " BREAK
CASE COND_DIA_FRANKLIN_SEES_FIXING_MAN RETURN " COND_DIA_FRANKLIN_SEES_FIXING_MAN RETURN " BREAK
CASE COND_DIA_FRANKLIN_SEES_CHAD RETURN " COND_DIA_FRANKLIN_SEES_CHAD RETURN " BREAK
CASE COND_DIA_TREVOR_SEE_FRANKLIN_ENDED RETURN " COND_DIA_TREVOR_SEE_FRANKLIN_ENDED RETURN " BREAK
CASE COND_CHOPPER_AT_CAR_PARK_LEVEL RETURN " COND_CHOPPER_AT_CAR_PARK_LEVEL RETURN " BREAK
CASE COND_THERMAL_TURNED_ON RETURN " COND_THERMAL_TURNED_ON RETURN " BREAK
CASE COND_FRANKLIN_OBSERVED_WITH_THERMAL RETURN " COND_FRANKLIN_OBSERVED_WITH_THERMAL RETURN " BREAK
CASE COND_SEE_WANKER RETURN " COND_SEE_WANKER RETURN " BREAK
CASE COND_SEE_FIXING_MAN RETURN " COND_SEE_FIXING_MAN RETURN " BREAK
CASE COND_SEE_CHAD RETURN " COND_SEE_CHAD RETURN " BREAK
CASE COND_SEE_LEANING_MAN RETURN " COND_SEE_LEANING_MAN RETURN " BREAK
CASE COND_SEE_PHONE_CAR_MAN RETURN " COND_SEE_PHONE_CAR_MAN RETURN " BREAK
CASE COND_FRANKLIN_AT_PHONE_MAN RETURN " COND_FRANKLIN_AT_PHONE_MAN RETURN " BREAK
CASE COND_FRANKLIN_AT_CHAD RETURN " COND_FRANKLIN_AT_CHAD RETURN " BREAK
CASE COND_THERMAL_READY RETURN " COND_THERMAL_READY RETURN " BREAK
CASE COND_DIA_TREVOR_SEES_CHAD_ENDED RETURN " COND_DIA_TREVOR_SEES_CHAD_ENDED RETURN " BREAK
CASE COND_SWITCH_BEGUN RETURN " COND_SWITCH_BEGUN RETURN " BREAK
CASE COND_BLOCK_LISTENING RETURN " COND_BLOCK_LISTENING RETURN " BREAK
CASE COND_FRANKLIN_SAW_WRONG_GUY RETURN " COND_FRANKLIN_SAW_WRONG_GUY RETURN " BREAK
CASE COND_DIA_FROM_FRANKLIN_SEEING_CHAD RETURN " COND_DIA_FROM_FRANKLIN_SEEING_CHAD RETURN " BREAK
CASE COND_FRANKLIN_RUNS_TO_CAR RETURN " COND_FRANKLIN_RUNS_TO_CAR RETURN " BREAK
CASE COND_WAITING_FOR_NEXT_TARGET RETURN " COND_WAITING_FOR_NEXT_TARGET RETURN " BREAK
CASE COND_NEXT_TARGET_FOUND RETURN " COND_NEXT_TARGET_FOUND RETURN " BREAK
CASE COND_INVESTIGATING_NEXT_TARGET RETURN " COND_INVESTIGATING_NEXT_TARGET RETURN " BREAK
CASE COND_CAR_PARK_ENDS RETURN " COND_CAR_PARK_ENDS RETURN " BREAK
CASE COND_ZTYPE_STARTS RETURN " COND_ZTYPE_STARTS RETURN " BREAK
CASE COND_CHAD_INTERRUPTED RETURN " COND_CHAD_INTERRUPTED RETURN " BREAK
CASE COND_CHAD_CAN_BACK_OFF RETURN " COND_CHAD_CAN_BACK_OFF RETURN " BREAK
CASE COND_GUN_AIMED_AT_CHAD RETURN " COND_GUN_AIMED_AT_CHAD RETURN " BREAK
CASE COND_CHAD_DAMAGED_BY_PLAYER RETURN " COND_CHAD_DAMAGED_BY_PLAYER RETURN " BREAK
CASE COND_CHAD_CAN_RUN RETURN " COND_CHAD_CAN_RUN RETURN " BREAK
CASE COND_PLAYER_AT_SECURITY RETURN " COND_PLAYER_AT_SECURITY RETURN " BREAK
CASE COND_PLAYER_200M_FROM_SECURITY RETURN " COND_PLAYER_200M_FROM_SECURITY RETURN " BREAK
CASE COND_CHAD_PLAYER_IN_GARAGE RETURN " COND_CHAD_PLAYER_IN_GARAGE RETURN " BREAK
CASE COND_CHAD_RAGDOLL RETURN " COND_CHAD_RAGDOLL RETURN " BREAK
CASE COND_PLAYER_GOT_IN_CAR RETURN " COND_PLAYER_GOT_IN_CAR RETURN " BREAK
CASE COND_PROCEED_TO_HANGAR_CONDITIONS_MET RETURN " COND_PROCEED_TO_HANGAR_CONDITIONS_MET RETURN " BREAK
CASE COND_PHONE_CALL_MADE RETURN " COND_PHONE_CALL_MADE RETURN " BREAK
CASE COND_NO_DIALOGUE_FOR_TWO_SECONDS RETURN " COND_NO_DIALOGUE_FOR_TWO_SECONDS RETURN " BREAK
CASE COND_CHAD_DEAD RETURN " COND_CHAD_DEAD RETURN " BREAK
CASE COND_CHAD_PLAYER_100m_FROM_CAR_PARK RETURN " COND_CHAD_PLAYER_100m_FROM_CAR_PARK RETURN " BREAK
CASE COND_PLAYER_30m_from_garage RETURN " COND_PLAYER_30m_from_garage RETURN " BREAK
CASE COND_PLAYER_200m_from_garage RETURN " COND_PLAYER_200m_from_garage RETURN " BREAK
CASE COND_PLAYER_300m_from_garage RETURN " COND_PLAYER_300m_from_garage RETURN " BREAK
CASE COND_PLAYER_DEFAULT_LOAD_CUT_RANGE_FROM_HANGAR RETURN " COND_PLAYER_DEFAULT_LOAD_CUT_RANGE_FROM_HANGAR RETURN " BREAK
CASE COND_WANTED RETURN " COND_WANTED RETURN " BREAK
CASE COND_HIT_BLIP RETURN " COND_HIT_BLIP RETURN " BREAK
CASE COND_PLAYER_IN_ZTYPE RETURN " COND_PLAYER_IN_ZTYPE RETURN " BREAK
CASE COND_DRIVE_TO_INSTRUCTIONS_GIVEN RETURN " COND_DRIVE_TO_INSTRUCTIONS_GIVEN RETURN " BREAK
CASE COND_CHAD_ESCAPED_IN_ZTYPE RETURN " COND_CHAD_ESCAPED_IN_ZTYPE RETURN " BREAK
CASE COND_PLAYER_SHOOTING_NEAR_CHAD RETURN " COND_PLAYER_SHOOTING_NEAR_CHAD RETURN " BREAK
CASE COND_DEVIN_WALKING_IN_TO_ZTYPE RETURN " COND_DEVIN_WALKING_IN_TO_ZTYPE RETURN " BREAK
CASE COND_CHOPPER_DAMAGED_BY_PLAYER RETURN " COND_CHOPPER_DAMAGED_BY_PLAYER RETURN " BREAK
CASE COND_DAMAGED_ZTYPE RETURN " COND_DAMAGED_ZTYPE RETURN " BREAK
CASE COND_PLAYER_7M_FROM_CHAD RETURN " COND_PLAYER_7M_FROM_CHAD RETURN " BREAK
CASE COND_ZTYPE_IN_HANGAR RETURN " COND_ZTYPE_IN_HANGAR RETURN " BREAK
CASE COND_ZTYPE_IN_CAR_STOP_RANGE RETURN " COND_ZTYPE_IN_CAR_STOP_RANGE RETURN " BREAK
CASE COND_ZTYPE_IS_STOPPED RETURN " COND_ZTYPE_IS_STOPPED RETURN " BREAK
CASE COND_ZTYPE_ENDS RETURN " COND_ZTYPE_ENDS RETURN " BREAK
CASE COND_EXIT_AIRPORT_START RETURN " COND_EXIT_AIRPORT_START RETURN " BREAK
CASE COND_PLAY_IN_ZTYPE RETURN " COND_PLAY_IN_ZTYPE RETURN " BREAK
CASE COND_EXIT_AIRPORT_END RETURN " COND_EXIT_AIRPORT_END RETURN " BREAK
ENDSWITCH
RETURN "NO DATA"
ENDFUNC
// ===================================== music ========================================
enum MusicEvents
mus_null,
mus_init_scanner,
mus_scan_first_ped,
mus_reload_scan_area_1,
mus_chad_sees_franklin,
mus_reload_scan_area_2,
mus_car_chase_begins,
mus_reload_chase_Stage,
mus_chad_drives_down_alley,
mus_reload_car_park,
mus_Chad_found,
mus_switch_to_franklin,
mus_reload_collec_car_stage,
mus_reload_drive_car_stage,
mus_get_car_to_objective,
mus_stop,
mus_game_over
endenum
FUNC STRING GET_MUSIC_STRING(MusicEvents eventToPlay)
SWITCH eventToPlay
CASE mus_null RETURN "" BREAK
CASE mus_init_scanner RETURN "CAR2_MISSION_START" BREAK
CASE mus_scan_first_ped RETURN "CAR2_SCAN_1" BREAK
CASE mus_reload_scan_area_1 RETURN "car2_scan_2_restart" BREAK
CASE mus_chad_sees_franklin RETURN "CAR2_GUN" BREAK
CASE mus_reload_scan_area_2 RETURN "car2_scan_2_restart" BREAK
CASE mus_car_chase_begins RETURN "CAR2_CHASE_START" BREAK
CASE mus_reload_chase_Stage RETURN "CAR2_CHASE_RESTART" BREAK
CASE mus_chad_drives_down_alley RETURN "CAR2_ALLEY" BREAK
CASE mus_reload_car_park RETURN "CAR2_SWITCH_1_RESTART" BREAK
CASE mus_Chad_found RETURN "CAR2_CHAD_FOUND" BREAK
CASE mus_switch_to_franklin RETURN "CAR2_SWITCH_1" BREAK
CASE mus_reload_collec_car_stage RETURN "CAR2_SWITCH_1_RESTART" BREAK
CASE mus_reload_drive_car_stage RETURN "CAR2_DRIVE_RESTART" BREAK
CASE mus_get_car_to_objective RETURN "CAR2_RADIO_1" BREAK
case mus_stop RETURN "CAR2_STOP" BREAK
CASE mus_game_over RETURN "CAR2_MISSION_FAIL" BREAK
endswitch
RETURN ""
ENDFUNC
bool bIsThisAMusicChange
bool bMusicChange
string sMusicChange
string sNextMusic
int iControlMusicFlag
PROC PlAY_MUSIC(MusicEvents MusicToPlayNow, MusicEvents nextMusicChangeEvent)
bMusicChange = TRUe
iControlMusicFlag=0
bIsThisAMusicChange = FALSE
SWITCH MusicToPlayNow
CASE mus_scan_first_ped FALLTHRU
CASE mus_chad_sees_franklin FALLTHRU
CASE mus_car_chase_begins FALLTHRU
CASE mus_chad_drives_down_alley FALLTHRU
CASE mus_get_car_to_objective
bIsThisAMusicChange = TRUE
BREAK
ENDSWITCH
sMusicChange = GET_MUSIC_STRING(MusicToPlayNow)
sNextMusic = GET_MUSIC_STRING(nextMusicChangeEvent)
ENDPROC
PROC CONTROL_MUSIC()
IF bMusicChange
SWITCH iControlMusicFlag
CASE 0
IF bIsThisAMusicChange
IF PREPARE_MUSIC_EVENT(sMusicChange)
IF TRIGGER_MUSIC_EVENT(sMusicChange)
iControlMusicFlag++
ENDIF
ENDIF
ELSE
IF TRIGGER_MUSIC_EVENT(sMusicChange)
iControlMusicFlag++
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_STRING_NULL_OR_EMPTY(sNextMusic)
IF NOT IS_MUSIC_ONESHOT_PLAYING()
PREPARE_MUSIC_EVENT(sNextMusic)
bMusicChange = FALSE
ENDIF
ELSE
bMusicChange = FALSE
ENDIF
BREAK
ENDSWITCH
ELSE
iControlMusicFlag = 0
ENDIF
ENDPROC
PROC CLEANUP_MUSIC()
bMusicChange = FALSE
string cancelMusicString
int iMusics
REPEAT count_of(MusicEvents) iMusics
cancelMusicString = GET_MUSIC_STRING(int_to_enum(MusicEvents,iMusics))
IF NOT IS_STRING_NULL_OR_EMPTY(cancelMusicString)
CANCEL_MUSIC_EVENT(cancelMusicString)
ENDIF
endrepeat
ENDPROC
// ================================================ unsepecific functions
func bool is_ped_in_sight(int pedID)
float tx,ty
if not IS_PED_INJURED(ped[pedID].id)
if GET_SCREEN_COORD_FROM_WORLD_COORD(GET_ENTITY_COORDS(ped[pedID].id),tx,ty)
if tx > 0.3 and tx < 0.7 and ty > 0.3 and ty < 0.7
IF HUD.fFov < 15
return true
ENDIF
ENDIF
ENDIF
ENDIF
return FALSE
ENDFUNC
PROC CREATE_CHOPPER_PILOT(bool waitingAtPoliceDept = FALSE)
IF waitingAtPoliceDept
initPed(ped_pilot,model_pilot,<<444.9502, -975.7095, 42.6919>>, 233.9611,NULL,VS_DRIVER,pedrole_no_ai)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_pilot].id,TRUE)
SET_PED_PROP_INDEX(ped[ped_pilot].id,ANCHOR_HEAD,0,0)
SET_PED_CAN_BE_TARGETTED(ped[ped_pilot].id,FALSE)
SET_PED_RELATIONSHIP_GROUP_HASH(ped[ped_pilot].id,RELGROUPHASH_PLAYER)
ELSE
ped_index pedInSeat
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
pedInSeat = GET_PED_IN_VEHICLE_SEAT(vehicle[vehChopper].id,VS_DRIVER)
IF NOT (IS_PED_INJURED(ped[ped_pilot].id) AND pedInSeat != ped[ped_pilot].id)
OR NOT DOES_ENTITY_EXIST(ped[ped_pilot].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF NOT IS_PED_INJURED(pedInSeat)
SET_PED_INTO_VEHICLE(pedInSeat,vehicle[vehChopper].id,VS_FRONT_RIGHT)
ENDIF
initPed(ped_pilot,model_pilot,vNull,0,vehicle[vehChopper].id,VS_DRIVER,pedrole_no_ai)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_pilot].id,TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(ped[ped_pilot].id,RELGROUPHASH_PLAYER)
SET_PED_PROP_INDEX(ped[ped_pilot].id,ANCHOR_HEAD,0,0)
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
sequencE_index sequence
proc seq()
OPEN_SEQUENCE_TASK(sequence)
ENDPROC
proc endSeq(PED_INDEX aPed, bool MakeRepeat=FALSE)
if MakeRepeat
SET_SEQUENCE_TO_REPEAT(sequence,REPEAT_FOREVER)
ENDIF
CLOSE_SEQUENCE_TASK(sequence)
if not IS_PED_INJURED(aPed)
TASK_PERFORM_SEQUENCE(aPed,sequence)
ENDIF
CLEAR_SEQUENCE_TASK(sequence)
ENDPROC
bool bMissionMustFail
string sFairReason
PROC Tell_mission_to_fail(string thisFailReason)
bMissionMustFail = TRUE
sFairReason = thisFailReason
ENDPROC
FUNC float GET_RELATIVE_ANGLE_FROM_ENTITY_TO_COORD(ENTITY_INDEX ent, vector lookAtCoord)
if DOES_ENTITY_EXIST(ent)
if not IS_ENTITY_DEAD(ent)
float fHeading = GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(ent,FALSE),lookAtCoord)
RETURN fHeading-GET_ENTITY_HEADING(ent)
endif
ELSE
SCRIPT_ASSERT("GET_RELATIVE_ANGLE_FROM_ENTITY_TO_COORD(), entity does not exist.")
ENDIF
RETURN 0.0
ENDFUNC
FUNC float GET_RELATIVE_ANGLE_FROM_ENTITY_TO_ENTITY(ENTITY_INDEX ent, ENTITY_INDEX entLookAt)
if DOES_ENTITY_EXIST(ent) and DOES_ENTITY_EXIST(entLookAt)
RETURN GET_RELATIVE_ANGLE_FROM_ENTITY_TO_COORD(ent,GET_ENTITY_COORDS(entLookAt,FALSE))
ENDIF
RETURN 0.0
ENDFUNC
// ============================================= Handling dialogue ===========================================
ped_index pedInSlot[10]
bool pedInSlotSpeaking[10]
func PED_INDEX ped_in_slot(int slot)
return pedInSlot[slot]
ENDFUNC
bool bLastConvoWithoutSubtitles
struct convStoreStruct
int speakerNo
ped_index pedIndex
string speakerLabel
endstruct
convStoreStruct convStore[4]
proc update_active_speaking_peds(ped_index pedSpeakerOne,ped_index pedSpeakerTwo,ped_index pedSpeakerThree)
int IJ
repeat count_of(pedInSlot) iJ
if pedInSlot[iJ] = pedSpeakerOne or pedInSlot[iJ] = pedSpeakerTwo or pedInSlot[iJ] = pedSpeakerThree
pedInSlotSpeaking[iJ] = TRUE
else
pedInSlotSpeaking[iJ] = FALSE
endif
endrepeat
endproc
PROC CHECK_DIALOGUE_KILL_AT_RANGE()
int iJ
IF IS_SCRIPTED_CONVERSATION_ONGOING()
IF HAS_CELLPHONE_CALL_FINISHED()
repeat count_of(pedInSlot) iJ
IF pedInSlotSpeaking[iJ] = TRUE
IF NOT IS_PED_INJURED(pedInSlot[iJ])
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),pedInSlot[iJ]) > 40.0
//is player making a phone call???
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDIF
ENDPROC
PROC KILL_FACE_TO_FACE_CONVERSATION_EXTRA(bool finishLastLine=true)
//IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
bLastConvoWithoutSubtitles = FALSE
restartLine = ""
restartRoot = ""
IF finishLastLine
//cprintln(debug_trevor3,"ax")
KILL_FACE_TO_FACE_CONVERSATION()
ELSE
//cprintln(debug_trevor3,"bx")
cprintln(debug_trevor3,"kill conv B ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
KILL_ANY_CONVERSATION()
ENDIF
//ENDIF
ENDPROC
FUNC BOOL ADD_PED_FOR_DIALOGUE_EXTRA(int speakerIndex, ped_index speaker, string speakerLabel)
IF speaker != null
IF IS_PED_INJURED(speaker)
//SCRIPT_ASSERT("Speaker is dead")
RETURN FALSE
ENDIF
ENDIF
IF speaker != MyLocalPedStruct.PedInfo[speakerIndex].Index
REMOVE_PED_FOR_DIALOGUE(MyLocalPedStruct,speakerIndex)
// cprintln(debug_Trevor3,"Cleared speaker ",speakerIndex," and added new speaker")
ENDIF
cprintln(debug_Trevor3,speakerIndex," and added new speaker")
ADD_PED_FOR_DIALOGUE(MyLocalPedStruct,speakerIndex,speaker, speakerLabel)
RETURN TRUE
ENDFUNC
string remlastConv
PROC REMOVE_INACTIVE_SPEAKERS(string thisConv, int iSp1,int iSp2, int iSp3, int iSp4)
cprintln(debug_trevor3, isp1," ",isp2," ",isp3," ",isp4)
int i
IF IS_STRING_NULL_OR_EMPTY(remlastConv)
OR NOT ARE_STRINGS_EQUAL(remlastConv,thisConv)
remlastConv = thisConv
FOR i = 0 to 15
IF MyLocalPedStruct.PedInfo[i].ActiveInConversation
IF i != iSp1
AND i != iSp2
AND i != iSp3
AND i != isp4
CPRINTLN(DEBUG_TREVOR3,"remove pexd at dialogue: ",I," label: ",MyLocalPedStruct.PedInfo[i].VoiceID)
REMOVE_PED_FOR_DIALOGUE(MyLocalPedStruct,i)
ENDIF
ENDIF
ENDFOR
ENDIF
ENDPROC
func bool CREATE_CONVERSATION_EXTRA(enum_conv_types convType, string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, int speakerFour=-1, ped_index pedSpeakerFour=null, string speakerFourLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_HIGH)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND convType > currentConvType
convStore[0].speakerNo = speakerOne
convStore[0].pedIndex = pedSpeakerOne
convStore[0].speakerLabel = speakerOneLabel
convStore[1].speakerNo = speakerTwo
convStore[1].pedIndex = pedSpeakerTwo
convStore[1].speakerLabel = speakerTwoLabel
convStore[2].speakerNo = speakerThree
convStore[2].pedIndex = pedSpeakerThree
convStore[2].speakerLabel = speakerThreeLabel
convStore[3].speakerNo = speakerFour
convStore[3].pedIndex = pedSpeakerFour
convStore[3].speakerLabel = speakerFourLabel
REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,speakerFour)
ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel)
if speakerTwo != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel)
ENDIF
if speakerThree != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel)
ENDIF
if speakerFour != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerFour,pedSpeakerFour,speakerFourLabel)
ENDIF
IF currentConvType < convType
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF currentConvType = CONVTYPE_UNIMPORTANT
KILL_FACE_TO_FACE_CONVERSATION()
ELSE
cprintln(debug_trevor3,"kill conv D ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
currentConvType = CONVTYPE_NULL
ENDIF
ENDIF
IF IS_MESSAGE_BEING_DISPLAYED()
ANd IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
cprintln(debug_trevor3,"Dia no subs")
if CREATE_CONVERSATION(MyLocalPedStruct, convBlock, Label, convPriority,DO_NOT_DISPLAY_SUBTITLES)
bLastConvoWithoutSubtitles = TRUE
currentConvType = convType
iConvoAttempts = 0
return true
ELSE //backup method in case dialogue just fails to start
IF iConvoLastAttmpetTime != GET_GAME_TIMER()
iConvoAttempts++
iConvoLastAttmpetTime = GET_GAME_TIMER()
IF iConvoAttempts >= 10
RETURN TRUE
ENDIF
ENDIF
ENDIF
else
//cprintln(debug_trevor3,"Dia subs")
cprintln(debug_trevor3,"Dia with subs")
if CREATE_CONVERSATION(MyLocalPedStruct, convBlock, Label, convPriority)
bLastConvoWithoutSubtitles = FALSE
restartRoot = ""
restartLine = ""
currentConvType = convType
iConvoAttempts = 0
return true
ELSE //backup method in case dialogue just fails to start
IF iConvoLastAttmpetTime != GET_GAME_TIMER()
iConvoAttempts++
iConvoLastAttmpetTime = GET_GAME_TIMER()
IF iConvoAttempts >= 10
iConvoAttempts = 0
RETURN TRUE
ENDIF
ENDIF
ENDIF
endif
ENDIF
return FALSE
ENDFUNC
func bool CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(enum_conv_types convType,string Label, string line, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, int speakerFour=-1, ped_index pedSpeakerFour=null, string speakerFourLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_MEDIUM)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND convType > currentConvType
//IF NOT IS_MESSAGE_BEING_DISPLAYED()
REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,speakerFour)
ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel)
if speakerTwo != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel)
ENDIF
if speakerThree != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel)
ENDIF
if speakerFour != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerFour,pedSpeakerFour,speakerFourLabel)
ENDIF
IF currentConvType < convType
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
cprintln(debug_trevor3,"kill conv E ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
currentConvType = CONVTYPE_NULL
ENDIF
ENDIF
IF IS_MESSAGE_BEING_DISPLAYED()
ANd IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE(MyLocalPedStruct,convBlock,Label,line,convPriority,DO_NOT_DISPLAY_SUBTITLES)
currentConvType = convType
iConvoAttempts = 0
RETURN TRUE
ELSE //backup method in case dialogue just fails to start
IF iConvoLastAttmpetTime != GET_GAME_TIMER()
iConvoAttempts++
iConvoLastAttmpetTime = GET_GAME_TIMER()
IF iConvoAttempts >= 10
RETURN TRUE
ENDIF
ENDIF
ENDIF
ELSE
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE(MyLocalPedStruct,convBlock,Label,line,convPriority)
currentConvType = convType
iConvoAttempts = 0
RETURN TRUE
ELSE //backup method in case dialogue just fails to start
IF iConvoLastAttmpetTime != GET_GAME_TIMER()
iConvoAttempts++
iConvoLastAttmpetTime = GET_GAME_TIMER()
IF iConvoAttempts >= 10
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN FALSE
endfunc
func bool PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(enum_conv_types convType,string Label, string line, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, int speakerFour=-1, ped_index pedSpeakerFour=null, string speakerFourLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_MEDIUM)
/*//
IF IS_THIS_CONVERSATION_ROOT_PLAYING(Label)
IF line
RETURN TRUE
ENDIF*/
//IF NOT IS_MESSAGE_BEING_DISPLAYED()
//OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND convType > currentConvType
REMOVE_INACTIVE_SPEAKERS(Label,speakerOne,speakerTwo,speakerThree,speakerFour)
ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel)
if speakerTwo != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel)
ENDIF
if speakerThree != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel)
ENDIF
if speakerFour != -1
ADD_PED_FOR_DIALOGUE_EXTRA(speakerFour,pedSpeakerFour,speakerFourLabel)
ENDIF
IF currentConvType < convType
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
cprintln(debug_trevor3,"kill conv F ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
currentConvType = CONVTYPE_NULL
ENDIF
ENDIF
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF PLAY_SINGLE_LINE_FROM_CONVERSATION(MyLocalPedStruct,convBlock,Label,line,convPriority)
currentConvType = convType
iConvoAttempts = 0
RETURN TRUE
ELSE //backup method in case dialogue just fails to start
IF iConvoLastAttmpetTime != GET_GAME_TIMER()
iConvoAttempts++
iConvoLastAttmpetTime = GET_GAME_TIMER()
IF iConvoAttempts >= 10
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
return false
ENDFUNC
PROC ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA(enum_conv_types convType,string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null, enumConversationPriority convPriority = CONV_PRIORITY_MEDIUM, enumSubtitlesState subtitlesState = DISPLAY_SUBTITLES)
if ped_in_slot(speakerOne) != pedSpeakerOne or pedSpeakerOne = null
IF NOT ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel)
EXIT
ENDIF
ENDIF
if speakerTwo != -1
if ped_in_slot(speakerTwo) != pedSpeakerTwo or pedSpeakerTwo = null
IF NOT ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel)
EXIT
ENDIF
ENDIF
ENDIF
if speakerThree != -1
if ped_in_slot(speakerThree) != pedSpeakerThree or pedSpeakerThree = null
IF NOT ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel)
EXIT
ENDIF
ENDIF
ENDIF
IF currentConvType < convType
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
cprintln(debug_trevor3,"kill conv G ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
currentConvType = CONVTYPE_NULL
ENDIF
ENDIF
currentConvType = convType
ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER( MyLocalPedStruct, convBlock, Label, convPriority, subtitlesState)
endproc
func bool PLAYER_CALL_CHAR_CELLPHONE_EXTRA(string Label, int speakerOne, ped_index pedSpeakerOne, string speakerOneLabel, int speakerTwo=-1, ped_index pedSpeakerTwo=null, string speakerTwoLabel = null, int speakerThree=-1, ped_index pedSpeakerThree=null, string speakerThreeLabel = null)
IF NOT IS_MESSAGE_BEING_DISPLAYED()
OR IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
if ped_in_slot(speakerOne) != pedSpeakerOne or pedSpeakerOne = null
ADD_PED_FOR_DIALOGUE_EXTRA(speakerOne,pedSpeakerOne,speakerOneLabel)
ENDIF
if speakerTwo != -1
if ped_in_slot(speakerTwo) != pedSpeakerTwo or pedSpeakerTwo = null
ADD_PED_FOR_DIALOGUE_EXTRA(speakerTwo,pedSpeakerTwo,speakerTwoLabel)
ENDIF
ENDIF
if speakerThree != -1
if ped_in_slot(speakerThree) != pedSpeakerThree or pedSpeakerThree = null
ADD_PED_FOR_DIALOGUE_EXTRA(speakerThree,pedSpeakerThree,speakerThreeLabel)
ENDIF
ENDIF
//IF PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct,CHAR_MOLLY,convBlock,Label,CONV_PRIORITY_VERY_HIGH)
IF PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct,CHAR_MOLLY,convBlock,Label,CONV_PRIORITY_VERY_HIGH)
return TRUE
ENDIF
ENDIF
return FALSE
endfunc
// ============================================= SETUP FAILS ============================================
float failTimer
enumFails missionFailing = FAIL_NULL
bool bDelayFail = FALSE
string sFailText
PROC RESET_FAILS()
bDelayFail = FALSE
sFailText = ""
missionFailing = FAIL_NULL
ENDPROC
// =================================== SET UP CONDITIONS ========================================
struct structInstructions
enumInstructions ins = INS_NULL
bool bCompleted
int flag
int intA
endstruct
structInstructions instr[6]
struct structConditions
enumconditions condition = COND_NULL
bool active
bool returns
bool wasTrue
int flag
int intA
int intB
endstruct
CONST_INT MAX_CONDITIONS 36
structConditions conditions[MAX_CONDITIONS]
PROC RESET_CONDITIONS()
int i
REPEAT COUNT_OF(conditions) i
conditions[i].condition = COND_NULL
conditions[i].active = FALSE
conditions[i].returns = FALSE
conditions[i].wasTrue = FALSE
conditions[i].flag = 0
conditions[i].intA = 0
conditions[i].intB = 0
ENDREPEAT
ENDPROC
PROC FORCE_INSTRUCTION_STATE(int thisI, enumInstructions thisInstruction, bool setCompleted=TRUE)
instr[thisI].bCompleted = setCompleted
instr[thisI].ins = thisInstruction
ENDPROC
FUNC BOOL IS_CONDITION_TRUE(enumconditions conditiontoCheck)
int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition)
IF iArray >= 0 and iArray < count_of(conditions)
IF conditions[iArray].condition = conditiontoCheck
IF conditions[iArray].active
AND conditions[iArray].returns
RETURN TRUE
ENDIF
ELSE
TEXT_LABEL_63 txt
txt = ""
txt += "IS_COND_TRUE() fail:"
txt += GET_CONDITION_STRING(conditiontoCheck)
SCRIPT_ASSERT(txt)
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_CONDITION_FALSE(enumconditions conditiontoCheck)
int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition)
IF conditions[iArray].condition = conditiontoCheck
IF conditions[iArray].active
AND NOT conditions[iArray].returns
RETURN TRUE
ENDIF
ELSE
SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]")
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL WAS_CONDITION_TRUE(enumconditions conditiontoCheck)
int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition)
IF conditions[iArray].condition = conditiontoCheck
IF conditions[iArray].active
AND conditions[iArray].wasTrue
RETURN TRUE
ENDIF
ELSE
SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]")
ENDIF
RETURN FALSE
ENDFUNC
PROC SET_CONDITION_WAS_TRUE(enumconditions conditiontoCheck)
int iArray = enum_to_int(conditiontoCheck) - enum_to_int(conditions[0].condition)
IF conditions[iArray].condition = conditiontoCheck
conditions[iArray].wasTrue = TRUE
ELSE
SCRIPT_ASSERT("SCRIPT: IS_CONDITION_TRUE() : condition stored in array is not equal to value stored in conditionArrayEntry[]")
ENDIF
ENDPROC
//======================================================= VARIABLES FOR NEW TEST ON TREVOR GET IN CHOPPER STAGE =============================
// ================================================ Setup Dialogue ============================================
TEXT_LABEL_23 currentConv,lastConv
struct structDialogue
enumDialogue dial = DIA_NULL
bool bCompleted
bool bStarted
int flag
int intA
endstruct
structDialogue dia[MAX_DIALOGUE]
FUNC BOOL HAS_DIALOGUE_FINISHED(int iEntry,enumDialogue thisDia)
IF dia[iEntry].dial = thisDia
IF dia[iEntry].bCompleted
RETURN TRUE
ENDIF
ELSE
IF dia[iEntry].dial != DIA_NULL
SCRIPT_ASSERT("HAS_DIALOGUE_FINISHED() has wrong entry value")
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
// ====================================== ACTION SETUP ====================================
ENUM enumACTIONplayout
PLAYOUT_ON_TRIGGER,
PLAYOUT_ON_COND,
SKIP_SET_TO_COMPLETE
endenum
STRUCT structactions
enumActions action = ACT_NULL
bool active
bool ongoing
bool completed
bool needsCleanup
bool trackCondition
int flag
int intA,intB
float floatA
ENDSTRUCT
structactions actions[MAX_ACTIONS]
// ====================================== ACTION CHECK ========================================
// ================================================ Conditions ==================================
FUNC BOOL SET_CONDITION_STATE(enumconditions thisCondition, bool setReturns, int flag=-1)
int j
REPEAT COUNT_OF(conditions) j
IF thisCondition = conditions[j].condition
conditions[j].returns = setReturns
IF flag != -1
conditions[j].flag = flag
ENDIF
RETURN TRUE
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC
FUNC BOOL IS_ACTION_COMPLETE(int iEntry, enumActions actionToCheck)
IF actions[iEntry].action = actionToCheck
IF actions[iEntry].completed = TRUE
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_ACTION_ONGOING(enumActions actionToCheck)
int i
REPEAT COUNT_OF(actions) i
IF actions[i].action = actionToCheck
IF actions[i].active = TRUE
AND actions[i].ongoing = TRUE
IF actions[i].completed = FALSE
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC
PROC FORCE_END_ACTION(enumActions actionToEnd)
int i
REPEAT COUNT_OF(actions) i
IF actions[i].action = actionToEnd
IF actions[i].active = TRUE
actions[i].completed = TRUE
ENDIF
ENDIF
ENDREPEAT
ENDPROC
PROC SET_ACTION_NEEDS_CLEANUP(int iEntry)
actions[iEntry].needsCleanup = TRUE
ENDPROC
PROC SET_ACTION_FLAG(int iArray, enumActions actionToSet, int iNewFlagValue)
IF actions[iArray].action = actionToSet
actions[iArray].flag = iNewFlagValue
ELSE
TEXT_LABEL_63 txt
txt = ""
txt += "SET_ACTION_FLAG() fail:"
// txt += GET_ACTION_STRING(actionToSet)
SCRIPT_ASSERT(txt)
ENDIF
ENDPROC
FUNC INT GET_ACTION_FLAG(int iArray, enumActions actionToSet)
IF actions[iArray].action = actionToSet
RETURN actions[iArray].flag
ELSE
TEXT_LABEL_63 txt
txt = ""
txt += "SET_ACTION_FLAG() fail:"
// txt += GET_ACTION_STRING(actionToSet)
SCRIPT_ASSERT(txt)
ENDIF
RETURN -1
ENDFUNC
PROC FORCE_ACTION_STATE(int thisI, enumActions thisAction, bool setCompleted=TRUE)
actions[thisI].action = thisAction
actions[thisI].active = TRUE
actions[thisI].completed = FALSE
actions[thisI].flag = 0
actions[thisI].needsCleanup = FALSE
actions[thisI].intA = 0
actions[thisI].ongoing = FALSE
actions[thisI].intB = 0
actions[thisI].floatA = 0
IF setCompleted
actions[thisI].completed = TRUE
ENDIF
ENDPROC
FUNC bool andOrReturns(bool &pconditionsTrue, bool &pbracketOpen, andorEnum andOr, enumconditions cond)
//IF NOT pbracketOpen
//OR (NOT pconditionsTrue AND pbracketOpen)
SWITCH andOr
CASE cFORCEtrue
pconditionsTrue = TRUE
BREAK
CASE cIGNORE
RETURN FALSE
BREAK
CASE cIF
IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond)))
pconditionsTrue = TRUE
ENDIF
BREAK
CASE cIFnot
IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_FALSE(cond)))
pconditionsTrue = TRUE
ENDIF
BREAK
CASE cOR
IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond)))
pconditionsTrue = TRUE
ENDIF
BREAK
CASE cORbracket
IF pconditionsTrue
RETURN FALSE
ELSE
pbracketOpen = TRUE
IF (cond = COND_NULL OR (cond != COND_NULL AND IS_CONDITION_TRUE(cond)))
pconditionsTrue = TRUE
ENDIF
ENDIF
BREAK
CASE cAND
IF (cond != COND_NULL AND IS_CONDITION_FALSE(cond))
pconditionsTrue = FALSE
ENDIF
BREAK
CASE cANDNOT
IF (cond != COND_NULL AND IS_CONDITION_TRUE(cond))
pconditionsTrue = FALSE
ENDIF
BREAK
CASE cWasTrueNowFalse
IF WAS_CONDITION_TRUE(cond)
IF IS_CONDITION_FALSE(COND)
pconditionsTrue = TRUE
ENDIF
ELSE
IF IS_CONDITION_TRUE(cond)
SET_CONDITION_WAS_TRUE(COND)
pconditionsTrue = FALSE
ENDIF
ENDIF
BREAK
ENDSWITCH
RETURN TRUE
ENDFUNC
FUNC bool checkANDOR(andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL)
conditionsTrue = FALSE
bracketOpen = FALSE
IF andOrReturns(conditionsTrue,bracketOpen,andOr1,cond1)
IF andOrReturns(conditionsTrue,bracketOpen,andOr2,cond2)
IF andOrReturns(conditionsTrue,bracketOpen,andOr3,cond3)
IF andOrReturns(conditionsTrue,bracketOpen,andOr4,cond4)
ENDIF
ENDIF
ENDIF
ENDIF
IF conditionsTrue
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
int iPlaybackTime
const_int max_road_blocks 15
struct structRoadBlocks
vector v1,v2
float width
bool on = false
bool entered
endstruct
structRoadBlocks sroadblocks[max_road_blocks]
proc set_road_blocks(int iStart,int iEnd,bool on=TRUE)
int iR
cprintln(debug_trevor3,"set road blocks ",iStart," to ", iEnd, " as ",on)
FOr iR = iStart to iEnd
IF iR < count_of(sroadblocks)
SET_ROADS_IN_ANGLED_AREA(sroadblocks[iR].v1,sroadblocks[iR].v2,sroadblocks[iR].width,FALSE,on)
ENDIF
ENDfor
endproc
FUNC BOOL HANDLE_SWITCH_HELI_TO_FRANKLIN(SWITCH_CAM_STRUCT &thisSwitchCam)
//CDEBUG3LN(DEBUG_MISSION, "HANDLE_SWITCH_HELI_TO_FRANKLIN")
INT iCurrentNode
FLOAT fCamPhase
SWITCH eSwitchCamState
CASE SWITCH_CAM_IDLE
//CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_IDLE")
BREAK
CASE SWITCH_CAM_START_SPLINE1
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_START_SPLINE1")
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), WEAPONTYPE_PISTOL, 25, TRUE)
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehHeist].id)
IF NOT IS_ENTITY_DEAD(vehicle[vehHeist].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_ENTITY_INVINCIBLE(vehicle[vehHeist].id, FALSE)
SET_ENTITY_HEALTH(vehicle[vehHeist].id, 1000)
SET_VEHICLE_DIRT_LEVEL(vehicle[vehHeist].id, 0.0)
SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehicle[vehHeist].id, TRUE)
SET_VEHICLE_ENGINE_ON(vehicle[vehHeist].id, TRUE, TRUE)
SET_VEHICLE_DOOR_OPEN(vehicle[vehHeist].id, SC_DOOR_FRONT_LEFT)
ENDIF
ENDIF
ENDIF
SETUP_SPLINE_CAM_NODE_ARRAY_CHOPPER_TO_FRANKLIN(thisSwitchCam, vehicle[vehChopper].id, ped[ped_franklin].id)
CREATE_SPLINE_CAM(thisSwitchCam)
SET_CAM_ACTIVE(thisSwitchCam.ciSpline, TRUE)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
bTrevorHeadTrackStarted = FALSE
bFranklinAnimStarted = FALSE
bPlayerControlStarted = FALSE
bWhooshStarted = FALSE
bWhooshFinished = FALSE
bMidWhooshPlayed = FALSE
eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE1
CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE1")
FALLTHRU
CASE SWITCH_CAM_PLAYING_SPLINE1
//CDEBUG3LN(DEBUG_MISSION, "eSwitchCamState = SWITCH_CAM_PLAYING_SPLINE1")
iCurrentNode = iCurrentNode
iCurrentNode = UPDATE_SPLINE_CAM(thisSwitchCam)
fCamPhase = GET_CAM_SPLINE_PHASE(thisSwitchCam.ciSpline)
IF NOT bWhooshStarted
IF fCamPhase > fWhooshStartPhase
CDEBUG3LN(DEBUG_MISSION, "Whoosh Starting...")
ANIMPOSTFX_PLAY("SwitchShortTrevorIn", 0, FALSE)
iWhooshSound = GET_SOUND_ID()
PLAY_SOUND_FRONTEND(iWhooshSound, "HIT_OUT", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
SET_FORCE_FOOTSTEP_UPDATE (player_ped_id(), true)
START_AUDIO_SCENE("CAR_2_SWITCH_TO_FRANLIN_IN_GARAGE")
bWhooshStarted = TRUE
ENDIF
ELSE
IF fCamPhase > fWhooshMidAudioPhase
AND NOT bMidWhooshPlayed
bMidWhooshPlayed = TRUE
PLAY_SOUND_FRONTEND(iWhooshSoundMid, "Short_Transition_In", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
ENDIf
ENDIF
IF NOT bWhooshFinished
IF fCamPhase > fWhooshStopPhase
CDEBUG3LN(DEBUG_MISSION, "Whoosh Stopping...")
STOP_SOUND(iWhooshSound)
IF bPlayerinFirstPerson
PLAY_SOUND_FRONTEND(iWhooshSound, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
ENDIF
bWhooshFinished = TRUE
ENDIF
ENDIF
IF NOT bTrevorHeadTrackStarted
IF fCamPhase > fTrevorHeadTrackPhase
CDEBUG3LN(DEBUG_MISSION, "Starting Trevor Head Track...")
IF DOES_ENTITY_EXIST(ped[ped_trevor].id)
AND DOES_ENTITY_EXIST(PLAYER_PED_ID())
IF NOT IS_ENTITY_DEAD(ped[ped_trevor].id)
AND NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(ped[ped_trevor].id)
AND NOT IS_PED_INJURED(PLAYER_PED_ID())
TASK_LOOK_AT_ENTITY(ped[ped_trevor].id, PLAYER_PED_ID(), 5000, SLF_WHILE_NOT_IN_FOV, SLF_LOOKAT_VERY_HIGH)
ENDIF
ENDIF
ENDIF
bTrevorHeadTrackStarted = TRUE
ENDIF
ENDIF
IF fCamPhase > fFranklinAnimTalkPhase
SET_CONDITION_STATE(COND_DIA_FROM_FRANKLIN_SEEING_CHAD, TRUE)
ENDIF
IF NOT bFranklinAnimStarted
IF fCamPhase > fFranklinAnimStartPhase
CDEBUG3LN(DEBUG_MISSION, "Starting Franklin Anim...")
STOP_AUDIO_SCENE("CAR_2_USE_INFRARED")
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_ENTITY_HEADING(PLAYER_PED_ID(), fFranklinAimingHeading)
SET_PLAYER_FORCE_SKIP_AIM_INTRO(PLAYER_ID(), TRUE)
SET_PLAYER_FORCED_AIM(PLAYER_ID(), TRUE)
SET_PLAYER_SIMULATE_AIMING(PLAYER_ID(), TRUE)
TASK_PLAY_ANIM(PLAYER_PED_ID(), "misscarsteal2switch", "_ground_franklin", INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_HOLD_LAST_FRAME)
ENDIF
ENDIF
ENDIF
bFranklinAnimStarted = TRUE
ENDIF
ENDIF
IF NOT bPlayerControlStarted
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF IS_ENTITY_PLAYING_ANIM(PLAYER_PED_ID(), "misscarsteal2switch", "_ground_franklin")
IF GET_ENTITY_ANIM_CURRENT_TIME(PLAYER_PED_ID(), "misscarsteal2switch", "_ground_franklin") >= 0.99
cprintln(debug_trevor3, "Starting Player Control b...")
//CLEAR_PED_TASKS(PLAYER_PED_ID())
IF bPlayerinFirstPerson
TASK_AIM_GUN_AT_ENTITY(PLAYER_PED_ID(), ped[ped_chad].id, INFINITE_TASK_TIME, TRUE)
ELSE
TASK_AIM_GUN_AT_COORD(PLAYER_PED_ID(), <<-1320.3032, -219.4609, 50.5926>>, INFINITE_TASK_TIME, TRUE)
ENDIF
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_AIMING, TRUE, DEFAULT, TRUE)
FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID())
DISPLAY_HUD(TRUE)
DISPLAY_RADAR(TRUE)
SET_WIDESCREEN_BORDERS(FALSE, 500)
//cprintln(debug_trevor3,"PLAYER HAS THE BRIDGE")
bPlayerControlStarted = TRUE
/*
STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP()
IF DOES_CAM_EXIST(thisSwitchCam.ciSpline)
IF IS_CAM_ACTIVE(thisSwitchCam.ciSpline)
DESTROY_CAM(thisSwitchCam.ciSpline)
ENDIF
ENDIF
DESTROY_ALL_CAMS()
RENDER_SCRIPT_CAMS(FALSE, FALSE)
*/
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF bPlayerControlStarted
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_RETICLE)
ENDIF
// IF fCamPhase >= 0.9
// cprintln(debug_trevor3,"PUSH IN ",fCamPhase)
// HANDLE_PUSH_IN(s_cs2_pushin)
// ENDIF
cprintln(debug_trevor3,"switch phase = ",fCamPhase)
bool bEndSwitch
IF bPlayerinFirstPerson
cprintln(debug_trevor3,"player in first person")
IF fCamPhase >= 0.8
IF HANDLE_PUSH_IN(s_cs2_pushin)
bEndSwitch = TRUE
ENDIF
ENDIF
ELSE
cprintln(debug_trevor3,"player not in first person")
IF fCamPhase >= 1.0
OR bPlayerControlStarted
bEndSwitch = TRUE
ENDIF
ENDIF
IF bEndSwitch = TRUE
cprintln(debug_trevor3,"handle push in complete")
SET_TIME_SCALE(1.0)
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
IF NOT bPlayerinFirstPerson
ANIMPOSTFX_PLAY("CamPushInFranklin", 0, FALSE) //previously SwitchSceneFranklin
PLAY_SOUND_FRONTEND(iWhooshSound, "Hit_In", "PLAYER_SWITCH_CUSTOM_SOUNDSET")
ENDIF
IF DOES_CAM_EXIST(thisSwitchCam.ciSpline)
IF IS_CAM_ACTIVE(thisSwitchCam.ciSpline)
DESTROY_CAM(thisSwitchCam.ciSpline)
ENDIF
ENDIF
DESTROY_ALL_CAMS()
RENDER_SCRIPT_CAMS(FALSE, TRUE)
SET_PLAYER_FORCED_AIM(PLAYER_ID(), FALSE)
SET_FORCE_FOOTSTEP_UPDATE (player_ped_id(), FALSE)
DISPLAY_HUD(TRUE)
DISPLAY_RADAR(TRUE)
SET_WIDESCREEN_BORDERS(FALSE, 500)
STOP_AUDIO_SCENE("CAR_2_SWITCH_TO_FRANLIN_IN_GARAGE")
eSwitchCamState = SWITCH_CAM_IDLE
RESET_PUSH_IN(s_cs2_pushin)
RETURN TRUE
ELSE
DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC ACTION(int thisI, enumActions thisAction, enumACTIONplayout playout=PLAYOUT_ON_TRIGGER, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL)
#if IS_DEBUG_BUILD
IF thisI >= MAX_ACTIONS
SCRIPT_ASSERT("SCRIPT: INCREASE MAX_ACTIONS")
ENDIF
#endif
IF actions[thisI].action != thisAction
OR actions[thisI].active = FALSE
actions[thisI].action = thisAction
actions[thisI].active = TRUE
actions[thisI].completed = FALSE
actions[thisI].flag = 0
actions[thisI].ongoing = FALSE
actions[thisI].needsCleanup = FALSE
actions[thisI].intA = 0
ENDIF
bool actionConditionCheck
IF actions[thisI].ongoing
AND playout = PLAYOUT_ON_TRIGGER
actionConditionCheck = TRUE
ELSE
actionConditionCheck = checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4)
ENDIF
IF playout = PLAYOUT_ON_COND
AND NOT actionConditionCheck
actions[thisI].ongoing = FALSE
ENDIF
IF NOT bMakeMissionFail
OR actions[thisI].flag = CLEANUP
IF actions[thisI].completed = FALSE
OR actions[thisI].flag = CLEANUP
IF actionConditionCheck = TRUE
IF NOT actions[thisI].ongoing
actions[thisI].ongoing = TRUE
ENDIF
SWITCH actions[thisI].action
CASE ACT_SPAWN_COPS
SWITCH actions[thisI].flag
CASE CLEANUP
SET_MODEL_AS_NO_LONGER_NEEDED(S_M_Y_COP_01)
/*
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_cop1].id)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_cop2].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_cop2].id)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_cop3].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_cop3].id)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_cop4].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_cop4].id)
ENDIF
*/
BREAK
case 100 //this is triggered from the replay function to let this action know that a replay is in progress.
ped[ped_cop1].id = g_sTriggerSceneAssets.ped[0]
ped[ped_cop2].id = g_sTriggerSceneAssets.ped[1]
ped[ped_cop3].id = g_sTriggerSceneAssets.ped[2]
ped[ped_cop4].id = g_sTriggerSceneAssets.ped[6]
ped[ped_civ1].id = g_sTriggerSceneAssets.ped[3]
ped[ped_civ2].id = g_sTriggerSceneAssets.ped[4]
ped[ped_civ3].id = g_sTriggerSceneAssets.ped[5]
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop1].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop2].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop3].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop4].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_civ1].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_civ2].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_civ3].id,TRUE,TRUE)
cprintln(debug_trevor3,"Flag = 100?")
break
CASE 0
SET_ACTION_NEEDS_CLEANUP(thisI)
actions[thisI].flag++
BREAK
CASE 1
int_police = GET_INTERIOR_AT_COORDS(<<441.02, -978.93, 30.69>>)
IF IS_VALID_INTERIOR(int_police)
PIN_INTERIOR_IN_MEMORY(int_police)
actions[thisI].flag++
endif
BREAK
case 2
IF IS_INTERIOR_READY(int_police)
SET_INTERIOR_ACTIVE(int_police, TRUE)
actions[thisI].flag++
ENDIF
BREAK
case 3
IF DOES_ENTITY_EXIST(g_sTriggerSceneAssets.ped[0])
CPRINTLN(debug_trevor3,"peds taken from lead_in script")
ped[ped_cop1].id = g_sTriggerSceneAssets.ped[0]
ped[ped_cop2].id = g_sTriggerSceneAssets.ped[1]
ped[ped_cop3].id = g_sTriggerSceneAssets.ped[2]
ped[ped_cop4].id = g_sTriggerSceneAssets.ped[6]
ped[ped_civ1].id = g_sTriggerSceneAssets.ped[3]
ped[ped_civ2].id = g_sTriggerSceneAssets.ped[4]
ped[ped_civ3].id = g_sTriggerSceneAssets.ped[5]
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop1].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop2].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop3].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_cop4].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_civ1].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_civ2].id,TRUE,TRUE)
SET_ENTITY_AS_MISSION_ENTITY(ped[ped_civ3].id,TRUE,TRUE)
ELSE
CPRINTLN(debug_trevor3,"Mission made peds")
ped[ped_cop1].id = CREATE_PED(PEDTYPE_COP,S_M_Y_COP_01,<<441.0267, -978.2040, 29.6895>>,192)
ped[ped_cop2].id = CREATE_PED(PEDTYPE_COP,S_M_Y_COP_01,<< 440.2506, -975.6328, 29.6895 >>,356)
ped[ped_cop3].id = CREATE_PED(PEDTYPE_COP,S_M_Y_COP_01,<<454.1487, -979.8940, 29.6896>>, 105.1729)
ped[ped_cop4].id = CREATE_PED(PEDTYPE_COP,S_M_Y_COP_01,<<450.2071, -992.9072, 29.6896>>, 316.4481)
ped[ped_civ1].id = CREATE_PED(PEDTYPE_CIVMALE,A_M_Y_GenStreet_02,<<436.9079, -986.8186, 29.6895>>, 71.5386)
ped[ped_civ2].id = CREATE_PED(PEDTYPE_CIVMALE,A_M_Y_GenStreet_02,<<443.4680, -981.7770, 29.6895>>,30)
ped[ped_civ3].id = CREATE_PED(PEDTYPE_CIVMALE,A_M_Y_GenStreet_02,<<444.9140, -988.1146, 29.6895>>, 71.5386)
ENDIF
SET_PED_COMPONENT_VARIATION(ped[ped_cop1].id, INT_TO_ENUM(PED_COMPONENT,0), 2, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_cop1].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 2, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop1].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop1].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(ped[ped_cop1].id, INT_TO_ENUM(PED_COMPONENT,9), 0, 0, 0) //(task)
SET_PED_COMPONENT_VARIATION(ped[ped_cop1].id, INT_TO_ENUM(PED_COMPONENT,10), 0, 1, 0) //(decl)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,8), 1, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,9), 0, 0, 0) //(task)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,10), 1, 0, 0) //(decl)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 2, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,9), 1, 0, 0) //(task)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,10), 1, 1, 0) //(decl)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_cop4].id)
SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(ped[ped_cop1].id,FALSE)
STOP_PED_SPEAKING(ped[ped_cop1].id,TRUE)
STOP_PED_SPEAKING(ped[ped_cop2].id,TRUE)
STOP_PED_SPEAKING(ped[ped_cop3].id,TRUE)
STOP_PED_SPEAKING(ped[ped_cop4].id,TRUE)
GIVE_WEAPON_TO_PED(ped[ped_cop1].id,WEAPONTYPE_PISTOL,infinite_ammo)
GIVE_WEAPON_TO_PED(ped[ped_cop2].id,WEAPONTYPE_PISTOL,infinite_ammo)
GIVE_WEAPON_TO_PED(ped[ped_cop3].id,WEAPONTYPE_PISTOL,infinite_ammo)
GIVE_WEAPON_TO_PED(ped[ped_cop4].id,WEAPONTYPE_PISTOL,infinite_ammo)
TASK_START_SCENARIO_IN_PLACE(ped[ped_cop1].id,"WORLD_HUMAN_HANG_OUT_STREET")
TASK_START_SCENARIO_IN_PLACE(ped[ped_cop2].id,"WORLD_HUMAN_CLIPBOARD")
TASK_START_SCENARIO_IN_PLACE(ped[ped_cop3].id,"WORLD_HUMAN_CLIPBOARD")
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_cop1].id)
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_cop2].id)
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_cop3].id)
//create bums
//REQUEST_MODEL(A_M_Y_GenStreet_02)
TASK_START_SCENARIO_IN_PLACE(ped[ped_civ1].id,"WORLD_HUMAN_BUM_STANDING")
TASK_START_SCENARIO_IN_PLACE(ped[ped_civ2].id,"WORLD_HUMAN_STAND_IMPATIENT")
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_civ1].id)
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_civ2].id)
INT scenei
scenei = CREATE_SYNCHRONIZED_SCENE(<< 447.140, -988.574, 29.688 >>, << -0.000, 0.000, -80.150 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_civ3].id, scenei, "missheistdockssetup1ig_13@start_idle", "guard_beatup_startidle_dockworker", INSTANT_BLEND_IN, -2,SYNCED_SCENE_USE_PHYSICS )
TASK_SYNCHRONIZED_SCENE (ped[ped_cop4].id, scenei, "missheistdockssetup1ig_13@start_idle", "guard_beatup_startidle_guard1", INSTANT_BLEND_IN, -2,SYNCED_SCENE_USE_PHYSICS )
SET_SYNCHRONIZED_SCENE_LOOPED(scenei,true)
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_civ3].id)
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_cop4].id)
SET_PED_CAN_RAGDOLL(ped[ped_civ3].id,FALSE)
actions[thisI].completed = TRUE
BREAK
ENDSWITCH
BREAK
CASE ACT_LOOK_AT_PLAYER_ENTRY
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
TASK_LOOK_AT_ENTITY(ped[ped_cop1].id,player_ped_id(),14000)
TASK_LOOK_AT_ENTITY(player_ped_id(),ped[ped_cop1].id,14000)
ENDIF
actions[thisI].completed = TRUE
BREAK
CASE ACT_POINT_TO_STAITRS
SWITCH actions[thisI].flag
CASE 0
actions[thisI].flag++
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_cop1")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 0
REPLAY_RECORD_BACK_FOR_TIME(7.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
actions[thisI].flag++
ENDIF
ENDIF
BREAK
case 2
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
CLEAR_PED_TASKS(ped[ped_cop1].id)
seq()
TASK_PLAY_ANIM(null,"misscarsteal2officer","officer_point")
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET")
endseq(ped[ped_cop1].id)
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_WALK_TO_STAIRS
SWITCH actions[thisI].flag
CASE 0
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
CLEAR_PED_TASKS(ped[ped_cop1].id)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 464.1900, -985.8955, 29.6897 >>,pedmove_walk,40000)
TASK_LOOK_AT_ENTITY(null,player_ped_id(),10000)
TASK_TURN_PED_TO_FACE_ENTITY(null,player_ped_id(),5000)
endseq(ped[ped_cop1].id)
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONDITION_TRUE(COND_PLAYER_IN_LOCKER_ROOM)
actions[thisI].flag++
ENDIF
BREAK
CASE 2
IF IS_CONDITION_FALSE(COND_PLAYER_IN_LOCKER_ROOM)
actions[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_COPS_ALERTED
FORCE_END_ACTION(ACT_WALK_TO_STAIRS)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_cop1].id)
ENDIF
actions[thisI].completed = TRUE
BREAK
CASE ACT_SPAWN_CHOPPER
switch actions[thisI].flag
case 0
request_model(polmav)
request_model(model_pilot)
actions[thisI].flag++
BREAK
case 1
if HAS_MODEL_LOADED(POLMAV)
and HAS_MODEL_LOADED(model_pilot)
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME()
vehicle[vehChopper].id = create_Vehicle(polmav,<< 449.0350, -982.4875, 42.6919 >>, 357.5347)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_ENGINE_ON(vehicle[vehChopper].id,false,true)
SET_VEHICLE_DOORS_LOCKED(vehicle[vehChopper].id,VEHICLELOCK_UNLOCKED)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
SET_VEHICLE_ON_GROUND_PROPERLY(vehicle[vehChopper].id)
CREATE_CHOPPER_PILOT(TRUE)
seq()
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_AA_SMOKE")
TASK_LOOK_AT_COORD(null,<< 453.9144, -948.0502, 44.2760 >>,-1)
TASK_PAUSE(null,99999999)
endseq(ped[ped_pilot].id)
actions[thisI].completed = TRUE
endif
break
ENDSWITCH
BREAK
CASE ACT_PED_AT_VENDING_MACHINE_LEAVES
IF NOT IS_PED_INJURED(ped[ped_civ1].id) //vending machine ped
IF g_bCurrentlyUsingVendingMachine
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_civ1].id,player_ped_id()) < 5.0
TASK_USE_NEAREST_SCENARIO_TO_COORD(ped[ped_civ1].id,GET_ENTITY_COORDS(ped[ped_civ1].id),30.0)
//TASK_WANDER_STANDARD(ped[ped_civ1].id)
actions[thisI].completed = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE ACT_COP_RETURNS_TO_FRONT_DESK
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 441.2560, -977.9714, 29.6895 >>,pedmove_walk)
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_HANG_OUT_STREET")
endseq(ped[ped_cop1].id)
actions[thisI].completed = TRUE
FORCE_ACTION_STATE(3,ACT_WALK_TO_STAIRS)
BREAK
CASE ACT_PLAYER_GETS_IN_CHOPPER
switch actions[thisI].flag
case 0
cprintln(debug_trevor3,"Trevor gets in chopper. Awesome")
REPLAY_RECORD_BACK_FOR_TIME(8.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
SET_PLAYER_CONTROL(PLAYER_ID(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
TASK_ENTER_VEHICLE(player_ped_id(),vehicle[vehChopper].id,DEFAULT_TIME_BEFORE_WARP,VS_FRONT_RIGHT,pedmove_run,ECF_USE_RIGHT_ENTRY)
IF DOES_BLIP_EXIST(blipTarget)
remove_blip(blipTarget)
ENDIF
CLEAR_PRINTS()
IF NOT IS_PED_INJURED(ped[ped_pilot].id)
TASK_LOOK_AT_ENTITY(ped[ped_pilot].id,PLAYER_PED_ID(),6000)
ENDIF
DISABLE_CELLPHONE(TRUE)
actions[thisI].flag++
BREAK
CASE 1
//added to fix bug 2027162
IF GET_SCRIPT_TASK_STATUS(player_ped_id(),SCRIPT_TASK_ENTER_VEHICLE) = FINISHED_TASK
OR GET_SCRIPT_TASK_STATUS(player_ped_id(),SCRIPT_TASK_ENTER_VEHICLE) = DORMANT_TASK
TASK_ENTER_VEHICLE(player_ped_id(),vehicle[vehChopper].id,DEFAULT_TIME_BEFORE_WARP,VS_FRONT_RIGHT,pedmove_run,ECF_USE_RIGHT_ENTRY)
ENDIF
IF GET_SCRIPT_TASK_STATUS(player_ped_id(),SCRIPT_TASK_ENTER_VEHICLE) = PERFORMING_TASK
IF IS_PED_IN_ANY_VEHICLE(player_ped_id(),TRUE)
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_PILOT_FLIES_OFF
cprintln(debug_trevor3,"HELI TEST")
IF NOT IS_PED_INJURED(PED[ped_pilot].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
seq()
TASK_HELI_MISSION(null,vehicle[vehChopper].id,null,null,<< 447.0187, -982.2263, 73.6343 >>,MISSION_GOTO,15.0,1.0,0,130,30)
TASK_HELI_MISSION(null,vehicle[vehChopper].id,null,null,<< 727.9601, -1085.0781, 131.2213 >>,MISSION_CIRCLE,15.0,1.0,0,130,30)
endseq(PED[ped_pilot].id)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_PILOT_LOOKS_AT_TREVOR
IF NOT IS_PED_INJURED(PED[ped_pilot].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
seq()
TASK_LOOK_AT_ENTITY(null,player_ped_id(),15000)
TASK_PAUSE(null,1000)
TASK_ENTER_VEHICLE(null,vehicle[vehChopper].id,DEFAULT_TIME_BEFORE_WARP,vs_driver,PEDMOVE_WALK)
TASK_HELI_MISSION(null,vehicle[vehChopper].id,null,null,GET_ENTITY_COORDS(vehicle[vehChopper].id),MISSION_LAND_AND_WAIT,0,5,0,0,0)
endseq(PED[ped_pilot].id)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_COP_WAITS_FOR_PLAYER
IF NOT IS_PED_INJURED(PED[ped_cop1].id)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<453.0859, -985.3833, 29.6896>>,pedmove_run)
TASK_TURN_PED_TO_FACE_ENTITY(null,player_peD_id(),0)
endseq(PED[ped_cop1].id)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_CLEAR_SWITCH_INSTRUCTIONS
IF switchState = SWITCH_SWAP_PLAYER_PEDS
CLEAR_PRINTS()
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_DO_TREVOR_STAND
switch actions[thisI].flag
case 0
IF HAS_ANIM_DICT_LOADED("switch@trevor@head_in_sink")
actions[thisI].flag=2
ENDIF
BREAK
CASE 3
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
RENDER_SCRIPT_CAMS(FALSE, FALSE)
SET_PLAYER_CONTROL(player_id(),false)
DESTROY_ALL_CAMS()
CAMERA_INDEX splineCamera
splineCamera = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) //CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA",<< 1390.3833, 1163.0212, 113.8014 >>, << -4.1252, 0.0000, -113.4193 >>,65,true)
ADD_CAM_SPLINE_NODE(splineCamera,<<417.4168, -964.0216, 31.2312>>, <<22.2372, -0.0000, -121.6787>>,6500)
ADD_CAM_SPLINE_NODE(splineCamera,<<417.3173, -965.3885, 31.2487>>, <<-17.7868, -0.0000, -164.7233>>,4500)
SET_CAM_SPLINE_SMOOTHING_STYLE(splineCamera,CAM_SPLINE_SLOW_IN_OUT_SMOOTH)
SET_CAM_ACTIVE(splineCamera, TRUE)
SET_CAM_FOV(splinecamera,46.25)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 419.776, -969.354, 29.529 >>,<< -0.000, 0.000, -108.720 >>)//<< 1408.917, -2045.323, 51.496 >>, << 0.000, 0.000, 144.500 >>)
TASK_SYNCHRONIZED_SCENE (player_ped_id(), actions[thisI].intA, "switch@trevor@head_in_sink", "trev_sink_exit", INSTANT_BLEND_IN, -2)
SET_SYNCHRONIZED_SCENE_LOOPED(actions[thisI].intA,FALSE)
SET_SYNCHRONIZED_SCENE_RATE(actions[thisI].intA,0)
CLEAR_area(<<418.929260,-969.588623,29.411676>>,4,true)
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(-45)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
actions[thisI].flag=4
actions[thisI].intB = GET_GAME_TIMER() + 1800
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<408.865997,-964.756531,26.657490>>, <<407.229065,-989.141602,34.579247>>, 24.812500, <<407.1000, -983.7553, 28.2668>>, 233.2444,<<4,10,6>>)
BREAK
CASE 4
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
IF GET_GAME_TIMER() > actions[thisI].intB
//OR IS_PLAYER_PRESSING_A_CONTROL_BUTTON()
SET_SYNCHRONIZED_SCENE_RATE(actions[thisI].intA,1.0)
actions[thisI].flag++
//IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
// SET_GAMEPLAY_ENTITY_HINT(vehicle[vehChopper].id,<<0,0,0>>,TRUE,10000,10000)
//ENDIF
ENDIF
BREAK
CASE 5
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
IF (IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA) AND GET_SYNCHRONIZED_SCENE_PHASE(actions[thisI].intA) > 0.67 AND IS_PLAYER_PRESSING_A_CONTROL_BUTTON())
OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA)
CLEAR_PED_TASKS(player_ped_id())
SET_PLAYER_CONTROL(player_id(),true)
STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP()
DESTROY_ALL_CAMS()
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_GAMEPLAY_ENTITY_HINT(vehicle[vehChopper].id,<<0,0,-7>>,TRUE,6000,5000,4000)
ENDIF
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE 6
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intA)
REMOVE_ANIM_DICT("switch@trevor@head_in_sink")
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_LOAD_STAND_ANIM
DISABLE_CONTROL_ACTION(CAMERA_CONTROL,INPUT_NEXT_CAMERA)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_NEXT_CAMERA)
//DISABLE_CONTROL_ACTION(FRONTEND_CONTROL,INPUT_NEXT_CAMERA)
///DISABLE_CONTROL_ACTION(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT)
switch actions[thisI].flag
case 0
REQUEST_ANIM_DICT("misscarsteal2franklin_on_bench")
REQUEST_ANIM_DICT("AMB@PROP_HUMAN_SEAT_CHAIR@MALE@LEFT_ELBOW_ON_KNEE@BASE")
REQUEST_MODEL(model_pilot)
REQUEST_MODEL(polmav)
actions[thisI].flag++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("misscarsteal2franklin_on_bench")
AND HAS_ANIM_DICT_LOADED("AMB@PROP_HUMAN_SEAT_CHAIR@MALE@LEFT_ELBOW_ON_KNEE@BASE")
actions[thisI].flag++
ENDIF
BREAK
CASE 3
RENDER_SCRIPT_CAMS(FALSE, FALSE)
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
SET_PLAYER_CONTROL(player_id(),false)
DESTROY_ALL_CAMS()
CAMERA_INDEX splineCamera
splineCamera = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true) //CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA",<< 1390.3833, 1163.0212, 113.8014 >>, << -4.1252, 0.0000, -113.4193 >>,65,true)
ADD_CAM_SPLINE_NODE(splineCamera,<<1411.6434, -2045.3735, 52.0791>>, <<-4.6833, 0.1650, 106.0461>>,6500)
ADD_CAM_SPLINE_NODE(splineCamera,<<1411.8749, -2045.2078, 51.9994>>, <<7.3850, 0.1650, 120.4620>>,4000)
SET_CAM_SPLINE_SMOOTHING_STYLE(splineCamera,CAM_SPLINE_SLOW_OUT_SMOOTH)
SET_CAM_ACTIVE(splineCamera, TRUE)
SET_CAM_FOV(splinecamera,50)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
actions[thisI].intA = CREATE_SYNCHRONIZED_SCENE(<< 1409.681, -2045.772, 51.500 >>, << 0.000, 0.000, 144.500 >>)//<< 1408.917, -2045.323, 51.496 >>, << 0.000, 0.000, 144.500 >>)
TASK_SYNCHRONIZED_SCENE (player_ped_id(), actions[thisI].intA, "AMB@PROP_HUMAN_SEAT_CHAIR@MALE@LEFT_ELBOW_ON_KNEE@BASE", "base", INSTANT_BLEND_IN, SLOW_BLEND_OUT)
SET_SYNCHRONIZED_SCENE_LOOPED(actions[thisI].intA,TRUE)
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(-45)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
actions[thisI].flag=4
actions[thisI].intB = GET_GAME_TIMER() + 2000
BREAK
case 35
IF DOES_ENTITY_EXIST(vehicle[vehChopper].id)
SET_GAMEPLAY_ENTITY_HINT(vehicle[vehChopper].id,<<0,0,0>>,true,10000,6000)
actions[thisI].flag=4
ENDIF
BREAK
CASE 4
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
IF GET_GAME_TIMER() > actions[thisI].intB
OR IS_PLAYER_PRESSING_A_CONTROL_BUTTON()
actions[thisI].intB = CREATE_SYNCHRONIZED_SCENE(<< 1409.681, -2045.772, 51.500 >>, << 0.000, 0.000, 144.500 >>)//<< 1408.917, -2045.323, 51.496 >>, << 0.000, 0.000, 144.500 >>)
TASK_SYNCHRONIZED_SCENE (player_ped_id(), actions[thisI].intB, "misscarsteal2franklin_on_bench", "exit_forward", SLOW_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_ON_ABORT_STOP_SCENE)
actions[thisI].flag++
//IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
// SET_GAMEPLAY_ENTITY_HINT(vehicle[vehChopper].id,<<0,0,0>>,TRUE,10000,10000)
//ENDIF
ENDIF
BREAK
CASE 5
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
IF (IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intB) AND GET_SYNCHRONIZED_SCENE_PHASE(actions[thisI].intB) > 0.97)
OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(actions[thisI].intB)
CLEAR_PED_TASKS(player_ped_id())
SET_PLAYER_CONTROL(player_id(),true)
actions[thisI].flag++
ENDIF
BREAK
CASE 6
//IF GET_GAME_TIMER() > actions[thisI].intA
// IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_MOVE_LR)
// OR IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_MOVE_UD)
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
IF IS_PLAYER_PRESSING_A_CONTROL_BUTTON()
STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP()
DESTROY_ALL_CAMS()
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_GAMEPLAY_ENTITY_HINT(vehicle[vehChopper].id,<<0,0,-7>>,TRUE,6000,5000,4000)
ENDIF
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
// ===================================== LEARN TO SCAN ===================================
CASE ACT_TURN_ON_SCANNER
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id,TRUE, vehicle[vehChopper].id)
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",TRUE)
DISABLE_SELECTOR()
IF DOES_ENTITY_EXIST(ped[ped_pilot].id)
DELETE_PED(ped[ped_pilot].id)
SET_MODEL_AS_NO_LONGER_NEEDED(model_pilot)
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,FALSE)
SET_VEHICLE_ENGINE_ON(vehicle[vehChopper].id,true,true)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
/*
IF playAsTrevor
POINT_CHOPPER_CAM_AT_COORD(HUD,<< 1353.0531, -2064.5781, 54.0574 >>)
ELSE
POINT_CHOPPER_CAM_AT_COORD(HUD,<< -212.2150, 639.5228, 191.7123 >>)
ENDIF*/
HUD.bMoveChopper = TRUE
SET_ASSET_STAGE(ASSETS_STAGE_IN_CHOPPER)
START_AUDIO_SCENE("CAR_2_HELI_CAM_TUTORIAL")
kill_event(events_chopper_at_Start)
actions[thisI].completed = TRUE
BREAK
CASE ACT_MUSIC_SCANNER_ON
PLAY_MUSIC(mus_init_scanner,mus_scan_first_ped)
actions[thisI].completed = TRUE
BREAK
CASE ACT_FRANKLIN_LOOKS_AT_CHOPPER
if not IS_PED_INJURED(ped[ped_franklin].id)
OR actions[thisI].flag = CLEANUP
SWITCH actions[thisI].flag
case CLEANUP
REMOVE_ANIM_DICT("misscarsteal2")
actions[thisI].completed = TRUE
BREAK
case 0
REQUEST_ANIM_DICT("misscarsteal2")
actions[thisI].flag++
break
case 1
if HAS_ANIM_DICT_LOADED("misscarsteal2")
actions[thisI].flag++
ENDIF
break
case 2
if IS_PED_IN_ANY_VEHICLE(ped[ped_franklin].id) or IS_PED_SITTING_IN_ANY_VEHICLE(ped[ped_franklin].id)
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,script_TASK_LEAVE_ANY_VEHICLE) = FINISHED_TASK
TASK_LEAVE_ANY_VEHICLE(ped[ped_franklin].id)
ENDIF
ELSE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_franklin].id,<<1390.7333, -2063.3943, 50.9983>>) < 5
if not IS_PED_INJURED(ped[ped_franklin].id)
IF ABSF(GET_RELATIVE_ANGLE_FROM_ENTITY_TO_ENTITY(ped[ped_franklin].id,PLAYER_PED_ID())) > 45
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY) != PERFORMING_TASK
TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_franklin].id,player_ped_id(),2000)
ENDIF
ELSE
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
AND GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY) = FINISHED_TASK
seq()
TASK_LOOK_AT_ENTITY(null,player_ped_id(),5000,SLF_DEFAULT)
endseq(ped[ped_franklin].id)
ENDIF
ENDIF
ENDIF
ELSE
TASK_FOLLOW_NAV_MESH_TO_COORD(ped[ped_franklin].id,<<1390.7333, -2063.3943, 50.9983>>,pedmove_run)
actions[thisI].flag++
ENDIF
ENDIF
BREAK
case 3
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_franklin].id,<<1390.7333, -2063.3943, 50.9983>>) < 5
actions[thisI].flag = 2
ENDIF
break
ENDSWITCH
ENDIF
BREAK
CASE ACT_FRANKLIN_REACTS_TO_TREVOR_CONVERSATION
SWITCH actions[thisI].flag
CASE 0
if not IS_PED_INJURED(ped[ped_franklin].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
TASK_SWEEP_AIM_ENTITY(ped[ped_franklin].id, "missCarsteal2", "sweep_high", "sweep_high", "sweep_high", -1, vehicle[vehChopper].id,1.57,1)
actions[thisI].flag++
endif
BREAK
CASE 1
if not IS_PED_INJURED(ped[ped_franklin].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_GENERAL_SWEEP) = PERFORMING_TASK
UPDATE_TASK_SWEEP_AIM_ENTITY(ped[ped_franklin].id,vehicle[vehChopper].id)
ELSE
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_LOAD_PATH_NODES
REQUEST_PATH_NODES_IN_AREA_THIS_FRAME(1598.6936, -2350.9961,-200.3946, 368.2026)
IF NOT DOES_ENTITY_EXIST(ped[ped_franklin].id)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_CREATE_PLAYER_CAR
IF actions[thisI].flag = 0
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
IF GET_ENTITY_MODEL(vehicle[vehFranklin].id) != BUFFALO2
vehicle[vehFranklin].id = null
// ELSE
// //cprintln(debug_trevor3,"player's last car is a Buffalo? ")
ENDIF
// ELSE
// //cprintln(debug_trevor3,"IS player#s last car driveable? No")
ENDIF
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
OR (IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id) AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[vehFranklin].id,<<1380.7723, -2066.0107, 50.9983>>) > 60)
IF (NOT IS_SPHERE_VISIBLE(<<1388.4817, -2043.4288, 50.9985>>,5)
AND NOT IS_ANY_VEHICLE_NEAR_POINT(<<1388.4817, -2043.4288, 50.9985>>,5))
actions[thisI].flag = 1
ELIF (NOT IS_SPHERE_VISIBLE(<<1408.5426, -2057.7336, 50.9983>>,5)
AND NOT IS_ANY_VEHICLE_NEAR_POINT(<<1408.5426, -2057.7336, 50.9983>>,5))
actions[thisI].flag = 2
ELIF (NOT IS_SPHERE_VISIBLE(<<1375.7686, -2080.0642, 50.9983>>,5)
AND NOT IS_ANY_VEHICLE_NEAR_POINT(<<1375.7686, -2080.0642, 50.9983>>,5))
actions[thisI].flag = 3
ENDIF
ENDIF
ENDIF
IF actions[thisI].flag > 0
SWITCH actions[thisI].flag
CASE 1
IF CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id,CHAR_FRANKLIN,<<1388.4817, -2043.4288, 50.9985>>, 135.7372,TRUE,VEHICLE_TYPE_CAR)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE 2
IF CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id,CHAR_FRANKLIN,<<1408.5426, -2057.7336, 50.9983>>, 108.4516,TRUE,VEHICLE_TYPE_CAR)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE 3
IF CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id,CHAR_FRANKLIN,<<1375.7686, -2080.0642, 50.9983>>, 312.5410,TRUE,VEHICLE_TYPE_CAR)
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
ELSE
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_CHANGE_FRANKLIN_LOD_LEVEL_UP
IF NOT IS_PED_INJURED(ped[ped_Franklin].id)
SET_PED_LOD_MULTIPLIER(ped[ped_Franklin].id,1.7)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_CHANGE_FRANKLIN_LOD_LEVEL_DOWN
IF NOT IS_PED_INJURED(ped[ped_Franklin].id)
SET_PED_LOD_MULTIPLIER(ped[ped_Franklin].id,1.0)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_FRAKNLIN_GETS_IN_CAR
if not IS_PED_INJURED(ped[ped_franklin].id)
SWITCH actions[thisI].flag
case CLEANUP
REMOVE_ANIM_DICT("misscarsteal2")
actions[thisI].completed = TRUE
BREAK
case 0
//TASK_GO_TO_COORD_ANY_MEANS(ped[ped_franklin].id,<< -93.9606, -68.0128, 55.7683 >>,pedmove_run,null)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
seq()
TASK_ENTER_VEHICLE(null,vehicle[vehFranklin].id)
//TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[vehFranklin].id,<< -93.9606, -68.0128, 55.7683 >>,18.0,DRIVINGSTYLE_NORMAL,DUMMY_MODEL_FOR_SCRIPT,DRIVINGMODE_STOPFORCARS,5,5)
TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE(null,vehicle[vehFranklin].id,<< -93.9606, -68.0128, 55.7683 >>,18.0,DRIVINGMODE_STOPFORCARS,5)
endseq(ped[ped_franklin].id)
endif
REMOVE_ANIM_DICT("misscarsteal2")
FORCE_ACTION_STATE(2,ACT_FRANKLIN_LOOKS_AT_CHOPPER) //stop player forced to look at chopper
actions[thisI].flag++
BREAK
CASE 1
if IS_PED_IN_ANY_VEHICLE(ped[ped_franklin].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
DETACH_VEHICLE_FROM_ANY_TOW_TRUCK(vehicle[vehFranklin].id)
actions[thisI].completed = TRUE
ENDIF
endif
BREAK
endswitch
endif
BREAK
//scan area 1
CASE ACT_STOP_AUDIO_CAR_2_SCAN_FRANKLIN
IF IS_POINT_VISIBLE(<<-10.7022, -33.1513, 69.2777>>,30,500)
IF IS_SPHERE_VISIBLE(<<-27.9336, -35.7344, 88.8509>>,10)
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
CASE ACT_SCANNING_AUDIO_SCENE
SWITCH actions[thisI].flag
CASE 0
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_SCANNING_TARGET")
STOP_AUDIO_SCENE("CAR_2_SCANNING_TARGET")
ENDIF
IF HUD.scanning = TRUE
START_AUDIO_SCENE("CAR_2_SCANNING_TARGET")
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF HUD.scanning = FALSE
STOP_AUDIO_SCENE("CAR_2_SCANNING_TARGET")
actions[thisI].flag=0
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_STOP_CAR_2_SCAN_THE_SUSPECTS
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
STOP_AUDIO_SCENE("CAR_2_SCAN_THE_SUSPECTS")
START_AUDIO_SCENE("CAR_2_FOLLOW_CHAD_ON_FOOT")
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_DELETE_FRANKLIN
If NOT IS_ENTITY_ON_SCREEN(ped[ped_Franklin].id)
actions[thisI].floatA += TIMESTEP()
IF actions[thisI].floatA > 10000
IF NOT IS_PED_INJURED(ped[ped_Franklin].id)
DELETE_PED(ped[ped_Franklin].id)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[vehFranklin].id)
SET_ENTITY_AS_MISSION_ENTITY(vehicle[vehFranklin].id,true,true)
DELETE_VEHICLE(vehicle[vehFranklin].id)
ENDIF
ENDIF
actions[thisI].completed = TRUE
ENDIF
ELSE
actions[thisI].floatA = 0
ENDIF
BREAK
CASE ACT_GARAGE_OPENING_SOUND
PLAY_SOUND_FROM_ENTITY(-1,"Garage_Open",ped[ped_chad].id,"CAR_STEAL_2_SOUNDSET")
actions[thisI].completed = TRUE
BREAK
// scan area 3
CASE ACT_RELEASE_AREA_1_ASSETS
IF NOT IS_POINT_VISIBLE(<<-10.7022, -33.1513, 69.2777>>,30,500)
AND NOT IS_POINT_VISIBLE(<<-30.3868, -90.2560, 59.0222>>,30,500)
KILL_EVENT(EVENTS_SCENE_PERVERT)
KILL_EVENT(events_scene_mugging)
SET_ASSET_STAGE(ASSETS_STAGE_RELEASE_AREA_1)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_SPAWN_ZTYPE
IF IS_ASSET_LOADED(ASSET_ZYPE)
initHeistVehicle(<< 202.7272, -149.7968, 56.1760 >>,160)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_DOG_BARKS
IF listenDialogue = 5
OR actions[thisI].flag = 0
////cprintln(debug_Trevor3,"PLAYING DOG BARKS ACTION")
//the anim has been tagged up so this should work without needing to call it now (url:bugstar:1245077)
SWITCH actions[thisI].flag
case 0
IF REQUEST_SCRIPT_AUDIO_BANK("CAR_STEAL2_DISTANT_DOG")
actions[thisI].intB = GET_SOUND_ID()
actions[thisI].flag++
ENDIF
BREAK
CASE 2
cprintln(debug_Trevor3,"ACT_DOG_BARKS: flag = 2")
IF NOT IS_PED_INJURED(ped[ped_dog].id)
cprintln(debug_Trevor3,"ACT_DOG_BARKS: dog alive")
IF IS_ENTITY_PLAYING_ANIM(ped[ped_dog].id,"CREATURES@ROTTWEILER@AMB@WORLD_DOG_BARKING@idle_a","idle_a")
float fAnimTime
fAnimTime = GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_dog].id,"CREATURES@ROTTWEILER@AMB@WORLD_DOG_BARKING@idle_a","idle_a")
//cprintln(debug_Trevor3,"DOG BARK ANIM PLAYING ",fAnimTime)
If (fAnimTime >= 0.0 and fAnimTime < 0.02)
OR (fAnimTime >= 0.173 and fAnimTime < 0.193)
OR (fAnimTime >= 0.348 and fAnimTime < 0.368)
OR (fAnimTime >= 0.528 and fAnimTime < 0.548)
OR (fAnimTime >= 0.633 and fAnimTime < 0.653)
OR (fAnimTime >= 0.818 and fAnimTime < 0.838)
cprintln(debug_Trevor3,"BARK BARK")
PLAY_SOUND_FRONTEND(actions[thisI].intB,"DISTANT_DOG_BARK","CAR_STEAL_2_SOUNDSET")
actions[thisI].flag++
actions[thisI].intA = GET_GAME_TIMER() + 500
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF GET_GAME_TIMER() > actions[thisI].intA
actions[thisI].flag = 2
ENDIF
BREAK
CASE 10
actions[thisI].completed = TRUE
BREAK
ENDSWITCH
/*
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_dog].id) < 4
actions[thisI].flag = 3
ENDIF
ENDIF
IF GET_GAME_TIMER() > actions[thisI].intA
IF GET_GAME_TIMER() - actions[thisI].intA > 1000
actions[thisI].flag = 1
ELSE
IF NOT IS_PED_INJURED(ped[ped_dog].id)
PLAY_SOUND_FRONTEND(actions[thisI].intB,"DISTANT_DOG_BARK","CAR_STEAL_2_SOUNDSET")
//PLAY_ANIMAL_VOCALIZATION(ped[ped_dog].id,AUD_ANIMAL_DOG,"BARK")
ENDIf
//cprintln(debug_trevor3,"woof")
actions[thisI].flag = 1
ENDIF
ENDIF
BREAK
case 3
IF actions[thisI].intA - GET_GAME_TIMER() > 900
actions[thisI].intA = GET_GAME_TIMER()
ENDIF
IF GET_GAME_TIMER() > actions[thisI].intA
IF NOT IS_PED_INJURED(ped[ped_dog].id)
IF GET_RANDOM_INT_IN_RANGE(0,3) = 0
PLAY_SOUND_FRONTEND(actions[thisI].intB,"DISTANT_DOG_GROWL","CAR_STEAL_2_SOUNDSET")
actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(600,900)
ELSE
PLAY_SOUND_FRONTEND(actions[thisI].intB,"DISTANT_DOG_BARK","CAR_STEAL_2_SOUNDSET")
actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(300,600)
ENDIF
actions[thisI].flag=2
ENDIf
ENDIF
break
ENDSWITCH*/
ENDIF
BREAK
CASE ACT_TARGET_LOST_SOUND
SWITCH actions[thisI].flag
CASE 0
IF HUD.targetIsLost
actions[thisI].intA = GET_SOUND_ID()
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF HUD.targetIsLost
PLAY_SOUND_FRONTEND(StaticSoundID,"Lost_Target","POLICE_CHOPPER_CAM_SOUNDS")
actions[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT HUD.targetIsLost
PLAY_SOUND_FRONTEND(StaticSoundID,"Found_Target","POLICE_CHOPPER_CAM_SOUNDS")
actions[thisI].flag=1
ENDIF
BREAK
ENDSWITCH
BREAK
// ==== chase stage ====
CASE ACT_block_peds_on_chase_route
SET_PED_PATHS_IN_AREA(<<-290.3812, -100.4234, 46.3507>>-<<10,10,10>>,<<-290.3812, -100.4234, 46.3507>>+<<10,10,10>>,FALSE)
actions[thisI].completed = TRUE
BREAK
CASE ACT_AUDIO_SCENE_TRANSITION
SWITCH actions[thisI].flag
CASE 0
IF IS_CONV_ROOT_PLAYING("cs2_chase2")
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_CONV_ROOT_PLAYING("cs2_chase2")
STOP_AUDIO_SCENE("CAR_2_CAR_CHASE_START")
START_AUDIO_SCENE("CAR_2_CAR_CHASE_CONTINUED")
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
case action_load_audio_scene
IF REQUEST_SCRIPT_AUDIO_BANK("Car_Steal_2_Chase_Skids_01")
AND REQUEST_SCRIPT_AUDIO_BANK("Car_Steal_2_Chase_Skids_02")
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_AUDIO_VEHICLE_PRIORITY(vehicle[vehHeist].id,AUDIO_VEHICLE_PRIORITY_MAX)
ENDIF
actions[thisI].completed = TRUE
ENDIF
break
case act_update_target_car_audio_level
IF DOES_ENTITY_EXIST(HUD.camEntity)
AND DOES_ENTITY_EXIST(vehicle[vehHeist].id)
vector vCamRot
vCamRot = GET_CAM_ROT(HUD.camChopper)
vector vCarRot
float p1,p2,p3
GET_PITCH_AND_HEADING_FROM_COORDS(GET_ENTITY_COORDS(HUD.camEntity,false),GET_ENTITY_COORDS(vehicle[vehHeist].id,false),vCarRot.x,vCarRot.z)
p1 = cos(vCamRot.z-vCarRot.z)
p2 = cos(vCamRot.x-vCarRot.x)
p3 = cos(vCamRot.x+vCarRot.x)
float sphericalRange
sphericalRange = acos(((p1*(p2+p3))+(p2-p3))/2)
SET_AUDIO_SCENE_VARIABLE("CAR_2_Z_TYPE_ENGINE_BOOST","TargetCarVisibility", sphericalRange)
////cprintln(debug_trevor3,"dist: ",sphericalRange)
ENDIF
break
CASE act_remove_trees
CREATE_MODEL_HIDE(<<-111.8944,-188.65,46.02>>,1.0,prop_tree_birch_04,TRUE)
CREATE_MODEL_HIDE(<<-109.937,-179.954,47.62>>,1.0,prop_tree_birch_04,TRUE)
CREATE_MODEL_HIDE(<<-108.3848,-171.323,49.34>>,1.0,prop_tree_birch_04,TRUE)
actions[thisI].completed = TRUE
BREAK
// ===================================== CAR PARK ACTIONNS ===================================
CASE ACT_CHOPPER_CONTROL
SWITCH actions[thisI].flag
CASE 0
actions[thisI].intA = GET_GAME_TIMER() + 2000
actions[thisI].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() > actions[thisI].intA
add_event(EVENTS_CHOPPER_CARPARK)
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_CAR_HAS_PISS
SWITCH actions[thisI].flag
case cleanup
if DOES_ENTITY_EXIST(ped[ped_wrong_wanker].id)
if not IS_PED_INJURED(ped[ped_wrong_wanker].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_wrong1].id)
SET_PED_INTO_VEHICLE(ped[ped_wrong_wanker].id,vehicle[veh_wrong1].id)
seq()
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_wanker].id,<<-5,5,0>>),15000)
TASK_PAUSE(null,15000)
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_wanker].id,<<5,5,0>>),15000)
TASK_PAUSE(null,15000)
endseq(ped[ped_wrong_wanker].id,true)
ENDIF
SET_PED_KEEP_TASK(ped[ped_wrong_wanker].id,TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_wrong_wanker].id,FALSE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_wrong_wanker].id)
ENDIF
ENDIF
if DOES_ENTITY_EXIST(vehicle[veh_wrong1].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_wrong1].id)
ENDIF
break
case 0
IF IS_ASSET_LOADED(ASSET_CARPARK)
actions[thisI].flag =100
actions[thisI].intA = GET_GAME_TIMER() + 1000
ENDIF
break
case 100 //timer added to prevent load_scene removed by request model assert.
if GET_GAME_TIMER() > actions[thisI].intA
SET_ACTION_NEEDS_CLEANUP(thisI)
actions[thisI].flag=1
ENDIF
BREAK
case 1
initVehicle(veh_wrong1,DOMINATOR,<<-1269.4034, -212.2201, 50.8255>>,-56.5256)
initPedInVehicle(ped_wrong_wanker,A_M_Y_GENSTREET_01,vehicle[veh_wrong1].id)
actions[thisI].flag++
BREAK
CASE 2
IF IS_CONDITION_TRUE(COND_DIA_LOOK_FOR_MORE_HEAT_PLAYED)
//IF HAS_DIALOGUE_FINISHED(7,DIA_TREVOR_SEES_PISSER)
seq()
TASK_LEAVE_ANY_VEHICLE(null)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1269.9102, -210.0006, 50.5499>>,pedmove_walk)
TASK_PLAY_ANIM(null,"misscarsteal2peeing","peeing_intro")
TASK_PLAY_ANIM(null,"misscarsteal2peeing","peeing_loop",NORMAL_BLEND_IN,normal_blend_out,-1,AF_LOOPING)
endseq(ped[ped_wrong_wanker].id)
actions[thisI].flag++
ENDIF
break
case 3
IF HAS_DIALOGUE_FINISHED(15,DIA_OVERHEAR_PISSER_WITH_SCANNER)
actions[thisI].intA = GET_GAME_TIMER() + 6000
actions[thisI].flag++
ENDIF
BREAK
CASE 4
IF GET_GAME_TIMER() > actions[thisI].intA
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_wrong1].id)
seq()
TASK_PLAY_ANIM(null,"misscarsteal2peeing","peeing_outro")
TASK_ENTER_VEHICLE(null,vehicle[veh_wrong1].id,DEFAULT_TIME_BEFORE_WARP,VS_DRIVER,PEDMOVEBLENDRATIO_WALK)
endseq(ped[ped_wrong_wanker].id)
REMOVE_ANIM_DICT("misscarsteal2peeing")
actions[thisI].completed = TRUE
ENDIF
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_CAR_FIXER
SWITCH actions[thisI].flag
case cleanup
if DOES_ENTITY_EXIST(ped[ped_wrong_fucker].id)
if not IS_PED_INJURED(ped[ped_wrong_fucker].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_wrong2].id)
SET_PED_INTO_VEHICLE(ped[ped_wrong_fucker].id,vehicle[veh_wrong2].id)
seq()
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_fucker].id,<<-5,5,0>>),15000)
TASK_PAUSE(null,15000)
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_fucker].id,<<5,5,0>>),15000)
TASK_PAUSE(null,15000)
endseq(ped[ped_wrong_fucker].id,true)
ENDIF
SET_PED_KEEP_TASK(ped[ped_wrong_fucker].id,TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_wrong_fucker].id,FALSE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_wrong_fucker].id)
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_wrong2].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_wrong2].id)
ENDIF
break
case 0
SET_ACTION_NEEDS_CLEANUP(thisI)
actions[thisI].flag++
break
case 1
IF IS_ASSET_LOADED(ASSET_CARPARK)
initVehicle(veh_wrong2,DOMINATOR,<<-1260.3215, -244.8830, 50.7755>>,29.36)
SET_VEHICLE_DOOR_OPEN(vehicle[veh_wrong2].id,SC_DOOR_BONNET)
initPedOnFoot(ped_wrong_fucker,A_M_Y_GENSTREET_01,<< -1260.095, -244.781, 51.224 >>, 34.6180,pedrole_civilian)
scene_car_fuck = CREATE_SYNCHRONIZED_SCENE(<< -1260.660, -244.607, 50.957 >>,<< -0.000, 0.000, 32.400 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_wrong_fucker].id, scene_car_fuck, "misscarsteal2fixer", "confused_a", INSTANT_BLEND_IN, slow_BLEND_OUT )
SET_SYNCHRONIZED_SCENE_LOOPED(scene_car_fuck,TRUE)
actions[thisI].flag++
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_ON_PHONE_IN_CAR
SWITCH actions[thisI].flag
case cleanup
if DOES_ENTITY_EXIST(ped[ped_wrong_phone].id)
if not IS_PED_INJURED(ped[ped_wrong_phone].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_phoneChat].id)
SET_PED_INTO_VEHICLE(ped[ped_wrong_phone].id,vehicle[veh_phoneChat].id)
seq()
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_phone].id,<<-5,5,0>>),15000)
TASK_PAUSE(null,15000)
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_phone].id,<<5,5,0>>),15000)
TASK_PAUSE(null,15000)
endseq(ped[ped_wrong_phone].id,true)
ENDIF
SET_PED_KEEP_TASK(ped[ped_wrong_phone].id,TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_wrong_phone].id,FALSE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_wrong_phone].id)
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_phoneChat].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_phoneChat].id)
ENDIF
break
case 0
SET_ACTION_NEEDS_CLEANUP(thisI)
actions[thisI].flag++
break
case 1
if IS_ASSET_LOADED(ASSET_CARPARK)
initVehicle(veh_phoneChat,HABANERO,<<-1260.8893, -226.0429, 50.5499>>, 303.0480)
SET_VEHICLE_DOOR_OPEN(vehicle[veh_phoneChat].id,SC_DOOR_FRONT_LEFT)
initPedOnFoot(ped_wrong_phone,A_M_Y_GENSTREET_01,<< -1260.095, -244.781, 51.224 >>, 34.6180,pedrole_civilian)
scene_car_phone = CREATE_SYNCHRONIZED_SCENE(<< -1261.042, -225.594, 51.120 >>,<< -0.000, 0.000, -53.640 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_wrong_phone].id, scene_car_phone, "misscarsteal2", "wrong_house_dave_dave", INSTANT_BLEND_IN, slow_BLEND_OUT )
SET_SYNCHRONIZED_SCENE_LOOPED(scene_car_phone,TRUE)
SET_SYNCHRONIZED_SCENE_PHASE(scene_car_phone,0.41)
actions[thisI].flag++
ENDIF
break
case 2
IF GET_SYNCHRONIZED_SCENE_PHASE(scene_car_phone) > 0.835
SET_SYNCHRONIZED_SCENE_PHASE(scene_car_phone,0.460)
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_LEANING_ON_CAR
SWITCH actions[thisI].flag
case cleanup
if DOES_ENTITY_EXIST(ped[ped_wrong_lean].id)
if not IS_PED_INJURED(ped[ped_wrong_lean].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_lean].id)
SET_PED_INTO_VEHICLE(ped[ped_wrong_lean].id,vehicle[veh_lean].id)
seq()
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_lean].id,<<-5,5,0>>),15000)
TASK_PAUSE(null,15000)
TASK_LOOK_AT_COORD(null,GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(ped[ped_wrong_lean].id,<<5,5,0>>),15000)
TASK_PAUSE(null,15000)
endseq(ped[ped_wrong_lean].id,true)
ENDIF
SET_PED_KEEP_TASK(ped[ped_wrong_lean].id,TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_wrong_lean].id,FALSE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_wrong_lean].id)
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[veh_lean].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_lean].id)
ENDIF
break
case 0
SET_ACTION_NEEDS_CLEANUP(thisI)
actions[thisI].flag++
break
case 1
if IS_ASSET_LOADED(ASSET_CARPARK)
// initVehicle(veh_phoneChat,DUBSTA,<<-1292.8159, -185.4189, 50.5497>>, 33.0002)
initPedOnFoot(ped_wrong_lean,A_M_Y_GENSTREET_01,<< -1260.095, -244.781, 51.224 >>, 34.6180,pedrole_civilian)
scene_car_lean = CREATE_SYNCHRONIZED_SCENE(<< -1293.832, -184.969, 50.870 >>,<< -0.000, 0.000, 180.0 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_wrong_lean].id, scene_car_lean, "misscarstealfinalecar_5_ig_1", "waitloop_lamar", INSTANT_BLEND_IN, slow_BLEND_OUT )
SET_SYNCHRONIZED_SCENE_LOOPED(scene_car_lean,TRUE)
actions[thisI].flag++
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_FRANKLIN_RUNS_TO_ROOF
SWITCH actions[thisI].flag
CASE 0
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF IS_PED_IN_ANY_VEHICLE(ped[ped_franklin].id)
// VEHICLE_INDEX vehTemp
// vehTemp = GET_VEHICLE_PED_IS_IN(ped[ped_franklin].id)
// IF IS_VEHICLE_DRIVEABLE(vehtemp)
// AND IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
// IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTemp)
seq()
TASK_LEAVE_ANY_VEHICLE(null)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1273.9879, -221.8100, 50.5498>>,pedmove_run)
TASK_TURN_PED_TO_FACE_COORD(null,<< -1314.7947, -243.3134, 55.9067 >>,3000)
endseq(ped[ped_franklin].id)
actions[thisI].flag++
REQUEST_ANIM_DICT("missarmenian2lamar_idles")
REQUEST_ANIM_DICT("misscarsteal2")
// ENDIF
// ENDIF
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(500,2500)
actions[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 2
if IS_CONV_ROOT_PLAYING("cs2_onme")
actions[thisI].flag++
ENDIF
IF GET_GAME_TIMER() > actions[thisI].intA
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF NOT IS_PED_IN_ANY_VEHICLE(ped[ped_franklin].id)
IF HAS_ANIM_DICT_LOADED("missarmenian2lamar_idles")
int iIdle
iIdle = GET_RANDOM_INT_IN_RANGE(0,7)
IF iIdle = actions[thisI].intB
iIdle += 1
IF iIdle = 7 iIdle = 0 ENDIF
ENDIF
if iIdle = 0
TASK_PLAY_ANIM(ped[ped_franklin].id,"missarmenian2lamar_idles","idle_a",SLOW_BLEND_IN,SLOW_BLEND_OUT)
ELIF iIdle = 1
TASK_PLAY_ANIM(ped[ped_franklin].id,"missarmenian2lamar_idles","idle_b",SLOW_BLEND_IN,SLOW_BLEND_OUT)
ELIF iIdle = 2
TASK_PLAY_ANIM(ped[ped_franklin].id,"missarmenian2lamar_idles","idle_c",SLOW_BLEND_IN,SLOW_BLEND_OUT)
ELIF iIdle = 3
TASK_PLAY_ANIM(ped[ped_franklin].id,"missarmenian2lamar_idles","idle_d",SLOW_BLEND_IN,SLOW_BLEND_OUT)
ELIF iIdle = 4
TASK_PLAY_ANIM(ped[ped_franklin].id,"missarmenian2lamar_idles","idle_e",SLOW_BLEND_IN,SLOW_BLEND_OUT)
ELIF iIdle = 5
TASK_PLAY_ANIM(ped[ped_franklin].id,"missarmenian2lamar_idles","idle_f",SLOW_BLEND_IN,SLOW_BLEND_OUT)
ELIF iIdle = 6
TASK_PLAY_ANIM(ped[ped_franklin].id,"missarmenian2lamar_idles","idle_look_right",SLOW_BLEND_IN,SLOW_BLEND_OUT)
ENDIF
actions[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3500,5000)
actions[thisI].intB = iIdle
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
case 3
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
if IS_sphere_VISIBLE(GET_ENTITY_COORDS(ped[ped_franklin].id),1.5)
TASK_PLAY_ANIM(ped[ped_franklin].id,"misscarsteal2","COME_HERE_IDLE_C",SLOW_BLEND_IN,SLOW_BLEND_OUT)
actions[thisI].intA = GET_GAME_TIMER() + 7000
actions[thisI].flag++
ENDIF
ENDIF
break
CASE 4
if get_game_timer() > actions[thisI].intA
AND NOT IS_CONV_ROOT_PLAYING("cs2_onme")
actions[thisI].flag = 2
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_FRANKLIN_WAVES_AT_CHOPPER_CAMERA
/* //gestures@male removed
if IS_CONV_ROOT_PLAYING("cs2_looknow")
actions[thisI].flag = cleanup
endif
SWITCH actions[thisI].flag
case cleanup
REMOVE_ANIM_DICT("gestures@male")
break
case 0
REQUEST_ANIM_DICT("gestures@male")
TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_franklin].id,player_ped_id(),1000)
SET_ACTION_NEEDS_CLEANUP(thisI)
actions[thisI].flag++
BREAK
CASE 1
if IS_CONDITION_TRUE(COND_DIA_TREVOR_SEE_FRANKLIN_ENDED)
actions[thisI].flag = cleanup
else
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_TURN_PED_TO_FACE_ENTITY) = FINISHED_TASK
IF HAS_ANIM_DICT_LOADED("gestures@male")
actions[thisI].intA = GET_RANDOM_INT_IN_RANGE(0,4)
switch actions[thisI].intA
CASE 0 TASK_PLAY_ANIM(ped[ped_franklin].id,"gestures@male","raise_hands",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,af_Default,0.27) BREAK
CASE 1 TASK_PLAY_ANIM(ped[ped_franklin].id,"gestures@male","amazing",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,af_Default,0.27) BREAK
CASE 2 TASK_PLAY_ANIM(ped[ped_franklin].id,"gestures@male","bring_it_on",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,af_Default,0.27) BREAK
CASE 3 TASK_PLAY_ANIM(ped[ped_franklin].id,"gestures@male","give_me_a_break",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,af_Default,0.27) BREAK
ENDSWITCH
actions[thisI].flag++
ENDIF
ENDIF
endif
BREAK
CASE 2
switch actions[thisI].intA
CASE 0 IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_franklin].id,"gestures@male","raise_hands") > 0.7 actions[thisI].flag=1 ENDIF BREAK
CASE 1 IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_franklin].id,"gestures@male","amazing") > 0.7 actions[thisI].flag=1 ENDIF BREAK
CASE 2 IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_franklin].id,"gestures@male","bring_it_on") > 0.7 actions[thisI].flag=1 ENDIF BREAK
CASE 3 IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_franklin].id,"gestures@male","give_me_a_break") > 0.7 actions[thisI].flag=1 ENDIF BREAK
ENDSWITCH
BREAK
ENDSWITCH
*/
BREAK
case ACT_FRANKLIN_RUNS_TO_BONNET_CAR
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
SWITCH actions[thisI].flag
CASE 0
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1263.6390, -239.6366, 50.5499 >>,PEDMOVE_RUN)
IF NOT IS_PED_INJURED(ped[ped_wrong_fucker].id)
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_wrong_fucker].id,5000)
ENDIF
TASK_TURN_PED_TO_FACE_ENTITY(null,player_ped_id(),3000)
endseq(ped[ped_franklin].id)
actions[thisI].flag++
BREAK
CASE 1
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK
IF GET_SEQUENCE_PROGRESS(ped[ped_franklin].id) >= 1
actions[thisI].completed = TRUe
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
break
CASE ACT_FRANKLIN_RUNS_TO_PISSER_CAR
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
SWITCH actions[thisI].flag
CASE 0
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< -1273.5055, -212.8070, 50.5499 >>,PEDMOVE_RUN,DEFAULT_TIME_BEFORE_WARP,1.2,ENAV_DEFAULT,300)
endseq(ped[ped_franklin].id)
actions[thisI].flag++
BREAK
CASE 1
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
// IF GET_SEQUENCE_PROGRESS(ped[ped_franklin].id) >= 1
actions[thisI].completed = TRUe
// ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE ACT_FRANKLIN_RUNS_TO_CHAD_CAR
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
SWITCH actions[thisI].flag
CASE 0
TASK_FOLLOW_NAV_MESH_TO_COORD(ped[ped_franklin].id,<<-1301.0939, -208.0075, 50.5498>>,PEDMOVE_RUN,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,141.1114)
actions[thisI].flag++
BREAK
CASE 1
//cprintln(DEBUG_TREVOR3,GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD))
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_franklin].id,<<-1301.0939, -208.0075, 50.5498>>) < 5
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
AND NOT IS_PED_INJURED(ped[ped_chad].id)
GIVE_WEAPON_TO_PED(ped[ped_franklin].id,WEAPONTYPE_PISTOL,50,true)
SET_CURRENT_PED_WEAPON(ped[ped_franklin].id,WEAPONTYPE_PISTOL,TRUE)
TASK_AIM_GUN_AT_ENTITY(ped[ped_franklin].id,ped[ped_chad].id,INFINITE_TASK_TIME)
ENDIF
actions[thisI].completed = TRUe
ELIF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE ACT_FRANKLIN_RUNS_TO_LEANING_MAN
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
SWITCH actions[thisI].flag
CASE 0
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1293.6746, -193.4069, 50.5497>>,PEDMOVE_RUN)
IF NOT IS_PED_INJURED(ped[ped_wrong_lean].id)
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_wrong_lean].id,5000)
ENDIF
TASK_TURN_PED_TO_FACE_ENTITY(null,player_ped_id(),3000)
endseq(ped[ped_franklin].id)
actions[thisI].flag++
BREAK
CASE 1
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_PERFORM_SEQUENCE) = PERFORMING_TASK
IF GET_SEQUENCE_PROGRESS(ped[ped_franklin].id) >= 1
actions[thisI].completed = TRUe
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE ACT_FRANKLIN_RUNS_TO_PHONE_MAN
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
SWITCH actions[thisI].flag
CASE 0
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1265.9111, -225.6303, 50.5499>>,PEDMOVE_RUN,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_DEFAULT,300)
endseq(ped[ped_franklin].id)
actions[thisI].flag++
BREAK
CASE 1
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
// IF GET_SEQUENCE_PROGRESS(ped[ped_franklin].id) >= 1
actions[thisI].completed = TRUe
// ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE ACT_MAKE_FRANKLIN_WALK_ON_SWITCH
SWITCH actions[thisI].flag
case 0
IF iFlag=CASE_SWITCH_IN_PROGRESS
actions[thisI].intA = GET_GAME_TIMER() + 2500
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
AND NOT IS_PED_INJURED(ped[ped_chad].id)
TASK_AIM_GUN_AT_ENTITY(ped[ped_franklin].id,ped[ped_chad].id,3000)
ENDIF
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > actions[thisI].intA
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
SET_PED_MIN_MOVE_BLEND_RATIO(ped[ped_franklin].id,pedmove_walk)
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_PREP_SWITCH
SWITCH actions[thisI].flag
case 0
actions[thisI].flag++
BREAK
CASE 1
actions[thisI].completed = TRUE
BREAK
ENDSWITCH
BREAK
CASE ACT_DO_SWITCH
//IF not IS_CONV_ROOT_PLAYING("CS2_manc1")
SWITCH actions[thisI].flag
case 0
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
CLEAR_PRINTS()
PLAY_MUSIC(mus_switch_to_franklin,mus_get_car_to_objective)
SET_INFRARED(FALSE,TRUE)
HUD.bDisplayHUD = FALSE
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id, FALSE, vehicle[vehChopper].id)
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl", FALSE)
STOP_AUDIO_SCENE("CAR_2_CAR_ENTERS_GARAGE")
//CLEAR_TIMECYCLE_MODIFIER()
kill_event(EVENTS_CHOPPER_CARPARK)
kill_event(EVENTS_CONTROL_INFRARED)
SET_CONDITION_STATE(COND_SWITCH_BEGUN,TRUE)
PED_INDEX deleteThisPed
deleteThisPed = PLAYER_PED_ID()
UNREGISTER_PLAYER_PED_WITH_AUTOMATIC_DOORS(CHAR_TREVOR, ped[ped_trevor].id)
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
CHANGE_PLAYER_PED(PLAYER_ID(), ped[ped_franklin].id)
REGISTER_PLAYER_PED_WITH_AUTOMATIC_DOORS(CHAR_FRANKLIN, ped[ped_franklin].id)
//DO_INSTANT_SWITCH(ped[ped_franklin].id,ped[ped_trevor].id)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_chad].id) //added to try and fix bug 1524679
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_chad].id,TRUE)
ENDIF
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<-1299.6785, -205.9114, 50.5498>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(), 143.87)
ped[ped_trevor].id = deleteThisPed
IF bPlayerinFirstPerson
RESET_PUSH_IN(s_cs2_pushin)
FILL_PUSH_IN_DATA(s_cs2_pushin,ped[ped_franklin].id,CHAR_FRANKLIN,2.5,1200,1200,900,PUSH_IN_SPEED_UP_TIME)
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehChopper].id)
IF NOT IS_ENTITY_DEAD(vehicle[vehChopper].id)
SET_PED_INTO_VEHICLE(ped[ped_trevor].id,vehicle[vehChopper].id,VS_FRONT_RIGHT)
// CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_trevor].id, CHAR_TREVOR, vehicle[vehChopper].id, VS_FRONT_RIGHT)
IF DOES_ENTITY_EXIST(ped[ped_trevor].id)
IF NOT IS_ENTITY_DEAD(ped[ped_trevor].id)
IF NOT IS_PED_INJURED(ped[ped_trevor].id)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_trevor].id, TRUE)
TASK_PLAY_ANIM(ped[ped_trevor].id, "misscarsteal2switch", "_heli_trevor", INSTANT_BLEND_IN, NORMAL_BLEND_OUT)
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_trevor].id)
ENDIF
ENDIF
ENDIF
ped[ped_pilot].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehChopper].id, PEDTYPE_MISSION, model_pilot, VS_DRIVER)
IF DOES_ENTITY_EXIST(ped[ped_pilot].id)
IF NOT IS_ENTITY_DEAD(ped[ped_pilot].id)
IF NOT IS_PED_INJURED(ped[ped_pilot].id)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_pilot].id, TRUE)
FORCE_PED_AI_AND_ANIMATION_UPDATE(ped[ped_pilot].id)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF bSkipSwitch
//CLEAR_TIMECYCLE_MODIFIER()
if not IS_PED_INJURED(ped[ped_franklin].id)
and not is_ped_injured(ped[ped_chad].id)
GIVE_WEAPON_TO_PED(ped[ped_franklin].id,WEAPONTYPE_PISTOL,25,true)
task_play_anim(player_ped_id(),"misscarsteal2switch","_ground_franklin",instant_blend_in,1)
//TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(ped[ped_franklin].id,<<-1302.1127, -212.9030, 50.5500>>,<<-1307.9683, -216.9170, 51.9251>>,pedmove_walk,false)
endif
STOP_AUDIO_SCENE("CAR_2_USE_INFRARED")
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_ENTITY_HEALTH(vehicle[vehHeist].id,1000)
SET_VEHICLE_DIRT_LEVEL(vehicle[vehHeist].id,0.0)
SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehicle[vehHeist].id,true)
SET_VEHICLE_ENGINE_ON(vehicle[vehHeist].id,true,true)
SET_VEHICLE_DOOR_OPEN(vehicle[vehHeist].id,SC_DOOR_FRONT_LEFT)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_ENTITY_INVINCIBLE(vehicle[vehHeist].id,FALSE)
ENDIF
actions[thisI].flag++
else
#ENDIF
DISPLAY_HUD(FALSE)
DISPLAY_RADAR(FALSE)
eSwitchCamState = SWITCH_CAM_START_SPLINE1
actions[thisI].flag++
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
FALLTHRU
case 1
#IF IS_DEBUG_BUILD
IF bSkipSwitch
actions[thisI].completed = TRUE
ELSE
#ENDIF
IF HANDLE_SWITCH_HELI_TO_FRANKLIN(scsCarsteal2)
actions[thisI].completed = TRUE
ENDIF
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
break
endswitch
//ENDIF
BREAK
CASE ACT_CHAD_LOOKS_ABOUT
SWITCH actions[thisI].flag
case 0
REQUEST_ANIM_DICT("misscarsteal2Chad_waiting")
actions[thisI].flag++
BREAK
case 1
if HAS_ANIM_DICT_LOADED("misscarsteal2Chad_waiting")
IF DOES_ENTITY_EXIST(ped[ped_chad].id)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
TASK_PLAY_ANIM(ped[ped_chad].id,"misscarsteal2Chad_waiting","Sat_in_Car_Lookaround",NORMAL_BLEND_IN,NORMAL_BLEND_OUT,-1,AF_LOOPING)
ENDIF
actions[thisI].completed = TRUE
ENDIF
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_CHAD_EXITS_CAR
switch actions[thisi].flag
case CLEANUP
REMOVE_ANIM_DICT("misscarsteal2CAR_STOLEN")
REMOVE_ANIM_DICT("misscarsteal2CHAD_GARAGE")
events[thisi].active = FALSE
break
case 0
IF NOT IS_PED_INJURED(ped[ped_chad].id)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_chad].id,TRUE)
ENDIF
REQUEST_ANIM_DICT("misscarsteal2CAR_STOLEN")
REQUEST_ANIM_DICT("misscarsteal2CHAD_GARAGE")
actions[thisi].flag++
BREAK
case 1
if HAS_ANIM_DICT_LOADED("misscarsteal2CAR_STOLEN")
and HAS_ANIM_DICT_LOADED("misscarsteal2CHAD_GARAGE")
actions[thisi].flag++
ENDIF
break
case 2
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
scene_chad_leaves_car = CREATE_SYNCHRONIZED_SCENE(<< -1308.275, -222.337, 50.563 >>, << -0.000, 0.000, 35.500 >>)
SET_ENTITY_COORDS_NO_OFFSET(ped[ped_chad].id,<< -1308.275, -222.337, 50.563 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, scene_chad_leaves_car, "misscarsteal2CHAD_GARAGE", "chad_parking_garage_chad", INSTANT_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_ABORT_ON_WEAPON_DAMAGE)
SET_VEHICLE_DOOR_OPEN(vehicle[vehHeist].id,SC_DOOR_FRONT_LEFT,true,true)
actions[thisi].flag++
ENDIF
BREAK
case 3
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_leaves_car)
IF GET_SYNCHRONIZED_SCENE_PHASE(scene_chad_leaves_car) > 0.1
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, scene_chad_leaves_car, "misscarsteal2CHAD_GARAGE", "chad_parking_garage_chad", INSTANT_BLEND_IN, SLOW_BLEND_OUT,SYNCED_SCENE_USE_PHYSICS | SYNCED_SCENE_ON_ABORT_STOP_SCENE | SYNCED_SCENE_ABORT_ON_WEAPON_DAMAGE)
TASK_LOOK_AT_ENTITY(ped[ped_chad].id,player_ped_id(),-1,SLF_EXTEND_YAW_LIMIT)
SET_ENTITY_COLLISION(ped[ped_chad].id,TRUE)
actions[thisi].flag++
ENDIF
ENDIF
ENDIF
break
case 4
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_leaves_car)
IF GET_SYNCHRONIZED_SCENE_PHASE(scene_chad_leaves_car) > 0.87
actions[thisi].completed = TRUE/*
seq()
// TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1307.1735, -216.8293, 50.5498>>,PEDMOVE_RUN,DEFAULT_TIME_BEFORE_WARP,0.2)
TASK_FOLLOW_WAYPOINT_RECORDING(null,"cs2_10",0,EWAYPOINT_START_FROM_CLOSEST_POINT)
TASK_ENTER_VEHICLE(null,vehicle[vehHeist].id)
TASK_VEHICLE_DRIVE_TO_COORD(null,vehicle[vehHeist].id,<<-1263.1799, -307.1262, 36.0240>>,20.0,DRIVINGSTYLE_NORMAL,ztype,DRIVINGMODE_AVOIDCARS_RECKLESS,5.0,5.0)
endseq(ped[ped_chad].id)
actions[thisi].flag++*/
ENDIF
ENDIF
ENDIF
break
case 5
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
actions[thisi].completed = TRUE
ENDIF
break
ENDSWITCH
BREAK
CASE ACT_PREP_STAGE
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(FALSE)
kill_event(EVENTS_KEEP_CHAD_SAFE)
//SET_INITIAL_PLAYER_STATION("RADIO_09_HIPHOP_OLD")
//FREEZE_RADIO_STATION("RADIO_09_HIPHOP_OLD")
//SET_RADIO_AUTO_UNFREEZE(FALSE)
//SET_RADIO_TRACK("RADIO_09_HIPHOP_OLD", "CAR2_RADIO")
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-961.907654,-3006.614502,21.694874>>-<<41.187500,41.500000,11.125000>>,<<-961.907654,-3006.614502,21.694874>>+<<41.187500,41.500000,11.125000>>,false) //airport hanagar
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
DISABLE_CELLPHONE(FALSE)
SET_IGNORE_NO_GPS_FLAG(TRUE)
set_road_blocks(0,15,true)
kill_event(EVENTS_STEALTH_REMOVE_TRAFFIC)
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,FALSE)
SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(1.0)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_chad].id,TRUE)
TASK_LOOK_AT_ENTITY(ped[ped_chad].id,player_ped_id(),-1)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
FREEZE_ENTITY_POSITION(vehicle[vehHeist].id,FALSE)
SET_VEHICLE_ENGINE_ON(vehicle[vehHeist].id,TRUE,TRUE)
SET_VEHICLE_LIGHTS(vehicle[vehHeist].id,NO_VEHICLE_LIGHT_OVERRIDE)
ENDIF
START_AUDIO_SCENE("CAR_2_STEAL_THE_CAR")
actions[thisI].completed = TRUE
BREAK
CASE ACT_STOP_AUDIO_CAR_2_STEAL_THE_CAR
IF DOES_ENTITY_EXIST(ped[ped_chad].id)
IF IS_PED_INJURED(ped[ped_chad].id)
STOP_AUDIO_SCENE("CAR_2_STEAL_THE_CAR")
actions[thisI].completed = TRUE
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehHeist].id)
STOP_AUDIO_SCENE("CAR_2_STEAL_THE_CAR")
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
CASE ACT_START_AUDIO_CAR_2_DRIVE_BACK_TO_GARAGE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehHeist].id)
START_AUDIO_SCENE("CAR_2_DRIVE_BACK_TO_GARAGE")
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
CASE ACT_CHAD_TRIES_TO_CREEP_AWAY
// IF actions[thisI].flag > 0
// IF NOT IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_GARAGE", "chad_parking_garage_handsuploop_chad")
// SET_CONDITION_STATE(COND_CHAD_CAN_RUN,TRUE)
// actions[thisI].completed = TRUE
// ENDIF
// ENDIF
IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
switch actions[thisI].flag
case 0
// seq()
TASK_PLAY_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_GARAGE", "chad_parking_garage_handsuploop_chad",SLOW_BLEND_IN, NORMAL_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING | AF_NOT_INTERRUPTABLE)
// endseq(ped[ped_chad].id)
//actions[thisI].intA = get_Game_timer() + 1000
actions[thisI].flag++
BREAK
case 1
//IF GET_GAME_TIMER() > actions[thisI].intA
//TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_chad].id,player_ped_id(),15000)
seq()
TASK_TURN_PED_TO_FACE_ENTITY(null,player_ped_id(),2000)
TASK_PLAY_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_GARAGE", "chad_parking_garage_handsuploop_chad",SLOW_BLEND_IN, NORMAL_BLEND_OUT,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING | AF_NOT_INTERRUPTABLE)
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null,<<-1310.3997, -218.5188, 50.5498>>,player_ped_id(),pedmove_walk,false)
TASK_TURN_PED_TO_FACE_ENTITY(null,player_ped_id(),-1)
endseq(ped[ped_chad].id)
actions[thisI].intA = get_Game_timer() + 13000
actions[thisI].flag++
//ENDIF
BREAK
case 2
/*IF GET_GAME_TIMER() > actions[thisI].intA
SET_CONDITION_STATE(COND_CHAD_CAN_RUN,TRUE)
actions[thisI].completed = TRUE
actions[thisI].flag++
ENDIF*/
break
case 3
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_chad].id,<<-1287.6219, -251.0352, 46.0453>>) < 2.0
actions[thisI].completed = TRUE
ENDIF
ENDIF
break
endswitch
ELSE
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_CHAD_RUNS_OFF
switch actions[thisI].flag
case 0
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_GARAGE", "chad_parking_garage_handsuploop_chad") //
STOP_ANIM_TASK(ped[ped_chad].id,"misscarsteal2CHAD_GARAGE", "chad_parking_garage_handsuploop_chad")
endif
CLEAR_PED_TASKS(ped[ped_chad].id)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-1287.6219, -251.0352, 46.0453>>,pedmove_run)
TASK_COWER(null,-1)
endseq(ped[ped_chad].id)
actions[thisI].flag++
endif
break
case 1
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_chad].id,<<-1287.6219, -251.0352, 46.0453>>) < 2.0
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_REACTS_TO_PLAYER_IN_CAR
IF NOT IS_PED_INJURED(ped[ped_chad].id)
switch actions[thisI].flag
case 0
seq()
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true)
TASK_PLAY_ANIM(null,"misscarsteal2CHAD_GARAGE", "chad_parking_garage_handsuploop_chad",SLOW_BLEND_IN,SLOW_BLEND_OUT,30000,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
TASK_TURN_PED_TO_FACE_ENTITY(null,player_ped_id(),30000)
endseq(ped[ped_chad].id)
REQUEST_ANIM_DICT("misscarsteal2car_stolen")
actions[thisI].intA = get_game_timer() + 25000
actions[thisI].flag++
break
case 1
IF HAS_ANIM_DICT_LOADED("misscarsteal2car_stolen")
CLEAR_PED_SECONDARY_TASK(ped[ped_chad].id)
seq()
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,true)
TASK_PLAY_ANIM(null,"misscarsteal2car_stolen","chad_car_stolen_reaction",SLOW_BLEND_IN,SLOW_BLEND_OUT,-1)
TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(null,false)
endSeq(ped[ped_chad].id)
actions[thisI].flag++
ENDIF
break
case 2
if GET_SCRIPT_TASK_STATUS( ped[ped_chad].id,script_task_play_anim) = FINISHED_TASK
OR GET_SCRIPT_TASK_STATUS( ped[ped_chad].id,script_task_play_anim) = DORMANT_TASK
actions[thisI].completed = TRUE
endif
break
endswitch
ENDIF
BREAK
case ACT_CHAD_CALLS_COPS
switch actions[thisI].flag
case 0
IF NOT IS_PED_INJURED(ped[ped_chad].id)
TASK_USE_MOBILE_PHONE(ped[ped_chad].id,true)
actions[thisI].flag++
ENDIF
break
case 1
/*
IF IS_DIALOGUE_COMPLETE(DIA_CALL_COPS)
seq()
TASK_USE_MOBILE_PHONE(null,false)
TASK_COWER(null,-1)
endseq(ped[ped_chad].id)
ENDIF
break*/
break
endswitch
break
case ACT_FLY_TO_GARAGE
IF NOT IS_PED_INJURED(ped[ped_pilot].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_PED_IN_VEHICLE(ped[ped_pilot].id, vehicle[vehChopper].id)
TASK_HELI_MISSION(ped[ped_pilot].id, vehicle[vehChopper].id,null,null,<<500.9223, -1314.2908, 73.6306>>,MISSION_GOTO,20,10,0,100,60)
actions[thisI].completed = TRUE
ENDIF
ENDIF
ENDIF
break
CASE ACT_REMOVE_CAR_PARK_ASSETS
int iTemp
repeat COUNT_OF(carParkVehicles) iTemp
SET_VEHICLE_AS_NO_LONGER_NEEDED(carParkVehicles[itemp])
ENDREPEAT
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_postie].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_camper].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_phoneChat].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_vanhide].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_wrong2].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[vehFranklin].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_lean].id)
SET_ped_AS_NO_LONGER_NEEDED(ped[ped_chad].id)
REMOVE_VEHICLE_RECORDING(301,sVehicleRecordingLibrary)
SET_ASSET_STAGE(ASSETS_STAGE_RELEASE_CAR_PARK)
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,TRUE)
actions[thisI].completed = TRUE
BREAK
CASE ACT_SPAWN_SECURITY_GUARD
switch actions[thisI].flag
case 0
IF IS_ASSET_LOADED(ASSET_DEVIN)
ADD_SCENARIO_BLOCKING_AREA(<<-964.12, -2799.27, 13.24>>-<<10,10,10>>,<<-964.12, -2799.27, 13.24>>+<<10,10,10>>)
actions[thisI].flag++
ENDIF
BREAK
CASE 1
ped[ped_cop1].id = CREATE_PED(PEDTYPE_MISSION,S_M_M_Security_01,<<-966.6412, -2800.2471, 12.9648>>, 19.0574)
SET_PED_CAN_EVASIVE_DIVE(ped[ped_cop1].id,false)
actions[thisI].flag++
BREAK
CASE 2
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
//IF DOES_SCENARIO_OF_TYPE_EXIST_IN_AREA(<<-966.2216, -2800.1692, 12.9648>>,"WORLD_HUMAN_GUARD_STAND",3,TRUE)
//TASK_START_SCENARIO_IN_PLACE(ped[ped_cop1].id,"WORLD_HUMAN_GUARD_STAND")
TASK_START_SCENARIO_AT_POSITION(ped[ped_cop1].id,"WORLD_HUMAN_GUARD_STAND",<<-966.9684, -2799.9868, 12.9648>>, 19.0574)
actions[thisI].flag++
//ENDIF
ENDIF
BREAK
CASE 3
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_cop1].id) < 30
TASK_LOOK_AT_ENTITY(ped[ped_cop1].id,player_ped_id(),-1)
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_OPEN_GATES
IF NOT IS_PED_REGISTERED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_IN, PLAYER_PED_ID())
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_IN, PLAYER_PED_ID())
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_SET_UP_DEVIN_LEADIN
switch actions[thisI].flag
case 0
IF IS_ASSET_LOADED(ASSET_DEVIN)
actions[thisI].flag=2
ENDIF
BREAK
CASE 2
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),devinCoord) < 300
actions[thisI].flag=3
endif
BREAK
CASE 3
//IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD( vehicle[vehHeist].id, carDropoffCoord) < 30
intHangar = GET_INTERIOR_AT_COORDS(<<-960.7767, -3016.6912, 12.9451>>)
PIN_INTERIOR_IN_MEMORY(intHangar)
actions[thisI].flag++
BREAK
CASE 4
IF IS_INTERIOR_READY(intHangar)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF CREATE_NPC_PED_ON_FOOT(pedDevin,CHAR_DEVIN,devinCoord,fDevinHeading)
AND CREATE_NPC_PED_ON_FOOT(ped[ped_cop4].id,CHAR_MOLLY,<<-992.12, -3024.18, 12.94>>,42.6)
SET_PED_DEFAULT_COMPONENT_VARIATION(pedDevin)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,2), 0, 0, 0) //(hair)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,3), 1, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,4), 1, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,5), 0, 0, 0) //(hand)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,6), 0, 0, 0) //(feet)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,7), 0, 0, 0) //(teef)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,9), 0, 0, 0) //(task)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,10), 1, 0, 0) //(decl)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,11), 0, 0, 0) //(jbib)
//SET_PED_CONFIG_FLAG(pedDevin, PCF_AlwaysSeeApproachingVehicles,false)
SET_PED_CAN_EVASIVE_DIVE(pedDevin,false)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin,TRUE)
vehicle[vehJet].id = CREATE_VEHICLE(SHAMAL,<<-981.02, -3011.31, 14.55>>,59.25)
SET_VEHICLE_DOORS_LOCKED(vehicle[vehJet].id,VEHICLELOCK_LOCKED)
SET_VEHICLE_LIVERY(vehicle[vehJet].id,1)
iDevinSyncSCene = CREATE_SYNCHRONIZED_SCENE(devinCoord+<<0,0,1>>,<<0,0,fDevinHeading>>)
TASK_SYNCHRONIZED_SCENE (pedDevin, iDevinSyncSCene, "misscarsteal2leadinoutcar_2_mcs_1", "_leadin_loop", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
SET_SYNCHRONIZED_SCENE_LOOPED(iDevinSyncSCene,TRUE)
//create security
ped[ped_cop2].id = create_ped(PEDTYPE_MISSION,S_M_Y_DEVINSEC_01,<<-989.96, -3022.82, 13.91>>,91.12)
ped[ped_cop3].id = create_ped(PEDTYPE_MISSION,S_M_Y_DEVINSEC_01,<<-990.51, -3023.46, 13.93>>,11.9)
GIVE_WEAPON_TO_PED(ped[ped_cop2].id,WEAPONTYPE_MICROSMG,1000)
GIVE_WEAPON_TO_PED(ped[ped_cop3].id,WEAPONTYPE_MICROSMG,1000)
SET_PED_PROP_INDEX(ped[ped_cop4].id, ANCHOR_EYES, 0, 0)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_cop2].id)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,11), 0, 0, 0) //(jbib)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_cop3].id)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,0), 1, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,11), 0, 0, 0) //(jbib)
TASK_START_SCENARIO_IN_PLACE(ped[ped_cop2].id,"WORLD_HUMAN_GUARD_STAND")
TASK_START_SCENARIO_IN_PLACE(ped[ped_cop3].id,"WORLD_HUMAN_GUARD_STAND")
TASK_START_SCENARIO_IN_PLACE(ped[ped_cop4].id,"WORLD_HUMAN_STAND_MOBILE_UPRIGHT")
SET_PED_CAN_EVASIVE_DIVE(ped[ped_cop2].id,false)
SET_PED_CAN_EVASIVE_DIVE(ped[ped_cop3].id,false)
SET_PED_CAN_EVASIVE_DIVE(ped[ped_cop4].id,false)
vehicle[vehSec1].id = CREATE_VEHICLE(TAILGATER,<<-984.58, -2998.80, 13.58>>,22.68)
vehicle[vehSec2].id = CREATE_VEHICLE(TAILGATER,<<-992.74, -3031.48, 13.58>>,18.53)
vehicle[vehSec3].id = CREATE_VEHICLE(TAILGATER,<<-990.95, -2997.46, 13.56>>,24.38)
SET_FORCE_HD_VEHICLE(vehicle[vehSec1].id,TRUE)
SET_FORCE_HD_VEHICLE(vehicle[vehSec3].id,true)
IF missionProgress = STAGE_FINAL_CUT
actions[thisI].completed = TRUE
ELSE
actions[thisI].flag++
ENDIF
ENDIF
ENDIF
//endif
endif
break
case 5
//IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<482.108490,-1312.055298,27.827969>>, <<482.908966,-1313.624878,30.640469>>, 0.937500)
//actions[thisI].flag=5
//ENDIF
//
//IF DOOR_SYSTEM_GET_OPEN_RATIO(ENUM_TO_INT(DOORHASH_CARSTEAL_GARAGE_F)) > 0.5
//actions[thisI].flag=5
//ENDIF
IF IS_CONDITION_TRUE(COND_STOP_FOR_CORRECT)
AND NOT IS_CONDITION_TRUE(COND_WANTED)
actions[thisI].flag=6
ENDIF
//if car not outside or inside garage
/* IF car is outside or inside garage
IF IS_ENTITY_IN_ANGLED_AREA() //car outside garage, player inside
IF player in garage
actions[thisI].flag = 2
endif
ENDIF
IF garage door opening
actions[thisI].flag = 2
endif
endif*/
//ENDIF
////cprintln(debug_Trevor3,"F: ",DOOR_SYSTEM_GET_OPEN_RATIO(ENUM_TO_INT(DOORHASH_CARSTEAL_GARAGE_F)) )
////cprintln(debug_Trevor3,"S: ",DOOR_SYSTEM_GET_OPEN_RATIO(ENUM_TO_INT(DOORHASH_CARSTEAL_GARAGE_S)) )
BREAK
case 6
IF NOT IS_PED_INJURED(pedDevin)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_VEHICLE_DOORS_LOCKED(vehicle[vehHeist].id,VEHICLELOCK_LOCKED_PLAYER_INSIDE)
ENDIF
IF ( GET_FOLLOW_VEHICLE_CAM_VIEW_MODE() != CAM_VIEW_MODE_FIRST_PERSON )
SET_GAMEPLAY_ENTITY_HINT(pedDevin,<<0,0,0.5>>,TRUE, -1, 7000)
SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(0.510)
SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(0.4)
SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET(0)
SET_GAMEPLAY_HINT_FOV(35.00)
ENDIF
iDevinSyncSCeneB = CREATE_SYNCHRONIZED_SCENE(devinCoord+<<0,0,1>>,<<0,0,fDevinHeading>>)
TASK_SYNCHRONIZED_SCENE (pedDevin, iDevinSyncSCeneB, "misscarsteal2leadinoutcar_2_mcs_1", "_leadin_action", SLOW_BLEND_IN, INSTANT_BLEND_OUT )
actions[thisI].flag++
ENDIF
break
case 7
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CAR2_MCS1_LI",0,pedDevin,"Devin")
SET_PLAYER_CONTROL(player_id(),FALSE,SPC_LEAVE_CAMERA_CONTROL_ON)
actions[thisI].flag++
actions[thisI].inta = GET_GAME_TIMER() + 2000
ENDIF
break
case 8
//IF IS_SYNCHRONIZED_SCENE_RUNNING(iDevinSyncSCeneB)
//IF GET_SYNCHRONIZED_SCENE_PHASE(iDevinSyncSCeneB) > 0.8
IF GET_GAME_TIMER() > actions[thisI].inta
seq()
TASK_LEAVE_ANY_VEHICLE(null)
TASK_TURN_PED_TO_FACE_ENTITY(null,pedDevin,-1)
endseq(player_ped_id())
actions[thisI].flag++
endif
break
ENDSWITCH
BREAK
CASE ACT_CONTROL_CHOPPER
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
AND NOT IS_PED_INJURED(ped[ped_pilot].id)
switch actions[thisI].flag
case 0
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,FALSE)
TASK_HELI_MISSION(ped[ped_pilot].id, vehicle[vehChopper].id,null,null,<<-1316.7277, -233.5309, 53.7461>>,MISSION_GOTO,4,3,-54,20,20)
actions[thisI].flag++
BREAK
case 1
IF IS_CONDITION_TRUE(COND_CHAD_PLAYER_100m_FROM_CAR_PARK)
TASK_HELI_MISSION(ped[ped_pilot].id, vehicle[vehChopper].id,null,null,<<-1067.6364, -2946.3630, 70.9524>>,MISSION_GOTO,20,10,0,100,60)
actions[thisI].completed = TRUE
ENDIF
break
ENDSWITCH
ENDIF
BREAK
CASE ACT_STOP_ZTYPE_IN_HANGAR
IF actions[thisI].flag = 0
TRIGGER_MUSIC_EVENT("CAR2_STOP")
actions[thisI].flag = 1
ENDIF
IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehicle[vehHeist].id,6.0,2)
FORCE_INSTRUCTION_STATE(3,INS_DRIVE_TO_DESTINATION)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
REPLAY_RECORD_BACK_FOR_TIME(10.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_RETURN_CONTROL_TO_PLAYER
IF NOT actions[thisI].completed
// SET_PLAYER_CONTROL(player_id(),TRUE)
// actions[thisI].completed = TRUE
IF IS_PLAYER_PRESSING_A_CONTROL_BUTTON()
CLEAR_PED_TASKS(player_ped_id())
SET_PLAYER_CONTROL(player_id(),TRUE)
actions[thisI].completed = TRUE
ENDIF
ENDIF
BREAK
CASE ACT_STAT_CS2_SCANMAN
IF NOT IS_CONDITION_TRUE(COND_SEE_WANKER)
AND NOT IS_CONDITION_TRUE(COND_SEE_FIXING_MAN)
AND NOT IS_CONDITION_TRUE(COND_SEE_LEANING_MAN)
AND NOT IS_CONDITION_TRUE(COND_SEE_PHONE_CAR_MAN)
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(CS2_SCANMAN)
ENDIF
actions[thisI].completed = TRUE
BREAK
case ACT_LOAD_END_CUTSCENE
switch actions[thisI].flag
case 0
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),devinCoord) < DEFAULT_CUTSCENE_LOAD_DIST
IF NOT IS_PED_INJURED(pedDevin)
AND NOT IS_PED_INJURED(ped[ped_cop2].id)
AND NOT IS_PED_INJURED(ped[ped_cop3].id)
//cprintln(debug_trevor3,"REQUEST CUT A")
//REQUEST_CUTSCENE("Car_2_mcs_1")
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("Car_2_mcs_1", CS_SECTION_2)
ENDIF
actions[thisI].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(pedDevin)
AND NOT IS_PED_INJURED(ped[ped_cop2].id)
AND NOT IS_PED_INJURED(ped[ped_cop3].id)
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
//cprintln(debug_trevor3,"CUT A")
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Devin",pedDevin)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Franklin", PLAYER_PED_ID())
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Car_2_Security", ped[ped_cop2].id)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Car_2_Security^1", ped[ped_cop3].id)
ENDIF
ENDIF
IF HAS_CUTSCENE_LOADED()
actions[thisI].flag++
ENDIF
BREAK
CASE 2
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),devinCoord) > DEFAULT_CUTSCENE_LOAD_DIST + 100
REMOVE_CUTSCENE()
actions[thisI].flag = 0
ENDIF
BREAK
ENDSWITCH
break
CASE ACT_MAKE_PLAYER_WALK
SWITCH actions[thisI].flag
CASE 0
IF IS_CUTSCENE_PLAYING()
actions[thisI].flag++
ENDIF
BREAK
CASE 1
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") OR HAS_CUTSCENE_FINISHED() //for shit skip to this stage
IF NOT IS_CUTSCENE_PLAYING() //if player shit skipped here
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK)
ELSE
FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT)
ENDIF
SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK)
//TASK_GO_STRAIGHT_TO_COORD(PLAYER_PED_ID(),<< -1123.6796, -1596.0865, 3.3602 >>,pedmove_run)
actions[thisI].flag=2
actions[thisI].intA = GET_GAME_TIMER() + 1000
ENDIF
BREAK
CASE 2
if GET_GAME_TIMER() < actions[thisI].intA
SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK)
ELSE
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE ACT_OPEN_EXIT_GATE
IF NOT IS_PED_REGISTERED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_OUT, PLAYER_PED_ID())
REGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_OUT, PLAYER_PED_ID())
actions[thisI].completed = TRUE
ENDIF
BREAK
CASE ACT_TURN_PLANE_ENGINE_ON
IF IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_VEHICLE_ENGINE_ON(vehicle[vehJet].id,TRUE,FALSE)
actions[thisI].completed = TRUE
ENDIF
BREAK
ENDSWITCH
IF actions[thisI].flag = CLEANUP
actions[thisI].completed = TRUE
actions[thisI].flag = 0
actions[thisI].active = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
PROC ACTION_ON_DIALOGUE(int thisI, enumActions thisAction, int diaEntry, enumDialogue thisDia)
IF actions[thisI].action != thisAction
OR actions[thisI].active = FALSE
actions[thisI].action = thisAction
actions[thisI].active = TRUE
actions[thisI].completed = FALSE
actions[thisI].flag = 0
actions[thisI].ongoing = FALSE
actions[thisI].needsCleanup = FALSE
actions[thisI].intA = 0
ENDIF
IF actions[thisI].completed = FALSE
IF dia[diaEntry].bCompleted
thisDia=thisDia
action(thisI,thisAction)
ENDIF
ENDIF
ENDPROC
PROC RESET_ACTIONS(enumActions persistThisAction=ACT_NULL)
int i
REPEAT COUNT_OF(actions) i
IF actions[i].action != persistThisAction
OR actions[i].action = ACT_NULL
//tell action to play its cleanup flag
IF actions[i].needsCleanup
actions[i].active = TRUE
actions[i].flag = CLEANUP
ACTION(i,actions[i].action)
ENDIF
//reset action
actions[i].action = ACT_NULL
actions[i].active = FALSE
actions[i].ongoing = FALSE
actions[i].completed = FALSE
actions[i].flag = 0
actions[i].needsCleanup = FALSE
actions[i].intA = 0
actions[i].intB = 0
actions[i].trackCondition = FALSE
actions[i].floatA = 0
ENDIF
ENDREPEAT
ENDPROC
// ================================================ SETUP Instructions ========================================
PROC RESET_INSTRUCTIONS()
int i
REPEAT COUNT_OF(instr) i
instr[i].ins = INS_NULL
instr[i].bCompleted = FALSE
instr[i].flag = 0
instr[i].intA = 0
ENDREPEAT
ENDPROC
PROC SET_INSTRUCTION_FLAG(int thisI, enumInstructions thisInstruction, int iFlagValue)
IF instr[thisI].ins = thisInstruction
instr[thisI].flag = iFlagValue
ELSE
IF instr[thisI].ins != INS_NULL
TEXT_LABEL_63 txt
txt = ""
txt += "IS_INS_COM() fail:"
txt += GET_INSTRUCTION_STRING(thisInstruction)
SCRIPT_ASSERT(txt)
//cprintln(debug_trevor3,"FAIL: instr[thisI].ins = ",GET_INSTRUCTION_STRING(instr[thisI].ins))
ENDIF
ENDIF
ENDPROC
FUNC INT GET_INSTRUCTION_FLAG(int thisI, enumInstructions thisInstruction)
IF instr[thisI].ins = thisInstruction
RETURN instr[thisI].flag
ELSE
IF instr[thisI].ins != INS_NULL
TEXT_LABEL_63 txt
txt = ""
txt += "IS_INS_COM() fail:"
txt += GET_INSTRUCTION_STRING(thisInstruction)
SCRIPT_ASSERT(txt)
//cprintln(debug_trevor3,"FAIL: instr[thisI].ins = ",GET_INSTRUCTION_STRING(instr[thisI].ins))
ENDIF
ENDIF
RETURN 0
ENDFUNC
PROC FORCE_DIALOGUE_STATE(int thisI, enumDialogue thisDialogue, bool setCompleted=TRUE)
dia[thisI].bCompleted = setCompleted
dia[thisI].dial = thisDialogue
ENDPROC
FUNC BOOL IS_INSTRUCTION_COMPLETE(int thisI, enumInstructions thisInstruction)
IF instr[thisI].ins = thisInstruction
IF instr[thisI].bCompleted
RETURN TRUE
ENDIF
ELSE
IF instr[thisI].ins != INS_NULL
TEXT_LABEL_63 txt
txt = ""
txt += "IS_INS_COM() fail:"
txt += GET_INSTRUCTION_STRING(thisInstruction)
SCRIPT_ASSERT(txt)
//cprintln(debug_trevor3,"FAIL: instr[thisI].ins = ",GET_INSTRUCTION_STRING(instr[thisI].ins))
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
//======== dialogue =================
PROC RESET_DIALOGUE()
int i
REPEAT COUNT_OF(dia) i
dia[i].dial = DIA_NULL
dia[i].bCompleted = FALSE
dia[i].bStarted = FALSE
dia[i].flag = 0
dia[i].intA = 0
ENDREPEAT
ENDPROC
FUNC BOOL IS_DIALOGUE_COMPLETE(int iEntry, enumDialogue thisDia)
IF dia[iEntry].dial = thisDia
IF dia[iEntry].bCompleted
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
// =================================================== MAIN PROCS START HERE ========================================
func bool isalive(int pedID)
if not IS_PED_INJURED(ped[pedID].id)
return TRUE
ENDIF
return FALSE
ENDFUNC
bool bDisplayBeam
//check if a sync scene is in view
// ********************************** overhear scene audio from chopper ****************************************
enum scene_ID
scene_mugging,
scene_chadgirl
endenum
struct sceneAudioStruct
bool active
vector location
int line = -1
endstruct
sceneAudioStruct sceneAudio[2]
FUNC int get_start_line(scene_ID thisScene)
int iReturnLine = -1
int ij
float fTimings[24]
float fSyncTime = -1.0
int iLastLine = -1
repeat count_of(fTimings) ij
fTimings[ij] = 0
ENDREPEAT
switch thisScene
case scene_mugging
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneId[1])
fSyncTime= GET_SYNCHRONIZED_SCENE_PHASE(sceneId[1])
fTimings[0] = 0.191
fTimings[1] = 0.21
fTimings[2] = 0.23
fTimings[3] = 0.25
fTimings[4] = 0.3
fTimings[5] = 0.334
fTimings[6] = 0.363
fTimings[7] = 0.391
fTimings[8] = 0.417
ENDIF
iLastLine = 8
break
case scene_chadgirl
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneId[3])
fSyncTime= GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3])
fTimings[0] = 0.1 //I know you're going off to work with all those pretty woman...but.
fTimings[1] = 0.15 //Mhmm. At the brothel.
fTimings[2] = 0.175 //You can't be thinking about any of them but me.
fTimings[3] = 0.21 //I'll see you later okay? I love you.
fTimings[4] = 0.241 //Okay...wait...no come back...
fTimings[5] = 0.284 //Tell me something nice about myself.
fTimings[6] = 0.319 //Your eyes almost go together perfectly...Almost
fTimings[7] = 0.37 //Thats...thats all you got?
fTimings[8] = 0.42 //I love you.
fTimings[9] = 0.46 //But just wait...Make it a little...say that with a smile.
fTimings[10] = 0.522 //You look like my Grandma did in 1920. I love you
fTimings[11] = 0.567 //I dont know what to make of that one but....
fTimings[12] = 0.614 //I really appreciate the thought.
fTimings[13] = 0.65 //Okay.
fTimings[14] = 0.68 //Okay.
fTimings[15] = 0.73 //Alright.
fTimings[16] = 0.76 //Alright.
fTimings[17] = 0.794 //Come here. 0.794
fTimings[18] = 0.821 //See you later alright?
fTimings[19] = 0.85 //Have a great day.
fTimings[20] = 0.868 //Take it easy baby.
fTimings[21] = 0.89 //Okay
fTimings[22] = 0.931//Keep it tight.
fTimings[23] = 0.956 //Eeeww. Get the fuck out of here. Jerk.
ENDIF
iLastLine = 23
break
endswitch
repeat count_of(fTimings) ij
IF fTimings[ij] != 0 OR (ij = 0)
IF fSyncTime >= fTimings[ij]
and fSyncTime <= fTimings[ij] + 0.02
iReturnLine = ij
ENDIF
ENDIF
ENDREPEAT
IF iLastLine = -1
SCRIPT_ASSERT("get_start_line() iLastLine not set")
return -1
ENDIF
IF fSyncTime = -1.0
return -1
ENDIF
IF fSyncTime > fTimings[iLastLine] + 0.02
return -2 //the dialogue can no longer play
ELSE
return iReturnLine
ENDIF
endfunc
func int get_scene_index(scene_ID thisScene)
switch thisScene
case scene_mugging
return 0
break
case scene_chadgirl
return 1
break
ENDSWITCH
SCRIPT_ASSERT("get_scene_index() : scene not assigned here")
return 0
endfunc
func text_label_23 buildConvLine(string convRoot,int iLineToStartAt)
text_label_23 txt = ""
txt += convRoot
txt += "_"
txt += iLineToStartAt
return txt
endfunc
func bool has_scene_audio_finished(scene_ID thisScene)
if get_start_line(thisScene) = -2
return true
endif
return FALSE
endfunc
//AUDIO FOR SCENES HEARD THROUGH CHOPPER CAM
vector chopperListeningLoc[7]
FUNC INT ADD_CHOPPER_LISTENING_LOCATION(int iEntry, vector vLocation)
chopperListeningLoc[iEntry] = vLocation
RETURN iEntry
ENDFUNC
PROC REMOVE_CHOPPER_LISTENING_LOCATION(int iEntry)
chopperListeningLoc[iEntry] = <<0,0,0>>
ENDPROC
PROC CHOPPER_LISTENING()
IF IS_HELIHUD_ACTIVE(HUD)
DISABLE_REPLAY_RECORDING_UI_THIS_FRAME() //B* 2446396
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_SCRIPT_RB)
IF currentConvType = CONVTYPE_CHOPPER_CAM
IF listenDialogue != -1
IF missionProgress < STAGE_CHASE_BEGINS
IF NOT IS_BIT_SET(iStoreStatBit,listenDialogue)
//cprintln(debug_Trevor3,"CONVO STAT: ",listenDialogue)
SET_BIT(iStoreStatBit,listenDialogue)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_EAVESDROPPER)
ENDIF
ELSE
IF NOT IS_BIT_SET(iStoreStatBit,listenDialogue+7)
SET_BIT(iStoreStatBit,listenDialogue+7)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_EAVESDROPPER)
//cprintln(debug_Trevor3,"CONVO STAT: ",listenDialogue)
ENDIF
ENDIF
ENDIF
IF NOT bWaveformDisplayingLoud
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_AUDIO_STATES")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(false)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(false)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(true)
END_SCALEFORM_MOVIE_METHOD()
bWaveformDisplayingQuiet = FALSE
bWaveformDisplayingLoud = TRUE
ENDIF
ENDIF
If NOT bWaveformDisplayingQuiet
IF currentConvType != CONVTYPE_CHOPPER_CAM
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_AUDIO_STATES")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(false)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(true)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(false)
END_SCALEFORM_MOVIE_METHOD()
bWaveformDisplayingQuiet = TRUE
bWaveformDisplayingLoud = FALSE
ENDIF
ENDIF
IF StaticSoundID = -1
StaticSoundID = GET_SOUND_ID()
PLAY_SOUND_FRONTEND(StaticSoundID,"Microphone","POLICE_CHOPPER_CAM_SOUNDS")
START_AUDIO_SCENE("CAR_2_USE_MICROPHONE")
ENDIF
int j
// vector vPoint
// float fDistToDialogue
float fStaticVolume
float closestListenerRange = 1000000
listenDialogue = -1
int bestListenLoc
int ListenCount
REPEAT COUNT_OF(chopperListeningLoc) j
//vector vExtended = HUD.vAimAt + ((HUD.vAimAt - GET_ENTITY_COORDS(HUD.vehChopper,FALSE)) * 10.0)
//GET_CLOSEST_POINT_ON_LINE(vPoint,chopperListeningLoc[j],GET_ENTITY_COORDS(HUD.vehChopper,FALSE),vExtended)
IF NOT IS_VECTOR_ZERO(chopperListeningLoc[j])
IF IS_SPHERE_VISIBLE(chopperListeningLoc[j],5)
IF HUD.fFOV < 15
int xi,yi
ListenCount = 0
for xi = -1 to 1
for yi = -1 to 1
IF IS_SPHERE_VISIBLE(chopperListeningLoc[j]+<<xi * 15, 0, yi*15>>,5)
ListenCount++
ENDIF
endfor
endfor
If ListenCount > bestListenLoc
listenDialogue = j
bestListenLoc = ListenCount
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
IF closestListenerRange != 1000000
fStaticVolume = closestListenerRange/20.0
ELSE
fStaticVolume = 1.0
ENDIF
//float fDistToDialogue = GET_DISTANCE_BETWEEN_COORDS(vPoint,chopperListeningLoc[j])
clamp(fStaticVolume,0,1)
SET_VARIABLE_ON_SOUND(StaticSoundID,"Ctrl", fStaticVolume)
ELSE
If bWaveformDisplayingLoud
OR bWaveformDisplayingQuiet
BEGIN_SCALEFORM_MOVIE_METHOD(mov,"SET_AUDIO_STATES")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(true)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(false)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(false)
END_SCALEFORM_MOVIE_METHOD()
bWaveformDisplayingLoud = FALSE
bWaveformDisplayingQuiet = FALSE
ENDIF
If currentConvType = CONVTYPE_CHOPPER_CAM
cprintln(debug_trevor3,"kill conv H ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
currentConvType = CONVTYPE_NULL
ENDIF
IF StaticSoundID != -1
STOP_SOUND(StaticSoundID)
STOP_AUDIO_SCENE("CAR_2_USE_MICROPHONE")
StaticSoundID = -1
ENDIF
listenDialogue = -1
ENDIF
ELSE
IF StaticSoundID != -1
STOP_SOUND(StaticSoundID)
STOP_AUDIO_SCENE("CAR_2_USE_MICROPHONE")
StaticSoundID = -1
ENDIF
ENDIF
ENDPROC
PROC play_scene_audio(scene_ID thisScene)
int scene = get_scene_index(thisScene)
bool sceneIsActive = FALSE
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_SCRIPT_RB)
IF StaticSoundID = -1
StaticSoundID = GET_SOUND_ID()
PLAY_SOUND_FRONTEND(StaticSoundID,"Microphone","POLICE_CHOPPER_CAM_SOUNDS")
ENDIF
float fDistToDialogue = GET_DISTANCE_BETWEEN_COORDS(HUD.vAimAt,sceneAudio[scene].location)
float zoomStaticVolumeAdjust = hud.fFOV / 20
float fStaticVolume = 0.0 + (fDistToDialogue/20.0) + zoomStaticVolumeAdjust
clamp(fStaticVolume,0,1)
SET_VARIABLE_ON_SOUND(StaticSoundID,"Ctrl", fStaticVolume)
if hud.fFOV < 13.4
if fDistToDialogue < 20.0
IF NOT sceneAudio[scene].active
IF currentConvType = CONVTYPE_CHOPPER_CAM
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
KILL_ANY_CONVERSATION()
ENDIF
sceneAudio[scene].active = TRUE
sceneIsActive = TRUE
ELSE
sceneIsActive = TRUE
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
//find line to start dialogue
int iLineToStartAt
iLineToStartAt = get_start_line(thisScene)
IF iLineToStartAt > sceneAudio[scene].line
TEXT_LABEL_23 convLine
convLine = ""
switch thisScene
case scene_mugging
convLine = buildConvLine("CAR_2_IG_4",iLineToStartAt+1)
If PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"CAR_2_IG_4",convLine,5,ped[ped_mugger].id,"cs2_mugger")
//if CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA("CAR_2_IG_4",convLine,5,ped[ped_mugger].id,"cs2_mugger")
sceneAudio[scene].active = TRUE
sceneIsActive = TRUE
ENDIf
break
case scene_chadgirl
convLine = buildConvLine("CAR_2_IG_7",iLineToStartAt+1)
if PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"CAR_2_IG_7",convLine,3,ped[ped_chad].id,"Chad",4,ped[ped_chadGirl].id,"cs2_girlfriend")
sceneAudio[scene].active = TRUE
sceneIsActive = TRUE
ENDIf
break
ENDSWITCH
endif
endif
ENDIF
endif
ENDIF
ELSE
IF StaticSoundID != -1
STOP_SOUND(StaticSoundID)
StaticSoundID = -1
ENDIF
ENDIF
//track dialogue
switch thisScene
case scene_mugging
IF IS_CONV_ROOT_PLAYING("CAR_2_IG_4")
sceneAudio[scene].line = GET_CURRENT_SCRIPTED_CONVERSATION_LINE()
ENDIF
break
case scene_chadgirl
IF IS_CONV_ROOT_PLAYING("CAR_2_IG_7")
sceneAudio[scene].line = GET_CURRENT_SCRIPTED_CONVERSATION_LINE()
ENDIF
break
ENDSWITCH
IF NOT sceneIsActive
IF sceneAudio[scene].active
sceneAudio[scene].active = FALSE
IF currentConvType = CONVTYPE_CHOPPER_CAM
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
ENDIF
ENDIF
ENDIF
ENDPROC
float fSpeed
proc SET_CHOPPER_TO_TARGET(vector vTarget, vector vRotation, float maxSpeed=12.0)
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
vector vPos = GET_ENTITY_COORDS(vehicle[vehChopper].id)
vector vPosDiff = vTarget - vPos
float ftargetSpeed = CLAMP(GET_DISTANCE_BETWEEN_COORDS(vTarget,vPos) / 12.0,maxSpeed*-1.0,maxSpeed)
fSpeed += (ftargetSpeed-fSpeed)*TIMESTEP()
vPosDiff = GET_VECTOR_OF_LENGTH(vPosDiff,fSpeed)
SET_ENTITY_VELOCITY(vehicle[vehChopper].id,vPosDiff)
vector vDiff
if IS_VECTOR_ZERO(vRotation)
float rotFromVel = GET_HEADING_FROM_VECTOR_2D(vPosDiff.x,vPosDiff.y)
vector vrotFromVel = <<0,0,rotFromVel>>
//vector vChopperRot = GET_ENTITY_ROTATION(vehicle[vehChopper].id)
vDiff = vrotFromVel-GET_ENTITY_ROTATION(vehicle[vehChopper].id)
if vDiff.x < -180.0 vDiff.x += 360.0 ENDIF
if vDiff.x > 180.0 vDiff.x -= 360.0 ENDIF
if vDiff.y < -180.0 vDiff.y += 360.0 ENDIF
if vDiff.y > 180.0 vDiff.y -= 360.0 ENDIF
if vDiff.z < -180.0 vDiff.z += 360.0 ENDIF
if vDiff.z > 180.0 vDiff.z -= 360.0 ENDIF
SET_ENTITY_ROTATION(vehicle[vehChopper].id,GET_ENTITY_ROTATION(vehicle[vehChopper].id)+(vDiff*TIMESTEP()))
ELSE
vDiff = vRotation-GET_ENTITY_ROTATION(vehicle[vehChopper].id)
if vDiff.x < -180.0 vDiff.x += 360.0 ENDIF
if vDiff.x > 180.0 vDiff.x -= 360.0 ENDIF
if vDiff.y < -180.0 vDiff.y += 360.0 ENDIF
if vDiff.y > 180.0 vDiff.y -= 360.0 ENDIF
if vDiff.z < -180.0 vDiff.z += 360.0 ENDIF
if vDiff.z > 180.0 vDiff.z -= 360.0 ENDIF
SET_ENTITY_ROTATION(vehicle[vehChopper].id,GET_ENTITY_ROTATION(vehicle[vehChopper].id)+(vDiff*TIMESTEP()))
ENDIF
ENDIF
ENDPROC
proc set_bezier_node(bezier &aBez, float time, vector vPos, vector vControl, vector Rot)
aBez.fTime = time
aBez.vPos = vpos
aBez.vcontrol = vControl
aBez.Rot = rot
endproc
proc getBezCoord(float time, bezier bez1, bezier bez2, vector &vReturn) //vector v0, vector v1, vector v2, vector v3, float t)
//outputDebugVector("v0:",bez1.vPos)
//outputDebugVector("v1:",bez2.vPos)
vector v0,v1,v2,v3,vR
float t=time-to_float(floor(time))
if not are_vectors_equal(bez1.vpos,bez2.vpos)
v0 = bez1.vPos
v1 = bez1.vPos + bez1.vControl //bezVcontrol[bezNode]
v2 = bez2.vPos - bez2.vControl
v3 = bez2.vPos
vR.x = (((1-t)*(1-t)*(1-t))*v0.x) + (3*((1-t)*(1-t))*t*v1.x) + (3*(1-t)*(t*t)*v2.x) + ((t*t*t)*v3.x)
vR.y = (((1-t)*(1-t)*(1-t))*v0.y) + (3*((1-t)*(1-t))*t*v1.y) + (3*(1-t)*(t*t)*v2.y) + ((t*t*t)*v3.y)
vR.z = (((1-t)*(1-t)*(1-t))*v0.z) + (3*((1-t)*(1-t))*t*v1.z) + (3*(1-t)*(t*t)*v2.z) + ((t*t*t)*v3.z)
vReturn = vR
ELSE
vReturn = bez1.vpos
ENDIF
endproc
proc GET_BEZIER_ROT(float fT, bezier bez1, bezier bez2, vector &vReturn)
float t=ft-to_float(floor(ft))
vector fr0,fr1,fr2,fr3
vector nc1
float rDamp=0.3
float fFactorLength = 1.0
fr0 = bez1.rot
fr3 = bez2.rot
Nc1 = ((bez2.rot - bez1.rot) / 2.0) //+ (bezRot[node] - bezRot[node+1])
fr2 = fr3 - (Nc1 * rDamp)
fr1 = fr0 + ((((bez2.rot - bez1.rot)*2.0) - Nc1) * rDamp * fFactorLength)
vReturn = (((1-t)*(1-t)*(1-t))*fr0) + (3*((1-t)*(1-t))*t*fr1) + (3*(1-t)*(t*t)*fr2) + ((t*t*t)*fr3)
ENDPROC
int iEntry=0
proc add_to_vehicle_recorder(int recording=-1, int iStartTime=0, MODEL_NAMES modelName=DUMMY_MODEL_FOR_SCRIPT, bool bIsHeistCar=FALSE, bool bIsChaseCar=FALSE)
recordingData[iEntry].model = modelName
recordingData[iEntry].startPlaybackTime = iStartTime
recordingData[iEntry].isHeistCar = bIsHeistCar
recordingData[iEntry].isChaseCar = bIsChaseCar
recordingData[iEntry].recording=recording
iEntry++
ENDPROC
proc prepCarRecData()
add_to_vehicle_recorder(400,0,ztype,true,FALSE)
add_to_vehicle_recorder(401,25200,ztype,true,FALSE)
add_to_vehicle_recorder(402,44199,ztype,true,FALSE)
add_to_vehicle_recorder(3,1495,futo)
add_to_vehicle_recorder(4,1500,sentinel)
add_to_vehicle_recorder(5,2000,bison)
add_to_vehicle_recorder(6,1517,baller)
add_to_vehicle_recorder(7,0,sentinel)
add_to_vehicle_recorder(8,3494,sentinel)
add_to_vehicle_recorder(9,4555,GRESLEY)
add_to_vehicle_recorder(10,7849,bison)
add_to_vehicle_recorder(11,4765,boxville2)
add_to_vehicle_recorder(12,12735,sentinel)
add_to_vehicle_recorder(13,11335,baller)
add_to_vehicle_recorder(14,12165,bison)
add_to_vehicle_recorder(15,10775,bus)
add_to_vehicle_recorder(16,770,sentinel)
add_to_vehicle_recorder(17,4245,GRESLEY)
add_to_vehicle_recorder(18,9620,futo)
add_to_vehicle_recorder(19,12525,bison)
add_to_vehicle_recorder(20,16675,sentinel)
add_to_vehicle_recorder(21,5000,GRESLEY)
add_to_vehicle_recorder(22,6986,futo)
add_to_vehicle_recorder(23,5535,sentinel)
add_to_vehicle_recorder(24,31515,sentinel)
add_to_vehicle_recorder(25,33480,futo)
add_to_vehicle_recorder(26,26530,bus)
add_to_vehicle_recorder(27,29065,GRESLEY)
add_to_vehicle_recorder(28,28000,baller)
add_to_vehicle_recorder(29,29708,boxville2)
add_to_vehicle_recorder(30,32755,sentinel)
add_to_vehicle_recorder(31,49000,sentinel)
add_to_vehicle_recorder(32,26918,benson)
add_to_vehicle_recorder(33,40450,futo)
add_to_vehicle_recorder(34,43000,granger)
add_to_vehicle_recorder(35,41520,sentinel)
add_to_vehicle_recorder(36,45560,sentinel)
add_to_vehicle_recorder(37,34500,sentinel)
add_to_vehicle_recorder(39,52835,benson)
add_to_vehicle_recorder(40,51905,sentinel)
add_to_vehicle_recorder(41,51850,granger)
add_to_vehicle_recorder(42,51000,granger)
add_to_vehicle_recorder(43,54000,boxville2)
add_to_vehicle_recorder(44,54250,baller)
add_to_vehicle_recorder(45,54750,futo) //crossing
add_to_vehicle_recorder(46,51600,sentinel) //test
add_to_vehicle_recorder(47,53320,benson)
add_to_vehicle_recorder(48,53390,sentinel)
add_to_vehicle_recorder(49,65630,bus)
add_to_vehicle_recorder(50,65475,bus)
add_to_vehicle_recorder(51,65100,GRESLEY)
add_to_vehicle_recorder(52,65895,sentinel)
add_to_vehicle_recorder(53,64880,baller)
add_to_vehicle_recorder(54,65720,baller)
add_to_vehicle_recorder(55,65950,futo)
add_to_vehicle_recorder(56,65785,boxville2)
add_to_vehicle_recorder(57,71795,granger)
add_to_vehicle_recorder(58,69245,sentinel)
add_to_vehicle_recorder(59,75870,sentinel)
add_to_vehicle_recorder(60,78885,bus)
add_to_vehicle_recorder(61,78480,baller)
add_to_vehicle_recorder(62,80050,baller)
add_to_vehicle_recorder(63,79685,futo)
add_to_vehicle_recorder(64,76030,bus)
add_to_vehicle_recorder(65,76463,GRESLEY)
add_to_vehicle_recorder(66,77085,futo)
add_to_vehicle_recorder(67,80240,futo)
add_to_vehicle_recorder(68,94190,sentinel)
add_to_vehicle_recorder(69,89525,bus)
add_to_vehicle_recorder(70,89525,bison)
add_to_vehicle_recorder(71,94110,boxville2)
add_to_vehicle_recorder(100,6500,buffalo2,FALSE,true)
ENDPROC
bool bRecordingsLoaded
func bool loadCarRecData()
// //cprintln(debug_trevor3,"load car recs")
int i
if not is_ped_injured(ped[ped_chad].id)
if (missionProgress > STAGE_APPROACH_SCAN_AREA_THREE AND missionProgress < STAGE_CARPARK)
OR (missionProgress = STAGE_APPROACH_SCAN_AREA_THREE AND IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad"))
// //cprintln(debug_trevor3,"a")
if bRecordingsLoaded = FALSE
cprintln(debug_trevor3,"Load veh recordings")
REPEAT COUNT_OF(recordingData) i
If i >= 0
// //cprintln(debug_trevor3,"aaa",i)
IF recordingData[i].Recording >= 1
REQUEST_VEHICLE_RECORDING(recordingData[i].Recording,sVehicleRecordingLibrary)
ENDIF
ENDIF
ENDREPEAT
REPEAT COUNT_OF(recordingData) i
If i > 0
// //cprintln(debug_trevor3,"aab",i)
IF recordingData[i].Recording >= 1
if not HAS_VEHICLE_RECORDING_BEEN_LOADED(recordingData[i].Recording,sVehicleRecordingLibrary)
//cprintln(debug_trevor3,"not loaded car rec: ",recordingData[i].Recording)
return FALSE
ENDIF
ENDIF
ENDIF
ENDREPEAT
bRecordingsLoaded=true
RETURN TRUE
ELSE
RETURN TRUE
ENDIF
ELSe
// //cprintln(debug_trevor3,"b")
IF bRecordingsLoaded
IF missionProgress < STAGE_APPROACH_SCAN_AREA_THREE
OR missionProgress > STAGE_CARPARK
cprintln(debug_trevor3,"Release veh recordings")
REPEAT COUNT_OF(recordingData) i
If i > 0
IF recordingData[i].Recording >= 1
if HAS_VEHICLE_RECORDING_BEEN_LOADED(recordingData[i].Recording,sVehicleRecordingLibrary)
REMOVE_VEHICLE_RECORDING(recordingData[i].Recording,sVehicleRecordingLibrary)
endif
ENDIF
ENDIF
ENDREPEAT
bRecordingsLoaded=FALSE
ENDIF
ENDIF
ENDIF
ENDIF
return FALSE
ENDFUNC
proc addToChaseDialogue(int iThisEntry, int askTime, int replyByTime, int TrevorResponseTime, int chadRecordingToCheck, string conv_root, int conv_line, bool askForDirections, bool triggeredIfChadOnScreen, bool failForNotSeeing)
chaseDialogue[iThisEntry].askTime = askTime
chaseDialogue[iThisEntry].replyByTime = replyByTime
chaseDialogue[iThisEntry].TrevorResponseTime = TrevorResponseTime
chaseDialogue[iThisEntry].chadRecordingToCheck = chadRecordingToCheck
chaseDialogue[iThisEntry].conv_root = conv_root
chaseDialogue[iThisEntry].conv_line = conv_line
chaseDialogue[iThisEntry].askForDirections = askForDirections
chaseDialogue[iThisEntry].mustBeSeen = triggeredIfChadOnScreen
chaseDialogue[iThisEntry].FailForNotSeeing = failForNotSeeing
endproc
PROC INIT_ASSETS()
INIT_REL_GROUPS()
sVehicleRecordingLibrary = "CS2"
convBlock = "CST2AUD"
// model_trevor = GET_PLAYER_PED_MODEL(CHAR_TREVOR)
#if IS_DEBUG_BUILD model_franklin = GET_PLAYER_PED_MODEL(CHAR_FRANKLIN) #endif
model_chad = U_M_Y_FIBMugger_01
model_pilot = S_M_Y_Pilot_01
prepCarRecData()
//prep chase dialogue data
addToChaseDialogue(0,0,0,2000,400,"cs2_chase1",0,false,false,false)
addToChaseDialogue(1,0,0,11000,400,"cs2_tmp18",1,false,true,false)
addToChaseDialogue(2,0,0,16000,400,"cs2_tmp18",2,false,true,false)
addToChaseDialogue(3,18302,22807,2000,401,"cs2_tmp18",3,true,false,true) //North up S La Conaga Blvd
addToChaseDialogue(4,20000,0,0,0,"cs2_chase2",0,false,false,false) //banter
addToChaseDialogue(5,37168,42022,2871,402,"cs2_tmp18",6,true,false,true) //Through parking lot alley
addToChaseDialogue(6,46000,0,0,0,"cs2_chase3",0,false,false,false) //police intercom
addToChaseDialogue(7,55000,0,0,0,"cs2_chase5",0,false,true,false) //nearly totalled
addToChaseDialogue(8,59000,63008,17736,402,"cs2_tmp18",9,true,false,true) //north on rockford
addToChaseDialogue(9,63519,0,0,0,"cs2_frksee",0,false,false,false) //I see him
addToChaseDialogue(10,71500,0,0,0,"cs2_anger",0,false,false,false) //Motherfucker (weaves cars)
addToChaseDialogue(11,73870,79000,36056,402,"cs2_tmp18",11,true,false,true) //santa monica blvd
addToChaseDialogue(12,80000,0,0,0,"cs2_hurry",0,false,true,false)
addToChaseDialogue(13,83101,85543,46911,402,"cs2_tmp18",12,true,false,true)
addToChaseDialogue(14,91000,0,0,0,"cs2_chase4",0,false,true,false)
addToChaseDialogue(15,91000,94000,57965,402,"cs2_tmp18",13,true,false,true)
addToChaseDialogue(16,0,0,65698,402,"cs2_atend",0,false,true,false)
PREP_ASSET(ASSET_Police_DEPT,ASSETS_STAGE_POLICE_STATION,ASSETS_STAGE_IN_CHOPPER)
PREP_ASSET(ASSET_CHOPPER,ASSETS_STAGE_AFTER_LEADIN,ASSETS_STAGE_GAME_OVER)
PREP_ASSET(ASSET_PILOT_AT_START,ASSETS_STAGE_AFTER_LEADIN,ASSETS_STAGE_IN_CHOPPER)
PREP_ASSET(ASSET_AREA_1_ASSETS,ASSETS_STAGE_PREP_AREA_1,ASSETS_STAGE_RELEASE_AREA_1)
PREP_ASSET(ASSET_AREA_2_ASSETS,ASSETS_STAGE_PREP_AREA_2,ASSETS_STAGE_RELEASE_AREA_2)
PREP_ASSET(ASSET_CHAD,ASSETS_STAGE_PREP_AREA_2,ASSETS_STAGE_RELEASE_CAR_PARK)
PREP_ASSET(ASSET_ZYPE,ASSETS_STAGE_PREP_AREA_2,ASSETS_STAGE_GAME_OVER)
PREP_ASSET(ASSET_CARPARK,ASSETS_STAGE_PREP_CAR_PARK,ASSETS_STAGE_RELEASE_CAR_PARK)
PREP_ASSET(ASSET_DEVIN,ASSETS_STAGE_RELEASE_CAR_PARK,ASSETS_STAGE_GAME_OVER)
PREP_ASSET(ASSET_CHASE_AUDIO,ASSETS_STAGE_LOAD_ZTYPE,ASSETS_STAGE_END_CAR_CHASE)
//***************************************** WHO ARE WE PLAYING AS? *******************************************
IF GET_ENTITY_MODEL(player_ped_id()) = GET_PLAYER_PED_MODEL(CHAR_TREVOR)
SET_WANTED_LEVEL_MULTIPLIER(0.0)
SET_MAX_WANTED_LEVEL(0)
playAsTrevor = TRUE
ELSE
playAsTrevor = FALSE
SET_WANTED_LEVEL_MULTIPLIER(0.0)
SET_MAX_WANTED_LEVEL(0)
ENDIF
IF playAsTrevor = TRUE
FORCE_ASSET_STAGE(ASSETS_STAGE_POLICE_STATION)
ELSE
FORCE_ASSET_STAGE(ASSETS_STAGE_STARTUP)
ENDIF
#if is_debug_build
IF playAsTrevor = TRUE
SkipMenuStruct[0].sTxtLabel = "Startup" // Stage 0 Name
SkipMenuStruct[1].sTxtLabel = "Get police Chopper" // Stage 3 Name
SkipMenuStruct[2].sTxtLabel = "Learn to scan" // Stage 4 Name
SkipMenuStruct[3].sTxtLabel = "Approach scan area 1"
SkipMenuStruct[4].sTxtLabel = "Approach scan area 2"
SkipMenuStruct[5].sTxtLabel = "Chase begins"
SkipMenuStruct[6].sTxtLabel = "Car Park"
SkipMenuStruct[7].sTxtLabel = "Scan car park peds"
SkipMenuStruct[8].sTxtLabel = "Collect Chad's vehicle"
SkipMenuStruct[9].sTxtLabel = "Take Chad's vehicle to obj"
SkipMenuStruct[10].sTxtLabel = "Approach airport gates"
SkipMenuStruct[11].sTxtLabel = "Final Cutscene (car_2_mcs_1)"
SkipMenuStruct[12].sTxtLabel = "Game Over"
ELSE //playing as Franklin
SkipMenuStruct[0].sTxtLabel = "Startup" // Stage 0 Name
SkipMenuStruct[1].sTxtLabel = "Franklin waits for Trevor" // Stage 3 Name
SkipMenuStruct[2].sTxtLabel = "Learn to scan" // Stage 4 Name
SkipMenuStruct[3].sTxtLabel = "Approach scan area 1"
SkipMenuStruct[4].sTxtLabel = "Approach scan area 2"
SkipMenuStruct[5].sTxtLabel = "Chase begins"
SkipMenuStruct[6].sTxtLabel = "Car Park"
SkipMenuStruct[7].sTxtLabel = "Scan car park peds"
SkipMenuStruct[8].sTxtLabel = "Collect Chad's vehicle"
SkipMenuStruct[9].sTxtLabel = "Take Chad's vehicle to obj"
SkipMenuStruct[10].sTxtLabel = "Approach airport gates"
SkipMenuStruct[11].sTxtLabel = "Final Cutscene (car_2_mcs_1)"
SkipMenuStruct[12].sTxtLabel = "Game Over"
ENDIF
#endif
//set up scene audi data
sceneAudio[0].active = FALSE
sceneAudio[0].location = << -29.6222, -87.8161, 56.3652 >>
sceneAudio[0].line = -1
sceneAudio[1].active = FALSE
sceneAudio[1].location = << 206.3808, -110.3547, 67.8803 >>
sceneAudio[1].line = -1
// FIX_CHOPPER_HUD_TIME(HUD,21,04)
ENDPROC
#IF IS_DEBUG_BUILD
proc setWidget()
carStealWidget = START_WIDGET_GROUP("Car Steal 5")
ADD_WIDGET_BOOL("Display frame timer",bFrameTimer)
ADD_WIDGET_BOOL("Condtions On Screen",bScreenConditions)
ADD_WIDGET_BOOL("Dialogue On Screen",bscreenDialogue)
ADD_WIDGET_BOOL("Actions 0-15",bScreenActions)
ADD_WIDGET_BOOL("Actions 16+",bScreenActionsB)
ADD_WIDGET_BOOL("Instructions On Screen",bScreenInstructions)
ADD_WIDGET_INT_READ_ONLY("missionProgress",iMissionProg)
ADD_WIDGET_INT_SLIDER("Event Flag",iFlag,0,9999,1)
START_WIDGET_GROUP("Extra skips")
ADD_WIDGET_BOOL("Skip chad along waypoint",bWidget_skipChadOnWaypoint)
ADD_WIDGET_BOOL("skip chopper at carpark",bSkipChopper)
ADD_WIDGET_BOOL("skip point in area check",bSkipcheck)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
IF DOES_WIDGET_GROUP_EXIST(carStealWidget)
SET_CURRENT_WIDGET_GROUP(carStealWidget)
START_WIDGET_GROUP("Scenes")
ADD_WIDGET_BOOL("Export",bSceneExport)
ADD_WIDGET_BOOL("Reset scene",bResetScene)
ADD_WIDGET_INT_SLIDER("Scene",iDebugScene,0,4,1)
ADD_WIDGET_INT_SLIDER("Event",iDebugEvent,0,MAX_TIMELINES,1)
ADD_WIDGET_INT_SLIDER("Event Time",iDebugTimer,0,240000,1)
STOP_WIDGET_GROUP()
CLEAR_CURRENT_WIDGET_GROUP(carStealWidget)
ENDIF
setUpWidgets(HUD,carStealWidget)
boltDebug(carStealWidget)
SET_CURRENT_WIDGET_GROUP(carStealWidget)
add_widget_bool("Skip Carpark Switch",bSkipSwitch)
STOP_WIDGET_GROUP()
ENDPROC
PROC PRINT_CONDITION_DATA(int iCon)
string sCond
enumConditions thisCond = conditions[iCon].condition
sCond = GET_CONDITION_STRING(thisCond)
SET_TEXT_SCALE(0.25,0.25)
IF conditions[iCon].returns
SET_TEXT_COLOUR(0,0,255,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iCon*0.02),"STRING",sCond)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.25,0.25)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iCon*0.02),"STRING","TRUE")
ELSE
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iCon*0.02),"STRING",sCond)
SET_TEXT_COLOUR(255,0,0,255)
SET_TEXT_SCALE(0.25,0.25)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iCon*0.02),"STRING","FALSE")
ENDIF
ENDPROC
PROC PRINT_DIALOGUE_DATA(int iDia, bool toDebugTextOnly = FALSE)
string sDia
enumDialogue thisDia = dia[iDia].dial
SWITCH thisDia
CASE DIA_NULL sDia = " DIA_NULL " BREAK
CASE DIA_CAN_I_HELP sDia = " DIA_CAN_I_HELP " BREAK
CASE DIA_INTEROGATE_COP sDia = " DIA_INTEROGATE_COP " BREAK
CASE DIA_COP_WALK_CHAT sDia = " DIA_COP_WALK_CHAT " BREAK
CASE DIA_COME_ON sDia = " DIA_COME_ON " BREAK
CASE DIA_COP_RETURNS_TO_DESK sDia = " DIA_COP_RETURNS_TO_DESK " BREAK
CASE DIA_PLAYER_GETS_IN_CHOPPER sDia = " DIA_PLAYER_GETS_IN_CHOPPER " BREAK
CASE DIA_PLAYER_LAGS_OR_LEAVES sDia = " DIA_PLAYER_LAGS_OR_LEAVES " BREAK
CASE DIA_PLAYER_THREAT_IN_POL_DEPT sDia = " DIA_PLAYER_THREAT_IN_POL_DEPT " BREAK
CASE DIA_PILOT_SEES_PLAYER sDia = " DIA_PILOT_SEES_PLAYER " BREAK
CASE DIA_PLAYER_ENTERS_LOCKER_ROOM sDia = " DIA_PLAYER_ENTERS_LOCKER_ROOM " BREAK
CASE DIA_WRONG_WAY sDia = " DIA_WRONG_WAY " BREAK
CASE DIA_RESTART_CONV sDia = " DIA_RESTART_CONV " BREAK
CASE dia_player_doesnt_switch sDia = " dia_player_doesnt_switch " BREAK
CASE DIA_BOOTING_UP sDia = " DIA_BOOTING_UP " BREAK
CASE DIA_SCAN_BUDDY_NEARBY sDia = " DIA_SCAN_BUDDY_NEARBY " BREAK
CASE DIA_CONV_ON_WAY_TO_FRANKLIN sDia = " DIA_CONV_ON_WAY_TO_FRANKLIN " BREAK
CASE DIA_SCAN_MY_BUDDY sDia = " DIA_SCAN_MY_BUDDY " BREAK
CASE DIA_FRANKLIN_SCANNED sDia = " DIA_FRANKLIN_SCANNED " BREAK
CASE DIA_GOING_TO_FIND_BUDDY sDia = " DIA_GOING_TO_FIND_BUDDY " BREAK
CASE DIA_ACTOR_LINE_PLAYS sDia = " DIA_ACTOR_LINE_PLAYS " BREAK
CASE DIA_FLYING_AWAY sDia = " DIA_FLYING_AWAY " BREAK
CASE DIA_WAITING_TO_SCAN sDia = " DIA_WAITING_TO_SCAN " BREAK
CASE DIA_TREVOR_COMMENTS_ON_POSTAL sDia = " DIA_TREVOR_COMMENTS_ON_POSTAL " BREAK
CASE DIA_TREVOR_COMMENTS_ON_PERVERT sDia = " DIA_TREVOR_COMMENTS_ON_PERVERT " BREAK
CASE DIA_TREVOR_COMMENTS_ON_PROSTITUTE sDia = " DIA_TREVOR_COMMENTS_ON_PROSTITUTE " BREAK
CASE DIA_TREVOR_COMMENTS_ON_CHADGIRL sDia = " DIA_TREVOR_COMMENTS_ON_CHADGIRL " BREAK
CASE DIA_TREVOR_MAKES_SCAN_COMPLETE_COMMENT sDia = " DIA_TREVOR_MAKES_SCAN_COMPLETE_COMMENT " BREAK
CASE DIA_SEEN_CHAD sDia = " DIA_SEEN_CHAD " BREAK
CASE DIA_CHAD_HIDDEN sDia = " DIA_CHAD_HIDDEN " BREAK
CASE DIA_CHAD_WALKING_THROUGH_APARTMENTS sDia = " DIA_CHAD_WALKING_THROUGH_APARTMENTS " BREAK
CASE DIA_CHAD_OFF_SCREEN sDia = " DIA_CHAD_OFF_SCREEN " BREAK
CASE DIA_FRANKLIN_FIND_HIM sDia = " DIA_FRANKLIN_FIND_HIM " BREAK
CASE DIA_FOUND_CHAD sDia = " DIA_FOUND_CHAD " BREAK
CASE DIA_TREVOR_BANTER_DURING_CHAD_WALK sDia = " DIA_TREVOR_BANTER_DURING_CHAD_WALK " BREAK
CASE DIA_CHAD_AT_GARAGE sDia = " DIA_CHAD_AT_GARAGE " BREAK
CASE DIA_TAKE_US_DOWN sDia = " DIA_TAKE_US_DOWN " BREAK
CASE DIA_TREVOR_SCARED sDia = " DIA_TREVOR_SCARED " BREAK
CASE DIA_EXITS_CLEAR sDia = " DIA_EXITS_CLEAR " BREAK
CASE DIA_THERMAL_VISION sDia = " DIA_THERMAL_VISION " BREAK
CASE DIA_TREVOR_REACTION_TO_THERMAL_VISION_ON sDia = " DIA_TREVOR_REACTION_TO_THERMAL_VISION_ON " BREAK
CASE DIA_FRANKLIN_ASKS_IF_PLAYER_CAN_SEE_HIM sDia = " DIA_FRANKLIN_ASKS_IF_PLAYER_CAN_SEE_HIM " BREAK
CASE DIA_TREVOR_SEE_FRANKLIN sDia = " DIA_TREVOR_SEE_FRANKLIN " BREAK
CASE DIA_ANY_OTHER_HEAT_SOURCES sDia = " DIA_ANY_OTHER_HEAT_SOURCES " BREAK
CASE DIA_TREVOR_SEES_PISSER sDia = " DIA_TREVOR_SEES_PISSER " BREAK
CASE DIA_TREVOR_SEES_FIXING_MAN sDia = " DIA_TREVOR_SEES_FIXING_MAN " BREAK
CASE DIA_TREVOR_SEES_CHAD sDia = " DIA_TREVOR_SEES_CHAD " BREAK
CASE DIA_TREVOR_SEES_LEANING_MAN sDia = " DIA_TREVOR_SEES_LEANING_MAN " BREAK
CASE DIA_TREVOR_SEES_PHONE_CAR_MAN sDia = " DIA_TREVOR_SEES_PHONE_CAR_MAN " BREAK
CASE DIA_FRANKLIN_SEES_PISSER sDia = " DIA_FRANKLIN_SEES_PISSER " BREAK
CASE DIA_FRANKLIN_SEES_FIXING_MAN sDia = " DIA_FRANKLIN_SEES_FIXING_MAN " BREAK
CASE DIA_FRANKLIN_SEES_ZTYPE sDia = " DIA_FRANKLIN_SEES_ZTYPE " BREAK
CASE DIA_FRANKLIN_SEES_LEANING_MAN sDia = " DIA_FRANKLIN_SEES_LEANING_MAN " BREAK
CASE DIA_FRANKLIN_SEES_PHONE_MAN sDia = " DIA_FRANKLIN_SEES_PHONE_MAN " BREAK
CASE DIA_OVERHEAR_FUCKERS_WITH_SCANNER sDia = " DIA_OVERHEAR_FUCKERS_WITH_SCANNER " BREAK
CASE DIA_OVERHEAR_CAR_FIXER_WITH_SCANNER sDia = " DIA_OVERHEAR_CAR_FIXER_WITH_SCANNER " BREAK
CASE DIA_OVERHEAR_PISSER_WITH_SCANNER sDia = " DIA_OVERHEAR_PISSER_WITH_SCANNER " BREAK
CASE DIA_OVERHEAR_CHAD_WITH_SCANNER sDia = " DIA_OVERHEAR_CHAD_WITH_SCANNER " BREAK
CASE DIA_OVERHEAR_CAR_LEANING_GUY sDia = " DIA_OVERHEAR_CAR_LEANING_GUY " BREAK
CASE DIA_OVERHEAR_CAR_ON_PHONE sDia = " DIA_OVERHEAR_CAR_ON_PHONE " BREAK
CASE DIA_TREVOR_RANTS_IN_SWITCH sDia = " DIA_TREVOR_RANTS_IN_SWITCH " BREAK
CASE DIA_PLAYER_SHOOTING_CHOPPER sDia = " DIA_PLAYER_SHOOTING_CHOPPER " BREAK
CASE DIA_DRIVING_BACK sDia = " DIA_DRIVING_BACK " BREAK
CASE DIA_CRASH_ZTYPE sDia = " DIA_CRASH_ZTYPE " BREAK
CASE DIA_WHERES_THE_CAR sDia = " DIA_WHERES_THE_CAR " BREAK
CASE DIA_BEG_TO_LET_GO sDia = " DIA_BEG_TO_LET_GO " BREAK
CASE DIA_DONT_TAKE_CAR sDia = " DIA_DONT_TAKE_CAR " BREAK
CASE DIA_FLEE_PANIC sDia = " DIA_FLEE_PANIC " BREAK
CASE DIA_FLEE_PANIC_NOT_HIT sDia = " DIA_FLEE_PANIC_NOT_HIT " BREAK
CASE DIA_PLAYER_GOT_IN_CAR sDia = " DIA_PLAYER_GOT_IN_CAR " BREAK
CASE DIA_DRIVING_AWAY sDia = " DIA_DRIVING_AWAY " BREAK
CASE DIA_WARNING_COPS sDia = " DIA_WARNING_COPS " BREAK
CASE DIA_KILLED_CHAD sDia = " DIA_KILLED_CHAD " BREAK
CASE DIA_CALL_DEVIN sDia = " DIA_CALL_DEVIN " BREAK
CASE DIA_OPEN_GATES sDia = " DIA_OPEN_GATES " BREAK
CASE DIA_FRANKLIN_THREATENS_CHAD sDia = " DIA_FRANKLIN_THREATENS_CHAD " BREAK
CASE DIA_PLAYER_RUNS_OFF sDia = " DIA_PLAYER_RUNS_OFF " BREAK
DEFAULT sDia = " -NOT DEFINED-" BREAK
ENDSWITCH
IF NOT toDebugTextOnly
SET_TEXT_SCALE(0.35,0.35)
IF dia[iDia].bCompleted
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iDia*0.03),"STRING",sDia)
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+(iDia*0.03),"STRING","TRUE")
ELSE
SET_TEXT_COLOUR(0,0,255,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iDia*0.03),"STRING",sDia)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.1+(iDia*0.03),"STRING","FALSE")
ENDIF
IF dia[iDia].bStarted
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iDia*0.03),"STRING","TRUE")
else
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.1+(iDia*0.03),"STRING","FALSE")
endif
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
showIntOnScreen(0.5,0.1+(iDia*0.03),dia[iDia].flag,"",0.35)
ELSe
PRINTLN("DIALOGUE trying to play: ",sDia)
ENDIf
ENDPROC
PROC PRINT_ACTION_DATA(int iData,int offset=0)
string sAct
enumActions thisAct = actions[iData].action
SWITCH thisAct
CASE ACT_NULL sAct = "ACT_NULL" BREAK
CASE ACT_SPAWN_COPS sAct = "ACT_SPAWN_COPS" BREAK
CASE ACT_INTRO_CUTSCENE sAct = "ACT_INTRO_CUTSCENE" BREAK
CASE ACT_LOOK_AT_PLAYER_ENTRY sAct = "ACT_LOOK_AT_PLAYER_ENTRY" BREAK
CASE ACT_WALK_TO_STAIRS sAct = "ACT_WALK_TO_STAIRS" BREAK
CASE ACT_COPS_ALERTED sAct = "ACT_COPS_ALERTED" BREAK
CASE ACT_SPAWN_CHOPPER sAct = "ACT_SPAWN_CHOPPER" BREAK
CASE ACT_COP_RETURNS_TO_FRONT_DESK sAct = "ACT_COP_RETURNS_TO_FRONT_DESK" BREAK
CASE ACT_PLAYER_GETS_IN_CHOPPER sAct = "ACT_PLAYER_GETS_IN_CHOPPER" BREAK
CASE ACT_PILOT_FLIES_OFF sAct = "ACT_PILOT_FLIES_OFF" BREAK
//Car Park stage
CASE ACT_CHOPPER_CONTROL sAct = "ACT_CHOPPER_CONTROL" BREAK
CASE ACT_CAR_HAS_PISS sAct = "ACT_CAR_HAS_PISS" BREAK
CASE ACT_BONNET_SEX sAct = "ACT_BONNET_SEX" BREAK
CASE ACT_CAR_FIXER sAct = "ACT_CAR_FIXER" BREAK
CASE ACT_ON_PHONE_IN_CAR sAct = "ACT_ON_PHONE_IN_CAR" BREAK
CASE ACT_LEANING_ON_CAR sAct = "ACT_LEANING_ON_CAR" BREAK
CASE ACT_FRANKLIN_RUNS_TO_ROOF sAct = "ACT_FRANKLIN_RUNS_TO_ROOF" BREAK
CASE ACT_FRANKLIN_WAVES_AT_CHOPPER_CAMERA sAct = "ACT_FRANKLIN_WAVES_AT_CHOPPER_CAMERA" BREAK
CASE ACT_FRANKLIN_RUNS_TO_BONNET_CAR sAct = "ACT_FRANKLIN_RUNS_TO_BONNET_CAR" BREAK
CASE ACT_FRANKLIN_RUNS_TO_PISSER_CAR sAct = "ACT_FRANKLIN_RUNS_TO_PISSER_CAR" BREAK
CASE ACT_FRANKLIN_RUNS_TO_CHAD_CAR sAct = "ACT_FRANKLIN_RUNS_TO_CHAD_CAR" BREAK
CASE ACT_FRANKLIN_RUNS_TO_LEANING_MAN sAct = "ACT_FRANKLIN_RUNS_TO_LEANING_MAN" BREAK
CASE ACT_FRANKLIN_RUNS_TO_PHONE_MAN sAct = "ACT_FRANKLIN_RUNS_TO_PHONE_MAN" BREAK
CASE ACT_FRANKLIN_REACTS_TO_WRONG_CAR sAct = "ACT_FRANKLIN_REACTS_TO_WRONG_CAR" BREAK
CASE ACT_CHAD_LOOKS_ABOUT sAct = "ACT_CHAD_LOOKS_ABOUT" BREAK
CASE ACT_CHAD_EXITS_CAR sAct = "ACT_CHAD_EXITS_CAR" BREAK
//get car in car park
CASE ACT_PREP_STAGE sAct = "ACT_PREP_STAGE" BREAK
CASE ACT_START_AUDIO_CAR_2_DRIVE_BACK_TO_GARAGE sAct = "ACT_START_AUDIO_CAR_2_DRIVE_BACK_TO_GARAGE" BREAK
CASE ACT_STOP_AUDIO_CAR_2_STEAL_THE_CAR sAct = "ACT_STOP_AUDIO_CAR_2_STEAL_THE_CAR" BREAK
CASE ACT_CHAD_RUNS_OFF sAct = "ACT_CHAD_RUNS_OFF" BREAK
CASE ACT_CHAD_TRIES_TO_CREEP_AWAY sAct = "ACT_CHAD_TRIES_TO_CREEP_AWAY" BREAK
CASE ACT_REACTS_TO_PLAYER_IN_CAR sAct = "ACT_REACTS_TO_PLAYER_IN_CAR" BREAK
CASE ACT_LOAD_END_CUTSCENE sAct = "ACT_LOAD_END_CUTSCENE" BREAK
CASE ACT_CHAD_CALLS_COPS sAct = "ACT_CHAD_CALLS_COPS" BREAK
CASE ACT_FLY_TO_GARAGE sAct = "ACT_FLY_TO_GARAGE" BREAK
CASE ACT_REMOVE_CAR_PARK_ASSETS sAct = "ACT_REMOVE_CAR_PARK_ASSETS" BREAK
CASE ACT_SET_UP_DEVIN_LEADIN sAct = "ACT_SET_UP_DEVIN_LEADIN" BREAK
CASE ACT_CONTROL_CHOPPER sAct = "ACT_CONTROL_CHOPPER" BREAK
DEFAULT sAct = " -NOT DEFINED-" BREAK
ENDSWITCH
float shiftY = 0.0
shiftY = offset * -0.03
IF actions[iData].ongoing
SET_TEXT_COLOUR(255,0,0,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct)
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03)+shiftY,"STRING","TRUE")
ELSE
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03)+shiftY,"STRING","FALSE")
ENDIF
IF actions[iData].completed
SET_TEXT_COLOUR(255,0,0,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct)
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+(iData*0.03)+shiftY,"STRING","TRUE")
ELSE
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03)+shiftY,"STRING",sAct)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1+(iData*0.03)+shiftY,"STRING","FALSE")
ENDIF
showIntOnScreen(0.57,0.1+(iData*0.03)+shiftY,actions[iData].flag,"",0.35)
showIntOnScreen(0.62,0.1+(iData*0.03)+shiftY,actions[iData].intA,"",0.35)
ENDPROc
PROC PRINT_INSTRUCTION_DATA(int iData)
string sInst
enumInstructions thisInst = instr[iData].ins
sINst= GET_INSTRUCTION_STRING(thisInst)
IF instr[iData].bCompleted
SET_TEXT_COLOUR(255,0,0,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03),"STRING",sInst)
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,0,255)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03),"STRING","TRUE")
ELSE
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.1,0.1+(iData*0.03),"STRING",sInst)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_SCALE(0.35,0.35)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.1+(iData*0.03),"STRING","FALSE")
ENDIF
showIntOnScreen(0.5,0.1+(iData*0.03),instr[iData].flag,"",0.35)
showIntOnScreen(0.55,0.1+(iData*0.03),instr[iData].intA,"",0.35)
ENDPROC
PROC resetSCENE(viewedScenedStruct &thisScene)
thisScene.nextEvent = 0
thisScene.timeLine[0].event = SCENE_DEBUG
thisScene.dialogueLine = 0
thisScene.nextAction = 0
KILL_ANY_CONVERSATION()
ENDPROC
PROC debugStuff()
if bWidget_skipChadOnWaypoint = TRUE
bWidget_skipChadOnWaypoint = FALSE
if not IS_PED_INJURED(ped[ped_chad].id)
CLEAR_PED_TASKS_IMMEDIATELY(ped[ped_chad].id)
initPedOnFoot(ped_chad,model_chad,<< 209.1343, -153.3794, 57.6580 >>, 159.6702,pedrole_void)
//brainWander(ped_chadGirl)
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_ENTITY_COORDS(vehicle[vehChopper].id,<< 259.1425, -189.8652, 163.2856 >>)
POINT_CHOPPER_CAM_AT_COORD(HUD,<< 209.1343, -153.3794, 57.6580 >>)
ENDIF
iFlag=15
ENDIF
REQUEST_ANIM_DICT("misscarsteal2CHAD_HOLDUP")
WHILE NOT HAS_ANIM_DICT_LOADED("misscarsteal2CHAD_HOLDUP")
safewait(0)
ENDWHILE
set_event_flag(events_scene_chadGirl,CLEANUP)
add_event(EVENTS_SCENE_CHADJACK)
set_event_flag(EVENTS_SCENE_CHADJACK,4)
SET_PED_IN_SCAN_LIST_AS_SCANNED(HUD,ped[ped_chad].id)
SET_GARAGE_DOOR_STATE(GD_CREATE_AND_LOCK)
//set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,TRUE,fOpenRatio)
ENDIF
IF bSkipcheck
bSkipcheck=false
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_ENTITY_COORDS(vehicle[vehHeist].id, <<501.9428, -1311.0804, 28.1913>>)
SET_ENTITY_HEADING(vehicle[vehHeist].id,86)
ENDIF
ENDIF
if bSkipChopper
bSkipChopper=FALSE
add_event(EVENTS_CHOPPER_CARPARK)
infraRed = TRUE
set_event_flag(EVENTS_CARPARK_CONVERSATION,8)
add_event(EVENTS_CONTROL_INFRARED)
if not IS_PED_INJURED(ped[ped_franklin].id)
initPedOnFoot(ped_franklin,model_franklin,<< -1275.8275, -223.6033, 50.5498 >>, 341.7638)
CLEAR_PED_TASKS_IMMEDIATELY(ped[ped_franklin].id)
ENDIF
CLEAR_PRINTS()
ENDIF
IF bResetScene
bResetScene = FALSE
resetSCENE(viewScene[iDebugScene])
ENDIF
IF bSceneExport
bSceneExport=FALSE
int jj
for jj = 0 to MAX_TIMELINES-1
println(viewScene[iDebugScene].timeLine[jj].triggerTime)
endfor
ENDIF
IF iDebugScene != iLastDebugScene
iLastDebugScene = iDebugScene
iDebugEvent = 0
iLastDebugEvent = 0
iDebugTimer = viewScene[iDebugScene].timeLine[iDebugEvent].triggerTime
iLastDebugTimer =iDebugTimer
ENDIF
IF iDebugEvent != iLastDebugEvent
iDebugTimer = viewScene[iDebugScene].timeLine[iDebugEvent].triggerTime
iLastDebugTimer =iDebugTimer
iLastDebugEvent = iDebugEvent
ENDIF
If iDebugTimer != iLastDebugTimer
viewScene[iDebugScene].timeLine[iDebugEvent].triggerTime = iDebugTimer
iLastDebugTimer = iDebugTimer
ENDIF
IF bShowGrab
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(true)
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab1),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab3))
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab2),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab4))
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab5),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab7))
DRAW_DEBUG_LINE(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab6),GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(vehicle[vehHeist].id,vgrab8))
ENDIF
ENDIF
if bPrintGrab
bPrintGrab=false
PRINTLN("vector vgrab1 = ",vgrab1)
PRINTLN("vector vgrab2 = ",vgrab2)
PRINTLN("vector vgrab3 = ",vgrab3)
PRINTLN("vector vgrab4 = ",vgrab4)
PRINTLN("vector vgrab5 = ",vgrab5)
PRINTLN("vector vgrab6 = ",vgrab6)
PRINTLN("vector vgrab7 = ",vgrab7)
PRINTLN("vector vgrab8 = ",vgrab8)
ENDIF
int iR
IF bFrameTimer
PRINTLN("timer: ",GET_GAME_TIMER())
ENDIF
IF bScreenConditions
bscreenDialogue = FALSE
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.05,"STRING","Returns")
REPEAT COUNT_OF(conditions) iR
IF conditions[iR].active
PRINT_CONDITION_DATA(iR)
ENDIF
ENDREPEAT
ENDIF
IF bscreenDialogue
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.05,"STRING","Ongoing")
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.45,0.05,"STRING","Complete")
REPEAT COUNT_OF(dia) iR
PRINT_DIALOGUE_DATA(iR)
ENDREPEAT
ENDIF
IF bScreenActions
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.05,"STRING","Ongoing")
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.05,"STRING","Complete")
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.57,0.05,"STRING","Flag")
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.62,0.05,"STRING","IntA")
FOR iR = 0 to 15
IF actions[iR].active
PRINT_ACTION_DATA(iR)
ENDIF
ENDFOR
ENDIF
IF bScreenActionsB
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.43,0.05,"STRING","Ongoing")
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.05,"STRING","Complete")
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.57,0.05,"STRING","Flag")
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(0,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.62,0.05,"STRING","IntA")
FOR iR = 15 to COUNT_OF(actions)-1
IF actions[iR].active
PRINT_ACTION_DATA(iR,15)
ENDIF
ENDFOR
ENDIF
IF bScreenInstructions
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_COLOUR(255,0,255,255)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.4,0.05,"STRING","Complete")
REPEAT COUNT_OF(instr) iR
PRINT_INSTRUCTION_DATA(iR)
ENDREPEAT
endif
ENDPROC
#ENDIF
proc force_ped_plays_anims(int pedID)
if DOES_ENTITY_EXIST(ped[pedID].id)
if not is_ped_injured(ped[pedID].id)
SET_PED_RESET_FLAG(ped[pedID].id,PRF_AllowUpdateIfNoCollisionLoaded,true)
SET_PED_RESET_FLAG(ped[pedID].id,INT_TO_ENUM(PED_RESET_FLAGS,50),true) //THIS IS A HACK FIX FOR BUG 286194
ENDIF
ENDIF
ENDPROC
proc set_road_block(int iNextblock,vector v1, vector v2, float fWidth)
sroadblocks[iNextblock].v1 = v1
sroadblocks[iNextblock].v2 = v2
sroadblocks[iNextblock].width = fWidth
sroadblocks[iNextblock].on = false
endproc
PROC controlCarRecs()
int i
int iSkiptime
If bplayVehRecs = TRUE
if missionProgress = STAGE_CHASE_BEGINS
OR missionProgress = STAGE_CARPARK
IF NOT IS_PC_VERSION()
iPlaybackTime += floor((TIMESTEP() * fPlaybackSpeed) * 1000.0) //= GET_GAME_TIMER() - iStartPlaybackTime
ELSE
iPlaybackTime += floor((TIMESTEP() * fPlaybackSpeed) * 1000.0 + 0.5) //= GET_GAME_TIMER() - iStartPlaybackTime
ENDIF
REPEAT COUNT_OF(recordingData) i
if recordingData[i].Recording >= 1
if recordingData[i].playing = FALSE and recordingData[i].ended = FALSE
//load models in advance
if recordingData[i].startPlaybackTime -5000 < iPlaybackTime
if recordingData[i].isHeistCar = FALSE and recordingData[i].isChaseCar = FALSE
REQUEST_MODEL(recordingData[i].model)
ENDIF
ENDIF
if i!=31 and iPlaybackTime > recordingData[i].startPlaybackTime
OR i=31 and iPlaybackTime > recordingData[i].startPlaybackTime - 15000
if recordingData[i].isHeistCar = TRUE
recordingData[i].vehicleID = vehicle[vehHeist].id
vStartPos = GET_ENTITY_COORDS(recordingData[i].vehicleID) //+<<-0.01,-0.1,0.0054>>
vStartRot = GET_ENTITY_ROTATION(recordingData[i].vehicleID)
//cprintln(debug_trevor3,"pos: ",vStartPos," vTargetBlendPos: ",vTargetBlendPos)
ELIF recordingData[i].isChaseCar = TRUE
if not IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
if not is_ped_injured(PED[ped_franklin].id)
if IS_PED_IN_ANY_VEHICLE(PED[ped_franklin].id)
vehicle[vehFranklin].id = GET_VEHICLE_PED_IS_IN(PED[ped_franklin].id,true)
endif
endif
endif
recordingData[i].vehicleID = vehicle[vehFranklin].id
ELSE
IF HAS_MODEL_LOADED(recordingData[i].model)
IF NOT IS_VEHICLE_DRIVEABLE(recordingData[i].vehicleID)
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(recordingData[i].Recording,sVehicleRecordingLibrary)
recordingData[i].vehicleID = CREATE_VEHICLE(recordingData[i].model,GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(recordingData[i].Recording,0.0,sVehicleRecordingLibrary))
SET_VEHICLE_LIGHTS(recordingData[i].vehicleID,SET_VEHICLE_LIGHTS_ON)
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(recordingData[i].vehicleID)
FREEZE_ENTITY_POSITION(recordingData[i].vehicleID,FALSE)
//cprintln(debug_Trevor3,"UnFreeze car: ",i)
IF recordingData[i].isHeistCar = TRUE OR recordingData[i].isChaseCar = TRUE
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(recordingData[i].vehicleID)
vStartPos = GET_ENTITY_COORDS(recordingData[i].vehicleID) +<<-0.01,-0.1,0.0054>>
vStartRot = GET_ENTITY_ROTATION(recordingData[i].vehicleID)
//cprintln(debug_trevor3,"pos: ",vStartPos," vTargetBlendPos: ",vTargetBlendPos)
STOP_PLAYBACK_RECORDED_VEHICLE(recordingData[i].vehicleID)
recordingData[i-1].ended = FALSE
ENDIF
ENDIF
IF recordingData[i].Recording = 100//franklin chase rec
STOP_SYNCHRONIZED_ENTITY_ANIM(vehicle[vehFranklin].id,1000.0,TRUE)
SET_VEHICLE_DOOR_SHUT(vehicle[vehFranklin].id,SC_DOOR_FRONT_LEFT,TRUE)
ENDIF
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(recordingData[i].vehicleID)
bool bStartedARecording
IF recordingData[i].isHeistCar = TRUE
IF recordingData[i].Recording = 400
START_PLAYBACK_RECORDED_VEHICLE(recordingData[i].vehicleID,recordingData[i].Recording,sVehicleRecordingLibrary,FALSE)
bStartedARecording=TRUE
ELSE
fBlendTime = 0.0
// vStartPos = GET_ENTITY_COORDS(recordingData[i].vehicleID)
// vStartRot = GET_ENTITY_ROTATION(recordingData[i].vehicleID)
vTargetBlendPos = GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME(recordingData[i].Recording,1000.0,"cs2")
vTargetBlendRot = GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME(recordingData[i].Recording,1000.0,"cs2")
ENDIF
//START_PLAYBACK_RECORDED_VEHICLE(recordingData[i].vehicleID,recordingData[i].Recording,sVehicleRecordingLibrary,FALSE)
ELSE
START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS(recordingData[i].vehicleID,recordingData[i].Recording,sVehicleRecordingLibrary,ENUM_TO_INT(CONTINUE_RECORDING_IF_CAR_DESTROYED))
bStartedARecording=TRUE
ENDIF
IF bStartedARecording
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(recordingData[i].vehicleID,false)
iSkiptime = iPlaybackTime - recordingData[i].startPlaybackTime
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(recordingData[i].vehicleID,TO_FLOAT(iSkiptime))
ENDIF
recordingData[i].playing = true
ENDIF
ENDIF
ENDIF
ENDIF
IF recordingData[i].playing = true and recordingData[i].ended = FALSE
IF IS_VEHICLE_DRIVEABLE(recordingData[i].vehicleID)
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(recordingData[i].vehicleID)
if recordingData[i].isHeistCar != TRUE and recordingData[i].isChaseCar != TRUE
FREEZE_ENTITY_POSITION(recordingData[i].vehicleID,TRUE) //added due to bug 894717
//recordingData[i].ended = TRUE
cprintln(debug_trevor3,"Recording: ",i," is frozen E")
else
IF recordingData[i].isHeistCar
IF recordingData[i].Recording > 400
IF iPlaybackTime - recordingData[i].startPlaybackTime < 2000
vector vNew
vector vRotNew
fBlendTime += timestep()
float fAdvanceTime
fAdvanceTime = 1 - (cos(fBlendTime * 90))
IF fBlendTime < 1.0
vNew = vStartPos + ((vTargetBlendPos - vStartPos) * (fAdvanceTime))
vRotNew = vStartRot + ((vTargetBlendRot - vStartRot) * (fAdvanceTime))
FREEZE_ENTITY_POSITION(recordingData[i].vehicleID,TRUE)
SET_ENTITY_COORDS(recordingData[i].vehicleID,vNew)
SET_ENTITY_ROTATION(recordingData[i].vehicleID,vRotNew)
cprintln(debug_trevor3,"Recording: ",i," is frozen C")
ELSE
vNew = vStartPos + ((vTargetBlendPos - vStartPos) * (fAdvanceTime))
vRotNew = vStartRot + ((vTargetBlendRot - vStartRot) * (fAdvanceTime))
SET_ENTITY_COORDS_NO_OFFSET(recordingData[i].vehicleID,vNew)
SET_ENTITY_ROTATION(recordingData[i].vehicleID,vRotNew)
FREEZE_ENTITY_POSITION(recordingData[i].vehicleID,FALSE)
START_PLAYBACK_RECORDED_VEHICLE(recordingData[i].vehicleID,recordingData[i].Recording,sVehicleRecordingLibrary,FALSE)
iSkiptime = iPlaybackTime - recordingData[i].startPlaybackTime
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(recordingData[i].vehicleID,TO_FLOAT(iSkiptime))
FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE(recordingData[i].vehicleID,false)
cprintln(debug_trevor3,"Recording: ",i," is frozen D")
ENDIF
ENDIF
ELSE
cprintln(debug_trevor3,"Recording: ",i," is frozen B")
FREEZE_ENTITY_POSITION(recordingData[i].vehicleID,TRUE)
ENDIF
ENDIF
endif
ENDIF
IF NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(recordingData[i].Recording,sVehicleRecordingLibrary)
cprintln(debug_trevor3,"Recording: ",recordingData[i].Recording," is not loaded.")
ENDIF
if HAS_VEHICLE_RECORDING_BEEN_LOADED(recordingData[i].Recording,sVehicleRecordingLibrary)
if iPlaybackTime < recordingData[i].startPlaybackTime + (GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(recordingData[i].Recording,sVehicleRecordingLibrary))
ELSE
if recordingData[i].isHeistCar != TRUE and recordingData[i].isChaseCar != TRUE
FREEZE_ENTITY_POSITION(recordingData[i].vehicleID,TRUE)
cprintln(debug_trevor3,"Recording: ",i," is frozen A")
ENDIF
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(recordingData[i].vehicleID)
IF GET_CURRENT_PLAYBACK_FOR_VEHICLE(recordingData[i].vehicleID) = GET_VEHICLE_RECORDING_ID(recordingData[i].Recording, sVehicleRecordingLibrary)
STOP_PLAYBACK_RECORDED_VEHICLE(recordingData[i].vehicleID)
cprintln(debug_trevor3,"Recording: ",i," is stopped")
ENDIF
ENDIF
if recordingData[i].isHeistCar != TRUE and recordingData[i].isChaseCar != TRUE
SET_VEHICLE_AS_NO_LONGER_NEEDED(recordingData[i].vehicleID)
SET_MODEL_AS_NO_LONGER_NEEDED(recordingData[i].model)
ENDIF
if recordingData[i].isHeistCar = TRUE
vStartPos = GET_ENTITY_COORDS(recordingData[i].vehicleID) +<<-0.01,-0.1,0.0054>>
vStartRot = GET_ENTITY_ROTATION(recordingData[i].vehicleID)
ENDIF
recordingData[i].ended = TRUE
ENDIF
endif
ENDIF
ENDIF
/*
IF recordingData[i].Recording = 400
IF recordingData[i].playing = TRUE
showIntOnScreen(0.1,0.1,400,"playing")
ENDIF
IF recordingData[i].ended = TRUE
showIntOnScreen(0.2,0.1,400,"ended")
ENDIF
ENDIF
IF recordingData[i].Recording = 401
IF recordingData[i].playing = TRUE
showIntOnScreen(0.1,0.14,401,"playing")
ENDIF
IF recordingData[i].ended = TRUE
showIntOnScreen(0.2,0.14,401,"ended")
ENDIF
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehHeist].id)
showIntOnScreen(0.3,0.14,401,"rec playing")
ENDIF
ENDIF*/
ENDIF
ENDREPEAT
ENDIF
ENDIF
ENDPROC
// ==============================================================================
// Termination
// ==============================================================================
// ------------------------------------------------------------------------------
// Mission Cleanup
// ------------------------------------------------------------------------------
int iChaseCV
int iNotSeenCount
int iFindByTime
int iLastSeenLocationLine
float fObserveTime
float fFranklineTime,fChadTime
enum chaseDialogueStateEnum
DIA_NONE,
DIA_QUERIED,
DIA_SPOTTED_WAIT,
DIA_SPOTTED,
DIA_NOTSEEN,
DIA_SO_FIND_HIM,
DIA_FIND_OR_FAIL,
DIA_FOUND_CHAD_LOCATION,
DIA_ENDING,
DIA_FAIL_DIALOGUE,
DIA_FAIL
endenum
chaseDialogueStateEnum chaseDialogueEnum = DIA_NONE
FUNC BOOL HAS_CHAD_BEEN_OBSERVED(bool bDoInstantCheck = FALSE)
float fScreenCheckSize = 0.15 + (((45 - HUD.fFOV)/30.0) * 0.35)
IF fScreenCheckSize < 0.1 fScreenCheckSize = 0.1 ENDIF
IF fScreenCheckSize > 0.5 fScreenCheckSize = 0.5 ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF is_point_in_screeen_area(GET_ENTITY_COORDS(vehicle[vehHeist].id),0.5-fScreenCheckSize,0.5-fScreenCheckSize,0.5+fScreenCheckSize,0.5+fScreenCheckSize)
IF bDoInstantCheck
RETURN TRUE
ELSE
fObserveTime+=TIMESTEP()
IF fObserveTime > 0.3
fObserveTime = 0.0
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC INT GET_LINE_FOR_CHAD_LOCATION(float iFranklinTime)
IF iFranklinTime < 8000
return 1
ELIF iFranklinTime < 15800
return 2
ELIF iFranklinTime < 23500
return 3
ELIF iFranklinTime < 31500
return 4
ELIF iFranklinTime < 37600
return 5
ELIF iFranklinTime < 44500
return 6
ELIF iFranklinTime < 50000
return 7
ELIF iFranklinTime < 53000
return 8
ELIF iFranklinTime < 56000
return 9
ELIF iFranklinTime < 68500
return 10
ELIF iFranklinTime < 83500
return 11
ELIF iFranklinTime < 85300
return 12
ELIF iFranklinTime < 101500
return 13
ENDIF
return 13
ENDFUNC
#if IS_DEBUG_BUILD
FUNC STRING GET_CASE_DIALOGUE_FLAG()
switch chaseDialogueEnum
CASE DIA_NONE RETURN "DIA_NONE" BREAK
CASE DIA_QUERIED RETURN "DIA_QUERIED" BREAK
CASE DIA_SPOTTED_WAIT RETURN "DIA_SPOTTED_WAIT" BREAK
CASE DIA_SPOTTED RETURN "DIA_SPOTTED" BREAK
CASE DIA_NOTSEEN RETURN "DIA_NOTSEEN" BREAK
CASE DIA_SO_FIND_HIM RETURN "DIA_SO_FIND_HIM" BREAK
CASE DIA_FIND_OR_FAIL RETURN "DIA_FIND_OR_FAIL" BREAK
CASE DIA_FOUND_CHAD_LOCATION RETURN "DIA_FOUND_CHAD_LOCATION" BREAK
CASE DIA_ENDING RETURN "DIA_ENDING" BREAK
ENDSWITCH
RETURN ""
ENDFUNC
#endif
FUNC BOOL CREATE_TREVOR(vector vCoord, float fHeading=0.0, vehicle_index inVehicle = null, VEHICLE_SEAT vs=VS_DRIVER)
IF inVehicle = NULL
IF NOT CREATE_PLAYER_PED_ON_FOOT(ped[ped_trevor].id,CHAR_TREVOR,vCoord,fHeading)
RETURN FALSE
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(inVehicle)
IF IS_VEHICLE_SEAT_FREE(inVehicle,vs)
IF NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_trevor].id,CHAR_TREVOR,inVehicle,VS)
RETURN FALSE
ENDIF
ELSE
IF NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_trevor].id,CHAR_TREVOR,inVehicle,VS_FRONT_RIGHT)
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(ped[ped_trevor].id)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_trevor].id)
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_trevor].id,FALSE)
SET_PED_COMBAT_ATTRIBUTES(ped[ped_trevor].id,CA_LEAVE_VEHICLES,FALSE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_trevor].id,TRUE)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL CREATE_FRANKLIN(vector vCoord, float fHeading=0.0, vehicle_index inVehicle = null)
IF inVehicle = NULL
IF CREATE_PLAYER_PED_ON_FOOT(ped[ped_franklin].id,CHAR_FRANKLIN,vCoord,fHeading)
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_franklin].id,FALSE)
RETURN TRUE
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(inVehicle)
IF IS_VEHICLE_SEAT_FREE(inVehicle,VS_DRIVER)
IF CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_franklin].id,CHAR_FRANKLIN,inVehicle)
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_franklin].id,FALSE)
RETURN TRUE
ENDIF
ELSE
IF CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_franklin].id,CHAR_FRANKLIN,inVehicle,VS_FRONT_RIGHT)
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_franklin].id,FALSE)
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
//SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_franklin].id)
RETURN FALSE
ENDFUNC
// ============================================ Scenes observed from chopper ============================
FUNC BOOL IS_SCENE_BEING_OBSERVED(viewedScenedStruct thisScene)
//if (is_point_in_screeen_area(<< -29.8705, -86.0999, 57.4479 >>,0.2,0.2,0.8,0.8) and HUD.fFOV < 30) or IS_PED_BEING_SCANNED(HUD,ped[ped_courier].id) or IS_PED_BEING_SCANNED(HUD,ped[ped_mugger].id)
IF IS_POINT_VISIBLE(thisScene.pos,10,300) and HUD.fFOV < 12
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC SET_EVENT_DATA(viewedScenedStruct &thisScene, sceneEventEnum eventType,int iTime)
int iThis
for iThis = 1 to MAX_TIMELINES-1
IF thisScene.timeLine[iThis].event = SCENE_INIT
thisScene.timeLine[iThis].event = eventType
thisScene.timeLine[iThis].triggerTime = iTime
iThis = MAX_TIMELINES
ENDIF
ENDFOR
ENDPROC
FUNC BOOL IS_PLAYER_LISTENING_TO_DIALOGUE(viewedScenedStruct &thisScene)
IF listenDialogue!= -1
IF thisScene.listenDia != -1
IF thisScene.listenDia = listenDialogue
RETURN TRUE
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
proc PAUSE_scene_timer(viewedScenedStruct &thisScene)
thisScene.triggerTime += floor(TIMESTEP() * 1000)
endproc
PROC SET_LISTENER_DIALOGUE_TO_PAUSE(bool setPause)
IF setPause
bPauseListenerDialogue = TRUE
ELSE
bPauseListenerDialogue = FALSE
ENDIF
ENDPROC
FUNC bool triggerSceneEvent(viewedScenedStruct &thisScene,enumSceneName sceneName, bool justSkipIt = FALSE)
IF bPauseListenerDialogue justSkipIt = TRUE ENDIF
IF thisScene.nextEvent != 0 and thisScene.timeLine[thisScene.nextEvent].event != SCENE_INIT
OR thisScene.nextEvent = 0
SWITCH sceneName
CASE SCENENAME_POSTAL
SWITCH thisScene.timeLine[thisScene.nextEvent].event
CASE SCENE_INIT
//set up events
thisScene.timeLine[0].event = SCENE_INIT
thisScene.timeLine[1].event = SCENE_TRIGGER
thisScene.timeLine[2].event = SCENE_LISTEN_LINE
thisScene.timeLine[2].triggerTime = 2000
thisScene.timeLine[3].event = SCENE_LISTEN_LINE
thisScene.timeLine[3].triggerTime = 5000
thisScene.timeLine[4].event = SCENE_ACTION
thisScene.timeLine[4].triggerTime = 6000
thisScene.timeLine[5].event = SCENE_LISTEN_LINE
thisScene.timeLine[5].triggerTime = 8000
thisScene.timeLine[6].event = SCENE_LISTEN_LINE
thisScene.timeLine[6].triggerTime = 13000
thisScene.timeLine[7].event = SCENE_LISTEN_LINE
thisScene.timeLine[7].triggerTime = 18000
thisScene.timeLine[8].event = SCENE_LISTEN_LINE
thisScene.timeLine[8].triggerTime = 25057
thisScene.timeLine[9].event = SCENE_LISTEN_LINE
thisScene.timeLine[9].triggerTime = 30000
thisScene.timeLine[10].event = SCENE_LISTEN_LINE
thisScene.timeLine[10].triggerTime = 33300
thisScene.timeLine[11].event = SCENE_ACTION
thisScene.timeLine[11].triggerTime = 34000
thisScene.timeLine[12].event = SCENE_ACTION
thisScene.timeLine[12].triggerTime = 40000
thisScene.timeLine[13].event = SCENE_ACTION
thisScene.timeLine[13].triggerTime = 40000
thisScene.timeLine[14].event = SCENE_LISTEN_LINE
thisScene.timeLine[14].triggerTime = 40000
vehicle[vehDeliveryVan].id = CREATE_VEHICLE(BOXVILLE2,<<-25.625967,-85.980637,57.145386>>, -45.000004)
// SET_ENTITY_COLLISION(vehicle[vehDeliveryVan].id,FALSE)
// FREEZE_ENTITY_POSITION(vehicle[vehDeliveryVan].id,TRUE)
ped[ped_courier].id = CREATE_PED(PEDTYPE_MISSION,S_M_M_janitor,<<-29.4751, -90.5675, 56.2545>>,140)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_courier].id)
SET_PED_COMPONENT_VARIATION(ped[ped_courier].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_courier].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_courier].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_courier].id, INT_TO_ENUM(PED_COMPONENT,5), 0, 0, 0) //(hand)
SET_PED_COMPONENT_VARIATION(ped[ped_courier].id, INT_TO_ENUM(PED_COMPONENT,9), 0, 0, 0) //(task)
SET_PED_PROP_INDEX(ped[ped_courier].id, INT_TO_ENUM(PED_PROP_POSITION,0), 0, 0)
remove_helihud_marker(HUD,destMarker[0])
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_courier].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_courier].id,"CH_NAME1",8)
SET_VEHICLE_DOOR_OPEN(vehicle[vehDeliveryVan].id,SC_DOOR_REAR_LEFT)
SET_VEHICLE_DOOR_OPEN(vehicle[vehDeliveryVan].id,SC_DOOR_REAR_RIGHT)
//SET_PED_RESET_FLAG(ped[ped_courier].id,PRF_AllowUpdateIfNoCollisionLoaded,true)
//SET_PED_RESET_FLAG(ped[ped_courier].id,INT_TO_ENUM(PED_RESET_FLAGS,50),true)
thisScene.pos = << -28.850, -87.939, 56.622 >>
thisScene.rot = << -0.000, -0.000, 45.000 >>
thisScene.listenDia = ADD_CHOPPER_LISTENING_LOCATION(0,thisScene.pos)
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(<< -28.850, -87.939, 56.622 >>, << -0.000, -0.000, 45.000 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(thisScene.syncSceneID[0],TRUE)
IF NOT IS_PED_INJURED(ped[ped_courier].id)
TASK_SYNCHRONIZED_SCENE(ped[ped_courier].id, thisScene.syncSceneID[0], "misscarsteal2MUGGING", "mugging_outro_mugger", INSTANT_BLEND_IN, -0.5 )
ENDIF
thisScene.nextEvent++
BREAK
CASE SCENE_TRIGGER
IF IS_SCENE_BEING_OBSERVED(thisScene)
//cprintln(debug_Trevor3,"OBSERVED")
thisScene.triggerTime = GET_GAME_TIMER()
thisScene.nextEvent++
ENDIF
BREAK
CASE SCENE_LISTEN_LINE
IF justSkipIt
thisScene.dialogueLine++
thisScene.nextEvent++
ELSe
IF IS_PLAYER_LISTENING_TO_DIALOGUE(thisScene)
IF thisScene.dialogueLine = 8
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"cs2_pub",5,ped[ped_courier].id,"cs2_courier")
thisScene.dialogueLine++
thisScene.nextEvent++
ENDIF
ELSE
//cprintln(debug_Trevor3,"LISTEN")
TEXT_LABEL_23 txt
txt = "CAR_2_IG_4_"
txt += thisScene.dialogueLine+1
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"CAR_2_IG_4",txt,5,ped[ped_courier].id,"cs2_courier")
thisScene.dialogueLine++
thisScene.nextEvent++
ENDIF
ENDIF
ELSE
thisScene.dialogueLine++
thisScene.nextEvent++
ENDIf
ENDIF
BREAK
CASE SCENE_ACTION
IF justSkipIt
thisScene.dialogueLine++
thisScene.nextAction++
ELSe
SWITCH thisScene.nextAction
CASE 0 //Throw boxes from van
thisScene.syncSceneID[1] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
if not IS_PED_INJURED(ped[ped_courier].id)
TASK_SYNCHRONIZED_SCENE (ped[ped_courier].id, thisScene.syncSceneID[1], "misscarsteal2MUGGING", "mugging_action_mugger", 0.5, -0.5 )
ENDIF
SET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[1],0.0)
prop[1] = CREATE_OBJECT(PROP_CS_PACKAGE_01,<< -28.850, -87.939, 56.622 >>)
prop[2] = CREATE_OBJECT(PROP_CS_PACKAGE_01,<< -28.850, -87.939, 57.622 >>)
SET_ENTITY_COLLISION(prop[1],FALSE)
SET_ENTITY_COLLISION(prop[2],FALSE)
PLAY_SYNCHRONIZED_ENTITY_ANIM( prop[1], thisScene.syncSceneID[1], "mugging_action_box1","misscarsteal2MUGGING" , INSTANT_BLEND_IN )
PLAY_SYNCHRONIZED_ENTITY_ANIM( prop[2], thisScene.syncSceneID[1], "mugging_action_box2","misscarsteal2MUGGING" , INSTANT_BLEND_IN )
//turn off nodes on main road
SET_ROADS_IN_ANGLED_AREA(<<-22.509262,-110.788269,54.817471>>, <<-32.304104,-135.421097,64.824463>>, 29.375000,FALSE,FALSE)
SET_ROADS_IN_ANGLED_AREA(<<19.846016,-142.186356,53.802525>>, <<65.391869,-160.891373,62.862186>>, 29.375000,FALSE,FALSE)
thisScene.nextEvent++
thisScene.nextAction++
//cprintln(debug_Trevor3,"AAA")
BREAK
CASE 1 //Goes to get a beer
PAUSE_scene_timer(thisScene)
//cprintln(debug_Trevor3,"BBB")
IF GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[1]) > 0.99
OR NOT IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[1])
//cprintln(debug_Trevor3,"CCC")
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(<< -28.850, -87.939, 56.622 >>, << -0.000, -0.000, 45.000 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(thisScene.syncSceneID[0],TRUE)
IF NOT IS_PED_INJURED(ped[ped_courier].id)
TASK_SYNCHRONIZED_SCENE(ped[ped_courier].id, thisScene.syncSceneID[0], "misscarsteal2MUGGING", "mugging_outro_mugger", INSTANT_BLEND_IN, -0.5 )
ENDIF
thisScene.nextEvent++
thisScene.nextAction++
ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_courier].id)
OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_courier].id)
IF NOT IS_PED_INJURED(ped[ped_courier].id)
seq()
TASK_ACHIEVE_HEADING(null,139)
TASK_GO_STRAIGHT_TO_COORD(null,<<-47.9225, -135.5877, 56.6118>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
TASK_WANDER_STANDARD(null)
endseq(ped[ped_courier].id)
thisScene.nextEvent++
thisScene.nextAction++
ENDIF
endif
BREAK
CASE 2
PAUSE_scene_timer(thisScene)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_courier].id)
OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_courier].id)
IF NOT IS_PED_INJURED(ped[ped_courier].id)
seq()
TASK_ACHIEVE_HEADING(null,139)
TASK_GO_STRAIGHT_TO_COORD(null,<<-47.9225, -135.5877, 56.6118>>,PEDMOVE_WALK,DEFAULT_TIME_NEVER_WARP)
TASK_WANDER_STANDARD(null)
endseq(ped[ped_courier].id)
thisScene.nextEvent++
thisScene.nextAction++
ENDIF
endif
BREAK
ENDSWITCH
ENDIF
BREAK
ENDSWITCH
BREAK
CASE SCENENAME_ROOF
IF IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0])
IF GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0]) >= 0.436
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
IF NOT IS_PED_INJURED(ped[ped_husband].id)
AND NOT IS_PED_INJURED(ped[ped_pervert].id)
AND NOT IS_PED_INJURED(ped[ped_wife].id)
TASK_SYNCHRONIZED_SCENE (ped[ped_husband].id, thisScene.syncSceneID[0], "misscarsteal2PERVERT", "pervert_husband", 0.4, -0.4, SYNCED_SCENE_NONE, RBF_NONE, 0.4 )
TASK_SYNCHRONIZED_SCENE (ped[ped_pervert].id, thisScene.syncSceneID[0], "misscarsteal2PERVERT", "pervert_perv", 0.4, -0.4, SYNCED_SCENE_NONE, RBF_NONE, 0.4 )
TASK_SYNCHRONIZED_SCENE (ped[ped_wife].id, thisScene.syncSceneID[0], "misscarsteal2PERVERT", "pervert_wife", 0.4, -0.4, SYNCED_SCENE_NONE, RBF_NONE, 0.4 )
SET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0],0.11)
ENDIF
ENDIF
ENDIF
SWITCH thisScene.timeLine[thisScene.nextEvent].event
CASE SCENE_INIT
//set up events
thisScene.timeLine[0].event = SCENE_INIT
thisScene.timeLine[1].event = SCENE_TRIGGER
thisScene.timeLine[2].event = SCENE_ACTION
thisScene.timeLine[2].triggerTime = 0
thisScene.timeLine[3].event = SCENE_ACTION
thisScene.timeLine[3].triggerTime = 0
ped[ped_husband].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_BEACH_02,<< -9.518, -31.102, 68.097 >>,140)
ped[ped_pervert].id = CREATE_PED(PEDTYPE_MISSION,S_M_M_janitor,<< -9.518, -31.102, 68.097 >>,140)
ped[ped_wife].id = CREATE_PED(PEDTYPE_MISSION,s_f_y_hooker_01,<< -9.518, -31.102, 68.097 >>,140)
//husband
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_husband].id)
SET_PED_COMPONENT_VARIATION(ped[ped_husband].id, INT_TO_ENUM(PED_COMPONENT,0), 1, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_husband].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_husband].id, INT_TO_ENUM(PED_COMPONENT,4), 1, 3, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_husband].id, INT_TO_ENUM(PED_COMPONENT,8), 1, 0, 0) //(accs)
SET_PED_PROP_INDEX(ped[ped_husband].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
//wife
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_wife].id)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id, INT_TO_ENUM(PED_COMPONENT,0), 1, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id, INT_TO_ENUM(PED_COMPONENT,2), 1, 0, 0) //(hair)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 1, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 1, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 1, 0) //(accs)
//pervert
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_pervert].id)
SET_PED_COMPONENT_VARIATION(ped[ped_pervert].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_pervert].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_pervert].id, INT_TO_ENUM(PED_COMPONENT,4), 1, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_pervert].id, INT_TO_ENUM(PED_COMPONENT,5), 0, 0, 0) //(hand)
SET_PED_COMPONENT_VARIATION(ped[ped_pervert].id, INT_TO_ENUM(PED_COMPONENT,9), 0, 0, 0) //(task)
remove_helihud_marker(HUD,destMarker[1])
remove_helihud_marker(HUD,destMarker[2])
remove_helihud_marker(HUD,destMarker[3])
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_wife].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_wife].id,"CH_NAME5",4)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_pervert].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_pervert].id,"CH_GREG",6)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_husband].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_husband].id,"CH_NAME3",4) //loitering with intent
thisScene.pos = << -9.518, -31.102, 68.097 >>
thisScene.rot = << -0.000, 0.000, 69.250 >>
thisScene.listenDia = ADD_CHOPPER_LISTENING_LOCATION(1,thisScene.pos)
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
TASK_SYNCHRONIZED_SCENE (ped[ped_husband].id, thisScene.syncSceneID[0], "misscarsteal2PERVERT", "pervert_husband", 0.4, -0.4, SYNCED_SCENE_NONE, RBF_NONE)
TASK_SYNCHRONIZED_SCENE (ped[ped_pervert].id, thisScene.syncSceneID[0], "misscarsteal2PERVERT", "pervert_perv", 0.4, -0.4, SYNCED_SCENE_NONE, RBF_NONE)
TASK_SYNCHRONIZED_SCENE (ped[ped_wife].id, thisScene.syncSceneID[0], "misscarsteal2PERVERT", "pervert_wife", 0.4, -0.4, SYNCED_SCENE_NONE, RBF_NONE)
thisScene.nextEvent++
BREAK
CASE SCENE_TRIGGER
IF IS_SCENE_BEING_OBSERVED(thisScene)
thisScene.triggerTime = GET_GAME_TIMER()
thisScene.nextEvent++
ENDIF
BREAK
CASE SCENE_LISTEN_LINE
BREAK
CASE SCENE_ACTION
SWITCH thisScene.nextAction
CASE 0 //play normal dialogue
IF thisScene.dialogueLine < 20
IF IS_PLAYER_LISTENING_TO_DIALOGUE(thisScene)
TEXT_LABEL_23 txt
txt = "IG_5_a_"
txt += thisScene.dialogueLine+1
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"IG_5_a",txt,4,ped[ped_husband].id,"cs2_roof_husband",5,ped[ped_pervert].id,"cs2_roof_pervert",6,ped[ped_wife].id,"cs2_roof_wife")
thisScene.dialogueLine++
ENDIF
ENDIF
ELSE //play a random line
thisScene.dialogueLine = GET_RANDOM_INT_IN_RANGE(0,3)
thisScene.nextEvent++
thisScene.nextAction++
ENDIF
BREAK
CASE 1 //play random dialogue
IF IS_PLAYER_LISTENING_TO_DIALOGUE(thisScene)
SWITCH thisScene.dialogueLine
CASE 0
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"IG_5_b",4,ped[ped_husband].id,"cs2_roof_husband")
thisScene.dialogueLine = GET_RANDOM_INT_IN_RANGE(0,3)
thisScene.nextAction++
thisScene.timeLine[0].triggerTime = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,5000)
ENDIF
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"IG_5_c",5,ped[ped_pervert].id,"cs2_roof_pervert")
thisScene.nextAction++
thisScene.dialogueLine = GET_RANDOM_INT_IN_RANGE(0,3)
thisScene.timeLine[0].triggerTime = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,5000)
ENDIF
BREAK
CASE 2
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"IG_5_d",6,ped[ped_wife].id,"cs2_roof_wife")
thisScene.nextAction++
thisScene.dialogueLine = GET_RANDOM_INT_IN_RANGE(0,3)
thisScene.timeLine[0].triggerTime = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3500,5000)
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE 2
IF GET_GAME_TIMER() > thisScene.timeLine[0].triggerTime
thisScene.nextAction = 1
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
BREAK
CASE SCENENAME_PIMP
SWITCH thisScene.timeLine[thisScene.nextEvent].event
CASE SCENE_DEBUG
IF DOES_ENTITY_EXIST(ped[ped_pimp].id) DELETE_PED(ped[ped_pimp].id) ENDIF //debug
IF DOES_ENTITY_EXIST(ped[ped_punter].id) DELETE_PED(ped[ped_punter].id) ENDIF //debug
IF DOES_ENTITY_EXIST(ped[ped_hooker].id) DELETE_PED(ped[ped_hooker].id) ENDIF //debug
ped[ped_pimp].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_OG_BOSS_01,<<180.0352, -153.7189, 55.2982>>,73.5737)
ped[ped_punter].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_BevHills_02,<<188.5162, -157.9683, 55.3856>>,203.2963)
ped[ped_hooker].id = CREATE_PED(PEDTYPE_MISSION,S_F_Y_HOOKER_01,<<189.1093, -159.2958, 55.3431>>,359.9998)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_pimp].id)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 2, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 1, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
#IF IS_JAPANESE_BUILD
TASK_STAND_STILL(ped[ped_pimp].id, -1)
TASK_STAND_STILL(ped[ped_punter].id, -1)
TASK_STAND_STILL(ped[ped_hooker].id, -1)
#ENDIF
#IF NOT IS_JAPANESE_BUILD
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
TASK_SYNCHRONIZED_SCENE (ped[ped_pimp].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "pimpsex_pimp", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
TASK_SYNCHRONIZED_SCENE (ped[ped_punter].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "pimpsex_punter", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
TASK_SYNCHRONIZED_SCENE (ped[ped_hooker].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "pimpsex_hooker", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
#ENDIF
thisScene.nextEvent++
BREAK
CASE SCENE_INIT
thisScene.timeLine[0].event = SCENE_INIT
thisScene.timeLine[1].event = SCENE_TRIGGER
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,100)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,6800)
SET_EVENT_DATA(thisScene,SCENE_ACTION,10000)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,12126)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,15824)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,18920)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,25570)
SET_EVENT_DATA(thisScene,SCENE_ACTION,28014)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,29714)
SET_EVENT_DATA(thisScene,SCENE_ACTION,31041)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,33706)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,35577)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,40437)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,45579)
SET_EVENT_DATA(thisScene,SCENE_ACTION,46000)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,49139)
SET_EVENT_DATA(thisScene,SCENE_ACTION,51600)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,54318)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,58432)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,61640)
SET_EVENT_DATA(thisScene,SCENE_ACTION,64000)
// SET_EVENT_DATA(thisScene,SCENE_LOOPED_DIALOGUE,65000)
IF DOES_ENTITY_EXIST(ped[ped_pimp].id) DELETE_PED(ped[ped_pimp].id) ENDIF //debug
IF DOES_ENTITY_EXIST(ped[ped_punter].id) DELETE_PED(ped[ped_pimp].id) ENDIF //debug
IF DOES_ENTITY_EXIST(ped[ped_hooker].id) DELETE_PED(ped[ped_pimp].id) ENDIF //debug
ped[ped_pimp].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_OG_BOSS_01,<<180.0352, -153.7189, 55.2982>>,73.5737)
ped[ped_punter].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_BEACH_02,<<188.5162, -157.9683, 55.3856>>,203.2963)
ped[ped_hooker].id = CREATE_PED(PEDTYPE_MISSION,s_f_y_hooker_02,<<189.1093, -159.2958, 55.3431>>,359.9998)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_pimp].id)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 2, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_pimp].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_PROP_INDEX(ped[ped_pimp].id, INT_TO_ENUM(PED_PROP_POSITION,1), 0, 0)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_punter].id)
SET_PED_COMPONENT_VARIATION(ped[ped_punter].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_punter].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 2, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_punter].id, INT_TO_ENUM(PED_COMPONENT,4), 1, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_punter].id, INT_TO_ENUM(PED_COMPONENT,8), 1, 0, 0) //(accs)
SET_PED_PROP_INDEX(ped[ped_punter].id, INT_TO_ENUM(PED_PROP_POSITION,1), 1, 1)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_hooker].id)
SET_PED_COMPONENT_VARIATION(ped[ped_hooker].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_hooker].id, INT_TO_ENUM(PED_COMPONENT,2), 1, 1, 0) //(hair)
SET_PED_COMPONENT_VARIATION(ped[ped_hooker].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 2, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_hooker].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_hooker].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
thisScene.pos = << 189.080, -159.296, 55.330 >>
thisScene.rot = << -0.000, 0.000, -15.390 >>
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
thisScene.listenDia = ADD_CHOPPER_LISTENING_LOCATION(2,thisScene.pos)
#IF IS_JAPANESE_BUILD
TASK_STAND_STILL(ped[ped_pimp].id, -1)
TASK_STAND_STILL(ped[ped_punter].id, -1)
TASK_STAND_STILL(ped[ped_hooker].id, -1)
#ENDIF
#IF NOT IS_JAPANESE_BUILD
TASK_SYNCHRONIZED_SCENE (ped[ped_pimp].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "pimpsex_pimp", INSTANT_BLEND_IN, -1 )
TASK_SYNCHRONIZED_SCENE (ped[ped_punter].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "pimpsex_punter", INSTANT_BLEND_IN, -1 )
TASK_SYNCHRONIZED_SCENE (ped[ped_hooker].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "pimpsex_hooker", INSTANT_BLEND_IN, -1 )
#ENDIF
add_event(events_pimp_achievement)
thisScene.nextEvent++
BREAK
CASE SCENE_TRIGGER
IF IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0])
SET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0],0.2)
ENDIF
IF IS_SCENE_BEING_OBSERVED(thisScene)
thisScene.triggerTime = GET_GAME_TIMER()
thisScene.nextEvent++
ENDIF
BREAK
CASE SCENE_LISTEN_LINE
IF justSkipIt
thisScene.dialogueLine++
thisScene.nextEvent++
ELSe
IF IS_PLAYER_LISTENING_TO_DIALOGUE(thisScene)
#IF NOT IS_JAPANESE_BUILD
TEXT_LABEL_23 txt
txt = "CAR_2_IG_6_"
IF thisScene.dialogueLine <= 2
txt += thisScene.dialogueLine+1
ELIF thisScene.dialogueLine <= 10
txt += thisScene.dialogueLine+2
ELSE
txt += thisScene.dialogueLine+4
ENDIF
//IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() != thisScene.dialogueLine+1
// IF currentConvType = CONVTYPE_CHOPPER_CAM
// KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
// ENDIF
//ENDIF
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"CAR_2_IG_6",txt,4,ped[ped_punter].id,"cs2_punter",5,ped[ped_pimp].id,"cs2_pimp",6,ped[ped_hooker].id,"cs2_whore")
thisScene.dialogueLine++
thisScene.nextEvent++
ENDIF
#endif
ELSE
thisScene.dialogueLine++
thisScene.nextEvent++
ENDIf
ENDIF
BREAK
CASE SCENE_LOOPED_DIALOGUE
IF thisScene.dialogueLine >= 0 //using this var as a counter for the random lines
thisScene.dialogueLine = -1
ENDIf
IF thisScene.dialogueLine > -12
IF IS_PLAYER_LISTENING_TO_DIALOGUE(thisScene)
#IF NOT IS_JAPANESE_BUILD
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"IG_6_a",5,ped[ped_pimp].id,"cs2_pimp")
thisScene.triggerTime += 4000
thisScene.dialogueLine-- //using this var as a counter for random lines
ENDIF
#endif
ELSE
PAUSE_scene_timer(thisScene)
ENDIF
ENDIF
BREAK
CASE SCENE_ACTION
SWITCH thisScene.nextAction
CASE 0
IF NOT IS_PED_INJURED(ped[ped_pimp].id)
GIVE_WEAPON_TO_PED(ped[ped_pimp].id,WEAPONTYPE_PISTOL,10,TRUE)
ENDIF
thisScene.nextEvent++
thisScene.nextAction++
BREAK
CASE 1
IF NOT IS_PED_INJURED(ped[ped_pimp].id)
#IF NOT IS_JAPANESE_BUILD
IF IS_PLAYER_LISTENING_TO_DIALOGUE(thisScene)
PLAY_SOUND_FROM_ENTITY(-1,"Pimp_Gunshot_Mic",ped[ped_pimp].id,"CAR_STEAL_2_SOUNDSET")
cprintln(debug_trevor3,"kill conv I ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ELSE
PLAY_SOUND_FROM_ENTITY(-1,"Pimp_Gunshot",ped[ped_pimp].id,"CAR_STEAL_2_SOUNDSET")
ENDIF
thisScene.nextEvent++
thisScene.nextAction++
#endif //prevent jap version going beyond this point
ENDIF
BREAK
CASE 2
IF NOT IS_PED_INJURED(ped[ped_pimp].id)
SET_CURRENT_PED_WEAPON(ped[ped_pimp].id,WEAPONTYPE_UNARMED,TRUE)
ENDIF
thisScene.nextEvent++
thisScene.nextAction++
BREAK
CASE 3
IF NOT IS_PED_INJURED(ped[ped_pimp].id)
SET_CURRENT_PED_WEAPON(ped[ped_pimp].id,WEAPONTYPE_PISTOL,TRUE)
ENDIF
ADD_NAVMESH_REQUIRED_REGION(187,-156,20)
thisScene.nextEvent++
thisScene.nextAction++
BREAK
CASE 4
IF NOT IS_PED_INJURED(ped[ped_pimp].id)
SET_CURRENT_PED_WEAPON(ped[ped_pimp].id,WEAPONTYPE_UNARMED,TRUE)
//CLEAR_PED_TASKS(ped[ped_pimp].id)
SEQ()
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_hooker].id,13000)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<176.4232, -153.2906, 55.2087>>,pedmove_walk)
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_SMOKING")
endseq(ped[ped_pimp].id)
//SET_PED_KEEP_TASK(ped[ped_pimp].id,TRUE)
//SET_PED_AS_NO_LONGER_NEEDED(ped[ped_pimp].id)
IF NOT IS_PED_INJURED(ped[ped_hooker].id)
//CLEAR_PED_TASKS(ped[ped_hooker].id)
SEQ()
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_hooker].id,6000)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<231.9157, -173.5117, 55.9517>>,pedmove_walk,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS)
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_HUMAN_PROSTITUTE_LOW_CLASS")
endseq(ped[ped_hooker].id)
// SET_PED_KEEP_TASK(ped[ped_hooker].id,TRUE)
//SET_PED_AS_NO_LONGER_NEEDED(ped[ped_hooker].id)
ENDIF
ENDIF
thisScene.nextEvent++
thisScene.nextAction++
BREAK
CASE 5
/*
thisScene.pos = << 189.080, -159.296, 55.330 >>
thisScene.rot = << -0.000, 0.000, -15.390 >>
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
#IF IS_JAPANESE_BUILD
TASK_STAND_STILL(ped[ped_pimp].id, -1)
TASK_STAND_STILL(ped[ped_hooker].id, -1)
#ENDIF
#IF NOT IS_JAPANESE_BUILD
SET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0],0)
SET_SYNCHRONIZED_SCENE_LOOPED(thisScene.syncSceneID[0],TRUE)
TASK_SYNCHRONIZED_SCENE (ped[ped_pimp].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "ShagLoop_PIMP", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
TASK_SYNCHRONIZED_SCENE (ped[ped_hooker].id,thisScene.syncSceneID[0], "misscarsteal2PIMPSEX", "ShagLoop_hooker", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
#ENDIF
*/
thisScene.nextEvent++
thisScene.nextAction++
BREAK
ENDSWITCH
BREAK
ENDSWITCH
BREAK
CASE SCENENAME_CHAD
SWITCH thisScene.timeLine[thisScene.nextEvent].event
CASE SCENE_DEBUG
IF DOES_ENTITY_EXIST(ped[ped_chad].id) DELETE_PED(ped[ped_chad].id) ENDIF //debug
IF DOES_ENTITY_EXIST(ped[ped_chadGirl].id) DELETE_PED(ped[ped_chadGirl].id) ENDIF //debug
initPed(ped_chad,model_chad,<< 205.723, -110.766, 67.755 >>,140,null,vs_driver,pedrole_enemyUnaware)
STOP_PED_SPEAKING(ped[ped_chad].id,TRUE)
ped[ped_chadGirl].id = CREATE_PED(PEDTYPE_MISSION,s_f_y_hooker_01,<< 205.723, -110.766, 67.755 >>,140)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_chadGirl].id)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,0), 1, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,2), 0, 0, 0) //(hair)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,4), 1, 1, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,8), 2, 0, 0) //(accs)
SET_ENTITY_LOAD_COLLISION_FLAG(ped[ped_chad].id,FALSE)
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
thisScene.syncSceneID[1] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
// TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", INSTANT_BLEND_IN, -0.4)
// TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", INSTANT_BLEND_IN, -0.4)
SET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0] ,0.04)
thisScene.nextEvent++
thisScene.triggerTime = GET_GAME_TIMER()
thisScene.nextAction = 0
BREAK
CASE SCENE_INIT
thisScene.timeLine[0].event = SCENE_INIT
thisScene.timeLine[1].event = SCENE_TRIGGER
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 2500 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 6200 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 8000 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 10000 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,11500)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 14000 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,16500)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 18000 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,18000)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 22500 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 28300 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 32000 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,33500)
SET_EVENT_DATA(thisScene,SCENE_ACTION,35000)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 36500 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,41000)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 43300 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 48900 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 51500 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,51500)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 56000 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 58500 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 60500 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 62000 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,65500) //26
SET_EVENT_DATA(thisScene,SCENE_ACTION,67700)
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 66700 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 70500 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 71500 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 76000 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 77500 )
SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE, 78800 )
SET_EVENT_DATA(thisScene,SCENE_ACTION,0)
//SET_EVENT_DATA(thisScene,SCENE_LISTEN_LINE,100)
IF DOES_ENTITY_EXIST(ped[ped_chad].id) DELETE_PED(ped[ped_chad].id) ENDIF //debug
IF DOES_ENTITY_EXIST(ped[ped_chadGirl].id) DELETE_PED(ped[ped_chadGirl].id) ENDIF //debug
initPed(ped_chad,model_chad,<< 205.723, -110.766, 67.755 >>,140,null,vs_driver,pedrole_enemyUnaware)
STOP_PED_SPEAKING(ped[ped_chad].id,TRUE)
ped[ped_chadGirl].id = CREATE_PED(PEDTYPE_MISSION,s_f_y_hooker_01,<< 205.723, -110.766, 67.755 >>,140)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_chadGirl].id)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,0), 1, 1, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,2), 0, 0, 0) //(hair)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,4), 1, 1, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_chadGirl].id, INT_TO_ENUM(PED_COMPONENT,8), 2, 0, 0) //(accs)
SET_ENTITY_LOAD_COLLISION_FLAG(ped[ped_chad].id,FALSE)
thisScene.pos = << 205.723, -110.766, 67.755 >>
thisScene.rot = << -0.000, 0.000, -39.430 >>
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
SET_SYNCHRONIZED_SCENE_LOOPED(thisScene.syncSceneID[0],TRUE)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_idle_chad", INSTANT_BLEND_IN, -0.4)
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_idle_girl", INSTANT_BLEND_IN, -0.4)
thisScene.listenDia = ADD_CHOPPER_LISTENING_LOCATION(3,thisScene.pos)
thisScene.triggerTime = GET_GAME_TIMER()
thisScene.nextEvent++
//cprintln(debug_Trevor3,"HERE")
IF bDoReplayToHere
//OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_chad].id)
//cprintln(debug_Trevor3,"HERE B")
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "Chad_Dip_chad", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in )
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "Chad_Dip_girl", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in)
thisScene.triggerTime = GET_GAME_TIMER() - thisScene.timeLine[thisScene.nextEvent].triggerTime
thisScene.nextEvent=27
thisScene.nextAction=9
ENDIF
BREAK
CASE SCENE_TRIGGER
IF IS_CONDITION_TRUE(COND_CHAD_BEING_OBSERVED)
//cprintln(DEBUG_TREVOR3,"CHAD BEING OBSERVED")
//IF IS_SCENE_BEING_OBSERVED(thisScene)
thisScene.nextEvent++
thisScene.nextAction=0
thisScene.triggerTime = GET_GAME_TIMER() //THIS LINE WAS MISSING CAUSING DIALOGUE TO START EARLY
ENDIF
BREAK
CASE SCENE_LISTEN_LINE
IF justSkipIt
thisScene.dialogueLine++
thisScene.nextEvent++
ELSe
IF IS_PLAYER_LISTENING_TO_DIALOGUE(thisScene)
TEXT_LABEL_23 txt
txt = "CAR_2_IG_7_"
int iLine
IF thisScene.dialogueLine < 9
iLine = (thisScene.dialogueLine*2)+1
ELIF thisScene.dialogueLine > 8 and thisScene.dialogueLine < 12
iLine = (thisScene.dialogueLine*2)
elif thisScene.dialogueLine = 12
iLine = 23
elif thisScene.dialogueLine = 13
iLine = 24
elif thisScene.dialogueLine = 14
iLine = 26
else
iline = (thisScene.dialogueLine*2) - 3
endif
txt += iline
//cprintln(debug_trevor3,"Line: ",txt)
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() != iline
IF currentConvType = CONVTYPE_CHOPPER_CAM
// KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
ENDIF
ENDIF
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"CAR_2_IG_7",txt,3,ped[ped_chad].id,"Chad",4,ped[ped_chadGirl].id,"cs2_girlfriend")
thisScene.dialogueLine++
thisScene.nextEvent++
ENDIF
ELSE
thisScene.dialogueLine++
thisScene.nextEvent++
ENDIf
ENDIF
BREAK
CASE SCENE_ACTION
SWITCH thisScene.nextAction
case 0
FALLTHRU
CASE 4
//cprintln(debug_Trevor3,"HERE C")
thisScene.syncSceneID[1] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "Chad_Pullback_chad", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in )
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "Chad_Pullback_girl", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in)
thisScene.nextEvent++
thisScene.nextAction++
BREAK
case 1
FALLTHRU
CASE 3
FALLTHRU
CASE 5
FALLTHRU
CASE 7
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_chad].id)
thisScene.nextEvent=27
thisScene.nextAction=8
thisScene.triggerTime = GET_GAME_TIMER() - thisScene.timeLine[thisScene.nextEvent].triggerTime
ELSE
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0])
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
SET_SYNCHRONIZED_SCENE_LOOPED(thisScene.syncSceneID[0],true)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_idle_chad", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in )
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_idle_girl", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in)
ENDIF
thisScene.nextEvent++
thisScene.nextAction++
ENDIF
BREAK
CASE 2
FALLTHRU
CASE 6
thisScene.syncSceneID[1] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "Chad_Armsaround_chad", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in )
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "Chad_Armsaround_girl", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in)
thisScene.nextEvent++
thisScene.nextAction++
BREAK
case 8
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_chad].id)
IF IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0])
thisScene.syncSceneID[1] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "Chad_Dip_chad", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in )
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "Chad_Dip_girl", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in)
thisScene.nextAction++
ELIF (IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[1]) AND GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[1]) >= 0.99)
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "Chad_Dip_chad", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in )
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "Chad_Dip_girl", SLOW_BLEND_IN, SLOW_BLEND_OUT,synced_scene_none,rbf_none,slow_blend_in)
thisScene.nextAction++
ENDIF
//thisScene.nextEvent++
//thisScene.nextAction++
ENDIF
BREAK
CASE 9
IF (IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[1]) AND GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[1]) > 0.97)
OR (IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0]) AND GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0]) > 0.97)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 224.1202, -119.9946, 68.6437 >>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.5,ENAV_NO_STOPPING)
TASK_FOLLOW_WAYPOINT_RECORDING(null,"CS2_01",0,EWAYPOINT_START_FROM_CLOSEST_POINT)
endseq(ped[ped_chad].id)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 195.4088, -96.7522, 66.7088 >>,pedmove_walk)
TASK_WANDER_STANDARD(null)
endseq(ped[ped_chadGirl].id)
kill_event(events_hover_over_second_location)
add_event(EVENTS_SCENE_CHADJACK)
cprintln(debug_Trevor3,"Start EVENTS_SCENE_CHADJACK")
add_event(events_speed_up_chopper,STAGE_CARPARK)
add_event(EVENTS_STEALTH_REMOVE_TRAFFIC,STAGE_CARPARK)
RETURN TRUE
ENDIF
BREAK
/*CASE 0
IF NOT HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
AND IS_PED_IN_SCAN_LIST(HUD,ped[ped_chad].id)
IF IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[1])
IF GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[1]) > 0.797
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0])
thisScene.syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", 0.4, -0.4,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", 0.4, -0.4,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
SET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0] ,0.736)
thisScene.triggerTime = GET_GAME_TIMER() - 47100
ENDIF
ENDIF
ENDIF
IF IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0])
IF GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0]) > 0.797
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[1])
thisScene.syncSceneID[1] = CREATE_SYNCHRONIZED_SCENE(thisScene.pos, thisScene.rot)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", 0.4, -0.4,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, thisScene.syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", 0.4, -0.4,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
SET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[1] ,0.736)
thisScene.triggerTime = GET_GAME_TIMER() - 47100
ENDIF
ENDIF
ENDIF
ELSE
kill_event(events_scene_pimp)
thisScene.nextEvent++
thisScene.nextAction++
ENDIF
BREAK
CASE 1 //skip forward in animation?
IF (IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[0]) AND GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[0]) > 0.97)
OR (IS_SYNCHRONIZED_SCENE_RUNNING(thisScene.syncSceneID[1]) AND GET_SYNCHRONIZED_SCENE_PHASE(thisScene.syncSceneID[1]) > 0.97)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 224.1202, -119.9946, 68.6437 >>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.5,ENAV_NO_STOPPING)
TASK_FOLLOW_WAYPOINT_RECORDING(null,"CS2_01",0,EWAYPOINT_START_FROM_CLOSEST_POINT)
endseq(ped[ped_chad].id)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 195.4088, -96.7522, 66.7088 >>,pedmove_walk)
TASK_WANDER_STANDARD(null)
endseq(ped[ped_chadGirl].id)
kill_event(events_hover_over_second_location)
add_event(EVENTS_SCENE_CHADJACK)
add_event(events_speed_up_chopper,STAGE_CARPARK)
add_event(EVENTS_STEALTH_REMOVE_TRAFFIC,STAGE_CARPARK)
RETURN TRUE
ENDIF
BREAK*/
ENDSWITCH
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ENDIF
RETURN FALSE
ENDFUNC
FUNC bool do_Scene(enumSceneName sceneName)
int id = ENUM_TO_INT(sceneName)
IF viewScene[id].triggerTime != 0
IF viewScene[id].nextEvent < MAX_TIMELINES
IF GET_GAME_TIMER() - viewScene[id].triggerTime > viewScene[id].timeLine[viewScene[id].nextEvent].triggerTime or (sceneName = SCENENAME_CHAD AND bDoReplayToHere)
IF GET_GAME_TIMER() - viewScene[id].triggerTime < viewScene[id].timeLine[viewScene[id].nextEvent].triggerTime + 1000 or (sceneName = SCENENAME_CHAD AND bDoReplayToHere)
IF triggerSceneEvent(viewScene[id],sceneName)
//cprintln(debug_Trevor3,"ABORT ABORT")
RETURN TRUE
ENDIF
ELSE
IF triggerSceneEvent(viewScene[id],sceneName,TRUE)
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIf
ELSE
IF triggerSceneEvent(viewScene[id],sceneName)
RETURN TRUE
ENDIF
ENDIF
//viewScene_postal
RETURN FALSE
endFUNC
proc fillSlots(float fx1, float fy1,float fx2, float fy2, float z,float heading,int maxslots, int slotsToFill, int avoidSlotA=-1, int avoidSlotB = -1, int avoidSlotC = -1, MODEL_NAMES avoidModel=DUMMY_MODEL_FOR_SCRIPT, MODEL_NAMES avoidModel2=DUMMY_MODEL_FOR_SCRIPT)
int i
bool slotFull[12]
MODEL_NAMES thisModel
bool bSkip
for i = 0 to slotstoFill-1
int slot = GET_RANDOM_INT_IN_RANGE(0,maxslots)
IF slotFull[slot] = TRUE
bSkip = TRUE
ENDIF
if avoidSlotA != -1
if slot = avoidSlotA
bSkip = TRUE
ENDIF
ENDIF
if avoidSlotB != -1
if slot = avoidSlotB
bSkip = TRUE
ENDIF
ENDIF
if avoidSlotC != -1
if slot = avoidSlotC
bSkip = TRUE
ENDIF
ENDIF
while bSkip = TRUE
slot++
bSkip=FALSE
IF slot >= maxSlots
slot=0
ENDIF
if avoidSlotA != -1
if slot = avoidSlotA
bSkip = true
ENDIF
ENDIF
if avoidSlotB != -1
if slot = avoidSlotB
bSkip = true
ENDIF
ENDIF
if avoidSlotC != -1
if slot = avoidSlotC
bSkip = true
ENDIF
ENDIF
if bSkip = FALSE
IF slotFull[slot] = true
bSkip = true
ENDIF
ENDIF
ENDWHILE
slotFull[slot] = TRUE
// SAVE_NEWLINE_TO_DEBUG_FILE()
//SAVE_INT_TO_DEBUG_FILE(i)
//SAVE_STRING_TO_DEBUG_FILE(":")
//SAVE_INT_TO_DEBUG_FILE(slot)
switch GET_RANDOM_INT_IN_RANGE(0,4)
case 0
thisModel = BURRITO
BREAK
case 1
thisModel = DOMINATOR
BREAK
case 2
thisModel = HABANERO
BREAK
case 3
thismodel = DUBSTA
BREAK
ENDSWITCH
if avoidModel = thisMOdel
or avoidModel2 = thisMOdel
thisModel = HABANERO
ENDIF
carParkVehicles[carParkCounter] = CREATE_VEHICLE(thisModel,<<fx1+(((fx2-fx1)/to_float(maxSlots-1)) *to_float(slot)),fy1+(((fy2-fy1)/to_float(maxSlots-1)) *to_float(slot)),z>>,heading)
// SET_VEHICLE_DOORS_LOCKED(carParkVehicles[carParkCounter],VEHICLELOCK_LOCKOUT_PLAYER_ONLY)
carParkCounter++
ENDFOR
ENDPROC
/*
PROC checkBeam()
if bBeamOn = TRUE
if not IS_ENTITY_DEAD(vehicle[vehChopper].id) and not IS_ENTITY_DEAD(vehicle[vehHeist].id)
if bAimAtCar = TRUE
if DOES_ENTITY_EXIST(ped[ped_chad].id)
if not IS_PED_INJURED(ped[ped_chad].id)
vector vBeamRot = GET_ROTATION_BETWEEN_VECTORS(GET_ENTITY_COORDS(vehicle[vehChopper].id),GET_ENTITY_COORDS(ped[ped_chad].id))
DISPLAY_BEAM(GET_ENTITY_COORDS(vehicle[vehChopper].id)+<<0,0,-1.0>>,<<vBeamRot.x,vBeamRot.y,vBeamRot.z*-1>>,fBeamDrawRange,fBeamSpread)
ENDIF
ENDIF
ELSE
camera_index renCam = GET_RENDERING_CAM()
if DOES_CAM_EXIST(renCam)
IF IS_CAM_RENDERING(renCam)
DISPLAY_BEAM(GET_ENTITY_COORDS(vehicle[vehChopper].id)+<<0,0,-1.0>>,GET_CAM_ROT(renCam),fBeamDrawRange,fBeamSpread)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
*/
/*
int exCar2, iFocusFlag2
proc explodeCar(int &iCar,int &trackerFlag, int timer, int recording,int timeForFocus,int timeToStopPlayback,int timeToExplode)
int iTemp
switch trackerFlag
case 0
if timer > timeForFocus
if iCar = 0
REPEAT COUNT_OF(recordingData) itemp
if recordingData[itemp].recording = recording
iCar = itemp
trackerFlag = 1
// outputDebugData("trackerFlag = 1")
ENDIF
ENDREPEAT
ENDIF
ENDIF
BREAK
case 1
if IS_VEHICLE_DRIVEABLE(recordingData[iCar].vehicleID)
//SET_ENTITY_LOAD_COLLISION_FLAG(recordingData[iCar].vehicleID,true)
//SET_FOCUS_ENTITY(recordingData[iCar].vehicleID)
trackerFlag = 2
//outputDebugData("trackerFlag = 2")
ENDIF
break
case 2
if IS_VEHICLE_DRIVEABLE(recordingData[iCar].vehicleID)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(recordingData[iCar].vehicleID)
if timer > timeToStopPlayback
STOP_PLAYBACK_RECORDED_VEHICLE(recordingData[iCar].vehicleID)
trackerFlag = 3
//outputDebugData("trackerFlag = 3")
ENDIF
ENDIF
ELSE
trackerFlag = 0
//outputDebugData("trackerFlag = ob")
ENDIF
break
case 3
if IS_VEHICLE_DRIVEABLE(recordingData[iCar].vehicleID)
if timer > timeToExplode
EXPLODE_VEHICLE(recordingData[iCar].vehicleID)
//CLEAR_FOCUS()
trackerFlag = 0
//outputDebugData("trackerFlag = 0c")
ENDIF
ELSE
trackerFlag = 0
//outputDebugData("trackerFlag = 0d")
ENDIF
BREAK
ENDSWITCH
ENDPROC
*/
func bool do_fade(bool doFadeOut=true)
if doFadeOut = true
if not IS_SCREEN_FADED_OUT() and not IS_SCREEN_FADING_OUT()
DO_SCREEN_FADE_OUT(250)
ENDIF
if IS_SCREEN_FADED_OUT()
return TRUE
ENDIF
ELSE
if not IS_SCREEN_FADED_IN() and not IS_SCREEN_FADING_IN()
DO_SCREEN_FADE_IN(250)
ENDIF
if IS_SCREEN_FADED_IN()
return TRUE
ENDIF
ENDIF
return FALSE
ENDFUNC
/*
proc display_input_values()
int i
float fy=0.1, fx=0.1
for i = 0 to 82
if fy > 0.9
fy=0.1
fx+=0.1
ENDIF
fy+=0.04
showIntOnScreen(fx,fy,i)
showIntOnScreen(fx+0.04,fy,GET_CONTROL_VALUE(player_control,INT_TO_ENUM(CONTROL_ACTION,i)))
ENDFOR
ENDPROC
*/
func text_label get_text_label()
TEXT_LABEL txt="d"
return txt
endfunc
//================================================= PED ACTIONS ===================================
/*
FUNC STRING GET_CONTROL_VALUE_STRING(CONTROL_ACTION actionToCheck)
//PRINTLN("GET CONTROL VALUE")
SWITCH actionToCheck
CASE INPUT_NEXT_CAMERA RETURN "INPUT_NEXT_CAMERA" BREAK
CASE INPUT_SPRINT RETURN "INPUT_SPRINT" BREAK
CASE INPUT_JUMP RETURN "INPUT_JUMP" BREAK
CASE INPUT_ENTER RETURN "INPUT_ENTER" BREAK
CASE INPUT_ATTACK RETURN "INPUT_ATTACK" BREAK
CASE INPUT_AIM RETURN "INPUT_AIM" BREAK
CASE INPUT_LOOK_BEHIND RETURN "INPUT_LOOK_BEHIND" BREAK
CASE INPUT_PHONE RETURN "INPUT_PHONE" BREAK
CASE INPUT_NEXT_WEAPON RETURN "INPUT_NEXT_WEAPON" BREAK
CASE INPUT_PREV_WEAPON RETURN "INPUT_PREV_WEAPON" BREAK
CASE INPUT_SPECIAL_ABILITY RETURN "INPUT_SPECIAL_ABILITY" BREAK
CASE INPUT_SPECIAL_ABILITY_SECONDARY RETURN "INPUT_SPECIAL_ABILITY_SECONDARY" BREAK
CASE INPUT_MOVE_LR RETURN "INPUT_MOVE_LR" BREAK
CASE INPUT_MOVE_UD RETURN "INPUT_MOVE_UD" BREAK
CASE INPUT_LOOK_LR RETURN "INPUT_LOOK_LR" BREAK
CASE INPUT_LOOK_UD RETURN "INPUT_LOOK_UD" BREAK
CASE INPUT_DUCK RETURN "INPUT_DUCK" BREAK
CASE INPUT_SELECT_WEAPON RETURN "INPUT_SELECT_WEAPON" BREAK
CASE INPUT_PICKUP RETURN "INPUT_PICKUP" BREAK
CASE INPUT_SNIPER_ZOOM RETURN "INPUT_SNIPER_ZOOM" BREAK
CASE INPUT_COVER RETURN "INPUT_COVER" BREAK
CASE INPUT_RELOAD RETURN "INPUT_RELOAD" BREAK
CASE INPUT_TALK RETURN "INPUT_TALK" BREAK
CASE INPUT_DETONATE RETURN "INPUT_DETONATE" BREAK
CASE INPUT_RAPPEL_JUMP RETURN "INPUT_RAPPEL_JUMP" BREAK
CASE INPUT_RAPPEL_SMASH_WINDOW RETURN "INPUT_RAPPEL_SMASH_WINDOW" BREAK
// in vehicle controls
CASE INPUT_VEH_MOVE_LR RETURN "INPUT_VEH_MOVE_LR" BREAK
CASE INPUT_VEH_MOVE_UD RETURN "INPUT_VEH_MOVE_UD" BREAK
CASE INPUT_VEH_GUN_LR RETURN "INPUT_VEH_GUN_LR" BREAK
CASE INPUT_VEH_GUN_UD RETURN "INPUT_VEH_GUN_UD" BREAK
CASE INPUT_VEH_ATTACK RETURN "INPUT_VEH_ATTACK" BREAK
CASE INPUT_VEH_ATTACK2 RETURN "INPUT_VEH_ATTACK2" BREAK
CASE INPUT_VEH_ACCELERATE RETURN "INPUT_VEH_ACCELERATE" BREAK
CASE INPUT_VEH_BRAKE RETURN "INPUT_VEH_BRAKE" BREAK
CASE INPUT_VEH_HEADLIGHT RETURN "INPUT_VEH_HEADLIGHT" BREAK
CASE INPUT_VEH_EXIT RETURN "INPUT_VEH_EXIT" BREAK
CASE INPUT_VEH_HANDBRAKE RETURN "INPUT_VEH_HANDBRAKE" BREAK
CASE INPUT_VEH_DUCK RETURN "INPUT_VEH_DUCK" BREAK
CASE INPUT_VEH_HOTWIRE_LEFT RETURN "INPUT_VEH_HOTWIRE_LEFT" BREAK
CASE INPUT_VEH_HOTWIRE_RIGHT RETURN "INPUT_VEH_HOTWIRE_RIGHT" BREAK
CASE INPUT_VEH_LOOK_BEHIND RETURN "INPUT_VEH_LOOK_BEHIND" BREAK
CASE INPUT_VEH_CIN_CAM RETURN "INPUT_VEH_CIN_CAM" BREAK
CASE INPUT_VEH_NEXT_RADIO RETURN "INPUT_VEH_NEXT_RADIO" BREAK
CASE INPUT_VEH_PREV_RADIO RETURN "INPUT_VEH_PREV_RADIO" BREAK
CASE INPUT_VEH_HORN RETURN "INPUT_VEH_HORN" BREAK
CASE INPUT_VEH_FLY_THROTTLE_UP RETURN "INPUT_VEH_FLY_THROTTLE_UP" BREAK
CASE INPUT_VEH_FLY_THROTTLE_DOWN RETURN "INPUT_VEH_FLY_THROTTLE_DOWN" BREAK
CASE INPUT_VEH_FLY_YAW_LEFT RETURN "INPUT_VEH_FLY_YAW_LEFT" BREAK
CASE INPUT_VEH_FLY_YAW_RIGHT RETURN "INPUT_VEH_FLY_YAW_RIGHT" BREAK
// melee combat controls
CASE INPUT_MELEE_ATTACK_LIGHT RETURN "INPUT_MELEE_ATTACK_LIGHT" BREAK
CASE INPUT_MELEE_ATTACK_HEAVY RETURN "INPUT_MELEE_ATTACK_HEAVY" BREAK
CASE INPUT_MELEE_BLOCK RETURN "INPUT_MELEE_BLOCK" BREAK
// Direct controls. Used by frontend only.
CASE INPUT_FRONTEND_DOWN RETURN "INPUT_FRONTEND_DOWN" BREAK
CASE INPUT_FRONTEND_UP RETURN "INPUT_FRONTEND_UP" BREAK
CASE INPUT_FRONTEND_LEFT RETURN "INPUT_FRONTEND_LEFT" BREAK
CASE INPUT_FRONTEND_RIGHT RETURN "INPUT_FRONTEND_RIGHT" BREAK
CASE INPUT_FRONTEND_RDOWN RETURN "INPUT_FRONTEND_RDOWN" BREAK
CASE INPUT_FRONTEND_RUP RETURN "INPUT_FRONTEND_RUP" BREAK
CASE INPUT_FRONTEND_RLEFT RETURN "INPUT_FRONTEND_RLEFT" BREAK
CASE INPUT_FRONTEND_RRIGHT RETURN "INPUT_FRONTEND_RRIGHT" BREAK
CASE INPUT_FRONTEND_AXIS_X RETURN "INPUT_FRONTEND_AXIS_X" BREAK
CASE INPUT_FRONTEND_AXIS_Y RETURN "INPUT_FRONTEND_AXIS_Y" BREAK
CASE INPUT_FRONTEND_RIGHT_AXIS_X RETURN "INPUT_FRONTEND_RIGHT_AXIS_X" BREAK
CASE INPUT_FRONTEND_RIGHT_AXIS_Y RETURN "INPUT_FRONTEND_RIGHT_AXIS_Y" BREAK
CASE INPUT_FRONTEND_PAUSE RETURN "INPUT_FRONTEND_PAUSE" BREAK
CASE INPUT_FRONTEND_ACCEPT RETURN "INPUT_FRONTEND_ACCEPT" BREAK
CASE INPUT_FRONTEND_CANCEL RETURN "INPUT_FRONTEND_CANCEL" BREAK
CASE INPUT_FRONTEND_X RETURN "INPUT_FRONTEND_X" BREAK
CASE INPUT_FRONTEND_Y RETURN "INPUT_FRONTEND_Y" BREAK
CASE INPUT_FRONTEND_LB RETURN "INPUT_FRONTEND_LB" BREAK
CASE INPUT_FRONTEND_RB RETURN "INPUT_FRONTEND_RB" BREAK
CASE INPUT_FRONTEND_LT RETURN "INPUT_FRONTEND_LT" BREAK
CASE INPUT_FRONTEND_RT RETURN "INPUT_FRONTEND_RT" BREAK
CASE INPUT_FRONTEND_SELECT RETURN "INPUT_FRONTEND_SELECT" BREAK
CASE INPUT_ATTACK2 RETURN "INPUT_ATTACK2" BREAK
CASE INPUT_MELEE_ATTACK1 RETURN "INPUT_MELEE_ATTACK1" BREAK
CASE INPUT_MELEE_ATTACK2 RETURN "INPUT_MELEE_ATTACK2" BREAK
CASE INPUT_WHISTLE RETURN "INPUT_WHISTLE" BREAK
CASE INPUT_MOVE_LEFT_ONLY RETURN "INPUT_MOVE_LEFT_ONLY" BREAK
CASE INPUT_MOVE_RIGHT_ONLY RETURN "INPUT_MOVE_RIGHT_ONLY" BREAK
CASE INPUT_MOVE_UP_ONLY RETURN "INPUT_MOVE_UP_ONLY" BREAK
CASE INPUT_MOVE_DOWN_ONLY RETURN "INPUT_MOVE_DOWN_ONLY" BREAK
CASE INPUT_LOOK_LEFT RETURN "INPUT_LOOK_LEFT" BREAK
CASE INPUT_LOOK_RIGHT RETURN "INPUT_LOOK_RIGHT" BREAK
CASE INPUT_LOOK_UP RETURN "INPUT_LOOK_UP" BREAK
CASE INPUT_LOOK_DOWN RETURN "INPUT_LOOK_DOWN" BREAK
CASE INPUT_SNIPER_ZOOM_IN RETURN "INPUT_SNIPER_ZOOM_IN" BREAK
CASE INPUT_SNIPER_ZOOM_OUT RETURN "INPUT_SNIPER_ZOOM_OUT" BREAK
CASE INPUT_SNIPER_ZOOM_IN_ALTERNATE RETURN "INPUT_SNIPER_ZOOM_IN_ALTERNATE" BREAK
CASE INPUT_SNIPER_ZOOM_OUT_ALTERNATE RETURN "INPUT_SNIPER_ZOOM_OUT_ALTERNATE" BREAK
CASE INPUT_VEH_MOVE_LEFT RETURN "INPUT_VEH_MOVE_LEFT" BREAK
CASE INPUT_VEH_MOVE_RIGHT RETURN "INPUT_VEH_MOVE_RIGHT" BREAK
CASE INPUT_VEH_MOVE_UP RETURN "INPUT_VEH_MOVE_UP" BREAK
CASE INPUT_VEH_MOVE_DOWN RETURN "INPUT_VEH_MOVE_DOWN" BREAK
CASE INPUT_VEH_GUN_LEFT RETURN "INPUT_VEH_GUN_LEFT" BREAK
CASE INPUT_VEH_GUN_RIGHT RETURN "INPUT_VEH_GUN_RIGHT" BREAK
CASE INPUT_VEH_GUN_UP RETURN "INPUT_VEH_GUN_UP" BREAK
CASE INPUT_VEH_GUN_DOWN RETURN "INPUT_VEH_GUN_DOWN" BREAK
CASE INPUT_VEH_LOOK_LEFT RETURN "INPUT_VEH_LOOK_LEFT" BREAK
CASE INPUT_VEH_LOOK_RIGHT RETURN "INPUT_VEH_LOOK_RIGHT" BREAK
ENDSWITCH
RETURN "UNKNOWN"
ENDFUNC
proc FIND_CONTROL_INPUT()
//PRINTLN("FIND CON")
int i
CONTROL_ACTION thisAction
WHILE INT_TO_ENUM(CONTROL_ACTION,i) != MAX_INPUTS
thisAction = INT_TO_ENUM(CONTROL_ACTION,i)
IF IS_CONTROL_PRESSED(PLAYER_CONTROL,thisAction)
//PRINTLN("PLAYER_CONTROL: ",GET_CONTROL_VALUE_STRING(thisAction))
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,thisAction)
PRINTLN("FRONTEND_CONTROL: ",GET_CONTROL_VALUE_STRING(thisAction))
ENDIF
IF IS_CONTROL_PRESSED(camera_control,thisAction)
PRINTLN("camera_control: ",GET_CONTROL_VALUE_STRING(thisAction))
ENDIF
i++
ENDWHILE
ENDPROC
*/
FUNC INT GET_EVENTS_FLAG(EnumEvents eventToCheck)
int iE
REPEAT COUNT_OF(events) iE
if events[iE].active = TRUE
if events[iE].thisEvent = eventToCheck
return events[iE].flag
ENDIF
ENDIF
ENDREPEAT
return 0
ENDFUNC
PROC SET_EVENTS_FLAG(EnumEvents eventToCheck, int iFlagValue)
int iE
REPEAT COUNT_OF(events) iE
if events[iE].active = TRUE
if events[iE].thisevent = eventToCheck
events[iE].flag = iFlagValue
ENDIF
ENDIF
ENDREPEAT
ENDPROC
proc control_events(enumEvents specificEventToRun = EVENTS_NULL, bool bPauseFailDuringSkip = FALSE)
int i,iTemp
//float fTemp, fTemp2
//float fTemp
if not IS_ENTITY_DEAD(PLAYER_PED_ID())
for i = 0 to MAX_EVENTS-1
if events[i].active = TRUE
IF specificEventToRun = EVENTS_NULL OR events[i].thisEvent = specificEventToRun
//if mission has progressed past this event's defined final mission stage, clean it up.
if enum_to_int(missionProgress) >= enum_to_int(events[i].ForceCleanupStage)
events[i].flag = CLEANUP
ENDIF
IF events[i].flag = CLEANUP
events[i].active = FALSE
ENDIF
switch events[i].thisEvent
case EVENTS_CHOPPER_LANDS
IF DOES_ENTITY_EXIST(vehicle[vehChopper].id)
IF NOT IS_ENTITY_DEAD(vehicle[vehChopper].id)
IF events[i].flag = 0
IF not IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehChopper].id)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,true)
events[i].flag = 1
ENDIF
ELSE
IF IS_VEHICLE_SEAT_FREE(vehicle[vehChopper].id,VS_DRIVER)
SET_VEHICLE_DOORS_LOCKED(vehicle[vehChopper].id,VEHICLELOCK_UNLOCKED)
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
break
CASE EVENTS_REMOVE_FRANKLIN
if not IS_PED_INJURED(ped[ped_trevor].id)
if not IS_ENTITY_DEAD(PLAYER_PED_ID())
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(ped[ped_trevor].id),FALSE) > 200.0
DELETE_PED(ped[ped_trevor].id)
if DOES_ENTITY_EXIST(vehicle[player_vehicle].id)
DELETE_VEHICLE(vehicle[player_vehicle].id)
ENDIF
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
BREAK
CASE EVENTS_LOAD_FIRST_LOCATION_PEDS
switch events[i].flag
case 0
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),destMarker[0].coord,FALSE) < 950.0
SET_ASSET_STAGE(ASSETS_STAGE_PREP_AREA_1)
set_chopper_speed_limits(HUD,0,50)
events[i].flag++
ENDIF
BREAK
case 1
IF IS_ASSET_STAGE_READY(ASSETS_STAGE_PREP_AREA_1)
add_event(events_scene_mugging)
add_event(EVENTS_SCENE_PERVERT)
// add_event(events_witness_pervert)
events[i].flag++
ENDIF
break
CASE 2
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),destMarker[0].coord,FALSE) < 750.0
KILL_FACE_TO_FACE_CONVERSATION()
events[i].flag++
endif
break
case 3
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
// IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),destMarker[0].coord,FALSE) < 550.0
add_event(events_hover_over_first_location,STAGE_APPROACH_SCAN_AREA_THREE)
//add_event(EVENTS_STREAM_ALLEY)
set_chopper_speed_limits(HUD,0,25)
events[i].flag++
ENDIF
BREAK
case 4
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_arrive",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
START_AUDIO_SCENE("CAR_2_SCAN_THE_SUSPECTS")
events[i].flag = 2001
ENDIF
break
CASE 2001
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),destMarker[0].coord,FALSE) < 350.0
set_chopper_speed_limits(HUD,0,25)
events[i].flag = 2002
ENDIF
BREAK
CASE 2002
if not IS_ENTITY_DEAD(PLAYER_PED_ID())
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),destMarker[0].coord,FALSE) < 250.0
//HUD.speedMultiplier = 1.0
events[i].flag = 2003
ENDIF
ENDIF
BREAK
CASE 2003
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_courier].id)
OR HAS_PED_BEEN_SCANNED(HUD,ped[ped_wife].id)
OR HAS_PED_BEEN_SCANNED(HUD,ped[ped_husband].id)
OR HAS_PED_BEEN_SCANNED(HUD,ped[ped_pervert].id)
add_event(events_listen_help)
events[i].flag = 5
ENDIF
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),destMarker[0].coord,FALSE) < 220.0
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
add_event(events_listen_help)
events[i].flag = 5
ENDIF
ENDIF
BREAK
CASE 5
iTemp = 0
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_husband].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_husband].id) iTemp++ ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_pervert].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_pervert].id) iTemp++ ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_wife].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_wife].id) iTemp++ ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_courier].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_courier].id) iTemp++ ENDIF
IF iTemp = 4
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
events[i].active = FALSE
ENDIF
BREAK
ENDSWITCH
break
CASE EVENTS_LOAD_FINAL_LOCATION_PEDS
SWITCH events[i].flag
CASE 0
SET_ASSET_STAGE(ASSETS_STAGE_PREP_AREA_2)
IF NOT IS_CONV_ROOT_PLAYING("CS2_scan_wom")
AND NOT IS_CONV_ROOT_PLAYING("CS2_scanning")
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_tryNext",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
events[i].flag = 1
ENDIF
ENDIF
BREAK
CASE 1
IF IS_THIS_CONVERSATION_ROOT_PLAYING("CS2_tryNext")
events[i].flag = 2
ENDIF
BREAK
CASE 2
IF IS_ASSET_STAGE_READY(ASSETS_STAGE_PREP_AREA_2)
OR IS_ASSET_STAGE_READY(ASSETS_STAGE_RELEASE_AREA_1)
add_event(events_scene_chadGirl)
add_event(events_scene_pimp)
add_event(events_bum_on_chad_walk)
add_event(events_dog_walks_by)
events[i].flag++
ENDIF
BREAK
CASE 3
IF NOT IS_THIS_CONVERSATION_ROOT_PLAYING("CS2_tryNext")
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_husband].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_wife].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_pervert].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_courier].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_mugger].id)
events[i].flag++
ENDIF
BREAK
CASE 4
if not IS_ENTITY_DEAD(PLAYER_PED_ID())
//add_event(EVENTS_LOAD_COLLISION_AROUND_CHAD,STAGE_TAKE_ZTYPE)
add_event(events_hover_over_second_location,STAGE_CHASE_BEGINS)
events[i].flag++
ENDIF
BREAK
CASE 5
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
delete_ped(ped[ped_franklin].id)
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehFranklin].id)
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[vehFranklin].id,FALSE)
SET_ENTITY_AS_MISSION_ENTITY(vehicle[vehFranklin].id,TRUE,TRUE)
ENDIF
delete_vehicle(vehicle[vehFranklin].id)
ENDIF
IF CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << -93.4581, -66.9989, 55.8005 >>,345.5313,true,VEHICLE_TYPE_CAR)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_INVINCIBLE(vehicle[vehFranklin].id,true)
SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehicle[vehFranklin].id,false)
ENDIF
events[i].flag++
ENDIF
BREAK
CASE 6
IF CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_franklin].id,CHAR_FRANKLIN,vehicle[vehFranklin].id)
//ped[ped_chadGirl].id = CREATE_PED (PEDTYPE_MISSION ,U_F_Y_JEWELASS_01,<< 205.9948, -112.6291, 67.8807 >>, 238.3422)
if IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
if IS_VEHICLE_SEAT_FREE(vehicle[vehFranklin].id)
SET_PED_INTO_VEHICLE(ped[ped_franklin].id,vehicle[vehFranklin].id)
ENDIF
START_PLAYBACK_RECORDED_VEHICLE(vehicle[vehFranklin].id,102,sVehicleRecordingLibrary)
SET_ROADS_IN_ANGLED_AREA(<<-48.346008,-109.031822,82.549194>>, <<195.550781,-197.283768,-38.864712>>, 155.812500,FALSE,FALSE)
ENDIF
events[i].flag++
ENDIF
BREAK
CASE 7
if DOES_ENTITY_EXIST(ped[ped_chad].id) and DOES_ENTITY_EXIST(ped[ped_chadGirl].id) and DOES_ENTITY_EXIST(ped[ped_punter].id) and DOES_ENTITY_EXIST(ped[ped_hooker].id) and DOES_ENTITY_EXIST(ped[ped_pimp].id)
AND DOES_ENTITY_EXIST(ped[ped_dog_walk].id) AND DOES_ENTITY_EXIST(ped[ped_bum].id)
PRINT_NOW("CH_INS12C",6000,1)
EMPTY_SCAN_LIST(HUD)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_chad].id,true,HUD_FOE,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_chad].id,"CH_CHAD",8)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_chadGirl].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_chadGirl].id,"CH_NAME9",7)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_punter].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_punter].id,"CH_NAME7",6)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_hooker].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_hooker].id,"CH_NAME8",1)
set_ped_scan_crime(HUD,ped[ped_hooker].id,0)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_pimp].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_pimp].id,"CH_NAME6",2)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_dog_walk].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_dog_walk].id,"CH_NAME10",5)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_bum].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_bum].id,"CH_NAME11",3)
events[i].flag++
ENDIF
BREAK
CASE 8
if HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
KILL_EVENT(events_scene_pimp)
KILL_EVENT(EVENTS_SCENE_PERVERT)
KILL_EVENT(events_scene_mugging)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chadGirl].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_chadGirl].id)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_punter].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_punter].id)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_hooker].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_hooker].id)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_pimp].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_pimp].id)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_dog_walk].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_dog_walk].id)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
ENDIF
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_bum].id) OR NOT IS_PED_IN_SCAN_LIST(HUD,ped[ped_bum].id)
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED)
ENDIF
INFORM_MISSION_STATS_OF_INCREMENT(CS2_TARGETS_SCANNED) //chad
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_chadGirl].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_punter].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_hooker].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_pimp].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_dog_walk].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_bum].id)
events[i].active = FALSE
ENDIF
BREAK
ENDSWITCH
break
case EVENTS_CLEAR_FINAL_LOCATION
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_chadGirl].id)
if not IS_PED_INJURED(ped[ped_chadGirl].id)
SET_PED_KEEP_TASK(ped[ped_chadGirl].id,true)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_chadGirl].id)
ENDIF
events[i].active = FALSE
break
CASE EVENTS_CHOPPER_BLADES
if DOES_ENTITY_EXIST(vehicle[vehChopper].id)
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_VEHICLE_ENGINE_ON(vehicle[vehChopper].id,true,true)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
ENDIF
ENDIF
BREAK
CASE events_disable_franklin_car
if IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_VEHICLE_ENGINE_ON(vehicle[vehFranklin].id,FALSE,FALSE)
SET_VEHICLE_ENGINE_HEALTH(vehicle[vehFranklin].id,100)
ENDIF
BREAK
CASE EVENTS_HOVER_CHOPPER
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
NAVIGATE_TO_POINT(HUD,vehicle[vehChopper].id,GET_ENTITY_COORDS(vehicle[vehHeist].id))
ENDIF
BREAK
CASE EVENTS_FILL_CARPARK
SWITCH events[i].flag
CASE CLEANUP
events[i].active = FALSE
BREAK
CASE 0
IF NOT IS_ASSET_STAGE_READY(ASSETS_STAGE_PREP_CAR_PARK)
SET_ASSET_STAGE(ASSETS_STAGE_PREP_CAR_PARK)
ENDIF
// add_event(events_scene_car_fuck)
// add_event(events_scene_car_wank)
events[i].flag++
BREAK
CASE 1
IF IS_ASSET_STAGE_READY(ASSETS_STAGE_PREP_CAR_PARK)
events[i].flag++
ENDIF
BREAK
CASE 2
initVehicle(veh_camper,BURRITO,<< -1306.9370, -218.7608, 50.5497 >>, 303.7934)
initVehicle(veh_postie,BURRITO,<< -1281.5746, -223.2485, 50.5497 >>, 35.5040)
initVehicle(veh_vanhide,BURRITO,<< -1264.3513, -245.3335, 50.5499 >>, 214.0007)
initVehicle(veh_phoneChat,HABANERO,<<-1260.8893, -226.0429, 50.5499>>, 303.0007)
initVehicle(veh_lean,DUBSTA,<<-1292.8159, -185.4189, 50.5497>>, 33.0002)
SET_VEHICLE_LIVERY(vehicle[veh_camper].id,1)
SET_VEHICLE_LIVERY(vehicle[veh_postie].id,2)
SET_VEHICLE_LIVERY(vehicle[veh_vanhide].id,3)
SET_VEHICLE_DOOR_OPEN(vehicle[veh_phoneChat].id,SC_DOOR_FRONT_LEFT)
SET_VEHICLE_DOORS_LOCKED(vehicle[veh_camper].id,VEHICLELOCK_LOCKOUT_PLAYER_ONLY)
//SET_VEHICLE_DOORS_LOCKED(vehicle[veh_postie].id,VEHICLELOCK_LOCKOUT_PLAYER_ONLY)
//SET_VEHICLE_DOORS_LOCKED(vehicle[veh_wrong1].id,VEHICLELOCK_LOCKOUT_PLAYER_ONLY)
SET_VEHICLE_DOORS_LOCKED(vehicle[veh_vanhide].id,VEHICLELOCK_LOCKOUT_PLAYER_ONLY)
SET_VEHICLE_IS_CONSIDERED_BY_PLAYER(vehicle[veh_vanhide].id, FALSE)
//initped(ped_wrong_wanker,S_M_M_JANITOR,vNull,0.0,vehicle[veh_wrong1].id,VS_DRIVER,pedrole_civilian)
//brainPlayAnim()
events[i].flag++
BREAK
CASE 3
fillSlots(-1311.5907, -212.4394,-1289.1437, -244.9437, 50.5497,125,11,4,1,2,-1,dubsta,BURRITO)
IF IS_REPLAY_BEING_SET_UP()
fillSlots(-1277.0620, -255.4843,-1254.7090, -239.9274, 50.5497,215,8,2,4,5)
fillSlots(-1258.6924, -228.6362,-1283.9841, -193.4677, 50.5497,306.5,12,3,5,4,1)
fillSlots(-1292.8164, -185.4186,-1315.0455, -200.8566, 50.5497,33,8,3,0)
fillSlots(-1310.9569, -211.8995,-1288.5760, -243.4570, 55.1017,125,11,3)
fillSlots(-1277.0620, -255.4843,-1254.7090, -239.9274, 55.1017,215,8,2)
fillSlots(-1258.6924, -228.6362,-1283.9841, -193.4677, 55.1017,306.5,12,4)
fillSlots(-1292.8164, -185.4186,-1315.0455, -200.8566, 55.1017,33,8,2)
events[i].flag = cleanup
ELSE
events[i].flag = 4
events[i].timer = GET_GAME_TIMER() + 500
ENDIF
BREAK
CASE 4
IF GET_GAME_TIMER() > events[i].timer
fillSlots(-1277.0620, -255.4843,-1254.7090, -239.9274, 50.5497,215,8,2,4,5)
events[i].timer = GET_GAME_TIMER() + 500
events[i].flag = 5
ENDIF
BREAK
CASE 5
IF GET_GAME_TIMER() > events[i].timer
fillSlots(-1258.6924, -228.6362,-1283.9841, -193.4677, 50.5497,306.5,12,3,5,4,1)
events[i].timer = GET_GAME_TIMER() + 500
events[i].flag = 6
ENDIF
BREAK
CASE 6
IF GET_GAME_TIMER() > events[i].timer
fillSlots(-1292.8164, -185.4186,-1315.0455, -200.8566, 50.5497,33,8,3,0)
events[i].timer = GET_GAME_TIMER() + 500
events[i].flag = 7
ENDIF
BREAK
CASE 7
IF GET_GAME_TIMER() > events[i].timer
fillSlots(-1310.9569, -211.8995,-1288.5760, -243.4570, 55.1017,125,11,3)
events[i].timer = GET_GAME_TIMER() + 500
events[i].flag = 8
ENDIF
BREAK
CASE 8
IF GET_GAME_TIMER() > events[i].timer
fillSlots(-1277.0620, -255.4843,-1254.7090, -239.9274, 55.1017,215,8,2)
events[i].timer = GET_GAME_TIMER() + 500
events[i].flag = 9
ENDIF
BREAK
CASE 9
IF GET_GAME_TIMER() > events[i].timer
fillSlots(-1258.6924, -228.6362,-1283.9841, -193.4677, 55.1017,306.5,12,4)
events[i].timer = GET_GAME_TIMER() + 500
events[i].flag = 10
ENDIF
BREAK
CASE 10
IF GET_GAME_TIMER() > events[i].timer
fillSlots(-1292.8164, -185.4186,-1315.0455, -200.8566, 55.1017,33,8,2)
events[i].flag = cleanup
ENDIF
BREAK
ENDSWITCH
BREAK
/*
case EVENTS_GETCHAD_INST
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
if not IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[vehHeist].id)
PRINT("CH_INS24",DEFAULT_GOD_TEXT_TIME,1)
ENDIF
ENDIF
events[i].active=FALSE
ENDIF
BREAK
*/
CASE EVENTS_KILL_CONVERSATION_WHEN_LEAVING_CAR
If events[i].flag = 0
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
if IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[vehHeist].id)
events[i].flag = 1
ENDIF
ENDIF
ELIF events[i].flag = 1
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
if not IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[vehHeist].id)
events[i].active = FALSE
ENDIF
ENDIF
ELSE
events[i].active = FALSE
ENDIF
ENDIF
BREAK
case events_blow_up_cars
// explodeCar(exCar1,iFocusFlag1,iPlaybackTime, 40,55920,65400,65400)
// explodeCar(exCar2,iFocusFlag2,iPlaybackTime,51,70000,77900,77900)
/*
if events[i].flag = 0
events[i].timer = iStartPlaybackTime
events[i].flag = 1
ELIF events[i].flag = 1
if GET_GAME_TIMER() - events[i].timer > 43920
SET_FOCUS_ENTITY()
if GET_GAME_TIMER() - events[i].timer > 63920
REPEAT COUNT_OF(recordingData) itemp
if recordingData[itemp].recording = 40
if IS_VEHICLE_DRIVEABLE(recordingData[itemp].vehicleID)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(recordingData[itemp].vehicleID)
STOP_PLAYBACK_RECORDED_VEHICLE(recordingData[itemp].vehicleID)
APPLY_FORCE_TO_ENTITY(recordingData[itemp].vehicleID,APPLY_TYPE_IMPULSE,<< 1,-7,2 >>,<<-1,1,0>>,0,FALSE,true,true)
//EXPLODE_VEHICLE(recordingData[itemp].vehicleID,TRUE)
itemp = 500
events[i].flag = 2
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
ELIF events[i].flag = 2
if GET_GAME_TIMER() - events[i].timer > 78034
REPEAT COUNT_OF(recordingData) itemp
if recordingData[itemp].recording = 51
if IS_VEHICLE_DRIVEABLE(recordingData[itemp].vehicleID)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(recordingData[itemp].vehicleID)
STOP_PLAYBACK_RECORDED_VEHICLE(recordingData[itemp].vehicleID)
APPLY_FORCE_TO_ENTITY(recordingData[itemp].vehicleID,APPLY_TYPE_IMPULSE,<< -5,-8,2 >>,<<0,0,0>>,0,FALSE,true,true)
//EXPLODE_VEHICLE(recordingData[itemp].vehicleID,TRUE)
itemp = 500
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDIF
*/
BREAK
CASE EVENTS_CHOPPER_TRACKS_FRANKLIN
if events[i].flag = 0
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,FALSE)
ENDIF
bDisplayBeam=FALSE
events[i].flag = 1
ELIF events[i].flag = 1
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_CHOPPER_TO_TARGET(<< -1307.6479, -244.7984, 145.0250 >>,<<0,0,-50.0>>)
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
if IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[vehHeist].id)
events[i].flag = 2
ENDIF
ENDIF
ELIF events[i].flag = 2
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_CHOPPER_TO_TARGET(GET_ENTITY_COORDS(vehicle[vehHeist].id)+<<0,0,120>>,<<0,0,0>>)
ENDIF
ENDIF
break
CASE EVENTS_CHOPPER_CARPARK
switch events[i].flag
case cleanup
clearHoverInArea(hud)
SET_CHOPPER_HUD_ACTIVE(hud,vehicle[vehChopper].id,false, vehicle[vehChopper].id)
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",FALSE)
ENABLE_SELECTOR()
break
case 0
set_chopper_speed_limits(hud,0,9.0)
clearHoverInArea(hud)
events[i].flag++
break
case 1
if GET_TO_POINT(hud,<< -1275.1460, -277.1535, 54 >>,5.0)//<< -1292.4032, -283.9487, 89.8351 >>,30.0)
set_chopper_speed_limits(hud,0.3,6.0)
fixChopperHeading(hud,-55.6696)
events[i].flag=4
ENDIF
BREAK
case 2
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
if GET_DISTANCE_BETWEEN_COORDS(<< -1309.6600, -241.7653, 54 >>,GET_ENTITY_COORDS(vehicle[vehChopper].id)) < 7.0
set_chopper_speed_limits(hud,0.3,1.0)
ENDIF
if GET_TO_POINT(hud,<< -1298.6008, -248.6288, 54 >>,4.0)
set_chopper_speed_limits(hud,0.3,6.0)
events[i].flag=4
ENDIF
ENDIF
BREAK
case 3
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
if GET_DISTANCE_BETWEEN_COORDS(<< -1305.5187, -238.6272, 54 >>,GET_ENTITY_COORDS(vehicle[vehChopper].id)) < 7.0
set_chopper_speed_limits(hud,0.3,1.0)
ENDIF
if GET_TO_POINT(hud,<< -1309.1571, -240.8424, 54 >>,2.0)//<< -1305.5187, -238.6272, 54.0552 >>,2.0)
set_chopper_speed_limits(hud,0.3,0.7)
events[i].flag++
ENDIF
ENDIF
break
case 4
if GET_DISTANCE_BETWEEN_COORDS(<< -1301.2561, -253.3784, 54 >>,GET_ENTITY_COORDS(vehicle[vehChopper].id)) < 5.0
set_chopper_speed_limits(hud,0.3,0.7)
ENDIF
if GET_TO_POINT(hud,<< -1301.2561, -253.3784, 54 >>,2.0)
set_chopper_speed_limits(hud,0.3,0.7)
events[i].flag++
ENDIF
BREAK
case 5
// if GET_TO_POINT(hud,<< -1309.6600, -241.7653, 53.5238 >>,2.0)
if GET_TO_POINT(hud,<< -1309.1571, -240.8424, 54 >>,2.0)
set_chopper_speed_limits(hud,0.3,0.7)
events[i].flag=4
ENDIF
BREAK
ENDSWITCH
BREAK
case EVENTS_CHOPPER_HOVER
SET_CHOPPER_TO_TARGET(<< -1310.6067, -240.0043, 57.9243 >>+<<GET_RANDOM_FLOAT_IN_RANGE(-0.5,0.5),GET_RANDOM_FLOAT_IN_RANGE(-0.5,0.5),GET_RANDOM_FLOAT_IN_RANGE(-0.5,0.5)>>,<<0,0,-50>>)
BREAK
CASE EVENTS_CONTROL_INFRARED
IF infraRed = true
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
ENDIF
switch events[i].flag
case cleanup
infraRed = FALSE
break
case 0
//PRINTLN("TEST")
//FIND_CONTROL_INPUT()
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CONTEXT)
IF infraRed = true
SET_INFRARED(FALSE)
infraRed = FALSE
PLAY_SOUND_FRONTEND(-1,"Thermal_Off","CAR_STEAL_2_SOUNDSET")
STOP_AUDIO_SCENE("CAR_2_USE_INFRARED")
//bDisplayBeam = true
ELSE
infraRed = true
// bDisplayBeam = FALSE
SET_INFRARED(TRUE)
START_AUDIO_SCENE("CAR_2_USE_INFRARED")
PLAY_SOUND_FRONTEND(-1,"Thermal_On","CAR_STEAL_2_SOUNDSET")
ENDIF
events[i].flag++
events[i].timer = GET_GAME_TIMER() + 1000
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS30")
If infraRed = true
CLEAR_PRINTS()
endif
ENDIF
break
case 1
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS30")
If infraRed = true
CLEAR_PRINTS()
endif
ENDIF
IF GET_GAME_TIMER() > events[i].timer
events[i].flag = 0
ENDIF
break
ENDSWITCH
BREAK
CASE EVENTS_CONVERSATION_ON_ROUTE
IF events[i].flag = 0
events[i].timer = get_game_timer() + 6000
events[i].flag = 1
ELIF events[i].flag = 1
If GET_GAME_TIMER() > events[i].timer
ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA(CONVTYPE_GAMEPLAY,"CS2_explain",0,ped[ped_trevor].id,"Trevor",2,ped[ped_pilot].id,"ChopperPilot")
events[i].flag = 2
ENDIF
ELIF events[i].flag = 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
events[i].active = FALSE
ENDIF
ENDIF
BREAK
CASE EVENTS_KEEP_CHAD_SAFE
IF events[i].flag = 0
IF NOT IS_PED_INJURED(ped[ped_chad].id)
// SET_PED_CAN_BE_TARGETTED(ped[ped_chad].id,FALSE) //1063801
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_chad].id,FALSE)
SET_PED_CAN_BE_SHOT_IN_VEHICLE(ped[ped_chad].id,FALSE)
SET_PED_SUFFERS_CRITICAL_HITS(ped[ped_chad].id,FALSE)
SET_PED_COMBAT_ATTRIBUTES(ped[ped_chad].id,CA_ALWAYS_FLEE,FALSE)
SET_PED_COMBAT_ATTRIBUTES(ped[ped_chad].id,CA_FLEE_WHILST_IN_VEHICLE,FALSE)
SET_PED_COMBAT_ATTRIBUTES(ped[ped_chad].id,CA_USE_VEHICLE,FALSE)
events[i].flag = 1
ENDIF
ELIF events[i].flag = 1
IF NOT DOES_ENTITY_EXIST(ped[ped_chad].id)
events[i].flag = 0
ENDIF
ELIF events[i].flag = CLEANUP
IF DOES_ENTITY_EXIST(ped[ped_chad].id)
SET_PED_CAN_BE_TARGETTED(ped[ped_chad].id,TRUE)
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_chad].id,TRUE)
SET_PED_CAN_BE_SHOT_IN_VEHICLE(ped[ped_chad].id,TRUE)
SET_PED_SUFFERS_CRITICAL_HITS(ped[ped_chad].id,TRUE)
ENDIF
ENDIF
BREAK
CASE EVENTS_REMOVE_CARPARK_ASSETS
IF DOES_ENTITY_EXIST(ped[ped_chad].id)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,PLAYER_PED_ID()) > 100.0
SET_ped_AS_NO_LONGER_NEEDED(ped[ped_chad].id)
SET_MODEL_AS_NO_LONGER_NEEDED(model_chad)
IF DOES_ENTITY_EXIST(vehicle[vehFranklin].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[vehFranklin].id)
ENDIF
REMOVE_ANIM_DICT("misscarsteal2car_stolen")
REMOVE_ANIM_DICT("misscarsteal2chad_Garage")
REMOVE_VEHICLE_RECORDING(301,sVehicleRecordingLibrary)
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
BREAK
CASE EVENTS_REMOVE_CARPARK_CARS
// IF GET_DISTANCE_BETWEEN_COORDS(<< -1291.3961, -215.8462, 38.4461 >>,GET_ENTITY_COORDS(PLAYER_PED_ID())) > 150.0
repeat COUNT_OF(carParkVehicles) iTemp
SET_VEHICLE_AS_NO_LONGER_NEEDED(carParkVehicles[itemp])
ENDREPEAT
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_postie].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_camper].id)
// SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_wrong1].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_vanhide].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[veh_wrong2].id)
events[i].active = FALSE
// ENDIF
BREAK
CASE EVENTS_SPEED_UP_CHOPPER
//SET_CHOPPER_TO_TARGET(<<263.9558, -203.4580, 128.9033>>,<<0,0,0.0>>,5.0)
if events[i].flag = 0
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_ENTITY_IN_ANGLED_AREA( vehicle[vehChopper].id, <<198.493317,-177.111450,53.297363>>, <<257.798859,-198.757294,210.079193>>, 115.937500)
set_chopper_speed_limits(HUD,0,1.5)
ELSe
set_chopper_speed_limits(HUD,0,3.5)
ENDIF
ENDIF
vector vTemp
vTemp = GET_ENTITY_COORDS(vehicle[vehChopper].id)
IF vTemp.x < 205
if GET_TO_POINT(HUD,<< 155.1646, -181.1793, 160.3576 >>,15.0)
createHoverInArea(HUD,<< 247.38, -186.19, 135 >>,7.0,6.0,FALSE)
events[i].flag = 1
ENDIF
ELSE
createHoverInArea(HUD,<< 247.38, -186.19, 135 >>,7.0,6.0,FALSE)
events[i].flag = 1
ENDIF
elif events[i].flag = 1
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_ENTITY_IN_ANGLED_AREA( vehicle[vehChopper].id, <<198.493317,-177.111450,53.297363>>, <<257.798859,-198.757294,210.079193>>, 115.937500)
set_chopper_speed_limits(HUD,0,1.5)
ELSe
set_chopper_speed_limits(HUD,0,3.5)
ENDIF
ENDIF
ELIF events[i].flag = 2
events[i].flag = 3
clearHoverInArea(HUD)
ELIF events[i].flag = 3
if not IS_SPHERE_VISIBLE(<< 199.8876, -157.8262, 57.4081 >>,10.0)
set_chopper_speed_limits(HUD)
events[i].active=FALSE
ENDIF
ENDIF
BREAK
CASE EVENTS_PRINT_CHADBUST_MESSAGE
if events[i].flag = 0
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
TEXT_LABEL_15 sTr
sTr = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
if are_strings_equal(sTr,"cs2_seeChad3")
events[i].flag = 1
ENDIF
ENDIF
ELIF events[i].flag = 1
IF not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINT("CH_INS14",6000,1)
events[i].active = FALSE
ENDIF
ENDIF
BREAK
CASE EVENTS_FRANKLIN_ARRIVE
switch events[i].flag
case 0
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_VEHICLE_LIGHTS(vehicle[vehFranklin].id,FORCE_VEHICLE_LIGHTS_ON)
START_PLAYBACK_RECORDED_VEHICLE(vehicle[vehFranklin].id,103,sVehicleRecordingLibrary)
REQUEST_VEHICLE_RECORDING(100,"cs2")
ENDIF
events[i].flag++
break
case 1
if IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehFranklin].id)
events[i].flag++
ENDIF
ENDIF
BREAK
CASE 2
if IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
if not IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehFranklin].id)
START_PLAYBACK_RECORDED_VEHICLE(vehicle[vehFranklin].id,100,"cs2")
PAUSE_PLAYBACK_RECORDED_VEHICLE(vehicle[vehFranklin].id)
events[i].active=FALSE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE EVENTS_DRIVE_OFF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
if events[i].flag = 0
if not IS_PED_INJURED(ped[ped_chad].id)
CLEAR_PED_TASKS_IMMEDIATELY(ped[ped_chad].id)
ENDIF
TASK_EXTEND_ROUTE(<<202.16, -154.30, 56.13>>)
TASK_EXTEND_ROUTE(<<202.16, -154.30, 56.13>>)
TASK_FOLLOW_POINT_ROUTE(ped[ped_chad].id,pedmove_run,TICKET_SINGLE)
events[i].flag = 1
events[i].timer = GET_GAME_TIMER()+3000
//iStartPlaybackTime = GET_GAME_TIMER() + 2000
elif events[i].flag = 1
IF GET_GAME_TIMER() > events[i].timer
if not IS_PED_INJURED(ped[ped_chad].id)
SET_PED_INTO_VEHICLE(ped[ped_chad].id,vehicle[vehHeist].id)
ENDIF
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_chad].id)
bplayVehRecs = true
iPlaybackTime = 0
//add_event(events_chase_chatter)
add_event(events_blow_up_cars)
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
BREAK
CASE EVENTS_REPOSITION_HEIST_CAR
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF not IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehHeist].id)
SET_VEHICLE_LIGHTS(vehicle[vehHeist].id,FORCE_VEHICLE_LIGHTS_OFF)
SET_ENTITY_COORDS(vehicle[vehHeist].id,<< -1309.5819, -215.2148, 50.5497 >>)
SET_ENTITY_HEADING(vehicle[vehHeist].id,122.987)
events[i].active = FALSE
ENDIF
ENDIF
if events[i].flag = CLEANUP
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
FREEZE_ENTITY_POSITION(vehicle[vehHeist].id,FALSE)
ENDIF
ENDIF
BREAK
case events_chopper_push
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
set_chopper_speed_limits(hud,0,GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),vehicle[vehHeist].id,FALSE)/5.0)
if IS_ENTITY_AT_COORD(vehicle[vehHeist].id,<< 21.5236, -217.2817, 53.0341 >>,<<150,150,400>>)
if events[i].flag = 0
events[i].flag = 1
ENDIF
ENDIF
if IS_ENTITY_AT_COORD(vehicle[vehHeist].id,<< -269.0054, -103.5025, 47.5659 >>,<<200,200,400>>)
if events[i].flag < 4
events[i].flag = 4
ENDIF
ENDIF
if IS_ENTITY_AT_COORD(vehicle[vehHeist].id,<< -1110.0933, -264.0582, 40.8865 >>,<<100,100,400>>)
if events[i].flag < 7
events[i].flag = 7
ENDIF
ENDIF
ENDIF
SWITCH events[i].flag
case 1
if IS_SPHERE_VISIBLE(<< 21.5236, -217.2817, 53.0341 >>,50.0)
events[i].flag=2
ENDIF
break
case 2
if GET_TO_POINT(hud,<< 10.4487, -206.1065, -1.0 >>,25)
events[i].flag=3
ENDIF
BREAK
case 4
if IS_SPHERE_VISIBLE(<< -269.0054, -103.5025, 47.5659 >>,50.0)
events[i].flag++
ENDIF
break
case 5
if GET_TO_POINT(hud,<< -281.4530, -137.3323, 205.2054 >>,15)
events[i].flag=6
ENDIF
BREAK
case 7
createHoverInArea(hud,<< -1157.7358, -312.9930, 170.3401 >>,10.0)
events[i].flag++
break
ENDSWITCH
BREAK
CASE EVENTS_DEAL_WITH_PLAYER_CAR
If events[i].flag = 0
//what to do if player turns up in a car / his car / on foot
RESOLVE_VEHICLES_AT_MISSION_TRIGGER(<<1403.3, -2059.55, 52>>, 32.6853,true,VEHICLE_TYPE_CAR)
events[i].flag = 1
elif events[i].flag = 1
IF CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << 1394.1700, -2064.9812, 50.9997 >>, 65.3178,true,VEHICLE_TYPE_CAR)
events[i].active = FALSE
ENDIF
ENDIF
BREAK
case events_change_playback_speed
fPlaybackSpeed=1.0
if events[i].flag=0
fPlaybackSpeed = 0.7
events[i].flag=1
ELIF events[i].flag=1
if iPlaybackTime > 15000
fPlaybackSpeed += (TIMESTEP() * 0.01)
if fPlaybackSpeed >= 1.25
fPlaybackSpeed = 1.25
//events[i].flag=2
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
BREAK
CASE EVENTS_OPEN_GARAGE
IF events[i].flag = CLEANUP
//set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,FALSE,-2)
SET_GARAGE_DOOR_STATE(GD_RESET)
CLEAR_FOCUS()
endif
SWITCH events[i].flag
CASE 0
if not IS_PED_INJURED(ped[ped_chad].id)
SET_FOCUS_ENTITY(ped[ped_chad].id)
ENDIF
/* fOpenRatio=0
object_index obja
//set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,true,0)
IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<201.400284,-153.364517,57.848885>>,1.0,PROP_GAR_DOOR_05)
obja = GET_CLOSEST_OBJECT_OF_TYPE(<<201.400284,-153.364517,57.848885>>,1.0,PROP_GAR_DOOR_05)
// SET_ENTITY_VISIBLE(obja,false)
set_entity_coords(obja,<<201.400284,-153.364517,47.848885>>)
ENDIF
fakeGarageDoor = CREATE_OBJECT_NO_OFFSET(PROP_GAR_DOOR_05,<<201.400284,-153.364517,57.848885>>)
set_entity_rotation(fakeGarageDoor,<<-1.441772,-0.000000,-20.000166>>)
*/
SET_GARAGE_DOOR_STATE(GD_OPEN)
//set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,false,fOpenRatio)
events[i].flag = 10
BREAK
CASE 1
//set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,true,fOpenRatio)
events[i].flag = 3
/*
fOpenRatio += 0.15*TIMESTEP()
if fOpenRatio >= 1.0
fOpenRatio=1.0
set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,true,fOpenRatio)
ELSE
//cprintln(debug_trevor3,"Open ratio: ",fOpenRatio)
set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,true,fOpenRatio)
ENDIF
IF NOT IS_ANY_VEHICLE_NEAR_POINT(<<201.4,-153.4,57.8>>,10.0)
AND DOES_ENTITY_EXIST(vehicle[vehHeist].id)
events[i].flag = 2
ENDIF*/
BREAK
CASE 2
fOpenRatio -= 0.15*TIMESTEP()
if fOpenRatio <= 0.0
fOpenRatio=0.0
set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,false,fOpenRatio)
CLEAR_FOCUS()
events[i].active = FALSE
ELSE
set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,FALSE,fOpenRatio)
ENDIF
BREAK
case 10
IF missionProgress = STAGE_CHASE_BEGINS
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehHeist].id)
IF GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehicle[vehHeist].id) = GET_VEHICLE_RECORDING_ID(401, "cs2")
SET_GARAGE_DOOR_STATE(GD_NO_LONGER_NEEDED)
CLEAR_FOCUS()
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
break
ENDSWITCH
BREAK
case EVENTS_CHOPPER_AT_START
SWITCH events[i].flag
CASE CLEANUP
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehChopper].id)
STOP_PLAYBACK_RECORDED_VEHICLE(vehicle[vehChopper].id)
ENDIF
ENDIF
BREAK
CASE 0
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF NOT IS_PED_INJURED(ped[ped_pilot].id)
SET_ENTITY_VELOCITY(vehicle[vehChopper].id,<<0,15,0>>)
TASK_HELI_MISSION(ped[ped_pilot].id,vehicle[vehChopper].id,null,null,<<1359.7988, -2074.8599, 74.8290>>,MISSION_GOTO,15,10,-1,0,20)
events[i].flag++
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE EVENTS_CHAD_COWER
if events[i].flag = 0
events[i].timer = GET_ENTITY_HEALTH(ped[ped_chad].id)
events[i].flag = 1
ELIF events[i].flag = 1
if not IS_PED_INJURED(ped[ped_chad].id)
if GET_ENTITY_HEALTH(ped[ped_chad].id) < events[i].timer
CLEAR_PED_TASKS(ped[ped_chad].id)
seq()
TASK_COWER(null,-1)
TASK_PLAY_ANIM(null,"misscarsteal2CHAD_GARAGE", "chad_parking_garage_handsuploop_chad",2,normal_blend_out,-1,AF_SECONDARY | AF_UPPERBODY | AF_LOOPING)
endseq(ped[ped_chad].id)
events[i].active = FALSE
ENDIF
if IS_PLAYER_TARGETTING_ENTITY(PLAYER_ID(),ped[ped_chad].id)
if HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(ped[ped_chad].id,PLAYER_PED_ID())
CLEAR_PED_TASKS(ped[ped_chad].id)
TASK_COWER(ped[ped_chad].id,-1)
events[i].active = FALSE
ENDIF
ENDIF
ELSE
events[i].active = FALSE
ENDIF
ENDIF
BREAK
CASE EVENTS_FAIL_CHASE
if events[i].flag = 0
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
//PRINTLN(GET_DISTANCE_BETWEEN_ENTITIES(vehicle[vehHeist].id,player_ped_id(),FALSE))
if GET_DISTANCE_BETWEEN_ENTITIES(vehicle[vehHeist].id,player_ped_id(),FALSE) > 400.0
//if not IS_ENTITY_ON_SCREEN(vehicle[vehHeist].id)
// if TIMERB() > 2000
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
Tell_mission_to_fail("CH_F20")
endif
//ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA("cs2_lostcar",0,ped[ped_Trevor].id,"Trevor")
// IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_lostcar",0,ped[ped_Trevor].id,"Trevor")
// events[i].flag = 1
// ENDIF
// ENDIF
//ELSE
// SETTIMERB(0)
//ENDIF
//ELSE
// SETTIMERB(0)
ENDIF
ENDIF
ELIF events[i].flag = 1
TEXT_LABEL_23 tl
tl= GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
if ARE_STRINGS_EQUAL(tl,"cs2_lostcar")
events[i].flag = 2
ENDIF
ELIF events[i].flag = 2
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
//Mission_Failed("CH_F08")
Tell_mission_to_fail("CH_F20")
ENDIF
ENDIF
BREAK
CASE EVENTS_LOAD_COLLISION_AROUND_CHAD
if not IS_PED_INJURED(ped[ped_chad].id)
if not IS_PED_IN_ANY_VEHICLE(ped[ped_chad].id)
SET_ENTITY_LOAD_COLLISION_FLAG(ped[ped_chad].id,true)
//REQUEST_COLLISION_AT_COORD(GET_ENTITY_COORDS(ped[ped_chad].id))
ELSE
SET_ENTITY_LOAD_COLLISION_FLAG(ped[ped_chad].id,FALSE)
events[i].active=FALSE
ENDIF
ENDIF
break
case EVENTS_STREAM_ALLEY
events[i].active=FALSE
/* //commented out due to memory issues
if events[i].flag = cleanup
if STREAMVOL_IS_VALID(sVol)
//PRINTLN("****************** STREAM OUT ****************************")
STREAMVOL_DELETE(sVol)
ENDIF
events[i].active=FALSE
ENDIF
if events[i].flag = 0
//PRINTLN("****************** STREAM IN ****************************")
sVol = STREAMVOL_CREATE_SPHERE(<< -30.5561, -89.9123, 57.0928 >>,10.0,FLAG_MAPDATA)
events[i].flag = 1
ENDIF */
BREAK
case events_scene_mugging
if is_event_complete(EVENTS_LOAD_FIRST_LOCATION_PEDS)
if not is_point_in_screeen_area(<< -29.8705, -86.0999, 57.4479 >>,0,0,1,1)
events[i].timer += floor(TIMESTEP() * 1000)
if events[i].timer > 5000
events[i].flag = CLEANUP
ENDIF
ENDIF
ENDIF
//force_ped_plays_anims(ped_courier)
//force_ped_plays_anims(ped_mugger)
switch events[i].flag
case CLEANUP
if does_entity_exist(vehicle[vehDeliveryVan].id)
SET_vehicle_AS_NO_LONGER_NEEDED(vehicle[vehDeliveryVan].id)
ENDIF
if does_entity_exist(ped[ped_courier].id)
IF NOT IS_PED_INJURED(ped[ped_courier].id)
SET_PED_KEEP_TASK(ped[ped_courier].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_courier].id)
ENDIF
ENDIF
if does_entity_exist(ped[ped_busDriver].id)
IF NOT IS_PED_INJURED(ped[ped_busDriver].id)
SET_PED_KEEP_TASK(ped[ped_busDriver].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_busDriver].id)
ENDIF
ENDIF
// if does_entity_exist(ped[ped_mugger].id)
// SET_PED_AS_NO_LONGER_NEEDED(ped[ped_mugger].id)
// ENDIF
if does_entity_exist(prop[0])
SET_OBJECT_AS_NO_LONGER_NEEDED(prop[0])
ENDIF
if does_entity_exist(prop[1])
SET_OBJECT_AS_NO_LONGER_NEEDED(prop[1])
ENDIF
if does_entity_exist(prop[2])
SET_OBJECT_AS_NO_LONGER_NEEDED(prop[2])
ENDIF
events[i].active=FALSE
BREAK
case 0
//viewScene_postal.timeLine[0].type = ANIM
events[i].flag=333
BREAK
case 333
// and HAS_MODEL_LOADED(PROP_LD_FIREAXE)
events[i].flag=334
// endif
break
case 334
do_scene(SCENENAME_POSTAL)
break
ENDSWITCH
BREAK
CASE EVENTS_SCENE_PERVERT
if is_event_complete(EVENTS_LOAD_FIRST_LOCATION_PEDS)
if not is_point_in_screeen_area(<< -13.6117, -34.6633, 74.2783 >>,0,0,1,1)
events[i].timer += floor(TIMESTEP() * 1000)
if events[i].timer > 5000
events[i].flag = CLEANUP
ENDIF
ENDIF
ENDIF
//force_ped_plays_anims(ped_husband)
//force_ped_plays_anims(ped_pervert)
//force_ped_plays_anims(ped_wife)
switch events[i].flag
case CLEANUP
if does_entity_exist(ped[ped_husband].id)
IF NOT IS_PED_INJURED(ped[ped_husband].id)
SET_PED_KEEP_TASK(ped[ped_husband].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_husband].id)
ENDIF
ENDIF
if does_entity_exist(ped[ped_pervert].id)
IF NOT IS_PED_INJURED(ped[ped_pervert].id)
SET_PED_KEEP_TASK(ped[ped_pervert].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_pervert].id)
ENDIF
ENDIF
if does_entity_exist(ped[ped_wife].id)
IF NOT IS_PED_INJURED(ped[ped_wife].id)
SET_PED_KEEP_TASK(ped[ped_wife].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_wife].id)
ENDIF
ENDIF
events[i].active=FALSE
BREAK
case 0
events[i].flag++
BREAK
case 1
if HAS_MODEL_LOADED(A_M_Y_BEACH_02)
and HAS_MODEL_LOADED(S_M_M_JANITOR)
and HAS_MODEL_LOADED(s_f_y_hooker_01)
and HAS_ANIM_DICT_LOADED("misscarsteal2PERVERT")
events[i].flag++
endif
BREAK
case 2
do_scene(SCENENAME_ROOF)
/*
ped[ped_husband].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_BEACH_02,<< -9.518, -31.102, 68.097 >>,140)
ped[ped_pervert].id = CREATE_PED(PEDTYPE_MISSION,S_M_M_JANITOR,<< -9.518, -31.102, 68.097 >>,140)
ped[ped_wife].id = CREATE_PED(PEDTYPE_MISSION,A_F_Y_Yoga_01,<< -9.518, -31.102, 68.097 >>,140)
int ir
ir = 0
repeat count_of(PED_COMPONENT) ir
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id,INT_TO_ENUM(PED_COMPONENT,ir),0,0)
ENDREPEAT
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id,INT_TO_ENUM(PED_COMPONENT,0),1,0)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id,INT_TO_ENUM(PED_COMPONENT,2),2,0)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id,INT_TO_ENUM(PED_COMPONENT,3),0,5)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id,INT_TO_ENUM(PED_COMPONENT,4),0,5)
SET_PED_COMPONENT_VARIATION(ped[ped_wife].id,INT_TO_ENUM(PED_COMPONENT,8),1,0)
remove_helihud_marker(HUD,destMarker[2])
remove_helihud_marker(HUD,destMarker[3])
remove_helihud_marker(HUD,destMarker[4])
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_wife].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_wife].id,"CH_NAME5")
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_pervert].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_pervert].id,"CH_GREG",6)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_husband].id,true,HUD_UNKNOWN,FALSE,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_husband].id,"CH_NAME3") //loitering with intent
scenePosition[2] = << -9.518, -31.102, 68.097 >>
sceneRotation[2] = << -0.000, 0.000, 69.250 >>
sceneId[2] = CREATE_SYNCHRONIZED_SCENE(scenePosition[2], sceneRotation[2])
TASK_SYNCHRONIZED_SCENE (ped[ped_husband].id, sceneId[2], "misscarsteal2PERVERT", "pervert_husband", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
TASK_SYNCHRONIZED_SCENE (ped[ped_pervert].id, sceneId[2], "misscarsteal2PERVERT", "pervert_perv", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
TASK_SYNCHRONIZED_SCENE (ped[ped_wife].id, sceneId[2], "misscarsteal2PERVERT", "pervert_wife", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
events[i].flag++
*/
BREAK
/*
case 2
if is_point_in_screeen_area(<< -13.6117, -34.6633, 74.2783 >>,0.2,0.2,0.8,0.8) and hud.fFOV < 25
events[i].flag++
ELSE
SET_SYNCHRONIZED_SCENE_PHASE(sceneId[2],0.3)
endif
break
case 3
if GET_SYNCHRONIZED_SCENE_PHASE(sceneId[2]) = 1.0
SET_SYNCHRONIZED_SCENE_PHASE(sceneId[2],0.62)
events[i].flag++
ENDIF
break
*/
ENDSWITCH
BREAK
case events_scene_chadGirl
// force_ped_plays_anims(ped_chad)
// force_ped_plays_anims(ped_chadGirl)
// play_scene_audio(scene_chadgirl)
switch events[i].flag
case CLEANUP
if does_entity_exist(ped[ped_chadGirl].id)
IF NOT IS_PED_INJURED(ped[ped_chadGirl].id)
SET_PED_KEEP_TASK(ped[ped_chadGirl].id,true)
ENDIF
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_chadGirl].id)
ENDIF
events[i].active=FALSE
BREAK
case 0
events[i].flag++
BREAK
case 1
if HAS_MODEL_LOADED(model_chad)
and HAS_MODEL_LOADED(s_f_y_hooker_01)
and HAS_ANIM_DICT_LOADED("misscarsteal2CHAD_GOODBYE")
events[i].flag++
endif
break
case 2
IF DOES_ENTITY_EXIST(ped[ped_chad].id)
if IS_PED_IN_SCAN_LIST(hud,ped[ped_chad].id)
events[i].flag++
endif
endif
IF do_scene(SCENENAME_CHAD)
events[i].flag = CLEANUP
ENDIF
break
case 3
IF DOES_ENTITY_EXIST(ped[ped_chad].id)
/* if HAS_PED_BEEN_SCANNED(hud,ped[ped_chad].id)
or not IS_PED_IN_SCAN_LIST(hud,ped[ped_chad].id)
int id
id = ENUM_TO_INT(SCENENAME_CHAD)
IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(viewScene[id].syncSceneID[1])
viewScene[id].nextEvent = 24
viewScene[id].triggerTime = GET_GAME_TIMER() - viewScene[id].timeLine[viewScene[id].nextEvent].triggerTime
events[i].flag++
ENDIF*/
/*
IF IS_SYNCHRONIZED_SCENE_RUNNING(viewScene[id].syncSceneID[0])
IF (GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[0]) >= 0.063 AND GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[0]) < 0.201)
OR (GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[0]) >= 0.296 AND GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[0]) < 0.415)
OR (GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[0]) >= 0.528 AND GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[0]) < 0.799)
events[i].flag++
ENDIF
ELIF IS_SYNCHRONIZED_SCENE_RUNNING(viewScene[id].syncSceneID[1])
IF (GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[1]) >= 0.063 AND GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[1]) < 0.201)
OR (GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[1]) >= 0.296 AND GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[1]) < 0.415)
OR (GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[1]) >= 0.528 AND GET_SYNCHRONIZED_SCENE_PHASE(viewScene[id].syncSceneID[1]) < 0.799)
events[i].flag++
ENDIF
ENDIF
*/
//endif
//scene skipping takes place at SCENENAME_CHAD
endif
IF do_scene(SCENENAME_CHAD)
events[i].flag = CLEANUP
ENDIF
break
case 4
IF do_scene(SCENENAME_CHAD)
events[i].flag = CLEANUP
ENDIF
/*
int idb
idb = ENUM_TO_INT(SCENENAME_CHAD)
IF IS_SYNCHRONIZED_SCENE_RUNNING(viewScene[idb].syncSceneID[0])
viewScene[idb].syncSceneID[1] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND NOT IS_PED_INJURED(ped[ped_chadGirl].id)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, viewScene[idb].syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", 0.4, -0.5,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, viewScene[idb].syncSceneID[1], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", 0.4, -0.5,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
ENDIF
SET_SYNCHRONIZED_SCENE_PHASE(viewScene[idb].syncSceneID[1] ,0.736)
viewScene[idb].triggerTime = GET_GAME_TIMER() - 47100
ELIF IS_SYNCHRONIZED_SCENE_RUNNING(viewScene[idb].syncSceneID[1])
viewScene[idb].syncSceneID[0] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND NOT IS_PED_INJURED(ped[ped_chadGirl].id)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, viewScene[idb].syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", 0.4, -0.5,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, viewScene[idb].syncSceneID[0], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", 0.4, -0.5,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE,0.4)
ENDIF
SET_SYNCHRONIZED_SCENE_PHASE(viewScene[idb].syncSceneID[0] ,0.736)
viewScene[idb].triggerTime = GET_GAME_TIMER() - 47100
ENDIF
ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,0,<<59.341049,-72.708755,80.553650>>,3.125)
do_scene(SCENENAME_CHAD)
events[i].flag++*/
break
case 5
IF do_scene(SCENENAME_CHAD)
events[i].flag = CLEANUP
ENDIF
break
/*
ped[ped_chad].id = CREATE_PED(PEDTYPE_MISSION,model_chad,<< 205.723, -110.766, 67.755 >>,140)
ped[ped_chadGirl].id = CREATE_PED(PEDTYPE_MISSION,U_F_Y_JEWELASS_01,<< 205.723, -110.766, 67.755 >>,140)
SET_ENTITY_LOAD_COLLISION_FLAG(ped[ped_chad].id,FALSE)
scenePosition[3] = << 205.723, -110.766, 67.755 >>
sceneRotation[3] = << -0.000, 0.000, -39.430 >>
sceneId[3] = CREATE_SYNCHRONIZED_SCENE(scenePosition[3], sceneRotation[3])
add_event(events_witness_chadgirl,STAGE_CHASE_BEGINS)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, sceneId[3], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", INSTANT_BLEND_IN, -0.4)
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, sceneId[3], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", INSTANT_BLEND_IN, -0.4)
events[i].flag++
ENDIF
BREAK
case 2
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneId[3])
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) >= 0.921
SET_SYNCHRONIZED_SCENE_PHASE(sceneId[3],0.063)
ENDIF
ENDIF
if HAS_PED_BEEN_SCANNED(hud,ped[ped_chad].id)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
add_event(events_speed_up_chopper,STAGE_CARPARK)
SET_VEHICLE_DENSITY_MULTIPLIER(0.0)
add_event(EVENTS_STEALTH_REMOVE_TRAFFIC,STAGE_CARPARK)
// sceneId[6] = CREATE_SYNCHRONIZED_SCENE(scenePosition[3], sceneRotation[3]) //blend out with chad
// SET_SYNCHRONIZED_SCENE_PHASE(sceneId[6],0.9)
// TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, sceneId[6], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", 0.5, SLOW_BLEND_OUT,SYNCED_SCENE_TAG_SYNC_OUT )
// TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, sceneId[6], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", 0.5, SLOW_BLEND_OUT,SYNCED_SCENE_TAG_SYNC_OUT )
events[i].flag++
endif
endif
// if is_point_in_screeen_area(<< 205.723, -110.766, 67.755 >>,0.2,0.2,0.8,0.8) and hud.fFOV < 25
//check if sync scene can be skipped forward. if not wait until a ghood time to do so
// events[i].flag++
// ELSE
// SET_SYNCHRONIZED_SCENE_PHASE(sceneId[3],0.0)
// endif
break
case 3
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneId[3])
IF (GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) >= 0.063 AND GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) < 0.201)
OR (GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) >= 0.296 AND GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) < 0.415)
OR (GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) >= 0.528 AND GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) < 0.799)
sceneId[7] = CREATE_SYNCHRONIZED_SCENE(<< 205.723, -110.766, 67.755 >>, << -0.000, 0.000, -39.430 >>)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND NOT IS_PED_INJURED(ped[ped_chadGirl].id)
TASK_SYNCHRONIZED_SCENE (ped[ped_chad].id, sceneId[7], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_chad", 0.4, -0.5,SYNCED_SCENE_TAG_SYNC_OUT,RBF_NONE)
TASK_SYNCHRONIZED_SCENE (ped[ped_chadGirl].id, sceneId[7], "misscarsteal2CHAD_GOODBYE", "chad_goodbye_girl", 0.4, -0.5,SYNCED_SCENE_TAG_SYNC_OUT)
ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,0,<<59.341049,-72.708755,80.553650>>,3.125)
events[i].flag++
ENDIF
SET_SYNCHRONIZED_SCENE_PHASE(sceneId[7],0.799)
ENDIF
ENDIF
BREAK
case 4
if GET_SYNCHRONIZED_SCENE_PHASE(sceneId[7]) > 0.97
//if not IS_PED_INJURED(ped[ped_chad].id)
//CLEAR_PED_TASKS(ped[ped_chad].id)
//ENDIF
//
// vStartPosition = GET_ANIM_INITIAL_OFFSET_POSITION("misscarsteal2pimpsex","pimpsex_punter",<< 224.589, -117.188, 68.649 >>, << 0.000, 0.000, 66.451 >>, 0.0)
// vStartRotation = GET_ANIM_INITIAL_OFFSET_ROTATION("misscarsteal2pimpsex","pimpsex_punter",<< 224.589, -117.188, 68.649 >>, << 0.000, 0.000, 66.451 >>, 0.0)
// nv.m_fSlideToCoordHeading = vStartRotation.z
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 224.1202, -119.9946, 68.6437 >>,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.5,ENAV_NO_STOPPING)
TASK_FOLLOW_WAYPOINT_RECORDING(null,"CS2_01",0,EWAYPOINT_START_FROM_CLOSEST_POINT)
endseq(ped[ped_chad].id)
// TASK_FOLLOW_NAV_MESH_TO_COORD(ped[ped_chad].id,vStartPosition,pedmove_walk,DEFAULT_TIME_BEFORE_WARP,0.5,ENAV_ADV_SLIDE_TO_COORD_AND_ACHIEVE_HEADING_AT_END,vStartRotation.z)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 195.4088, -96.7522, 66.7088 >>,pedmove_walk)
TASK_WANDER_STANDARD(null)
endseq(ped[ped_chadGirl].id)
// brainGotoCoord(ped_chad,<< 225.1114, -120.9105, 68.6479 >>,MV_STRLINE)
// brainUseWaypoint(ped_chad,"CS2_01")
// brainWander(ped_chadGirl)
add_event(EVENTS_SCENE_CHADJACK)
events[i].flag = CLEANUP
//events[i].flag++
ENDIF
BREAK
case 5
if not IS_PED_INJURED(ped[ped_chad].id)
and not IS_PED_INJURED(ped[ped_bikini].id)
IF GET_SCRIPT_TASK_STATUS(ped[ped_chad].id,script_TASK_ANY) != PERFORMING_TASK
scenePosition[3] = << 224.589, -117.188, 68.649 >>
sceneRotation[3] = << 0.000, 0.000, 66.451 >>
sceneId[3] = CREATE_SYNCHRONIZED_SCENE(scenePosition[3], sceneRotation[3])
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND NOT IS_PED_INJURED(ped[ped_bikini].id)
502,"cs2"HRONIZED_SCENE(ped[ped_chad].id,sceneId[3],"misscarsteal2pimpsex","pimpsex_punter",0.4,0.4)
502,"cs2"HRONIZED_SCENE(ped[ped_bikini].id,sceneId[3],"misscarsteal2pimpsex","pimpsex_hooker",0.4,1.0)
ENDIF
SET_SYNCHRONIZED_SCENE_PHASE(sceneId[3],0.25)
events[i].flag++
ENDIf
ENDIF
break
case 6
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneId[3])
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) > 0.4
TASK_FOLLOW_WAYPOINT_RECORDING(ped[ped_chad].id,"CS2_01",0,EWAYPOINT_START_FROM_CLOSEST_POINT)
add_event(EVENTS_SCENE_CHADJACK)
events[i].flag++
ENDIF
ENDIF
break
case 7
IF IS_SYNCHRONIZED_SCENE_RUNNING(sceneId[3])
IF GET_SYNCHRONIZED_SCENE_PHASE(sceneId[3]) > 0.45
SET_EVENTS_FLAG(events_bikini_girl,3)
events[i].flag = CLEANUP
ENDIF
ENDIF
break*/
ENDSWITCH
break
case events_scene_pimp
// force_ped_plays_anims(ped_pimp)
// force_ped_plays_anims(ped_hooker)
// force_ped_plays_anims(ped_punter)
switch events[i].flag
case CLEANUP
IF DOES_ENTITY_EXIST(ped[ped_pimp].id)
IF NOT IS_PED_INJURED(ped[ped_pimp].id)
SET_PED_KEEP_TASK(ped[ped_pimp].id,true)
ENDIF
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_pimp].id)
ENDIF
IF DOES_ENTITY_EXIST(ped[ped_punter].id)
IF NOT IS_PED_INJURED(ped[ped_punter].id)
SET_PED_KEEP_TASK(ped[ped_punter].id,true)
ENDIF
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_punter].id)
ENDIF
IF DOES_ENTITY_EXIST(ped[ped_hooker].id)
IF NOT IS_PED_INJURED(ped[ped_hooker].id)
SET_PED_KEEP_TASK(ped[ped_hooker].id,true)
ENDIF
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_hooker].id)
ENDIF
cprintln(debug_Trevor3,"REMOVE PIMP")
events[i].active=FALSE
BREAK
case 0
if HAS_MODEL_LOADED(S_F_Y_HOOKER_02)
and HAS_MODEL_LOADED(A_M_M_OG_BOSS_01)
and HAS_MODEL_LOADED(A_M_Y_BEACH_02)
and HAS_ANIM_DICT_LOADED("misscarsteal2PIMPSEX")
/*
ped[ped_pimp].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_OG_BOSS_01,<< 189.080, -159.296, 55.330 >>,140)
ped[ped_punter].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_BevHills_02,<< 189.080, -159.296, 55.330 >>,140)
ped[ped_hooker].id = CREATE_PED(PEDTYPE_MISSION,S_F_Y_HOOKER_01,<< 189.080, -159.296, 55.330 >>,140)
scenePosition[4] = << 189.080, -159.296, 55.330 >>
sceneRotation[4] = << -0.000, 0.000, -15.390 >>
sceneId[4] = CREATE_SYNCHRONIZED_SCENE(scenePosition[4], sceneRotation[4])
502,"cs2"HRONIZED_SCENE (ped[ped_pimp].id, sceneId[4], "misscarsteal2PIMPSEX", "pimpsex_pimp", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
TASK_SYNCHRONIZED_SCENE (ped[ped_punter].id, sceneId[4], "misscarsteal2PIMPSEX", "pimpsex_punter", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
TASK_SYNCHRONIZED_SCENE (ped[ped_hooker].id, sceneId[4], "misscarsteal2PIMPSEX", "pimpsex_hooker", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
add_event(events_pimp_achievement)
*/
events[i].flag=2
ENDIF
BREAK
case 2
do_scene(SCENENAME_PIMP)
/*
if HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
events[i].flag++
ELSE
if is_point_in_screeen_area(<< 189.080, -159.296, 55.330 >>,0.2,0.2,0.8,0.8) and hud.fFOV < 25
SET_SYNCHRONIZED_SCENE_PHASE(sceneId[4],0.3)
events[i].flag++
ELSE
SET_SYNCHRONIZED_SCENE_PHASE(sceneId[4],0.0)
endif
ENDIF
break
case 3
if is_event_complete(EVENTS_LOAD_FINAL_LOCATION_PEDS)
if not is_point_in_screeen_area(<< 189.080, -159.296, 55.330 >>,0,0,1,1)
events[i].flag = CLEANUP
brainWander(ped_hooker)
brainWander(ped_pimp)
if not IS_PED_INJURED(ped[ped_hooker].id)
SET_PED_KEEP_TASK(ped[ped_hooker].id,true)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_hooker].id)
ENDIF
if not IS_PED_INJURED(ped[ped_pimp].id)
SET_PED_KEEP_TASK(ped[ped_pimp].id,true)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_pimp].id)
ENDIF
if not IS_PED_INJURED(ped[ped_punter].id)
DELETE_PED(ped[ped_punter].id)
ENDIF
ENDIF
ENDIF*/
BREAK
ENDSWITCH
break
case EVENTS_SCENE_CHADJACK
vector pedStartPosition
//vector pedStartRotation
if events[i].flag >= 1
// force_ped_plays_anims(ped_chad)
// force_ped_plays_anims(ped_franklin)
ENDIF
switch events[i].flag
case CLEANUP
REMOVE_ANIM_DICT("misscarsteal2CHAD_HOLDUP")
events[i].active = false
BREAK
case 0
if not IS_PED_INJURED(ped[ped_chad].id)
if IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(ped[ped_chad].id)
cprintln(debug_trevor3,"First call to door lock state")
SET_GARAGE_DOOR_STATE(GD_CREATE_AND_LOCK)
//set_door_lock(PROP_GAR_DOOR_05,<<201.4,-153.4,57.8>>,TRUE,fOpenRatio)
events[i].flag++
ENDIF
ENDIF
BREAK
case 1
REQUEST_ANIM_DICT("misscarsteal2CHAD_HOLDUP")
events[i].flag++
BREAK
case 2
if HAS_ANIM_DICT_LOADED("misscarsteal2CHAD_HOLDUP")
add_event(events_garage_beep)
events[i].flag++
ENDIF
BREAK
case 3
if IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(ped[ped_chad].id)
if GET_PED_WAYPOINT_PROGRESS(ped[ped_chad].id) >= 31
events[i].flag++
ENDIF
ELSE
events[i].flag++
ENDIF
BREAK
case 4
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_ENTITY_ON_SCREEN(ped[ped_chad].id)
IF GET_SCRIPT_TASK_STATUS(ped[ped_chad].id,SCRIPT_TASK_FOLLOW_WAYPOINT_ROUTE) != PERFORMING_TASK
TASK_FOLLOW_WAYPOINT_RECORDING(ped[ped_chad].id,"CS2_01",28,EWAYPOINT_START_FROM_CLOSEST_POINT)
ENDIF
events[i].flag++
ELSE
IF GET_SCRIPT_TASK_STATUS(ped[ped_chad].id,SCRIPT_TASK_ANY) = PERFORMING_TASK
CLEAR_PED_TASKS_IMMEDIATELY(ped[ped_chad].id)
ENDIF
ENDIF
if not IS_PED_INJURED(ped[ped_chad].id)
SET_FOCUS_ENTITY(ped[ped_chad].id)
ENDIF
ENDIF
break
case 5
//ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA("CS2_seeChad3",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor")
// kill_event(events_is_chad_hidden)
pedStartPosition = GET_ANIM_INITIAL_OFFSET_POSITION("misscarsteal2CHAD_HOLDUP","chad_holdup_chad",<<198.93, -152.54, 56.18>> /*<< 199.656, -152.833, 56.174 >>*/, << -0.000, 0.000, -20.500 >>, 0.0)
//pedStartRotation = GET_ANIM_INITIAL_OFFSET_ROTATION("misscarsteal2CHAD_HOLDUP","chad_holdup_chad",<< 199.656, -152.833, 56.174 >>, << -0.000, 0.000, -20.500 >>, 0.0)
//TASK_FOLLOW_NAV_MESH_TO_COORD(ped[ped_chad].id,pedStartPosition,PEDMOVE_WALK,DEFAULT_TIME_BEFORE_WARP,DEFAULT_NAVMESH_RADIUS, ENAV_STOP_EXACTLY, pedStartRotation.z)
events[i].flag++
BREAK
case 6
IF NOT IS_PED_INJURED(ped[ped_chad].id)
pedStartPosition = GET_ANIM_INITIAL_OFFSET_POSITION("misscarsteal2CHAD_HOLDUP","chad_holdup_chad",<<198.93, -152.54, 56.18>> /*<< 199.656, -152.833, 56.174 >>*/, << -0.000, 0.000, -20.500 >>, 0.0)
if IS_ENTITY_AT_COORD(ped[ped_chad].id,pedStartPosition,<<0.3,0.3,1.0>>)
scene_chad_reacts_to_franklin_jack = CREATE_SYNCHRONIZED_SCENE(<<198.93, -152.54, 56.18>> /*<< 199.656, -152.833, 56.174 >>*/, << -0.000, 0.000, -20.500 >>)
//TASK_SYNCHRONIZED_SCENE(ped[ped_chad].id, scene_chad_reacts_to_franklin_jack, "misscarsteal2CHAD_HOLDUP", "chad_holdup_chad", WALK_BLEND_IN, INSTANT_BLEND_OUT,SYNCED_SCENE_NONE,RBF_NONE,WALK_BLEND_IN)
TASK_PLAY_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad",WALK_BLEND_IN,SLOW_BLEND_OUT,-1,AF_TAG_SYNC_IN | AF_NOT_INTERRUPTABLE | AF_HOLD_LAST_FRAME)// | AF_OVERRIDE_PHYSICS)
events[i].flag++
events[i].timer = GET_GAME_TIMER() + 2000
ENDIF
ENDIF
break
//events_garage_beep
case 7
// SET_PED_MIN_MOVE_BLEND_RATIO(ped[ped_chad].id,pedmove_walk)
if GET_GAME_TIMER() > events[i].timer
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
FREEZE_ENTITY_POSITION(vehicle[vehFranklin].id,FALSE)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehFranklin].id)
STOP_PLAYBACK_RECORDED_VEHICLE(vehicle[vehFranklin].id)
ENDIF
SET_VEHICLE_LIGHTS(vehicle[vehFranklin].id,FORCE_VEHICLE_LIGHTS_ON)
SET_ENTITY_LOD_DIST(vehicle[vehFranklin].id,400)
START_PLAYBACK_RECORDED_VEHICLE(vehicle[vehFranklin].id,103,sVehicleRecordingLibrary)
//add_event(EVENTS_FRANKLIN_ARRIVE)
events[i].timer = GET_GAME_TIMER() + 500
events[i].flag++
ENDIF
ENDIF
BREAK
case 8
//if GET_GAME_TIMER() > events[i].timer
add_event(EVENTS_OPEN_GARAGE)
SET_CONDITION_STATE(COND_GARAGE_DOOR_OPENING,TRUE)
events[i].flag++
//ENDIF
break
case 9
if not IS_ENTITY_DEAD(vehicle[vehFranklin].id)
and not IS_PED_INJURED(ped[ped_chad].id)
//if not IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehFranklin].id)
if IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_reacts_to_franklin_jack)
if GET_SYNCHRONIZED_SCENE_PHASE(scene_chad_reacts_to_franklin_jack) >= 0.401
events[i].flag++
endif
else
if IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad")
IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad") > 0.401
events[i].flag++
endif
endif
endif
endif
break
case 10
if not IS_ENTITY_DEAD(vehicle[vehFranklin].id)
and not IS_PED_INJURED(ped[ped_chad].id)
scene_franklin_tries_to_jack_chad = CREATE_SYNCHRONIZED_SCENE(GET_ENTITY_COORDS(vehicle[vehFranklin].id),GET_ENTITY_ROTATION(vehicle[vehFranklin].id))//<< 193.617, -150.932, 55.833 >>, << -0.000, 0.000, -16.500 >>)
STOP_AUDIO_SCENE("CAR_2_FOLLOW_CHAD_ON_FOOT")
START_AUDIO_SCENE("CAR_2_FRANKLIN_ARRIVES")
if not IS_PED_INJURED(ped[ped_franklin].id) and IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehFranklin].id)
STOP_PLAYBACK_RECORDED_VEHICLE(vehicle[vehFranklin].id)
ENDIF
SET_ENTITY_COORDS_NO_OFFSET(ped[ped_franklin].id,GET_ENTITY_COORDS(vehicle[vehFranklin].id)+<<0,0,2.0>>)
TASK_SYNCHRONIZED_SCENE (ped[ped_franklin].id, scene_franklin_tries_to_jack_chad, "misscarsteal2CHAD_HOLDUP", "chad_holdup_franklin", INSTANT_BLEND_IN, INSTANT_BLEND_OUT )
GIVE_WEAPON_TO_PED(ped[ped_franklin].id,WEAPONTYPE_PISTOL,50,true)
PLAY_SYNCHRONIZED_ENTITY_ANIM(vehicle[vehFranklin].id,scene_franklin_tries_to_jack_chad,"chad_holdup_buffalo","misscarsteal2CHAD_HOLDUP",1000.0)
SET_SYNCHRONIZED_SCENE_PHASE(scene_franklin_tries_to_jack_chad,0.371) //GET_SYNCHRONIZED_SCENE_PHASE(scene_chad_reacts_to_franklin_jack))
ENDIF
events[i].flag++
ENDIF
break
case 11
if IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_reacts_to_franklin_jack)
if GET_SYNCHRONIZED_SCENE_PHASE(scene_chad_reacts_to_franklin_jack) >= 0.488
events[i].flag++
endif
else
IF not IS_PED_INJURED(ped[ped_chad].id)
if IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad")
IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad") > 0.504
events[i].flag++
endif
endif
endif
endif
break
case 12
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CAR_2_IG_8",3,ped[ped_franklin].id,"Franklin",4,ped[ped_chad].id,"Chad")
PLAY_MUSIC(mus_chad_sees_franklin,mus_chad_drives_down_alley)
events[i].flag++
ENDIF
BREAK
case 13
if not IS_PED_INJURED(ped[ped_chad].id)
if IS_SYNCHRONIZED_SCENE_RUNNING(scene_franklin_tries_to_jack_chad)
if GET_SYNCHRONIZED_SCENE_PHASE(scene_franklin_tries_to_jack_chad) >= 0.855
events[i].flag++
endif
else
if IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad")
IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad") > 0.855
events[i].flag++
endif
endif
endif
endif
BREAK
CASE 14
if not IS_PED_INJURED(ped[ped_chad].id)
initHeistVehicle(<< 202.7272, -149.7968, 56.1760 >>,160)
SET_PED_INTO_VEHICLE(ped[ped_chad].id,vehicle[vehHeist].id)
IF Get_Fails_Count_Without_Progress_For_This_Mission_Script() < 2
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_chad].id)
ENDIF
bplayVehRecs = true
iPlaybackTime = 0
// add_event(events_chase_chatter)
// add_event(events_blow_up_cars)
STOP_AUDIO_SCENE("CAR_2_FRANKLIN_ARRIVES")
START_AUDIO_SCENE("CAR_2_CAR_CHASE_START")
START_AUDIO_SCENE("CAR_2_Z_TYPE_ENGINE_BOOST")
ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehicle[vehHeist].id,"CAR_2_Z-TYPE")
events[i].flag++
ENDIF
BREAK
case 15
if not IS_PED_INJURED(ped[ped_franklin].id)
if IS_SYNCHRONIZED_SCENE_RUNNING(scene_franklin_tries_to_jack_chad)
if GET_SYNCHRONIZED_SCENE_PHASE(scene_franklin_tries_to_jack_chad) >= 1.0
//STOP_SYNCHRONIZED_ENTITY_ANIM(vehicle[vehFranklin].id,1.0,TRUE)
SET_PED_INTO_VEHICLE(ped[ped_franklin].id,vehicle[vehFranklin].id)
events[i].flag = CLEANUP //this wasn't set to cleanup meaning the dict was never removed.
endif
endif
/* if IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad")
IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP", "chad_holdup_chad") >= 1.0
STOP_SYNCHRONIZED_ENTITY_ANIM(vehicle[vehFranklin].id,1.0,TRUE)
SET_PED_INTO_VEHICLE(ped[ped_franklin].id,vehicle[vehFranklin].id)
events[i].flag = CLEANUP
endif
endif
endif*/
endif
BREAK
ENDSWITCH
BREAK
case events_freeze_car
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
if SET_VEHICLE_ON_GROUND_PROPERLY(vehicle[vehHeist].id)
FREEZE_ENTITY_POSITION(vehicle[vehHeist].id,true)
events[i].active=FALSE
ENDIF
ENDIF
BREAK
case events_show_goto_instructions
if events[i].flag = CLEANUP
CLEAR_PRINTS()
elif events[i].flag = 0
PRINT("CH_INS42",DEFAULT_GOD_TEXT_TIME,1)
ENDIF
BREAK
CASE EVENTS_REMOVE_SCAN_BOXES
pedScanned = 0
//pedBeingScanned = 0
for itemp = ped_courier to ped_dog_walk
if isalive(itemp)
IF IS_PED_IN_SCAN_LIST(HUD,ped[itemp].id)
IF HAS_PED_BEEN_SCANNED(HUD,ped[itemp].id)
pedScanned = itemp
ENDIF
ENDIF
ENDIF
ENDFOR
/*
IF pedScanned != 0 and pedBeingScanned != pedScanned and pedBeingScanned != 0
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[pedScanned].id)
if scanPedToRemove = pedScanned
scanPedToRemove = 0
pedRemoveTimer = 0
ENDIF
pedScanned = 0
ENDIF
*/
IF pedScanned != 0 and scanPedToRemove = 0
pedRemoveTimer = GET_GAME_TIMER() + 3000
scanPedToRemove = pedScanned
ENDIF
if pedRemoveTimer != 0
if GET_GAME_TIMER() > pedRemoveTimer
IF IS_PED_IN_SCAN_LIST(HUD,ped[scanPedToRemove].id)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[pedScanned].id)
ENDIF
scanPedToRemove = 0
pedRemoveTimer = 0
ENDIF
ENDIF
BREAK
case events_hover_over_first_location
if events[i].flag = CLEANUP
clearHoverInArea(HUD)
ELSE
events[i].flag = 0
if IS_SPHERE_VISIBLE(<< -13.6185, -34.6559, 74.1984 >>,15.0)
//if IS_PED_IN_SCAN_LIST(HUD,ped[ped_wife].id) or IS_PED_IN_SCAN_LIST(HUD,ped[ped_husband].id) or IS_PED_IN_SCAN_LIST(HUD,ped[ped_pervert].id)
events[i].flag = 2
//ENDIF
ENDIF
if IS_SPHERE_VISIBLE(<< -31.0612, -87.8128, 57.1910 >>,10.0)
//if IS_PED_IN_SCAN_LIST(HUD,ped[ped_mugger].id) or IS_PED_IN_SCAN_LIST(HUD,ped[ped_courier].id)
events[i].flag = 1
//ENDIF
ENDIF
if events[i].flag = 0
if events[i].timer != 0
clearHoverInArea(HUD)
events[i].timer = 0
ENDIF
ELIF events[i].flag = 1
if events[i].timer != 1
createHoverInArea(hud,<<-0.9629, -152.3349, 180.6798>>,10.0)
events[i].timer = 1
ENDIF
ELSE
if events[i].timer != 2
events[i].timer = 2
createHoverInArea(hud,<< 5.2097, -122.5330, 172.3606 >>,10.0)
ENDIF
ENDIF
ENDIF
BREAK
case events_hover_over_second_location
if events[i].flag = CLEANUP
clearHoverInArea(HUD)
ELSE
events[i].flag = 0
if IS_SPHERE_VISIBLE(<< 205.7967, -110.9667, 69.9306 >>,20.0) or IS_SPHERE_VISIBLE(<< 182.7890, -157.1740, 58.2470 >>,25.0) or IS_SPHERE_VISIBLE(<< 209.1109, -148.8647, 61.6233 >>,25.0)
//if IS_PED_IN_SCAN_LIST(HUD,ped[ped_wife].id) or IS_PED_IN_SCAN_LIST(HUD,ped[ped_husband].id) or IS_PED_IN_SCAN_LIST(HUD,ped[ped_pervert].id)
events[i].flag = 1
//ENDIF
ENDIF
if events[i].flag = 0
if events[i].timer != 0
clearHoverInArea(HUD)
events[i].timer = 0
ENDIF
ELIF events[i].flag = 1
if events[i].timer != 1
createHoverInArea(hud,<<165.0758, -118.7167,172.5288>>,10.0)
events[i].timer = 1
ENDIF
ENDIF
ENDIF
BREAK
case events_pimp_achievement
IF DOES_ENTITY_EXIST(ped[ped_pimp].id)
if HAS_PED_BEEN_SCANNED(HUD,ped[ped_pimp].id)
//INFORM_STAT_CAR_STEAL_TWO_PIMP_HAND_SEEN()
events[i].active = false
endif
else
events[i].active = false
endif
break
case events_upside_Down
IF events[i].flag = 0
IF DOES_ENTITY_EXIST(vehicle[vehHeist].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
ADD_VEHICLE_UPSIDEDOWN_CHECK(vehicle[vehHeist].id)
events[i].flag = 1
ENDIF
ENDIF
ELSE
IF NOT DOES_ENTITY_EXIST(vehicle[vehHeist].id)
events[i].flag = 0
ENDIF
ENDIF
BREAK
case EVENTS_SET_PLAYER_IDS
IF native_to_int(ped[ped_trevor].id) = 0 OR NOT DOES_ENTITY_EXIST(ped[ped_trevor].id)
IF GET_PLAYER_PED_MODEL(CHAR_TREVOR) = GET_ENTITY_MODEL(player_ped_id())
ped[ped_trevor].id = player_ped_id()
ENDIF
ENDIF
IF native_to_int(ped[ped_franklin].id) = 0 OR NOT DOES_ENTITY_EXIST(ped[ped_franklin].id)
IF GET_PLAYER_PED_MODEL(CHAR_FRANKLIN) = GET_ENTITY_MODEL(player_ped_id())
ped[ped_franklin].id = player_ped_id()
ENDIF
ENDIF
BREAK
case events_create_franklin_and_car //create car when playing as trevor at start
IF CREATE_FRANKLIN(<<1390.7333, -2063.3943, 50.9983>>,128)
events[i].active = FALSE
ENDIF
break
case events_switch_to_franklin
IF missionProgress != STAGE_CARPARK
OR switchState = SWITCH_SWAP_PLAYER_PEDS
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS39")
CLEAR_PRINTS()
ENDIF
events[i].active = false
endif
IF events[i].active
if events[i].flag = 0
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
AND NOT IS_MESSAGE_BEING_DISPLAYED()
PRINT("CH_INS39",DEFAULT_GOD_TEXT_TIME,1)
events[i].flag = 1
ENDIF
endif
ENDIF
break
case events_listen_help
IF events[i].active
SWITCH events[i].flag
CASE 0
PRINT_HELP("CH_HLP01")
events[i].flag = 1
events[i].timer = get_game_timer() + 20000
BREAK
CASe 1
IF get_game_timer() > events[i].timer
PRINT_HELP("CH_HLP01")
events[i].active = FALSE
ENDIF
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_SCRIPT_RB)
events[i].active = FALSE
ENDIF
BREAK
ENDSWITCH
if missionProgress >= STAGE_CHASE_BEGINS
events[i].active = FALSE
endif
endif
break
case EVENTS_QUAD_BLOCKING
ped_index pClose
pClose = null
IF missionProgress = STAGE_APPROACH_SCAN_AREA_ONE
IF GET_HELIHUD_SELECTED_PED(HUD,pClose)
IF pClose = ped[ped_mugger].id
OR pClose = ped[ped_courier].id
If events[i].flag != 3
events[i].flag = 1
ENDIF
ELSE
If events[i].flag != 4
events[i].flag = 2
endif
ENDIF
ENDIF
switch events[i].flag
case 1 //add quad blocking for courier
ADD_BLOCKING_PLANE(0,<<-28.2320, -89.2847, 56.8547>>,<<-27.6147, -88.9500, 56.8797>>,<<-27.5647, -88.8999, 58.6297>>,<<-28.2629, -89.2600, 58.6297>>)
ADD_BLOCKING_PLANE(1,<<-28.6441, -104.0011, 64.2778>>,<<-10.0603, -110.8698, 64.2778>>,<<-2.0177, -88.4428, 64.2778>>,<<-20.5835, -81.8591, 64.2778>>)
ADD_BLOCKING_PLANE(2,<<-40.2599, -98.5964, 56.7374>>,<<-34.2282, -82.2685, 56.2530>>,<<-34.3367, -82.2011, 62.7623>>,<<-40.4784, -98.5622, 63.1072>>)
ADD_BLOCKING_PLANE(3,<<-28.8646, -88.6101, 56.9044>>,<<-28.8646, -88.6101, 58.6794>>,<<-28.5948, -87.9370, 58.6542>>,<<-28.5950, -87.9370, 56.9542>>)
ADD_BLOCKING_PLANE(4,<<-25.2983, -84.2270, 58.9288>>,<<-28.7960, -87.7316, 58.9290>>,<<-27.4239, -89.1142, 58.9290>>,<<-23.9171, -85.5873, 58.9290>>)
ADD_BLOCKING_PLANE(5,<<-24.8034, -83.7998, 56.5789>>,<<-28.7721, -87.7740, 56.5792>>,<<-28.7721, -87.7740, 58.9792>>,<<-25.2034, -84.1998, 58.9289>>)
events[i].flag = 3
break
CASE 2
ADD_BLOCKING_PLANE(0,<<-8.9480, -52.3802, 78.6554>>,<<-1.3360, -55.0471, 80.4048>>,<<1.6459, -46.7435, 80.3990>>,<<-5.9165, -43.9649, 78.6554>>)
ADD_BLOCKING_PLANE(1,<<-5.5538, -43.9854, 78.2118>>,<<9.5382, -49.4824, 78.2118>>,<<12.9347, -39.8749, 78.2118>>,<<-1.4279, -32.9156, 78.2118>>)
ADD_BLOCKING_PLANE(2,<<-3.4200, -30.8691, 77.1564>>,<<6.6288, -34.5387, 77.1564>>,<<16.0751, -9.0404, 77.4075>>,<<5.8839, -5.2851, 77.4124>>)
ADD_BLOCKING_PLANE(3,<<-2.1643, -22.0938, 77.0106>>,<<-5.1205, -30.2703, 77.0106>>,<<-3.4104, -30.8594, 77.1564>>,<<-0.5185, -22.9861, 77.3823>>)
ADD_BLOCKING_PLANE(4,<<-19.4109, -42.2933, 75.9532>>,<<-13.2283, -25.0136, 75.9532>>,<<-36.1206, -16.5541, 75.9532>>,<<-42.8010, -33.4459, 76.4495>>)
ADD_BLOCKING_PLANE(5,<<-4.0202, -18.9672, 82.5066>>,<<1.7875, -2.3476, 82.5066>>,<<-3.8792, -0.4543, 82.5066>>,<<-10.4238, -16.7885, 82.5066>>)
ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,0,<<9.469584,-35.123260,95.209671>>,3.750000)
ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,1,<<-8.538630,-21.224758,80.733902>>,3.375000)
ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,2,<<-43.042824,-39.191010,99.565697>>,3.687500)
events[i].flag = 4
BREAK
ENDSWITCH
ELSE
IF GET_HELIHUD_SELECTED_PED(HUD,pClose)
IF pClose = ped[ped_pimp].id
OR pClose = ped[ped_punter].id
OR pClose = ped[ped_hooker].id
If events[i].flag != 6
events[i].flag = 5
ENDIF
ELSE
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
If events[i].flag != 10
events[i].flag = 9
endif
ELSE
If events[i].flag != 8
events[i].flag = 7
endif
ENDIF
ENDIF
ENDIF
switch events[i].flag
case 5 //add quad blocking for pimp sex
ADD_BLOCKING_PLANE(0,<<200.6473, -168.1464, 55.3268>>,<<182.4492, -161.5087, 55.3836>>,<<182.4593, -161.5123, 62.1720>>,<<200.6783, -168.1942, 62.1804>>)
ADD_BLOCKING_PLANE(1,<<181.6328, -163.3893, 62.1529>>,<<181.6413, -163.3530, 55.3168>>,<<175.6814, -161.2399, 55.4279>>,<<181.9644, -163.5368, 62.1804>>)
ADD_BLOCKING_PLANE(2,<<188.7882, -160.1965, 55.3177>>,<<187.6117, -163.3776, 55.3177>>,<<187.6955, -163.3199, 59.7359>>,<<188.8773, -160.1298, 59.7265>>)
ADD_BLOCKING_PLANE(3,<<182.0581, -146.8758, 56.5077>>,<<200.6405, -153.1321, 56.5318>>,<<200.1214, -152.4480, 72.1690>>,<<182.3946, -146.4140, 72.3024>>)
ADD_BLOCKING_PLANE(4,<<182.3946, -146.4140, 72.3024>>,<<200.5840, -152.8908, 72.7951>>,<<206.1236, -137.4284, 72.7951>>,<<186.9452, -130.9248, 72.3515>>)
ADD_BLOCKING_PLANE(5,<<171.8139, -174.8890, 65.9972>>,<<182.9264, -167.7773, 66.0955>>,<<183.1790, -167.6078, 71.3906>>,<<171.6981, -174.9631, 71.1046>>)
//ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,0,<<175.778687,-158.134827,62.814491>>,3.5625)
//ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,1,<<153.480743,-159.753113,80.045670>>,3.8125)
//ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,2,<<181.433578,-145.485672,76.155899>>,3.8125)
//ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,3,<<211.149414,-156.867844,73.933311>>,3.8125)
events[i].flag = 6
break
CASE 7
// ADD_BLOCKING_PLANE(0,<<209.1507, -111.6366, 68.8296>>,<<210.2542, -106.3744, 68.8296>>,<<210.5292, -108.3744, 83.1796>>,<<210.7257, -110.4866, 82.0796>>)
// ADD_BLOCKING_PLANE(1,<<207.7449, -100.0619, 82.4365>>,<<215.7615, -102.8439, 80.2823>>,<<218.4723, -94.5033, 80.5969>>,<<210.7405, -91.7269, 82.5138>>)
// ADD_BLOCKING_PLANE(2,<<210.7405, -91.7269, 82.5138>>,<<203.0201, -88.8654, 80.5969>>,<<199.8377, -97.1021, 80.5969>>,<<207.7089, -100.0680, 82.5113>>)
// ADD_BLOCKING_PLANE(3,<<200.4286, -97.0117, 72.4746>>,<<214.9580, -102.8432, 72.7187>>,<<215.5957, -102.6127, 80.1636>>,<<200.2995, -96.9636, 80.2670>>)
// ADD_BLOCKING_PLANE(4,<<214.1890, -114.6139, 68.6245>>,<<213.1701, -114.5938, 76.8409>>,<<217.9960, -102.0663, 76.9621>>,<<219.7616, -99.2012, 68.6237>>)
// ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,0,<<208.825806,-118.482643,77.625267>>,3.0625)
events[i].flag = 8
BREAK
CASE 9
// ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,0,<<208.825806,-118.482643,77.625267>>,1.5625)
// ADD_HUD_VIEW_SPHERE_BLOCKING(HUD,2,<<212.447754,-143.031982,79.264145>> ,1.525)
ADD_BLOCKING_PLANE(0,<<216.37, -123.66, 70.79>>,<<210.93, -121.62, 70.76>>,<<204.26, -134.66, 70.78>>,<<211.44, -137.29, 70.78>>)
ADD_BLOCKING_PLANE(1,<<216.55, -126.74, 69.39>>,<<215.58, -126.21, 70.58>>,<<212.17, -134.51, 66.84>>,<<213.49, -134.99, 66.96>>)
events[i].flag = 10
BREAK
ENDSWITCH
ENDIF
break
CASE EVENTS_CHAD_DIALOGUE
switch events[i].flag
case 0
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_gotChad",3,ped[ped_chad].id,"Chad")
//ADD_NON_CRITICAL_STANDARD_CONVERSATION_TO_BUFFER_EXTRA("CS2_gotChad",3,ped[ped_chad].id,"Chad",-1,null,"",-1,null,"",CONV_PRIORITY_MEDIUM,DO_NOT_DISPLAY_SUBTITLES)
events[i].flag++
ENDIF
BREAK
CASE 1
IF NOT is_event_complete(EVENTS_SCENE_CHAD_EXITS_CAR)
IF NOT IS_THIS_CONVERSATION_ROOT_PLAYING("CS2_gotChad")
CLEAR_PRINTS()
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_gotChad1",3,ped[ped_chad].id,"Chad")
events[i].active = FALSE
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
IF is_event_complete(EVENTS_SCENE_CHAD_EXITS_CAR)
events[i].active = FALSE
ENDIF
BREAK
CASE EVENTS_ADDITIONAL_ZOOM_HELP
switch events[i].flag
case 0
IF NOT HAS_PED_BEEN_SCANNED(HUD,ped[ped_franklin].id)
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP("CH_INS4")
events[i].flag = 1
ENDIF
ELSE
events[i].active = FALSE
ENDIF
BREAK
CASE 1
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_franklin].id)
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CH_INS4")
CLEAR_HELP()
events[i].active = FALSE
ELSE
events[i].active = FALSE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE events_waypoint_through_police_dept
switch events[i].flag
case cleanup
REMOVE_WAYPOINT_RECORDING("cs2_06")
//REMOVE_WAYPOINT_RECORDING("cs2_07")
REMOVE_WAYPOINT_RECORDING("cs2_08")
REMOVE_WAYPOINT_RECORDING("cs2_09")
break
case 0
REQUEST_WAYPOINT_RECORDING("cs2_06")
//REQUEST_WAYPOINT_RECORDING("cs2_07")
REQUEST_WAYPOINT_RECORDING("cs2_08")
REQUEST_WAYPOINT_RECORDING("cs2_09")
events[i].flag++
break
case 1
IF GET_IS_WAYPOINT_RECORDING_LOADED("cs2_06")
//AND GET_IS_WAYPOINT_RECORDING_LOADED("cs2_07")
AND GET_IS_WAYPOINT_RECORDING_LOADED("cs2_08")
AND GET_IS_WAYPOINT_RECORDING_LOADED("cs2_09")
USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("cs2_06",TRUE,0.5,1.0)
//USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("cs2_07",TRUE,0.5,1.0)
USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("cs2_08",TRUE,0.5,1.0)
USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE("cs2_09",TRUE,0.5,1.0)
events[i].flag++
ENDIF
BREAK
ENDSWITCH
BREAK
CASE EVENTS_STEALTH_REMOVE_TRAFFIC
SWITCH events[i].flag
case cleanup
SET_ROAD_BLOCKS(0,max_road_blocks,true)
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,FALSE)
break
CASE 0
SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,FALSE)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1284.524292,-212.007370,50.633434>>-<<39.000000,54.750000,14.000000>>,<<-1284.524292,-212.007370,50.633434>>+<<39.000000,54.750000,14.000000>>,false)
DelCar = GET_CLOSEST_VEHICLE(<< 145.7978, -188.0687, 54.0219 >>,1000,DUMMY_MODEL_FOR_SCRIPT,VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
iFoundCars = 0
IF DOES_ENTITY_EXIST(DelCar)
iFoundCars++
IF NOT IS_SPHERE_VISIBLE(GET_ENTITY_COORDS(DelCar,FALSE),10.0)
CLEAR_AREA(GET_ENTITY_COORDS(delcar,false),10.0,TRUE)
ENDIF
ENDIF
DelCar = GET_CLOSEST_VEHICLE(<< 200.1302, -53.9908, 67.8874 >>,1000,DUMMY_MODEL_FOR_SCRIPT,VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
IF DOES_ENTITY_EXIST(DelCar)
iFoundCars++
IF NOT IS_SPHERE_VISIBLE(GET_ENTITY_COORDS(DelCar,FALSE),10.0)
CLEAR_AREA(GET_ENTITY_COORDS(delcar,false),10.0,TRUE)
ENDIF
ENDIF
DelCar = GET_CLOSEST_VEHICLE(<< 276.3881, -84.4989, 69.6961 >>,1000,DUMMY_MODEL_FOR_SCRIPT,VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
IF DOES_ENTITY_EXIST(DelCar)
iFoundCars++
IF NOT IS_SPHERE_VISIBLE(GET_ENTITY_COORDS(DelCar,FALSE),10.0)
CLEAR_AREA(GET_ENTITY_COORDS(delcar,false),10.0,TRUE)
ENDIF
ENDIF
DelCar = GET_CLOSEST_VEHICLE(<< 228.0034, -221.5665, 53.3967 >>,1000,DUMMY_MODEL_FOR_SCRIPT,VEHICLE_SEARCH_FLAG_RETURN_RANDOM_VEHICLES)
IF DOES_ENTITY_EXIST(DelCar)
iFoundCars++
IF NOT IS_SPHERE_VISIBLE(GET_ENTITY_COORDS(DelCar,FALSE),10.0)
CLEAR_AREA(GET_ENTITY_COORDS(delcar,false),10.0,TRUE)
ENDIF
ENDIF
IF iFoundCars = 0
OR missionProgress = STAGE_CHASE_BEGINS
set_road_block(0,<<83.446854,-254.758499,44.383682>>, <<157.401337,-45.130379,77.731789>>, 239.630005)
set_road_block(1,<<-48.491924,-238.547638,34.424400>>, <<7.273878,-90.352585,68.342606>>, 202.437500)
set_road_block(2,<<-659.643433,-260.605347,24.287605>>, <<-441.786926,-147.829559,51.771347>>, 136.250000)
set_road_block(3,<<-220.672134,111.042793,30.804962>>, <<-282.125732,-163.065765,105.533096>>, 37.875000)
set_road_block(4,<<-473.940186,-15.623335,33.462952>>, <<-470.748322,117.273026,77.999863>>, 185.625000)
set_road_block(5,<<-88.164024,-105.620598,44.246861>>, <<-386.206970,-2.748743,60.812332>>, 37.250000)
set_road_block(6,<<-461.786530,-60.158344,34.427547>>, <<-288.607391,-106.343079,70.048027>>, 113.750000)
set_road_block(7,<<-547.271606,-160.380173,22.270775>>, <<-647.416992,32.620464,62.944546>>, 194.750000)
set_road_block(8,<<-769.867188,-83.208847,21.516926>>, <<-707.259094,-49.819843,61.394394>>, 73.000000)
set_road_block(9,<<-756.991577,38.100735,30.295971>>, <<-635.053284,68.894981,78.633743>>, 112.312500)
set_road_block(10,<<-766.287537,-101.407005,21.633743>>, <<-831.088623,4.667232,49.371185>>, 17.750000)
set_road_block(11,<<-1015.547363,-185.572388,21.749935>>, <<-777.231628,-60.651215,44.710403>>, 83.500000)
set_road_block(12,<<-809.419739,-311.399017,20.875179>>, <<-1320.396606,-53.602451,55.817036>>, 83.500000)
set_road_block(13,<<-869.279724,-163.038208,21.764233>>, <<-976.067810,-215.705780,44.715263>>, 13.000000)
set_road_block(14,<<-979.920105,-193.357071,21.569519>>, <<-1287.616577,-351.481201,48.365097>>, 219.250000)
SET_ROAD_BLOCKS(0,max_road_blocks,false)
events[i].flag = 1
ENDIF
BREAK
CASE 1
IF missionProgress = STAGE_CHASE_BEGINS
events[i].flag = 2
ENDIF
BREAK
CASE 2
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
int iR
repeat count_of(sroadblocks) iR
IF sroadblocks[iR].on
IF NOT sroadblocks[iR].entered
IF IS_ENTITY_IN_ANGLED_AREA(vehicle[vehFranklin].id,sroadblocks[iR].v1,sroadblocks[iR].v2,sroadblocks[iR].width)
sroadblocks[iR].entered = TRUE
ENDIF
ELSE
IF NOT IS_ENTITY_IN_ANGLED_AREA(vehicle[vehFranklin].id,sroadblocks[iR].v1,sroadblocks[iR].v2,sroadblocks[iR].width)
sroadblocks[iR].entered = TRUE
sroadblocks[iR].on = false
SET_ROAD_BLOCKS(iR,iR,true)
ENDIF
ENDIF
endif
endrepeat
ENDIF
BREAK
ENDSWITCH
BREAK
CASE events_create_chopper_pilot
SWITCH events[i].flag
case 0
REQUEST_MODEL(model_pilot)
events[i].flag++
break
case 1
IF HAS_MODEL_LOADED(model_pilot)
CREATE_CHOPPER_PILOT()
events[i].active = FALSE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE events_bum_on_chad_walk
SWITCH events[i].flag
CASE CLEANUP
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_bum].id)
cprintln(debug_Trevor3,"REMOVE bum")
//cprintln(debug_trevor3,"BUM RELEASED")
BREAK
case 0
REQUEST_ANIM_DICT("misscarsteal2_bum")
ADD_CHOPPER_LISTENING_LOCATION(4,<< 209.650, -149.125, 60.612 >>)
events[i].flag++
BREAK
CASE 1
IF HAS_ANIM_DICT_LOADED("misscarsteal2_bum")
AND HAS_MODEL_LOADED(A_M_M_OG_BOSS_01)
ped[ped_bum].id = CREATE_PED(PEDTYPE_MISSION,A_M_M_OG_BOSS_01,<< 209.650, -149.125, 60.612 >>)
ped[ped_bum].intA = CREATE_SYNCHRONIZED_SCENE(<< 209.650, -149.125, 60.612 >>, << 0.000, 0.000, -103.680 >>)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_bum].id)
SET_PED_COMPONENT_VARIATION(ped[ped_bum].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 2, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_bum].id, INT_TO_ENUM(PED_COMPONENT,3), 1, 2, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_bum].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 1, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_bum].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_PROP_INDEX(ped[ped_bum].id, INT_TO_ENUM(PED_PROP_POSITION,0), 1, 0)
TASK_SYNCHRONIZED_SCENE (ped[ped_bum].id, ped[ped_bum].intA, "misscarsteal2_bum", "base", INSTANT_BLEND_IN, NORMAL_BLEND_OUT )
SET_SYNCHRONIZED_SCENE_LOOPED(ped[ped_bum].intA,TRUE)
events[i].flag++
bumRestartLine = "START"
ENDIF
BREAK
CASE 2
IF NOT IS_PED_INJURED(ped[ped_bum].id)
AND NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_bum].id) < 6.0
TASK_LOOK_AT_ENTITY(ped[ped_chad].id,ped[ped_bum].id,4000,SLF_DEFAULT)
events[i].flag++
ELSE
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_bum].id) > 20.0
IF listenDialogue = 4
IF GET_GAME_TIMER() > events[i].timer
IF NOT IS_CONV_ROOT_PLAYING("LisBum")
IF NOT are_strings_equal(bumRestartLine,"NULL")
IF are_strings_equal(bumRestartLine,"START")
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisBum",8,ped[ped_bum].id,"cs2_bum")
ENDIF
ELSE
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(CONVTYPE_CHOPPER_CAM,"LisBum",bumRestartLine,8,ped[ped_bum].id,"cs2_bum")
ENDIF
ENDIF
ENDIF
ELSE
bumRestartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
ENDIF
ENDIF
ELSE
IF IS_CONV_ROOT_PLAYING("LisBum")
IF currentConvType = CONVTYPE_CHOPPER_CAM
cprintln(debug_trevor3,"kill conv J ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
events[i].timer = GET_GAME_TIMER() + 2000
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF NOT IS_PED_INJURED(ped[ped_bum].id)
IF listenDialogue = 4
AND GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_bum].id) < 6.0
events[i].flag++
ELSE
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_bum].id) < 3.0
events[i].flag=5
ENDIF
ENDIF
ENDIF
BREAK
case 4
IF listenDialogue = 4
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisChadBum",3,ped[ped_chad].id,"CHAD",8,ped[ped_bum].id,"cs2_bum")
events[i].flag++
ENDIF
ENDIF
break
CASE 5
IF listenDialogue != 4
AND IS_CONV_ROOT_PLAYING("LisChadBum")
IF currentConvType = CONVTYPE_CHOPPER_CAM
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
ENDIF
ENDIF
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND NOT IS_PED_INJURED(ped[ped_bum].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_bum].id) < 4.0
events[i].timer = CREATE_SYNCHRONIZED_SCENE(<< 209.650, -149.125, 60.612 >>, << 0.000, 0.000, -103.680 >>)
TASK_SYNCHRONIZED_SCENE (ped[ped_bum].id, events[i].timer, "misscarsteal2_bum", "exit",NORMAL_BLEND_IN, NORMAL_BLEND_OUT )
events[i].flag++
ENDIF
ENDIF
BREAK
CASE 6
IF NOT IS_PED_INJURED(ped[ped_bum].id)
IF listenDialogue != 4
AND IS_CONV_ROOT_PLAYING("LisChadBum")
IF currentConvType = CONVTYPE_CHOPPER_CAM
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
ENDIF
ENDIF
IF GET_SYNCHRONIZED_SCENE_PHASE(events[i].timer) = 1.0
SET_ENTITY_LOAD_COLLISION_FLAG(ped[ped_bum].id,TRUE)
TASK_WANDER_STANDARD(ped[ped_bum].id)
SET_PED_KEEP_TASK(ped[ped_bum].id,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_bum].id)
REMOVE_ANIM_DICT("misscarsteal2_bum")
// events[i].active = FALSE //removed to allow event to clean up
ENDIf
events[i].flag++
ENDIF
BREAK
ENDSWITCH
BREAK
CASE events_dog_walks_by
IF events[i].flag < 10
and events[i].flag > 1
IF IS_PED_IN_SCAN_LIST(HUD,ped[ped_chad].id)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
events[i].flag = 10
ENDIF
ENDIF
ENDIF
SWITCH events[i].flag
CASE CLEANUP
cprintln(debug_Trevor3,"REMOVE DOG WALKS")
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_dog_walk].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_dog].id)
BREAK
case 0
events[i].flag++
BREAK
CASE 1
IF HAS_MODEL_LOADED(A_C_ROTTWEILER)
AND HAS_MODEL_LOADED(A_M_Y_BEACH_02)
ped[ped_dog_walk].id = CREATE_PED(PEDTYPE_MISSION,A_M_Y_BEACH_02,<< 228.4758, -115.5210, 68.8577 >>,83.9800)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_dog_walk].id)
SET_PED_COMPONENT_VARIATION(ped[ped_dog_walk].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_dog_walk].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 2, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_dog_walk].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 2, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_dog_walk].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_PROP_INDEX(ped[ped_dog_walk].id, INT_TO_ENUM(PED_PROP_POSITION,0), 1, 2)
TASK_START_SCENARIO_IN_PLACE(ped[ped_dog_walk].id,"WORLD_HUMAN_STAND_MOBILE_UPRIGHT")
// TASK_USE_MOBILE_PHONE(ped[ped_dog_walk].id,TRUE)
ped[ped_dog].id = CREATE_PED(PEDTYPE_MISSION,A_C_ROTTWEILER,<< 225.5398, -114.8174, 68.7156 >>,253.0000)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_dog].id)
seq()
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_DOG_SITTING_RETRIEVER",10000)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<222.7919, -102.9722, 68.7838>>,PEDMOVE_RUN)
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_dog_walk].id,2000)
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_DOG_SITTING_RETRIEVER",5000)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 225.5398, -114.8174, 68.7156 >>,PEDMOVE_RUN)
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_DOG_SITTING_RETRIEVER",10000)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<224.4595, -108.3759, 68.8405>>,PEDMOVE_RUN)
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_dog_walk].id,2000)
TASK_START_SCENARIO_IN_PLACE(null,"WORLD_DOG_SITTING_RETRIEVER",5000)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<< 225.5398, -114.8174, 68.7156 >>,PEDMOVE_RUN)
endseq(ped[ped_dog].id,TRUE)
ADD_CHOPPER_LISTENING_LOCATION(5,<< 228.4758, -115.5210, 68.8577 >>)
events[i].flag++
events[i].timer = GET_GAME_TIMER() + 10000
ENDIF
BREAK
CASE 2
IF NOT IS_PED_INJURED(ped[ped_dog_walk].id)
IF listenDialogue = 5
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisDogMan",8,ped[ped_dog_walk].id,"cs2_dogMan")
events[i].flag++
ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF IS_CONV_ROOT_PLAYING("LisDogMan")
IF listenDialogue != 5
IF currentConvType = CONVTYPE_CHOPPER_CAM
restartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
restartRoot = "LisDogMan"
cprintln(debug_trevor3,"kill conv K ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
events[i].timer = GET_GAME_TIMER() + 2500
events[i].flag++
ENDIF
ENDIF
ELSE
CLEAR_PED_TASKS(ped[ped_dog_walk].id)
//TASK_USE_MOBILE_PHONE(ped[ped_dog_walk].id,FALSE)
events[i].flag=5
ENDIF
BREAK
CASE 4
IF NOT IS_PED_INJURED(ped[ped_dog_walk].id)
IF listenDialogue = 5
IF GET_GAME_TIMER() > events[i].timer
IF NOT ARE_STRINGS_EQUAL(restartLine,"NULL")
IF ARE_STRINGS_EQUAL(restartRoot,"LisDogMan")
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(CONVTYPE_CHOPPER_CAM,"LisDogMan",restartLine,8,ped[ped_dog_walk].id,"cs2_dogMan")
events[i].flag=3
ENDIF
ENDIF
ELSE
TASK_USE_MOBILE_PHONE(ped[ped_dog_walk].id,FALSE)
events[i].flag=5
ENDIF
ENDIF
ELSE
TASK_USE_MOBILE_PHONE(ped[ped_dog_walk].id,FALSE)
events[i].flag=5
ENDIF
ENDIF
BREAK
CASE 5
IF NOT IS_PED_INJURED(ped[ped_dog_walk].id)
IF GET_SCRIPT_TASK_STATUS(ped[ped_dog_walk].id,SCRIPT_TASK_USE_MOBILE_PHONE) = FINISHED_TASK
TASK_START_SCENARIO_IN_PLACE(ped[ped_dog_walk].id,"WORLD_HUMAN_STAND_MOBILE")
events[i].flag=6
ENDIF
ENDIF
BREAK
//chad walks by
case 10
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_chad].id, <<211.113678,-114.131859,64.811371>>, <<224.620483,-119.230583,73.213097>>, 6.875000)
IF NOT IS_PED_INJURED(ped[ped_dog].id)
// TASK_GO_TO_ENTITY(ped[ped_dog].id,ped[ped_chad].id)
TASK_FOLLOW_TO_OFFSET_OF_ENTITY(ped[ped_dog].id,ped[ped_chad].id,<<-3.0,5.0,0>>,pedmove_run,-1,0.1,true)
events[i].flag++
ENDIF
ENDIF
ENDIF
break
case 11
IF NOT IS_PED_INJURED(ped[ped_dog].id)
AND NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_dog].id,ped[ped_chad].id) < 5.0
ADD_CHOPPER_LISTENING_LOCATION(5,GET_ENTITY_COORDS(ped[ped_chad].id))
REMOVE_CHOPPER_LISTENING_LOCATION(3)
SET_ACTION_FLAG(2,ACT_DOG_BARKS,2)
seq()
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_chad].id,1500)
TASK_PLAY_ANIM(null,"CREATURES@ROTTWEILER@AMB@WORLD_DOG_BARKING@idle_a","idle_a",normal_blend_in,normal_blend_out,3200)
TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_chad].id,1500)
TASK_PLAY_ANIM(null,"CREATURES@ROTTWEILER@AMB@WORLD_DOG_BARKING@idle_a","idle_a",normal_blend_in,normal_blend_out,3500)
endseq(ped[ped_dog].id)
events[i].timer = GET_GAME_TIMER()
events[i].flag++
ENDIF
ENDIF
break
case 12
IF NOT IS_PED_INJURED(ped[ped_dog].id)
AND NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_GAME_TIMER() - events[i].timer < 1000
IF listenDialogue = 5
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisChadDog","LisChadDog_1",8,ped[ped_dog_walk].id,"cs2_dogMan",3,ped[ped_chad].id,"chad")
TASK_LOOK_AT_ENTITY(ped[ped_chad].id,ped[ped_dog].id,5000)
events[i].flag++
ENDIF
ENDIF
ELSE
TASK_LOOK_AT_ENTITY(ped[ped_chad].id,ped[ped_dog].id,5000)
events[i].flag++
ENDIF
ENDIF
BREAK
case 13
IF NOT IS_PED_INJURED(ped[ped_dog].id)
AND NOT IS_PED_INJURED(ped[ped_chad].id)
AND NOT IS_PED_INJURED(ped[ped_dog_walk].id)
IF GET_GAME_TIMER() - events[i].timer > 4000
IF GET_GAME_TIMER() - events[i].timer < 5000
IF listenDialogue = 5
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisChadDog","LisChadDog_2",8,ped[ped_dog_walk].id,"cs2_dogMan",3,ped[ped_chad].id,"chad")
TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_chad].id,ped[ped_dog].id,5000)
// CLEAR_PED_TASKS(ped[ped_dog_walk].id)
// TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_dog_walk].id,ped[ped_dog].id,15000)
events[i].flag++
ENDIF
ENDIF
ELSE
TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_chad].id,ped[ped_dog].id,5000)
//CLEAR_PED_TASKS(ped[ped_dog_walk].id)
//TASK_TURN_PED_TO_FACE_ENTITY(ped[ped_dog_walk].id,ped[ped_dog].id,5000)
events[i].flag++
ENDIf
ENDIF
ENDIF
BREAK
case 14
IF GET_GAME_TIMER() - events[i].timer > 7000
IF GET_GAME_TIMER() - events[i].timer < 8000
IF listenDialogue = 5
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisChadDog","LisChadDog_3",8,ped[ped_dog_walk].id,"cs2_dogMan",3,ped[ped_chad].id,"chad")
events[i].flag++
ENDIF
ENDIF
ELSE
events[i].flag++
ENDIF
ENDIF
BREAK
case 15
IF NOT IS_PED_INJURED(ped[ped_dog].id)
AND NOT IS_PED_INJURED(ped[ped_dog_walk].id)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<232.5028, -103.9169, 69.0993>>,pedmove_walk,DEFAULT_TIME_NEVER_WARP,DEFAULT_NAVMESH_RADIUS,ENAV_NO_STOPPING)
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<232.1583, -81.7946, 68.6269>>,pedmove_walk,DEFAULT_TIME_NEVER_WARP)
TASK_WANDER_STANDARD(null)
endseq(ped[ped_dog_walk].id)
//SET_PED_KEEP_TASK(ped[ped_dog].id,TRUE)
//SET_PED_KEEP_TASK(ped[ped_dog_walk].id,TRUE)
//SET_PED_AS_NO_LONGER_NEEDED(ped[ped_dog].id)
//SET_PED_AS_NO_LONGER_NEEDED(ped[ped_dog_walk].id)
events[i].flag++
ENDIF
BREAK
CASE 16
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_GAME_TIMER() - events[i].timer > 10000
IF GET_GAME_TIMER() - events[i].timer < 11000
IF listenDialogue = 5
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisChadDog","LisChadDog_4",8,ped[ped_dog_walk].id,"cs2_dogMan",3,ped[ped_chad].id,"chad")
seq()
TASK_PAUSE(null,250)
IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_chad].id, <<228.998688,-119.637054,73.218834>>, <<205.348007,-111.020775,67.255005>>, 6.062500)
TASK_FOLLOW_WAYPOINT_RECORDING(null,"CS2_01",0,EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
ELSE
TASK_FOLLOW_WAYPOINT_RECORDING(null,"CS2_01",0,EWAYPOINT_START_FROM_CLOSEST_POINT)
ENDIF
endseq(ped[ped_chad].id)
seq()
TASK_FOLLOW_NAV_MESH_TO_COORD(null,<<-2197.3071, -2648.1526, -59.3432>>,pedmove_run,DEFAULT_TIME_NEVER_WARP)
TASK_FOLLOW_TO_OFFSET_OF_ENTITY(null,ped[ped_dog_walk].id,<<3,1,0>>,PEDMOVE_RUN)
//TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_dog_walk].id)
//TASK_START_SCENARIO_IN_PLACE(null,"WORLD_DOG_SITTING_RETRIEVER",5000)
endseq(ped[ped_dog].id)
events[i].flag++
ENDIF
ENDIF
ELSE
IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_chad].id, <<228.998688,-119.637054,73.218834>>, <<205.348007,-111.020775,67.255005>>, 6.062500)
TASK_FOLLOW_WAYPOINT_RECORDING(ped[ped_chad].id,"CS2_01",0,EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
ELSE
TASK_FOLLOW_WAYPOINT_RECORDING(ped[ped_chad].id,"CS2_01",0,EWAYPOINT_START_FROM_CLOSEST_POINT)
ENDIF
seq()
TASK_FOLLOW_TO_OFFSET_OF_ENTITY(null,ped[ped_dog_walk].id,<<3,1,0>>,PEDMOVE_RUN)
//TASK_TURN_PED_TO_FACE_ENTITY(null,ped[ped_dog_walk].id)
//TASK_START_SCENARIO_IN_PLACE(null,"WORLD_DOG_SITTING_RETRIEVER",5000)
endseq(ped[ped_dog].id)
events[i].flag++
ENDIF
ENDIF
ENDIF
BREAK
case 17
IF GET_GAME_TIMER() - events[i].timer > 13000
IF GET_GAME_TIMER() - events[i].timer < 14000
IF listenDialogue = 5
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisChadDog","LisChadDog_5",8,ped[ped_dog_walk].id,"cs2_dogMan",3,ped[ped_chad].id,"chad")
events[i].flag++
ENDIF
ENDIF
ELSE
events[i].flag++
ENDIF
ENDIF
BREAK
/*
IF NOT IS_PED_INJURED(ped[ped_dog_walk].id)
AND NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_dog_walk].id) < 6.0
TASK_LOOK_AT_ENTITY(ped[ped_chad].id,ped[ped_dog_walk].id,4000,SLF_DEFAULT)
events[i].flag++
ENDIF
ENDIF
CASE 3
IF NOT IS_PED_INJURED(ped[ped_dog_walk].id)
IF listenDialogue = 5
AND GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_chad].id,ped[ped_dog_walk].id) < 5.0
IF CREATE_CONVERSATION_EXTRA("PROST",4,ped[ped_chad].id,"CHAD",5,ped[ped_dog_walk].id,"cs2_whoreB")
events[i].flag++
ENDIF
ELSE
IF missionProgress = STAGE_CHASE_BEGINS
events[i].flag++
ENDIF
ENDIF
ENDIF
BREAK
CASE 4
IF listenDialogue != 5
AND IS_CONV_ROOT_PLAYING("BUM")
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
ENDIF
IF missionProgress = STAGE_CHASE_BEGINS
IF NOT IS_PED_INJURED(ped[ped_dog_walk].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_dog_walk].id)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_dog].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[ped_dog].id)
ENDIF
events[i].active = FALSE
ENDIF
BREAK*/
ENDSWITCH
BREAK
CASE events_garage_beep
SWITCH events[i].flag
CASE 0
ADD_CHOPPER_LISTENING_LOCATION(6,<<201.4053, -154.2533, 57.8284>>)
events[i].flag++
BREAK
CASE 1
IF listenDialogue = 6
IF not IS_PED_INJURED(ped[ped_chad].id)
IF IS_ENTITY_PLAYING_ANIM(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP","chad_holdup_chad")
IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP","chad_holdup_chad") > 0.103
IF GET_ENTITY_ANIM_CURRENT_TIME(ped[ped_chad].id,"misscarsteal2CHAD_HOLDUP","chad_holdup_chad") < 0.112
int tempSound
tempSound = GET_SOUND_ID()
PLAY_SOUND(tempSound,"Garage_Open","CAR_STEAL_2_SOUNDSET")
//PLAY_SOUND_FROM_COORD(tempSound,"Garage_Open",<<201.4053, -154.2533, 57.8284>>,"CAR_STEAL_2_SOUNDSET")
events[i].active = false
ELSE
events[i].active = false
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE events_scan_music_change
IF HUD.lastScannedPed != null
AND HUD.lastScannedPed != ped[ped_franklin].id
PLAY_MUSIC(mus_scan_first_ped,mus_chad_sees_franklin)
events[i].active = FALSE
ENDIF
break
CASE events_chad_car_brief_hint
SWITCH events[i].flag
case 0
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_chad].id,true,HUD_FOE,true,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_chad].id,"CH_CHAD",8)
events[i].timer = get_Game_timer() + 2000
events[i].flag++
BREAK
CASE 1
IF get_Game_timer() > events[i].timer
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_chad].id)
endif
BREAK
ENDSWITCH
BREAK
CASE EVENTS_MISSION_FAILS
IF NOT bPauseFailDuringSkip
IF missionProgress = STAGE_FRANKLIN_AWAITS_TREVOR
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< 1372.8740, -2071.8774, 51.1031 >>) > 130.0
Tell_mission_to_fail("CH_F10")
endif
endif
IF missionProgress < STAGE_FINAL_CUT //prevent fail for pilot dying
IF DOES_ENTITY_EXIST(vehicle[vehChopper].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
Tell_mission_to_fail("CH_F01")
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(ped[ped_trevor].id)
IF IS_PED_INJURED(ped[ped_trevor].id)
Tell_mission_to_fail("CH_F02")
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehHeist].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
Tell_mission_to_fail("CH_F04")
ELSE
/* IF GET_EVENTS_FLAG(events_upside_Down) = 1
IF IS_VEHICLE_STUCK_ON_ROOF(vehicle[vehHeist].id)
Tell_mission_to_fail("CH_F12")
ENDIF
ENDIF*/
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(ped[ped_pilot].id)
IF IS_PED_INJURED(ped[ped_pilot].id)
Tell_mission_to_fail("CH_F05")
ENDIF
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
if missionProgress < STAGE_LEARN_TO_SCAN
if GET_ENTITY_HEALTH(vehicle[vehChopper].id) < 500
Tell_mission_to_fail("CH_F06")
ENDIF
ENDIF
ENDIF
IF missionProgress != STAGE_TREVOR_GET_CHOPPER
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF not IS_PED_INJURED(ped[ped_trevor].id)
if not IS_PED_IN_VEHICLE(ped[ped_trevor].id,vehicle[vehChopper].id)
Tell_mission_to_fail("CH_F09")
ENDIF
ENDIF
ENDIF
ENDIF
IF missionProgress > STAGE_LEARN_TO_SCAN
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF not IS_PED_INJURED(player_ped_id())
if IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
vector vtempC
vTempC = GET_ENTITY_COORDS(player_ped_id())
if vTempC.x < -2000 Or vTempC.x > 2000 or vTempc.y > 1365 or vTempc.y < -3000
Tell_mission_to_fail("CH_F11")
endif
ENDIF
ENDIF
ENDIF
endif
if missionProgress = STAGE_TREVOR_GET_CHOPPER
/*
weapon_type playerWep
playerWep=WEAPONTYPE_UNARMED
IF GET_CURRENT_PED_WEAPON(player_ped_id(),playerWep)
IF playerWep != WEAPONTYPE_UNARMED
IF GET_INTERIOR_AT_COORDS(<< 438.8143, -984.8113, 31.3253 >>) = GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID())
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_EXTSTRS_ROOM002")
Mission_Failed("CH_F15")
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PED_SHOOTING(player_ped_id())
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<443.060303,-943.353638,12.574972>>, <<441.947815,-1061.535400,38.027191>>, 130.812500)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_PLAYER_WANTED_LEVEL(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NO_DROP(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
Mission_Failed("CH_F13")
ENDIF
ENDIF
*/
ENDIF
/*
IF DOES_ENTITY_EXIST(vehicle[vehFranklin].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
Tell_mission_to_fail("CMN_FDEST")
ENDIF
ENDIF
*/
if DOES_ENTITY_EXIST(ped[ped_franklin].id)
if IS_PED_INJURED(ped[ped_franklin].id)
Tell_mission_to_fail("CMN_FDIED")
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDFOR
ENDIF
ENDPROC
PROC DELETE_EVERYTHING(enumFailState failState)
int i
WHILE IS_CUTSCENE_ACTIVE()
IF IS_CUTSCENE_PLAYING()
STOP_CUTSCENE(TRUE)
ELSE
REMOVE_CUTSCENE ()
ENDIF
SAFEWAIT(0)
ENDWHILE
SET_SCENARIO_GROUP_ENABLED("MP_POLICE",TRUE)
RENDER_SCRIPT_CAMS(false,FALSE)
//STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP() //COMMENTING OUT DUE TO BUG url:bugstar:1541155.
IF IS_GAMEPLAY_HINT_ACTIVE()
STOP_GAMEPLAY_HINT(true)
ENDIF
WHILE NOT TRIGGER_MUSIC_EVENT("CAR2_MISSION_FAIL")
safewait()
ENDWHILE
HIDE_CELLPHONE_SIGNIFIERS_FOR_CUTSCENE(FALSE)
SET_WIDESCREEN_BORDERS(FALSE, 0)
DISPLAY_RADAR(TRUE)
DISPLAY_HUD(TRUE)
CLEAR_HELP()
CLEAR_PRINTS()
CLEAR_FOCUS()
if STREAMVOL_IS_VALID(sVol)
STREAMVOL_DELETE(sVol)
ENDIF
audio_level_flag = 0
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_HELI_FILTERING")
STOP_AUDIO_SCENE("CAR_2_HELI_FILTERING")
ENDIF
//SET_AUDIO_FLAG("AllowScoreAndRadio", FALSE)
SET_IGNORE_NO_GPS_FLAG(FALSE)
REMOVE_MODEL_HIDE(<<-111.8944,-188.65,46.02>>,1.0,prop_tree_birch_04)
REMOVE_MODEL_HIDE(<<-109.937,-179.954,47.62>>,1.0,prop_tree_birch_04)
REMOVE_MODEL_HIDE(<<-108.3848,-171.323,49.34>>,1.0,prop_tree_birch_04)
IF IS_HELIHUD_ACTIVE(HUD)
SET_CHOPPER_HUD_ACTIVE(hud,vehicle[vehChopper].id,false, vehicle[vehChopper].id)
ENDIF
REMOVE_SCENARIO_BLOCKING_AREAS()
IF failState = MISSION_STATE_PASSED
OR failState = MISSION_STATE_FAILED
OR failState = MISSION_STATE_DEATH_ARREST
DISABLE_CELLPHONE(FALSE)
SET_PED_PATHS_BACK_TO_ORIGINAL(<<-290.3812, -100.4234, 46.3507>>-<<10,10,10>>,<<-290.3812, -100.4234, 46.3507>>+<<10,10,10>>)
SET_ROADS_IN_ANGLED_AREA(<<-48.346008,-109.031822,82.549194>>, <<195.550781,-197.283768,-38.864712>>, 155.812500,FALSE,true)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1284.524292,-212.007370,50.633434>>-<<39.000000,54.750000,14.000000>>,<<-1284.524292,-212.007370,50.633434>>+<<39.000000,54.750000,14.000000>>,true)
SET_ROADS_IN_ANGLED_AREA(<<1413.366333,-2037.311035,49.111671>>, <<1345.929077,-2093.547363,57.623245>>, 96.500000,FALSE,true)
SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA(<<514.633423,-1321.991821,25.631521>>, <<502.822418,-1297.020508,37.444073>>, 19.312500)
//REMOVE_SCENARIO_BLOCKING_AREA(scenario_block_spawn_area)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-961.907654,-3006.614502,21.694874>>-<<41.187500,41.500000,11.125000>>,<<-961.907654,-3006.614502,21.694874>>+<<41.187500,41.500000,11.125000>>,true) //airport hanagar
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<1382.831177,-2064.168701,56.185715>>,<<41.250000,44.750000,5.750000>>,TRUE)
CLEAR_PED_NON_CREATION_AREA()
SET_PED_PATHS_IN_AREA(<<1382.831177,-2064.168701,56.185715>>,<<41.250000,44.750000,5.750000>>,TRUE)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(FALSE)
SET_FRONTEND_RADIO_ACTIVE(TRUE)
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehicle[vehHeist].id,true)
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehicle[vehFranklin].id,true)
ENDIF
SET_VEHICLE_MODEL_IS_SUPPRESSED(BLIMP, FALSE)
ENDIF
HUD.bBlockTargetLost = FALSE
//remove peds
REPEAT COUNT_OF(ped) i
//if i > 0
if DOES_ENTITY_EXIST(ped[i].id)
IF ped[i].id != player_ped_id()
IF failState = MISSION_STATE_FAILED
OR failState = MISSION_STATE_SKIP
SET_ENTITY_AS_MISSION_ENTITY(ped[i].id)
DELETE_PED(ped[i].id)
ELSE
IF NOT IS_PED_INJURED(ped[i].id)
IF NOT IS_PED_A_PLAYER(ped[i].id)
if i = ped_pilot
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
ped_index temp_ped
temp_ped = GET_PED_IN_VEHICLE_SEAT(vehicle[vehChopper].id,VS_FRONT_RIGHT)
if not IS_PED_INJURED(temp_ped)
SET_ENTITY_HEALTH(ped[ped_pilot].id,100)
ELSE
if not IS_PED_INJURED(ped[ped_pilot].id)
TASK_HELI_MISSION(ped[ped_pilot].id,vehicle[vehChopper].id,null,null,<< -1372.4413, -738.7798, 177.5559 >>,MISSION_GOTO,20.0,10.0,-1,150,150)
ENDIF
ENDIF
IF not IS_PED_INJURED(PLAYER_PED_ID())
if IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id)
TASK_PAUSE(PLAYER_PED_ID(),4000)
ENDIF
ENDIF
ENDIF
IF NOT IS_PED_INJURED(ped[ped_pilot].id)
SET_PED_KEEP_TASK(ped[ped_pilot].id,true)
ENDIf
ENDIF
if i = ped_trevor
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF not IS_PED_INJURED(PLAYER_PED_ID())
if not IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id)
if not IS_PED_INJURED(ped[ped_trevor].id)
if IS_PED_IN_VEHICLE(ped[ped_trevor].id,vehicle[vehChopper].id)
seq()
// TASK_PAUSE(null,4000)
// TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(null,vehicle[vehChopper].id)
TASK_HELI_MISSION(null,vehicle[vehChopper].id,null,null,<< -1372.4413, -738.7798, 177.5559 >>,MISSION_GOTO,20.0,10.0,-1,150,150)
endseq(ped[ped_trevor].id)
SET_PED_KEEP_TASK(ped[ped_trevor].id,true)
endif
endif
endif
ENDIF
endif
endif
IF failState = MISSION_STATE_PASSED
AND i != ped_cop1
DELETE_PED(ped[i].id)
ELSE
IF IS_ENTITY_A_MISSION_ENTITY(ped[i].id)
SET_PED_AS_NO_LONGER_NEEDED(ped[i].id)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//
ENDREPEAT
//remove nearby peds for fail test check
REPEAT COUNT_OF(pedList) i
if DOES_ENTITY_EXIST(pedList[i])
IF pedList[i] != player_ped_id()
IF failState = MISSION_STATE_FAILED
OR failState = MISSION_STATE_SKIP
SET_ENTITY_AS_MISSION_ENTITY(pedList[i])
DELETE_PED(pedList[i])
ENDIF
ENDIF
ENDIF
ENDREPEAT
// IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
// AND NOT IS_PED_INJURED(player_ped_id())
// IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
// TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT(player_ped_id(),vehicle[vehChopper].id)
// SET_PED_KEEP_TASK(player_ped_id(),TRUE)
// ENDIF
// ENDIF
IF IS_VALID_INTERIOR(int_police)
UNPIN_INTERIOR(int_police)
ENDIF
//lock airport gate
IF IS_PED_REGISTERED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_IN, PLAYER_PED_ID())
UNREGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_IN, PLAYER_PED_ID())
ENDIF
//lock
IF IS_PED_REGISTERED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_OUT, PLAYER_PED_ID())
UNREGISTER_PED_TO_ACTIVATE_AUTOMATIC_DOOR(AUTODOOR_AIRPORT_BARRIER_OUT, PLAYER_PED_ID())
ENDIF
IF failState != MISSION_STATE_DEATH_ARREST
AND failState != MISSION_STATE_PASSED
IF GET_PLAYER_MODEL() = PLAYER_TWO
SET_ENTITY_COORDS(player_ped_id(),<<392.4630, -969.8661, 28.4456>>)
SET_ENTITY_HEADING(player_ped_id(), 263.8383)
// LOAD_SCENE(<<392.4630, -969.8661, 28.4456>>) //[MF] Fix for B* 1694492
ELSE
IF IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(player_ped_ID()),AC_AIRPORT_AIRSIDE)
// SET_ENTITY_COORDS(player_ped_id(),<<-955.2151, -2761.3064, 12.9145>>)
// SET_ENTITY_HEADING(player_ped_id(),70)
ENDIF
ENDIF
ENDIF
REPEAT COUNT_OF(vehicle) i
if DOES_ENTITY_EXIST(vehicle[i].id)
if i = vehHeist
IF NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[i].id,FALSE)
SET_ENTITY_AS_MISSION_ENTITY(vehicle[i].id,TRUE,TRUE)
ENDIF
IF failState = MISSION_STATE_DEATH_ARREST
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[i].id)
ELSE
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[i].id)
vector vSafe
vSafe = <<0,0,0>>
IF GET_SAFE_COORD_FOR_PED(GET_ENTITY_COORDS(player_ped_id()),false,vSafe)
SET_ENTITY_COORDS(player_ped_id(),vSafe)
ELSE
SET_ENTITY_COORDS(player_ped_id(),GET_ENTITY_COORDS(player_ped_id()))
ENDIF
ENDIF
DELETE_VEHICLE(vehicle[i].id)
ENDIF
else
IF failState = MISSION_STATE_FAILED
OR failState = MISSION_STATE_SKIP
// if i = vehChopper //was causing vehicles to not be removed on fail/skip
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[i].id)
SET_ENTITY_COORDS(player_ped_id(),GET_ENTITY_COORDS(player_ped_id()))
ENDIF
if NOT IS_ENTITY_A_MISSION_ENTITY(vehicle[i].id)
OR NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[i].id,FALSE)
SET_ENTITY_AS_MISSION_ENTITY(vehicle[i].id,true,true)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[i].id)
DELETE_VEHICLE(vehicle[i].id)
ENDIF
// endif
ELSE
IF IS_VEHICLE_DRIVEABLE(vehicle[i].id)
IF failState = MISSION_STATE_PASSED
and i = vehJet
DELETE_VEHICLE(vehicle[i].id)
ELSE
if NOT IS_ENTITY_A_MISSION_ENTITY(vehicle[i].id)
OR NOT DOES_ENTITY_BELONG_TO_THIS_SCRIPT(vehicle[i].id,FALSE)
SET_ENTITY_AS_MISSION_ENTITY(vehicle[i].id,true)
ENDIF
SET_ENTITY_HAS_GRAVITY(vehicle[i].id,TRUE)
SET_VEHICLE_GRAVITY(vehicle[i].id,TRUE)
FREEZE_ENTITY_POSITION(vehicle[i].id,FALSE)
SET_ENTITY_INVINCIBLE(vehicle[i].id,FALSE)
SET_FORCE_HD_VEHICLE(vehicle[i].id,FALSE)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehicle[i].id)
ENDIF
ENDIF
ENDIF
endif
endif
ENDrepeat
IF carParkCounter > 0
REPEAT COUNT_OF(carParkVehicles) i
IF failState = MISSION_STATE_FAILED
OR failState = MISSION_STATE_SKIP
DELETE_VEHICLE(carParkVehicles[i])
ELSE
SET_VEHICLE_AS_NO_LONGER_NEEDED(carParkVehicles[i])
ENDIF
ENDREPEAT
ENDIF
carParkCounter = 0
kill_all_events(true)
IF DOES_NAVMESH_BLOCKING_OBJECT_EXIST(iTrevBlocker)
REMOVE_NAVMESH_BLOCKING_OBJECT(iTrevBlocker)
ENDIF
CLEAR_SCAN_LIST(HUD)
REMOVE_ALL_HELIHUD_MARKERS(HUD)
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[player_vehicle].id,FALSE, vehicle[vehChopper].id)
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",FALSE)
ENABLE_SELECTOR()
remove_helihud_marker(HUD,destMarker[0])
remove_helihud_marker(HUD,destMarker[1])
remove_helihud_marker(HUD,destMarker[2])
remove_helihud_marker(HUD,destMarker[3])
CLEAR_MISSION_LOCATE_STUFF(sLocatesData,true)
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
clearHoverInArea(hud)
//SwitchPreped = FALSE
failDelay = 0
failReason = FAIL_NULL
if DOES_ENTITY_EXIST(pedDevin)
IF failState = MISSION_STATE_DEATH_ARREST
OR failState = MISSION_STATE_SKIP
DELETE_PED(pedDevin)
ELSE
IF NOT IS_PED_INJURED(pedDevin)
SET_PED_KEEP_TASK(pedDevin,TRUE)
SET_PED_AS_NO_LONGER_NEEDED(pedDevin)
ENDIF
ENDIF
ENDIF
repeat count_of(prop) i
IF DOES_ENTITY_EXIST(prop[i])
DELETE_OBJECT(prop[i])
ENDIF
endrepeat
IF DOES_ENTITY_EXIST(fakeGarageDoor)
DELETE_OBJECT(fakeGarageDoor)
ENDIF
/* IF DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<201.400284,-153.364517,47.848885>>,1.0,PROP_GAR_DOOR_05)
object_index objB
objB = GET_CLOSEST_OBJECT_OF_TYPE(<<201.400284,-153.364517,47.848885>>,1.0,PROP_GAR_DOOR_05)
SET_ENTITY_VISIBLE(objB,true)
set_entity_coords(objB,<<201.400284,-153.364517,57.848885>>)
ENDIF*/
IF failState != MISSION_STATE_SKIP
#IF IS_DEBUG_BUILD
if DOES_WIDGET_GROUP_EXIST(carStealWidget)
DELETE_WIDGET_GROUP(carStealWidget)
ENDIF
#ENDIF
ENDIF
IF IS_VALID_INTERIOR(int_garage)
UNPIN_INTERIOR(int_garage)
ENDIF
IF IS_VALID_INTERIOR(intHangar)
UNPIN_INTERIOR(intHangar)
ENDIF
CLEANUP_MUSIC()
iChaseCV=0
iNotSeenCount=0
chaseDialogueEnum = DIA_NONE
bplayVehRecs = FALSE
set_chopper_speed_limits(HUD)
SET_INFRARED(FALSE,true)
infrared = FALSE
CLEAR_FOCUS()
bDisplayBeam = FALSE
helpTimer = 0
timeAllowingProgress = 0
iMovingStickCount = 0
bMovingStick = FALSE
//pedBeingScanned = 0
pedScanned = 0
scanPedToRemove = 0
pedRemoveTimer = 0
HUD.fChopperSpeed = 0
HUD.actualSpeed = 0
bLastConvoWithoutSubtitles = FALSE
restartRoot = ""
restartLine = ""
REPEAT COUNT_OF(recordingData) i
recordingData[i].playing = FALSE
recordingData[i].ended = FALSE
IF DOES_ENTITY_EXIST(recordingData[i].vehicleID)
if IS_ENTITY_A_MISSION_ENTITY(recordingData[i].vehicleID)
DELETE_VEHICLE(recordingData[i].vehicleID)
ENDIF
//SET_VEHICLE_AS_NO_LONGER_NEEDED(recordingData[i].vehicleID)
ENDIF
ENDREPEAT
//reset scene zoom dialogue
repeat count_of(sceneAudio) i
sceneAudio[i].active = FALSE
sceneAudio[i].line = -1
ENDREPEAT
REPEAT COUNT_OF(viewscene) i
viewscene[i].nextAction = 0
viewscene[i].triggerTime = 0
viewscene[i].dialogueLine = 0
viewscene[i].nextEvent = 0
viewscene[i].listenDia = -1
ENDREPEAT
bPauseListenerDialogue = FALSE
REPEAT COUNT_OF(chopperListeningLoc) i
chopperListeningLoc[i] = <<0,0,0>>
endrepeat
IF DOES_BLIP_EXIST(blipTarget)
REMOVE_BLIP(blipTarget)
ENDIF
#IF IS_DEBUG_BUILD
missionProgress = INT_TO_ENUM(enumMissionStage,iReturnStage)
If playAsTrevor = FALSE
IF missionProgress = STAGE_TREVOR_GET_CHOPPER
missionProgress = STAGE_FRANKLIN_AWAITS_TREVOR
ENDIF
ENDIF
#ENDIF
IF failState != MISSION_STATE_PASSED
AND failState != MISSION_STATE_DEATH_ARREST
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID(),FALSE),200,true)
ENDIF
switchState = SWITCH_SETUP
SET_EVENTS_FLAG(events_upside_Down,0)
control_events(EVENTS_NULL,TRUE)
if STREAMVOL_IS_VALID(sVol)
STREAMVOL_DELETE(sVol)
ENDIF
//CLEAR_TIMECYCLE_MODIFIER()
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
KILL_ANY_CONVERSATION()
lastConv = ""
currentConv = ""
currentConvType = CONVTYPE_NULL
RESET_CONDITIONS()
RESET_ACTIONS()
RESET_INSTRUCTIONS()
RESET_DIALOGUE()
RESET_FAILS()
bWaveformDisplayingQuiet = FALSE
bWaveformDisplayingLoud = FALSE
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE) //added because of bug 527011
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_HELI_CAM_TUTORIAL")
STOP_AUDIO_SCENE("CAR_2_HELI_CAM_TUTORIAL")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_SCAN_FRANKLIN")
STOP_AUDIO_SCENE("CAR_2_SCAN_FRANKLIN")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_SCANNING_TARGET")
STOP_AUDIO_SCENE("CAR_2_SCANNING_TARGET")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_SCAN_THE_SUSPECTS")
STOP_AUDIO_SCENE("CAR_2_SCAN_THE_SUSPECTS")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_USE_MICROPHONE")
STOP_AUDIO_SCENE("CAR_2_USE_MICROPHONE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_FOLLOW_CHAD_ON_FOOT")
STOP_AUDIO_SCENE("CAR_2_FOLLOW_CHAD_ON_FOOT")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_FRANKLIN_ARRIVES")
STOP_AUDIO_SCENE("CAR_2_FRANKLIN_ARRIVES")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_CAR_CHASE_START")
STOP_AUDIO_SCENE("CAR_2_CAR_CHASE_START")
ENDIf
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_Z_TYPE_ENGINE_BOOST")
STOP_AUDIO_SCENE("CAR_2_Z_TYPE_ENGINE_BOOST")
ENDIf
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_CAR_CHASE_CONTINUED")
STOP_AUDIO_SCENE("CAR_2_CAR_CHASE_CONTINUED")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_CAR_IN_SIGHT")
STOP_AUDIO_SCENE("CAR_2_CAR_IN_SIGHT")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_CAR_ENTERS_GARAGE")
STOP_AUDIO_SCENE("CAR_2_CAR_ENTERS_GARAGE")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_USE_INFRARED")
STOP_AUDIO_SCENE("CAR_2_USE_INFRARED")
ENDIf
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_STEAL_THE_CAR")
STOP_AUDIO_SCENE("CAR_2_STEAL_THE_CAR")
ENDIf
IF IS_AUDIO_SCENE_ACTIVE("CAR_2_DRIVE_BACK_TO_GARAGE")
STOP_AUDIO_SCENE("CAR_2_DRIVE_BACK_TO_GARAGE")
ENDIf
IF IS_AUDIO_SCENE_ACTIVE("Car_Steal_2_Chase_Skids_01")
STOP_AUDIO_SCENE("Car_Steal_2_Chase_Skids_01")
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("Car_Steal_2_Chase_Skids_02")
STOP_AUDIO_SCENE("Car_Steal_2_Chase_Skids_02")
ENDIF
ENDPROC
PROC Mission_Cleanup(enumFailState failState)
DELETE_EVERYTHING(failState)
CLEANUP_PC_CONTROLS()
TERMINATE_THIS_THREAD()
ENDPROC
// ------------------------------------------------------------------------------
// Mission Pass
// ------------------------------------------------------------------------------
PROC mission_Passed()
CLEAR_PRINTS()
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED)
//PRINT("CHPASSED",DEFAULT_GOD_TEXT_TIME,1) //PRINT("S3_PASS", DEFAULT_GOD_TEXT_TIME, 1)
Mission_Flow_Mission_Passed()
MISSION_CLEANUP(MISSION_STATE_PASSED)
ENDPROC
PROC Mission_Failed(String failText=null)
IF IS_STRING_NULL(failText) failText = "CHFAILED" ENDIF
CLEAR_PRINTS()
CLEAR_HELP()
WHILE NOT TRIGGER_MUSIC_EVENT("CAR2_MISSION_FAIL")
safewait()
ENDWHILE
MISSION_FLOW_MISSION_FAILED_WITH_REASON(failText)
WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
//Maintain anything that could look weird during fade out (e.g. enemies walking off).
WAIT(0)
ENDWHILE
// check if we need to respawn the player in a different position,
// if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here
Mission_Cleanup(MISSION_STATE_FAILED) // must only take 1 frame and terminate the thread
ENDPROC
FUNC BOOL CONTROL_CHASE_CHATTER()
IF bplayVehRecs
IF iChaseCV = count_of(chaseDialogue)
RETURN TRUE
ENDIF
TEXT_LABEL_23 sLineToPlay
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehFranklin].id)
fFranklineTime = GET_TIME_POSITION_IN_RECORDING(vehicle[vehFranklin].id)
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehheist].id)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehheist].id)
//IF GET_PLAYBACK_NUMBER_FOR_VEHICLE_VIA_RECID(vehicle[vehheist].id) = chaseDialogue[iChaseCV].chadRecordingToCheck
fChadTime = GET_TIME_POSITION_IN_RECORDING(vehicle[vehheist].id)
//ELSE
// fChadTime = -1
//ENDIF
ELSE
fChadTime = -1
ENDIF
ENDIF
IF chaseDialogue[iChaseCV].askForDirections
SWITCH chaseDialogueEnum
CASE DIA_NONE
IF fFranklineTime >= chaseDialogue[iChaseCV].askTime
IF fFranklineTime < chaseDialogue[iChaseCV].askTime + 500
cprintln(debug_trevor3,"Trying to play dialogue: ",iChaseCV)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_tmp16",1,null,"Franklin")
chaseDialogueEnum = DIA_QUERIED
ENDIF
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_whatsee",1,null,"Franklin")
chaseDialogueEnum = DIA_QUERIED
ENDIF
ENDIF
ELSE
chaseDialogueEnum = DIA_ENDING
ENDIF
ENDIF
BREAK
CASE DIA_QUERIED
//check if Chad is on screen for more than a second
IF fFranklineTime < chaseDialogue[iChaseCV].replyByTime
IF HAS_CHAD_BEEN_OBSERVED()
iNotSeenCount = 0
chaseDialogueEnum = DIA_SPOTTED_WAIT
ENDIF
ELSE
//FAIL FOR NOT SPOTTING CHAD
//Only fail if not seen for second time.
IF iNotSeenCount = 0
iNotSeenCount++
chaseDialogueEnum = DIA_NOTSEEN
ELSE
Mission_Failed("CH_F20")
ENDIF
ENDIF
BREAK
CASE DIA_SPOTTED_WAIT
iLastSeenLocationLine = GET_LINE_FOR_CHAD_LOCATION(fFranklineTime)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
chaseDialogueEnum = DIA_SPOTTED
ENDIF
BREAK
CASE DIA_SPOTTED
// IF fChadTime > chaseDialogue[iChaseCV].TrevorResponseTime
sLineToPlay = buildConvLine(chaseDialogue[iChaseCV].conv_root,iLastSeenLocationLine)
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,chaseDialogue[iChaseCV].conv_root,sLineToPlay,0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_ENDING
ENDIF
// ENDIF
BREAK
CASE DIA_NOTSEEN
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_tmp36",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_SO_FIND_HIM
ENDIF
BREAK
CASE DIA_SO_FIND_HIM
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_find",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_FIND_OR_FAIL
iFindByTime = get_game_timer() + 4000
ENDIF
BREAK
CASE DIA_FIND_OR_FAIL
IF HAS_CHAD_BEEN_OBSERVED(TRUE)
chaseDialogueEnum = DIA_FOUND_CHAD_LOCATION
ELSE
IF get_game_timer() > iFindByTime
Mission_Failed("CH_F20")
ENDIF
ENDIF
BREAK
CASE DIA_FOUND_CHAD_LOCATION
sLineToPlay = buildConvLine("cs2_tmp18",GET_LINE_FOR_CHAD_LOCATION(fFranklineTime))
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_tmp18",sLineToPlay,0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_ENDING
iNotSeenCount = 0
ENDIF
BREAK
CASE DIA_ENDING
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
chaseDialogueEnum = DIA_NONE
iChaseCV++
ENDIF
BREAK
ENDSWITCH
ELSE
IF chaseDialogue[iChaseCV].mustBeSeen
SWITCH chaseDialogueEnum
CASE DIA_NONE
IF chaseDialogue[iChaseCV].askTime != 0 AND fFranklineTime >= chaseDialogue[iChaseCV].askTime
OR chaseDialogue[iChaseCV].TrevorResponseTime != 0 AND fChadTime >= chaseDialogue[iChaseCV].TrevorResponseTime
IF chaseDialogue[iChaseCV].askTime != 0 AND fFranklineTime < chaseDialogue[iChaseCV].askTime + 500
OR chaseDialogue[iChaseCV].TrevorResponseTime != 0 AND fChadTime < chaseDialogue[iChaseCV].TrevorResponseTime + 500
IF HAS_CHAD_BEEN_OBSERVED(TRUE)
chaseDialogueEnum = DIA_SPOTTED
ELSE
//if dialogue for a location of Chad, play not seen dialogue instead
IF chaseDialogue[iChaseCV].FailForNotSeeing
//shit we lost him.
chaseDialogueEnum = DIA_FAIL_DIALOGUE
ELSE
IF ARE_STRINGS_EQUAL(chaseDialogue[iChaseCV].conv_root,"cs2_tmp18")
chaseDialogueEnum = DIA_NOTSEEN
ELSE
chaseDialogueEnum = DIA_NONE
iChaseCV++
ENDIF
ENDIF
ENDIF
ELSE
chaseDialogueEnum = DIA_NONE
iChaseCV++
ENDIF
ENDIF
BREAK
CASE DIA_SPOTTED
IF chaseDialogue[iChaseCV].conv_line != 0
sLineToPlay = buildConvLine(chaseDialogue[iChaseCV].conv_root,chaseDialogue[iChaseCV].conv_line)
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_BANTER,chaseDialogue[iChaseCV].conv_root,sLineToPlay,0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_ENDING
ENDIF
ELSE
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,chaseDialogue[iChaseCV].conv_root,0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_ENDING
ENDIF
ENDIF
BREAK
CASE DIA_NOTSEEN
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_tmp36",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
iNotSeenCount++
chaseDialogueEnum = DIA_ENDING
ENDIF
BREAK
CASE DIA_ENDING
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
chaseDialogueEnum = DIA_NONE
iChaseCV++
ENDIF
BREAK
CASE DIA_FAIL_DIALOGUE
// IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY, "cs2_lostcar",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_FAIL
// ENDIF
BREAK
CASE DIA_FAIL
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
Mission_Failed("CH_F20")
ENDIF
BREAK
ENDSWITCH
ELSE
SWITCH chaseDialogueEnum
CASE DIA_NONE
IF chaseDialogue[iChaseCV].askTime != 0 AND fFranklineTime >= chaseDialogue[iChaseCV].askTime
OR chaseDialogue[iChaseCV].TrevorResponseTime != 0 AND fChadTime >= chaseDialogue[iChaseCV].TrevorResponseTime
IF chaseDialogue[iChaseCV].conv_line != 0
sLineToPlay = buildConvLine(chaseDialogue[iChaseCV].conv_root,chaseDialogue[iChaseCV].conv_line)
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_BANTER,chaseDialogue[iChaseCV].conv_root,sLineToPlay,0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_ENDING
ENDIF
ELSE
IF ARE_STRINGS_EQUAL(chaseDialogue[iChaseCV].conv_root,"cs2_chase3")
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,chaseDialogue[iChaseCV].conv_root,0,null,"Trevor",3,null,"cs2_copRadio")
chaseDialogueEnum = DIA_ENDING
ENDIF
ELSE
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,chaseDialogue[iChaseCV].conv_root,0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
chaseDialogueEnum = DIA_ENDING
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE DIA_ENDING
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
chaseDialogueEnum = DIA_NONE
iChaseCV++
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC checkConditions(enumconditions firstCondition, enumconditions lastCondition)
//IF SIZE_OF(enumconditions) > NO_OF_CONDITIONS
//SCRIPT_ASSERT("INCREASE CONST_INT NO_OF_CONDITIONS")
//ENDIF
int iLastArray = enum_to_int(lastCondition) - enum_to_int(firstCondition)
IF conditions[0].condition != firstCondition
AND conditions[iLastArray].condition != lastCondition
int j
int enumCounter = 0
REPEAT COUNT_OF(conditions) j
IF j <= iLastArray
conditions[j].condition = int_to_enum(enumconditions,enum_to_int(firstCondition) + enumCounter)
conditions[j].active = TRUE
conditions[j].returns = FALSE
conditions[j].wasTrue = FALSE
enumCounter++
ELSE
conditions[j].active = FALSE
ENDIF
ENDREPEAT
//reset which condition goes in to which array.
ENDIF
int i
REPEAT COUNT_OF(conditions) i
IF conditions[i].active
SWITCH conditions[i].condition
CASE COND_FAILING
IF missionFailing != fail_null
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_COP_WALKING_TO_STAIRS
IF IS_ACTION_ONGOING(ACT_WALK_TO_STAIRS)
conditions[i].returns = TRUE
ELSE
conditions[i].returns = FALSE
ENDIF
BREAK
CASE COND_CUTSCENE_ENDED
conditions[i].returns = TRUE
/*
SWITCH conditions[i].flag
CASE 0
IF IS_CUTSCENE_PLAYING()
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_CUTSCENE_PLAYING()
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH*/
BREAK
CASE COND_DIA_COP_LEADING
IF ARE_STRINGS_EQUAL("cs2_cop5",lastConv)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_ENTERED_RECEPTION
IF NOT conditions[i].returns
// IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<437.452118,-988.347717,29.385637>>, <<437.466064,-977.924683,32.189537>>, 2.437500)
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<434.832092,-983.039307,29.314508>>, <<450.191742,-983.240356,32.814507>>, 11.000000)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_COP_IN_CORRIDOR
IF NOT conditions[i].returns
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
IF GET_ROOM_KEY_FROM_ENTITY(ped[ped_cop1].id) = GET_HASH_KEY("PH_LOCKERS_ROOM")
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_ANYWHERE_IN_STAIRWALL
IF NOT conditions[i].returns
IF NOT IS_PED_INJURED(player_ped_id())
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_EXTSTRS_ROOM001")
OR GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_EXTSTRS_ROOM002")
OR GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_EXTSTRS_ROOM003")
OR GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_EXTSTRS_ROOM004")
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_LAGS_BEHIND_OR_WANDERS
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_cop1].id) > 13
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_UP_STAIRWELL
IF NOT conditions[i].returns
IF NOT IS_PED_INJURED(player_ped_id())
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_EXTSTRS_ROOM002")
OR GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_EXTSTRS_ROOM003")
OR GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_EXTSTRS_ROOM004")
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_IN_CORRIDOR
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) = GET_HASH_KEY("PH_LOCKERS_ROOM")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_OUT_OF_BOUNDS
/*
conditions[i].returns = FALSE
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_LOCKERS_ROOM")
AND GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_EXTSTRS_ROOM001")
AND GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_EXTSTRS_ROOM002")
AND GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_EXTSTRS_ROOM003")
AND GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_EXTSTRS_ROOM004")
AND GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_LOBBY_ROOM")
conditions[i].returns = TRUE
ENDIF*/
IF IS_ENTITY_AT_COORD(player_ped_id(), <<454.225983,-982.579773,30.564594>>,<<1.000000,1.000000,1.062500>>)
conditions[i].returns = TRUE
ENDIf
BREAK
CASE COND_PLAYER_NEARBY
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
IF GET_DISTANCE_BETWEEN_PEDS(PLAYER_PED_ID(),ped[ped_cop1].id) < 5.0
conditions[i].returns = TRUE
ELSE
conditions[i].returns = FALSE
ENDIF
ENDIF
BREAK
CASE COND_COPS_ALERTED_CONDITION
conditions[i].returns = FALSE
IF IS_VALID_INTERIOR(int_police)
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = int_police
//IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_LOBBY_ROOM")
//GET_ROOM_NAME_FROM_PED_DEBUG(player_ped_id()))
/*IF IS_CONDITION_TRUE(COND_CUTSCENE_ENDED)
IF GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) = GET_HASH_KEY("PH_LOCKERS_ROOM")
IF IS_ENTITY_IN_ANGLED_AREA( PLAYER_PED_ID(), <<460.894409,-990.826416,27.877041>>, <<449.021454,-990.770142,33.752041>>, 6.375000)
conditions[i].returns = TRUE
ENDIF
ELSE
IF GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) != GET_HASH_KEY("PH_EXTSTRS_ROOM001")
AND GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) != GET_HASH_KEY("PH_EXTSTRS_ROOM002")
AND GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) != GET_HASH_KEY("PH_EXTSTRS_ROOM003")
AND GET_ROOM_KEY_FROM_ENTITY(PLAYER_PED_ID()) != GET_HASH_KEY("PH_EXTSTRS_ROOM004")
conditions[i].returns = TRUE
ENDIF
ENDIF
ELSE
conditions[i].returns = TRUE
ENDIF*/
//ENDIF
//IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) != 0
//conditions[i].returns = TRUE
//ENDIF
ENDIF
ENDIF
BREAK
CASE COND_COP_IN_STAIRWELL
conditions[i].returns = FALSE
IF DOES_ENTITY_EXIST(ped[ped_cop1].id)
IF IS_VALID_INTERIOR(int_police)
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
IF GET_INTERIOR_FROM_ENTITY(ped[ped_cop1].id) = int_police
IF GET_ROOM_KEY_FROM_ENTITY(ped[ped_cop1].id) = GET_HASH_KEY("PH_EXTSTRS_ROOM001")
OR GET_ROOM_KEY_FROM_ENTITY(ped[ped_cop1].id) = GET_HASH_KEY("PH_EXTSTRS_ROOM002")
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_CAN_SPAWN_CHOPPER
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<465.032135,-985.680969,38.766777>>, <<465.031616,-981.791077,42.766624>>, 8.000000)
conditions[i].returns = TRUE
ENDIF
IF IS_CONV_ROOT_PLAYING("cs2_cop5")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_NOT_FOLLOWING_COP
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_cop1].id,TRUE) > 8.0
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_ON_ROOF
conditions[i].returns = FALSE
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<476.378693,-987.339050,42.320747>>, <<430.220062,-986.779541,47.257648>>, 31.125000)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_TRYS_TO_ENTER_CHOPPER
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_PED_GETTING_INTO_A_VEHICLE(player_ped_id())
IF GET_VEHICLE_PED_IS_USING(player_ped_id()) = vehicle[vehChopper].id
conditions[i].returns = TRUE
ENDIF
ELIF IS_CONTROL_JUST_PRESSED(player_control,INPUT_ENTER) AND GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(),vehicle[vehChopper].id) < 9
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_IN_LOCKER_ROOM
conditions[i].returns = FALSE
IF IS_ENTITY_AT_COORD(player_ped_id(), <<455.441803,-991.061951,31.064594>>,<<5.312500,3.625000,1.500000>>)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_TREVOR_TELLS_PILOT_TO_TAKE_OFF
IF IS_CONV_ROOT_PLAYING("cs2_cop7")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_RUNS_AHEAD
IF IS_CONDITION_TRUE(COND_COP_LEADING_PLAYER)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_cop1].id) > 5
IF IS_CONDITION_TRUE(COND_PLAYER_IN_CORRIDOR)
AND NOT IS_CONDITION_TRUE(COND_COP_IN_CORRIDOR)
AND NOT IS_CONDITION_TRUE(COND_COP_IN_CORRIDOR)
conditions[i].returns = TRUE
ENDIF
IF IS_CONDITION_TRUE(COND_COP_IN_STAIRWELL)
AND IS_CONDITION_TRUE(COND_PLAYER_ANYWHERE_IN_STAIRWALL)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_TREVOR_TELLS_PILOT_TO_ACTIVATE_SCANNER
SWITCH conditions[i].flag
CASE 0
IF IS_CONV_ROOT_PLAYING("cs2_cop7")
conditions[i].flag = 1
ENDIF
BREAK
CASE 1
IF NOT IS_CONV_ROOT_PLAYING("cs2_cop7")
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_READY_TO_TURN_ON_SCANNER
IF IS_CONDITION_TRUE(COND_TREVOR_TELLS_PILOT_TO_ACTIVATE_SCANNER)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_DIA_BACK_TO_FRONT_DESK
IF IS_CONV_ROOT_PLAYING("cs2_cop6")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_GET_IN
//IF ARE_STRINGS_EQUAL("cs2_cop10",lastConv)
IF IS_CONV_ROOT_PLAYING("cs2_cop10")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_IN_CHOPPER
conditions[i].returns = FALSE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_PED_IN_ANY_VEHICLE(player_ped_id())
//OR IS_PED_GETTING_INTO_A_VEHICLE(player_ped_id())
IF GET_VEHICLE_PED_IS_in(player_ped_id()) = vehicle[vehChopper].id
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_COP_LEADING_PLAYER
conditions[i].returns = FALSE
IF IS_ACTION_ONGOING(ACT_WALK_TO_STAIRS)
AND NOT IS_ACTION_COMPLETE(6,ACT_COP_RETURNS_TO_FRONT_DESK)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_SPOTTED_BY_PILOT
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_pilot].id)
//IF IS_PED_IN_VIEWING_ARC_FROM_PED(ped[ped_pilot].id,player_ped_id(),180,13)
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<464.015961,-984.180542,42.066925>>, <<437.531738,-984.932678,47.191925>>, 28.062500)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_LEAVING_TREVOR
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_trevor].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1381.1898, -2065.8499, 50.9983>>) > 80
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
//learn to scan
CASE COND_STARTED_AS_TREVOR
IF playAsTrevor
conditions[i].returns = TRUE
ELSE
conditions[i].returns = FALSE
ENDIF
BREAK
CASE COND_FAR_ENOUGH_FROM_FRANKLIN_TO_PLAY_CONVO
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_franklin].id) > 600
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_LEARNT_TO_SCAN
IF NOT conditions[i].returns = TRUE
IF IS_INSTRUCTION_COMPLETE(0,INS_TEACH_TO_SCAN)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_BOOTING_UP_LINE_PLAYED
IF NOT conditions[i].returns
IF IS_CONV_ROOT_PLAYING("CS2_inst2")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_FRANKLIN_SCANNED
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_franklin].id)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_SCANNED_CONVO_FINISHED
IF HAS_DIALOGUE_FINISHED(4,DIA_FRANKLIN_SCANNED)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_SCAN_MY_BUDDY
IF HAS_DIALOGUE_FINISHED(5,DIA_GOING_TO_FIND_BUDDY)
OR HAS_DIALOGUE_FINISHED(1,DIA_SCAN_BUDDY_NEARBY)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_TREV_SAID_TO_FIND_FRANKLIN
IF HAS_DIALOGUE_FINISHED(5,DIA_GOING_TO_FIND_BUDDY)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_TOLD_TO_SCAN_FRANKLIN
SWITCH conditions[i].flag
CASE 0
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS7")
conditions[i].intA = GET_GAME_TIMER() + 3000
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_OUTSIDE_SAFE_ZONE
conditions[i].returns = FALSE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<483.12451, -1176.62402, 40.71120>>) > 2250
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_FLEW_IN_TO_FAIL_ZONE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<483.12451, -1176.62402, 40.71120>>) > 2650
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_APPROACHING_FRANKLIN
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<1377.20, -2066.32, 51.00>>) < 350
conditions[i].returns = TRUE
ENDIF
BREAK
//scan area 1
CASE COND_POSTAL_BEING_OBSERVED
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_courier].id)
IF GET_OBSERVED_HELIHUD_PED(HUD) = ped[ped_courier].id
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_courier].id) < 300
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_PERVERT_BEING_OBSERVED
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_pervert].id)
AND NOT IS_PED_INJURED(ped[ped_wife].id)
AND NOT IS_PED_INJURED(ped[ped_husband].id)
IF GET_OBSERVED_HELIHUD_PED(HUD) = ped[ped_pervert].id
OR GET_OBSERVED_HELIHUD_PED(HUD) = ped[ped_wife].id
OR GET_OBSERVED_HELIHUD_PED(HUD) = ped[ped_husband].id
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_wife].id) < 300
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_AREA1_PED_JUST_SCANNED
SWITCH conditions[i].flag
CASE 0
IF NOT IS_BIT_SET(conditions[i].intA,0)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_courier].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,FALSE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,0)
conditions[i].intB = GET_GAME_TIMER() + 2000
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,1)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_pervert].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,FALSE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,1)
conditions[i].intB = GET_GAME_TIMER() + 2000
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,2)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_husband].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,FALSE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,2)
conditions[i].intB = GET_GAME_TIMER() + 2000
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,3)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_wife].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,TRUE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,3)
conditions[i].intB = GET_GAME_TIMER() + 2000
ENDIF
ENDIF
IF conditions[i].returns
IF IS_BIT_SET(conditions[i].intA,0)
AND IS_BIT_SET(conditions[i].intA,1)
AND IS_BIT_SET(conditions[i].intA,2)
AND IS_BIT_SET(conditions[i].intA,3)
conditions[i].returns = FALSE
conditions[i].flag=10 //don't do any more checks
ENDIF
ENDIF
BREAK
CASE 1
IF IS_AMBIENT_SPEECH_PLAYING(ped[ped_trevor].id)
OR GET_GAME_TIMER() > conditions[i].intB
conditions[i].returns = FALSE
conditions[i].flag=2
ENDIF
BREAK
CASE 2
IF NOT IS_AMBIENT_SPEECH_PLAYING(ped[ped_trevor].id)
OR GET_GAME_TIMER() > conditions[i].intB
conditions[i].flag=0
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_DIA_COME_IN_FRANKLIN_PLAYED
SWITCH conditions[i].flag
CASE 0
IF IS_CONV_ROOT_PLAYING("CS2_arrive")
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_CONV_ROOT_PLAYING("CS2_arrive")
conditions[i].flag++
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_CHOPPER_IN_VIEWING_RANGE_OF_AREA1
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-21.36739, -54.06999, 62.39728>>,FALSE) < 180
conditions[i].returns = TRUE
ELSE
conditions[i].returns = FALSE
ENDIF
BREAK
CASE COND_AREA3_PED_JUST_SCANNED
SWITCH conditions[i].flag
CASE 0
IF NOT IS_BIT_SET(conditions[i].intA,0)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_hooker].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,TRUE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,0)
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,1)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_punter].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,FALSE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,1)
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,2)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_pimp].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,FALSE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,2)
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,3)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_bum].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,FALSE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,3)
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,4)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_dog_walk].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,FALSE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,4)
ENDIF
ENDIF
IF NOT IS_BIT_SET(conditions[i].intA,5)
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chadGirl].id)
SET_CONDITION_STATE(COND_SCANNED_PED_WAS_A_WOMAN,TRUE)
conditions[i].returns = TRUE
conditions[i].flag=1
SET_BIT(conditions[i].intA,5)
ENDIF
ENDIF
IF conditions[i].returns
IF IS_BIT_SET(conditions[i].intA,0)
AND IS_BIT_SET(conditions[i].intA,1)
AND IS_BIT_SET(conditions[i].intA,2)
AND IS_BIT_SET(conditions[i].intA,3)
AND IS_BIT_SET(conditions[i].intA,4)
AND IS_BIT_SET(conditions[i].intA,5)
conditions[i].returns = FALSE
conditions[i].flag=10 //don't do any more checks
ENDIF
ENDIF
BREAK
CASE 1
IF IS_AMBIENT_SPEECH_PLAYING(ped[ped_trevor].id)
conditions[i].returns = FALSE
conditions[i].flag=2
ENDIF
BREAK
CASE 2
IF NOT IS_AMBIENT_SPEECH_PLAYING(ped[ped_trevor].id)
conditions[i].flag=0
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_PROSIE_BEING_OBSERVED
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_hooker].id)
IF GET_OBSERVED_HELIHUD_PED(HUD) = ped[ped_hooker].id
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_hooker].id) < 300
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_CHAD_BEING_OBSERVED
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_OBSERVED_HELIHUD_PED(HUD) = ped[ped_chad].id
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_chad].id) < 300
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_LISTENING_IN_ON_DIALOGUE
conditions[i].returns = FALSE
IF listenDialogue != -1
conditions[i].returns = TRUE
ENDIF
BREAK
//scan area 3
CASE COND_CHAD_HIDDEN
conditions[i].returns = FALSE
IF IS_CONDITION_TRUE(COND_CHAD_WAS_SCANNED)
if HUD.targetIsLost
IF conditions[i].intA = 0
conditions[i].intA = GET_GAME_TIMER() + 1000
ENDIF
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].returns = TRUE
ENDIF
ELSE
conditions[i].intA = 0
endif
ENDIF
BREAK
CASE COND_CHAD_ON_SCREEN
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_chad].id)
if IS_ENTITY_ON_SCREEN(ped[ped_chad].id)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_CHAD_OFFSCREEN_FOR_4_SECONDS
IF NOT IS_PED_INJURED(ped[ped_chad].id)
SWITCH conditions[i].flag
CASE 0
conditions[i].returns = FALSE
IF NOT IS_ENTITY_ON_SCREEN(ped[ped_chad].id)
conditions[i].intA = GET_GAME_TIMER()
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_ENTITY_ON_SCREEN(ped[ped_chad].id)
IF GET_GAME_TIMER() - conditions[i].intA > 4000
conditions[i].returns = TRUE
ENDIF
ELSE
conditions[i].flag=0
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE COND_CHAD_BY_GARAGES
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF NOT conditions[i].returns
IF IS_ENTITY_IN_ANGLED_AREA(ped[ped_chad].id, <<193.618256,-152.232742,55.388981>>, <<213.026962,-159.061966,61.175438>>, 6.500000)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_CHAD_IN_APARTMENT_LOCATE
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_ENTITY_IN_ANGLED_AREA(ped[ped_chad].id, <<207.965149,-151.093109,59.599060>>, <<215.810669,-151.350418,76.994919>>, 20.750000)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_GARAGE_DOOR_OPENING
IF fOpenRatio > 0.05
conditions[i].returns = TRUE
ENDIF
BREAK
// ============================ CAR PARK CASE CONDITIONS ==============================
CASE COND_CARPARK_STARTS
conditions[i].returns = TRUE
BREAK
CASE COND_CHOPPER_DESCENDING
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
vector vTemp
vTemp = GET_ENTITY_COORDS(vehicle[vehChopper].id)
IF vTemp.z < 100.0
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_FRANKLIN_STOPPED_HIS_CAR
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehFranklin].id)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_FRANKLIN_HAS_STOPPED_RUNNING
IF NOT conditions[i].returns
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF IS_ENTITY_IN_ANGLED_AREA( ped[ped_franklin].id, <<-1273.912354,-226.118301,49.924622>>, <<-1276.218140,-222.831039,52.174622>>, 4.812500)
IF NOT IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(ped[ped_franklin].id)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_A_LITTLE_AFTER_EXITS_CLEAR_DIA
IF NOT conditions[i].returns
SWITCH conditions[i].flag
CASE 0
IF ARE_STRINGS_EQUAL(lastConv,"cs2_clear")
conditions[i].intA = GET_GAME_TIMER() + 3000
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE COND_DIA_TAKE_US_DOWN
SWITCH conditions[i].flag
CASE 0
IF IS_CONV_ROOT_PLAYING("cs2_flylow")
conditions[i].flag++
ENDIf
BREAK
CASE 1
IF NOT IS_CONV_ROOT_PLAYING("cs2_flylow")
conditions[i].returns = TRUE
ENDIf
BREAK
ENDSWITCH
BREAK
CASE COND_DIA_THERMAL_VISION
IF IS_CONV_ROOT_PLAYING("CS2_Carpark3")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_DIA_CAN_YOU_SEE_FRANKLIN
IF ARE_STRINGS_EQUAL(lastConv,"cs2_onme")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_ANY_OTHER_HEAT_SOURCES
IF HAS_DIALOGUE_FINISHED(6,DIA_ANY_OTHER_HEAT_SOURCES)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_LOOK_FOR_MORE_HEAT_PLAYED
if not conditions[i].returns
IF ARE_STRINGS_EQUAL(lastConv,"cs2_looknow")
conditions[i].returns = true
ENDIF
ENDIF
BREAK
CASE COND_DIA_TREVOR_SEES_CHAD_ENDED
IF ARE_STRINGS_EQUAL(lastConv,"CS2_manc1")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_FRANKLIN_SEES_PISSER
IF ARE_STRINGS_EQUAL(lastConv,"cs2_mana3")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_FRANKLIN_SEES_FIXING_MAN
IF ARE_STRINGS_EQUAL(lastConv,"cs2_mand2b")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_DIA_FRANKLIN_SEES_CHAD
SWITCH conditions[i].flag
CASE 0
IF IS_DIALOGUE_COMPLETE(12,DIA_FRANKLIN_SEES_ZTYPE)
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_CONV_ROOT_PLAYING("cs2_manc2")
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_DIA_TREVOR_SEE_FRANKLIN_ENDED
IF ARE_STRINGS_EQUAL(lastConv,"cs2_seen")
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_CHOPPER_AT_CAR_PARK_LEVEL
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_ENTITY_IN_ANGLED_AREA( vehicle[vehChopper].id, <<-1324.085449,-217.174683,42.192139>>, <<-1297.745728,-256.196350,62.782513>>, 19.187500)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_THERMAL_TURNED_ON
IF infraRed
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_FRANKLIN_OBSERVED_WITH_THERMAL
IF NOT conditions[i].returns
IF infraRed
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
if is_point_in_screeen_area(GET_ENTITY_COORDS(ped[ped_franklin].id,FALSE),0,0,1,1)
if hud.fFOV < 25
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_SEE_WANKER
IF NOT conditions[i].returns
IF IS_CONDITION_TRUE(COND_WAITING_FOR_NEXT_TARGET)
AND IS_CONDITION_TRUE(COND_THERMAL_READY)
IF is_ped_in_sight(ped_wrong_wanker)
AND NOT is_ped_in_sight(ped_wrong_fucker)
AND NOT is_ped_in_sight(ped_franklin)
AND NOT is_ped_in_sight(ped_chad)
AND NOT is_ped_in_sight(ped_wrong_lean)
AND NOT is_ped_in_sight(ped_wrong_phone)
conditions[i].returns = TRUE
conditions[i].flag++
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_SEE_FIXING_MAN
IF NOT conditions[i].returns
IF IS_CONDITION_TRUE(COND_WAITING_FOR_NEXT_TARGET)
AND IS_CONDITION_TRUE(COND_THERMAL_READY)
IF is_ped_in_sight(ped_wrong_fucker)
AND NOT is_ped_in_sight(ped_wrong_wanker)
AND NOT is_ped_in_sight(ped_franklin)
AND NOT is_ped_in_sight(ped_chad)
AND NOT is_ped_in_sight(ped_wrong_lean)
AND NOT is_ped_in_sight(ped_wrong_phone)
conditions[i].returns = TRUE
conditions[i].flag++
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_SEE_CHAD
IF NOT conditions[i].returns
IF IS_CONDITION_TRUE(COND_WAITING_FOR_NEXT_TARGET)
AND IS_CONDITION_TRUE(COND_THERMAL_READY)
IF is_ped_in_sight(ped_chad)
AND NOT is_ped_in_sight(ped_wrong_wanker)
AND NOT is_ped_in_sight(ped_wrong_fucker)
AND NOT is_ped_in_sight(ped_franklin)
AND NOT is_ped_in_sight(ped_wrong_lean)
AND NOT is_ped_in_sight(ped_wrong_phone)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_SEE_LEANING_MAN
IF NOT conditions[i].returns
IF IS_CONDITION_TRUE(COND_WAITING_FOR_NEXT_TARGET)
AND IS_CONDITION_TRUE(COND_THERMAL_READY)
IF is_ped_in_sight(ped_wrong_lean)
AND NOT is_ped_in_sight(ped_wrong_wanker)
AND NOT is_ped_in_sight(ped_wrong_fucker)
AND NOT is_ped_in_sight(ped_franklin)
AND NOT is_ped_in_sight(ped_wrong_phone)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_SEE_PHONE_CAR_MAN
IF NOT conditions[i].returns
IF IS_CONDITION_TRUE(COND_WAITING_FOR_NEXT_TARGET)
AND IS_CONDITION_TRUE(COND_THERMAL_READY)
IF is_ped_in_sight(ped_wrong_phone)
AND NOT is_ped_in_sight(ped_wrong_lean)
AND NOT is_ped_in_sight(ped_wrong_wanker)
AND NOT is_ped_in_sight(ped_wrong_fucker)
AND NOT is_ped_in_sight(ped_franklin)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_NEXT_TARGET_FOUND
IF IS_CONDITION_TRUE(COND_WAITING_FOR_NEXT_TARGET)
int iTargetsSeen
iTargetsSeen=0
IF IS_CONDITION_TRUE(COND_SEE_CHAD) iTargetsSeen++ ENDIF
IF IS_CONDITION_TRUE(COND_SEE_FIXING_MAN) iTargetsSeen++ ENDIF
IF IS_CONDITION_TRUE(COND_SEE_WANKER) iTargetsSeen++ ENDIF
IF IS_CONDITION_TRUE(COND_SEE_LEANING_MAN) iTargetsSeen++ ENDIF
IF IS_CONDITION_TRUE(COND_SEE_PHONE_CAR_MAN) iTargetsSeen++ ENDIF
IF iTargetsSeen > conditions[i].intA
conditions[i].intA = iTargetsSeen
conditions[i].returns = TRUE
ENDIF
ENDIF
IF IS_CONDITION_TRUE(COND_INVESTIGATING_NEXT_TARGET)
conditions[i].returns = FALSE
ENDIF
BREAK
CASE COND_INVESTIGATING_NEXT_TARGET
SWITCH conditions[i].flag
CASE 0
IF IS_CONV_ROOT_PLAYING("cs2_manb1")
OR IS_CONV_ROOT_PLAYING("cs2_manb1b")
OR IS_CONV_ROOT_PLAYING("cs2_manc1")
OR IS_CONV_ROOT_PLAYING("cs2_mana1")
OR IS_CONV_ROOT_PLAYING("cs2_mane1")
conditions[i].returns = TRUE
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_mana3")
OR IS_CONV_ROOT_PLAYING("cs2_mand2b")
OR IS_CONV_ROOT_PLAYING("cs2_mane2")
OR IS_CONV_ROOT_PLAYING("cs2_manb2b")
conditions[i].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_CONV_ROOT_PLAYING("cs2_mana3")
AND NOT IS_CONV_ROOT_PLAYING("cs2_mand2b")
AND NOT IS_CONV_ROOT_PLAYING("cs2_mane2")
AND NOT IS_CONV_ROOT_PLAYING("cs2_manb2b")
conditions[i].returns = FALSE
SET_INSTRUCTION_FLAG(3,INS_LOOK_FOR_ANOTHER_HEAT_SOURCES,0)
conditions[i].flag = 0
ENDIF
BREAK
ENDSWITCH
//this is set back to flase elsewhere in script
BREAK/*
CASE COND_FRANKLIN_AT_PISSER
SWITCH conditions[i].flag
CASE 0
//IF IS_ACTION_ONGOING(
BREAK
ENDSWITCH
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF NOT ARE_STRINGS_EQUAL(lastConv,"cs2_mana3")
AND NOT IS_CONDITION_TRUE(COND_DIA_FRANKLIN_SEES_PISSER)
IF IS_ENTITY_AT_COORD(ped[ped_franklin].id,pedWankPosition,<<2,2,2>>)
IF GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) = FINISHED_TASK
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
/*
CASE COND_FRANKLIN_AT_FIXING_MAN
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF NOT ARE_STRINGS_EQUAL(lastConv,"cs2_manc2")
AND NOT IS_CONDITION_TRUE(COND_DIA_FRANKLIN_SEES_FIXING_MAN)
IF IS_ENTITY_AT_COORD(ped[ped_franklin].id,<< -1262.5160, -241.0382, 50.6831 >>,<<2,2,2>>)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK*/
CASE COND_BLOCK_LISTENING
/*conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF (GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_ANY) = performing_TASK
AND GET_SCRIPT_TASK_STATUS(ped[ped_franklin].id,SCRIPT_TASK_PLAY_ANIM) != performing_Task)
OR IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
conditions[i].returns = TRUE
ENDIF
ENDIF*/
BREAK
CASE COND_FRANKLIN_SAW_WRONG_GUY
SWITCH conditions[i].flag
CASE 0
IF IS_CONDITION_TRUE(COND_INVESTIGATING_NEXT_TARGET)
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_CONDITION_TRUE(COND_INVESTIGATING_NEXT_TARGET)
conditions[i].returns = TRUE
//set back to false elsewhere in script
conditions[i].flag++
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_FRANKLIN_RUNS_TO_CAR
IF IS_ENTITY_PLAYING_ANIM(player_ped_id(),"misscarsteal2switch","_ground_franklin")
conditions[i].returns = TRUE
ENDIF
BREAK
/*
CASE COND_CAN_SEE_UNSCANNED_PED
IF IS_CONDITION_TRUE(COND_SEE_CHAD)
OR IS_CONDITION_TRUE(COND_SEE_FIXING_MAN)
OR IS_CONDITION_TRUE(COND_SEE_WANKER)
OR IS_CONDITION_TRUE(COND_SEE_LEANING_MAN)
OR IS_CONDITION_TRUE(COND_SEE_PHONE_CAR_MAN)
ENDIF
BREAK
*/
CASE COND_WAITING_FOR_NEXT_TARGET
SWITCH conditions[i].flag
CASE 0
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS32b")
conditions[i].intA = GET_GAME_TIMER() + 2000
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].flag++
conditions[i].returns = TRUE
ENDIF
BREAK
CASE 2
IF IS_CONDITION_TRUE(COND_NEXT_TARGET_FOUND)
conditions[i].returns = FALSE
conditions[i].flag++
ENDIF
BREAK
CASE 3
IF IS_CONDITION_TRUE(COND_INVESTIGATING_NEXT_TARGET)
conditions[i].flag++
ENDIF
BREAK
CASE 4
IF IS_CONDITION_FALSE(COND_INVESTIGATING_NEXT_TARGET)
AND IS_CONDITION_FALSE(COND_DIA_FROM_FRANKLIN_SEEING_CHAD)
conditions[i].returns = TRUE
conditions[i].flag = 2
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_THERMAL_READY
// IF NOT conditions[i].returns //bug 1746477
IF HAS_DIALOGUE_FINISHED(6,DIA_ANY_OTHER_HEAT_SOURCES)
IF infraRed
conditions[i].returns = TRUE
ELSE
conditions[i].returns = FALSE
ENDIF
ENDIF
// ENDIF
BREAK
/*
CASE COND_FRANKLIN_SEES_WANKER_AT_IT
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_franklin].id,<< -1273.6810, -213.1801, 50.5499 >>) < 3.0
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK*/
CASE COND_CHAD_INTERRUPTED
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_SCRIPT_TASK_STATUS(ped[ped_chad].id,SCRIPT_TASK_SYNCHRONIZED_SCENE) = DORMANT_TASK
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_CHAD_CAN_BACK_OFF
IF (IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_leaves_car) AND GET_SYNCHRONIZED_SCENE_PHASE(scene_chad_leaves_car) > 0.766)
OR IS_CONDITION_TRUE(COND_GUN_AIMED_AT_CHAD)
OR IS_CONDITION_TRUE(COND_CHAD_INTERRUPTED)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_GUN_AIMED_AT_CHAD
IF NOT conditions[i].returns
IF GET_GAME_TIMER() > conditions[i].intA
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_PLAYER_FREE_AIMING_AT_ENTITY(GET_PLAYER_INDEX(), ped[ped_chad].id)
OR IS_PLAYER_TARGETTING_ENTITY(GET_PLAYER_INDEX(), ped[ped_chad].id)
IF ((IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_leaves_car) aND GET_SYNCHRONIZED_SCENE_PHASE(scene_chad_leaves_car) > 0.35)
OR GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_chad].id) < 4.0)
IF NOT IS_PED_IN_ANY_VEHICLE(ped[ped_chad].id) //so chad won't flee when back in car
//make sure Chad's exit anim has played out enough.
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_CHAD_CAN_RUN
IF NOT IS_CONDITION_TRUE(COND_CHAD_ESCAPED_IN_ZTYPE)
//IF IS_DIALOGUE_COMPLETE(1,DIA_BEG_TO_LET_GO)
//OR IS_DIALOGUE_COMPLETE(12,DIA_PLAYER_RUNS_OFF)
IF IS_CONDITION_TRUE(COND_CHAD_DAMAGED_BY_PLAYER)
//OR IS_ACTION_COMPLETE(8,ACT_REACTS_TO_PLAYER_IN_CAR)
//OR IS_ACTION_COMPLETE(11,ACT_CHAD_EXITS_CAR)
OR IS_CONDITION_TRUE(COND_PLAYER_SHOOTING_NEAR_CHAD)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_PLAYER_200M_FROM_SECURITY
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),airportBarrier) < 200
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_AT_SECURITY
IF IS_INSTRUCTION_COMPLETE(1,INS_DRIVE_TO_AIRPORT)
AND GET_INSTRUCTION_FLAG(1,INS_DRIVE_TO_AIRPORT) = 3
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_CHAD_PLAYER_IN_GARAGE
conditions[i].returns = FALSE
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<-1307.389160,-189.894394,38.635483>>, <<-1263.044800,-251.514374,64.209320>>, 41.312500)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_CHAD_DAMAGED_BY_PLAYER
SWITCH conditions[i].flag
CASE 0
IF NOT IS_PED_INJURED(ped[ped_chad].id)
conditions[i].intA = GET_ENTITY_HEALTH(ped[ped_chad].id)
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_ENTITY_HEALTH(ped[ped_chad].id) < conditions[i].intA
conditions[i].returns = TRUE
ENDIF
ELSE
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_PLAYER_SHOOTING_NEAR_CHAD
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF NOT conditions[i].returns
IF (IS_PED_SHOOTING(player_ped_id())
AND GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),ped[ped_chad].id) < 20)
OR HAS_BULLET_IMPACTED_IN_AREA(GET_ENTITY_COORDS(ped[ped_chad].id),10)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_CHAD_RAGDOLL
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_PED_RAGDOLL(ped[ped_chad].id)
conditions[i].returns = TRUE
ENDIf
ENDIF
BREAK
CASE COND_PLAYER_GOT_IN_CAR
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehHeist].id,TRUE)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
//cs2_call
CASE COND_PHONE_CALL_MADE
IF NOT conditions[i].returns
IF conditions[i].intB = 0
IF IS_PHONE_ONSCREEN()
OR IS_CONV_ROOT_PLAYING("cs2_call")
conditions[i].intB = 1
ENDIF
ELSE
IF NOT IS_CONV_ROOT_PLAYING("cs2_call")
AND NOT IS_PHONE_ONSCREEN()
conditions[i].returns = TRUE
ENDIF
ENDIF
IF IS_DIALOGUE_COMPLETE(8,DIA_CALL_DEVIN)
IF conditions[i].intA = 0
IF IS_CONV_ROOT_PLAYING("cs2_call") AND GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 3
conditions[i].intA = GET_GAME_TIMER() + 3000
ENDIF
ELSE
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_PROCEED_TO_HANGAR_CONDITIONS_MET
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
// IF GET_PLAYER_WANTED_LEVEL(player_id()) = 0
IF IS_DIALOGUE_COMPLETE(4,DIA_OPEN_GATES)
OR IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(vehicle[vehHeist].id),AC_AIRPORT_AIRSIDE)
OR IS_ENTITY_IN_ANGLED_AREA( vehicle[vehHeist].id, <<-1007.525696,-2845.613525,11.766135>>, <<-968.910645,-2777.963379,20.382439>>, 12.312500)
conditions[i].returns = TRUE
ENDIF
// ENDIF
ENDIF
BREAK
CASE COND_NO_DIALOGUE_FOR_TWO_SECONDS
SWITCH conditions[i].flag
CASE 0
IF IS_CONDITION_TRUE(COND_PLAYER_GOT_IN_CAR)
conditions[i].flag++
conditions[i].intA = GET_GAME_TIMER() + 5000
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_CHAD_DEAD
IF DOES_ENTITY_EXIST(ped[ped_chad].id)
IF IS_PED_DEAD_OR_DYING(ped[ped_chad].id)
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_CARSTEAL2_KILLED_MULLIGAN, TRUE)
conditions[i].returns = TRUE
ELSE
//This in theory shouldn't be needed but is in as a safety measure in case the flag has been left on from a previous playthrough.
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_CARSTEAL2_KILLED_MULLIGAN)
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_CARSTEAL2_KILLED_MULLIGAN, FALSE)
ENDIF
ENDIF
ENDIF
//If we retried the mission and Chad was killed previously then also flag Chad as dead.
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_CARSTEAL2_KILLED_MULLIGAN)
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_CHAD_PLAYER_100m_FROM_CAR_PARK
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<< -1285.9066, -225.3947, 48.2642 >>) > 100
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_30m_from_garage
conditions[i].returns = FALSE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),carDropoffCoord) < 30
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_200m_from_garage
conditions[i].returns = FALSE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),carDropoffCoord) < 200
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_300m_from_garage
conditions[i].returns = FALSE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),devinCoord) < 300
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_DEFAULT_LOAD_CUT_RANGE_FROM_HANGAR
conditions[i].returns = FALSE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),devinCoord) < DEFAULT_CUTSCENE_LOAD_DIST
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_WANTED
conditions[i].returns = FALSE
IF GET_PLAYER_WANTED_LEVEL(player_id()) != 0
conditions[i].returns = TRUE
ENDIF
BREAK
CASE COND_PLAYER_IN_ZTYPE
conditions[i].returns = FALSE
IF NOT IS_PED_INJURED(player_ped_id())
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehHeist].id)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_DRIVE_TO_INSTRUCTIONS_GIVEN
SWITCH conditions[i].flag
CASE 0
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS53")
conditions[i].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("CH_INS53")
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_CHAD_ESCAPED_IN_ZTYPE
IF IS_ACTION_COMPLETE(11,ACT_CHAD_EXITS_CAR)
IF NOT IS_PED_INJURED(ped[ped_chad].id)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PED_IN_VEHICLE(ped[ped_chad].id,vehicle[vehHeist].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),vehicle[vehHeist].id) > 20
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_DEVIN_WALKING_IN_TO_ZTYPE
IF NOT IS_PED_INJURED(pedDevin)
AND IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
vector vTemp
vTemp = GET_ENTITY_COORDS(pedDevin)
IF DOES_VEHICLE_OVERLAP_ANGLED_AREA(vehicle[vehHeist].id,vTemp-<<0.5,0.5,1>>,vTemp+<<0.5,0.5,1>>,1.0)
OR GET_DISTANCE_BETWEEN_ENTITIES(pedDevin,vehicle[vehHeist].id) < 3.5
//cprintln(debug_trevor3,"Devin is overlapping the ztype. Devin coords: ",vtemp, "heist car coords: ",vtempb)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_CHOPPER_DAMAGED_BY_PLAYER
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SWITCH conditions[i].flag
CASE 0
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[vehChopper].id,player_ped_id())
conditions[i].intA = GET_GAME_TIMER() + 3000
conditions[i].returns = TRUE
conditions[i].flag++
CLEAR_ENTITY_LAST_DAMAGE_ENTITY(vehicle[vehChopper].id)
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > conditions[i].intA
conditions[i].flag = 0
conditions[i].returns = FALSE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE COND_PLAY_IN_ZTYPE
conditions[i].returns = FALSE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehHeist].id)
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
CASE COND_DAMAGED_ZTYPE
SWITCH conditions[i].flag
CASE 0
IF HAS_DIALOGUE_FINISHED(10,DIA_DRIVING_BACK)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
conditions[i].intA = GET_ENTITY_HEALTH(vehicle[vehHeist].id)
conditions[i].flag++
ENDIF
ENDIF
BREAK
CASE 1
IF GET_ENTITY_HEALTH(vehicle[vehHeist].id) < conditions[i].intA - 50
conditions[i].returns = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE COND_PLAYER_7M_FROM_CHAD
IF NOT conditions[i].returns
//IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<-991.5975, -3022.6431, 12.9451>>) < 7
conditions[i].returns = TRUE
ENDIF
//ENDIF
ENDIF
BREAK
CASE COND_ZTYPE_IN_CAR_STOP_RANGE
IF NOT conditions[i].returns
IF IS_CONDITION_FALSE(COND_WANTED)
IF IS_CONDITION_TRUE(COND_ZTYPE_IN_HANGAR)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
float fZSpeed
fZSpeed = GET_ENTITY_SPEED(vehicle[vehHeist].id)
bool bInDevinStop, bInCorrectStop, bPointingAtCorrect
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[vehHeist].id,<<-990.65, -3016.24, 12.94>>) < 4.5 //correct stop area
bInCorrectStop = TRUE
ENDIF
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[vehHeist].id,<<-991.17, -3023.55, 12.94>>) < 4.5 + (fZSpeed*0.25) //Devin stop area
bInDevinStop = TRUE
ENDIF
IF bInCorrectStop OR bInDevinStop
//find out if car pointing towards correct stop
float adj,opp, ang, carAng
adj = GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[vehHeist].id,<<-990.65, -3016.24, 12.94>>)
opp = 4.5
ang = atan(opp/adj)
carAng = absf(GET_ENTITY_HEADING(vehicle[vehHeist].id) - GET_HEADING_FROM_COORDS(GET_ENTITY_COORDS(vehicle[vehHeist].id),<<-990.65, -3016.24, 12.94>>))
IF carAng > 180 carAng = absf(carAng-360) ENDIF
IF carAng < ang
bPointingAtCorrect = TRUE
ENDIF
cprintln(debug_Trevor3,"hit ang = ",ang," actual ang = ",carAng)
IF bInDevinStop AND NOT bPointingAtCorrect
cprintln(debug_Trevor3,"Stop for Devin")
SET_CONDITION_STATE(COND_STOP_FOR_DEVIN,TRUE)
REMOVE_CUTSCENE()
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("Car_2_mcs_1", CS_SECTION_1 | CS_SECTION_2)
SET_ACTION_FLAG(7,ACT_LOAD_END_CUTSCENE,1) //reload cutscene variations
conditions[i].returns = TRUE
ELIF bInCorrectStop
cprintln(debug_Trevor3,"Stop for Correct")
SET_CONDITION_STATE(COND_STOP_FOR_CORRECT,TRUE)
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_ZTYPE_IS_STOPPED
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_CONDITION_TRUE(COND_ZTYPE_IN_CAR_STOP_RANGE)
IF IS_CONDITION_FALSE(COND_WANTED)
IF GET_ENTITY_SPEED(vehicle[vehHeist].id) < 0.1
conditions[i].returns = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE COND_ZTYPE_IN_HANGAR
conditions[i].returns = FALSE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[vehHeist].id,<<-978.445923,-3028.967041,12.944874>>) < 30
conditions[i].returns = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDREPEAT
ENDPROC
// ================================================ Instructions ========================================
PROC INSTRUCTIONS(int thisI, enumInstructions eInstruction, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL)
//reset if instructino is new
IF instr[thisI].ins != eInstruction
instr[thisI].bCompleted = FALSE
instr[thisI].ins = eInstruction
ENDIF
IF NOT instr[thisI].bCompleted
IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3)
SWITCH instr[thisI].ins
CASE INS_GET_TO_RECEPTION
PRINT("CH_POL1",DEFAULT_GOD_TEXT_TIME,1)
blipTarget = CREATE_BLIP_FOR_COORD(<<441.02, -978.93, 30.69>>)
instr[thisI].bCompleted = TRUE
BREAK
CASE INS_FOLLOW_COP
SWITCH instr[thisI].flag
CASE 0
IF DOES_BLIP_EXIST(blipTarget)
REMOVE_BLIP(blipTarget)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
blipTarget = CREATE_BLIP_FOR_PED(ped[ped_cop1].id)
ENDIF
instr[thisI].flag++
break
case 1
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINT("CH_POL2",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
ENDIF
break
ENDSWITCH
BREAK
CASE INS_GET_TO_ROOF
SWITCH instr[thisI].flag
CASE 0
IF DOES_BLIP_EXIST(blipTarget)
REMOVE_BLIP(blipTarget)
ENDIF
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_POL2")
clear_prints()
ENDIF
FORCE_INSTRUCTION_STATE(1,INS_FOLLOW_COP)
blipTarget = CREATE_BLIP_FOR_COORD(<< 463.5469, -984.1166, 42.6919 >>)
instr[thisI].flag++
BREAK
CASE 1
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINT("CH_POL3",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE INS_GET_IN_CHOPPER
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SWITCH instr[thisI].flag
CASE 0
if DOES_BLIP_EXIST(blipTarget)
remove_blip(blipTarget)
endif
IF IS_VALID_INTERIOR(int_police)
UNPIN_INTERIOR(int_police)
ENDIF
blipTarget = CREATE_BLIP_FOR_ENTITY(vehicle[vehChopper].id)
instr[thisI].flag++
BREAK
CASE 1
IF NOT IS_PED_GETTING_INTO_A_VEHICLE(player_ped_id())
AND NOT IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_POL3")
CLEAR_PRINTS()
ENDIF
PRINT("CH_INS1",1,1)
ENDIF
ELSE
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
if DOES_BLIP_EXIST(blipTarget)
remove_blip(blipTarget)
instr[thisI].flag++
endif
ENDIF
ENDIF
BREAK
CASE 2
IF NOT IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
blipTarget = CREATE_BLIP_FOR_ENTITY(vehicle[vehChopper].id)
instr[thisI].flag++
ENDIF
BREAK
CASE 3
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
remove_blip(blipTarget)
instr[thisI].flag=2
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE INS_ABANDON_TREVOR
PRINT("CH_INS50",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
BREAK
// learn to scan
CASE INS_TEACH_TO_SCAN
SWITCH instr[thisI].flag
CASE 0
PRINT_HELP_FOREVER("CH_INS3")
instr[thisI].intA = GET_GAME_TIMER() + 8000
instr[thisI].flag++
BREAK
CASE 1
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CH_INS3")
IF timeAllowingProgress = 0
timeAllowingProgress = get_game_timer() + 3000
ENDIF
//GET_POSITION_OF_ANALOGUE_STICKS(PAD1,iLeftX,iLeftY,iRightX,iRightY) //depricated
IF ABSF(GET_DISABLED_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_SCALED_LOOK_UD)) > 0.1
OR ABSF(GET_DISABLED_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_SCALED_LOOK_LR)) > 0.1
helpTimer+=floor(1000*TIMESTEP())
IF NOT bMovingStick
bMovingStick = TRUE
iMovingStickCount++
ENDIF
ELSE
bMovingStick = FALSE
ENDIF
if helpTimer>3000
or iMovingStickCount >= 2
OR GET_GAME_TIMER() > instr[thisI].intA
IF get_game_timer() > timeAllowingProgress
bMovingStick = FALSE
iMovingStickCount = 0
timeAllowingProgress = 0
helpTimer=0
instr[thisI].flag++
CLEAR_HELP()
ENDIF
ENDIF
ELSE
CLEAR_HELP()
instr[thisI].flag++
ENDIF
BREAK
CASE 2
PRINT_HELP_FOREVER("CH_INS4")
instr[thisI].flag++
BREAK
CASE 3
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CH_INS4")
IF timeAllowingProgress = 0
timeAllowingProgress = get_game_timer() + 3000
instr[thisI].intA = GET_GAME_TIMER() + 8000
ENDIF
IF ABSF(GET_DISABLED_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_SNIPER_ZOOM)) >= 0.05
helpTimer+=floor(1000*TIMESTEP())
IF NOT bMovingStick
bMovingStick = TRUE
iMovingStickCount++
ENDIF
ELSE
bMovingStick = FALSE
ENDIF
if helpTimer>3000
or iMovingStickCount >= 2
OR GET_GAME_TIMER() > instr[thisI].intA
IF get_game_timer() > timeAllowingProgress
bMovingStick = FALSE
iMovingStickCount = 0
timeAllowingProgress = 0
helpTimer=0
CLEAR_HELP()
instr[thisI].flag=6
ENDIF
ENDIF
ELSE
instr[thisI].flag=6
ENDIF
BREAK
CASE 4
PRINT_HELP("CH_INS4")
instr[thisI].flag=6
BREAK
CASE 5
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CH_INS5")
if hud.fFOV < 20.0
CLEAR_HELP()
instr[thisI].flag++
ENDIF
ELSE
instr[thisI].flag++
ENDIF
BREAK
CASE 6
PRINT_HELP("CH_INS6d",5500)
instr[thisI].flag++
BREAK
CASE 7
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CH_INS6d")
instr[thisI].bCompleted = TRUE
ENDIF
/*
if is_point_in_screeen_area(<< 1270.127, -1769.433, 48.311 >>,0.1,0.1,0.9,0.9)
helpTimer+=floor(1000*TIMESTEP())
if helpTimer > DEFAULT_GOD_TEXT_TIME
helpTimer = 0
CLEAR_HELP()
instr[thisI].bCompleted = TRUE
ENDIF
ENDIF
ELSE
instr[thisI].bCompleted = TRUE
ENDIF */
BREAK
ENDSWITCH
BREAK
CASE INS_SCAN_FRANKLIN
IF not is_ped_injured(ped[ped_franklin].id)
SWITCH instr[thisI].flag
CASE 0
PRINT_HELP("CH_INS7b")
PRINT("CH_INS7",DEFAULT_GOD_TEXT_TIME,1)
REMOVE_ALL_HELIHUD_MARKERS(HUD)
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_franklin].id,true,HUD_UNKNOWN,FALSE,TRUE,FALSE,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_franklin].id,"CH_NAME",3)
instr[thisI].flag++
BREAK
CASE 1
if IS_ENTITY_ON_SCREEN(ped[ped_franklin].id)
instr[thisI].intA+=floor(1000*TIMESTEP())
if instr[thisI].intA > 5000
helpTimer=0
CLEAR_HELP()
ENDIF
ENDIF
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
PRINT_HELP("CH_INS8c",5000)
instr[thisI].intA=0
instr[thisI].flag++
ENDIF
BREAK
CASE 2
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CH_INS8c")
if IS_ENTITY_ON_SCREEN(ped[ped_franklin].id)
if HUD.scanning=TRUE or HAS_PED_BEEN_SCANNED(HUD,ped[ped_franklin].id)
instr[thisI].intA+=floor(1000*TIMESTEP())
if instr[thisI].intA > 5000
helpTimer=0
CLEAR_HELP()
//PRINT_HELP("CH_INS7c")
instr[thisI].flag++
ENDIF
ENDIF
ENDIF
ELSE
ped_index aPed
IF GET_HELIHUD_SELECTED_PED(HUD,aPED)
instr[thisI].flag=5
ELSE
instr[thisI].flag++
ENDIF
instr[thisI].intA = GET_GAME_TIMER() + 3000
PRINT_HELP("CH_INS7c",DEFAULT_HELP_TEXT_TIME+3000)
ENDIF
BREAK
CASE 3
FALLTHRU
CASE 4
FALLTHRU
CASE 5
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_Franklin].id)
OR HUD.scanning = TRUE
instr[thisI].bCompleted=TRUE
ELSE
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
IF GET_GAME_TIMER() > instr[thisI].intA
IF GET_DISTANCE_BETWEEN_ENTITIES(player_peD_id(),ped[ped_franklin].id,FALSE) < 550.0
ped_index aPEd
IF GET_HELIHUD_SELECTED_PED(HUD,aPED)
IF instr[thisI].flag < 5
CLEAR_HELP()
PRINT_HELP("CH_INS7c")
instr[thisI].flag = 5
ENDIF
ELSE
IF instr[thisI].flag < 4
PRINT_HELP("CH_INS4")
instr[thisI].flag = 4
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
endif
BREAK
CASE INS_SCAN_COMPLETE
// PRINT_HELP("CH_INS8c")
// CLEAR_PRINTS()
instr[thisI].bCompleted=TRUE
BREAK
CASE INS_GET_BACK_TO_FRANKLIN
BREAK
CASE INS_FOLLOW_CHAD
PRINT_NOW("CH_INS13",6000,1)
instr[thisI].bCompleted=TRUE
BREAK
CASE INS_SHOW_HIDDEN_HELP
PRINT_HELP("CH_INS41")
instr[thisI].bCompleted=TRUE
BREAK
// CAR PARK INSTRUCTION
CASE INS_TURN_ON_THERMAL_VISION
SWITCH instr[thisI].flag
CASE 0
PRINT_HELP_FOREVER("CH_INS31")
add_event(EVENTS_CONTROL_INFRARED)
instr[thisI].flag++
BREAK
CASE 1
IF infraRed = true
CLEAR_HELP()
PRINT_HELP("CH_INS32")
instr[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF NOT IS_CONDITION_TRUE(COND_THERMAL_TURNED_ON)
PRINT("CH_INS30",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
ELSE
instr[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE INS_ZOOM_IN_ON_FRANKLIN
SWITCH instr[thisI].flag
CASE 0
PRINT("CH_ZOOM",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].flag=2
BREAK
case 2
IF NOT IS_THIS_PRINT_BEING_DISPLAYED("CH_ZOOM")
instr[thisI].intA = GET_GAME_TIMER() + 1500
instr[thisI].flag++
ENDIF
break
CASE 3
IF GET_GAME_TIMER() > instr[thisI].intA
PRINT("CH_ZOOMC",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
ENDIf
BREAK
ENDSWITCH
BREAK
CASE INS_LOOK_FOR_A_HEAT_SOURCES
SWITCH instr[thisI].flag
CASE 0
PRINT("CH_INS32b",DEFAULT_GOD_TEXT_TIME,1)
PRINT_HELP("CH_ZOOMb")
instr[thisI].flag++
instr[thisI].intA = get_game_timer() + 2500
BREAK
CASE 1
IF GET_GAME_TIMER() > instr[thisI].intA
instr[thisI].flag++
ENDIF
BREAK
CASE 2
IF IS_CONDITION_TRUE(COND_NEXT_TARGET_FOUND)
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS32b")
CLEAR_PRINTS()
ENDIF
instr[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE INS_LOOK_FOR_ANOTHER_HEAT_SOURCES
SWITCH instr[thisI].flag
CASE 0
IF IS_CONDITION_TRUE(COND_WAITING_FOR_NEXT_TARGET)
instr[thisI].intA = GET_GAME_TIMER() + 1000
instr[thisI].flag++
ENDIF
BREAK
CASE 1
IF GET_GAME_TIMER() > instr[thisI].intA
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PRINT("CH_INS32c",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].flag++
ENDIF
ELSE
IF IS_CONDITION_TRUE(COND_NEXT_TARGET_FOUND)
instr[thisI].flag++
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE INS_SWITCH_TO_FRANKLIN
PRINT("CH_INS39",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
BREAK
//take the ztype
CASE INS_GET_IN_THE_ZTYPE
switch instr[thisI].flag
case 0
PRINT("CH_GET",DEFAULT_GOD_TEXT_TIME,1)
blipTarget = CREATE_BLIP_FOR_ENTITY(vehicle[vehHeist].id,FALSE)
instr[thisI].flag++
break
case 1
IF IS_CONDITION_TRUE(COND_PLAYER_GOT_IN_CAR)
AND IS_CONDITION_TRUE(COND_PHONE_CALL_MADE)
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_GET")
CLEAR_PRINTS()
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(5.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
instr[thisI].bCompleted = TRUE
ELSE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehHeist].id)
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_GET")
CLEAR_PRINTS()
ENDIF
IF DOES_BLIP_EXIST(blipTarget)
REMOVE_BLIP(blipTarget)
ENDIF
ELSE
IF NOT DOES_BLIP_EXIST(blipTarget)
blipTarget = CREATE_BLIP_FOR_ENTITY(vehicle[vehHeist].id,FALSE)
ENDIf
ENDIF
ENDIF
ENDIF
break
ENDSWITCH
BREAK
CASE INS_DRIVE_TO_AIRPORT
switch instr[thisI].flag
case 0
CLEAR_PRINTS()
IF DOES_BLIP_EXIST(blipTarget)
remove_blip(blipTarget)
endif
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(vehicle[vehHeist].id)
INFORM_MISSION_STATS_OF_SPEED_WATCH_ENTITY(vehicle[vehHeist].id)
ENDIF
instr[thisI].flag++
BREAK
CASE 1
IF IS_CONDITION_TRUE(COND_PHONE_CALL_MADE)
// PRINT("CH_INS25",DEFAULT_GOD_TEXT_TIME,1)
SET_AUDIO_FLAG("AllowScoreAndRadio", TRUE)
PLAY_MUSIC(mus_get_car_to_objective,mus_null)
instr[thisI].flag++
instr[thisI].intA = GET_GAME_TIMER() + 5500
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_AIRPORT_AIRSIDE, TRUE)
ENDIF
break
case 2
IF instr[thisI].intA != 0
IF GET_GAME_TIMER() > instr[thisI].intA
instr[thisI].intA = 0
SET_AUDIO_FLAG("AllowScoreAndRadio", FALSE)
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
float fStopRange
float fZSpeed
fZSpeed = GET_ENTITY_SPEED(vehicle[vehHeist].id)
fStopRange = fZSpeed * 0.2
IF fStopRange < 3
fStopRange = 3
ENDIF
fStopRange += 2
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(vehicle[vehHeist].id,<<-968.4945, -2798.2935, 12.9648>>) < fStopRange
OR IS_PLAYER_AT_LOCATION_IN_VEHICLE(sLocatesData,airportBarrier,<<2,2,5>>,TRUE,vehicle[vehHeist].id,"CH_INS53","CMN_GENGETIN","CMN_GENGETBCK",TRUE,0,TRUE)
IF GET_PLAYER_WANTED_LEVEL(player_id()) = 0
instr[thisI].flag++
ENDIF
ELIF IS_CONDITION_TRUE(COND_PROCEED_TO_HANGAR_CONDITIONS_MET)
instr[thisI].bCompleted = TRUE
ENDIF
ENDIF
break
case 3
IF BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(vehicle[vehHeist].id,3,2)
instr[thisI].bCompleted = TRUE
ENDIF
break
endswitch
BREAK
CASE INS_DRIVE_TO_DESTINATION
switch instr[thisI].flag
case 0
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
//IF GET_PLAYER_WANTED_LEVEL(player_id()) = 0
IF IS_PLAYER_AT_LOCATION_IN_VEHICLE(sLocatesData,carDropoffCoord,<<2.0,2.0,2.0>>,TRUE,vehicle[vehHeist].id,"CH_INS25","CMN_GENGETIN","CMN_GENGETBCK",TRUE,0,TRUE)
instr[thisI].bCompleted = TRUE
//ENDIF
ENDIF
ENDIF
break
endswitch
BREAK
CASE INS_WARNING_WANTED_LEVEL
switch instr[thisI].flag
case 0
IF IS_DIALOGUE_COMPLETE(5,DIA_WARNING_COPS)
PRINT("CH_COPS",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].flag++
instr[thisI].intA = GET_GAME_TIMER() + 12000
ENDIF
break
case 1
if not IS_THIS_PRINT_BEING_DISPLAYED("CH_COPS")
PRINT("CH_COPS2",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].flag++
ENDIF
break
CASE 2
IF GET_GAME_TIMER() > instr[thisI].intA
AND GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),carDropoffCoord) > 300
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
//IF GET_ENTITY_SPEED(vehicle[vehHeist].id) < 15.0
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),2)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
instr[thisI].flag++
instr[thisI].intA = GET_GAME_TIMER() + 2000
// ENDIF
ENDIF
ENDIF
BREAK
CASE 3
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
PLAY_POLICE_REPORT("SCRIPTED_SCANNER_REPORT_CAR_STEAL_2_01", 0.0)
instr[thisI].bCompleted = TRUE
ENDIF
BREAK
endswitch
BREAK
CASE INS_DRIVE_IN_TO_GARAGE
PRINT("CH_INS38",DEFAULT_GOD_TEXT_TIME,1)
instr[thisI].bCompleted = TRUE
BREAK
CASE INS_EXIT_AIRPORT
switch instr[thisI].flag
case 0
CLEAR_MISSION_LOCATE_STUFF(sLocatesData,true)
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
instr[1].flag=0
instr[thisI].flag++
BREAK
CASE 1
IF (IS_PLAYER_AT_LOCATION_ANY_MEANS(sLocatesData,<<-951.5104, -2785.9827, 12.9648>>,g_vAnyMeansLocate,TRUE,"CH_INS51")
OR NOT IS_COORD_IN_SPECIFIED_AREA(GET_ENTITY_COORDS(player_ped_ID()),AC_AIRPORT_AIRSIDE))
AND NOT IS_ENTITY_IN_ANGLED_AREA( player_ped_ID(), <<-1000.981567,-2863.637939,12.027286>>, <<-962.783813,-2797.050537,21.385738>>, 41.750000)
instr[thisI].bCompleted = TRUE
CLEAR_MISSION_LOCATE_STUFF(sLocatesData,true)
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
ENDIF
BREAK
ENDSWITCH
BREAK
CASE INS_RETURN_ZTYPE
switch instr[thisI].flag
case 0
CLEAR_MISSION_LOCATE_STUFF(sLocatesData,true)
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
instr[0].flag=0
instr[thisI].flag++
BREAK
CASE 1
IF IS_PLAYER_AT_LOCATION_IN_VEHICLE(sLocatesData,carDropoffCoord,g_vAnyMeansLocate,TRUE,vehicle[vehHeist].id,"CH_INS52","CMN_GENGETIN","CMN_GENGETBCK")
instr[thisI].bCompleted = TRUE
CLEAR_MISSION_LOCATE_STUFF(sLocatesData,true)
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDPROC
PROC INSTRUCTIONS_ON_DIALOGUE(int thisI, enumInstructions eInstruction, int diaEntry, enumDialogue thisDia,andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL)
IF instr[thisI].bCompleted = FALSE
IF dia[diaEntry].bCompleted
thisDia=thisDia
INSTRUCTIONS(thisI,eInstruction,andOr1,cond1,andOr2,cond2)
ENDIF
ENDIF
ENDPROC
PROC INSTRUCTIONS_ON_ACTION(int thisI, enumInstructions eInstruction, int actEntry, enumActions thisAct,andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL)
IF instr[thisI].bCompleted = FALSE
IF actions[actEntry].completed
thisAct=thisAct
INSTRUCTIONS(thisI,eInstruction,andOr1,cond1,andOr2,cond2)
ENDIF
ENDIF
ENDPROC
// ================================================ Dialogue ============================================
PROC DIALOGUE(int thisI, enumDialogue thisDia, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL)
IF dia[thisI].dial != thisDia
dia[thisI].bCompleted = FALSE
dia[thisI].dial = thisDia
ENDIF
IF NOT dia[thisI].bCompleted
//AND NOT bLastConvoWithoutSubtitles
IF checkANDOR(andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4)
AND NOT bMakeMissionFail
IF NOT dia[thisI].bStarted dia[thisI].bStarted=TRUE ENDIF
SWITCH dia[thisI].dial
CASE DIA_CAN_I_HELP
SWITCH dia[thisI].flag
case 0
ADD_PED_FOR_DIALOGUE_EXTRA(0,player_ped_id(),"Trevor")
ADD_PED_FOR_DIALOGUE_EXTRA(4,ped[ped_cop1].id,"cs2_copA")
IF PRELOAD_CONVERSATION(MyLocalPedStruct, "CST2AUD","cs2_cop1",CONV_PRIORITY_MEDIUM)
dia[thisI].flag++
ENDIF
break
CASE 1
IF IS_CONDITION_TRUE(COND_PLAYER_ENTERED_RECEPTION)
CLEAR_PRINTS()
BEGIN_PRELOADED_CONVERSATION()
IF NOT IS_PED_INJURED(ped[ped_cop1].id)
TASK_LOOK_AT_ENTITY(ped[ped_cop1].id,player_ped_id(),16000)
TASK_LOOK_AT_ENTITY(player_ped_id(),ped[ped_cop1].id,16000)
ENDIF
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF IS_CONV_ROOT_PLAYING("cs2_cop1")
// IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
// KILL_FACE_TO_FACE_CONVERSATION()
dia[thisI].bCompleted = TRUE
// ENDIF
ENDIF
BREAK
CASE 3
IF NOT IS_CONV_ROOT_PLAYING("cs2_cop1")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_COP_WALK_CHAT
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop5",4,PED[ped_cop1].id,"cs2_cop1",0,PED[ped_trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_INTEROGATE_COP
switch dia[thisI].flag
case 0
SWITCH dia[thisI].intA
CASE 0
FALLTHRU
CASE 2
FALLTHRU
CASE 4
FALLTHRU
CASE 6
IF NOT IS_PED_INJURED(PED[ped_cop4].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),PED[ped_cop4].id) < 5
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(ped[ped_cop4].id, "CHALLENGE_THREATEN", "S_M_Y_Cop_01_WHITE_FULL_02","SPEECH_PARAMS_FORCE")
dia[thisI].flag = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,4000)
ENDIF
ENDIF
BREAK
CASE 8
IF NOT IS_PED_INJURED(PED[ped_cop4].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),PED[ped_cop4].id) < 6
TASK_TURN_PED_TO_FACE_ENTITY(PED[ped_cop4].id,player_ped_id(),-1)
dia[thisI].flag = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2000,3000)
IF NOT IS_PED_INJURED(PED[ped_civ3].id)
TASK_LOOK_AT_ENTITY(PED[ped_civ3].id,player_ped_id(),-1)
ENDIF
ENDIF
ENDIF
BREAK
CASE 9
IF NOT IS_PED_INJURED(PED[ped_cop4].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),PED[ped_cop4].id) < 6
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(ped[ped_cop4].id, "PROVOKE_STARING", "S_M_Y_Cop_01_WHITE_FULL_02","SPEECH_PARAMS_FORCE")
dia[thisI].flag = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(5000,6000)
ENDIF
ENDIF
BREAK
CASE 10
IF NOT IS_PED_INJURED(PED[ped_cop4].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),PED[ped_cop4].id) < 6
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(ped[ped_cop4].id, "PROVOKE_STARING", "S_M_Y_Cop_01_WHITE_FULL_02","SPEECH_PARAMS_FORCE")
dia[thisI].flag = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(4000,5000)
ENDIF
ENDIF
BREAK
CASE 11
IF NOT IS_PED_INJURED(PED[ped_cop4].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),PED[ped_cop4].id) < 6
seq()
TASK_AIM_GUN_AT_ENTITY(null,player_ped_id(),2000)
TASK_COMBAT_PED(null,player_ped_id())
endseq(PED[ped_cop4].id)
dia[thisI].flag = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,5000)
ENDIF
ENDIF
BREAK
CASE 1
FALLTHRU
CASE 3
FALLTHRU
CASE 5
IF NOT IS_PED_INJURED(PED[ped_civ3].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),PED[ped_civ3].id) < 5
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE(ped[ped_civ3].id, "GUN_BEG", "A_M_Y_BevHills_02_Black_FULL_01","SPEECH_PARAMS_FORCE")
dia[thisI].flag = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,5000)
ENDIF
ENDIF
BREAK
CASE 7
IF NOT IS_PED_INJURED(PED[ped_civ3].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),PED[ped_civ3].id) < 5
PLAY_PAIN(PED[ped_civ3].id, AUD_DAMAGE_REASON_COWER )
dia[thisI].flag = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2000,3000)
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
DEFAULT
IF GET_GAME_TIMER() > dia[thisI].flag
dia[thisI].intA++
dia[thisI].flag = 0
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_COME_ON
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop8",4,PED[ped_cop1].id,"cs2_cop1",0,PED[ped_trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_COP_RETURNS_TO_DESK
switch dia[thisI].flag
case 0
KILL_FACE_TO_FACE_CONVERSATION()
dia[thisI].flag++
BREAK
CASE 1
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop6",4,PED[ped_cop1].id,"cs2_cop1")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_PLAYER_GETS_IN_CHOPPER
switch dia[thisI].flag
case 0
dia[thisI].intA = GET_GAME_TIMER() + 100
dia[thisI].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() > dia[thisI].intA
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop7",2,PED[ped_pilot].id,"chopperPilot",0,PED[ped_trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_PLAYER_LAGS_OR_LEAVES
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop8",4,PED[ped_cop1].id,"cs2_cop1")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_PLAYER_THREAT_IN_POL_DEPT
switch dia[thisI].flag
case 0
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(FALSE)
IF NOT IS_PED_INJURED(PED[ped_cop3].id)
TASK_ARREST_PED(PED[ped_cop3].id,player_ped_id())
ENDIF
dia[thisI].flag++
BREAK
CASE 1
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CST2_NOGO",7,PED[ped_cop3].id,"cs2_cop4")
dia[thisI].flag++
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
dia[thisI].intA = GET_GAME_TIMER() + 2000
ENDIF
BREAK
CASE 2
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CST2_GUN",7,PED[ped_cop3].id,"cs2_cop4")
OR GET_GAME_TIMER() > dia[thisI].intA
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_PILOT_SEES_PLAYER
CLEAR_PRINTS()
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop10",2,PED[ped_pilot].id,"chopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_PLAYER_ENTERS_LOCKER_ROOM
KILL_FACE_TO_FACE_CONVERSATION()
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CST2_SEES",5,PED[ped_cop4].id,"cs2_cop1")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_WRONG_WAY
//check
IF IS_CONV_ROOT_PLAYING("cs2_cop5")
restartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
KILL_FACE_TO_FACE_CONVERSATION()
ENDIF
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop8",4,PED[ped_cop1].id,"cs2_cop1")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_RESTART_CONV
IF not IS_STRING_NULL_OR_EMPTY(restartLine)
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cop5",restartLine,4,PED[ped_cop1].id,"cs2_cop1",0,PED[ped_trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
else
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE dia_player_doesnt_switch
switch dia[thisI].flag
case 0
IF IS_CONV_ROOT_PLAYING("CS2_chopper")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS40")
dia[thisI].intA = GET_GAME_TIMER() + 10000
dia[thisI].flag++
ENDIF
BREAK
DEFAULT
IF GET_GAME_TIMER() > dia[thisI].intA
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
AND NOT IS_MESSAGE_BEING_DISPLAYED()
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_switch",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
dia[thisI].intA = GET_GAME_TIMER() + 5000 + (dia[thisI].flag * 2000)
IF dia[thisI].flag >= 5
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
// ================ LEarn to scan ===========================
CASE DIA_BOOTING_UP
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_inst2",2,null,"chopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_SCAN_BUDDY_NEARBY
SWITCH dia[thisI].flag
CASE 0
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_friend",2,PED[ped_pilot].id,"chopperPilot",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_friend")
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_CONV_ROOT_PLAYING("cs2_friend")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_CONV_ON_WAY_TO_FRANKLIN
SWITCH dia[thisI].flag
CASE 0
If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_chat1",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_chat1")
dia[thisI].flag++
ENDIF
BREAK
CASE 2
If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_chat2",2,null,"chopperPilot",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
BREAK
CASE 3
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_chat3",2,null,"chopperPilot",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 4
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_chat4",2,null,"chopperPilot",0,PED[ped_trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_SCAN_MY_BUDDY
SWITCH dia[thisI].flag
CASE 0
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_seefr",2,PED[ped_pilot].id,"chopperPilot",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_seefr")
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_CONV_ROOT_PLAYING("cs2_seefr")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_FRANKLIN_SCANNED
SWITCH dia[thisI].flag
CASE 0
dia[thisI].intA = GET_GAME_TIMER()+1000
dia[thisI].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() > dia[thisI].intA
STOP_AUDIO_SCENE("CAR_2_HELI_CAM_TUTORIAL")
START_AUDIO_SCENE("CAR_2_SCAN_FRANKLIN")
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_teach",1,PED[ped_franklin].id,"Franklin",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 2
IF IS_CONV_ROOT_PLAYING("cs2_teach")
dia[thisI].flag++
ENDIF
BREAK
CASE 3
IF NOT IS_CONV_ROOT_PLAYING("cs2_teach")
STOP_AUDIO_SCENE("CAR_2_SCAN_FRANKLIN")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_GOING_TO_FIND_BUDDY
SWITCH dia[thisI].flag
CASE 0
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_tresp",0,PED[ped_trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_tresp")
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_CONV_ROOT_PLAYING("cs2_tresp")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_ACTOR_LINE_PLAYS
SWITCH dia[thisI].flag
CASE 0
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_actor",0,ped[ped_Trevor].id,"Trevor",2,null,"ChopperPilot")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_actor")
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_CONV_ROOT_PLAYING("cs2_actor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_FLYING_AWAY
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_wrong",2,null,"ChopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_WAITING_TO_SCAN
SWITCH dia[thisI].flag
CASE 0
dia[thisI].INTA = GET_GAME_TIMER() + 10000
dia[thisI].flag++
BREAK
DEFAULT
IF GET_GAME_TIMER() > dia[thisI].INTA
IF NOT IS_PED_INJURED(ped[ped_franklin].id)
IF NOT IS_ENTITY_ON_SCREEN(ped[ped_franklin].id)
If CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_noscan",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].INTA = GET_GAME_TIMER() + 10000
dia[thisI].flag++
IF dia[thisI].flag >= 6
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_TREVOR_COMMENTS_ON_POSTAL
If CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(CONVTYPE_BANTER,"cs2_seetheft","cs2_seetheft_2",0,ped[ped_Trevor].id,"Trevor",2,null,"ChopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_TREVOR_COMMENTS_ON_PERVERT
If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_seeRoof",0,ped[ped_Trevor].id,"Trevor",2,null,"ChopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_TREVOR_MAKES_SCAN_COMPLETE_COMMENT
IF IS_CONDITION_TRUE(COND_SCANNED_PED_WAS_A_WOMAN)
// IF PLAY_AMBIENT_DIALOGUE_LINE(MyLocalPedStruct,ped[ped_Trevor].id,"CST2AUD","CST2_AIAA")
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(ped[ped_Trevor].id, "CST2_AIAA", "Trevor", SPEECH_PARAMS_FORCE_FRONTEND)
If missionProgress = STAGE_APPROACH_SCAN_AREA_ONE
SET_CONDITION_STATE(COND_AREA1_PED_JUST_SCANNED,FALSE,0)
ELSE
SET_CONDITION_STATE(COND_AREA3_PED_JUST_SCANNED,FALSE,0)
ENDIF
//If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"CS2_scan_wom",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].INTA++
IF dia[thisI].INTA = 5
dia[thisI].bCompleted = TRUE
ENDIF
ELSE
//IF PLAY_AMBIENT_DIALOGUE_LINE(MyLocalPedStruct,ped[ped_Trevor].id,"CST2AUD","cCST2_AHAA")
PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(ped[ped_Trevor].id, "CST2_AHAA", "Trevor", SPEECH_PARAMS_FORCE_FRONTEND)
If missionProgress = STAGE_APPROACH_SCAN_AREA_ONE
SET_CONDITION_STATE(COND_AREA1_PED_JUST_SCANNED,FALSE,0)
ELSE
SET_CONDITION_STATE(COND_AREA3_PED_JUST_SCANNED,FALSE,0)
ENDIF
//If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_scanning",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].INTA++
IF dia[thisI].INTA = 5
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
CASE DIA_TREVOR_COMMENTS_ON_PROSTITUTE
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(ped[ped_hooker].id,<<187.93819, -160.18086, 55.31756>>,false) < 1.5
//PLAY_PED_AMBIENT_SPEECH_WITH_VOICE(ped[ped_Trevor].id, "CST2_CIAA", "Trevor", SPEECH_PARAMS_FORCE_FRONTEND)
If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_posie",0,ped[ped_Trevor].id,"Trevor",2,null,"ChopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
ELSE
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_TREVOR_COMMENTS_ON_CHADGIRL
If CREATE_CONVERSATION_EXTRA(CONVTYPE_BANTER,"cs2_lookChad",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
// scan area 3
CASE DIA_SEEN_CHAD
SWITCH dia[thisI].flag
CASE 0
dia[thisI].intA = GET_GAME_TIMER()+1800
dia[thisI].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() > dia[thisI].intA
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_seeChad",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 2
IF NOT IS_CONV_ROOT_PLAYING("CS2_seeChad")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_CHAD_HIDDEN
KILL_FACE_TO_FACE_CONVERSATION()
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_nochad",0,ped[ped_Trevor].id,"Trevor",2,ped[ped_pilot].id,"ChopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_CHAD_WALKING_THROUGH_APARTMENTS
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_seeChad2",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_CHAD_OFF_SCREEN
KILL_FACE_TO_FACE_CONVERSATION()
if PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_tmp36","CS2_tmp36_4",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_FRANKLIN_FIND_HIM
IF IS_CONDITION_TRUE(COND_CHAD_OFFSCREEN_FOR_4_SECONDS)
if PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_find","CS2_find_5",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
ELSE
//cancel playing as Chad was found during the previous conversation
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_FOUND_CHAD
if PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_found","CS2_found_3",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_TREVOR_BANTER_DURING_CHAD_WALK
SWITCH dia[thisI].flag
CASE 0
dia[thisI].intA = GET_GAME_TIMER() + 2000
dia[thisI].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() < dia[thisI].intA
IF listenDialogue = -1
IF NOT IS_MESSAGE_BEING_DISPLAYED()
if CREATE_CONVERSATION_EXTRA(CONVTYPE_UNIMPORTANT,"cs2_ChadView",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
ENDIF
ELSE
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_CHAD_AT_GARAGE
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_seeChad3",1,null,"Franklin",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
// ================ car park dialogue ===========================
CASE DIA_TAKE_US_DOWN
SWITCH dia[thisI].flag
CASE 0
dia[thisI].intA = GET_GAME_TIMER() + 1700
dia[thisI].flag++
BREAK
CASE 1
IF GET_GAME_TIMER() > dia[thisI].intA
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_flylow",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
CASE 2
//this below plays elsewhere
//IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_carpark2",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
//IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cp2c",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
dia[thisI].bCompleted = TRUE
//ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_TREVOR_SCARED
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_down",0,ped[ped_Trevor].id,"Trevor",2,null,"chopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_EXITS_CLEAR
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_clear",0,ped[ped_Trevor].id,"Trevor",2,null,"chopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_THERMAL_VISION //CS2_Carpark3
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_Carpark3",0,ped[ped_Trevor].id,"Trevor",2,null,"ChopperPilot")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_TREVOR_REACTION_TO_THERMAL_VISION_ON //CS2_carpark4
IF NOT IS_MESSAGE_BEING_DISPLAYED()
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_Carpark4",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
CASE DIA_FRANKLIN_ASKS_IF_PLAYER_CAN_SEE_HIM//cs2_onme
// IF NOT IS_MESSAGE_BEING_DISPLAYED()
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_onme",1,ped[ped_franklin].id,"Franklin")
dia[thisI].bCompleted = TRUE
ENDIF
// ENDIF
BREAK
CASE DIA_TREVOR_SEE_FRANKLIN
//CLEAR_PRINTS()
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_seen",0,ped[ped_Trevor].id,"Trevor")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_ANY_OTHER_HEAT_SOURCES //cs2_looknow
SWITCH dia[thisI].flag
CASE 0
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_looknow",1,ped[ped_franklin].id,"Franklin")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_looknow")
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF NOT IS_CONV_ROOT_PLAYING("cs2_looknow")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_TREVOR_SEES_PISSER //cs2_mana1
SWITCH dia[thisI].flag
CASE 0
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS32c")
CLEAR_PRINTS()
ENDIF
SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_manb1",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_manb1")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_TREVOR_SEES_CHAD //cs2_manc1
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS32c")
CLEAR_PRINTS()
ENDIF
SWITCH dia[thisI].flag
CASE 0
// IF actions[20].flag > 0
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_manc1",0,ped[ped_trevor].id,"Trevor",1,ped[ped_franklin].id,"Franklin")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("CS2_manc1")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
// ENDIF
BREAK
CASE DIA_TREVOR_RANTS_IN_SWITCH
SWITCH dia[thisI].flag
CASE 0
//ADD_PED_FOR_DIALOGUE_EXTRA(0,null,"Trevor")
//ADD_PED_FOR_DIALOGUE_EXTRA(1,null,"Franklin")
//IF PRELOAD_CONVERSATION(MyLocalPedStruct, "CST2AUD","cs2_IG15",CONV_PRIORITY_MEDIUM)
// BEGIN_PRELOADED_CONVERSATION()
// dia[thisI].intA = GET_GAME_TIMER() + 200
// dia[thisI].flag++
//ENDIF
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_IG15","cs2_IG15_1",0,null,"Trevor",1,null,"Franklin")
dia[thisI].intA = GET_GAME_TIMER() + 200
// dia[thisI].flag++
dia[thisI].flag = 1
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_IG15")
IF GET_GAME_TIMER() > dia[thisI].intA
// IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() = 1
dia[thisI].bCompleted = TRUE
// ENDIF
ENDIF
ENDIF
//ENDIF
// KILL_FACE_TO_FACE_CONVERSATION()
// ENDIF
BREAK
//CASE 1
// IF GET_GAME_TIMER() > dia[thisI].intA
// KILL_FACE_TO_FACE_CONVERSATION()
// dia[thisI].bCompleted = TRUE
// ENDIF
//BREAK
ENDSWITCH
BREAK
CASE DIA_PLAYER_SHOOTING_CHOPPER
IF GET_GAME_TIMER() > dia[thisI].intA
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_franksh",2,ped[ped_pilot].id,"chopperPilot")
dia[thisI].intA = GET_GAME_TIMER() + 10000
dia[thisI].flag++
IF dia[thisI].flag = 3
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
ENDIF
BREAK
CASE DIA_DRIVING_BACK
SWITCH dia[thisI].flag
CASE 0
//cprintln(debug_Trevor3,"playing")
//cs2_radio
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS53")
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF NOT IS_CONDITION_TRUE(COND_WANTED)
dia[thisI].flag++
ELSE
FORCE_DIALOGUE_STATE(5,DIA_WARNING_COPS) //stop getting wanted level if already have one
ENDIF
BREAK
CASE 2
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_franwh",1,player_ped_id(),"Franklin") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 3
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_radio",0,null,"Trevor",1,player_ped_id(),"Franklin") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 4
IF IS_CONV_ROOT_PLAYING("cs2_radio")
dia[thisI].flag++
ENDIF
BREAK
CASE 5
IF NOT IS_CONV_ROOT_PLAYING("cs2_radio")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
//cs2_crash1
CASE DIA_CRASH_ZTYPE
SWITCH dia[thisI].flag
CASE 0
IF IS_CONV_ROOT_PLAYING("cs2_radio")
//PAUSE_SCRIPTED_CONVERSATION(TRUE)
crashrestartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
cprintln(debug_trevor3,"kill conv L ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
SET_BIT(dia[thisI].intA,0)
dia[thisI].flag=1
ELSE
CLEAR_BIT(dia[thisI].intA,0)
dia[thisI].flag=1
ENDIF
BREAK
CASE 1
IF NOT IS_BIT_SET(dia[thisI].intA,1)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_crash1",0,null,"Trevor",1,ped[ped_franklin].id,"Franklin") //that's the motherfucker.
SET_BIT(dia[thisI].intA,1)
dia[thisI].flag=2
ENDIF
ELIF NOT IS_BIT_SET(dia[thisI].intA,2)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_crash2",0,null,"Trevor",1,ped[ped_franklin].id,"Franklin") //that's the motherfucker.
SET_BIT(dia[thisI].intA,2)
dia[thisI].flag=2
ENDIF
ELIF NOT IS_BIT_SET(dia[thisI].intA,3)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_crash3",0,null,"Trevor",1,ped[ped_franklin].id,"Franklin") //that's the motherfucker.
SET_BIT(dia[thisI].intA,3)
dia[thisI].flag=2
ENDIF
ENDIF
BREAK
CASE 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF IS_BIT_SET(dia[thisI].intA,0)
and not IS_STRING_NULL_OR_EMPTY(crashrestartLine)
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(CONVTYPE_GAMEPLAY,"cs2_radio",crashrestartLine,0,null,"Trevor",1,player_ped_id(),"Franklin") //that's the motherfucker.
CLEAR_BIT(dia[thisI].intA,0)
dia[thisI].flag=0
SET_CONDITION_STATE(COND_DAMAGED_ZTYPE,FALSE,0)
ENDIF
ELSE
IF NOT IS_BIT_SET(dia[thisI].intA,3)
dia[thisI].flag=0
SET_CONDITION_STATE(COND_DAMAGED_ZTYPE,FALSE,0)
ELSE
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_WHERES_THE_CAR
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_where",7,ped[ped_cop2].id,"cs2_cop1")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_TREVOR_SEES_FIXING_MAN
SWITCH dia[thisI].flag
CASE 0
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS32c")
CLEAR_PRINTS()
ENDIF
SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_mana1",0,ped[ped_trevor].id,"Trevor",1,ped[ped_franklin].id,"Franklin") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_mana1")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_TREVOR_SEES_PHONE_CAR_MAN
SWITCH dia[thisI].flag
CASE 0
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS32c")
CLEAR_PRINTS()
ENDIF
SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_mane1",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_mane1")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_TREVOR_SEES_LEANING_MAN
SWITCH dia[thisI].flag
CASE 0
IF IS_THIS_PRINT_BEING_DISPLAYED("CH_INS32c")
CLEAR_PRINTS()
ENDIF
SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_manb1b",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 1
IF IS_CONV_ROOT_PLAYING("cs2_manb1b")
IF GET_CURRENT_SCRIPTED_CONVERSATION_LINE() >= 1
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_FRANKLIN_SEES_PISSER //cs2_mana3
//SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_mana3",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor")
SET_CONDITION_STATE(COND_BLOCK_LISTENING,FALSE)
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_FRANKLIN_SEES_FIXING_MAN
//SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_mand2b",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor") //fuck you, like you couldn't see
SET_CONDITION_STATE(COND_BLOCK_LISTENING,FALSE)
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_FRANKLIN_SEES_ZTYPE
//SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_manc2",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor") //that's the motherfucker.
PLAY_MUSIC(mus_Chad_found,mus_get_car_to_objective)
SET_CONDITION_STATE(COND_BLOCK_LISTENING,FALSE)
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_FRANKLIN_SEES_LEANING_MAN
//SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_manb2b",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor") //that's the motherfucker.
//SET_CONDITION_STATE(COND_BLOCK_LISTENING,FALSE)
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_FRANKLIN_SEES_PHONE_MAN
//SET_CONDITION_STATE(COND_BLOCK_LISTENING,TRUE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_mane2",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor") //that's the motherfucker.
SET_CONDITION_STATE(COND_BLOCK_LISTENING,FALSE)
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_OVERHEAR_FUCKERS_WITH_SCANNER
IF (listenDialogue = 0
OR dia[thisI].flag = 0)
AND IS_CONDITION_FALSE(COND_BLOCK_LISTENING)
SWITCH dia[thisI].flag
CASE 0 //grunt
ADD_CHOPPER_LISTENING_LOCATION(0,<< -1260.095, -244.781, 51.224 >>)
dia[thisI].flag++
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisFuckb",5,ped[ped_wrong_fucker].id,"cs2_carfuck_man",6,ped[ped_chadGirl].id,"cs2_carfuck_woman") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 2 //grunt
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisFuckb",5,ped[ped_wrong_fucker].id,"cs2_carfuck_man",6,ped[ped_chadGirl].id,"cs2_carfuck_woman") //that's the motherfucker.
IF dia[thisI].intA < 4
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 3 //man sex comment
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisFuck",5,ped[ped_wrong_fucker].id,"cs2_carfuck_man") //that's the motherfucker.
dia[thisI].intA++
dia[thisI].flag=1
ENDIF
BREAK
ENDSWITCH
ELSE
IF IS_CONV_ROOT_PLAYING("lisFuckb")
OR IS_CONV_ROOT_PLAYING("lisFuck")
cprintln(debug_trevor3,"kill conv M ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
ENDIF
BREAK
CASE DIA_OVERHEAR_CAR_FIXER_WITH_SCANNER
IF (listenDialogue = 0
OR dia[thisI].flag = 0)
AND IS_CONDITION_FALSE(COND_BLOCK_LISTENING)
SWITCH dia[thisI].flag
CASE 0 //grunt
ADD_CHOPPER_LISTENING_LOCATION(0,<< -1260.095, -244.781, 51.224 >>)
dia[thisI].flag++
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisCarFix",6,ped[ped_wrong_fucker].id,"cs2_carfix") //that's the motherfucker.
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
ELSE
IF IS_CONV_ROOT_PLAYING("lisCarFix")
IF currentConvType = CONVTYPE_CHOPPER_CAM
cprintln(debug_trevor3,"kill conv N ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
ENDIF
ENDIF
BREAK
CASE DIA_OVERHEAR_CAR_LEANING_GUY
IF (listenDialogue = 3
OR dia[thisI].flag = 0)
AND IS_CONDITION_FALSE(COND_BLOCK_LISTENING)
SWITCH dia[thisI].flag
CASE 0 //grunt
ADD_CHOPPER_LISTENING_LOCATION(3,<<-1295.2588, -185.2966, 51.7873>>)
dia[thisI].flag++
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisManLean",6,ped[ped_wrong_lean].id,"cs2_carlean") //that's the motherfucker.
dia[thisI].flag++
ENDIF
BREAK
CASE 2
IF dia[thisI].intA != 0
TEXT_LABEL_23 txt
txt = "lisManLean"
txt += dia[thisI].intA
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(CONVTYPE_CHOPPER_CAM,"lisManLean",txt,6,ped[ped_wrong_lean].id,"cs2_carlean")
dia[thisI].flag=2
ENDIF
ENDIF
BREAK
ENDSWITCH
ELSE
//IF IS_CONV_ROOT_PLAYING("lisManLean")
//IF currentConvType = CONVTYPE_CHOPPER_CAM
// dia[thisI].intA = GET_CURRENT_SCRIPTED_CONVERSATION_LINE()
// dia[thisI].flag = 3
// KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
//ENDIF
//ENDIF
ENDIF
BREAK
CASE DIA_OVERHEAR_CAR_ON_PHONE
IF (listenDialogue = 4
OR dia[thisI].flag = 0)
AND IS_CONDITION_FALSE(COND_BLOCK_LISTENING)
SWITCH dia[thisI].flag
CASE 0 //grunt
ADD_CHOPPER_LISTENING_LOCATION(4,<<-1260.2112, -224.6728, 51.5658>>)
dia[thisI].flag=1
BREAK
CASE 1
IF IS_DIALOGUE_COMPLETE(22,DIA_FRANKLIN_SEES_PHONE_MAN)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisOnPhn",6,ped[ped_wrong_phone].id,"cs2_carphn") //that's the motherfucker.
dia[thisI].flag=2
ENDIF
ENDIF
BREAK
CASE 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
dia[thisI].flag=3
ENDIF
BREAK
CASE 3
IF dia[thisI].intA != 0
TEXT_LABEL_23 txt
txt = "lisOnPhn_"
txt += dia[thisI].intA
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(CONVTYPE_CHOPPER_CAM,"lisOnPhn",txt,6,ped[ped_wrong_phone].id,"cs2_carphn")
dia[thisI].flag=2
ENDIF
ELSE
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,5000)
dia[thisI].flag=4
ENDIF
BREAK
CASE 4
IF GET_GAME_TIMER() > dia[thisI].intA
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisOnPhnB",6,ped[ped_wrong_phone].id,"cs2_carphn") //that's the motherfucker.
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(3000,5000)
ENDIF
ENDIF
BREAK
ENDSWITCH
ELSE
IF IS_CONV_ROOT_PLAYING("lisOnPhn")
IF currentConvType = CONVTYPE_CHOPPER_CAM
dia[thisI].intA = GET_CURRENT_SCRIPTED_CONVERSATION_LINE()
dia[thisI].flag = 3
cprintln(debug_trevor3,"kill conv A ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
ENDIF
ENDIF
BREAK
CASE DIA_OVERHEAR_PISSER_WITH_SCANNER
IF (listenDialogue = 1
OR dia[thisI].flag = 0)
AND (IS_CONDITION_FALSE(COND_BLOCK_LISTENING) OR (IS_CONDITION_TRUE(COND_BLOCK_LISTENING) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() AND GET_DISTANCE_BETWEEN_ENTITIES(ped[ped_franklin].id,ped[ped_wrong_wanker].id) > 15))
SWITCH dia[thisI].flag
CASE 0 //grunt
ADD_CHOPPER_LISTENING_LOCATION(1,<< -1270.3787, -210.2109, 50.5499 >>)
dia[thisI].flag++
BREAK
CASE 1
IF NOT IS_PED_INJURED(ped[ped_wrong_wanker].id)
IF IS_ENTITY_PLAYING_ANIM(ped[ped_wrong_wanker].id,"misscarsteal2peeing","peeing_intro")
OR IS_ENTITY_PLAYING_ANIM(ped[ped_wrong_wanker].id,"misscarsteal2peeing","peeing_loop")
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 2 //grunt
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"lisManPeeing",7,ped[ped_wrong_wanker].id,"cs2_pissing_man") //that's the motherfucker.
dia[thisI].flag++
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
ELSE
IF IS_CONV_ROOT_PLAYING("lisManPeeing")
IF currentConvType = CONVTYPE_CHOPPER_CAM
IF listenDialogue != 1
cprintln(debug_trevor3,"kill conv O ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE DIA_OVERHEAR_CHAD_WITH_SCANNER
IF (listenDialogue = 2
OR dia[thisI].flag = 0)
AND IS_CONDITION_FALSE(COND_BLOCK_LISTENING)
SWITCH dia[thisI].flag
CASE 0 //grunt
ADD_CHOPPER_LISTENING_LOCATION(2,<< -1309.563, -215.238, 50.993 >>)
dia[thisI].flag++
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_CHOPPER_CAM,"LisChadWhimp",3,ped[ped_chad].id,"Chad")
dia[thisI].flag++
dia[thisI].intA = GET_GAME_TIMER() + GET_RANDOM_INT_IN_RANGE(2000,4000)
ENDIF
BREAK
CASE 2 //grunt
IF GET_GAME_TIMER() > dia[thisI].intA
dia[thisI].flag = 1
ENDIF
BREAK
ENDSWITCH
ELSE
IF IS_CONV_ROOT_PLAYING("LisChadWhimp")
IF currentConvType = CONVTYPE_CHOPPER_CAM
cprintln(debug_trevor3,"kill conv P ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
ENDIF
ENDIF
ENDIF
BREAK
// get car in car park
CASE DIA_BEG_TO_LET_GO
switch dia[thisI].flag
case 0
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(FALSE)
dia[thisI].flag++
break
case 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"gunAtChad",3,ped[ped_chad].id,"Chad")
dia[thisI].flag++
ENDIF
break
case 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
dia[thisI].bCompleted = TRUE
ENDIF
break
endswitch
BREAK
CASE DIA_DONT_TAKE_CAR
switch dia[thisI].flag
case 0
// IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_gotChad",3,ped[ped_chad].id,"Chad")
dia[thisI].flag++
// ENDIF
BREAK
CASE 1
IF IS_CONDITION_TRUE(COND_PLAYER_GOT_IN_CAR)
dia[thisI].bCompleted = TRUE
ELSE
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_gotChad1",3,ped[ped_chad].id,"Chad")
dia[thisI].bCompleted = TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_FLEE_PANIC
IF NOT IS_PED_INJURED(ped[ped_chad].id)
switch dia[thisI].flag
case 0
cprintln(debug_trevor3,"kill conv Q ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
FORCE_dIALOGUE_STATE(13,DIA_FLEE_PANIC_NOT_HIT,TRUE)
dia[thisI].flag++
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"chadfear",3,ped[ped_chad].id,"Chad")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE DIA_FLEE_PANIC_NOT_HIT
IF NOT IS_PED_INJURED(ped[ped_chad].id)
switch dia[thisI].flag
case 0
cprintln(debug_trevor3,"kill conv R ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
FORCE_dIALOGUE_STATE(2,DIA_FLEE_PANIC,TRUE)
dia[thisI].flag++
BREAK
CASE 1
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"chadbad",3,ped[ped_chad].id,"Chad")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
BREAK
CASE DIA_PLAYER_GOT_IN_CAR
switch dia[thisI].flag
case 0
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(FALSE)
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
dia[thisI].flag++
ENDIF
break
case 1
IF NOT IS_PED_INJURED(ped[ped_chad].id)
IF IS_DIALOGUE_COMPLETE(1,DIA_BEG_TO_LET_GO)
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_tmp53","cs2_tmp53_2",3,ped[ped_chad].id,"Chad")
//IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_tmp53",3,ped[ped_chad].id,"Chad")
dia[thisI].flag++
ENDIF
ELSE
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_tmp53","cs2_tmp53_1",3,ped[ped_chad].id,"Chad")
dia[thisI].flag++
ENDIF
ENDIF
ELSE
dia[thisI].flag++
ENDIF
break
case 2
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
dia[thisI].bCompleted = TRUE
ENDIF
break
endswitch
BREAK
CASE DIA_DRIVING_AWAY
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_chad3",0,ped[ped_trevor].id,"Trevor",1,ped[ped_franklin].id,"Franklin")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_WARNING_COPS
switch dia[thisI].flag
case 0
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"trvcops",0,ped[ped_trevor].id,"Trevor",1,ped[ped_franklin].id,"Franklin")
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),2)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
dia[thisI].flag++
ENDIF
break
case 1
IF NOT IS_CONV_ROOT_PLAYING("trvcops")
PLAY_POLICE_REPORT("SCRIPTED_SCANNER_REPORT_CAR_STEAL_2_01", 0.0)
dia[thisI].bCompleted = TRUE
ENDIF
break
endswitch
BREAK
CASE DIA_KILLED_CHAD
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"trvkill",0,ped[ped_trevor].id,"Trevor",1,ped[ped_franklin].id,"Franklin")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_CALL_DEVIN
if PLAYER_CALL_CHAR_CELLPHONE_EXTRA("cs2_call",1,player_ped_id(),"Franklin",2,null,"Molly")
dia[thisI].bCompleted = TRUE
ENDIF
/*
SWITCH dia[thisI].flag
case 0
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2442.55, 4967.51, 54.35>>) < 1300
OR IS_CALLING_CONTACT(CHAR_ONEIL)
IF GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(player_ped_id(),<<2442.55, 4967.51, 54.35>>) > 500
//If IS_MESSAGE_BEING_DISPLAYED()
events[iE].flag++
ENDIF
ENDIF
BREAK
case 1
//If not IS_MESSAGE_BEING_DISPLAYED()
//need to set up speakers for this
//////cprintln(DEBUG_TREVOR3,"LOADING PHONE CALL")
if PLAYER_CALL_CHAR_CELLPHONE_EXTRA("cs2_call",1,player_ped_id(),"Franklin",2,null,"Devin")
//////cprintln(DEBUG_TREVOR3,"PHONE CALL PLAYING")
events[iE].active = FALSE
ENDIF
//ENDIF
BREAK*/
BREAK
CASE DIA_OPEN_GATES
SWITCH dia[thisI].flag
CASE 0
IF IS_CONDITION_TRUE(COND_PLAYER_IN_ZTYPE)
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_gate",1,ped[ped_franklin].id,"Franklin",7,ped[ped_cop1].id,"cs2_cop1")
dia[thisI].flag++
ENDIF
ENDIF
BREAK
CASE 1
IF NOT IS_CONV_ROOT_PLAYING("cs2_gate")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
CASE DIA_FRANKLIN_THREATENS_CHAD
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_franch",1,ped[ped_franklin].id,"Franklin")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
CASE DIA_PLAYER_RUNS_OFF
SWITCH dia[thisI].flag
CASE 0
cprintln(debug_trevor3,"kill conv S ")
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
dia[thisI].flag++
BREAK
CASE 1
IF PLAY_SINGLE_LINE_FROM_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_gotChad1","CS2_gotChad1_11",3,ped[ped_chad].id,"Chad")
dia[thisI].bCompleted = TRUE
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
ENDIF
ENDIF
IF IS_SCRIPTED_CONVERSATION_ONGOING()
currentConv = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
ELSE
IF NOT bLastConvoWithoutSubtitles
lastConv = currentConv
ENDIF
ENDIF
ENDPROC
PROC DIALOGUE_playout(int thisI, enumDialogue thisDia, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL, andorEnum andOr4=cIGNORE, enumconditions cond4 = COND_NULL)
IF dia[thisI].dial != thisDia
dia[thisI].bCompleted = FALSE
dia[thisI].dial = thisDia
ENDIF
IF NOT dia[thisI].bCompleted
//AND NOT bLastConvoWithoutSubtitles
IF dia[thisI].bStarted
DIALOGUE(thisI, thisDia)
ELSE
DIALOGUE(thisI,thisDia,andOr1,cond1,andOr2,cond2,andOr3,cond3,andOr4,cond4)
ENDIF
ENDIF
endproc
PROC DIALOGUE_ON_ACTION(int thisI, enumDialogue thisDia, int actEntry, enumActions checkAction)
IF dia[thisI].dial != thisDia
dia[thisI].bCompleted = FALSE
dia[thisI].dial = thisDia
ENDIF
IF actions[actEntry].action = checkAction
IF NOT dia[thisI].bCompleted
IF actions[actEntry].completed
DIALOGUE(thisI,thisDia)
ENDIF
ENDIF
ELSE
IF actions[actEntry].action != ACT_NULL
TEXT_LABEL_63 txt
txt = ""
txt += "DIALOGUE_ON_ACTION():"
txt += actEntry
SCRIPT_ASSERT(txt)
ENDIF
ENDIF
ENDPROC
PROC DIALOGUE_ON_DIALOGUE(int thisI, enumDialogue thisDia, int diaEntry, enumDialogue checkDia, andorEnum andOr1=cFORCEtrue, enumconditions cond1 = COND_NULL, andorEnum andOr2=cIGNORE, enumconditions cond2 = COND_NULL, andorEnum andOr3=cIGNORE, enumconditions cond3 = COND_NULL)
IF dia[thisI].dial != thisDia
dia[thisI].bCompleted = FALSE
dia[thisI].dial = thisDia
ENDIF
IF NOT dia[thisI].bCompleted
IF HAS_DIALOGUE_FINISHED(diaEntry,checkDia)
DIALOGUE(thisI,thisDia,andOr1,cond1,andOr2,cond2,andOr3,cond3)
ENDIF
ENDIF
ENDPROC
// ===================================================== FAILS =====================================
PROC SET_MISSION_TO_FAIL(enumFails thisFailReason, string failText, bool delayFail=FALSE)
//cprintln(debug_trevor3,"Fail condition: ",GET_FAIL_STRING(thisFailReason))
IF NOT IS_CONV_ROOT_PLAYING("cs2_cop5")
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(false)
ENDIF
IF NOT bDelayFail
missionFailing = thisFailReason
sFailText = failText
bDelayFail = delayFail
ENDIF
ENDPROC
PROC FAIL(enumFails thisFailToCheck)
INTERIOR_INSTANCE_INDEX thisInt
//cprintln(debug_trevor3,"FAIL: ",enum_to_int(thisFailToCheck))
SWITCH thisFailToCheck
CASE FAIL_PLAYER_HAS_WEAPON_DRAWN_IN_POL_DEPT
thisInt = GET_INTERIOR_AT_COORDS_WITH_TYPE(<< 442.1297, -982.7592, 31.4630 >>, "v_policehub")
IF IS_VALID_INTERIOR(thisInt)
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = thisInt
weapon_type playerWep
playerWep=WEAPONTYPE_UNARMED
IF GET_CURRENT_PED_WEAPON(player_ped_id(),playerWep)
IF playerWep != WEAPONTYPE_UNARMED
IF NOT IS_PHONE_ONSCREEN()
IF GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_EXTSTRS_ROOM001")
AND GET_ROOM_KEY_FROM_ENTITY(player_ped_id()) != GET_HASH_KEY("PH_EXTSTRS_ROOM002")
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
cprintln(debug_trevor3,"FAIL_PLAYER_HAS_WEAPON_DRAWN_IN_POL_DEPT A")
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F15",TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE FAIL_HAS_WANTED_LEVEL_IN_POLICE_DEPT
IF GET_PLAYER_WANTED_LEVEL(player_id()) != 0
thisInt = GET_INTERIOR_AT_COORDS_WITH_TYPE(<< 442.1297, -982.7592, 31.4630 >>, "v_policehub")
IF IS_VALID_INTERIOR(thisInt)
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = thisInt
IF failDelay = 0
failDelay = GET_GAME_TIMER() + 2700
failReason = FAIL_HAS_WANTED_LEVEL_IN_POLICE_DEPT
ENDIf
ENDIF
ENDIF
ENDIF
IF failReason = FAIL_HAS_WANTED_LEVEL_IN_POLICE_DEPT
IF GET_GAME_TIMER() > failDelay
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F13",TRUE)
ENDIF
ENDIF
BREAK
CASE FAIL_COP_DIES
IF DOES_ENTITY_EXIST(ped[ped_cop1].id)
IF IS_PED_INJURED(ped[ped_cop1].id)
IF NOT IS_CONDITION_TRUE(COND_COP_IN_STAIRWELL)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F13",TRUE)
ENDIF
ENDIF
ENDIF
BREAK
CASE FAIL_PLAYER_SHOOTING_NEAR_POLICE_DEPT
IF IS_PED_SHOOTING(player_ped_id())
IF IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<443.060303,-943.353638,12.574972>>, <<441.947815,-1061.535400,55.027191>>, 130.812500)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F13",TRUE)
ENDIF
ENDIF
BREAK
CASE FAIL_PLAYER_CREATED_DISTURBANCE_NEAR_POL_DEPT
//explosions
IF IS_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE,<<443.060303,-943.353638,12.574972>>, <<441.947815,-1061.535400,55.027191>>, 130.812500)
entity_index aEnt
aEnt = GET_OWNER_OF_EXPLOSION_IN_ANGLED_AREA(EXP_TAG_DONTCARE,<<443.060303,-943.353638,12.574972>>, <<441.947815,-1061.535400,55.027191>>, 130.812500)
IF GET_PED_INDEX_FROM_ENTITY_INDEX(aEnt) = PLAYER_PED_ID()
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SET_PLAYER_WANTED_LEVEL(player_id(),3)
SET_PLAYER_WANTED_LEVEL_NOW(player_id())
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F13",TRUE)
ENDIF
ENDIF
BREAK
CASE FAIL_COPS_IN_COMBAT
GET_PED_NEARBY_PEDS(player_ped_id(),pedList)
int iJ
REPEAT COUNT_OF(pedList) ij
IF DOES_ENTITY_EXIST(pedList[ij])
IF NOT IS_PED_INJURED(pedList[ij])
IF IS_PED_IN_COMBAT(pedList[ij],player_ped_id())
OR IS_PED_RAGDOLL(pedList[ij])
IF GET_INTERIOR_FROM_ENTITY(pedList[ij]) = int_police
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F13",TRUE)
ENDIF
ENDIF
ELSE
IF GET_INTERIOR_FROM_ENTITY(player_ped_id()) = int_police
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F13",TRUE)
ENDIF
ENDIF
ENDIF
ENDREPEAT
BREAK
CASE FAIL_CHOPPER_DESTROYED
IF DOES_ENTITY_EXIST(vehicle[vehChopper].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F01",TRUE)
ENDIF
ENDIF
BREAK
CASE FAIL_PLAYER_WANDERS_AWAY_FROM_POLICE_DEPT
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(),<< 422,-978,30 >>) > 100.0
and (NOT IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id) OR (IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id) and not IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)))
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F14")
ENDIF
BREAK
CASE FAIL_PILOT_FLEW_AWAY
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF NOT IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
IF IS_ENTITY_IN_ANGLED_AREA( vehicle[vehChopper].id, <<476.378693,-987.339050,45.758247>>, <<430.220062,-986.779541,79.070145>>, 31.125000)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F18")
ENDIF
ENDIF
ENDIF
BREAK
CASE FAIL_ZTYPE_DAMAGED
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF GET_ENTITY_HEALTH(vehicle[vehHeist].id) < 820
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F07")
ENDIF
IF IS_VEHICLE_DOOR_DAMAGED(vehicle[vehHeist].id,SC_DOOR_FRONT_LEFT)
OR IS_VEHICLE_DOOR_DAMAGED(vehicle[vehHeist].id,SC_DOOR_FRONT_RIGHT)
OR IS_VEHICLE_DOOR_DAMAGED(vehicle[vehHeist].id,SC_DOOR_REAR_LEFT)
OR IS_VEHICLE_DOOR_DAMAGED(vehicle[vehHeist].id,SC_DOOR_REAR_RIGHT)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F07")
ENDIF
ENDIF
BREAK
CASE FAIL_PLAYER_LEAVES_ZTYPE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF GET_DISTANCE_BETWEEN_ENTITIES(player_ped_id(),vehicle[vehHeist].id) > 150
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F08") //ztype was lost
ENDIF
ENDIF
BREAK
CASE FAIL_CHAD_ESCAPES_WITH_ZTYPE
IF IS_CONDITION_TRUE(COND_CHAD_ESCAPED_IN_ZTYPE)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F20")
ENDIF
BREAK
CASE FAIL_FLEW_TOO_FAR_AWAY
IF IS_CONDITION_TRUE(COND_FLEW_IN_TO_FAIL_ZONE)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F19")
ENDIF
BREAK
CASE fail_devins_plane_destroyed
IF DOES_ENTITY_EXIST(vehicle[vehJet].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F21")
ELSE
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[vehJet].id,player_ped_id())
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F23")
ENDIF
ENDIF
ENDIF
BREAK
CASE fail_attacked_devins_entourage
IF (DOES_ENTITY_EXIST(ped[ped_cop2].id) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_cop2].id,player_ped_id()))
OR (DOES_ENTITY_EXIST(ped[ped_cop3].id) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_cop3].id,player_ped_id()))
OR (DOES_ENTITY_EXIST(ped[ped_cop4].id) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_cop4].id,player_ped_id()))
OR (DOES_ENTITY_EXIST(ped[ped_civ1].id) AND HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_civ1].id,player_ped_id()))
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F24")
ENDIF
BREAK
CASE FAIL_ZTYPE_STUCK
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_VEHICLE_STUCK_TIMER_UP(vehicle[vehHeist].id, VEH_STUCK_JAMMED, JAMMED_TIME)
OR IS_VEHICLE_STUCK_TIMER_UP(vehicle[vehHeist].id, VEH_STUCK_HUNG_UP, HUNG_UP_TIME)
OR IS_VEHICLE_STUCK_TIMER_UP(vehicle[vehHeist].id, VEH_STUCK_ON_ROOF, ROOF_TIME)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F12")
ENDIF
ENDIF
BREAK
CASE FAIL_DEVIN_KILLED
IF DOES_ENTITY_EXIST(pedDevin)
IF IS_PED_INJURED(pedDevin)
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F21")
ENDIF
ENDIF
BREAK
CASE FAIL_COPS_AT_DEVIN
IF IS_CONDITION_TRUE(COND_ZTYPE_IN_HANGAR)
IF GET_PLAYER_WANTED_LEVEL(player_id()) > 0
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F25")
ENDIF
ENDIF
BREAK
CASE FAIL_DEVIN_SCARED_OFF
bool bScareOff
IF IS_CONDITION_TRUE(COND_PLAYER_300m_from_garage)
IF DOES_ENTITY_EXIST(peddevin)
IF NOT IS_PED_INJURED(peddevin)
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(peddevin,PLAYER_PED_ID())
OR GET_SCRIPT_TASK_STATUS(peddevin,SCRIPT_TASK_SYNCHRONIZED_SCENE) = DORMANT_TASK
bScareOff=TRUE
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(ped[ped_cop2].id)
IF IS_PED_INJURED(ped[ped_cop2].id)
bScareOff=TRUE
ELSE
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_cop2].id,PLAYER_PED_ID())
OR GET_SCRIPT_TASK_STATUS(ped[ped_cop2].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = DORMANT_TASK
bScareOff=TRUE
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(ped[ped_cop3].id)
IF IS_PED_INJURED(ped[ped_cop3].id)
bScareOff=TRUE
ELSE
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_cop3].id,PLAYER_PED_ID())
OR GET_SCRIPT_TASK_STATUS(ped[ped_cop3].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = DORMANT_TASK
bScareOff=TRUE
ENDIF
//cprintln(debug_trevor3,ENUM_TO_INT(GET_SCRIPT_TASK_STATUS(ped[ped_cop3].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE)))
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(ped[ped_cop4].id)
IF IS_PED_INJURED(ped[ped_cop4].id)
bScareOff=TRUE
ELSE
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(ped[ped_cop4].id,PLAYER_PED_ID())
OR GET_SCRIPT_TASK_STATUS(ped[ped_cop4].id,SCRIPT_TASK_START_SCENARIO_IN_PLACE) = DORMANT_TASK
bScareOff=TRUE
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehJet].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
bScareOff=TRUE
ELSE
//IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[vehJet].id,PLAYER_PED_ID())
IF GET_ENTITY_HEALTH(vehicle[vehJet].id) < 1000
bScareOff=TRUE
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehsec1].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehsec1].id)
bScareOff=TRUE
ELSE
//IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[vehsec1].id,PLAYER_PED_ID())
IF GET_ENTITY_HEALTH(vehicle[vehsec1].id) < 1000
bScareOff=TRUE
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehsec2].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehsec2].id)
bScareOff=TRUE
ELSE
//IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[vehsec2].id,PLAYER_PED_ID())
IF GET_ENTITY_HEALTH(vehicle[vehsec1].id) < 1000
bScareOff=TRUE
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehicle[vehsec3].id)
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehsec3].id)
bScareOff=TRUE
ELSE
//IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(vehicle[vehsec3].id,PLAYER_PED_ID())
IF GET_ENTITY_HEALTH(vehicle[vehsec3].id) < 1000
bScareOff=TRUE
ENDIF
ENDIF
ENDIF
IF bScareOff
and missionFailing = FAIL_NULL
SET_MISSION_TO_FAIL(thisFailToCheck,"CH_F22",true)
IF NOT IS_PED_INJURED(ped[ped_cop4].id)
TASK_SMART_FLEE_PED(ped[ped_cop4].id,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(ped[ped_cop4].id,TRUE)
ENDIF
IF NOT IS_PED_INJURED(peddevin)
TASK_SMART_FLEE_PED(peddevin,player_ped_id(),100,-1)
SET_PED_KEEP_TASK(peddevin,TRUE)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_cop2].id)
GIVE_WEAPON_TO_PED(ped[ped_cop2].id,WEAPONTYPE_MICROSMG,1000)
TASK_COMBAT_PED(ped[ped_cop2].id,player_ped_id())
SET_PED_KEEP_TASK(ped[ped_cop2].id,TRUE)
ENDIF
IF NOT IS_PED_INJURED(ped[ped_cop3].id)
GIVE_WEAPON_TO_PED(ped[ped_cop3].id,WEAPONTYPE_MICROSMG,1000)
TASK_COMBAT_PED(ped[ped_cop3].id,player_ped_id())
SET_PED_KEEP_TASK(ped[ped_cop3].id,TRUE)
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
IF missionFailing != FAIL_NULL
IF bDelayFail
AND failTimer < 2.0
failTimer += TIMESTEP()
ELSE
Mission_Failed(sFailText)
ENDIF
ENDIF
ENDPROC
PROC Check_For_Skip(bool bDoSkip = FALSE,enumMissionStage skipToStage=STAGE_NULL,int newFlagValue=0,bool bIsReplay=FALSE)
#IF IS_DEBUG_BUILD
IF LAUNCH_MISSION_STAGE_MENU(SkipMenuStruct,iReturnStage,iReturnStage)
IF iReturnStage = 1
If playAsTrevor = FALSE
iReturnStage = 2
ENDIF
ELIF iReturnStage > 1
iReturnStage++
ENDIF
bDoSkip = true
ELSE
If IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P)
iReturnStage = enum_to_int(missionProgress)
bDoSkip = true
If playAsTrevor = TRUE
IF iReturnStage = 3
iReturnStage = 1
ELSE
iReturnStage--
endif
else
IF iReturnStage = 2
iReturnStage = 0
ELSE
iReturnStage--
endif
endif
ENDIF
If IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
iReturnStage = enum_to_int(missionProgress)
If iReturnStage = 1
IF iStoredLastReplay = 0
newFlagValue = 1
ELSE
iReturnStage = 3
ENDIF
else
iReturnStage++
endif
bDoSkip = true
ENDIF
ENDIF
#ENDIF
bool bDoNotFade
If bDoSkip = true
DELETE_EVERYTHING(MISSION_STATE_SKIP)
IF skipToStage != STAGE_NULL
missionProgress=skipToStage
ENDIF
iFlag = newFlagValue
switch missionProgress
CASE STAGE_STARTUP
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
FORCE_ASSET_STAGE(ASSETS_STAGE_STARTUP)
IF playAsTrevor
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
SET_ENTITY_COORDS(player_ped_id(),<< 424.5670, -979.8093, 29.7108 >>)
SET_ENTITY_HEADING(player_ped_id(),256.3022)
ELSE
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
ENDIF
DISABLE_CELLPHONE(FALSE)
BREAK
CASE STAGE_TREVOR_GET_CHOPPER
If iFlag = 1
IF bIsReplay
START_REPLAY_SETUP(<<461.8770, -984.3531, 42.6920>>,81.1471)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<<461.8770, -984.3531, 42.6920>>)
SET_ENTITY_HEADING(player_ped_id(),81.1471)
LOAD_SCENE(<<461.8770, -984.3531, 42.6920>>)
ENDIF
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SET_PED_RESET_FLAG(player_ped_id(),PRF_DisableAgitation,TRUE)
add_event(events_create_Franklin_and_car)
add_event(events_waypoint_through_police_dept,STAGE_LEARN_TO_SCAN)
//cprintln(debug_trevor3,"GOt a")
safewait(2)
FORCE_ASSET_STAGE(ASSETS_STAGE_POLICE_STATION)
//cprintln(debug_trevor3,"GOt b")
DISABLE_CELLPHONE(FALSE)
FORCE_INSTRUCTION_STATE(0,INS_GET_TO_RECEPTION)
FORCE_INSTRUCTION_STATE(1,INS_FOLLOW_COP)
FORCE_INSTRUCTION_STATE(2,INS_GET_TO_ROOF)
FORCE_DIALOGUE_STATE(0,DIA_CAN_I_HELP)
FORCE_DIALOGUE_STATE(1,DIA_COP_WALK_CHAT)
FORCE_DIALOGUE_STATE(2,DIA_COME_ON)
FORCE_DIALOGUE_STATE(4,DIA_PLAYER_ENTERS_LOCKER_ROOM)
FORCE_DIALOGUE_STATE(6,DIA_COP_RETURNS_TO_DESK)
FORCE_DIALOGUE_STATE(7,DIA_RESTART_CONV)
FORCE_DIALOGUE_STATE(8,DIA_PLAYER_THREAT_IN_POL_DEPT)
FORCE_ACTION_STATE(2,ACT_LOOK_AT_PLAYER_ENTRY)
FORCE_ACTION_STATE(3,ACT_WALK_TO_STAIRS)
FORCE_ACTION_STATE(6,ACT_COP_RETURNS_TO_FRONT_DESK)
FORCE_ACTION_STATE(9,ACT_COP_WAITS_FOR_PLAYER)
FORCE_ACTION_STATE(0,ACT_SPAWN_COPS,false)
// SET_ACTION_FLAG(0,ACT_SPAWN_COPS,100)
WHILE NOT IS_ACTION_COMPLETE(5,ACT_SPAWN_CHOPPER)
OR NOT IS_ACTION_COMPLETE(0,ACT_SPAWN_COPS)
ACTION(5,ACT_SPAWN_CHOPPER)
ACTION(0,ACT_SPAWN_COPS)
SAFEWAIT()
ENDWHILE
//cprintln(debug_trevor3,"GOt d")
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
iFlag = 2
else
IF bIsReplay
START_REPLAY_SETUP(<< 422.6565, -978.2415, 29.7089 >>,252)
SET_CLOCK_TIME(21,00,00)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<< 422.6565, -978.2415, 29.7089 >>)
SET_ENTITY_HEADING(player_ped_id(),252)
LOAD_SCENE(<< 422.6565, -978.2415, 29.7089 >>)
SAFEWAIT(1)
ENDIF
// CLEAR_AREA(<< 422.6565, -978.2415, 29.7089 >>,30,true) //to clear up remaining cops
CLEAR_AREA(<<441.0267, -978.2040, 29.6895>>,2,TRUE)
CLEAR_AREA(<< 440.2506, -975.6328, 29.6895 >>,2,TRUE)
CLEAR_AREA(<<454.1487, -979.8940, 29.6896>>,2,TRUE)
CLEAR_AREA(<<450.2071, -992.9072, 29.6896>>,2,TRUE)
if not is_ped_injured(ped[ped_cop4].id) cprintln(debug_Trevor3,"cop 4 alive A") ENDIF
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
DISABLE_CELLPHONE(FALSE)
endif
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
FORCE_ASSET_STAGE(ASSETS_STAGE_POLICE_STATION)
WHILE NOT IS_ACTION_COMPLETE(0,ACT_SPAWN_COPS)
ACTION(0,ACT_SPAWN_COPS)
SAFEWAIT()
ENDWHILE
BREAK
case STAGE_FRANKLIN_AWAITS_TREVOR
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
IF bIsReplay
START_REPLAY_SETUP(<<1390.5972, -2058.0562, 51.0442>>, 129.5256)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<<1390.5972, -2058.0562, 51.0442>>)
SET_ENTITY_HEADING(player_ped_id(),129.5256)
LOAD_SCENE(<<1390.5972, -2058.0562, 51.0442>>)
SAFEWAIT(1)
ENDIF
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
FORCE_ASSET_STAGE(ASSETS_STAGE_STARTUP)
DISABLE_CELLPHONE(FALSE)
//CREATE_VEHICLE_FOR_REPLAY(vehicle[vehFranklin].id, <<1388.0295, -2067.3911, 50.9981>>, 73.6419,FALSE,FALSE,true,true,true) //
//removed due to bug 1760749. Was creeating two franklin cars and it was defaulting to the Asterope anyway.
cprintln(debug_Trevor3,"Make car")
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << 1388.0295, -2067.3911, 50.9981 >>,0,true,VEHICLE_TYPE_CAR)
WAIT(0)
ENDWHILE
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
break
CASE STAGE_LEARN_TO_SCAN
//cprintln(debug_trevor3,"SKIPPY ME LOO")
FORCE_ASSET_STAGE(ASSETS_STAGE_IN_CHOPPER)
PLAY_MUSIC(mus_init_scanner,mus_scan_first_ped)
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< 1374.2163, -2074.3337, 58.9988 >>,28.3)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
SET_VEHICLE_DOORS_LOCKED(vehicle[vehChopper].id,VEHICLELOCK_LOCKED)
WHILE NOT CREATE_FRANKLIN(<< 1380.8173, -2065.9912, 50.9988 >>,128)
WAIT(0)
ENDWHILE
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,TRUE)
if not IS_ENTITY_DEAD(PLAYER_PED_ID())
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id,VS_DRIVER)
ENDIF
ENDIF
CLEAR_PRINTS()
while not SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id,TRUE, vehicle[vehChopper].id)
WAIT(0)
ENDWHILE
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",TRUE)
DISABLE_SELECTOR()
WHILE NOT HUD.bIsCamAttached
RUN_HELICOPTER_HUD(HUD)
SAFEWAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
IF NOT DOES_ENTITY_EXIST(vehicle[vehFranklin].id)
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << 1388.0295, -2067.3911, 50.9981 >>,0,true,VEHICLE_TYPE_CAR)
WAIT(0)
ENDWHILE
ENDIF
RUN_HELICOPTER_HUD(HUD)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,FALSE)
ENDIF
HUD.bMoveChopper = true
HUD.fTargetHeight = 100.0
POINT_CHOPPER_CAM_AT_COORD(HUD,<< -212.2150, 639.5228, 191.7123 >>)
iFlag=999
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
break
case STAGE_APPROACH_SCAN_AREA_ONE //skip to flying towards first destination
IF bIsReplay
START_REPLAY_SETUP(<< 131.4066, -341.6778, 177.6481 >>,60.0)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<< 131.4066, -341.6778, 177.6481 >>)
SET_ENTITY_HEADING(player_ped_id(),60)
LOAD_SCENE(<< 131.4066, -341.6778, 177.6481 >>)
SAFEWAIT(1)
ENDIF
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
FORCE_ASSET_STAGE(ASSETS_STAGE_PREP_AREA_1)
PLAY_MUSIC(mus_reload_scan_area_1,mus_scan_first_ped)
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
if IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE()
ENDIF
HUD.fTargetHeight = 100.0
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< 131.4066, -341.6778, 177.6481 >>,60.0)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id,VS_DRIVER)
ENDIF
IF NOT IS_HELIHUD_ACTIVE(HUD)
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id,true, vehicle[vehChopper].id)
DISABLE_SELECTOR()
ENDIF
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",TRUE)
WHILE NOT HUD.bIsCamAttached
RUN_HELICOPTER_HUD(HUD)
SAFEWAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
//if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
// SET_ENTITY_COORDS(vehicle[vehChopper].id,<< 253.5414, -503.7481, 230.8252 >>)
// SET_ENTITY_HEADING(vehicle[vehChopper].id,0)
// FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,FALSE)
HUD.bMoveChopper = true
//ENDIF
if DOES_BLIP_EXIST(ped[ped_trevor].blip)
REMOVE_BLIP(ped[ped_trevor].blip)
ENDIF
if DOES_BLIP_EXIST(blipTarget)
REMOVE_BLIP(blipTarget)
ENDIF
//CREATE_CHOPPER_PILOT()
POINT_CHOPPER_CAM_AT_COORD(HUD,<< -23.5265, -44.4256, 87.3915 >>)
add_event(EVENTS_LOAD_FIRST_LOCATION_PEDS)
add_event(EVENTS_QUAD_BLOCKING,STAGE_CHASE_BEGINS)
//initVehicle(vehFranklin,BUFFALO,<< 187.2789, -153.2764, 55.6541 >>, 254.3027)
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << -93.4581, -66.9989, 55.8005 >>,345.5313,true,VEHICLE_TYPE_CAR)
WAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_INVINCIBLE(vehicle[vehFranklin].id,true)
ENDIF
WHILE NOT CREATE_FRANKLIN(vNull,0,vehicle[vehFranklin].id)
WAIT(0)
ENDWHILE
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
// SET_ENTITY_COORDS(vehicle[vehChopper].id,<< 247.4768, -190.9185, 150.9918 >>)
// SET_ENTITY_HEADING(vehicle[vehChopper].id,90.0)
POINT_CHOPPER_CAM_AT_COORD(HUD,<< 200.2920, -156.3387, 58.0269 >>)
ENDIF
iFlag=9
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
break
case STAGE_APPROACH_SCAN_AREA_THREE //skip to flying towards first destination
IF bIsReplay
START_REPLAY_SETUP(<< 82.3613, -72.5265, 233.7927 >>,-114.3)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<< 82.3613, -72.5265, 233.7927 >>)
SET_ENTITY_HEADING(player_ped_id(),60)
LOAD_SCENE(<< 82.3613, -72.5265, 233.7927 >>)
SAFEWAIT(1)
ENDIF
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
FORCE_ASSET_STAGE(ASSETS_STAGE_PREP_AREA_2)
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
add_event(EVENTS_QUAD_BLOCKING,STAGE_CHASE_BEGINS)
if IS_PHONE_ONSCREEN()
HANG_UP_AND_PUT_AWAY_PHONE()
ENDIF
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< 82.3613, -72.5265, 233.7927 >>,-114.3)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id,VS_DRIVER)
ENDIF
IF NOT IS_HELIHUD_ACTIVE(HUD)
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id,true, vehicle[vehChopper].id)
DISABLE_SELECTOR()
ENDIF
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",TRUE)
WHILE NOT HUD.bIsCamAttached
RUN_HELICOPTER_HUD(HUD)
SAFEWAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
//CREATE_CHOPPER_PILOT()
HUD.bMoveChopper = true
PRINT_NOW("CH_INS12C",6000,1)
POINT_CHOPPER_CAM_AT_COORD(HUD,<< 215.9081, -130.7865, 63.6567 >>)
//initVehicle(vehFranklin,BUFFALO,<< 187.2789, -153.2764, 55.6541 >>, 254.3027)
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << -93.4581, -66.9989, 55.8005 >>,345.5313,true,VEHICLE_TYPE_CAR)
WAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_INVINCIBLE(vehicle[vehFranklin].id,true)
ENDIF
WHILE NOT CREATE_FRANKLIN(vNull,0,vehicle[vehFranklin].id)
WAIT(0)
ENDWHILE
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
// SET_ENTITY_COORDS(vehicle[vehChopper].id,<< 247.4768, -190.9185, 150.9918 >>)
// SET_ENTITY_HEADING(vehicle[vehChopper].id,90.0)
POINT_CHOPPER_CAM_AT_COORD(HUD,<< 200.2920, -156.3387, 58.0269 >>)
ENDIF
add_event(EVENTS_LOAD_FINAL_LOCATION_PEDS)
set_event_flag(EVENTS_LOAD_FINAL_LOCATION_PEDS,2)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
START_AUDIO_SCENE("CAR_2_SCAN_THE_SUSPECTS")
PLAY_MUSIC(mus_reload_scan_area_2,mus_chad_sees_franklin)
break
case STAGE_CHASE_BEGINS //skip to chad waiting by car
IF bIsReplay
START_REPLAY_SETUP(<< 247.4768, -190.9185, 150.9918 >>,130.3)
ELSE
SET_ENTITY_COORDS(player_ped_id(),<< 247.4768, -190.9185, 150.9918 >>)
SET_ENTITY_HEADING(player_ped_id(),130.3)
LOAD_SCENE(<< 247.4768, -190.9185, 150.9918 >>)
SAFEWAIT(1)
ENDIF
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
HUD.bBlockTargetLost = TRUE
START_AUDIO_SCENE("CAR_2_CAR_CHASE_START")
START_AUDIO_SCENE("CAR_2_Z_TYPE_ENGINE_BOOST")
FORCE_ASSET_STAGE(ASSETS_STAGE_RELEASE_AREA_2)
PLAY_MUSIC(mus_reload_chase_Stage,mus_chad_drives_down_alley)
REQUEST_MODEL(model_chad)
WHILE NOT HAS_MODEL_LOADED(model_chad)
SAFEWAIT(0)
ENDWHILE
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
add_event(EVENTS_SPEED_UP_CHOPPER)
add_event(EVENTS_STEALTH_REMOVE_TRAFFIC,STAGE_CARPARK)
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,FALSE)
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< 247.4768, -190.9185, 150.9918 >>,130.3)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id,VS_DRIVER)
ENDIF
IF NOT IS_HELIHUD_ACTIVE(HUD)
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id,true, vehicle[vehChopper].id)
DISABLE_SELECTOR()
hud.fChopperSpeed=0.0
ENDIF
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",TRUE)
WHILE NOT HUD.bIsCamAttached
RUN_HELICOPTER_HUD(HUD)
SAFEWAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
//delete all peds (except pilot)
//vehicle[vehHeist].id = CREATE_VEHICLE(ZTYPE,<< 202.7272, -149.7968, 56.1760 >>,160)
initHeistVehicle(<< 202.7272, -149.7968, 56.1760 >>,160)
// initVehicle(vehFranklin,BUFFALO,<< 187.2789, -153.2764, 55.6541 >>, 254.3027)
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << 187.2789, -153.2764, 55.6541 >>, 254.3027,true,VEHICLE_TYPE_CAR)
SAFEWAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_INVINCIBLE(vehicle[vehFranklin].id,true)
ENDIF
WHILE NOT CREATE_FRANKLIN(vNull,0,vehicle[vehFranklin].id)
SAFEWAIT(0)
ENDWHILE
ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehicle[vehHeist].id,"CAR_2_Z-TYPE")
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
SET_ENTITY_COORDS(vehicle[vehChopper].id,<< 247.4768, -190.9185, 150.9918 >>)
SET_ENTITY_HEADING(vehicle[vehChopper].id,90.0)
POINT_CHOPPER_CAM_AT_COORD(HUD,<<212.3564, -180.0367, 63.6800>>)
ENDIF
//CREATE_CHOPPER_PILOT()
initPedInVehicle(ped_chad,model_chad,vehicle[vehHeist].id)
//add_event(EVENTS_FRANKLIN_ARRIVE)
HUD.bMoveChopper = true
kill_event(EVENTS_SPEED_UP_CHOPPER)
bplayVehRecs = true
while bRecordingsLoaded = FALSE
loadCarRecData()
safewait()
endwhile
iPlaybackTime = 0
// add_event(events_chase_chatter)
// add_event(events_blow_up_cars)
// PRINTLN("FAIL COUNT:",Get_Fails_Count_Without_Progress_For_This_Mission_Script())
// IF Get_Fails_Count_Without_Progress_For_This_Mission_Script() >= 2
// ADD_PED_TO_SCAN_LIST(HUD,ped[ped_chad].id,true,HUD_FOE,true,true,true,true)
// ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_chad].id,"CH_CHAD",8)
// ELSE
ADD_EVENT(events_chad_car_brief_hint)
// ENDIF
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
break
CASE STAGE_CARPARK
START_AUDIO_SCENE("CAR_2_CAR_ENTERS_GARAGE")
FORCE_ASSET_STAGE(ASSETS_STAGE_PREP_CAR_PARK)
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
PLAY_MUSIC(mus_reload_car_park,mus_get_car_to_objective)
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
REQUEST_MODEL(model_chad)
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,FALSE)
//vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< -1199.8082, -295.1306, 142.2804 >>,90.3)
initVehicle(vehChopper,POLMAV,<< -1199.8082, -295.1306, 142.2804 >>,90.3)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id,VS_DRIVER)
ENDIF
// ped[ped_trevor].id = player_ped_id()
IF NOT IS_HELIHUD_ACTIVE(HUD)
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id,true, vehicle[vehChopper].id)
DISABLE_SELECTOR()
ENDIF
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",TRUE)
WHILE NOT HUD.bIsCamAttached
RUN_HELICOPTER_HUD(HUD)
SAFEWAIT(0)
ENDWHILE
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1284.524292,-212.007370,50.633434>>-<<39.000000,54.750000,14.000000>>,<<-1284.524292,-212.007370,50.633434>>+<<39.000000,54.750000,14.000000>>,false)
//delete all peds (except pilot)
initHeistVehicle(<< -1309.563, -215.238, 50.993 >>, 123.0209)
// initVehicle(vehFranklin,BUFFALO,<< -1188.8595, -294.5421, 36.8739 >>,223.0)
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << -1275.8739, -222.6858, 50.5496 >>,218.0,true,VEHICLE_TYPE_CAR)
SAFEWAIT(0)
ENDWHILE
// vehicle[vehFranklin].id = CREATE_VEHICLE(BUFFALO,<< -1188.8595, -294.5421, 36.8739 >>,223.0)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_INVINCIBLE(vehicle[vehFranklin].id,true)
ENDIF
//START_PLAYBACK_RECORDED_VEHICLE(vehicle[vehHeist].id,206,sVehicleRecordingLibrary)
//SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehicle[vehHeist].id,7000)
WHILE NOT HAS_MODEL_LOADED(model_chad)
SAFEWAIT(0)
ENDWHILE
initped(ped_chad,model_chad,vNull,0.0,vehicle[vehHeist].id,VS_DRIVER,pedrole_enemyUnaware)
STOP_PED_SPEAKING(ped[ped_chad].id,TRUE)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
POINT_CHOPPER_CAM_AT_COORD(HUD,GET_ENTITY_COORDS(vehicle[vehHeist].id))
ENDIF
//ped[ped_chad].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehHeist].id,PEDTYPE_MISSION,model_chad)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
WHILE NOT CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_franklin].id,CHAR_FRANKLIN,vehicle[vehFranklin].id)
safewait()
ENDWHILE
ENDIF
add_event(EVENTS_FILL_CARPARK,STAGE_DRIVE_VEHICLE_TO_OBJECTIVE)
WHILE NOT is_event_complete(EVENTS_FILL_CARPARK)
control_events(EVENTS_FILL_CARPARK)
safewait()
ENDWHILE
//CREATE_CHOPPER_PILOT()
if not DOES_BLIP_EXIST(ped[ped_chad].blip)
// ped[ped_chad].blip = CREATE_BLIP_FOR_PED(ped[ped_chad].id,true)
ENDIF
iFlag=0
HUD.bMoveChopper = true
BREAK
CASE STAGE_SCAN_CARPARK_PEDS
START_AUDIO_SCENE("CAR_2_CAR_ENTERS_GARAGE")
FORCE_ASSET_STAGE(ASSETS_STAGE_PREP_CAR_PARK)
PLAY_MUSIC(mus_reload_car_park,mus_get_car_to_objective)
CHANGE_PLAYER(SELECTOR_PED_TREVOR)
REQUEST_MODEL(model_chad)
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
//vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< -1199.8082, -295.1306, 142.2804 >>,90.3)
initVehicle(vehChopper,POLMAV,<< -1301.2561, -253.3784, 54 >>,-49.3)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id,VS_DRIVER)
ENDIF
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,FALSE)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1284.524292,-212.007370,50.633434>>-<<39.000000,54.750000,14.000000>>,<<-1284.524292,-212.007370,50.633434>>+<<39.000000,54.750000,14.000000>>,false)
// ped[ped_trevor].id = player_ped_id()
IF NOT IS_HELIHUD_ACTIVE(HUD)
SET_CHOPPER_HUD_ACTIVE(HUD,vehicle[vehChopper].id,true, vehicle[vehChopper].id)
DISABLE_SELECTOR()
ENDIF
SET_AUDIO_FLAG("AllowPoliceScannerWhenPlayerHasNoControl",TRUE)
WHILE NOT HUD.bIsCamAttached
RUN_HELICOPTER_HUD(HUD)
SAFEWAIT(0)
ENDWHILE
set_chopper_speed_limits(hud,0.3,0.7)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_ENTITY_COORDS(vehicle[vehChopper].id,<< -1301.2561, -253.3784, 54 >>)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
//delete all peds (except pilot)
initHeistVehicle(<< -1309.563, -215.238, 50.993 >>, 123.0209)
// initVehicle(vehFranklin,BUFFALO,<< -1188.8595, -294.5421, 36.8739 >>,223.0)
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << -1275.8739, -222.6858, 50.5496 >>,218.0,true,VEHICLE_TYPE_CAR)
SAFEWAIT(0)
ENDWHILE
// vehicle[vehFranklin].id = CREATE_VEHICLE(BUFFALO,<< -1188.8595, -294.5421, 36.8739 >>,223.0)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_INVINCIBLE(vehicle[vehFranklin].id,true)
ENDIF
//START_PLAYBACK_RECORDED_VEHICLE(vehicle[vehHeist].id,206,sVehicleRecordingLibrary)
//SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehicle[vehHeist].id,7000)
WHILE NOT HAS_MODEL_LOADED(model_chad)
SAFEWAIT(0)
ENDWHILE
initped(ped_chad,model_chad,vNull,0.0,vehicle[vehHeist].id,VS_DRIVER,pedrole_enemyUnaware)
STOP_PED_SPEAKING(ped[ped_chad].id,TRUE)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
POINT_CHOPPER_CAM_AT_COORD(HUD,<<-1308.4099, -217.4297, 52.3787>>)
ENDIF
//ped[ped_chad].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehHeist].id,PEDTYPE_MISSION,model_chad)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
WHILE NOT CREATE_PLAYER_PED_ON_FOOT(ped[ped_franklin].id,CHAR_FRANKLIN,<<-1274.7087, -216.8189, 50.5498>>, 142.5829)
safewait()
ENDWHILE
ENDIF
add_event(EVENTS_FILL_CARPARK,STAGE_DRIVE_VEHICLE_TO_OBJECTIVE)
WHILE NOT is_event_complete(EVENTS_FILL_CARPARK)
control_events(EVENTS_FILL_CARPARK)
safewait()
ENDWHILE
//CREATE_CHOPPER_PILOT()
iFlag=0
HUD.bMoveChopper = true
FORCE_ACTION_STATE(0,ACT_CHOPPER_CONTROL,true)
FORCE_ACTION_STATE(3,ACT_FRANKLIN_RUNS_TO_ROOF,false)
SET_ACTION_FLAG(3,ACT_FRANKLIN_RUNS_TO_ROOF,2)
checkConditions(COND_CARPARK_STARTS,COND_CAR_PARK_ENDS)
SET_CONDITION_STATE(COND_CHOPPER_DESCENDING,TRUE)
SET_CONDITION_STATE(COND_FRANKLIN_STOPPED_HIS_CAR,TRUE)
SET_CONDITION_STATE(COND_FRANKLIN_HAS_STOPPED_RUNNING,TRUE)
SET_CONDITION_STATE(COND_A_LITTLE_AFTER_EXITS_CLEAR_DIA,TRUE)
SET_CONDITION_STATE(COND_DIA_TAKE_US_DOWN,TRUE)
SET_CONDITION_STATE(COND_DIA_THERMAL_VISION,TRUE)
SET_CONDITION_STATE(COND_DIA_CAN_YOU_SEE_FRANKLIN,TRUE)
SET_CONDITION_STATE(COND_DIA_TREVOR_SEE_FRANKLIN_ENDED,TRUE)
SET_CONDITION_STATE(COND_CHOPPER_AT_CAR_PARK_LEVEL,TRUE)
SET_CONDITION_STATE(COND_THERMAL_TURNED_ON,TRUE)
SET_CONDITION_STATE(COND_FRANKLIN_OBSERVED_WITH_THERMAL,TRUE)
SET_CONDITION_STATE(COND_THERMAL_READY,TRUE)
FORCE_INSTRUCTION_STATE(0,INS_TURN_ON_THERMAL_VISION)
FORCE_INSTRUCTION_STATE(1,INS_ZOOM_IN_ON_FRANKLIN)
FORCE_DIALOGUE_STATE(0,DIA_TAKE_US_DOWN)
FORCE_DIALOGUE_STATE(1,DIA_TREVOR_SCARED)
FORCE_DIALOGUE_STATE(2,DIA_EXITS_CLEAR)
FORCE_DIALOGUE_STATE(3,DIA_THERMAL_VISION)
FORCE_DIALOGUE_STATE(4,DIA_TREVOR_REACTION_TO_THERMAL_VISION_ON)
FORCE_DIALOGUE_STATE(5,DIA_FRANKLIN_ASKS_IF_PLAYER_CAN_SEE_HIM)
FORCE_DIALOGUE_STATE(13,DIA_TREVOR_SEE_FRANKLIN)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_ENTITY_COORDS(vehicle[vehChopper].id,<< -1301.2561, -253.3784, 54 >>)
ENDIF
add_event(EVENTS_CONTROL_INFRARED)
add_event(EVENTS_CHOPPER_CARPARK)
set_event_flag(EVENTS_CHOPPER_CARPARK,4)
control_events(EVENTS_CHOPPER_CARPARK)
clearHoverInArea(hud)
fixChopperHeading(hud,-55.6696)
BREAK
CASE STAGE_TAKE_ZTYPE
IF bIsReplay
START_REPLAY_SETUP(<< -1300.4332, -211.6004, 50.6831 >>,125.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1300.4332, -211.6004, 50.6831 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),125.4926)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0)
LOAD_SCENE(<< -1300.4332, -211.6004, 50.6831 >>)
SAFEWAIT(1)
ENDIF
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1284.524292,-212.007370,50.633434>>-<<39.000000,54.750000,14.000000>>,<<-1284.524292,-212.007370,50.633434>>+<<39.000000,54.750000,14.000000>>,false)
FORCE_ASSET_STAGE(ASSETS_STAGE_PREP_CAR_PARK)
REQUEST_MODEL(model_pilot)
REQUEST_MODEL(model_chad)
WHILE NOT HAS_MODEL_LOADED(model_pilot)
OR nOT HAS_MODEL_LOADED(model_chad)
SAFEWAIT(0)
ENDWHILE
SET_ROADS_IN_ANGLED_AREA(<<-1314.045654,-183.052002,40.465984>>, <<-1256.618408,-261.595306,68.179886>>, 52.250000,FALSE,FALSE)
PLAY_MUSIC(mus_reload_collec_car_stage,mus_get_car_to_objective)
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
// CLEAR_AREA(<< -1308.9067, -215.0462, 50.5497 >>,150.0,true)
initVehicle(vehChopper,POLMAV,<< -1318.8483, -231.4252, 57.5876 >>,-62.3)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,TRUE)
// add_event(EVENTS_CHOPPER_HOVER)
initHeistVehicle(<< -1309.5819, -215.2148, 50.5497 >>, 123.0209)
initped(ped_chad,model_chad,vNull,0.0,vehicle[vehHeist].id,VS_DRIVER,pedrole_enemyUnaware)
STOP_PED_SPEAKING(ped[ped_chad].id,TRUE)
CREATE_CHOPPER_PILOT()
WHILE NOT CREATE_TREVOR(vNull,0,vehicle[vehChopper].id,VS_FRONT_RIGHT)
safewait()
ENDWHILE
GIVE_WEAPON_TO_PED(PLAYER_PED_ID(),WEAPONTYPE_PISTOL,25,true)
SET_PED_COMP_ITEM_CURRENT_SP(ped[ped_trevor].id, COMP_TYPE_PROPS, PROPS_P2_PILOT_HEADPHONES,FALSE)
ACTION(11,ACT_CHAD_EXITS_CAR)
add_event(EVENTS_FILL_CARPARK,STAGE_DRIVE_VEHICLE_TO_OBJECTIVE)
WHILE NOT is_event_complete(EVENTS_FILL_CARPARK)
control_events(EVENTS_FILL_CARPARK)
SAFEWAIT(0)
ENDWHILE
bDisplayBeam = TRUE
iFlag=0
FREEZE_ENTITY_POSITION(vehicle[vehHeist].id,TRUE)
WHILE NOT IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_leaves_car)
ACTION(11,ACT_CHAD_EXITS_CAR)
SAFEWAIT(0)
ENDWHILE
// LOAD_SCENE(<< -1300.4332, -211.6004, 50.6831 >>)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,FALSE)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
endif
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
FREEZE_ENTITY_POSITION(vehicle[vehHeist].id,FALSE)
SET_VEHICLE_DOOR_OPEN(vehicle[vehHeist].id,SC_DOOR_FRONT_LEFT,true,true)
endif
IF IS_SYNCHRONIZED_SCENE_RUNNING(scene_chad_leaves_car)
SET_SYNCHRONIZED_SCENE_PHASE(scene_chad_leaves_car,0.06)
ENDIF
//GIVE_WEAPON_TO_PED(ped[ped_franklin].id,WEAPONTYPE_PISTOL,25,true)
TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD(player_ped_id(),<<-1302.1127, -212.9030, 50.5500>>,<<-1307.9683, -216.9170, 51.9251>>,pedmove_walk,false)
DISABLE_CELLPHONE(FALSE)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
BREAK
case STAGE_DRIVE_VEHICLE_TO_OBJECTIVE //drive heist vehicle to end
//cprintln(debug_trevor3,"a")
IF bIsReplay
START_REPLAY_SETUP(<< -1320.8483, -231.4252, 57.4876 >>,125.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -1320.8483, -231.4252, 57.4876 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),125.4926)
LOAD_SCENE(<< -1320.8483, -231.4252, 57.4876 >>)
SAFEWAIT(1)
ENDIF
//cprintln(debug_trevor3,"a")
FORCE_ASSET_STAGE(ASSETS_STAGE_PREP_CAR_PARK)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<-1284.524292,-212.007370,50.633434>>-<<39.000000,54.750000,14.000000>>,<<-1284.524292,-212.007370,50.633434>>+<<39.000000,54.750000,14.000000>>,false)
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
REQUEST_MODEL(model_pilot)
REQUEST_MODEL(model_chad)
WHILE NOT HAS_MODEL_LOADED(model_pilot)
OR nOT HAS_MODEL_LOADED(model_chad)
SAFEWAIT(0)
ENDWHILE
//cprintln(debug_trevor3,"a")
//vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< -1318.8483, -231.4252, 57.4876 >>,-62.3)
initVehicle(vehChopper,POLMAV,<< -1318.8483, -231.4252, 57.4876 >>,-62.3)
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
WHILE NOT CREATE_TREVOR(vNull,0,vehicle[vehChopper].id,VS_FRONT_RIGHT)
safewait()
ENDWHILE
CREATE_CHOPPER_PILOT()
//delete all peds (except pilot)
//cprintln(debug_trevor3,"a")
//vehicle[vehHeist].id = CREATE_VEHICLE(ztype,<< -1309.1268, -215.1889, 50.5497 >>,125)
initHeistVehicle(<< -1309.1268, -215.1889, 50.5497 >>,125)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,TRUE)
IF NOT IS_PED_INJURED(player_ped_id())
AND IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehHeist].id)
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
//vehicle[vehGolfCart].id = CREATE_VEHICLE(CADDY,<< -1324.5869, -211.3875, 42.4008 >>,305.0)
//cprintln(debug_trevor3,"a")
REQUEST_MODEL(model_chad)
WHILE NOT HAS_MODEL_LOADED(model_chad)
safewait()
ENDWHILE
IF g_numEnemyAlive = 1
CPRINTLN(debug_Trevor3,"replay Chad alive a")
initPedOnFoot(ped_chad,model_chad,<< -1309.1848, -217.6889, 50.5497 >>,328,pedrole_no_ai)
ELSE
CPRINTLN(debug_Trevor3,"replay Chad dead a")
ENDIF
add_event(EVENTS_FILL_CARPARK)
WHILE NOT CREATE_PLAYER_VEHICLE(vehicle[vehFranklin].id, CHAR_FRANKLIN, << -1275.8739, -222.6858, 50.5496 >>,218.0,true,VEHICLE_TYPE_CAR)
OR NOT is_event_complete(EVENTS_FILL_CARPARK)
control_events(EVENTS_FILL_CARPARK)
WAIT(0)
ENDWHILE
//cprintln(debug_trevor3,"a")
PLAY_MUSIC(mus_reload_drive_car_stage,mus_null)
bDisplayBeam = TRUE
iFlag=0
//LOAD_SCENE(<< -1309.1268, -215.1889, 50.5497 >>)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
FREEZE_ENTITY_POSITION(vehicle[vehChopper].id,FALSE)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
DISABLE_CELLPHONE(FALSE)
checkConditions(COND_ZTYPE_STARTS,COND_ZTYPE_ENDS)
FORCE_INSTRUCTION_STATE(0,INS_GET_IN_THE_ZTYPE,TRUE)
FORCE_ACTION_STATE(11,ACT_CHAD_EXITS_CAR)
//cprintln(debug_trevor3,"a")
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
//cprintln(debug_trevor3,"a")
break
CASE STAGE_APPROACH_AIRPORT_GATES
IF bIsReplay
START_REPLAY_SETUP(<<-918.2530, -2698.2292, 12.7509>>, 152.7001 )
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-918.2530, -2698.2292, 12.7509>> )
SET_ENTITY_HEADING(PLAYER_PED_ID(),152.7001)
LOAD_SCENE(<< -918.2530, -2698.2292, 12.7509 >>)
SAFEWAIT(1)
ENDIF
FORCE_ASSET_STAGE(ASSETS_STAGE_RELEASE_CAR_PARK)
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
initHeistVehicle(<<-918.2530, -2698.2292, 12.7509>>, 152.7001)
SET_PED_INTO_VEHICLE(player_ped_id(),vehicle[vehheist].id)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
PLAY_MUSIC(mus_reload_drive_car_stage,mus_null)
DISABLE_CELLPHONE(FALSE)
checkConditions(COND_ZTYPE_STARTS,COND_ZTYPE_ENDS)
FORCE_INSTRUCTION_STATE(0,INS_GET_IN_THE_ZTYPE,TRUE)
// FORCE_INSTRUCTION_STATE(2,INS_WARNING_WANTED_LEVEL)
FORCE_ACTION_STATE(11,ACT_CHAD_EXITS_CAR)
FORCE_ACTION_STATE(1,ACT_FLY_TO_GARAGE)
FORCE_ACTION_STATE(2,ACT_REMOVE_CAR_PARK_ASSETS)
FORCE_ACTION_STATE(8,ACT_REACTS_TO_PLAYER_IN_CAR)
FORCE_ACTION_STATE(9,ACT_CHAD_TRIES_TO_CREEP_AWAY)
FORCE_ACTION_STATE(10,ACT_CHAD_RUNS_OFF)
FORCE_ACTION_STATE(11,ACT_CHAD_EXITS_CAR)
FORCE_ACTION_STATE(14,ACT_CONTROL_CHOPPER)
FORCE_ACTION_STATE(16,ACT_RETURN_CONTROL_TO_PLAYER)
FORCE_DIALOGUE_STATE(7,DIA_FRANKLIN_THREATENS_CHAD)
FORCE_DIALOGUE_STATE(0,DIA_DONT_TAKE_CAR)
FORCE_DIALOGUE_STATE(1,DIA_BEG_TO_LET_GO)
FORCE_DIALOGUE_STATE(2,DIA_FLEE_PANIC)
FORCE_dIALOGUE_STATE(13,DIA_FLEE_PANIC_NOT_HIT)
FORCE_DIALOGUE_STATE(3,DIA_PLAYER_GOT_IN_CAR)
FORCE_DIALOGUE_STATE(8,DIA_CALL_DEVIN)
FORCE_DIALOGUE_STATE(5,DIA_WARNING_COPS)
FORCE_DIALOGUE_STATE(6,DIA_KILLED_CHAD)
FORCE_DIALOGUE_STATE(9,DIA_PLAYER_SHOOTING_CHOPPER)
FORCE_DIALOGUE_STATE(10,DIA_DRIVING_BACK)
FORCE_DIALOGUE_STATE(11,DIA_CRASH_ZTYPE)
FORCE_DIALOGUE_STATE(12,DIA_PLAYER_RUNS_OFF)
SET_CONDITION_STATE(COND_PHONE_CALL_MADE,TRUE)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
BREAK
CASE STAGE_FINAL_CUT
IF bIsReplay
START_REPLAY_SETUP(<< -991.8787, -3006.2463, 12.9449 >>,125.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -991.8787, -3006.2463, 12.9449 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),125.4926)
LOAD_SCENE(<< -991.8787, -3006.2463, 12.9449 >>)
SAFEWAIT(1)
ENDIF
FORCE_ASSET_STAGE(ASSETS_STAGE_FINAL_CUTSCENE)
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
//vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< 515.5120, -1333.8617, 74.3550 >>,95.3)
initHeistVehicle(<< -991.8787, -3006.2463, 12.9449 >>,125)
// WHILE NOT CREATE_NPC_PED_ON_FOOT(pedDevin,CHAR_DEVIN,<<-991.8787, -3006.2463, 12.9449>>,-125.28)
// safewait()
//endwhile
ACTION(3,ACT_SET_UP_DEVIN_LEADIN)
WHILE NOT IS_ACTION_COMPLETE(3,ACT_SET_UP_DEVIN_LEADIN)
ACTION(3,ACT_SET_UP_DEVIN_LEADIN)
safewait(0)
ENDWHILE
DISABLE_CELLPHONE(FALSE)
bDoNotFade = TRUE
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_AIRPORT_AIRSIDE, TRUE)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
BREAK
CASE STAGE_LEAVE_AIRPORT
IF bIsReplay
START_REPLAY_SETUP(<< -991.8787, -3006.2463, 12.9449 >>,15.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<< -991.8787, -3006.2463, 12.9449 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),15.4926)
LOAD_SCENE(<< -991.8787, -3006.2463, 12.9449 >>)
SAFEWAIT(1)
ENDIF
FORCE_ASSET_STAGE(ASSETS_STAGE_FINAL_CUTSCENE)
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
vehicle[vehJet].id = CREATE_VEHICLE(SHAMAL,<<-981.02, -3011.31, 14.55>>,59.25)
SET_VEHICLE_DOORS_LOCKED(vehicle[vehJet].id,VEHICLELOCK_LOCKED)
SET_VEHICLE_LIVERY(vehicle[vehJet].id,1)
vehicle[vehSec1].id = CREATE_VEHICLE(TAILGATER,<<-984.58, -2998.80, 13.58>>,22.68)
vehicle[vehSec2].id = CREATE_VEHICLE(TAILGATER,<<-992.74, -3031.48, 13.58>>,18.53)
vehicle[vehSec3].id = CREATE_VEHICLE(TAILGATER,<<-990.95, -2997.46, 13.56>>,24.38)
WHILE NOT CREATE_NPC_PED_INSIDE_VEHICLE(pedDevin,CHAR_DEVIN,vehicle[vehJet].id,VS_BACK_RIGHT)
OR NOT CREATE_NPC_PED_INSIDE_VEHICLE(ped[ped_cop4].id,CHAR_MOLLY,vehicle[vehJet].id,VS_BACK_LEFT)
wait(0)
ENDWHILE
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin,TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_cop4].id,TRUE)
ped[ped_cop2].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehJet].id,PEDTYPE_MISSION,S_M_Y_DEVINSEC_01,VS_EXTRA_LEFT_2)
ped[ped_cop3].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehJet].id,PEDTYPE_MISSION,S_M_Y_DEVINSEC_01,VS_EXTRA_LEFT_3)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_cop2].id,TRUE)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_cop3].id,TRUE)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_cop2].id)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(ped[ped_cop2].id, INT_TO_ENUM(PED_COMPONENT,11), 0, 0, 0) //(jbib)
SET_PED_DEFAULT_COMPONENT_VARIATION(ped[ped_cop3].id)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,0), 1, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,3), 0, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,4), 0, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(ped[ped_cop3].id, INT_TO_ENUM(PED_COMPONENT,11), 0, 0, 0) //(jbib)
SET_PED_DEFAULT_COMPONENT_VARIATION(pedDevin)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,0), 0, 0, 0) //(head)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,2), 0, 0, 0) //(hair)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,3), 1, 0, 0) //(uppr)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,4), 1, 0, 0) //(lowr)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,5), 0, 0, 0) //(hand)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,6), 0, 0, 0) //(feet)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,7), 0, 0, 0) //(teef)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,8), 0, 0, 0) //(accs)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,9), 0, 0, 0) //(task)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,10), 1, 0, 0) //(decl)
SET_PED_COMPONENT_VARIATION(pedDevin, INT_TO_ENUM(PED_COMPONENT,11), 0, 0, 0) //(jbib)
SET_PED_PROP_INDEX(ped[ped_cop4].id, ANCHOR_EYES, 0, 0)
ped[ped_civ1].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehJet].id,PEDTYPE_MISSION,S_M_M_PILOT_01,VS_DRIVER)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_civ1].id,TRUE)
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_AIRPORT_AIRSIDE, TRUE)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
BREAK
case STAGE_GAME_OVER
IF bIsReplay
START_REPLAY_SETUP(<<-960.0240, -2757.6130, 12.9018>>,56.0)
ELSE
SET_ENTITY_COORDS(PLAYER_PED_ID(),<<-960.0240, -2757.6130, 12.9018>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),56.4926)
LOAD_SCENE(<< -960.0240, -2757.6130, 12.9018 >>)
SAFEWAIT(1)
ENDIF
FORCE_ASSET_STAGE(ASSETS_STAGE_GAME_OVER)
CHANGE_PLAYER(SELECTOR_PED_FRANKLIN)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7)
DISABLE_CELLPHONE(FALSE)
IF bIsReplay
END_REPLAY_SETUP()
ENDIF
break
ENDSWITCH
if not IS_PED_INJURED(PLAYER_PED_ID())
//FREEZE_ENTITY_POSITION(PLAYER_PED_ID(),FALSE)
SET_ENTITY_INVINCIBLE(PLAYER_PED_ID(),FALSE)
ENDIF
WAIT(0)
IF NOT bDoNotFade
do_fade(FALSE)
ENDIF
/*
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(1000)
while not IS_SCREEN_FADED_IN()
WAIT(0)
ENDWHILE
ENDIF
*/
ENDIF
ENDPROC
/*
proc skipCutscene()
if not DOES_ENTITY_EXIST(vehicle[vehChopper].id)
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<< -179.6574, 640.2711, 195.4092 >>,122.3)
START_PLAYBACK_RECORDED_VEHICLE(vehicle[vehChopper].id,21,sVehicleRecordingLibrary)
while not IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehChopper].id)
WAIT(0)
ENDWHILE
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehicle[vehChopper].id,46500)
ELSE
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehChopper].id)
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehicle[vehChopper].id,46500 - GET_TIME_POSITION_IN_RECORDING(vehicle[vehChopper].id))
ENDIF
ENDIF
ENDIF
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
if not DOES_ENTITY_EXIST(ped[ped_trevor].id)
ped[ped_trevor].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehChopper].id,PEDTYPE_MISSION,model_trevor)
ENDIF
if not DOES_ENTITY_EXIST(ped[ped_pilot].id)
CREATE_CHOPPER_PILOT()
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_pilot].id,FALSE)
//ped[ped_pilot].id = CREATE_PED_INSIDE_VEHICLE(vehicle[vehChopper].id,PEDTYPE_MISSION,model_pilot,VS_FRONT_RIGHT)
ENDIF
ENDIF
if DOES_BLIP_EXIST(blipTarget)
REMOVE_BLIP(blipTarget)
ENDIF
if not IS_ENTITY_DEAD(PLAYER_PED_ID())
SET_PED_COORDS_KEEP_VEHICLE(PLAYER_PED_ID(),<< -182.1347, 634.8387, 190.7370 >>)
SET_ENTITY_HEADING(PLAYER_PED_ID(),345)
SET_PLAYER_CONTROL(PLAYER_ID(),true)
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
missionProgress = STAGE_FRANKLIN_AWAITS_TREVOR
iFlag = 0
//END_CUTSCENE(FALSE)
ENDPROC
*/
//RUN_CAM_SPLINE_FROM_PLAYER_TO_CAM
//RUN_CAM_SPLINE_FROM_PLAYER_TO_PED
//SELECTOR_CAM_SHORT_SPLINE
//selector_Cam_Struct hotswapCam
func bool TrevorGetChopper()
ACTION(1,ACT_DO_TREVOR_STAND)
SET_PED_RESET_FLAG(player_ped_id(),PRF_DisableAgitation,TRUE)
SWITCH iFlag
case 0 //get to the front desk
SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_UNARMED, TRUE)
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
SUPPRESS_RESTRICTED_AREA_WANTED_LEVEL(AC_DOWNTOWN_POLICE, TRUE)
add_event(events_create_Franklin_and_car)
add_event(events_waypoint_through_police_dept,STAGE_LEARN_TO_SCAN)
IF GET_CLOCK_HOURS() < 21
AND GET_CLOCK_HOURS() > 4
REQUEST_SCRIPT_AUDIO_BANK("TIME_LAPSE")
iflag = 1001
ELSE
FORCE_ACTION_STATE(1,ACT_DO_TREVOR_STAND,TRUE)
iflag = 2
ENDIF
BREAK
case 1001
if REQUEST_SCRIPT_AUDIO_BANK("TIME_LAPSE")
cs2Timelapse.splineCamera = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cs2Timelapse.splineCamera,<<416.8213, -963.6541, 30.9451>>, <<22.2372, -0.0000, -121.6787>>,5000)
ADD_CAM_SPLINE_NODE(cs2Timelapse.splineCamera,<<417.4168, -964.0216, 31.2312>>, <<22.2372, -0.0000, -121.6787>>,4500)
SET_CAM_FOV(cs2Timelapse.splineCamera,46.25)
SET_CAM_ACTIVE(cs2Timelapse.splineCamera,TRUE)
RENDER_SCRIPT_CAMS(TRUE,FALSE)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-4)
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
iWhooshSound = GET_SOUND_ID()
PLAY_SOUND_FRONTEND(iWhooshSound, "TIME_LAPSE_MASTER")
START_AUDIO_SCENE("TOD_SHIFT_SCENE")
iTrevBlocker = ADD_NAVMESH_BLOCKING_OBJECT(<<418.929260,-969.588623,29.411676>>,<<2.312500,3.437500,1.000000>>,0)
ADD_SCENARIO_BLOCKING_AREA(<<418.929260,-969.588623,29.411676>>-<<2.312500,3.437500,1.000000>>,<<418.929260,-969.588623,29.411676>>+<<2.312500,3.437500,1.000000>>)
CLEAR_AREA_OF_PEDS(<<420.26, -978.76, 28.83>>,15.625)
copScenarioBlocker = ADD_SCENARIO_BLOCKING_AREA(<<417.65, -979.87, 28.43>>-<<16.625000,18.437500,7.875000>>,<<417.65, -979.87, 28.43>>+<<16.625000,18.437500,7.875000>>)
iflag=1
endif
break
CASE 1
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
SET_CURRENT_PED_WEAPON(player_ped_id(),WEAPONTYPE_UNARMED, TRUE)
IF SKIP_TO_TIME_DURING_SPLINE_CAMERA(21, 00, "","", cs2Timelapse)
AND actions[1].flag = 2 //Trevor waiting scenario active
actions[1].flag = 3 //set running of Franklin sitting down anim
STOP_SOUND(iWhooshSound)
STOP_AUDIO_SCENE("TOD_SHIFT_SCENE")
RELEASE_NAMED_SCRIPT_AUDIO_BANK("TIME_LAPSE")
REMOVE_SCENARIO_BLOCKING_AREA(copScenarioBlocker)
SET_ASSET_STAGE(ASSETS_STAGE_AFTER_LEADIN)
iflag=2
ENDIF
BREAK
CASE 2
checkConditions(COND_FAILING,COND_PLAYER_SPOTTED_BY_PILOT) //first condition, last condition
INSTRUCTIONS_ON_ACTION(0,INS_GET_TO_RECEPTION,1,ACT_DO_TREVOR_STAND)
//INSTRUCTIONS(1,INS_FOLLOW_COP,cIF,COND_COP_WALKING_TO_STAIRS,cAND,COND_CUTSCENE_ENDED)
INSTRUCTIONS_ON_DIALOGUE(2,INS_GET_TO_ROOF,0,DIA_CAN_I_HELP)
INSTRUCTIONS_ON_DIALOGUE(3,INS_GET_IN_CHOPPER,5,DIA_PILOT_SEES_PLAYER)
DIALOGUE(0,DIA_CAN_I_HELP)
DIALOGUE(1,DIA_INTEROGATE_COP,cIF,COND_PLAYER_ENTERED_RECEPTION,cANDNOT,COND_PLAYER_ON_ROOF)
// DIALOGUE(1,DIA_COP_WALK_CHAT,cIF,COND_COP_IN_CORRIDOR,cAND,COND_PLAYER_NEARBY,cANDNOT,COND_PLAYER_IN_LOCKER_ROOM,cAND,COND_COP_LEADING_PLAYER)
// DIALOGUE_ON_DIALOGUE(2,DIA_COME_ON,4,DIA_PLAYER_ENTERS_LOCKER_ROOM,cIF,COND_PLAYER_IN_LOCKER_ROOM,cAND,COND_COP_LEADING_PLAYER)
DIALOGUE_ON_ACTION(3,DIA_PLAYER_GETS_IN_CHOPPER,7,ACT_PLAYER_GETS_IN_CHOPPER)
// DIALOGUE(4,DIA_PLAYER_ENTERS_LOCKER_ROOM,cIF,COND_PLAYER_IN_LOCKER_ROOM)
DIALOGUE(5,DIA_PILOT_SEES_PLAYER,cIF,COND_PLAYER_SPOTTED_BY_PILOT,cANDNOT,COND_PLAYER_IN_CHOPPER,cAND,COND_PLAYER_ON_ROOF)
// DIALOGUE(6,DIA_COP_RETURNS_TO_DESK,cIF,COND_PLAYER_RUNS_AHEAD)
// DIALOGUE(7,DIA_RESTART_CONV,cIF,COND_COP_LEADING_PLAYER,cWasTrueNowFalse,COND_PLAYER_IN_LOCKER_ROOM,cAND,COND_COP_LEADING_PLAYER)
DIALOGUE(8,DIA_PLAYER_THREAT_IN_POL_DEPT,cIF,COND_PLAYER_OUT_OF_BOUNDS)
ACTION(0,ACT_SPAWN_COPS) //now loads in lead-in or mission reload stage
ACTION(2,ACT_LOOK_AT_PLAYER_ENTRY,playout_on_trigger,cIF,COND_PLAYER_ENTERED_RECEPTION)
ACTION(3,ACT_POINT_TO_STAITRS)
ACTION(4,ACT_COPS_ALERTED,playout_on_trigger,cIF,COND_COPS_ALERTED_CONDITION)
ACTION(5,ACT_SPAWN_CHOPPER,playout_on_trigger,cIF,COND_CAN_SPAWN_CHOPPER)
ACTION(6,ACT_PED_AT_VENDING_MACHINE_LEAVES)
ACTION(7,ACT_PLAYER_GETS_IN_CHOPPER,playout_on_trigger,cIF,COND_PLAYER_TRYS_TO_ENTER_CHOPPER)
ACTION(8,ACT_PILOT_FLIES_OFF,playout_on_trigger,cIF,COND_TREVOR_TELLS_PILOT_TO_TAKE_OFF,cAND,COND_PLAYER_IN_CHOPPER)
//ACTION(9,ACT_COP_WAITS_FOR_PLAYER,playout_on_cond,cIF,COND_PLAYER_IN_LOCKER_ROOM,cAND,COND_COP_LEADING_PLAYER)
ACTION(10,ACT_LOCK_GUN_ROOM)
ACTION_ON_DIALOGUE(12,ACT_PILOT_LOOKS_AT_TREVOR,5,DIA_PILOT_SEES_PLAYER)
FAIL(FAIL_CHOPPER_DESTROYED)
FAIL(FAIL_PLAYER_HAS_WEAPON_DRAWN_IN_POL_DEPT)
FAIL(FAIL_HAS_WANTED_LEVEL_IN_POLICE_DEPT)
FAIL(FAIL_COP_DIES)
FAIL(FAIL_PLAYER_SHOOTING_NEAR_POLICE_DEPT)
FAIL(FAIL_PLAYER_CREATED_DISTURBANCE_NEAR_POL_DEPT)
FAIL(FAIL_COPS_IN_COMBAT)
FAIL(FAIL_PLAYER_WANDERS_AWAY_FROM_POLICE_DEPT)
FAIL(FAIL_PILOT_FLEW_AWAY)
IF IS_CONDITION_TRUE(COND_TREVOR_TELLS_PILOT_TO_ACTIVATE_SCANNER)
//remove cops and stuff
IF DOES_ENTITY_EXIST(ped[ped_civ1].id) DELETE_PED(ped[ped_civ1].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_civ2].id) DELETE_PED(ped[ped_civ2].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_civ3].id) DELETE_PED(ped[ped_civ3].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_civ4].id) DELETE_PED(ped[ped_civ4].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_civ5].id) DELETE_PED(ped[ped_civ5].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_cop1].id) DELETE_PED(ped[ped_cop1].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_cop2].id) DELETE_PED(ped[ped_cop2].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_cop3].id) DELETE_PED(ped[ped_cop3].id) ENDIF
IF DOES_ENTITY_EXIST(ped[ped_cop4].id) DELETE_PED(ped[ped_cop4].id) ENDIF
IF IS_VALID_INTERIOR(int_police)
UNPIN_INTERIOR(int_police)
ENDIF
SET_WANTED_LEVEL_MULTIPLIER(0.0)
SET_MAX_WANTED_LEVEL(0)
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
return false
endfunc
func bool getInChopper()
checkConditions(COND_START_FRANKLIN,COND_END_FRANKLIN)
ACTION(0,ACT_CLEAR_SWITCH_INSTRUCTIONS)
ACTION(1,ACT_LOAD_STAND_ANIM)
ACTION(2,ACT_BLOCK_CAM_MODE_CHANGE)
dialogue(0,dia_player_doesnt_switch)
INSTRUCTIONS(0,INS_ABANDON_TREVOR,cIF,COND_PLAYER_LEAVING_TREVOR)
SWITCH iFlag
case 0
IF GET_CLOCK_HOURS() < 21
AND GET_CLOCK_HOURS() > 4
if REQUEST_SCRIPT_AUDIO_BANK("TIME_LAPSE")
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
HIDE_HUD_AND_RADAR_THIS_FRAME()
cs2Timelapse.splineCamera = CREATE_CAM("DEFAULT_SPLINE_CAMERA", true)
ADD_CAM_SPLINE_NODE(cs2Timelapse.splineCamera,<<1393.3628, -2052.5813, 65.4054>>, <<2.5107, -0.0000, 51.1167>>,5000)
ADD_CAM_SPLINE_NODE(cs2Timelapse.splineCamera,<<1393.4564, -2052.6563, 68.1460>>, <<2.5107, -0.0000, 51.1167>>,6000)
SET_CAM_FOV(cs2Timelapse.splineCamera,35.9859)
SET_CAM_ACTIVE(cs2Timelapse.splineCamera,TRUE)
RENDER_SCRIPT_CAMS(TRUE,FALSE)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-4)
iWhooshSound = GET_SOUND_ID()
PLAY_SOUND_FRONTEND(iWhooshSound, "TIME_LAPSE_MASTER")
START_AUDIO_SCENE("TOD_SHIFT_SCENE")
REQUEST_MODEL(polmav)
REQUEST_MODEL(model_pilot)
REQUEST_SCALEFORM_MOVIE("heli_cam")
REQUEST_STREAMED_TEXTURE_DICT("helicopterhud")
iflag++
endif
ELSE
FORCE_ACTION_STATE(1,ACT_LOAD_STAND_ANIM,TRUE)
REQUEST_MODEL(polmav)
REQUEST_MODEL(model_pilot)
iflag = 2
ENDIF
break
case 1
SKIP_TO_TIME_DURING_SPLINE_CAMERA(21, 00, "","", cs2Timelapse)
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
IF NOT IS_CAM_INTERPOLATING(cs2Timelapse.splineCamera)
AND actions[1].flag = 2 //Franklin seated anims loaded
actions[1].flag = 3 //set running of Franklin sitting down anim
STOP_SOUND(iWhooshSound)
stop_audio_scene("TOD_SHIFT_SCENE")
RELEASE_NAMED_SCRIPT_AUDIO_BANK("TIME_LAPSE")
iflag=3
ENDIF
break
case 2
IF HAS_MODEL_LOADED(model_pilot)
AND HAS_MODEL_LOADED(polmav)
iflag++
ENDIf
break
case 3
add_event(EVENTS_KEEP_CHAD_SAFE,STAGE_GAME_OVER,true)
//SET_GAMEPLAY_ENTITY_HINT()
//find safe coord to spawn chopper
IF NOT IS_SPHERE_VISIBLE(<<1365.1155, -2147.4495, 85.3603>>,10)
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<<1365.1155, -2147.4495, 75.3603>>,-8.3)
ELIF NOT IS_SPHERE_VISIBLE(<<1289.7468, -2068.5752, 88.1654>>,10)
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<<1289.7468, -2068.5752, 78.1654>>,-93)
ELIF NOT IS_SPHERE_VISIBLE(<<1289.7468, -2068.5752, 88.1654>>,10)
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<<1443.8966, -2067.7009, 78.8426>>,86)
ELSE
vehicle[vehChopper].id = CREATE_VEHICLE(POLMAV,<<1406.2607, -2003.5839, 74.7528>>,158)
ENDIF
SET_VEHICLE_LIVERY(vehicle[vehChopper].id,0)
SET_ENTITY_VELOCITY(vehicle[vehChopper].id,<<0,15,0>>)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehChopper].id,FALSE)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_HELI_BLADES_FULL_SPEED(vehicle[vehChopper].id)
ENDIF
//add_event(events_chopper_at_Start)
CREATE_CHOPPER_PILOT()
SET_VEHICLE_DOORS_LOCKED(vehicle[vehChopper].id,VEHICLELOCK_FORCE_SHUT_DOORS)
SET_PED_COMBAT_ATTRIBUTES(ped[ped_pilot].id,CA_LEAVE_VEHICLES,FALSE)
TASK_HELI_MISSION(ped[ped_pilot].id,vehicle[vehChopper].id,null,null,<<1359.7988, -2074.8599, 74.8290>>,MISSION_GOTO,15,10,-1,0,20)
// CREATE_TREVOR(<< 1376.0630, -2069.8489, 50.9988 >>,340,vehicle[vehChopper].id,VS_FRONT_RIGHT)
TASK_LOOK_AT_ENTITY(player_ped_id(),vehicle[vehChopper].id,10000)
ped[ped_franklin].id = PLAYER_PED_ID()
IF NOT IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
vehicle[vehFranklin].id = GET_PLAYERS_LAST_VEHICLE()
ENDIF
//cprintln(debug_trevor3,"PLayer's last car = ",native_to_int(vehicle[vehFranklin].id))
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
//cprintln(debug_trevor3,"PLayer's last car is driveable")
SET_ENTITY_AS_MISSION_ENTITY(vehicle[vehFranklin].id,TRUE,TRUE) //if player drove in in a random car, do this to ensure it doesn't get cleared up.
ENDIF
SET_PED_CAN_BE_DRAGGED_OUT(ped[ped_pilot].id,FALSE)
IF IS_ACTION_COMPLETE(1,ACT_LOAD_STAND_ANIM)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_GAMEPLAY_ENTITY_HINT(vehicle[vehChopper].id,<<0,0,-7>>,TRUE,6000,5000,5000)
ENDIF
ENDIF
iFlag=4
BREAK
CASE 4
// initVehicle(vehFranklin,BUFFALO,<< 1388.0295, -2067.3911, 50.9981 >>,0)
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF CREATE_PLAYER_PED_INSIDE_VEHICLE(ped[ped_trevor].id,CHAR_TREVOR,vehicle[vehChopper].id,VS_FRONT_RIGHT)
TASK_LOOK_AT_ENTITY(ped[ped_trevor].id,player_ped_id(),60000)
iFlag=5
ENDIF
ENDIF
break
case 5
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_chopper",1,ped[ped_franklin].id,"Franklin",0,ped[ped_Trevor].id,"Trevor")
iflag = 21
ENDIF
BREAK
CASE 21
// IF IS_THIS_CONVERSATION_ROOT_PLAYING("CS2_chopper")
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
iFlag=6
ENDIF
break
case 6
//if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
if get_print_status("CH_INS40") = PRN_NEVER_DISPLAYED
settimerB(0)
PRINT_NOW("CH_INS40",DEFAULT_GOD_TEXT_TIME,1)
ENDIF
SET_SELECTOR_PED_PRIORITY(sSelectorPeds,selector_ped_trevor,SELECTOR_PED_FRANKLIN,SELECTOR_PED_MICHAEL)
bool bForceSwitch
IF timerb() > 10000
bForceSwitch = true
endif
if do_switch(ped[ped_franklin].id,ped[ped_trevor].id,null,SELECTOR_PED_TREVOR,SWITCH_TYPE_SHORT,bForceSwitch)
UPDATE_PLAYER_PED_BLIP_NAME()
SET_PLAYER_CONTROL(PLAYER_ID(),false,SPC_LEAVE_CAMERA_CONTROL_ON)
clear_prints()
IF IS_PED_IN_ANY_VEHICLE(ped[ped_Franklin].id)
vehicle_index aVeh
aVeh = get_Vehicle_ped_is_using(ped[ped_Franklin].id)
IF IS_THIS_MODEL_A_HELI(GET_ENTITY_MODEL(aVeh))
OR IS_THIS_MODEL_A_PLANE(GET_ENTITY_MODEL(aVeh))
IF IS_ENTITY_IN_AIR(aVeh)
SET_ENTITY_COORDS(aVeh,<<1371.3750, -2068.7754, 50.9982>>)
SET_ENTITY_HEADING(aVeh,124)
ENDIF
ENDIF
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_ENTITY_HEALTH(vehicle[vehChopper].id,1000)
ENDIF
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
SET_GAMEPLAY_CAM_RELATIVE_PITCH(-6)
return true
ENDIF
IF switchState = SWITCH_SWAP_PLAYER_PEDS
IF IS_GAMEPLAY_HINT_ACTIVE()
STOP_GAMEPLAY_HINT(true)
ENDIF
ENDIF
// ENDIF
break
/*
case 3
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
return true
ENDIF
BREAK
*/
/*
case 3
IF NOT IS_SCRIPTED_CONVERSATION_ONGOING()
if not IS_ENTITY_DEAD(vehicle[vehChopper].id) and not IS_ENTITY_DEAD(PLAYER_PED_ID())
if not IS_PED_IN_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id)
if not IS_PED_GETTING_INTO_A_VEHICLE(PLAYER_PED_ID())
PRINT_NOW("CH_INS1",6000,1)
ENDIF
ELSE
return TRUE
ENDIF
ENDIF
ENDIF
BREAK
*/
ENDSWITCH
return FALSE
ENDFUNC
func bool learnToScan()
//ped_index pedscanned
//int iTemp
//vector vTemp
//float tx,ty
checkConditions(COND_SCAN_STAGE_START,COND_SCAN_STAGE_END)
DIALOGUE(0,DIA_BOOTING_UP)
DIALOGUE(1,DIA_SCAN_BUDDY_NEARBY,cIFNOT,COND_STARTED_AS_TREVOR,cAND,COND_LEARNT_TO_SCAN)
DIALOGUE_ON_DIALOGUE(2,DIA_CONV_ON_WAY_TO_FRANKLIN,6,DIA_ACTOR_LINE_PLAYS,cIF,COND_STARTED_AS_TREVOR,cAND,COND_FAR_ENOUGH_FROM_FRANKLIN_TO_PLAY_CONVO)
DIALOGUE_ON_DIALOGUE(3,DIA_SCAN_MY_BUDDY,5,DIA_GOING_TO_FIND_BUDDY,cIF,COND_LEARNT_TO_SCAN,cAND,COND_STARTED_AS_TREVOR,cAND,COND_APPROACHING_FRANKLIN)
DIALOGUE(4,DIA_FRANKLIN_SCANNED,cIF,COND_FRANKLIN_SCANNED)
DIALOGUE(5,DIA_GOING_TO_FIND_BUDDY,cIF,COND_STARTED_AS_TREVOR)
DIALOGUE(6,DIA_ACTOR_LINE_PLAYS,cIF,COND_STARTED_AS_TREVOR)
DIALOGUE(7,DIA_FLYING_AWAY,cIF,COND_TOLD_TO_SCAN_FRANKLIN,cAND,COND_OUTSIDE_SAFE_ZONE)
DIALOGUE(8,DIA_WAITING_TO_SCAN,cIF,COND_DIA_SCAN_MY_BUDDY,cANDNOT,COND_FRANKLIN_SCANNED,cANDNOT,COND_FAR_ENOUGH_FROM_FRANKLIN_TO_PLAY_CONVO)
ACTION(0,ACT_TURN_ON_SCANNER,PLAYOUT_ON_TRIGGER,cIF,COND_BOOTING_UP_LINE_PLAYED)
ACTION(1,ACT_MUSIC_SCANNER_ON,PLAYOUT_ON_TRIGGER,cIF,COND_BOOTING_UP_LINE_PLAYED)
ACTION(2,ACT_FRANKLIN_LOOKS_AT_CHOPPER)//,PLAYOUT_ON_COND,cIFNOT,COND_FRANKLIN_SCANNED)
ACTION(3,ACT_FRANKLIN_REACTS_TO_TREVOR_CONVERSATION,PLAYOUT_ON_COND,cIF,COND_FRANKLIN_SCANNED,cANDNOT,COND_DIA_SCANNED_CONVO_FINISHED)
ACTION_ON_DIALOGUE(4,ACT_FRAKNLIN_GETS_IN_CAR,4,DIA_FRANKLIN_SCANNED)
ACTION(5,ACT_SCANNING_AUDIO_SCENE)
//ACTION(6,ACT_LOAD_PATH_NODES)
ACTION(7,ACT_CREATE_PLAYER_CAR)
action(8,ACT_CHANGE_FRANKLIN_LOD_LEVEL_UP)
INSTRUCTIONS(0,INS_TEACH_TO_SCAN,cIF,COND_BOOTING_UP_LINE_PLAYED)
INSTRUCTIONS(1,INS_SCAN_FRANKLIN,cIF,COND_DIA_SCAN_MY_BUDDY)
INSTRUCTIONS(2,INS_SCAN_COMPLETE,cIF,COND_FRANKLIN_SCANNED)
FAIL(FAIL_FLEW_TOO_FAR_AWAY)
IF HAS_DIALOGUE_FINISHED(4,DIA_FRANKLIN_SCANNED)
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_franklin].id)
return true
ENDIF
return FALSE
ENDFUNC
func bool scanFirstArea()
checkConditions(COND_START_SCAN_AREA_1,COND_END_SCAN_AREA_1)
ACTION(0,ACT_STOP_AUDIO_CAR_2_SCAN_FRANKLIN)
ACTION(1,ACT_SCANNING_AUDIO_SCENE)
ACTION(2,ACT_DELETE_FRANKLIN)
action(3,ACT_CHANGE_FRANKLIN_LOD_LEVEL_DOWN,PLAYOUT_ON_TRIGGER,cIF,COND_CHOPPER_IN_VIEWING_RANGE_OF_AREA1)
//ACTION(3,ACT_LOAD_PATH_NODES)
DIALOGUE(0,DIA_TREVOR_COMMENTS_ON_POSTAL,cIF,COND_POSTAL_BEING_OBSERVED,cANDNOT,COND_LISTENING_IN_ON_DIALOGUE,cAND,COND_DIA_COME_IN_FRANKLIN_PLAYED,cAND,COND_CHOPPER_IN_VIEWING_RANGE_OF_AREA1)
DIALOGUE(1,DIA_TREVOR_COMMENTS_ON_PERVERT,cIF,COND_PERVERT_BEING_OBSERVED,cANDNOT,COND_LISTENING_IN_ON_DIALOGUE,cAND,COND_DIA_COME_IN_FRANKLIN_PLAYED,cAND,COND_CHOPPER_IN_VIEWING_RANGE_OF_AREA1)
DIALOGUE(2,DIA_TREVOR_MAKES_SCAN_COMPLETE_COMMENT,cIF,COND_AREA1_PED_JUST_SCANNED)
SWITCH iFlag
CASE 0
if CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_letsGo",0,ped[ped_Trevor].id,"Trevor",2,null,"ChopperPilot")
// destMarker[0] = ADD_HELIHUD_MARKER_FOR_COORD(HUD, << -33.9675, -85.8839, 57.0174 >>,hud.boxColourUnscanned.r,hud.boxColourUnscanned.g,hud.boxColourUnscanned.b,MARKER_BOX)
destMarker[0] = ADD_HELIHUD_MARKER_FOR_COORD(HUD, << -28.7640, -88.8056, 57.2592 >>,hud.boxColourUnscanned.r,hud.boxColourUnscanned.g,hud.boxColourUnscanned.b,MARKER_BOX)
destMarker[1] = ADD_HELIHUD_MARKER_FOR_COORD(HUD, << -7.1245, -29.9020, 69.0970 >>,hud.boxColourUnscanned.r,hud.boxColourUnscanned.g,hud.boxColourUnscanned.b,MARKER_BOX)
destMarker[2] = ADD_HELIHUD_MARKER_FOR_COORD(HUD, << -17.5966, -36.9055, 76.1669 >>,hud.boxColourUnscanned.r,hud.boxColourUnscanned.g,hud.boxColourUnscanned.b,MARKER_BOX)
destMarker[3] = ADD_HELIHUD_MARKER_FOR_COORD(HUD, << -17.8836, -36.5907, 76.3757 >>,hud.boxColourUnscanned.r,hud.boxColourUnscanned.g,hud.boxColourUnscanned.b,MARKER_BOX)
set_chopper_speed_limits(HUD)
add_event(EVENTS_LOAD_FIRST_LOCATION_PEDS)
add_event(EVENTS_QUAD_BLOCKING,STAGE_CHASE_BEGINS)
add_event(EVENTS_SCAN_MUSIC_CHANGE)
iFlag = 1
ENDIF
BREAK
case 1
IF IS_CONV_ROOT_PLAYING("CS2_letsGo")
iFlag = 2
ENDIF
BREAK
CASE 2
if not IS_CONV_ROOT_PLAYING("CS2_letsGo")
PRINT_NOW("CH_INS12",DEFAULT_GOD_TEXT_TIME,1)
iFlag = 3
ENDIF
BREAK
case 3
if not IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CH_INS12")
add_event(EVENTS_CONVERSATION_ON_ROUTE)
iFlag = 9
ENDIF
BREAK
case 9
if is_event_complete(EVENTS_LOAD_FIRST_LOCATION_PEDS)
kill_event(EVENTS_STREAM_ALLEY)
SET_ROADS_IN_ANGLED_AREA(<<-48.346008,-109.031822,82.549194>>, <<195.550781,-197.283768,-38.864712>>, 155.812500,FALSE,FALSE)
//if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
//REMOVE_BLIP(blipTarget)
return true
//ENDIF
ENDIF
break
ENDSWITCH
return FALSE
ENDFUNC
func bool scanThirdArea()
checkConditions(COND_START_SCAN_AREA_3,COND_END_SCAN_AREA_3)
action(0,ACT_RELEASE_AREA_1_ASSETS)
//action(1,ACT_SPAWN_ZTYPE)
action(2,ACT_DOG_BARKS)
ACTION(3,ACT_SCANNING_AUDIO_SCENE)
ACTION(4,ACT_STOP_CAR_2_SCAN_THE_SUSPECTS)
action(5,ACT_GARAGE_OPENING_SOUND,PLAYOUT_ON_TRIGGER,cIF,COND_GARAGE_DOOR_OPENING)
action(6,ACT_TARGET_LOST_SOUND)
DIALOGUE(0,DIA_SEEN_CHAD,cIF,COND_CHAD_WAS_SCANNED)
DIALOGUE(1,DIA_CHAD_HIDDEN,cIF,COND_CHAD_HIDDEN,cANDNOT,COND_CHAD_BY_GARAGES,cAND,COND_CHAD_WAS_SCANNED)
DIALOGUE_ON_DIALOGUE(4,DIA_FRANKLIN_FIND_HIM,3,DIA_CHAD_OFF_SCREEN)
DIALOGUE_ON_DIALOGUE(5,DIA_FOUND_CHAD,3,DIA_CHAD_OFF_SCREEN,cIFNOT,COND_CHAD_OFFSCREEN_FOR_4_SECONDS)
DIALOGUE(2,DIA_CHAD_WALKING_THROUGH_APARTMENTS,cIF,COND_CHAD_WAS_SCANNED,cANDNOT,COND_CHAD_HIDDEN,CAND,COND_CHAD_IN_APARTMENT_LOCATE,cAND,COND_CHAD_ON_SCREEN)
DIALOGUE(3,DIA_CHAD_OFF_SCREEN,cIF,COND_CHAD_OFFSCREEN_FOR_4_SECONDS,cAND,COND_CHAD_WAS_SCANNED)
DIALOGUE_ON_DIALOGUE(6,DIA_TREVOR_BANTER_DURING_CHAD_WALK,0,DIA_SEEN_CHAD,cIFNOT,COND_CHAD_OFFSCREEN_FOR_4_SECONDS)
DIALOGUE(7,DIA_CHAD_AT_GARAGE,cIF,COND_GARAGE_DOOR_OPENING)
DIALOGUE(8,DIA_TREVOR_COMMENTS_ON_PROSTITUTE,cIF,COND_PROSIE_BEING_OBSERVED,cANDNOT,COND_LISTENING_IN_ON_DIALOGUE,cANDNOT,COND_CHAD_WAS_SCANNED)
DIALOGUE(9,DIA_TREVOR_COMMENTS_ON_CHADGIRL,cIF,COND_CHAD_BEING_OBSERVED,cANDNOT,COND_LISTENING_IN_ON_DIALOGUE,cANDNOT,COND_CHAD_WAS_SCANNED)
DIALOGUE(10,DIA_TREVOR_MAKES_SCAN_COMPLETE_COMMENT,cIF,COND_AREA3_PED_JUST_SCANNED)
INSTRUCTIONS_ON_DIALOGUE(0,INS_FOLLOW_CHAD,0,DIA_SEEN_CHAD)
instructions(1,INS_SHOW_HIDDEN_HELP,cIF,COND_CHAD_HIDDEN,cANDNOT,COND_CHAD_BY_GARAGES,cAND,COND_CHAD_WAS_SCANNED)
SWITCH iFlag
case 0
// destMarker[0] = ADD_HELIHUD_MARKER_FOR_COORD(HUD, << 200.3937, -141.4813, 80.8976 >>)
add_event(EVENTS_LOAD_FINAL_LOCATION_PEDS)
//PRINT_NOW("CH_INS12C",6000,1)
iFlag =1
break
case 1
if is_event_complete(EVENTS_LOAD_FINAL_LOCATION_PEDS)
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
fSpeed = GET_ENTITY_SPEED(vehicle[vehChopper].id)
ENDIF
//add_event(events_is_chad_hidden)
KILL_FACE_TO_FACE_CONVERSATION_EXTRA(true)
SET_CONDITION_STATE(COND_CHAD_WAS_SCANNED,TRUE)
iFlag =15
ENDIF
break
case 15
//check ped is on screen when he reaches car
/*if get_print_status("CH_INS13") = PRN_FINISHED
if get_conversation_status("CS2_seeChad2") = PRN_NEVER_DISPLAYED
iFlag=16
ENDIF
ENDIF*/
if not IS_PED_INJURED(ped[ped_chad].id)
if IS_ENTITY_IN_ANGLED_AREA( ped[ped_chad].id, <<191.634933,-195.268723,43.702320>>, <<215.426270,-130.483856,91.142548>>, 31.625000)
//he's heading through appartment blocks
SET_ASSET_STAGE(ASSETS_STAGE_LOAD_ZTYPE)
iFlag=16
ENDIF
ENDIF
BREAK
case 16
if bplayVehRecs = true
SET_ASSET_STAGE(ASSETS_STAGE_RELEASE_AREA_2)
set_event_flag(EVENTS_SPEED_UP_CHOPPER,2)
kill_event(events_scene_chadGirl)
kill_event(events_scene_pimp)
kill_event(events_bum_on_chad_walk)
kill_event(events_dog_walks_by)
return TRUE
ENDIF
break
ENDSWITCH
return FALSE
ENDFUNC
func bool chaseChad()
//SEQUENCE_INDEX seq
action(0,act_block_peds_on_chase_route)
action(1,ACT_AUDIO_SCENE_TRANSITION)
action(2,action_load_audio_scene)
action(3,act_update_target_car_audio_level)
action(4,act_remove_trees)
// SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(0,0)
SWITCH iFlag
CASE 0
HUD.bBlockTargetLost = TRUE
HUD.fTargetHeight = 90
set_chopper_speed_limits(HUD,0,38)
add_event(EVENTS_PRINT_CHADBUST_MESSAGE,STAGE_CARPARK)
add_event(events_chopper_push,STAGE_CARPARK)
add_event(events_change_playback_speed)
add_event(EVENTS_FAIL_CHASE,STAGE_CARPARK)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_ALWAYS_PRERENDER(vehicle[vehFranklin].id,TRUE)
ENDIF
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_VEHICLE_SEAT_FREE(vehicle[vehChopper].id,VS_DRIVER)
SET_PED_INTO_VEHICLE(PLAYER_PED_ID(),vehicle[vehChopper].id,VS_DRIVER)
ENDIf
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_ENTITY_INVINCIBLE(vehicle[vehHeist].id,true)
ENDIF
PRINT_HELP("CH_HLP02")
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
iFlag=200
BREAK
case 200
CONTROL_CHASE_CHATTER()
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehHeist].id)
IF GET_CURRENT_PLAYBACK_FOR_VEHICLE(vehicle[vehHeist].id) = GET_VEHICLE_RECORDING_ID(402, "cs2")
IF GET_TIME_POSITION_IN_RECORDING(vehicle[vehheist].id) >= 43913
add_event(EVENTS_FILL_CARPARK,STAGE_DRIVE_VEHICLE_TO_OBJECTIVE)
iflag=2
endif
endif
endif
endif
break
case 2
CONTROL_CHASE_CHATTER()
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehicle[vehHeist].id)
IF GET_TIME_POSITION_IN_RECORDING(vehicle[vehheist].id) >= 70913
IF HAS_CHAD_BEEN_OBSERVED()
iFlag=6
SETTIMERA(0)
ELSE
SETTIMERA(0)
iFlag=3
ENDIF
PLAY_MUSIC(mus_chad_drives_down_alley,mus_get_car_to_objective)
ENDIF
ENDIF
ENDIF
break
case 3 //chad not seen entering car park
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_tmp16",1,null,"Franklin") //where is he man?
STOP_AUDIO_SCENE("CAR_2_CAR_CHASE_CONTINUED")
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehicle[vehHeist].id)
STOP_AUDIO_SCENE("CAR_2_Z_TYPE_ENGINE_BOOST")
START_AUDIO_SCENE("CAR_2_CAR_ENTERS_GARAGE")
SETTIMERA(0)
iFlag=4
ENDIF
BREAK
CASE 4 //give player five seconds to observe parking garage
IF TIMERA() > 5000
Mission_Failed("CH_F20")
ELSE
IF IS_POINT_VISIBLE(<<-1246.2971, -239.1974, 42.4411>>,50,300)
SETTIMERA(0)
iFlag=5
ENDIF
ENDIF
BREAK
CASE 5
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_cp2b",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
SET_ASSET_STAGE(ASSETS_STAGE_END_CAR_CHASE)
RETURN TRUE
ENDIF
BREAK
case 6 //suspect sighted entering parking garage
IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"CS2_carpark2",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
STOP_AUDIO_SCENE("CAR_2_CAR_CHASE_CONTINUED")
STOP_AUDIO_SCENE("CAR_2_Z_TYPE_ENGINE_BOOST")
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehicle[vehHeist].id)
START_AUDIO_SCENE("CAR_2_CAR_ENTERS_GARAGE")
SET_ASSET_STAGE(ASSETS_STAGE_END_CAR_CHASE)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehFranklin].id)
SET_ENTITY_ALWAYS_PRERENDER(vehicle[vehFranklin].id,FALSE)
ENDIF
RETURN TRUE
ENDIF
break
case 7
// IF CREATE_CONVERSATION_EXTRA(CONVTYPE_GAMEPLAY,"cs2_cp2c",0,ped[ped_trevor].id,"Trevor",1,null,"Franklin")
// RETURN TRUE
// ENDIF
break
ENDSWITCH
return FALSE
ENDFUNC
//vector vChopRot, vChopPos
func bool carPark()
//float sx,sy
checkConditions(COND_CARPARK_STARTS,COND_CAR_PARK_ENDS)
SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME(0,0)
SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
INSTRUCTIONS(0,INS_TURN_ON_THERMAL_VISION,cIF,COND_DIA_THERMAL_VISION)
INSTRUCTIONS(1,INS_ZOOM_IN_ON_FRANKLIN,cIF,COND_DIA_CAN_YOU_SEE_FRANKLIN,cANDNOT,COND_FRANKLIN_OBSERVED_WITH_THERMAL)
INSTRUCTIONS(2,INS_LOOK_FOR_A_HEAT_SOURCES,cIF,COND_DIA_ANY_OTHER_HEAT_SOURCES)
INSTRUCTIONS(3,INS_LOOK_FOR_ANOTHER_HEAT_SOURCES,cIF,COND_WAITING_FOR_NEXT_TARGET)
//INSTRUCTIONS(4,INS_LOOK_FOR_ANOTHER_HEAT_SOURCES,cIF,COND_DIA_FRANKLIN_SEES_FIXING_MAN)
//INSTRUCTIONS(5,INS_SWITCH_TO_FRANKLIN,cIF,COND_DIA_FRANKLIN_SEES_CHAD)
DIALOGUE(0,DIA_TAKE_US_DOWN,cIF,COND_CARPARK_STARTS)
DIALOGUE(1,DIA_TREVOR_SCARED,cIF,COND_CHOPPER_DESCENDING)
DIALOGUE(2,DIA_EXITS_CLEAR,cIF,COND_CHOPPER_AT_CAR_PARK_LEVEL)
DIALOGUE(3,DIA_THERMAL_VISION,cIF,COND_A_LITTLE_AFTER_EXITS_CLEAR_DIA) //CS2_Carpark3
DIALOGUE(4,DIA_TREVOR_REACTION_TO_THERMAL_VISION_ON,cIF,COND_THERMAL_TURNED_ON) //CS2_carpark4
DIALOGUE_ON_DIALOGUE(5,DIA_FRANKLIN_ASKS_IF_PLAYER_CAN_SEE_HIM,4,DIA_TREVOR_REACTION_TO_THERMAL_VISION_ON) //cs2_onme
DIALOGUE(6,DIA_ANY_OTHER_HEAT_SOURCES,cIF,COND_DIA_TREVOR_SEE_FRANKLIN_ENDED) //cs2_looknow
DIALOGUE_Playout(7,DIA_TREVOR_SEES_PISSER,cIF,COND_SEE_WANKER)
DIALOGUE_Playout(8,DIA_TREVOR_SEES_FIXING_MAN,cIF,COND_SEE_FIXING_MAN) //cs2_mana1
DIALOGUE_Playout(9,DIA_TREVOR_SEES_CHAD,cIF,COND_SEE_CHAD) //cs2_manc1
DIALOGUE_Playout(19,DIA_TREVOR_SEES_LEANING_MAN,cIF,COND_SEE_LEANING_MAN)
DIALOGUE_Playout(20,DIA_TREVOR_SEES_PHONE_CAR_MAN,cIF,COND_SEE_PHONE_CAR_MAN)
DIALOGUE_ON_ACTION(10,DIA_FRANKLIN_SEES_PISSER,6,ACT_FRANKLIN_RUNS_TO_PISSER_CAR)
DIALOGUE_ON_ACTION(11,DIA_FRANKLIN_SEES_FIXING_MAN,5,ACT_FRANKLIN_RUNS_TO_BONNET_CAR)
DIALOGUE_ON_ACTION(21,DIA_FRANKLIN_SEES_LEANING_MAN,14,ACT_FRANKLIN_RUNS_TO_LEANING_MAN)
DIALOGUE_ON_ACTION(22,DIA_FRANKLIN_SEES_PHONE_MAN,15,ACT_FRANKLIN_RUNS_TO_PHONE_MAN)
DIALOGUE(12,DIA_FRANKLIN_SEES_ZTYPE,cIF,COND_DIA_FROM_FRANKLIN_SEEING_CHAD)
DIALOGUE(13,DIA_TREVOR_SEE_FRANKLIN,cIF,COND_FRANKLIN_OBSERVED_WITH_THERMAL)
DIALOGUE(14,DIA_OVERHEAR_CAR_FIXER_WITH_SCANNER)
DIALOGUE(15,DIA_OVERHEAR_PISSER_WITH_SCANNER)
DIALOGUE(16,DIA_OVERHEAR_CHAD_WITH_SCANNER)
DIALOGUE(17,DIA_OVERHEAR_CAR_LEANING_GUY)
DIALOGUE(18,DIA_OVERHEAR_CAR_ON_PHONE)
DIALOGUE_ON_DIALOGUE(23,DIA_TREVOR_RANTS_IN_SWITCH,9,DIA_TREVOR_SEES_CHAD) //,cif,COND_SWITCH_BEGUN)
ACTION(0,ACT_CHOPPER_CONTROL,PLAYOUT_ON_TRIGGER,cIF,COND_DIA_TAKE_US_DOWN)
ACTION(1,ACT_CAR_HAS_PISS,PLAYOUT_ON_TRIGGER,cIF,COND_CARPARK_STARTS)
ACTION(2,ACT_CAR_FIXER,PLAYOUT_ON_TRIGGER,cIF,COND_CARPARK_STARTS)
ACTION(3,ACT_FRANKLIN_RUNS_TO_ROOF,PLAYOUT_ON_COND,cIF,COND_FRANKLIN_STOPPED_HIS_CAR,cANDNOT,COND_INVESTIGATING_NEXT_TARGET)
//ACTION(4,ACT_FRANKLIN_WAVES_AT_CHOPPER_CAMERA,PLAYOUT_ON_TRIGGER,cIF,COND_FRANKLIN_HAS_STOPPED_RUNNING,cANDNOT,COND_DIA_LOOK_FOR_MORE_HEAT_PLAYED)
ACTION(4,ACT_STAT_CS2_SCANMAN,PLAYOUT_ON_TRIGGER,cIF,COND_SEE_CHAD)
ACTION_ON_DIALOGUE(5,ACT_FRANKLIN_RUNS_TO_BONNET_CAR,8,DIA_TREVOR_SEES_FIXING_MAN)
ACTION_ON_DIALOGUE(6,ACT_FRANKLIN_RUNS_TO_PISSER_CAR,7,DIA_TREVOR_SEES_PISSER)
//ACTION_ON_DIALOGUE(7,ACT_FRANKLIN_RUNS_TO_CHAD_CAR,9,DIA_TREVOR_SEES_CHAD)
ACTION_ON_DIALOGUE(14,ACT_FRANKLIN_RUNS_TO_LEANING_MAN,19,DIA_TREVOR_SEES_LEANING_MAN)
ACTION_ON_DIALOGUE(15,ACT_FRANKLIN_RUNS_TO_PHONE_MAN,20,DIA_TREVOR_SEES_PHONE_CAR_MAN)
//ACTION_ON_DIALOGUE(8,ACT_FRANKLIN_REACTS_TO_WRONG_CAR,10,DIA_FRANKLIN_SEES_PISSER)
//ACTION_ON_DIALOGUE(9,ACT_FRANKLIN_REACTS_TO_WRONG_CAR,11,DIA_FRANKLIN_SEES_FIXING_MAN)
//ACTION_ON_DIALOGUE(16,ACT_FRANKLIN_REACTS_TO_WRONG_CAR,21,DIA_FRANKLIN_SEES_LEANING_MAN)
//ACTION_ON_DIALOGUE(17,ACT_FRANKLIN_REACTS_TO_WRONG_CAR,22,DIA_FRANKLIN_SEES_PHONE_MAN)
ACTION(10,ACT_CHAD_LOOKS_ABOUT,PLAYOUT_ON_TRIGGER,cIF,COND_CARPARK_STARTS)
ACTION(11,ACT_CHAD_EXITS_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_FRANKLIN_RUNS_TO_CAR)
ACTION(12,ACT_ON_PHONE_IN_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_CARPARK_STARTS)
ACTION(13,ACT_LEANING_ON_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_CARPARK_STARTS)
//ACTION(18,ACT_MAKE_FRANKLIN_WALK_ON_SWITCH)
//ACTION(19,ACT_PREP_SWITCH)
ACTION_ON_DIALOGUE(20,ACT_DO_SWITCH,23,DIA_TREVOR_RANTS_IN_SWITCH)//,PLAYOUT_ON_TRIGGER,cIF,COND_SEE_CHAD,cANDNOT,COND_INVESTIGATING_NEXT_TARGET,cAND,COND_THERMAL_READY,cAND,COND_DIA_LOOK_FOR_MORE_HEAT_PLAYED)
//16
//FAIL(FAIL_PLAYER_HAS_WEAPON_DRAWN_IN_POL_DEPT)
SWITCH iFlag
case 0
SET_ROADS_IN_ANGLED_AREA(<<-48.346008,-109.031822,82.549194>>, <<195.550781,-197.283768,-38.864712>>, 155.812500,FALSE,true)
//set up cars in car park
IF missionProgress != STAGE_SCAN_CARPARK_PEDS
REMOVE_PED_FROM_SCAN_LIST(HUD,ped[ped_chad].id)
add_event(EVENTS_REPOSITION_HEIST_CAR)
createHoverInArea(hud,<< -1157.7358, -312.9930, 170.3401 >>,10.0)
ENDIF
SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_PROPS, PROPS_P2_PILOT_HEADPHONES,FALSE)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_AUDIO_VEHICLE_PRIORITY(vehicle[vehHeist].id,AUDIO_VEHICLE_PRIORITY_NORMAL)
ENDIF
if not IS_PED_INJURED(ped[ped_franklin].id)
SET_ENTITY_LOAD_COLLISION_FLAG(ped[ped_franklin].id,true)
ENDIF
iFlag=4
BREAK
case 4
IF IS_ACTION_COMPLETE(20,ACT_DO_SWITCH)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_ENTITY_HEALTH(vehicle[vehChopper].id,1000)
ENDIF
return true
ENDIF
break
ENDSWITCH
return FALSE
ENDFUNC
func bool getCar()
checkConditions(COND_ZTYPE_STARTS,COND_ZTYPE_ENDS)
INSTRUCTIONS(0,INS_GET_IN_THE_ZTYPE,cIFnot,COND_PLAYER_GOT_IN_CAR)
INSTRUCTIONS(1,INS_DRIVE_TO_AIRPORT,cIF,COND_PLAYER_GOT_IN_CAR)
INSTRUCTIONS(3,INS_DRIVE_TO_DESTINATION,cIF,COND_PROCEED_TO_HANGAR_CONDITIONS_MET)
// INSTRUCTIONS(2,INS_WARNING_WANTED_LEVEL,cIF,COND_CHAD_PLAYER_100m_FROM_CAR_PARK,cANDNOT,COND_CHAD_DEAD,cAND,COND_PLAYER_IN_ZTYPE)
//INSTRUCTIONS(3,INS_DRIVE_IN_TO_GARAGE,cIF,COND_PLAYER_30m_from_garage,cANDNOT,COND_WANTED,CAND,COND_PLAYER_IN_ZTYPE)
DIALOGUE(0,DIA_DONT_TAKE_CAR,cIFNOT,COND_CHAD_INTERRUPTED,cANDNOT,COND_CHAD_RAGDOLL,cANDNOT,COND_GUN_AIMED_AT_CHAD,cANDNOT,COND_CHAD_CAN_RUN)
DIALOGUE(1,DIA_BEG_TO_LET_GO,cIF,COND_GUN_AIMED_AT_CHAD,cOR,COND_CHAD_INTERRUPTED,cANDNOT,COND_CHAD_RAGDOLL,cANDNOT,COND_CHAD_CAN_RUN)
DIALOGUE(2,DIA_FLEE_PANIC,cIF,COND_CHAD_DAMAGED_BY_PLAYER,cAND,COND_CHAD_PLAYER_IN_GARAGE)
DIALOGUE(13,DIA_FLEE_PANIC_NOT_HIT,cIFNOT,COND_CHAD_DAMAGED_BY_PLAYER,cAND,COND_PLAYER_SHOOTING_NEAR_CHAD,CAND,COND_CHAD_PLAYER_IN_GARAGE)
DIALOGUE(3,DIA_PLAYER_GOT_IN_CAR,cIF,COND_PLAYER_GOT_IN_CAR,cANDNOT,COND_CHAD_CAN_RUN)
DIALOGUE(4,DIA_OPEN_GATES,cIF,COND_PLAYER_AT_SECURITY)
DIALOGUE(8,DIA_CALL_DEVIN,cIF,COND_PLAYER_GOT_IN_CAR,cAND,COND_NO_DIALOGUE_FOR_TWO_SECONDS)
DIALOGUE_ON_DIALOGUE(5,DIA_WARNING_COPS,10,DIA_DRIVING_BACK,cIF,COND_CHAD_PLAYER_100m_FROM_CAR_PARK,cANDNOT,COND_CHAD_DEAD,cAND,COND_PLAYER_IN_ZTYPE)
DIALOGUE(6,DIA_KILLED_CHAD,cIF,COND_CHAD_DEAD,cANDNOT,COND_CHAD_PLAYER_100m_FROM_CAR_PARK) //,cAND,COND_NO_DIALOGUE_FOR_TWO_SECONDS)
DIALOGUE(9,DIA_PLAYER_SHOOTING_CHOPPER,cIF,COND_CHOPPER_DAMAGED_BY_PLAYER)
DIALOGUE_ON_DIALOGUE(10,DIA_DRIVING_BACK,8,DIA_CALL_DEVIN)
DIALOGUE_ON_DIALOGUE(11,DIA_CRASH_ZTYPE,10,DIA_DRIVING_BACK,cIF,COND_DAMAGED_ZTYPE)
DIALOGUE(12,DIA_WHERES_THE_CAR,cIF,COND_PLAYER_7M_FROM_CHAD,cANDNOT,COND_PLAYER_IN_ZTYPE,cANDNOT,COND_STOP_FOR_CORRECT)
ACTION(0,ACT_PREP_STAGE)
ACTION(1,ACT_FLY_TO_GARAGE,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_ZTYPE)
ACTION(2,ACT_REMOVE_CAR_PARK_ASSETS,PLAYOUT_ON_TRIGGER,cIF,COND_CHAD_PLAYER_100m_FROM_CAR_PARK)
ACTION(3,ACT_SET_UP_DEVIN_LEADIN,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_300m_from_garage)
ACTION(4,ACT_SPAWN_SECURITY_GUARD,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_200M_FROM_SECURITY)
ACTION_ON_DIALOGUE(5,ACT_OPEN_GATES,4,DIA_OPEN_GATES)
ACTION(7,ACT_LOAD_END_CUTSCENE)
ACTION(8,ACT_REACTS_TO_PLAYER_IN_CAR,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_GOT_IN_CAR,cANDNOT,COND_CHAD_CAN_RUN)
ACTION(9,ACT_CHAD_TRIES_TO_CREEP_AWAY,PLAYOUT_ON_COND,cIF,COND_CHAD_CAN_BACK_OFF,cANDNOT,COND_CHAD_RAGDOLL,cANDNOT,COND_CHAD_CAN_RUN)
ACTION(10,ACT_CHAD_RUNS_OFF,PLAYOUT_ON_TRIGGER,cIF,COND_CHAD_CAN_RUN)
ACTION(11,ACT_CHAD_EXITS_CAR,PLAYOUT_ON_COND,cIFnot,COND_CHAD_INTERRUPTED,cANDNOT,COND_GUN_AIMED_AT_CHAD) //continued from last stage
ACTION(12,ACT_START_AUDIO_CAR_2_DRIVE_BACK_TO_GARAGE)
ACTION(13,ACT_STOP_AUDIO_CAR_2_STEAL_THE_CAR)
ACTION(14,ACT_CONTROL_CHOPPER)
ACTION(15,ACT_STOP_ZTYPE_IN_HANGAR,PLAYOUT_ON_TRIGGER,cIF,COND_PLAYER_IN_ZTYPE,cAND,COND_ZTYPE_IN_CAR_STOP_RANGE,cANDNOT,COND_WANTED)
ACTION(16,ACT_RETURN_CONTROL_TO_PLAYER)
//Set veh density to
FAIL(FAIL_ZTYPE_DAMAGED)
FAIL(FAIL_PLAYER_LEAVES_ZTYPE)
FAIL(FAIL_CHAD_ESCAPES_WITH_ZTYPE)
FAIL(FAIL_ZTYPE_STUCK)
FAIL(FAIL_DEVIN_KILLED)
FAIL(FAIL_DEVIN_SCARED_OFF)
FAIL(FAIL_COPS_AT_DEVIN)
IF missionFailing = FAIL_NULL
IF IS_CONDITION_TRUE(COND_PLAYER_200m_from_garage)
AND NOT IS_CONDITION_TRUE(COND_WANTED)
IF IS_SYNCHRONIZED_SCENE_RUNNING(iDevinSyncSCeneB)
IF GET_SYNCHRONIZED_SCENE_PHASE(iDevinSyncSCeneB) > 0.685
//cprintln(debug_trevor3,"cut started cos Devin sync scene B is done")
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
TRIGGER_MUSIC_EVENT("CAR2_STOP")
RETURN TRUE
ENDIF
endif
ENDIF
if IS_CONDITION_TRUE(COND_DEVIN_WALKING_IN_TO_ZTYPE)
//cprintln(debug_trevor3,"cut started cos Devin walking in to Ztype")
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
TRIGGER_MUSIC_EVENT("CAR2_STOP")
RETURN TRUE
ENDIF
ENDIF
IF IS_CONDITION_TRUE(COND_STOP_FOR_DEVIN)
IF IS_CONDITION_TRUE(COND_ZTYPE_IS_STOPPED)
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
TRIGGER_MUSIC_EVENT("CAR2_STOP")
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//IF IS_ACTION_COMPLETE(15,ACT_STOP_ZTYPE_IN_HANGAR)
// return true
//ENDIF
return false
ENDFUNC
//INTERIOR_INSTANCE_INDEX int_garage
//int iroomkey
func bool final_cutscene()
// ACTION(0,ACT_DEVIN_DRIVES_OFF_ZTYPE)
// ACTION(1,ACT_MAKE_PLAYER_WALK)
SET_PED_DENSITY_MULTIPLIER_THIS_FRAME(0.0)
switch iFlag
case 0
SET_ROADS_IN_ANGLED_AREA(<<514.633423,-1321.991821,25.631521>>, <<502.822418,-1297.020508,37.444073>>, 19.312500,FALSE,FALSE)
SET_ASSET_STAGE(ASSETS_STAGE_FINAL_CUTSCENE)
clear_help_text()
IF NOT HAS_CUTSCENE_LOADED() //this should only call if skipping to this stage
cprintln(debug_trevor3,"RELOAD CUT")
//cprintln(debug_trevor3,"REQUEST CUT B")
REQUEST_CUTSCENE("Car_2_mcs_1")
ENDIf
iFlag=1
BREAK
case 1
IF NOT IS_PED_INJURED(pedDevin)
AND NOT IS_PED_INJURED(ped[ped_cop2].id)
AND NOT IS_PED_INJURED(ped[ped_cop3].id)
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
//cprintln(debug_trevor3,"CUT B")
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Devin",pedDevin)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Franklin", PLAYER_PED_ID())
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Car_2_Security", ped[ped_cop2].id)
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Car_2_Security^1", ped[ped_cop3].id)
ENDIF
ENDIF
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
if IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_ENTITY_INVINCIBLE(vehicle[vehHeist].id,TRUE)
REGISTER_ENTITY_FOR_CUTSCENE(vehicle[vehHeist].id,"Car2_ztype",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY,ztype)
SET_VEHICLE_RADIO_ENABLED(vehicle[vehHeist].id,FALSE)
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehSec3].id)
REGISTER_ENTITY_FOR_CUTSCENE(vehicle[vehSec3].id,"Car_2_Tailgater",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,tailgater)
ENDIF
REGISTER_ENTITY_FOR_CUTSCENE(ped[ped_civ1].id,"Car_2_Pilot",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,S_M_M_PILOT_01)
if IS_VEHICLE_DRIVEABLE(vehicle[vehSec2].id)
REGISTER_ENTITY_FOR_CUTSCENE(vehicle[vehSec2].id,"Car_2_Tailgater^1",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,tailgater)
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehSec1].id)
REGISTER_ENTITY_FOR_CUTSCENE(vehicle[vehSec1].id,"Car_2_Tailgater^2",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,tailgater)
ENDIF
if IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
REGISTER_ENTITY_FOR_CUTSCENE(vehicle[vehJet].id,"Car_2_Shamal",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,shamal)
ENDIF
if not IS_PED_INJURED(ped[ped_cop2].id)
REGISTER_ENTITY_FOR_CUTSCENE(ped[ped_cop2].id,"Car_2_Security",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,S_M_Y_DEVINSEC_01)
endif
if not IS_PED_INJURED(ped[ped_cop3].id)
REGISTER_ENTITY_FOR_CUTSCENE(ped[ped_cop3].id,"Car_2_Security^1",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,S_M_Y_DEVINSEC_01)
endif
if not IS_PED_INJURED(ped[ped_cop4].id)
REGISTER_ENTITY_FOR_CUTSCENE(ped[ped_cop4].id,"Molly",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_MOLLY)
endif
if not IS_PED_INJURED(pedDevin)
//cprintln(debug_trevor3,"CUT C")
REGISTER_ENTITY_FOR_CUTSCENE(pedDevin,"Devin",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,IG_DEVIN)
endif
if not IS_PED_INJURED(ped[ped_trevor].id)
delete_ped(ped[ped_trevor].id)
endif
if not IS_PED_INJURED(ped[ped_pilot].id)
delete_ped(ped[ped_pilot].id)
endif
if IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
DELETE_VEHICLE(vehicle[vehChopper].id)
ENDIF
clear_area(GET_ENTITY_COORDS(PLAYER_PED_ID()),50,TRUE)
kill_event(EVENTS_CHOPPER_TRACKS_FRANKLIN)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
IF IS_GAMEPLAY_HINT_ACTIVE()
STOP_GAMEPLAY_HINT()
ENDIF
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
CLEAR_AREA_OF_PEDS(<< 482.2777, -1315.6163, 29.9710 >>,50.0)
SET_FRONTEND_RADIO_ACTIVE(FALSE)
STOP_AUDIO_SCENE("CAR_2_STEAL_THE_CAR")
iFlag=2
ENDIF
BREAK
case 2
if IS_CUTSCENE_ACTIVE()
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
SET_VEHICLE_TYRE_FIXED(vehicle[vehHeist].id,SC_WHEEL_CAR_FRONT_LEFT)
SET_VEHICLE_TYRE_FIXED(vehicle[vehHeist].id,SC_WHEEL_CAR_FRONT_RIGHT)
SET_VEHICLE_TYRE_FIXED(vehicle[vehHeist].id,SC_WHEEL_CAR_REAR_LEFT)
SET_VEHICLE_TYRE_FIXED(vehicle[vehHeist].id,SC_WHEEL_CAR_REAR_RIGHT)
ENDIF
IF IS_SCREEN_FADED_OUT()
do_fade(FALSE)
ENDIF
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED)
iFlag=3
ENDIF
break
case 3
IF NOT DOES_ENTITY_EXIST(ped[ped_civ1].id)
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Car_2_Pilot"))
ped[ped_civ1].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Car_2_Pilot"))
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car2_ztype",ztype)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehHeist].id)
DELETE_VEHICLE(vehicle[vehHeist].id)
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Devin")
IF NOT IS_PED_INJURED(pedDevin)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_PED_INTO_VEHICLE(pedDevin,vehicle[vehJet].id,VS_BACK_RIGHT)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDevin,TRUE)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Molly")
IF NOT IS_PED_INJURED(ped[ped_cop4].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_PED_INTO_VEHICLE(ped[ped_cop4].id,vehicle[vehJet].id,VS_BACK_LEFT)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_cop4].id,TRUE)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car_2_Security")
IF NOT IS_PED_INJURED(ped[ped_cop2].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_PED_INTO_VEHICLE(ped[ped_cop2].id,vehicle[vehJet].id,VS_EXTRA_LEFT_2)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_cop2].id,TRUE)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car_2_Security^1")
IF NOT IS_PED_INJURED(ped[ped_cop3].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_PED_INTO_VEHICLE(ped[ped_cop3].id,vehicle[vehJet].id,VS_EXTRA_LEFT_3)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_cop3].id,TRUE)
ENDIF
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Car_2_Pilot")
IF NOT IS_PED_INJURED(ped[ped_civ1].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_PED_INTO_VEHICLE(ped[ped_civ1].id,vehicle[vehJet].id,VS_DRIVER)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(ped[ped_civ1].id,TRUE)
ENDIF
ENDIF
ENDIF
IF HAS_CUTSCENE_FINISHED()
REPLAY_STOP_EVENT()
REPLAY_RECORD_BACK_FOR_TIME(0.0, 10.0)
SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE)
REMOVE_CUTSCENE()
SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(),WEAPONTYPE_UNARMED)
SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
SET_FRONTEND_RADIO_ACTIVE(TRUE)
if IS_VEHICLE_DRIVEABLE(vehicle[vehJet].id)
SET_VEHICLE_DOORS_LOCKED(vehicle[vehJet].id,VEHICLELOCK_LOCKED)
SET_VEHICLE_DOORS_SHUT(vehicle[vehJet].id,TRUE)
ENDIF
IF IS_VALID_INTERIOR(intHangar)
UNPIN_INTERIOR(intHangar)
ENDIF
// SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
// SET_GAMEPLAY_CAM_RELATIVE_PITCH(-10)
// IF DOES_ENTITY_EXIST(vehicle[VEH_OBJECTIVE].id)
// DELETE_VEHICLE(vehicle[VEH_OBJECTIVE].id)
// ENDIF
/* //done in cleanup
IF NOT IS_PED_INJURED(ped[ped_Trevor].id)
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
TASK_HELI_MISSION(ped[ped_Trevor].id,vehicle[vehChopper].id,null,null,<< -1372.4413, -738.7798, 177.5559 >>,MISSION_GOTO,20.0,10.0,0.0,150,150)
SET_PED_KEEP_TASK(ped[ped_Trevor].id,TRUE)
ENDIF
ENDIF
*/
RETURN TRUE
//removing creation of Franklin's car due to bug 388809
//IF CREATE_PLAYER_VEHICLE(vehicle[VEH_lamar].id, CHAR_FRANKLIN, << -4.1427, -1446.2357, 29.5720 >>,171)
// return true
//ENDIF
ENDIF
break
ENDSWITCH
/* IF IS_ACTION_COMPLETE(1,ACT_MAKE_PLAYER_WALK)
IF IS_VALID_INTERIOR(intHangar)
UNPIN_INTERIOR(intHangar)
ENDIF
RETURN TRUE
ENDIF*/
return false
ENDFUNC
FUNC BOOL leave_airport
checkConditions(COND_EXIT_AIRPORT_START,COND_EXIT_AIRPORT_END)
ACTION(0,ACT_OPEN_EXIT_GATE)
ACTION(1,ACT_TURN_PLANE_ENGINE_ON)
INSTRUCTIONS(0,INS_EXIT_AIRPORT)
//INSTRUCTIONS(1,INS_RETURN_ZTYPE,cIFNOT,COND_ZTYPE_IN_HANGAR)
FAIL(fail_devins_plane_destroyed)
FAIL(fail_attacked_devins_entourage)
IF IS_INSTRUCTION_COMPLETE(0,INS_EXIT_AIRPORT)
return TRUE
ENDIF
return false
ENDFUNC
PROC advanceStage(enumMissionStage skiptoStage=stage_null)
int i
i = ENUM_TO_INT(missionProgress)
i++
if missionProgress = STAGE_TREVOR_GET_CHOPPER
i++ //skip passed franklin stage
endif
IF skiptoStage = stage_null
missionProgress = INT_TO_ENUM(enumMissionStage,i)
ELSE
missionProgress = skiptoStage
ENDIF
RESET_CONDITIONS()
RESET_ACTIONS(ACT_CHAD_EXITS_CAR)
RESET_INSTRUCTIONS()
RESET_DIALOGUE()
RESET_FAILS()
iFlag = 0
ENDPROC
PROC Mission_Progress()
//Main mission Loop
#IF IS_DEBUG_BUILD
Check_For_Skip()
iMissionProg = ENUM_TO_INT(missionProgress)
#ENDIF
SWITCH missionProgress
CASE STAGE_STARTUP //0
If playAsTrevor = FALSE
missionProgress=STAGE_FRANKLIN_AWAITS_TREVOR
else
SET_ASSET_STAGE(ASSETS_STAGE_POLICE_STATION)
missionProgress=STAGE_TREVOR_GET_CHOPPER
endif
BREAK
CASE STAGE_TREVOR_GET_CHOPPER //1
IF TrevorGetChopper()
advanceStage()
ENDIF
BREAK
CASE STAGE_FRANKLIN_AWAITS_TREVOR //1
if getInChopper()
advanceStage()
ENDIF
BREAK
CASE STAGE_LEARN_TO_SCAN //2
if learnToScan()
advanceStage()
ENDIF
BREAK
CASE STAGE_APPROACH_SCAN_AREA_ONE //3
if scanFirstArea()
advanceStage()
ENDIF
BREAK
CASE STAGE_APPROACH_SCAN_AREA_THREE //4
if scanThirdArea()
advanceStage()
ENDIF
BREAK
CASE STAGE_CHASE_BEGINS //5
if chaseChad()
advanceStage()
ENDIF
BREAK
CASE STAGE_CARPARK
if carPark()
advanceStage(STAGE_TAKE_ZTYPE)
ENDIF
break
CASE STAGE_SCAN_CARPARK_PEDS
if carPark()
advanceStage(STAGE_TAKE_ZTYPE)
ENDIF
break
CASE STAGE_TAKE_ZTYPE
IF getCar()
advanceStage(STAGE_FINAL_CUT)
ENDIF
BREAK
CASE STAGE_APPROACH_AIRPORT_GATES
FALLTHRU
CASE STAGE_DRIVE_VEHICLE_TO_OBJECTIVE //10
if getCar()
advanceStage(STAGE_FINAL_CUT)
ENDIF
BREAK
CASE STAGE_FINAL_CUT
if final_cutscene()
advanceStage()
ENDIF
BREAK
CASE STAGE_LEAVE_AIRPORT
if leave_airport()
advanceStage()
ENDIF
BREAK
/*
CASE STAGE_USE_SEARCHLIGHT //9
if useSearchlight()
advanceStage()
ENDIF
BREAK
*/
/*
CASE STAGE_TAKE_VEHICLE //10
if takeVehicle()
advanceStage()
ENDIF
BREAK
CASE STAGE_DRIVE_VEHICLE_TO_OBJECTIVE //11
if dropOffVehicle()
advanceStage()
ENDIF
BREAK
*/
CASE STAGE_GAME_OVER //12
mission_Passed()
BREAK
ENDSWITCH
IF missionProgress >= STAGE_TAKE_ZTYPE
SET_ALL_SHOPS_TEMPORARILY_UNAVAILABLE(TRUE)
ENDIF
RUN_HELICOPTER_HUD(HUD)
controlCarRecs()
//checkBeam()
bDisplayBeam=bDisplayBeam
// rob - 2123293
IF missionProgress >= STAGE_LEARN_TO_SCAN
AND missionProgress <= STAGE_SCAN_CARPARK_PEDS
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
ENDIF
/*
if bDisplayBeam = TRUE
if not IS_ENTITY_DEAD(vehicle[vehChopper].id)
if DOES_CAM_EXIST(HUD.camChopper)
DISPLAY_BEAM(vehicle[vehChopper].id)//,GET_CAM_ROT(HUD.camChopper))
ELSE
If missionProgress >= STAGE_TAKE_ZTYPE and missionProgress < STAGE_DRIVE_VEHICLE_TO_OBJECTIVE
DISPLAY_BEAM_WITH_ROTATION(vehicle[vehChopper].id,GET_ROTATION_BETWEEN_VECTORS(GET_ENTITY_COORDS(vehicle[vehChopper].id),<< -1279.0254, -222.1808, 56.2743 >>)*<<1.0,1.0,-1.0>>)
ELSE
DISPLAY_BEAM_WITH_ROTATION(vehicle[vehChopper].id,GET_ROTATION_BETWEEN_VECTORS(GET_ENTITY_COORDS(vehicle[vehChopper].id),<< 488.0179, -1314.8793, 28.2556 >>)*<<1.0,1.0,-1.0>>)
ENDIF
ENDIF
ENDIF
ELSE
DISPLAY_BEAM(vehicle[vehChopper].id,FALSE)
ENDIF
*/
#IF IS_DEBUG_BUILD
debugStuff()
#ENDIF
ENDPROC
PROC SET_REPLAY_STAGE()
switch iStoredLastReplay
CASE 0
IF GET_PLAYER_PED_ENUM(player_ped_id()) = CHAR_FRANKLIN
iStoredLastReplay = 1
ELSE
IF missionProgress = STAGE_TREVOR_GET_CHOPPER and IS_ENTITY_IN_ANGLED_AREA( player_ped_id(), <<476.378693,-987.339050,42.320747>>, <<430.220062,-986.779541,47.257648>>, 31.125000) //player on roof
OR missionProgress > STAGE_TREVOR_GET_CHOPPER
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Trevor on roof")
iStoredLastReplay++
ENDIF
ENDIF
BREAK
CASE 1
IF missionProgress >= STAGE_APPROACH_SCAN_AREA_THREE
IF HAS_PED_BEEN_SCANNED(HUD,ped[ped_chad].id)
OR missionProgress > STAGE_APPROACH_SCAN_AREA_THREE
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Follow Chad on foot")
iStoredLastReplay++
ENDIF
ENDIF
BREAK
CASE 2
IF missionProgress >= STAGE_CHASE_BEGINS
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Follow Chad in car")
iStoredLastReplay++
ENDIF
BREAK
CASE 3
IF missionProgress = STAGE_TAKE_ZTYPE
// IF IS_CONDITION_TRUE(COND_PLAYER_IN_ZTYPE)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4,"Franklin gets Z-Type")
IF NOT IS_PED_INJURED(ped[ped_chad].id)
g_numEnemyAlive = 1
CPRINTLN(debug_Trevor3,"Chad alive a")
ELSE
g_numEnemyAlive = 0
CPRINTLN(debug_Trevor3,"Chad dead a")
ENDIF
iStoredLastReplay++
// ENDIF
ELIF missionProgress >= STAGE_DRIVE_VEHICLE_TO_OBJECTIVE
iStoredLastReplay++
ENDIF
BREAK
case 4
if (missionProgress >= STAGE_TAKE_ZTYPE AND IS_CONDITION_TRUE(COND_PLAYER_IN_ZTYPE))
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(5,"Drive Z-type back to garage")
IF NOT IS_PED_INJURED(ped[ped_chad].id)
g_numEnemyAlive = 1
CPRINTLN(debug_Trevor3,"Chad alive b")
ELSE
g_numEnemyAlive = 0
CPRINTLN(debug_Trevor3,"Chad dead b")
ENDIF
iStoredLastReplay++
elif missionProgress > STAGE_DRIVE_VEHICLE_TO_OBJECTIVE
iStoredLastReplay++
ENDIF
BREAK
case 5
if missionProgress >= STAGE_LEAVE_AIRPORT
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(6,"Leave the airport",TRUE)
iStoredLastReplay++
ENDIF
BREAK
ENDSWITCH
ENDPROC
PROC CONTROL_CHOPPER_AUDIO_LEVEL()
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
IF IS_PED_IN_VEHICLE(player_ped_id(),vehicle[vehChopper].id)
SWITCH audio_level_flag
CASE 0
IF IS_HELIHUD_ACTIVE(HUD)
IF START_AUDIO_SCENE("CAR_2_HELI_FILTERING")
audio_level_flag++
ENDIF
ENDIF
BREAK
CASE 1
SET_AUDIO_SCENE_VARIABLE("CAR_2_HELI_FILTERING","HeliFiltering",GET_ENTITY_SPEED(vehicle[vehChopper].id))
BREAK
ENDSWITCH
ELSE
IF audio_level_flag != 99
AND audio_level_flag > 0
STOP_AUDIO_SCENE("CAR_2_HELI_FILTERING")
audio_level_flag = 99
ENDIF
ENDIF
ELSE
IF audio_level_flag != 99
AND audio_level_flag > 0
STOP_AUDIO_SCENE("CAR_2_HELI_FILTERING")
audio_level_flag = 99
ENDIF
ENDIF
ENDPROC
PROC CONTROL_CONVERSATION_SUBTITLES()
IF currentConvType != CONVTYPE_NULL
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
currentConvType = CONVTYPE_NULL
ENDIF
ENDIF
If bLastConvoWithoutSubtitles
IF IS_STRING_NULL_OR_EMPTY(restartRoot)
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
IF IS_SCRIPTED_CONVERSATION_ONGOING()
IF NOT IS_MESSAGE_BEING_DISPLAYED()
restartLine = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
restartRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
restartRoot = ""
if not is_string_void(restartLine)
restartRoot = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
KILL_FACE_TO_FACE_CONVERSATION()
ELSE
bLastConvoWithoutSubtitles = FALSE
restartRoot = ""
restartLine = ""
ENDIF
ENDIF
ENDIF
ELSE
bLastConvoWithoutSubtitles = FALSE
restartRoot = ""
restartLine = ""
ENDIF
ELSE
IF IS_SCRIPTED_CONVERSATION_ONGOING()
IF NOT IS_CONV_ROOT_PLAYING(restartRoot)
bLastConvoWithoutSubtitles = FALSE
restartRoot = ""
restartLine = ""
ENDIF
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(restartRoot)
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE_EXTRA(currentConvType,restartRoot,restartLine,convStore[0].speakerNo,convStore[0].pedIndex,convStore[0].speakerLabel,
convStore[1].speakerNo,convStore[1].pedIndex,convStore[1].speakerLabel,
convStore[2].speakerNo,convStore[2].pedIndex,convStore[2].speakerLabel,
convStore[3].speakerNo,convStore[3].pedIndex,convStore[3].speakerLabel)
restartRoot = ""
restartLine = ""
bLastConvoWithoutSubtitles = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ENDPROC
bool bStatTrackingVehicle
proc stat_tracking()
IF NOT IS_PED_INJURED(ped[ped_chad].id)
bool bInFOV
if not IS_ENTITY_DEAD(ped[ped_chad].id) and not IS_ENTITY_DEAD(HUD.camEntity)
IF IS_ENTITY_ON_SCREEN(ped[ped_chad].id)
float fWidth = TAN(HUD.fFov/2.0) * GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(HUD.camEntity),GET_WORLD_POSITION_OF_ENTITY_BONE(ped[ped_chad].id,0))
if fWidth < HUD.fCheckHUDFocusRange
bInFOV = TRUE
ENDIF
ENDIF
ENDIF
IF bInFOV
IF NOT bStatTrackingVehicle
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(CS2_CHAD_FOCUS_TIME)
bStatTrackingVehicle = TRUE
ENDIF
ELSE
IF bStatTrackingVehicle
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED()
bStatTrackingVehicle = FALSE
ENDIF
ENDIF
ENDIF
endproc
// ==============================================================================
// Script Loop
// ==============================================================================
//int frameCount
SCRIPT
DISABLE_TAXI_HAILING(true)
bPlayersUseHeadsets = TRUE
SET_MISSION_FLAG(TRUE)
//INFORM_MISSION_STATS_OF_MISSION_START_CAR_STEAL_TWO()
IF HAS_FORCE_CLEANUP_OCCURRED()
Mission_Flow_Mission_Force_Cleanup()
Mission_Cleanup(MISSION_STATE_DEATH_ARREST)
ENDIF
INIT_ASSETS()
DISABLE_TAXI_HAILING(TRUE)
SET_SCENARIO_GROUP_ENABLED("MP_POLICE",FALSE)
//BLOCK FRANKLIN START AREA FROM SPAWNING CARS OR PEDS AND STUFF
SET_ROADS_IN_ANGLED_AREA(<<1413.366333,-2037.311035,49.111671>>, <<1345.929077,-2093.547363,57.623245>>, 96.500000,FALSE,FALSE)
ADD_SCENARIO_BLOCKING_AREA(<<1382.831177,-2064.168701,56.185715>>-<<41.250000,44.750000,5.750000>>,<<1382.831177,-2064.168701,56.185715>>+<<41.250000,44.750000,5.750000>>)
SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA(<<1382.831177,-2064.168701,56.185715>>,<<41.250000,44.750000,5.750000>>,FALSE)
SET_PED_NON_CREATION_AREA(<<1382.831177,-2064.168701,56.185715>>-<<41.250000,44.750000,5.750000>>,<<1382.831177,-2064.168701,56.185715>>+<<41.250000,44.750000,5.750000>>)
SET_PED_PATHS_IN_AREA(<<1382.831177,-2064.168701,56.185715>>-<<41.250000,44.750000,5.750000>>,<<1382.831177,-2064.168701,56.185715>>+<<41.250000,44.750000,5.750000>>,FALSE)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BLIMP, TRUE)
SET_WEATHER_TYPE_OVERTIME_PERSIST("EXTRASUNNY",50.0)
SET_MISSION_VEHICLE_GEN_VEHICLE(GET_PLAYERS_LAST_VEHICLE(),<<0,0,0>>,0)
SETUP_PC_CONTROLS()
If Is_Replay_In_Progress()
// Your mission is being replayed
INT myStage = Get_Replay_Mid_Mission_Stage()
//cprintln(debug_Trevor3,"replay stage = ",myStage)
IF g_bShitskipAccepted = TRUE
IF NOT playAsTrevor
IF myStage = 0
myStage = 2
ELSE
myStage++
ENDIF
ELSE
myStage++
ENDIF
//cprintln(debug_Trevor3,"shit skip to stage = ",myStage)
ENDIF
IF not is_ped_injured(player_ped_id())
CLEAR_AREA(GET_ENTITY_COORDS(player_ped_id()),100.0,TRUE)
ENDIF
SWITCH myStage
case 0 //skip to start location
IF playAsTrevor
Check_For_Skip(TRUE,STAGE_TREVOR_GET_CHOPPER,0,TRUE)
ELSE
Check_For_Skip(TRUE,STAGE_FRANKLIN_AWAITS_TREVOR,0,TRUE)
ENDIF
BREAK
case 1 //Trevor on roof of pol dept
Check_For_Skip(TRUE,STAGE_TREVOR_GET_CHOPPER,1,TRUE)
break
case 2 //skip to sitting in chopper
SET_ENTITY_INVINCIBLE(player_ped_id(),TRUE)
bDoReplayToHere = TRUE
Check_For_Skip(TRUE,STAGE_APPROACH_SCAN_AREA_THREE,1,TRUE)
CLEAR_PRINTS()
add_event(EVENTS_LOAD_FINAL_LOCATION_PEDS)
control_events(EVENTS_LOAD_FINAL_LOCATION_PEDS)
kill_event(EVENTS_LOAD_FINAL_LOCATION_PEDS)
WHILE NOT DOES_ENTITY_EXIST(ped[ped_chad].id)
control_events(events_scene_chadGirl)
RUN_HELICOPTER_HUD(HUD)
wait(0)
ENDWHILE
ADD_PED_TO_SCAN_LIST(HUD,ped[ped_chad].id,true,HUD_FOE,true,true,true,true)
ADD_SPECIAL_NAME_CASE_TO_SCAN_LIST(HUD,ped[ped_chad].id,"CH_CHAD",8)
//cprintln(debug_Trevor3,"Add ped to scan list")
KILL_EVENT(events_witness_pimp)
DO_SCREEN_FADE_IN(0)
BREAK
case 3
Check_For_Skip(TRUE,STAGE_CHASE_BEGINS,0,TRUE)
WHILE NOT loadCarRecData()
RUN_HELICOPTER_HUD(HUD)
safewait()
ENDWHILE
BREAK
CASE 4
Check_For_Skip(TRUE,STAGE_TAKE_ZTYPE,0,TRUE)
BREAK
CASE 5
Check_For_Skip(TRUE,STAGE_DRIVE_VEHICLE_TO_OBJECTIVE,0,TRUE)
BREAK
case 6
IF g_bShitskipAccepted = TRUE
Check_For_Skip(TRUE,STAGE_FINAL_CUT,0,TRUE)
ELSE
Check_For_Skip(TRUE,STAGE_LEAVE_AIRPORT,0,TRUE)
ENDIF
break
case 7
Check_For_Skip(TRUE,STAGE_GAME_OVER,0,TRUE)
break
ENDSWITCH
ELIF IS_REPEAT_PLAY_ACTIVE()
If playAsTrevor
Check_For_Skip(TRUE,STAGE_TREVOR_GET_CHOPPER,0,FALSE)
ELSE
Check_For_Skip(TRUE,STAGE_FRANKLIN_AWAITS_TREVOR,0,FALSE)
ENDIF
DO_SCREEN_FADE_IN(1000)
// ELSE
// REQUEST_MODEL(model_pilot)
// WHILE NOT HAS_MODEL_LOADED(model_pilot)
// WAIT(0)
// ENDWHILE
ENDIF
/*
IF IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(500)
ENDIF
*/
iReturnStage = iReturnStage
#IF IS_DEBUG_BUILD
setWidget()
SET_LOCATES_HEADER_WIDGET_GROUP(carStealWidget)
#ENDIF
REQUEST_ADDITIONAL_TEXT("CHHEIST", MISSION_TEXT_SLOT)
WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT)
WAIT(0)
ENDWHILE
add_event(EVENTS_MISSION_FAILS,STAGE_GAME_OVER,TRUE)
//add_event(EVENTS_DEAL_WITH_PLAYER_CAR,STAGE_LEARN_TO_SCAN)
add_event(EVENTS_REMOVE_SCAN_BOXES,STAGE_CARPARK,true)
add_event(events_upside_Down,STAGE_GAME_OVER,TRUE)
add_event(events_set_player_ids,STAGE_GAME_OVER,TRUE)
/*#IF IS_DEBUG_BUILD
widWidgets = START_WIDGET_GROUP("MISSION DEBUG")
STOP_WIDGET_GROUP()
SETUP_SPLINE_CAM_NODE_ARRAY_CHOPPER_TO_FRANKLIN(scsCarsteal2, INT_TO_NATIVE(VEHICLE_INDEX, 0), INT_TO_NATIVE(PED_INDEX, 0))
CREATE_SPLINE_CAM_WIDGETS(scsCarsteal2, "Heli", "Franklin", widWidgets)
CREATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS(widWidgets)
#ENDIF*/
WHILE (TRUE)
// rob - force searchlight off - 1247680
IF IS_VEHICLE_DRIVEABLE(vehicle[vehChopper].id)
SET_VEHICLE_SEARCHLIGHT(vehicle[vehChopper].id, FALSE)
ENDIF
IF NOT IS_HELIHUD_ACTIVE(HUD)
AND missionProgress != STAGE_CARPARK
AND missionProgress != STAGE_SCAN_CARPARK_PEDS
IF SC2_PLAYER_IN_FIRST_PERSON()
bPlayerinFirstPerson = TRUE
//cprintln(debug_trevor3,"Player in first person")
ELSE
bPlayerinFirstPerson = FALSE
//cprintln(debug_trevor3,"Player NOT in first person")
ENDIF
ENDIF
/*#IF IS_DEBUG_BUILD
UPDATE_SPLINE_CAM_WIDGETS(scsCarsteal2)
UPDATE_SWITCH_CAM_SCRIPT_SPECIFIC_WIDGETS()
#ENDIF*/
HANDLE_ASSETS()
loadCarRecData()
Mission_Progress()
control_events()
controlBlips()
displayHelpText()
SET_REPLAY_STAGE()
CHOPPER_LISTENING()
CONTROL_MUSIC()
CONTROL_CONVERSATION_SUBTITLES()
CONTROL_CHOPPER_AUDIO_LEVEL()
stat_tracking()
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("m_EyeInTheSky")
UPDATE_GARAGE_DOOR_STATE()
IF bMissionMustFail
mission_failed(sFairReason)
ENDIF
#IF IS_DEBUG_BUILD
ScriptManagement(carStealWidget)
// Check for Pass
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S))
Mission_Passed()
ENDIF
// Check for Fail
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
Mission_Failed()
ENDIF
#ENDIF
WAIT(0)
ENDWHILE
currentConvType=currentConvType //temp
// Script should never reach here. Always terminate with cleanup function.
ENDSCRIPT
//#ENDIF