Files
gtav-src/script/dev_ng/singleplayer/scripts/missions/Finale/FinaleA.sc
T
2025-09-29 00:52:08 +02:00

5057 lines
174 KiB
Python
Executable File

// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//
// MISSION NAME : FINALE1.sc
// AUTHOR : Ben Barclay
// DESCRIPTION : Franklin has decided to kill Trevor, He confronts him and ends
// up chasing him. Micheal turns up and forces Trevor to crash into
// a Liquid nitrogen storage truck. Trevor is frozen and Micheal and
// smashes trevor with a 2x4. Franklin and Micheal say their
// goodbyes.
//
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//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_audio.sch"
USING "commands_camera.sch"
USING "commands_clock.sch"
USING "commands_debug.sch"
USING "commands_fire.sch"
USING "commands_graphics.sch"
USING "commands_hud.sch"
USING "commands_object.sch"
USING "commands_pad.sch"
USING "commands_ped.sch"
USING "commands_player.sch"
USING "commands_script.sch"
USING "commands_streaming.sch"
USING "commands_task.sch"
USING "commands_vehicle.sch"
USING "commands_interiors.sch"
USING "replay_public.sch"
USING "script_blips.sch"
Using "Locates_public.sch"
Using "select_mission_stage.sch"
USING "model_enums.sch"
USING "script_player.sch"
USING "script_misc.sch"
USING "selector_public.sch"
USING "chase_hint_cam.sch"
USING "cheat_controller_public.sch"
using "mission_stat_public.sch"
using "cutscene_public.sch"
using "completionpercentage_public.sch"
USING "taxi_functions.sch"
using "clearMissionArea.sch"
using "timelapse.sch"
using "asset_management_public.sch"
using "RC_helper_functions.sch"
using "properties_public.sch"
USING "achievement_public.sch"
USING "traffic_default_values.sch"
USING "traffic.sch"
USING "commands_recording.sch"
#IF IS_DEBUG_BUILD
USING "shared_debug.sch"
USING "script_debug.sch"
#ENDIF
//-----------------------------------------------------------------------------------------------------------
// ENUMS
//-----------------------------------------------------------------------------------------------------------
ENUM MPF_MISSION_PED_FLAGS
mpf_michael,
mpf_trevor,
mpf_franklin,
mpf_Scrap,
mpf_sandking,
MPF_NUM_OF_PEDS
ENDENUM
ENUM MVF_MISSION_VEHICLE_FLAGS
mvf_michael_car,
mvf_trevor_truck,
mvf_Frank_car,
mvf_start_car,
mvf_scrap,
mvf_Sandking,
MVF_NUM_OF_VEH
ENDENUM
ENUM MSF_MISSION_STAGE_FLAGS
msf_0_meet,
msf_1_CHASE_TREVOR,
msf_2_Fuel_crash_CS,
msf_3_Ignite_trevor,
msf_4_Goodbyes_CS,
msf_5_Passed,
CST_INT,
CST_MCS_1,
CST_EXT,
MSF_NUM_OF_STAGES
ENDENUM
ENUM MFF_MISSION_FAIL_FLAGS
mff_lost_trevor,
mff_destroyed_veh,
mff_michael_death,
mff_default,
MFF_NUM_OF_FAILS
ENDENUM
Enum STAGE_SWITCHSTATE
STAGESWITCH_IDLE,
STAGESWITCH_REQUESTED,
STAGESWITCH_EXITING,
STAGESWITCH_ENTERING
ENDENUM
//-----------------------------------------------------------------------------------------------------------
// STRUCTS
//-----------------------------------------------------------------------------------------------------------
STRUCT VEHICLE_STRUCT
VEHICLE_INDEX id
BLIP_INDEX blip
endstruct
Struct PEDS_STRUCT
PED_INDEX id
BLIP_INDEX blip
ENDSTRUCT
//-----------------------------------------------------------------------------------------------------------
// CONSTANTS
//-----------------------------------------------------------------------------------------------------------
CONST_INT STAGE_ENTRY 0
CONST_INT STAGE_EXIT -1
CONST_INT NUM_ASSETS_MAX 30 // maximum number of assets that can be loaded
VECTOR vSTART_CAR = <<1342.9705, -2553.8333, 46.1407>>
FLOAT fSTARTCAR = 303.0488
//-----------------------------------------------------------------------------------------------------------
// VARIABLES
//-----------------------------------------------------------------------------------------------------------
INT iRandomChatTimer
BOOL cutsceneRequested //BUG FIX 1408210
BOOL uberRecordingInitialised
BOOL FranksCarMoved
BOOL MikeCalledFranDone
BOOL trevsLightsTurnedOff
BOOL MikesLightsTurnedOff
BOOL rayfireSetToEndState
BOOL IPLsChanged
BOOL streamLoaded
BOOL streamStarted
BOOL FrankTurnToSpeak
BOOL TrevTimeToSpeak
BOOL failTimerSet
BOOL TrevCarImpactTriggered
BOOL PetrolEffectTriggered
BOOL bVideoRecordingDone
//BOOL doneTrevCHat
CAMERA_INDEX SyncSceneCam, SyncSceneTrevCam, EndCreditCam //BUG FIX 1324072
VEHICLE_INDEX MikeShowRoomCar
INT iRayfireStage, rayfireStage
INT ifailMissionTimer
BOOL rayfireBeingSkipped
RAYFIRE_INDEX rfGasTankExplosion, CrashRayfireEvent
int i //game iterator
//========================= TOD =============================
bool bTODstart = false
//========================= structs =============================
VEHICLE_STRUCT Vehs[MVF_NUM_OF_VEH] //holds all of the vehicles for tis level
PEDS_STRUCT peds[MPF_NUM_OF_PEDS] //holds all of the peds for this level
CHASE_HINT_CAM_STRUCT sHintCam
structTimelapse sTimelapse
LOCATES_HEADER_DATA sLocatesData
structPedsForConversation convo_struct
//===================== relationships ========================
REL_GROUP_HASH REL_Michael
REL_GROUP_HASH REL_Trevor
//================================== assets =====================================
BLIP_INDEX blip_objective //blip for mission objective
Camera_index cameraIndex //in game cut scene camera
//Camera_index cameraIndex2 //in game cut scene camera
//SEQUENCE_INDEX seq //used to create AI sequence
string sAnimDict_IG1 = "missfinale_a_ig_1"
string sAnimDict_IG2 = "missfinale_a_ig_2"
string sAnimDict_IG2_Alt = "missfinale_a_ig_2_alt_1"
string sAnim_mike_LOOP = "michael_base_idle_pz"
string sAnim_mike_a = "michael_idle_a_pz"
string sAnim_mike_b = "michael_idle_b_pz"
string sAnim_mike_c = "michael_idle_c_pz"
string sAnim_mike_DRAWS = "michael_base_idle_to_aim_into_pz"
string sAnim_mike_shoots = "michael_gun_Shot_&_trevor_death_reaction_pz"
string sAnim_mike_reacts = "michael_alternate_gun_shot_&_trevor_death_reaction"
string sAnim_mike_FIRE_LOOP = "michael_trevor_death_base_idle_pz"
string sAnim_mike_FIRE_LOOP_ALT = "michael_alternate_trevor_death_base_idle"
//string sAnim_mike_EXP = "michael_gas_tanker_explosion_outro_pz"
string sAnim_mike_EXP_ALT = "michael_alternate_gas_Tanker_explosion_outro"
string sAnim_frank_reacts = "franklin_trevor_death_reaction_po"
string sAnim_frank_shoots = "franklin_alternate_gun_shot_&_trevor_death_reaction"
string sAnim_frank_FIRE_LOOP = "franklin_trevor_death_base_idle_po"
string sAnim_frank_FIRE_LOOP_ALT = "franklin_alternate_trevor_death_base_idle"
//string sAnim_frank_EXP = "franklin_gas_tanker_explosion_outro_po"
string sAnim_frank_EXP_ALT = "franklin_alternate_gas_tanker_explosion_outro"
string sAnim_trev_LOOP = "trevor_base_idle_pt"
string sAnim_trev_A = "trevor_idle_a_pt"
string sAnim_trev_B = "trevor_idle_b_pt"
string sAnim_trev_dies = "trevor_death_reaction_pt"
string sAnim_trev_dead = "trevor_dead_idle_pt"
object_index Weapon_Object
//=========================== heart beat /Ignite ===============================
int iMikeKillTimer
int iHeartBeat = 0
int iIgniteStage = 0
bool bMikeKills = false
bool bFrankAim = false
bool bupdatecam = true
bool bweaponinHand = false
bool bMuz_pistol_effect_played = false
bool bPetrol1 = false
bool bMikeDamage = false
bool btrevorDammage = false
bool SkyEffectStarted
bool endcamStarted
bool creditsStarted
int ipetrolStage
Int SyncSceneIGMike
Int SyncSceneIGTREV
INT SyncSceneIGFRANK
//=========================== Rubber band variables ===============================
INT iRubberTimer = 0 //used for debug on the rubber band sequence
float fplaybackSpeed //used to increase or decrease vehicle recording
float fcurrentplaybackTime = 0.0 //used to assign current playback time
FLOAT fDist
bool bCueFence = false
bool bCueTruck = false
bool bCueSandking = false
//=================================== PTFX ==========================================
//========================== camera stuff ============================
int iCamTimer = 0
int iDelay
//============================= AUDIO / DIALOGUE / PRINTS ============================
bool bmusicTriggerStart = false
bool bdialougeplayed = false
//========================== CS - IG / MCS =================================
bool bcsFrank = false
bool bcsTrev = false
bool bcsTrevCar = false
bool bcsMike = false
bool bcsMikeCar = false
bool bcsgun = false
bool bcscam = false
BOOL bcutsceneLoaded = FALSE
bool bPlaceholder = false
int iSkipTimer
//============================== streaming ==============================
ASSET_MANAGEMENT_DATA sAssetData
CUTSCENE_PED_VARIATION sCutscenePedVariationRegister[MPF_NUM_OF_PEDS]
//----------------
//Stage Management and skip stuff
STAGE_SWITCHSTATE stageswitch //current switching status
INT mission_stage //current stage
INT mission_substage //current substage
INT requestedStage //the mission stage requested by a mission_stage switch
INT iStageTimer //timer used for debug
INT iSkipToStage //the stage to skip to
Bool bDoSkip //trigger the skip
bool bis_zSkip
bool bCarRunning = false
bool bloadscene = true
#if IS_DEBUG_BUILD
MissionStageMenuTextStruct zMenuNames[MSF_NUM_OF_STAGES]
WIDGET_GROUP_ID widget_debug
#endif
// ===========================================================================================================
// Termination
// ===========================================================================================================
proc load_asset_stage(MSF_MISSION_STAGE_FLAGS loadStage)
SWITCH loadStage
CASE msf_0_meet
IF IS_SCREEN_FADED_OUT()
AND NOT Is_Replay_In_Progress()
REQUEST_IPL("DES_tankercrash")
REQUEST_IPL("tankerexp_grp0")
PRINTSTRING("requesting DES_tankercrash and tankerexp_grp0 in load assets screen was faded out")
WHILE NOT IS_IPL_ACTIVE("DES_tankercrash")
OR NOT IS_IPL_ACTIVE("tankerexp_grp0")
PRINTSTRING("waiting for IPL DES_tankercrash and tankerexp_grp0 to activate")
WAIT(0)
ENDWHILE
ENDIF
break
CASE msf_1_CHASE_TREVOR
IF IS_SCREEN_FADED_OUT()
AND NOT Is_Replay_In_Progress()
REQUEST_IPL("DES_tankercrash")
REQUEST_IPL("tankerexp_grp0")
PRINTSTRING("requesting DES_tankercrash and tankerexp_grp0 in load assets screen was faded out")
WHILE NOT IS_IPL_ACTIVE("DES_tankercrash")
OR NOT IS_IPL_ACTIVE("tankerexp_grp0")
PRINTSTRING("waiting for IPL DES_tankercrash and tankerexp_grp0 to activate")
WAIT(0)
ENDWHILE
ENDIF
// Load_Asset_Recording(sAssetData,001,"Finale1")
Load_Asset_Recording(sAssetData,0,"BB_FINALE")
load_Asset_model(sAssetData,scrap)
load_asset_model(sAssetData,S_M_Y_XMECH_02)
Load_Asset_Waypoint(sAssetData,"FINA_TRUCK")
load_Asset_model(sAssetData,SANDKING)
load_asset_model(sAssetData,A_M_M_SALTON_01)
Load_Asset_Waypoint(sAssetData,"FINA_SAND")
BREAK
CASE msf_2_Fuel_crash_CS
IF IS_SCREEN_FADED_OUT()
AND NOT Is_Replay_In_Progress()
REQUEST_IPL("DES_tankercrash")
REQUEST_IPL("tankerexp_grp0")
PRINTSTRING("requesting DES_tankercrash and tankerexp_grp0 in load assets screen was faded out")
WHILE NOT IS_IPL_ACTIVE("DES_tankercrash")
OR NOT IS_IPL_ACTIVE("tankerexp_grp0")
PRINTSTRING("waiting for IPL DES_tankercrash and tankerexp_grp0 to activate")
WAIT(0)
ENDWHILE
ENDIF
// //Load in the IPL's for the tanker.
// REMOVE_IPL("DES_tankerexp")
// REQUEST_IPL("DES_tankercrash")
// REQUEST_IPL("tankerexp_grp0")
Load_Asset_Recording(sAssetData,002,"Finale1")
Load_Asset_Recording(sAssetData,003,"Finale1")
BREAK
CASE msf_3_Ignite_trevor
IF IS_SCREEN_FADED_OUT()
AND NOT Is_Replay_In_Progress()
REQUEST_IPL("DES_tankerexp")
PRINTSTRING("requesting DES_tankerexp in load assets screen was faded out")
WHILE NOT IS_IPL_ACTIVE("DES_tankerexp")
PRINTSTRING("waiting for IPL DES_tankerexp to activate")
WAIT(0)
ENDWHILE
ENDIF
// REMOVE_IPL("DES_tankercrash")
// REMOVE_IPL("tankercrash_grp2")
// REMOVE_IPL("tankerexp_grp0")
// REQUEST_IPL("DES_tankerexp")
// WHILE NOT IS_IPL_ACTIVE("DES_tankerexp")
// PRINTSTRING("waiting for IPL DES_tankerexp to activate")
// WAIT(0)
// ENDWHILE
Load_Asset_AnimDict(sAssetData,sAnimDict_IG1)
Load_Asset_AnimDict(sAssetData,sAnimDict_IG2)
Load_Asset_AnimDict(sAssetData,sAnimDict_IG2_Alt)
break
CASE msf_4_Goodbyes_CS
IF IS_SCREEN_FADED_OUT()
AND NOT Is_Replay_In_Progress()
REQUEST_IPL("tankerexp_grp2")
PRINTSTRING("requesting tankerexp_grp2 in load assets screen was faded out")
WHILE NOT IS_IPL_ACTIVE("tankerexp_grp2")
PRINTSTRING("waiting for IPL tankerexp_grp2 to activate")
WAIT(0)
ENDWHILE
ENDIF
break
CASE msf_5_Passed
break
ENDSWITCH
endproc
// -----------------------------------------------------------------------------------------------------------
// Mission Helpers
// -----------------------------------------------------------------------------------------------------------
func bool isentityalive(entity_index mentity)
if does_entity_exist(mentity)
if is_entity_a_vehicle(mentity)
if is_vehicle_driveable(get_vehicle_index_from_entity_index(mentity))
return true
endif
elif is_entity_a_ped(mentity)
if not is_ped_injured(get_ped_index_from_entity_index(mentity))
return true
endif
endif
endif
return false
endfunc
func ped_index Frank()
return peds[mpf_franklin].id
endfunc
FUNC ped_index MIKE()
return peds[mpf_michael].id
ENDFUNC
FUNC ped_index TREV()
return peds[mpf_trevor].id
ENDFUNC
proc set_mike()
if isentityalive(MIKE())
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(MIKE(),TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(MIKE(),REL_Michael)
SET_PED_ACCURACY(mike(),100)
SET_PED_COMBAT_ATTRIBUTES(mike(),CA_PERFECT_ACCURACY,true)
STOP_PED_SPEAKING(mike(),true)
SET_PED_CONFIG_FLAG(mike(),PCF_DisableExplosionReactions,true)
endif
endproc
proc set_trev()
if isentityalive(TREV())
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(TREV(),TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(TREV(),REL_Trevor)
STOP_PED_SPEAKING(TREV(),true)
SET_PED_CONFIG_FLAG(trev(),PCF_DisableExplosionReactions,true)
endif
endproc
proc set_exit_states(bool bstate)
bcsfrank = bstate
bcstrev = bstate
bcstrevcar = bstate
bcsMike = bstate
bcsMikeCar = bstate
bcsgun = bstate
bcscam = bstate
endproc
Proc SET_CS_OUTFITS_AND_EXITS(PED_INDEX Ignore1 = null)
if ignore1 != MIKE() OR MIKE() = NULL
IF DOES_ENTITY_EXIST(MIKE())
IF NOT IS_PED_INJURED(MIKE())
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("MICHAEL", MIKE(), PLAYER_ZERO)
ENDIF
ELSE
SET_STORED_PLAYER_PED_CUTSCENE_VARIATIONS(CHAR_MICHAEL, "MICHAEL")
SET_CUTSCENE_PED_COMPONENT_VARIATION("MICHAEL", PED_COMP_TORSO, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("MICHAEL", PED_COMP_LEG, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("MICHAEL", PED_COMP_HAND, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("MICHAEL", PED_COMP_FEET, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("MICHAEL", PED_COMP_SPECIAL, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("MICHAEL", PED_COMP_SPECIAL2, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("MICHAEL", PED_COMP_DECL, 0, 0)
ENDIF
endif
if ignore1 != TREV()
IF DOES_ENTITY_EXIST(TREV())
IF NOT IS_PED_INJURED(TREV())
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("TREVOR", TREV(), PLAYER_TWO)
ENDIF
ELSE
SET_STORED_PLAYER_PED_CUTSCENE_VARIATIONS(CHAR_TREVOR, "Trevor")
SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_TORSO, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_LEG, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_HAND, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_FEET, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_SPECIAL2, 0, 0)
SET_CUTSCENE_PED_COMPONENT_VARIATION("Trevor", PED_COMP_DECL, 0, 0)
ENDIF
endif
if IsEntityAlive(FRANK())
and ignore1 != FRANK()
// Register_Ped_Variation_For_Cutscene_From_Ped(sCutscenePedVariationRegister,FRANK(),"FRANKLIN")
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("FRANKLIN", PLAYER_PED_ID(), PLAYER_ONE)
endif
set_exit_states(false)
endproc
proc Display_Placeholder()
if bPlaceholder
#IF IS_DEBUG_BUILD
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5,0.1,"STRING","PLACEHOLDER")
#ENDIF
endif
endproc
// purpose:off radar/ hud / player control
proc prep_start_cutscene(bool bplayercontrol,vector varea,bool brender = true,bool binterp = false,bool bclearprj = true,bool bclearFire = true,int interptime = default_interp_to_from_game,set_player_control_flags controlflag = 0,bool bphoneaway = true)
display_radar(false)
display_hud(false)
set_player_control(player_id(),bplayercontrol,controlflag)
clear_prints()
clear_help()
render_script_cams(brender,binterp,interptime)
if bclearprj
clear_area_of_projectiles(varea,500)
endif
if bclearFire
STOP_FIRE_IN_RANGE(varea,200)
endif
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
SET_VEHICLE_RADIO_ENABLED(GET_VEHICLE_PED_IS_IN(player_ped_id()),false)
endif
if bphoneaway
hang_up_and_put_away_phone()
endif
endproc
// purpose:on radar/ hud / player control
proc prep_stop_cutscene(bool bplayercontrol,bool brender = false,bool binterp = false,int iduration = default_interp_to_from_game, set_player_control_flags controlflag = 0)
display_radar(true)
display_hud(true)
set_player_control(player_id(),bplayercontrol,controlflag)
render_script_cams(brender,binterp,iduration)
if not brender
destroy_all_cams()
endif
if IS_PED_IN_ANY_VEHICLE(player_ped_id())
SET_VEHICLE_RADIO_ENABLED(GET_VEHICLE_PED_IS_IN(player_ped_id()),true)
endif
bPlaceholder = false
endproc
PROC Point_Gameplay_cam_at_coord(float targetHeading)
SET_GAMEPLAY_CAM_RELATIVE_HEADING(targetHeading - GET_ENTITY_HEADING(Player_ped_id()))
endproc
FUNC BOOL IS_DIALOGUE_PLAYING()
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR IS_SCRIPTED_CONVERSATION_ONGOING()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_WEAPON_A_GUN(WEAPON_TYPE eWeapon)
WEAPON_GROUP eWeaponGroup = GET_WEAPONTYPE_GROUP(eWeapon)
IF eWeaponGroup = WEAPONGROUP_PISTOL OR eWeaponGroup = WEAPONGROUP_SMG OR eWeaponGroup = WEAPONGROUP_RIFLE
OR eWeaponGroup = WEAPONGROUP_MG OR eWeaponGroup = WEAPONGROUP_SHOTGUN OR eWeaponGroup = WEAPONGROUP_SNIPER
OR eWeaponGroup = WEAPONGROUP_HEAVY OR eWeaponGroup = WEAPONGROUP_RUBBERGUN
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL Add_Petrol_trail()
vector vPetrolStart
switch ipetrolStage
case 0
// SET_VFX_IGNORE_CAM_DIST_CHECK(TRUE)
vPetrolStart = <<1733.97754, -1626.46741, 111.43042>>
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
wait(0)
ADD_PETROL_DECAL(vPetrolStart,1,20,1)
// SET_VFX_IGNORE_CAM_DIST_CHECK(false)
ipetrolStage++
break
case 1
ipetrolStage = 0
return true
break
endswitch
return false
endfunc
proc clear_players_task_on_control_input(script_task_name task_name)
if get_script_task_status(player_ped_id(), task_name) = performing_task
int left_stick_x
int left_stick_y
int right_stick_x
int right_stick_y
int stick_dead_zone = 28
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
IF NOT IS_LOOK_INVERTED()
right_stick_y *= -1
ENDIF
// invert the vertical
IF (left_stick_y > STICK_DEAD_ZONE)
OR (left_stick_y < (STICK_DEAD_ZONE * -1))
or (left_stick_x > STICK_DEAD_ZONE)
OR (left_stick_x < (STICK_DEAD_ZONE * -1))
//or is_control_pressed(player_control, input_sprint)
clear_ped_tasks(player_ped_id())
endif
endif
endproc
// remove mission text
PROC REMOVE_MISSION_TEXT(BOOL bClearSpeech = TRUE, BOOL bClearGodText = TRUE, BOOL bClearHelpText = TRUE)
IF bClearSpeech
KILL_ANY_CONVERSATION()
ENDIF
IF bClearGodText
IF (NOT IS_DIALOGUE_PLAYING()or GET_PROFILE_SETTING(PROFILE_DISPLAY_SUBTITLES)= 0)
OR bClearSpeech
CLEAR_PRINTS()
ENDIF
CLEAR_REMINDER_MESSAGE()
ENDIF
IF bClearHelpText
CLEAR_HELP()
ENDIF
ENDPROC
FUNC FLOAT GET_AIM_HEADING_FOR_COORD(VECTOR pos)
VECTOR vec_ba
FLOAT aim_heading
vec_ba = pos - get_entity_coords(player_ped_id())
//x rotation
aim_heading = (get_heading_from_vector_2d(vec_ba.x, vec_ba.y) - get_entity_heading(player_ped_id()))
IF aim_heading > 180
aim_heading -= 360
ENDIF
IF aim_heading < -180
aim_heading += 360
ENDIF
RETURN aim_heading
ENDFUNC
FUNC FLOAT GET_AIM_PITCH_FOR_COORD(VECTOR pos)
VECTOR vec_ba
VECTOR direction_vec
vec_ba = POS - get_entity_coords(player_ped_id())
direction_vec = normalise_vector(vec_ba)
RETURN (ATAN2(direction_vec.z, VMAG(<<direction_vec.x, direction_vec.y, 0.0>>)))
ENDFUNC
PROC CONVERGE_VALUE(FLOAT &val, FLOAT fDesiredVal, FLOAT fAmountToConverge, BOOL bAdjustForFramerate = true)
IF val != fDesiredVal
FLOAT fConvergeAmountThisFrame = fAmountToConverge
IF bAdjustForFramerate
fConvergeAmountThisFrame = fConvergeAmountThisFrame +@ fAmountToConverge
ENDIF
IF val - fDesiredVal > fConvergeAmountThisFrame
val -= fConvergeAmountThisFrame
ELIF val - fDesiredVal < -fConvergeAmountThisFrame
val += fConvergeAmountThisFrame
ELSE
val = fDesiredVal
ENDIF
ENDIF
ENDPROC
PROC Rubber_banding(float &fcurrentspeed,VEHICLE_INDEX &vehFranklin,Vehicle_index &vehTrevor)
IF IS_VEHICLE_DRIVEABLE(vehFranklin)
AND IS_VEHICLE_DRIVEABLE(vehTrevor)
vector vpos_Franklin = GET_ENTITY_COORDS(vehFranklin)
vector vpos_Trevor = GET_ENTITY_COORDS(vehTrevor)
//Rubber banding
fDist = VDIST(vpos_Franklin, vpos_Trevor)
FLOAT fTouchingDist = 4.5
FLOAT fIdealDist = 10.0
FLOAT fMaxDist = 50.0
FLOAT fSuperMaxDist = 100.0
FLOAT fDesiredPlaybackSpeed = 1.0
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehTrevor)
fcurrentplaybackTime = GET_TIME_POSITION_IN_RECORDING(vehTrevor)
//VECTOR vOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehTrevor, vpos_Franklin)
//At start keep them closer together
IF fCurrentPlaybackTime < 9500
fIdealDist = 12.0
fMaxDist = 57.0
fSuperMaxDist = 100.0
ENDIF
//fast straight
IF fCurrentPlaybackTime > 9500 and fcurrentplaybackTime < 17059
fIdealDist = 20.0
fMaxDist = 46.0
fSuperMaxDist = 100.0
ENDIF
//hard U turn
IF fCurrentPlaybackTime > 17059 and fcurrentplaybackTime < 30889
fIdealDist = 32
fMaxDist = 64.25
fSuperMaxDist = 157.0
ENDIF
// Up the hill
IF fCurrentPlaybackTime > 30889 and fcurrentplaybackTime < 43276
fIdealDist = 37.0
fMaxDist = 75
fSuperMaxDist = 200.0
ENDIF
// right turn around towards crash
IF fCurrentPlaybackTime > 43276 and fcurrentplaybackTime < 58586
fIdealDist = 46.75
fMaxDist = 93.5
fSuperMaxDist = 274
ENDIF
IF fCurrentPlaybackTime > 58586 and fcurrentplaybackTime < 66306
fIdealDist = 40
fMaxDist = 55
fSuperMaxDist = 120
ENDIF
IF fCurrentPlaybackTime > 66306
fIdealDist = 30.0
fMaxDist = 45.0
fSuperMaxDist = 60
ENDIF
FLOAT fDistRatio = 0.0
VECTOR vOffset = GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS(vehTrevor, vpos_Franklin)
IF vOffset.y < 1.0
//Player is behind
IF fDist > fMaxDist
//Player is a long way behind, slow the trigger car down by a lot (if not on screen).
BOOL bInsanelyFarBehind = FALSE
IF fDist > fSuperMaxDist
IF fDist > 200.0
bInsanelyFarBehind = TRUE
ENDIF
fDist = fSuperMaxDist
ENDIF
fDistRatio = ((fDist - fMaxDist) / (fSuperMaxDist - fMaxDist))
IF IS_ENTITY_ON_SCREEN(vehTrevor) AND NOT bInsanelyFarBehind
fDesiredPlaybackSpeed = 0.7 - (0.2 * fDistRatio)
ELSE
fDesiredPlaybackSpeed = 0.5 - (0.3 * fDistRatio)
ENDIF
ELIF fDist > fIdealDist
//Player is somewhat behind, slow the trigger car down relative to how far behind the player is.
fDistRatio = ((fDist - fIdealDist) / (fMaxDist - fIdealDist))
fDesiredPlaybackSpeed = 1.0 - (0.3 * fDistRatio)
ELSE
//Player is getting too close, speed up the trigger car relative to how close the player is.
IF fDist < fTouchingDist
fDist = fTouchingDist
ENDIF
fDistRatio = (fIdealDist - fDist) / (fIdealDist - fTouchingDist)
IF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID())
fDesiredPlaybackSpeed = 1.0 + (fDistRatio * 2.0)
ELSE
fDesiredPlaybackSpeed = 1.0 + (fDistRatio)
ENDIF
ENDIF
ELSE
//Player is in front, speed up trigger car by a lot.
IF fDist > fSuperMaxDist
fDist = fSuperMaxDist
ENDIF
fDistRatio = fDist / fSuperMaxDist
IF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID())
fDesiredPlaybackSpeed = 2.25 + fDistRatio
ELSE
fDesiredPlaybackSpeed = 1.0 + fDistRatio
ENDIF
ENDIF
if (GET_GAME_TIMER() - irubberTimer) > 1000
irubberTimer = GET_GAME_TIMER()
PRINTLN("curent plaback time: ",fCurrentPlaybackTime," Distance: ",fDist," current playback speed: ",fDesiredPlaybackSpeed," Y = ",vOffset.y)
ENDIF
IF fCurrentPlaybackTime < 500
CONVERGE_VALUE(fCurrentSpeed,1.00,1)
else
if fDesiredPlaybackSpeed <= 0.4
fDesiredPlaybackSpeed = 0.4
endif
CONVERGE_VALUE(fCurrentSpeed, fDesiredPlaybackSpeed, 0.02)
endif
endif
endif
ENDPROC
/// PURPOSE: Checks if previous car is not franklins default place that.
/// Otherwise run CREATE_PLAYER_VEHICLE for franklins default car
/// PARAMS: pos, heading
/// RETURNS: True once car has been placed *CALL EVERY FRAME*
///
func bool Check_Franklins_Car(vector pos, float heading)
//check
if IS_REPLAY_CHECKPOINT_VEHICLE_AVAILABLE()
//Check if it's a bicycle for bug 1849886 and any other vehicle that would screw the mission bug 1928744
IF NOT IS_THIS_MODEL_A_BICYCLE(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
AND NOT IS_THIS_MODEL_A_PLANE(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
AND NOT IS_THIS_MODEL_A_BICYCLE(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
AND NOT IS_THIS_MODEL_A_HELI(GET_REPLAY_CHECKPOINT_VEHICLE_MODEL())
REQUEST_REPLAY_CHECKPOINT_VEHICLE_MODEL()
while not HAS_REPLAY_CHECKPOINT_VEHICLE_LOADED()
wait(0)
endwhile
vehs[mvf_Frank_car].id = CREATE_REPLAY_CHECKPOINT_VEHICLE(pos,heading)
return true
ELSE
if not CREATE_PLAYER_VEHICLE(vehs[mvf_Frank_car].id,char_Franklin,pos, heading,true,VEHICLE_TYPE_CAR)
return false
else
return true
endif
ENDIF
else
if not CREATE_PLAYER_VEHICLE(vehs[mvf_Frank_car].id,char_Franklin,pos, heading,true,VEHICLE_TYPE_CAR)
return false
else
return true
endif
endif
endfunc
FUNC BOOL Set_Current_Player_Ped(SELECTOR_SLOTS_ENUM pedChar, BOOL bWait = FALSE, BOOL bCleanUpModel = TRUE)
IF bWait
WHILE NOT SET_CURRENT_SELECTOR_PED(pedChar, bCleanUpModel)
WAIT(0)
ENDWHILE
ELSE
IF NOT SET_CURRENT_SELECTOR_PED(pedChar, bCleanUpModel)
RETURN FALSE
ENDIF
ENDIF
// Additional stuff to set up ped for use in mission
SWITCH pedChar
CASE SELECTOR_PED_MICHAEL
peds[mpf_michael].id = PLAYER_PED_ID()
BREAK
CASE SELECTOR_PED_FRANKLIN
peds[mpf_franklin].id = PLAYER_PED_ID()
BREAK
CASE SELECTOR_PED_TREVOR
peds[mpf_trevor].id = PLAYER_PED_ID()
BREAK
ENDSWITCH
RETURN TRUE
ENDFUNC
PROC GET_SKIP_STAGE_COORD_AND_HEADING(MSF_MISSION_STAGE_FLAGS eStage, VECTOR &vCoord, FLOAT &fHeading)
SWITCH eStage
CASE msf_0_meet vCoord = <<1337.35913, -2550.00562, 46.16376 >> fHeading = -101.35 BREAK
CASE msf_1_CHASE_TREVOR vCoord = <<1337.35913, -2550.00562, 46.16376 >> fHeading = -101.35 BREAK
CASE msf_2_Fuel_crash_CS vCoord = << 1739.8234, -1556.4989, 112.2425 >> fHeading = 197.39 BREAK
CASE msf_3_Ignite_trevor vCoord = << 1731.5767, -1615.9362, 112.4401 >> fHeading = -154.56 BREAK
CASE msf_4_Goodbyes_CS vCoord = <<1731.36157, -1616.12720, 111.4371 >> fHeading = -154.56 BREAK
CASE msf_5_passed vCoord = <<1670.57230, -1742.90110, 111.2739 >> fHeading = 59.94 BREAK
ENDSWITCH
ENDPROC
proc SU_GENERAL()
set_trev()
set_mike()
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(Player_ped_id(),true)
endproc
proc SU_MSF_0_MEET()
peds[mpf_franklin].id = player_ped_id()
if IS_REPLAY_IN_PROGRESS()
SET_CLOCK_TIME(19,45,00)
//trev
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_truck].id,CHAR_TREVOR,<< 1374.2235, -2531.8555, 48.2458 >>, 317.3613)
wait(0)
endwhile
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_trevor].id,CHAR_TREVOR,vehs[mvf_trevor_truck].id)
wait(0)
endwhile
while not Check_Franklins_Car(vSTART_CAR,fSTARTCAR)
wait(0)
endwhile
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
ENDIF
endif
endproc
proc su_msf_1_CHASE_TREVOR()
peds[mpf_franklin].id = player_ped_id()
//create trevor
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_truck].id,CHAR_TREVOR,<< 1374.2235, -2531.8555, 48.2458 >>, 317.3613)
wait(0)
endwhile
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_trevor].id,CHAR_TREVOR,vehs[mvf_trevor_truck].id)
wait(0)
endwhile
SET_ENTITY_INVINCIBLE(vehs[mvf_trevor_truck].id,true)
SET_ENTITY_INVINCIBLE(peds[mpf_trevor].id,true)
//create Franklins car
while not Check_Franklins_Car(<< 1361.9222, -2538.0073, 46.9311 >>, 318.1483)
wait(0)
endwhile
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP(vehs[mvf_Frank_car].id)
Else
SET_PED_INTO_VEHICLE(Frank(),vehs[mvf_Frank_car].id)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
endif
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Frank_car].id)
SET_VEHICLE_ENGINE_ON(vehs[mvf_Frank_car].id,true,true)
ENDIF
ENDIF
if IS_PED_ON_ANY_BIKE(player_ped_id())
GIVE_PED_HELMET(PLAYER_PED_ID(),false)
endif
bCarRunning = true
TRIGGER_MUSIC_EVENT("FINA_RESTART_CHASE")
endproc
proc su_msf_2_Fuel_crash_CS()
REMOVE_CUTSCENE()
peds[mpf_franklin].id = player_ped_id()
//set up Franklin
while not Check_Franklins_Car(<< 1728.3752, -1610.3052, 111.4705 >>,160.3058)
wait(0)
endwhile
//set up Trevor
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_truck].id,CHAR_TREVOR,<< 1739.8234, -1556.4989, 112.2425 >>, 317.3613)
wait(0)
endwhile
while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_trevor].id,CHAR_TREVOR,vehs[mvf_trevor_truck].id)
wait(0)
endwhile
//set up Michael
while not CREATE_PLAYER_VEHICLE(vehs[mvf_michael_car].id,CHAR_MICHAEL,<< 1647.7448, -1646.3500, 111.2280 >>, 269.6557,true,VEHICLE_TYPE_CAR)
wait(0)
endwhile
// while not CREATE_PLAYER_PED_INSIDE_VEHICLE(peds[mpf_michael].id,CHAR_MICHAEL,vehs[mvf_michael_car].id)
// wait(0)
// endwhile
REQUEST_CUTSCENE("FIN_A_MCS_1")//("FIN_A_MCS_1_alt1")
SET_CS_OUTFITS_AND_EXITS()
PRINTSTRING("FIN_A_MCS_1 CUTSCENE REQUESTED FOR SKIP") PRINTNL()
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP(vehs[mvf_Frank_car].id)
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
ENDIF
TRIGGER_MUSIC_EVENT("FINA_RESTART_CHASE")
endproc
proc su_msf_3_Ignite_trevor()
peds[mpf_franklin].id = player_ped_id()
//set up Franklin
while not Check_Franklins_Car(<< 1728.3752, -1610.3052, 111.4705 >>,160.3058)
wait(0)
endwhile
//set up michael
while not CREATE_PLAYER_PED_ON_FOOT(peds[mpf_michael].id,CHAR_MICHAEL,<< 1731.66162, -1615.98877, 111.43713>>,-162.95)
wait(0)
endwhile
while not CREATE_PLAYER_VEHICLE(vehs[mvf_michael_car].id,CHAR_MICHAEL,<<1728.2063, -1623.8717, 111.4329>>, 269.6653,true,VEHICLE_TYPE_CAR)
wait(0)
endwhile
//set up Trevor
while not CREATE_PLAYER_PED_ON_FOOT(peds[mpf_trevor].id,CHAR_TREVOR,<<1731.381,-1620.509,111.428>>,-57)
wait(0)
endwhile
while not CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_truck].id,CHAR_TREVOR,<<1732.2578, -1626.3915, 111.4349>>, 216.9961)
wait(0)
endwhile
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
ENDIF
// while not Add_Petrol_trail()
// wait(0)
// endwhile
TRIGGER_MUSIC_EVENT("FINA_KILL_RESTART")
endproc
proc su_msf_4_Goodbyes_CS()
SET_CLOCK_TIME(20,45,00)
CANCEL_MUSIC_EVENT("FINA_CHASE")
//frank
peds[mpf_franklin].id = player_ped_id()
while not Check_Franklins_Car(<< 1663.7246, -1732.3535, 111.2844 >>,18.3814)
wait(0)
endwhile
//mike
while not CREATE_PLAYER_PED_ON_FOOT(peds[mpf_michael].id,CHAR_MICHAEL,<< 1731.36, -1621.64, 111.43 >>,188.9595)
wait(0)
endwhile
REQUEST_CUTSCENE("fin_a_ext")
SET_CS_OUTFITS_AND_EXITS()
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
ENDIF
endproc
PROC su_passed()
IF IS_REPLAY_BEING_SET_UP()
END_REPLAY_SETUP()
Else
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), False)
ENDIF
endproc
// -----------------------------------------------------------------------------------------------------------
// Mission Cleanup
// -----------------------------------------------------------------------------------------------------------
PROC MISSION_CLEANUP()
TRIGGER_MUSIC_EVENT("FINA_FAIL")
IF IS_CUTSCENE_ACTIVE()
STOP_CUTSCENE_IMMEDIATELY()
REMOVE_CUTSCENE()
ENDIF
//Make sure new load scene is stopped in clean up. To stop game crashing when using repeat play.
NEW_LOAD_SCENE_STOP()
//Set this back to default
SET_PLAYER_PED_DATA_IN_CUTSCENES()
//==============PEDS==============
if not IS_PED_INJURED(player_ped_id())
CLEAR_PED_TASKS(player_ped_id())
endif
for i = 0 TO Enum_to_int(MPF_NUM_OF_PEDS)-1
if DOES_ENTITY_EXIST(peds[i].id)
AND (NOT IS_PED_INJURED(peds[i].id))
if peds[i].id != PLAYER_PED_ID()
SAFE_RELEASE_PED(peds[i].id)
endif
if DOES_BLIP_EXIST(peds[i].blip)
REMOVE_BLIP(peds[i].blip)
endif
endif
endfor
//================================
//==============VEHS==============
for i = 0 TO Enum_to_int(MVF_NUM_OF_VEH)-1
if DOES_ENTITY_EXIST(vehs[i].id)
SAFE_RELEASE_VEHICLE(vehs[i].id)
endif
endfor
//================================
SAFE_DELETE_OBJECT(Weapon_Object)
//-----------RESETS--------------
SET_WANTED_LEVEL_MULTIPLIER(1)
IF endcamStarted = FALSE
DISPLAY_RADAR(true)
DISPLAY_HUD(true)
DESTROY_ALL_CAMS()
ENDIF
SET_PLAYER_CONTROL(player_id(),true)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, true)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, true)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, true)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, true)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, true)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_CRUISING,true)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER ,true)
RESET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN()
SET_VEHICLE_MODEL_IS_SUPPRESSED(TAILGATER,false)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BODHI2,false)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BUFFALO,false)
SET_TIME_SCALE(1)
CLEAR_WEATHER_TYPE_PERSIST()
//-------------------------------
//----------DESTROYS-------------
CLEAR_PRINTS()
CLEAR_HELP()
if DOES_BLIP_EXIST(blip_objective)
remove_blip(blip_objective)
endif
REMOVE_SCENARIO_BLOCKING_AREAS()
KILL_ANY_CONVERSATION()
KILL_CHASE_HINT_CAM(sHintCam)
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
//-------------------------------
//Remove the IPL at end of mission
REMOVE_IPL("DES_tankercrash") //BUG FIX 1416493
DISABLE_TAXI_HAILING(false)
DISABLE_CELLPHONE(false)
DISABLE_CHEAT(CHEAT_TYPE_SPAWN_VEHICLE, FALSE)
RELEASE_MISSION_AUDIO_BANK()
STOP_STREAM()
SET_ROADS_BACK_TO_ORIGINAL(<<1199.4, -2661.9, 70>>, <<1597.1, -2447.7, -5>>)
PRINTSTRING("...Finale A Mission Cleanup")
PRINTNL()
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// Mission Fail & Pass
// -----------------------------------------------------------------------------------------------------------
PROC Mission_Failed(MFF_MISSION_FAIL_FLAGS fail_condition = mff_default)
TRIGGER_MUSIC_EVENT("FINA_FAIL")
STRING strReason = ""
//show fail message
SWITCH fail_condition
// CASE mff_debug_fail
// strReason = "FIN1_FAILDB"
// BREAK
CASE mff_lost_trevor
strReason = "FIN1_FAIL1"
BREAK
case mff_destroyed_veh
strReason = "FIN1_FAIL2"
break
CASE mff_michael_death
strReason = "CMN_MDIED"
BREAK
DEFAULT
strReason = "FIN1_FAILDF"
BREAk
ENDSWITCH
MISSION_FLOW_MISSION_FAILED_WITH_REASON(strReason)
WHILE NOT GET_MISSION_FLOW_SAFE_TO_CLEANUP()
if IS_CUTSCENE_ACTIVE()
SET_CUTSCENE_FADE_VALUES()
endif
WAIT(0)
ENDWHILE
MISSION_CLEANUP()
TERMINATE_THIS_THREAD()
ENDPROC
PROC Mission_Passed()
IF NOT IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_OUT(0)
ENDIF
g_iFinaleCreditsToPlay = 0
PUT_DEAD_CHARACTERS_PROPERTIES_BACK_ON_MARKET(CHAR_TREVOR)
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FINA_KILLTREV)
PRINTSTRING("...Finale A Mission Passed")
PRINTNL()
IF creditsStarted = FALSE
AWARD_ACHIEVEMENT_FOR_MISSION(ACH04) // To live or die in los santos
creditsStarted = TRUE
ENDIF
IF IS_REPEAT_PLAY_ACTIVE()
g_MissionStatSystemSuppressVisual = TRUE
TRIGGER_MISSION_STATS_UI(TRUE, TRUE)
ENDIF
Mission_Flow_Mission_Passed(true)
IF IS_REPEAT_PLAY_ACTIVE()
g_bMissionStatSystemBlocker = FALSE
ENDIF
Mission_Cleanup()
TERMINATE_THIS_THREAD()
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// MISSION STAGE MANAGEMENT
// -----------------------------------------------------------------------------------------------------------
PROC Mission_stage_management()
SWITCH stageswitch
CASE STAGESWITCH_REQUESTED
PRINTLN("[stageManagement] mission_stage switch requested from mission_stage:", mission_stage, "to mission_stage", requestedStage)
stageswitch = STAGESWITCH_EXITING
mission_substage = STAGE_EXIT
BREAK
CASE STAGESWITCH_EXITING
PRINTLN("[StageManagement] Exiting mission_stage: ", mission_stage)
stageSwitch = STAGESWITCH_ENTERING
mission_substage = STAGE_ENTRY
mission_stage = requestedStage
BREAK
CASE STAGESWITCH_ENTERING
PRINTLN("[StageManagement] Entered mission_stage: ", mission_stage)
requestedStage = -1
stageSwitch = STAGESWITCH_IDLE
BREAK
CASE STAGESWITCH_IDLE
IF (GET_GAME_TIMER() - iStageTimer) > 2500
PRINTLN("[StageManagement] mission_stage: ", mission_stage, " mission_substage: ", mission_substage)
iStageTimer = GET_GAME_TIMER()
ENDIF
BREAK
ENDSWITCH
ENDPROC
FUNC BOOL Mission_Set_Stage(MSF_MISSION_STAGE_FLAGS newStage)
If stageswitch = STAGESWITCH_IDLE
requestedstage = ENUM_TO_INT(newStage)
stageswitch = STAGESWITCH_REQUESTED
return True
else
return false
endif
ENDFUNC
PROC RESET_EVERYTHING()
IF IS_CUTSCENE_ACTIVE()
STOP_CUTSCENE_IMMEDIATELY()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
//==============PEDS==============
//all peds are deleted
for i = 0 TO Enum_to_int(MPF_NUM_OF_PEDS)-1
if DOES_ENTITY_EXIST(peds[i].id)
AND (NOT IS_PED_INJURED(peds[i].id))
if IS_PED_IN_ANY_VEHICLE(peds[i].id)
SET_PED_COORDS_NO_GANG(peds[i].id,(GET_ENTITY_COORDS(GET_VEHICLE_PED_IS_IN(peds[i].id))+<<0,-2,0>>))
endif
if peds[i].id != player_ped_id()
DELETE_PED(peds[i].id)
endif
endif
endfor
//================================
//==============VEHS==============
//all vehicles are deleted
for i = 0 TO Enum_to_int(MVF_NUM_OF_VEH)-1
if DOES_ENTITY_EXIST(vehs[i].id)
DELETE_VEHICLE(vehs[i].id)
endif
endfor
//================================
SAFE_DELETE_OBJECT(Weapon_Object)
//-----------RESETS--------------
DISPLAY_RADAR(true)
DISPLAY_HUD(true)
if not IS_PED_INJURED(player_ped_id())
CLEAR_PED_TASKS(player_ped_id())
endif
//wanted level
SET_WANTED_LEVEL_MULTIPLIER(0)
CLEAR_PLAYER_WANTED_LEVEL(player_id())
//reset player control
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
if DOES_ENTITY_EXIST(vehs[mvf_michael_car].id)
SET_ENTITY_INVINCIBLE(vehs[mvf_michael_car].id,false)
endif
SET_TIME_SCALE(1)
//bools
bcutsceneLoaded = false
bCarRunning = false
bPlaceholder = false
set_exit_states(false)
//-------------------------------
//----------DESTROYS-------------
CLEAR_AREA(GET_ENTITY_COORDS(player_ped_id()),200,true)
KILL_ANY_CONVERSATION()
SET_INSTANCE_PRIORITY_HINT( INSTANCE_HINT_NONE )
KILL_CHASE_HINT_CAM(sHintCam)
if DOES_BLIP_EXIST(blip_objective)
remove_blip(blip_objective)
endif
REMOVE_SCENARIO_BLOCKING_AREAS()
STOP_FIRE_IN_RANGE(<<1734.43018, -1623.52039, 111.42328>>,100)
DESTROY_ALL_CAMS()
RENDER_SCRIPT_CAMS(false,false)
CLEAR_PRINTS()
CLEAR_HELP()
CLEAR_MISSION_LOCATE_STUFF(sLocatesData)
CLEAR_MISSION_LOCATION_TEXT_AND_BLIPS(sLocatesData)
//Remove all IPL's and make sure to request the one's required for that specific stage in load assets
IF NOT Is_Replay_In_Progress()
REMOVE_IPL("DES_tankercrash")
REMOVE_IPL("tankercrash_grp1")
REMOVE_IPL("tankercrash_grp2")
REMOVE_IPL("DES_tankerexp")
REMOVE_IPL("tankerexp_grp0")
REMOVE_IPL("tankerexp_grp1")
REMOVE_IPL("tankerexp_grp2")
PRINTSTRING("removing all IPL's for skip") PRINTNL()
ENDIF
STOP_AUDIO_SCENES()
//-------------------------------
ENDPROC
PROC MISSION_STAGE_SKIP()
//a skip has been made
IF bDoSkip = TRUE
//begin the skip if the switching is idle
if stageSwitch = STAGESWITCH_IDLE
if not IS_SCREEN_FADED_OUT()
IF NOT IS_SCREEN_FADING_OUT()
DO_SCREEN_FADE_OUT(1000)
ENDIF
else
Mission_Set_Stage(INT_TO_ENUM(MSF_MISSION_STAGE_FLAGS, iSkipToStage))
endif
//Needs to be carried out before states own entering stage
ELIF stageSwitch = STAGESWITCH_ENTERING
RENDER_SCRIPT_CAMS(false,false)
SET_PLAYER_CONTROL(player_id(), true)
RESET_EVERYTHING()
Start_Skip_Streaming(sAssetData)
load_asset_stage(int_to_enum(MSF_MISSION_STAGE_FLAGS,iSkipToStage))
WHILE NOT Update_Skip_Streaming(sAssetData)
PRINTSTRING("waiting on assets loading for mission stage skip") PRINTNL()
WAIT(0)
ENDWHILE
// -------------------------- Not a Replay ----------------------------
IF NOT IS_REPLAY_BEING_SET_UP()
VECTOR vWarpCoord
FLOAT fWarpHeading
GET_SKIP_STAGE_COORD_AND_HEADING(int_to_enum(msf_mission_stage_flags, iSkipToStage), vWarpCoord, fWarpHeading)
SET_ENTITY_COORDS(PLAYER_PED_ID(), vWarpCoord)
SET_ENTITY_HEADING(PLAYER_PED_ID(), fWarpHeading)
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
Load_Asset_NewLoadScene_Sphere(sAssetData, vWarpCoord, 50.0)
ENDIF
// --------------------------------------------------------------------
SWITCH INT_TO_ENUM(MSF_MISSION_STAGE_FLAGS, MISSION_STAGE)
CASE MSF_0_meet SU_MSF_0_MEET() BREAK
CASE MSF_1_CHASE_TREVOR SU_MSF_1_CHASE_TREVOR() BREAK
CASE MSF_2_Fuel_crash_CS SU_MSF_2_Fuel_crash_CS() BREAK
CASE MSF_3_Ignite_trevor SU_MSF_3_Ignite_trevor() BREAK
CASE MSF_4_Goodbyes_CS SU_MSF_4_Goodbyes_CS() BREAK
case msf_5_Passed su_passed() BREAK
ENDSWITCH
SU_GENERAL()
bDoSkip = FALSE
IF NOT IS_REPLAY_BEING_SET_UP()
NEW_LOAD_SCENE_STOP()
endif
ENDIF
#if Is_debug_build
//Check is a skip being asked for, dont allow skip during setup stage
ELIF LAUNCH_MISSION_STAGE_MENU(zMenuNames, iSkipToStage, mission_stage, TRUE)
IF iSkipToStage > ENUM_TO_INT(msf_4_Goodbyes_CS)
MISSION_PASSED()
ELSE
iSkipToStage = CLAMP_INT(iSkipToStage, 0, ENUM_TO_INT(MSF_NUM_OF_STAGES)-1)
if IS_SCREEN_FADED_IN()
DO_SCREEN_FADE_OUT(1000)
bDoSkip = true
endif
endif
bis_zSkip = true
#endif
ENDIF
ENDPROC
PROC MISSION_CHECKS()
//------------------death checks-------------------------------
for i = 0 to enum_to_int(MPF_NUM_OF_PEDS) -1
if DOES_ENTITY_EXIST(peds[i].id)
if IS_PED_INJURED(peds[i].id)
if peds[i].id = peds[mpf_michael].id
Mission_Failed(mff_michael_death)
endif
SET_PED_AS_NO_LONGER_NEEDED(peds[i].id)
ENDIF
ENDIF
ENDFOR
for i = 0 to enum_to_int(MVF_NUM_OF_VEH) -1
if DOES_ENTITY_EXIST(vehs[i].id)
if not IS_VEHICLE_DRIVEABLE(vehs[i].id)
SET_VEHICLE_AS_NO_LONGER_NEEDED(vehs[i].id)
ENDIF
ENDIF
ENDFOR
Display_Placeholder()
//--------------------------------------------------------------------------------
ENDPROC
PROC MISSION_SETUP()
peds[mpf_franklin].id = player_ped_id()
IF IS_PLAYER_PLAYING(PLAYER_ID())
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
ENDIF
//Call this here to give me full control over peds variations in cutscenes
SET_PLAYER_PED_DATA_IN_CUTSCENES(FALSE)
// set realationships
ADD_RELATIONSHIP_GROUP("trevor_rel", REL_Trevor)
ADD_RELATIONSHIP_GROUP("michael_rel", REL_Michael)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,REL_Michael,REL_Trevor)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,REL_Trevor,REL_Michael)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_HATE,REL_Trevor,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,REL_Michael,RELGROUPHASH_PLAYER)
SET_RELATIONSHIP_BETWEEN_GROUPS(ACQUAINTANCE_TYPE_PED_LIKE,RELGROUPHASH_PLAYER,REL_Michael)
SET_ROADS_IN_AREA(<<1199.4, -2661.9, 70>>, <<1597.1, -2447.7, -5>>, FALSE)
SET_WANTED_LEVEL_MULTIPLIER(0)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, false)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, false)
enable_dispatch_service(dt_police_automobile, false)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_CRUISING,false)
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE_WAIT_PULLED_OVER ,false)
SET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN(DT_POLICE_AUTOMOBILE,0)
SET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN(DT_POLICE_HELICOPTER,0)
SET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN(DT_POLICE_ROAD_BLOCK,0)
SET_VEHICLE_MODEL_IS_SUPPRESSED(TAILGATER,true)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BODHI2,true)
SET_VEHICLE_MODEL_IS_SUPPRESSED(BUFFALO,true)
//crash site
ADD_SCENARIO_BLOCKING_AREA(<<1740.29504, -1602.18420, 110>>,<<1699.40442, -1646.40857, 116.52637>>)
//tourist block
ADD_SCENARIO_BLOCKING_AREA(<<1369.17896, -2546.99292, 45>>,<<1372.99866, -2542.33276, 48>>)
//block roads
SET_ROADS_IN_ANGLED_AREA(<<1506.58704, -2531.95703, 35>>,<<1463.06506, -1962.42371, 130>>,320,true,false)
SET_ROADS_IN_ANGLED_AREA(<<1467.82227, -1875.56714, 35>>,<<1883.59082, -1232.34180, 130>>,450,true,false)
SET_WEATHER_TYPE_PERSIST("EXTRASUNNY")
//is the player replaying previous stage
IF Is_Replay_In_Progress()
or IS_REPEAT_PLAY_ACTIVE()
IF Is_Replay_In_Progress()
iSkipToStage = Get_Replay_Mid_Mission_Stage()
if iSkipToStage = 0
iSkipToStage = 1
endif
if g_bShitskipAccepted
iSkipToStage++
endif
//Sort out IPL groups before the start_replay_setup so that new load scene is started after the IPL groups
if iskipToStage = 1
or iskipToStage = 2
REQUEST_IPL("DES_tankercrash")
endif
if iSkipToStage = 3
REMOVE_IPL("DES_tankercrash")
REMOVE_IPL("tankercrash_grp1")
REMOVE_IPL("tankercrash_grp2")
REMOVE_IPL("tankerexp_grp0")
REQUEST_IPL("DES_tankerexp")
endif
if iSkipToStage = 4
REMOVE_IPL("DES_tankerexp")
REQUEST_IPL("tankerexp_grp2")
endif
if iskipToStage >= 5
iskipToStage = 5
endif
bis_zSkip = false
elif IS_REPEAT_PLAY_ACTIVE()
REMOVE_IPL("DES_tankerexp")
REMOVE_IPL("tankerexp_grp1")
REMOVE_IPL("tankerexp_grp2")
REMOVE_IPL("tankerexp_grp3")
REQUEST_IPL("DES_tankercrash")
REQUEST_IPL("tankerexp_grp0")
iSkipToStage = 0
endif
// New replay streaming
IF IS_REPLAY_IN_PROGRESS()
VECTOR vSkipToCoord
FLOAT fSkipToHeading
GET_SKIP_STAGE_COORD_AND_HEADING(int_to_enum(MSF_MISSION_STAGE_FLAGS,iSkipToStage), vSkipToCoord, fSkipToHeading)
START_REPLAY_SETUP(vSkipToCoord, fSkipToHeading)
ENDIF
bDoSkip = TRUE
ELSE //start from begining
bis_zSkip = false
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0,"Stage 0: meet")
mission_stage = enum_to_int(msf_0_meet)
Mission_Set_Stage(int_to_enum(MSF_MISSION_STAGE_FLAGS, mission_stage))
load_asset_stage(msf_0_meet)
PRINTLN("Start opening Loading")
WHILE NOT Update_Skip_Streaming(sAssetData)
WAIT(0)
ENDWHILE
PRINTLN("End opening Loading")
ENDIF
DISABLE_TAXI_HAILING(true)
mission_substage = STAGE_ENTRY
ENDPROC
Proc timelapse()
sTimelapse.currentTimeOfDay = GET_CURRENT_TIMEOFDAY()
SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME(0)
IF sTimelapse.iTimelapseCut = 0
if not IS_CUTSCENE_ACTIVE()
Println("TIME 1")
bTODstart = false
REQUEST_CUTSCENE("FIN_A_INT")
ENDIF
endif
while not DO_TIMELAPSE(SP_MISSION_FINALE_A,sTimelapse,true,false,false,true)
//Call every frame this command only returns true once after a cutscene has been requested.
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
PRINTSTRING("cutscene ready for variations to be set now 0")
SET_CS_OUTFITS_AND_EXITS(MIKE())
ENDIF
Println("TIME 3: ",sTimelapse.iTimelapseCut)
DISPLAY_RADAR(false)
display_hud(false)
wait(0)
if not bTODstart
and sTimelapse.iTimelapseCut = 2
IF DOES_ENTITY_EXIST(player_ped_id())
IF NOT IS_PED_INJURED(player_ped_id())
SET_ENTITY_COORDS(player_ped_id(),<< 1335.79663, -2550.45801, 46.19570 >>)
SET_ENTITY_HEADING(player_ped_id(), 138.6753)
ENDIF
ENDIF
CLEAR_AREA(<< 1334.85095, -2555.59424, 45.58296 >>,200,true)
//frank car
if not DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_REPLAY_START_VEHICLE_AVAILABLE()
vehs[mvf_Frank_car].id = GET_MISSION_START_VEHICLE_INDEX()
IF IS_THIS_MODEL_A_CAR(GET_REPLAY_START_VEHICLE_MODEL())
OR IS_THIS_MODEL_A_BIKE(GET_REPLAY_START_VEHICLE_MODEL())
OR IS_THIS_MODEL_A_BICYCLE(GET_REPLAY_START_VEHICLE_MODEL())
OR IS_THIS_MODEL_A_QUADBIKE(GET_REPLAY_START_VEHICLE_MODEL())
IF GET_REPLAY_START_VEHICLE_MODEL() = BUS
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, <<1360.2174, -2531.7971, 46.8857>>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, 322.7698)
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id,vSTART_CAR)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, fSTARTCAR)
ENDIF
ENDIF
ENDIF
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<0.0,0.0,0.0>>, 0.0, TRUE, CHAR_FRANKLIN)
ELSE
SET_ENTITY_AS_MISSION_ENTITY(vehs[mvf_Frank_car].id)
DELETE_VEHICLE(vehs[mvf_Frank_car].id)
WHILE NOT CREATE_PLAYER_VEHICLE(vehs[mvf_Frank_car].id, CHAR_FRANKLIN, vSTART_CAR, fSTARTCAR, TRUE, VEHICLE_TYPE_CAR)
PRINTSTRING("waiting on franks car being created") PRINTNL()
WAIT(0)
ENDWHILE
ENDIF
ELSE
WHILE NOT CREATE_PLAYER_VEHICLE(vehs[mvf_Frank_car].id, CHAR_FRANKLIN, vSTART_CAR, fSTARTCAR, TRUE, VEHICLE_TYPE_CAR)
PRINTSTRING("waiting on franks car being created") PRINTNL()
WAIT(0)
ENDWHILE
ENDIF
else
IF GET_ENTITY_MODEL(vehs[mvf_Frank_car].id) = BUS
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, <<1360.2174, -2531.7971, 46.8857>>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, 322.7698)
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Frank_car].id)
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Frank_car].id,false)
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, vSTART_CAR)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, fSTARTCAR)
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Frank_car].id)
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Frank_car].id,false)
ENDIF
ENDIF
endif
bTODstart = true
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
endif
endwhile
endproc
Proc Run_Init_CutScene()
#IF IS_DEBUG_BUILD
IF IS_CUTSCENE_ACTIVE()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)
STOP_CUTSCENE()
REMOVE_CUTSCENE()
WHILE IS_CUTSCENE_ACTIVE()
WAIT(0)
ENDWHILE
ENDIF
ENDIF
#ENDIF
IF NOT bcutsceneLoaded
if NOT IS_CUTSCENE_ACTIVE()
REQUEST_CUTSCENE("FIN_A_INT")
endif
//Call every frame this command only returns true once after a cutscene has been requested.
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
PRINTSTRING("cutscene ready for variations to be set now 3")
SET_CS_OUTFITS_AND_EXITS(MIKE())
ENDIF
IF HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
//pre mission setup
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
WHILE NOT CREATE_PLAYER_VEHICLE(vehs[mvf_trevor_truck].id, CHAR_TREVOR, <<1317.8, -2560.5, 45.1>>, 0, TRUE, VEHICLE_TYPE_CAR)
PRINTSTRING("waiting for trev's car to be created") PRINTNL()
WAIT(0)
ENDWHILE
REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_trevor_truck].id,"Trevors_car",CU_ANIMATE_EXISTING_SCRIPT_ENTITY) //trev truck
REGISTER_ENTITY_FOR_CUTSCENE(null,"Trevor",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY,PLAYER_TWO) //trev
if not HAS_PED_GOT_WEAPON(Frank(),WEAPONTYPE_PISTOL)
GIVE_WEAPON_TO_PED(Frank(),WEAPONTYPE_PISTOL,25,true,true)
endif
IF NOT DOES_ENTITY_EXIST(Weapon_Object)
Weapon_Object = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(Frank(),WEAPONTYPE_PISTOL)
ENDIF
REGISTER_ENTITY_FOR_CUTSCENE(Weapon_Object, "Franklins_weapon", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE()
bcutsceneLoaded = TRUE
ENDIF
ENDIF
endproc
//PURPOSE: Adds all the cars needed for the uber recording playback
PROC FILL_UBER_RECORDING()
TrafficCarPos[0] = <<1257.4471, -2067.2722, 44.0916>>
TrafficCarQuatX[0] = -0.0181
TrafficCarQuatY[0] = -0.0018
TrafficCarQuatZ[0] = 0.2169
TrafficCarQuatW[0] = 0.9760
TrafficCarRecording[0] = 1
TrafficCarStartime[0] = 22902.0000
TrafficCarModel[0] = regina
TrafficCarPos[1] = <<1249.3594, -2058.8069, 44.0092>>
TrafficCarQuatX[1] = 0.0001
TrafficCarQuatY[1] = -0.0007
TrafficCarQuatZ[1] = 0.1766
TrafficCarQuatW[1] = 0.9843
TrafficCarRecording[1] = 2
TrafficCarStartime[1] = 23364.0000
TrafficCarModel[1] = RancherXL
//ParkedCarPos[0] = <<1234.9286, -2060.0273, 44.3581>>
//ParkedCarQuatX[0] = -0.0001
//ParkedCarQuatY[0] = 0.0004
//ParkedCarQuatZ[0] = -0.5778
//ParkedCarQuatW[0] = 0.8162
//ParkedCarModel[0] = scrap
TrafficCarPos[2] = <<1229.2913, -2034.4783, 43.9109>>
TrafficCarQuatX[2] = -0.0083
TrafficCarQuatY[2] = -0.0012
TrafficCarQuatZ[2] = 0.9791
TrafficCarQuatW[2] = -0.2033
TrafficCarRecording[2] = 3
TrafficCarStartime[2] = 24816.0000
TrafficCarModel[2] = landstalker
TrafficCarPos[3] = <<1214.2241, -1946.9001, 39.2982>>
TrafficCarQuatX[3] = -0.0411
TrafficCarQuatY[3] = -0.0103
TrafficCarQuatZ[3] = 0.2382
TrafficCarQuatW[3] = 0.9703
TrafficCarRecording[3] = 4
TrafficCarStartime[3] = 28644.0000
TrafficCarModel[3] = Phoenix
TrafficCarPos[4] = <<1186.6726, -1905.5449, 34.6968>>
TrafficCarQuatX[4] = -0.0471
TrafficCarQuatY[4] = -0.0027
TrafficCarQuatZ[4] = 0.2354
TrafficCarQuatW[4] = 0.9708
TrafficCarRecording[4] = 5
TrafficCarStartime[4] = 30294.0000
TrafficCarModel[4] = MESA
TrafficCarPos[5] = <<1169.1614, -1909.9987, 34.4001>>
TrafficCarQuatX[5] = -0.0039
TrafficCarQuatY[5] = 0.0462
TrafficCarQuatZ[5] = 0.9684
TrafficCarQuatW[5] = -0.2450
TrafficCarRecording[5] = 6
TrafficCarStartime[5] = 30492.0000
TrafficCarModel[5] = MESA
//TrafficCarPos[6] = <<1150.1210, -1873.0137, 31.0648>>
//TrafficCarQuatX[6] = -0.0028
//TrafficCarQuatY[6] = 0.0323
//TrafficCarQuatZ[6] = 0.9757
//TrafficCarQuatW[6] = -0.2167
//TrafficCarRecording[6] = 7
//TrafficCarStartime[6] = 31812.0000
//TrafficCarModel[6] = regina
TrafficCarPos[7] = <<1166.3428, -1854.8760, 30.0536>>
TrafficCarQuatX[7] = -0.0313
TrafficCarQuatY[7] = 0.0024
TrafficCarQuatZ[7] = 0.2128
TrafficCarQuatW[7] = 0.9766
TrafficCarRecording[7] = 8
TrafficCarStartime[7] = 32010.0000
TrafficCarModel[7] = landstalker
//ParkedCarPos[1] = <<1163.4136, -1840.8119, 37.2584>>
//ParkedCarQuatX[1] = -0.0110
//ParkedCarQuatY[1] = 0.0081
//ParkedCarQuatZ[1] = 0.8175
//ParkedCarQuatW[1] = 0.5757
//ParkedCarModel[1] = scrap
//TrafficCarPos[8] = <<1172.1002, -1821.6675, 36.6579>>
//TrafficCarQuatX[8] = -0.0045
//TrafficCarQuatY[8] = 0.0024
//TrafficCarQuatZ[8] = 0.9854
//TrafficCarQuatW[8] = -0.1699
//TrafficCarRecording[8] = 9
//TrafficCarStartime[8] = 33000.0000
//TrafficCarModel[8] = Phoenix
//TrafficCarPos[9] = <<1152.6714, -1819.1637, 28.9579>>
//TrafficCarQuatX[9] = -0.0064
//TrafficCarQuatY[9] = 0.0061
//TrafficCarQuatZ[9] = 0.1665
//TrafficCarQuatW[9] = 0.9860
//TrafficCarRecording[9] = 10
//TrafficCarStartime[9] = 33132.0000
//TrafficCarModel[9] = Sadler
TrafficCarPos[10] = <<1146.7635, -1801.8179, 28.9200>>
TrafficCarQuatX[10] = -0.0022
TrafficCarQuatY[10] = 0.0040
TrafficCarQuatZ[10] = 0.1746
TrafficCarQuatW[10] = 0.9846
TrafficCarRecording[10] = 11
TrafficCarStartime[10] = 33594.0000
TrafficCarModel[10] = regina
//ParkedCarPos[2] = <<1138.2710, -1795.8748, 29.2882>>
//ParkedCarQuatX[2] = -0.0016
//ParkedCarQuatY[2] = -0.0003
//ParkedCarQuatZ[2] = 0.1764
//ParkedCarQuatW[2] = 0.9843
//ParkedCarModel[2] = scrap
//TrafficCarPos[11] = <<1140.2302, -1783.4012, 28.7476>>
//TrafficCarQuatX[11] = -0.0002
//TrafficCarQuatY[11] = 0.0009
//TrafficCarQuatZ[11] = 0.1692
//TrafficCarQuatW[11] = 0.9856
//TrafficCarRecording[11] = 12
//TrafficCarStartime[11] = 34122.0000
//TrafficCarModel[11] = landstalker
//TrafficCarPos[12] = <<1111.1577, -1788.5449, 28.9294>>
//TrafficCarQuatX[12] = -0.0041
//TrafficCarQuatY[12] = -0.0015
//TrafficCarQuatZ[12] = 0.9863
//TrafficCarQuatW[12] = -0.1651
//TrafficCarRecording[12] = 13
//TrafficCarStartime[12] = 34386.0000
//TrafficCarModel[12] = RancherXL
//ParkedCarPos[3] = <<1131.2111, -1759.2866, 29.2392>>
//ParkedCarQuatX[3] = -0.0014
//ParkedCarQuatY[3] = 0.0035
//ParkedCarQuatZ[3] = 0.1647
//ParkedCarQuatW[3] = 0.9863
//ParkedCarModel[3] = scrap
TrafficCarPos[13] = <<1099.1915, -1769.3442, 28.7382>>
TrafficCarQuatX[13] = -0.0043
TrafficCarQuatY[13] = -0.0008
TrafficCarQuatZ[13] = 0.9836
TrafficCarQuatW[13] = -0.1805
TrafficCarRecording[13] = 14
TrafficCarStartime[13] = 34980.0000
TrafficCarModel[13] = landstalker
TrafficCarPos[14] = <<1114.1964, -1746.2981, 28.8014>>
TrafficCarQuatX[14] = -0.0049
TrafficCarQuatY[14] = -0.0009
TrafficCarQuatZ[14] = 0.1804
TrafficCarQuatW[14] = 0.9836
TrafficCarRecording[14] = 15
TrafficCarStartime[14] = 35244.0000
TrafficCarModel[14] = MESA
TrafficCarPos[15] = <<1099.1005, -1736.9661, 29.1391>>
TrafficCarQuatX[15] = -0.0082
TrafficCarQuatY[15] = -0.0042
TrafficCarQuatZ[15] = 0.9868
TrafficCarQuatW[15] = -0.1614
TrafficCarRecording[15] = 16
TrafficCarStartime[15] = 35640.0000
TrafficCarModel[15] = Sadler
//TrafficCarPos[16] = <<1084.1342, -1735.9482, 35.1973>>
//TrafficCarQuatX[16] = -0.0034
//TrafficCarQuatY[16] = 0.0027
//TrafficCarQuatZ[16] = 0.8110
//TrafficCarQuatW[16] = 0.5850
//TrafficCarRecording[16] = 17
//TrafficCarStartime[16] = 35970.0000
//TrafficCarModel[16] = MESA
//
//TrafficCarPos[17] = <<1064.2612, -1724.5662, 35.2321>>
//TrafficCarQuatX[17] = -0.0012
//TrafficCarQuatY[17] = 0.0073
//TrafficCarQuatZ[17] = 0.9870
//TrafficCarQuatW[17] = -0.1603
//TrafficCarRecording[17] = 18
//TrafficCarStartime[17] = 36564.0000
//TrafficCarModel[17] = regina
TrafficCarPos[18] = <<1077.4941, -1709.0830, 29.1660>>
TrafficCarQuatX[18] = 0.0002
TrafficCarQuatY[18] = 0.0000
TrafficCarQuatZ[18] = 0.9885
TrafficCarQuatW[18] = -0.1514
TrafficCarRecording[18] = 19
TrafficCarStartime[18] = 36630.0000
TrafficCarModel[18] = Sadler
TrafficCarPos[19] = <<1081.4229, -1699.4463, 29.1073>>
TrafficCarQuatX[19] = 0.0002
TrafficCarQuatY[19] = -0.0018
TrafficCarQuatZ[19] = 0.9880
TrafficCarQuatW[19] = -0.1547
TrafficCarRecording[19] = 20
TrafficCarStartime[19] = 37158.0000
TrafficCarModel[19] = regina
TrafficCarPos[20] = <<1072.8810, -1675.1649, 28.9240>>
TrafficCarQuatX[20] = -0.0029
TrafficCarQuatY[20] = -0.0021
TrafficCarQuatZ[20] = 0.9915
TrafficCarQuatW[20] = -0.1302
TrafficCarRecording[20] = 21
TrafficCarStartime[20] = 37620.0000
TrafficCarModel[20] = MESA
TrafficCarPos[21] = <<1093.0076, -1658.0027, 28.9252>>
TrafficCarQuatX[21] = -0.0010
TrafficCarQuatY[21] = 0.0004
TrafficCarQuatZ[21] = 0.1187
TrafficCarQuatW[21] = 0.9929
TrafficCarRecording[21] = 22
TrafficCarStartime[21] = 38082.0000
TrafficCarModel[21] = MESA
TrafficCarPos[22] = <<1064.4675, -1657.8715, 28.8650>>
TrafficCarQuatX[22] = -0.0043
TrafficCarQuatY[22] = 0.0001
TrafficCarQuatZ[22] = 0.9934
TrafficCarQuatW[22] = -0.1147
TrafficCarRecording[22] = 23
TrafficCarStartime[22] = 38148.0000
TrafficCarModel[22] = landstalker
TrafficCarPos[23] = <<1095.3093, -1672.2139, 29.0386>>
TrafficCarQuatX[23] = 0.0023
TrafficCarQuatY[23] = 0.0003
TrafficCarQuatZ[23] = 0.1384
TrafficCarQuatW[23] = 0.9904
TrafficCarRecording[23] = 24
TrafficCarStartime[23] = 38346.0000
TrafficCarModel[23] = RancherXL
TrafficCarPos[24] = <<1081.6741, -1633.3407, 28.9063>>
TrafficCarQuatX[24] = -0.0005
TrafficCarQuatY[24] = -0.0000
TrafficCarQuatZ[24] = 0.0996
TrafficCarQuatW[24] = 0.9950
TrafficCarRecording[24] = 25
TrafficCarStartime[24] = 38742.0000
TrafficCarModel[24] = landstalker
TrafficCarPos[25] = <<1064.9360, -1637.2181, 29.3989>>
TrafficCarQuatX[25] = -0.0120
TrafficCarQuatY[25] = 0.0019
TrafficCarQuatZ[25] = 0.9947
TrafficCarQuatW[25] = -0.1019
TrafficCarRecording[25] = 26
TrafficCarStartime[25] = 38742.0000
TrafficCarModel[25] = scrap
TrafficCarPos[26] = <<1091.1405, -1629.9049, 28.8929>>
TrafficCarQuatX[26] = -0.0007
TrafficCarQuatY[26] = 0.0035
TrafficCarQuatZ[26] = 0.1006
TrafficCarQuatW[26] = 0.9949
TrafficCarRecording[26] = 27
TrafficCarStartime[26] = 38808.0000
TrafficCarModel[26] = landstalker
TrafficCarPos[27] = <<1068.2368, -1623.2585, 28.7770>>
TrafficCarQuatX[27] = -0.0133
TrafficCarQuatY[27] = 0.0019
TrafficCarQuatZ[27] = 0.9956
TrafficCarQuatW[27] = -0.0930
TrafficCarRecording[27] = 28
TrafficCarStartime[27] = 39336.0000
TrafficCarModel[27] = Phoenix
//TrafficCarPos[28] = <<1063.3774, -1596.8400, 28.8528>>
//TrafficCarQuatX[28] = -0.0173
//TrafficCarQuatY[28] = 0.0068
//TrafficCarQuatZ[28] = 0.9990
//TrafficCarQuatW[28] = -0.0415
//TrafficCarRecording[28] = 29
//TrafficCarStartime[28] = 39930.0000
//TrafficCarModel[28] = RancherXL
TrafficCarPos[29] = <<1057.1163, -1625.4204, 29.3340>>
TrafficCarQuatX[29] = -0.0015
TrafficCarQuatY[29] = -0.0010
TrafficCarQuatZ[29] = 0.9961
TrafficCarQuatW[29] = -0.0880
TrafficCarRecording[29] = 30
TrafficCarStartime[29] = 40194.0000
TrafficCarModel[29] = Biff
TrafficCarPos[30] = <<1062.4103, -1586.4337, 28.4771>>
TrafficCarQuatX[30] = -0.0131
TrafficCarQuatY[30] = 0.0092
TrafficCarQuatZ[30] = 0.9990
TrafficCarQuatW[30] = -0.0425
TrafficCarRecording[30] = 31
TrafficCarStartime[30] = 40458.0000
TrafficCarModel[30] = landstalker
TrafficCarPos[31] = <<1050.4426, -1570.4543, 28.5423>>
TrafficCarQuatX[31] = 0.0064
TrafficCarQuatY[31] = 0.0053
TrafficCarQuatZ[31] = 0.9986
TrafficCarQuatW[31] = -0.0523
TrafficCarRecording[31] = 32
TrafficCarStartime[31] = 40986.0000
TrafficCarModel[31] = Biff
//TrafficCarPos[32] = <<1053.5391, -1520.3832, 27.5834>>
//TrafficCarQuatX[32] = -0.0026
//TrafficCarQuatY[32] = -0.0005
//TrafficCarQuatZ[32] = 1.0000
//TrafficCarQuatW[32] = -0.0075
//TrafficCarRecording[32] = 33
//TrafficCarStartime[32] = 43098.0000
//TrafficCarModel[32] = landstalker
TrafficCarPos[33] = <<1054.1426, -1500.4709, 27.6671>>
TrafficCarQuatX[33] = -0.0120
TrafficCarQuatY[33] = -0.0013
TrafficCarQuatZ[33] = 0.9999
TrafficCarQuatW[33] = -0.0036
TrafficCarRecording[33] = 34
TrafficCarStartime[33] = 43362.0000
TrafficCarModel[33] = bison
TrafficCarPos[34] = <<1059.6545, -1521.0797, 27.4954>>
TrafficCarQuatX[34] = 0.0104
TrafficCarQuatY[34] = 0.0022
TrafficCarQuatZ[34] = 0.9999
TrafficCarQuatW[34] = -0.0083
TrafficCarRecording[34] = 35
TrafficCarStartime[34] = 43560.0000
TrafficCarModel[34] = MESA
TrafficCarPos[35] = <<1040.5317, -1479.9528, 27.6810>>
TrafficCarQuatX[35] = 0.0003
TrafficCarQuatY[35] = -0.0077
TrafficCarQuatZ[35] = 0.9991
TrafficCarQuatW[35] = -0.0414
TrafficCarRecording[35] = 36
TrafficCarStartime[35] = 44022.0000
TrafficCarModel[35] = buccaneer
TrafficCarPos[36] = <<1043.9675, -1454.2734, 28.6681>>
TrafficCarQuatX[36] = 0.0002
TrafficCarQuatY[36] = -0.0082
TrafficCarQuatZ[36] = 0.9991
TrafficCarQuatW[36] = -0.0409
TrafficCarRecording[36] = 37
TrafficCarStartime[36] = 44880.0000
TrafficCarModel[36] = Sadler
TrafficCarPos[37] = <<1050.3926, -1443.6427, 36.4312>>
TrafficCarQuatX[37] = -0.0034
TrafficCarQuatY[37] = -0.0023
TrafficCarQuatZ[37] = 0.7072
TrafficCarQuatW[37] = -0.7070
TrafficCarRecording[37] = 38
TrafficCarStartime[37] = 45210.0000
TrafficCarModel[37] = Sadler
TrafficCarPos[38] = <<1037.0913, -1432.8300, 28.8182>>
TrafficCarQuatX[38] = 0.0046
TrafficCarQuatY[38] = -0.0070
TrafficCarQuatZ[38] = 0.9998
TrafficCarQuatW[38] = -0.0207
TrafficCarRecording[38] = 39
TrafficCarStartime[38] = 45540.0000
TrafficCarModel[38] = bison
TrafficCarPos[39] = <<1058.9618, -1423.1050, 29.0086>>
TrafficCarQuatX[39] = 0.0002
TrafficCarQuatY[39] = -0.0091
TrafficCarQuatZ[39] = 0.9999
TrafficCarQuatW[39] = -0.0054
TrafficCarRecording[39] = 40
TrafficCarStartime[39] = 45870.0000
TrafficCarModel[39] = Sadler
TrafficCarPos[40] = <<1023.6323, -1443.6104, 35.5696>>
TrafficCarQuatX[40] = -0.0287
TrafficCarQuatY[40] = -0.0037
TrafficCarQuatZ[40] = 0.7069
TrafficCarQuatW[40] = -0.7068
TrafficCarRecording[40] = 41
TrafficCarStartime[40] = 46332.0000
TrafficCarModel[40] = landstalker
TrafficCarPos[41] = <<1041.7249, -1405.9795, 29.6160>>
TrafficCarQuatX[41] = 0.0055
TrafficCarQuatY[41] = -0.0096
TrafficCarQuatZ[41] = 0.9999
TrafficCarQuatW[41] = -0.0078
TrafficCarRecording[41] = 42
TrafficCarStartime[41] = 46398.0000
TrafficCarModel[41] = scrap
TrafficCarPos[42] = <<1042.1285, -1387.2562, 29.8631>>
TrafficCarQuatX[42] = 0.0003
TrafficCarQuatY[42] = -0.0281
TrafficCarQuatZ[42] = 0.9996
TrafficCarQuatW[42] = -0.0084
TrafficCarRecording[42] = 43
TrafficCarStartime[42] = 46992.0000
TrafficCarModel[42] = bison
TrafficCarPos[43] = <<1057.5828, -1388.1931, 28.9498>>
TrafficCarQuatX[43] = -0.0066
TrafficCarQuatY[43] = 0.0027
TrafficCarQuatZ[43] = 1.0000
TrafficCarQuatW[43] = -0.0064
TrafficCarRecording[43] = 44
TrafficCarStartime[43] = 47058.0000
TrafficCarModel[43] = MESA
TrafficCarPos[44] = <<1041.4845, -1369.8064, 31.3912>>
TrafficCarQuatX[44] = -0.0046
TrafficCarQuatY[44] = -0.0462
TrafficCarQuatZ[44] = 0.9988
TrafficCarQuatW[44] = -0.0130
TrafficCarRecording[44] = 45
TrafficCarStartime[44] = 47586.0000
TrafficCarModel[44] = Sadler
TrafficCarPos[45] = <<1035.0221, -1351.2770, 32.9924>>
TrafficCarQuatX[45] = 0.0017
TrafficCarQuatY[45] = -0.0618
TrafficCarQuatZ[45] = 0.9978
TrafficCarQuatW[45] = -0.0247
TrafficCarRecording[45] = 46
TrafficCarStartime[45] = 48246.0000
TrafficCarModel[45] = buccaneer
TrafficCarPos[46] = <<1034.5239, -1336.8646, 35.3449>>
TrafficCarQuatX[46] = 0.0179
TrafficCarQuatY[46] = -0.0542
TrafficCarQuatZ[46] = 0.9980
TrafficCarQuatW[46] = -0.0280
TrafficCarRecording[46] = 47
TrafficCarStartime[46] = 48840.0000
TrafficCarModel[46] = Sadler
TrafficCarPos[47] = <<1033.4775, -1319.9642, 37.1015>>
TrafficCarQuatX[47] = 0.0181
TrafficCarQuatY[47] = -0.0545
TrafficCarQuatZ[47] = 0.9979
TrafficCarQuatW[47] = -0.0296
TrafficCarRecording[47] = 48
TrafficCarStartime[47] = 49368.0000
TrafficCarModel[47] = landstalker
TrafficCarPos[48] = <<1054.6504, -1317.9685, 27.0912>>
TrafficCarQuatX[48] = -0.0006
TrafficCarQuatY[48] = 0.0219
TrafficCarQuatZ[48] = 0.9994
TrafficCarQuatW[48] = -0.0279
TrafficCarRecording[48] = 49
TrafficCarStartime[48] = 49566.0000
TrafficCarModel[48] = Sadler
TrafficCarPos[49] = <<1032.1355, -1308.3929, 38.3468>>
TrafficCarQuatX[49] = 0.0050
TrafficCarQuatY[49] = -0.0471
TrafficCarQuatZ[49] = 0.9985
TrafficCarQuatW[49] = -0.0282
TrafficCarRecording[49] = 50
TrafficCarStartime[49] = 49764.0000
TrafficCarModel[49] = bison
TrafficCarPos[50] = <<1038.0043, -1304.0952, 38.6910>>
TrafficCarQuatX[50] = -0.0042
TrafficCarQuatY[50] = -0.0460
TrafficCarQuatZ[50] = 0.9986
TrafficCarQuatW[50] = -0.0256
TrafficCarRecording[50] = 51
TrafficCarStartime[50] = 49896.0000
TrafficCarModel[50] = MESA
TrafficCarPos[51] = <<1032.8864, -1272.8844, 41.7283>>
TrafficCarQuatX[51] = -0.0066
TrafficCarQuatY[51] = -0.0480
TrafficCarQuatZ[51] = 0.9981
TrafficCarQuatW[51] = 0.0392
TrafficCarRecording[51] = 52
TrafficCarStartime[51] = 50886.0000
TrafficCarModel[51] = Sadler
TrafficCarPos[52] = <<1038.0369, -1273.2704, 41.6203>>
TrafficCarQuatX[52] = -0.0151
TrafficCarQuatY[52] = -0.0521
TrafficCarQuatZ[52] = 0.9977
TrafficCarQuatW[52] = 0.0409
TrafficCarRecording[52] = 53
TrafficCarStartime[52] = 50952.0000
TrafficCarModel[52] = landstalker
TrafficCarPos[53] = <<1040.5094, -1256.9590, 42.9299>>
TrafficCarQuatX[53] = -0.0102
TrafficCarQuatY[53] = -0.0355
TrafficCarQuatZ[53] = 0.9919
TrafficCarQuatW[53] = 0.1214
TrafficCarRecording[53] = 54
TrafficCarStartime[53] = 51480.0000
TrafficCarModel[53] = MESA
TrafficCarPos[54] = <<1053.2091, -1226.4725, 45.3710>>
TrafficCarQuatX[54] = -0.0056
TrafficCarQuatY[54] = -0.0329
TrafficCarQuatZ[54] = 0.9697
TrafficCarQuatW[54] = 0.2421
TrafficCarRecording[54] = 55
TrafficCarStartime[54] = 52536.0000
TrafficCarModel[54] = landstalker
TrafficCarPos[55] = <<1047.1648, -1195.5914, 55.7625>>
TrafficCarQuatX[55] = -0.0034
TrafficCarQuatY[55] = 0.0059
TrafficCarQuatZ[55] = -0.6925
TrafficCarQuatW[55] = 0.7214
TrafficCarRecording[55] = 56
TrafficCarStartime[55] = 53658.0000
TrafficCarModel[55] = scrap
TrafficCarPos[56] = <<1025.2529, -1190.3019, 55.3269>>
TrafficCarQuatX[56] = 0.0179
TrafficCarQuatY[56] = 0.0029
TrafficCarQuatZ[56] = -0.6945
TrafficCarQuatW[56] = 0.7192
TrafficCarRecording[56] = 57
TrafficCarStartime[56] = 53988.0000
TrafficCarModel[56] = landstalker
//TrafficCarPos[57] = <<1040.5273, -1179.9304, 55.2897>>
//TrafficCarQuatX[57] = -0.0108
//TrafficCarQuatY[57] = 0.0072
//TrafficCarQuatZ[57] = 0.7213
//TrafficCarQuatW[57] = 0.6926
//TrafficCarRecording[57] = 58
//TrafficCarStartime[57] = 54252.0000
//TrafficCarModel[57] = bison
//
//TrafficCarPos[58] = <<1064.3732, -1177.5841, 55.2528>>
//TrafficCarQuatX[58] = -0.0102
//TrafficCarQuatY[58] = 0.0084
//TrafficCarQuatZ[58] = 0.7223
//TrafficCarQuatW[58] = 0.6915
//TrafficCarRecording[58] = 59
//TrafficCarStartime[58] = 54516.0000
//TrafficCarModel[58] = bison
TrafficCarPos[59] = <<1039.6971, -1166.8888, 46.7159>>
TrafficCarQuatX[59] = 0.0047
TrafficCarQuatY[59] = 0.0091
TrafficCarQuatZ[59] = -0.3573
TrafficCarQuatW[59] = 0.9339
TrafficCarRecording[59] = 60
TrafficCarStartime[59] = 54582.0000
TrafficCarModel[59] = landstalker
TrafficCarPos[60] = <<1067.2932, -1195.4490, 47.0312>>
TrafficCarQuatX[60] = 0.0167
TrafficCarQuatY[60] = -0.0055
TrafficCarQuatZ[60] = 0.9319
TrafficCarQuatW[60] = 0.3623
TrafficCarRecording[60] = 61
TrafficCarStartime[60] = 54714.0000
TrafficCarModel[60] = Sadler
TrafficCarPos[61] = <<1089.4803, -1183.5569, 46.0068>>
TrafficCarQuatX[61] = 0.0143
TrafficCarQuatY[61] = 0.0276
TrafficCarQuatZ[61] = 0.8926
TrafficCarQuatW[61] = 0.4497
TrafficCarRecording[61] = 62
TrafficCarStartime[61] = 54978.0000
TrafficCarModel[61] = landstalker
//TrafficCarPos[62] = <<1109.4390, -1176.6676, 55.2548>>
//TrafficCarQuatX[62] = -0.0067
//TrafficCarQuatY[62] = 0.0161
//TrafficCarQuatZ[62] = 0.7271
//TrafficCarQuatW[62] = 0.6864
//TrafficCarRecording[62] = 63
//TrafficCarStartime[62] = 55308.0000
//TrafficCarModel[62] = MESA
//
//TrafficCarPos[63] = <<1115.8499, -1169.9240, 55.0264>>
//TrafficCarQuatX[63] = 0.0015
//TrafficCarQuatY[63] = 0.0227
//TrafficCarQuatZ[63] = 0.7272
//TrafficCarQuatW[63] = 0.6860
//TrafficCarRecording[63] = 64
//TrafficCarStartime[63] = 56100.0000
//TrafficCarModel[63] = MESA
//TrafficCarPos[64] = <<1163.1779, -1149.7906, 44.3732>>
//TrafficCarQuatX[64] = -0.0117
//TrafficCarQuatY[64] = -0.0227
//TrafficCarQuatZ[64] = 0.7516
//TrafficCarQuatW[64] = 0.6592
//TrafficCarRecording[64] = 65
//TrafficCarStartime[64] = 58608.0000
//TrafficCarModel[64] = Sadler
//TrafficCarPos[65] = <<1198.5988, -1166.0538, 51.0615>>
//TrafficCarQuatX[65] = 0.0010
//TrafficCarQuatY[65] = -0.0000
//TrafficCarQuatZ[65] = 0.7925
//TrafficCarQuatW[65] = 0.6099
//TrafficCarRecording[65] = 66
//TrafficCarStartime[65] = 59070.0000
//TrafficCarModel[65] = landstalker
TrafficCarPos[66] = <<1209.6885, -1146.9996, 47.4201>>
TrafficCarQuatX[66] = -0.0274
TrafficCarQuatY[66] = -0.0234
TrafficCarQuatZ[66] = 0.7991
TrafficCarQuatW[66] = 0.6002
TrafficCarRecording[66] = 67
TrafficCarStartime[66] = 59334.0000
TrafficCarModel[66] = Sadler
TrafficCarPos[67] = <<1252.3525, -1147.1350, 51.1307>>
TrafficCarQuatX[67] = -0.0036
TrafficCarQuatY[67] = 0.0025
TrafficCarQuatZ[67] = 0.8345
TrafficCarQuatW[67] = 0.5509
TrafficCarRecording[67] = 68
TrafficCarStartime[67] = 60720.0000
TrafficCarModel[67] = landstalker
TrafficCarPos[68] = <<1283.0724, -1135.6932, 51.1078>>
TrafficCarQuatX[68] = -0.0035
TrafficCarQuatY[68] = 0.0026
TrafficCarQuatZ[68] = 0.8366
TrafficCarQuatW[68] = 0.5477
TrafficCarRecording[68] = 69
TrafficCarStartime[68] = 61776.0000
TrafficCarModel[68] = MESA
TrafficCarPos[69] = <<1316.0417, -1117.9481, 50.8728>>
TrafficCarQuatX[69] = -0.0012
TrafficCarQuatY[69] = -0.0019
TrafficCarQuatZ[69] = 0.8533
TrafficCarQuatW[69] = 0.5214
TrafficCarRecording[69] = 70
TrafficCarStartime[69] = 63030.0000
TrafficCarModel[69] = buccaneer
TrafficCarPos[70] = <<1319.2922, -1097.9714, 51.1957>>
TrafficCarQuatX[70] = 0.0030
TrafficCarQuatY[70] = -0.0108
TrafficCarQuatZ[70] = 0.8429
TrafficCarQuatW[70] = 0.5380
TrafficCarRecording[70] = 71
TrafficCarStartime[70] = 63360.0000
TrafficCarModel[70] = bison
TrafficCarPos[71] = <<1342.1870, -1117.7548, 51.8750>>
TrafficCarQuatX[71] = 0.0065
TrafficCarQuatY[71] = -0.0048
TrafficCarQuatZ[71] = -0.5362
TrafficCarQuatW[71] = 0.8441
TrafficCarRecording[71] = 72
TrafficCarStartime[71] = 63888.0000
TrafficCarModel[71] = Sadler
TrafficCarPos[72] = <<1351.5930, -1099.8505, 52.0916>>
TrafficCarQuatX[72] = -0.0082
TrafficCarQuatY[72] = -0.0074
TrafficCarQuatZ[72] = 0.8561
TrafficCarQuatW[72] = 0.5166
TrafficCarRecording[72] = 73
TrafficCarStartime[72] = 64350.0000
TrafficCarModel[72] = scrap
TrafficCarPos[73] = <<1358.1727, -1090.9425, 51.8101>>
TrafficCarQuatX[73] = -0.0058
TrafficCarQuatY[73] = -0.0096
TrafficCarQuatZ[73] = 0.8579
TrafficCarQuatW[73] = 0.5136
TrafficCarRecording[73] = 74
TrafficCarStartime[73] = 64680.0000
TrafficCarModel[73] = landstalker
TrafficCarPos[74] = <<1362.6317, -1105.3058, 52.5445>>
TrafficCarQuatX[74] = 0.0076
TrafficCarQuatY[74] = -0.0046
TrafficCarQuatZ[74] = -0.5148
TrafficCarQuatW[74] = 0.8573
TrafficCarRecording[74] = 75
TrafficCarStartime[74] = 64680.0000
TrafficCarModel[74] = scrap
TrafficCarPos[75] = <<1382.2256, -1083.7041, 52.4738>>
TrafficCarQuatX[75] = -0.0107
TrafficCarQuatY[75] = -0.0093
TrafficCarQuatZ[75] = 0.8582
TrafficCarQuatW[75] = 0.5131
TrafficCarRecording[75] = 76
TrafficCarStartime[75] = 65472.0000
TrafficCarModel[75] = landstalker
//TrafficCarPos[76] = <<1400.5847, -1074.1249, 53.0939>>
//TrafficCarQuatX[76] = -0.0110
//TrafficCarQuatY[76] = -0.0098
//TrafficCarQuatZ[76] = 0.8591
//TrafficCarQuatW[76] = 0.5116
//TrafficCarRecording[76] = 77
//TrafficCarStartime[76] = 66132.0000
//TrafficCarModel[76] = MESA
//
//TrafficCarPos[77] = <<1398.4880, -1069.4480, 53.0572>>
//TrafficCarQuatX[77] = -0.0072
//TrafficCarQuatY[77] = -0.0117
//TrafficCarQuatZ[77] = 0.8585
//TrafficCarQuatW[77] = 0.5126
//TrafficCarRecording[77] = 78
//TrafficCarStartime[77] = 66198.0000
//TrafficCarModel[77] = landstalker
TrafficCarPos[78] = <<1422.3512, -1055.3960, 54.1407>>
TrafficCarQuatX[78] = -0.0096
TrafficCarQuatY[78] = -0.0107
TrafficCarQuatZ[78] = 0.8592
TrafficCarQuatW[78] = 0.5114
TrafficCarRecording[78] = 79
TrafficCarStartime[78] = 67056.0000
TrafficCarModel[78] = Sadler
TrafficCarPos[79] = <<1437.4639, -1047.1901, 54.4153>>
TrafficCarQuatX[79] = -0.0089
TrafficCarQuatY[79] = -0.0119
TrafficCarQuatZ[79] = 0.8666
TrafficCarQuatW[79] = 0.4987
TrafficCarRecording[79] = 80
TrafficCarStartime[79] = 67584.0000
TrafficCarModel[79] = MESA
TrafficCarPos[80] = <<1501.8615, -1018.0383, 57.1928>>
TrafficCarQuatX[80] = -0.0105
TrafficCarQuatY[80] = -0.0094
TrafficCarQuatZ[80] = 0.8616
TrafficCarQuatW[80] = 0.5073
TrafficCarRecording[80] = 81
TrafficCarStartime[80] = 70092.0000
TrafficCarModel[80] = scrap
TrafficCarPos[81] = <<1537.7510, -1015.4526, 57.5874>>
TrafficCarQuatX[81] = 0.0134
TrafficCarQuatY[81] = -0.0039
TrafficCarQuatZ[81] = -0.5048
TrafficCarQuatW[81] = 0.8632
TrafficCarRecording[81] = 82
TrafficCarStartime[81] = 70818.0000
TrafficCarModel[81] = MESA
TrafficCarPos[82] = <<1547.0856, -985.7202, 58.2990>>
TrafficCarQuatX[82] = -0.0174
TrafficCarQuatY[82] = -0.0130
TrafficCarQuatZ[82] = 0.8630
TrafficCarQuatW[82] = 0.5047
TrafficCarRecording[82] = 83
TrafficCarStartime[82] = 71544.0000
TrafficCarModel[82] = landstalker
//TrafficCarPos[83] = <<1558.4414, -980.5378, 59.1532>>
//TrafficCarQuatX[83] = -0.0187
//TrafficCarQuatY[83] = -0.0143
//TrafficCarQuatZ[83] = 0.8623
//TrafficCarQuatW[83] = 0.5059
//TrafficCarRecording[83] = 84
//TrafficCarStartime[83] = 71940.0000
//TrafficCarModel[83] = Sadler
TrafficCarPos[84] = <<1572.3722, -988.5083, 59.2547>>
TrafficCarQuatX[84] = 0.0108
TrafficCarQuatY[84] = -0.0245
TrafficCarQuatZ[84] = -0.4971
TrafficCarQuatW[84] = 0.8673
TrafficCarRecording[84] = 85
TrafficCarStartime[84] = 72072.0000
TrafficCarModel[84] = bison
//
//TrafficCarPos[85] = <<1568.1069, -980.8013, 59.5047>>
//TrafficCarQuatX[85] = -0.0003
//TrafficCarQuatY[85] = -0.0259
//TrafficCarQuatZ[85] = 0.8626
//TrafficCarQuatW[85] = 0.5053
//TrafficCarRecording[85] = 86
//TrafficCarStartime[85] = 72138.0000
//TrafficCarModel[85] = Sadler
TrafficCarPos[86] = <<1570.7823, -973.6722, 59.5908>>
TrafficCarQuatX[86] = -0.0207
TrafficCarQuatY[86] = -0.0139
TrafficCarQuatZ[86] = 0.8682
TrafficCarQuatW[86] = 0.4955
TrafficCarRecording[86] = 87
TrafficCarStartime[86] = 72270.0000
TrafficCarModel[86] = bison
TrafficCarPos[87] = <<1586.4951, -987.2821, 60.1358>>
TrafficCarQuatX[87] = 0.0240
TrafficCarQuatY[87] = -0.0041
TrafficCarQuatZ[87] = -0.5017
TrafficCarQuatW[87] = 0.8647
TrafficCarRecording[87] = 88
TrafficCarStartime[87] = 72468.0000
TrafficCarModel[87] = Sadler
TrafficCarPos[88] = <<1588.4323, -962.2726, 60.5369>>
TrafficCarQuatX[88] = -0.0270
TrafficCarQuatY[88] = -0.0121
TrafficCarQuatZ[88] = 0.8626
TrafficCarQuatW[88] = 0.5051
TrafficCarRecording[88] = 89
TrafficCarStartime[88] = 72930.0000
TrafficCarModel[88] = bison
TrafficCarPos[89] = <<1604.5709, -959.2837, 61.3730>>
TrafficCarQuatX[89] = -0.0047
TrafficCarQuatY[89] = -0.0256
TrafficCarQuatZ[89] = 0.8673
TrafficCarQuatW[89] = 0.4972
TrafficCarRecording[89] = 90
TrafficCarStartime[89] = 73392.0000
TrafficCarModel[89] = MESA
TrafficCarPos[90] = <<1620.7482, -967.0914, 62.3388>>
TrafficCarQuatX[90] = 0.0268
TrafficCarQuatY[90] = -0.0015
TrafficCarQuatZ[90] = -0.4947
TrafficCarQuatW[90] = 0.8686
TrafficCarRecording[90] = 91
TrafficCarStartime[90] = 73722.0000
TrafficCarModel[90] = scrap
TrafficCarPos[91] = <<1622.0424, -959.2253, 61.8929>>
TrafficCarQuatX[91] = 0.0124
TrafficCarQuatY[91] = -0.0272
TrafficCarQuatZ[91] = -0.4953
TrafficCarQuatW[91] = 0.8682
TrafficCarRecording[91] = 92
TrafficCarStartime[91] = 73788.0000
TrafficCarModel[91] = buccaneer
TrafficCarPos[92] = <<1633.7638, -942.4766, 63.5730>>
TrafficCarQuatX[92] = -0.0050
TrafficCarQuatY[92] = -0.0265
TrafficCarQuatZ[92] = 0.8694
TrafficCarQuatW[92] = 0.4933
TrafficCarRecording[92] = 93
TrafficCarStartime[92] = 74316.0000
TrafficCarModel[92] = scrap
TrafficCarPos[93] = <<1654.6025, -946.0850, 63.7836>>
TrafficCarQuatX[93] = 0.0279
TrafficCarQuatY[93] = -0.0011
TrafficCarQuatZ[93] = -0.4872
TrafficCarQuatW[93] = 0.8728
TrafficCarRecording[93] = 94
TrafficCarStartime[93] = 74844.0000
TrafficCarModel[93] = buccaneer
TrafficCarPos[94] = <<1658.2738, -938.0108, 64.2821>>
TrafficCarQuatX[94] = 0.0134
TrafficCarQuatY[94] = -0.0275
TrafficCarQuatZ[94] = -0.4875
TrafficCarQuatW[94] = 0.8726
TrafficCarRecording[94] = 95
TrafficCarStartime[94] = 74976.0000
TrafficCarModel[94] = MESA
TrafficCarPos[95] = <<1695.0702, -920.9435, 66.5076>>
TrafficCarQuatX[95] = 0.0270
TrafficCarQuatY[95] = -0.0047
TrafficCarQuatZ[95] = -0.4780
TrafficCarQuatW[95] = 0.8779
TrafficCarRecording[95] = 96
TrafficCarStartime[95] = 76164.0000
TrafficCarModel[95] = landstalker
TrafficCarPos[96] = <<1693.4834, -916.1393, 66.5571>>
TrafficCarQuatX[96] = 0.0145
TrafficCarQuatY[96] = -0.0278
TrafficCarQuatZ[96] = -0.4795
TrafficCarQuatW[96] = 0.8770
TrafficCarRecording[96] = 97
TrafficCarStartime[96] = 76164.0000
TrafficCarModel[96] = MESA
TrafficCarPos[97] = <<1686.7013, -909.9734, 66.3996>>
TrafficCarQuatX[97] = 0.0040
TrafficCarQuatY[97] = -0.0340
TrafficCarQuatZ[97] = 0.8790
TrafficCarQuatW[97] = 0.4755
TrafficCarRecording[97] = 98
TrafficCarStartime[97] = 76890.0000
TrafficCarModel[97] = MESA
//TrafficCarPos[98] = <<1724.1670, -896.0611, 68.5712>>
//TrafficCarQuatX[98] = 0.0151
//TrafficCarQuatY[98] = -0.0278
//TrafficCarQuatZ[98] = -0.4665
//TrafficCarQuatW[98] = 0.8839
//TrafficCarRecording[98] = 99
//TrafficCarStartime[98] = 77616.0000
//TrafficCarModel[98] = MESA
TrafficCarPos[99] = <<1739.9091, -890.9354, 69.7360>>
TrafficCarQuatX[99] = 0.0278
TrafficCarQuatY[99] = -0.0047
TrafficCarQuatZ[99] = -0.4636
TrafficCarQuatW[99] = 0.8856
TrafficCarRecording[99] = 100
TrafficCarStartime[99] = 78210.0000
TrafficCarModel[99] = Sadler
TrafficCarPos[100] = <<1756.1343, -873.2136, 71.2733>>
TrafficCarQuatX[100] = 0.0162
TrafficCarQuatY[100] = -0.0264
TrafficCarQuatZ[100] = -0.4587
TrafficCarQuatW[100] = 0.8880
TrafficCarRecording[100] = 101
TrafficCarStartime[100] = 78738.0000
TrafficCarModel[100] = scrap
TrafficCarPos[101] = <<1736.9729, -875.2971, 69.8341>>
TrafficCarQuatX[101] = -0.0037
TrafficCarQuatY[101] = -0.0346
TrafficCarQuatZ[101] = 0.8860
TrafficCarQuatW[101] = 0.4624
TrafficCarRecording[101] = 102
TrafficCarStartime[101] = 78870.0000
TrafficCarModel[101] = MESA
TrafficCarPos[102] = <<1752.1392, -864.4997, 70.8736>>
TrafficCarQuatX[102] = -0.0029
TrafficCarQuatY[102] = -0.0323
TrafficCarQuatZ[102] = 0.8888
TrafficCarQuatW[102] = 0.4572
TrafficCarRecording[102] = 103
TrafficCarStartime[102] = 79728.0000
TrafficCarModel[102] = MESA
TrafficCarPos[103] = <<1808.1072, -842.0761, 74.2613>>
TrafficCarQuatX[103] = 0.0305
TrafficCarQuatY[103] = -0.0055
TrafficCarQuatZ[103] = -0.4493
TrafficCarQuatW[103] = 0.8929
TrafficCarRecording[103] = 104
TrafficCarStartime[103] = 80850.0000
TrafficCarModel[103] = bison
TrafficCarPos[104] = <<1794.4614, -851.4075, 73.2175>>
TrafficCarQuatX[104] = 0.0337
TrafficCarQuatY[104] = -0.0008
TrafficCarQuatZ[104] = -0.4478
TrafficCarQuatW[104] = 0.8935
TrafficCarRecording[104] = 105
TrafficCarStartime[104] = 81180.0000
TrafficCarModel[104] = MESA
TrafficCarPos[105] = <<1813.3606, -820.5766, 75.1247>>
TrafficCarQuatX[105] = 0.0007
TrafficCarQuatY[105] = -0.0375
TrafficCarQuatZ[105] = 0.8942
TrafficCarQuatW[105] = 0.4460
TrafficCarRecording[105] = 106
TrafficCarStartime[105] = 81576.0000
TrafficCarModel[105] = buccaneer
TrafficCarPos[106] = <<1852.8220, -789.6251, 79.0498>>
TrafficCarQuatX[106] = -0.0088
TrafficCarQuatY[106] = -0.0376
TrafficCarQuatZ[106] = 0.8951
TrafficCarQuatW[106] = 0.4442
TrafficCarRecording[106] = 107
TrafficCarStartime[106] = 83424.0000
TrafficCarModel[106] = bison
TrafficCarPos[107] = <<1893.7203, -758.7050, 83.0709>>
TrafficCarQuatX[107] = -0.0095
TrafficCarQuatY[107] = -0.0383
TrafficCarQuatZ[107] = 0.8947
TrafficCarQuatW[107] = 0.4449
TrafficCarRecording[107] = 108
TrafficCarStartime[107] = 85272.0000
TrafficCarModel[107] = emperor
TrafficCarPos[108] = <<1904.6305, -762.5150, 83.5621>>
TrafficCarQuatX[108] = 0.0265
TrafficCarQuatY[108] = -0.0326
TrafficCarQuatZ[108] = -0.4445
TrafficCarQuatW[108] = 0.8948
TrafficCarRecording[108] = 109
TrafficCarStartime[108] = 85404.0000
TrafficCarModel[108] = MESA
TrafficCarPos[109] = <<1915.3466, -743.6140, 85.1017>>
TrafficCarQuatX[109] = -0.0092
TrafficCarQuatY[109] = -0.0389
TrafficCarQuatZ[109] = 0.8965
TrafficCarQuatW[109] = 0.4411
TrafficCarRecording[109] = 110
TrafficCarStartime[109] = 86262.0000
TrafficCarModel[109] = faggio2
TrafficCarPos[110] = <<1931.0511, -749.3928, 85.8679>>
TrafficCarQuatX[110] = 0.0377
TrafficCarQuatY[110] = -0.0082
TrafficCarQuatZ[110] = -0.4422
TrafficCarQuatW[110] = 0.8961
TrafficCarRecording[110] = 111
TrafficCarStartime[110] = 86460.0000
TrafficCarModel[110] = bison
TrafficCarPos[111] = <<1927.4377, -726.9298, 86.6339>>
TrafficCarQuatX[111] = -0.0316
TrafficCarQuatY[111] = -0.0247
TrafficCarQuatZ[111] = 0.8964
TrafficCarQuatW[111] = 0.4414
TrafficCarRecording[111] = 112
TrafficCarStartime[111] = 86988.0000
TrafficCarModel[111] = emperor
TrafficCarPos[112] = <<1946.5721, -719.6090, 87.9184>>
TrafficCarQuatX[112] = -0.0045
TrafficCarQuatY[112] = -0.0353
TrafficCarQuatZ[112] = 0.8969
TrafficCarQuatW[112] = 0.4408
TrafficCarRecording[112] = 113
TrafficCarStartime[112] = 87846.0000
TrafficCarModel[112] = buccaneer
TrafficCarPos[113] = <<1964.1523, -705.9418, 89.6367>>
TrafficCarQuatX[113] = -0.0064
TrafficCarQuatY[113] = -0.0323
TrafficCarQuatZ[113] = 0.8975
TrafficCarQuatW[113] = 0.4398
TrafficCarRecording[113] = 114
TrafficCarStartime[113] = 88836.0000
TrafficCarModel[113] = MESA
//TrafficCarPos[114] = <<1975.2811, -708.3881, 90.4053>>
//TrafficCarQuatX[114] = 0.0231
//TrafficCarQuatY[114] = -0.0244
//TrafficCarQuatZ[114] = -0.4410
//TrafficCarQuatW[114] = 0.8969
//TrafficCarRecording[114] = 115
//TrafficCarStartime[114] = 89034.0000
//TrafficCarModel[114] = Sadler
TrafficCarPos[115] = <<1975.1713, -689.5190, 91.3147>>
TrafficCarQuatX[115] = -0.0255
TrafficCarQuatY[115] = -0.0189
TrafficCarQuatZ[115] = 0.8984
TrafficCarQuatW[115] = 0.4381
TrafficCarRecording[115] = 116
TrafficCarStartime[115] = 89628.0000
TrafficCarModel[115] = scrap
TrafficCarPos[116] = <<1997.5023, -697.2738, 92.0762>>
TrafficCarQuatX[116] = 0.0286
TrafficCarQuatY[116] = -0.0053
TrafficCarQuatZ[116] = -0.4356
TrafficCarQuatW[116] = 0.8997
TrafficCarRecording[116] = 117
TrafficCarStartime[116] = 90090.0000
TrafficCarModel[116] = scrap
TrafficCarPos[117] = <<1981.1449, -691.6869, 91.0842>>
TrafficCarQuatX[117] = 0.0009
TrafficCarQuatY[117] = -0.0345
TrafficCarQuatZ[117] = 0.8992
TrafficCarQuatW[117] = 0.4362
TrafficCarRecording[117] = 118
TrafficCarStartime[117] = 91080.0000
TrafficCarModel[117] = bison
TrafficCarPos[118] = <<2008.4921, -663.4260, 93.0802>>
TrafficCarQuatX[118] = -0.0187
TrafficCarQuatY[118] = -0.0146
TrafficCarQuatZ[118] = 0.8960
TrafficCarQuatW[118] = 0.4434
TrafficCarRecording[118] = 119
TrafficCarStartime[118] = 91146.0000
TrafficCarModel[118] = faggio2
TrafficCarPos[119] = <<2015.6550, -665.2861, 93.5563>>
TrafficCarQuatX[119] = -0.0041
TrafficCarQuatY[119] = -0.0188
TrafficCarQuatZ[119] = 0.9003
TrafficCarQuatW[119] = 0.4348
TrafficCarRecording[119] = 120
TrafficCarStartime[119] = 91410.0000
TrafficCarModel[119] = Sadler
TrafficCarPos[120] = <<2036.6876, -658.4556, 94.0461>>
TrafficCarQuatX[120] = 0.0087
TrafficCarQuatY[120] = -0.0174
TrafficCarQuatZ[120] = -0.4303
TrafficCarQuatW[120] = 0.9025
TrafficCarRecording[120] = 121
TrafficCarStartime[120] = 92268.0000
TrafficCarModel[120] = bison
TrafficCarPos[121] = <<2057.4204, -648.5696, 94.8897>>
TrafficCarQuatX[121] = 0.0111
TrafficCarQuatY[121] = -0.0006
TrafficCarQuatZ[121] = -0.4291
TrafficCarQuatW[121] = 0.9032
TrafficCarRecording[121] = 122
TrafficCarStartime[121] = 93522.0000
TrafficCarModel[121] = Sadler
TrafficCarPos[122] = <<2062.4495, -627.6309, 94.8388>>
TrafficCarQuatX[122] = 0.0086
TrafficCarQuatY[122] = -0.0116
TrafficCarQuatZ[122] = 0.9041
TrafficCarQuatW[122] = 0.4270
TrafficCarRecording[122] = 123
TrafficCarStartime[122] = 93918.0000
TrafficCarModel[122] = faggio2
TrafficCarPos[123] = <<2099.8123, -614.3542, 94.9874>>
TrafficCarQuatX[123] = 0.0058
TrafficCarQuatY[123] = 0.0122
TrafficCarQuatZ[123] = -0.4234
TrafficCarQuatW[123] = 0.9058
TrafficCarRecording[123] = 124
TrafficCarStartime[123] = 96162.0000
TrafficCarModel[123] = buccaneer
TrafficCarPos[124] = <<2100.9805, -605.6147, 95.4105>>
TrafficCarQuatX[124] = -0.0035
TrafficCarQuatY[124] = -0.0077
TrafficCarQuatZ[124] = -0.4234
TrafficCarQuatW[124] = 0.9059
TrafficCarRecording[124] = 125
TrafficCarStartime[124] = 96492.0000
TrafficCarModel[124] = Sadler
TrafficCarPos[125] = <<2145.7358, -555.6513, 94.4273>>
TrafficCarQuatX[125] = 0.0130
TrafficCarQuatY[125] = 0.0050
TrafficCarQuatZ[125] = 0.9106
TrafficCarQuatW[125] = 0.4131
TrafficCarRecording[125] = 126
TrafficCarStartime[125] = 99594.0000
TrafficCarModel[125] = bison
TrafficCarPos[126] = <<2164.9871, -551.8726, 94.0056>>
TrafficCarQuatX[126] = -0.0161
TrafficCarQuatY[126] = -0.0104
TrafficCarQuatZ[126] = -0.4093
TrafficCarQuatW[126] = 0.9122
TrafficCarRecording[126] = 127
TrafficCarStartime[126] = 100188.0000
TrafficCarModel[126] = MESA
TrafficCarPos[127] = <<2204.7410, -501.7440, 92.0787>>
TrafficCarQuatX[127] = 0.0148
TrafficCarQuatY[127] = 0.0124
TrafficCarQuatZ[127] = 0.9190
TrafficCarQuatW[127] = 0.3937
TrafficCarRecording[127] = 128
TrafficCarStartime[127] = 102960.0000
TrafficCarModel[127] = MESA
TrafficCarPos[128] = <<2203.3894, -496.8589, 91.9812>>
TrafficCarQuatX[128] = -0.0093
TrafficCarQuatY[128] = 0.0226
TrafficCarQuatZ[128] = 0.9187
TrafficCarQuatW[128] = 0.3941
TrafficCarRecording[128] = 129
TrafficCarStartime[128] = 103554.0000
TrafficCarModel[128] = bison
TrafficCarPos[129] = <<2252.1982, -500.7823, 85.1706>>
TrafficCarQuatX[129] = -0.0644
TrafficCarQuatY[129] = 0.0372
TrafficCarQuatZ[129] = -0.4282
TrafficCarQuatW[129] = 0.9006
TrafficCarRecording[129] = 130
TrafficCarStartime[129] = 105402.0000
TrafficCarModel[129] = buccaneer
TrafficCarPos[130] = <<2394.7769, -440.2159, 71.9554>>
TrafficCarQuatX[130] = 0.0148
TrafficCarQuatY[130] = -0.0174
TrafficCarQuatZ[130] = 0.4138
TrafficCarQuatW[130] = 0.9101
TrafficCarRecording[130] = 131
TrafficCarStartime[130] = 110616.0000
TrafficCarModel[130] = bison
TrafficCarPos[131] = <<2494.6003, -527.8857, 68.0146>>
TrafficCarQuatX[131] = 0.0134
TrafficCarQuatY[131] = 0.0081
TrafficCarQuatZ[131] = 0.4058
TrafficCarQuatW[131] = 0.9138
TrafficCarRecording[131] = 132
TrafficCarStartime[131] = 114840.0000
TrafficCarModel[131] = faggio2
TrafficCarPos[132] = <<2486.1355, -675.5621, 61.6248>>
TrafficCarQuatX[132] = -0.0054
TrafficCarQuatY[132] = 0.0043
TrafficCarQuatZ[132] = -0.5571
TrafficCarQuatW[132] = 0.8304
TrafficCarRecording[132] = 133
TrafficCarStartime[132] = 120647.0000
TrafficCarModel[132] = Sadler
TrafficCarPos[133] = <<2447.9417, -684.5295, 62.5512>>
TrafficCarQuatX[133] = -0.0044
TrafficCarQuatY[133] = 0.0070
TrafficCarQuatZ[133] = -0.6585
TrafficCarQuatW[133] = 0.7526
TrafficCarRecording[133] = 134
TrafficCarStartime[133] = 121967.0000
TrafficCarModel[133] = sandking
TrafficCarPos[134] = <<2210.5771, -748.1284, 66.6389>>
TrafficCarQuatX[134] = 0.0036
TrafficCarQuatY[134] = 0.0236
TrafficCarQuatZ[134] = 0.9151
TrafficCarQuatW[134] = 0.4025
TrafficCarRecording[134] = 135
TrafficCarStartime[134] = 129684.0000
TrafficCarModel[134] = MESA
TrafficCarPos[135] = <<2121.3787, -849.5552, 78.6098>>
TrafficCarQuatX[135] = 0.0107
TrafficCarQuatY[135] = 0.0167
TrafficCarQuatZ[135] = 0.8930
TrafficCarQuatW[135] = 0.4497
TrafficCarRecording[135] = 136
TrafficCarStartime[135] = 133512.0000
TrafficCarModel[135] = Sadler
TrafficCarPos[136] = <<1986.4703, -906.1359, 78.6676>>
TrafficCarQuatX[136] = -0.0004
TrafficCarQuatY[136] = 0.0006
TrafficCarQuatZ[136] = 0.8470
TrafficCarQuatW[136] = 0.5316
TrafficCarRecording[136] = 137
TrafficCarStartime[136] = 138396.0000
TrafficCarModel[136] = emperor
TrafficCarPos[137] = <<2004.7029, -986.5530, 82.1703>>
TrafficCarQuatX[137] = -0.0683
TrafficCarQuatY[137] = 0.0124
TrafficCarQuatZ[137] = -0.1439
TrafficCarQuatW[137] = 0.9872
TrafficCarRecording[137] = 138
TrafficCarStartime[137] = 142686.0000
TrafficCarModel[137] = MESA
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// Mission stages
// -----------------------------------------------------------------------------------------------------------
PROC ST_0_MEET()
switch mission_substage
Case STAGE_ENTRY
//Flags
uberRecordingInitialised = FALSE
REQUEST_VEHICLE_RECORDING(0, "BB_FINALE")
REQUEST_PTFX_ASSET()
if IS_REPLAY_IN_PROGRESS()
and not bis_zSkip
CLEAR_AREA(<< 1334.85095, -2555.59424, 45.58296 >>,200,true)
mission_substage = 3
else
Run_Init_CutScene()
IF bcutsceneLoaded
mission_substage++
endif
endif
break
case 1
if IS_CUTSCENE_PLAYING()
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
SET_TODS_CUTSCENE_RUNNING(sTimelapse,false,false,2000,true,false)
DESTROY_ALL_CAMS()
CLEAR_AREA(<< 1334.85095, -2555.59424, 45.58296 >>,200,true)
STOP_FIRE_IN_RANGE(<< 1334.85095, -2555.59424, 45.58296 >>,200)
if DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Trevor"))
AND DOES_ENTITY_EXIST(vehs[mvf_trevor_truck].id)
//-----------load next stage-------
load_asset_stage(msf_1_CHASE_TREVOR)
//---------------------------------
peds[mpf_trevor].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Trevor"))
// vehs[mvf_trevor_truck].id = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Trevors_car"))
SET_VEHICLE_LIGHTS(vehs[mvf_trevor_truck].id,FORCE_VEHICLE_LIGHTS_ON)
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD)
CLEAR_PED_PROP(TREV(), ANCHOR_HEAD)
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
endif
endif
break
case 2
if IS_CUTSCENE_PLAYING()
//frank car
if not DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_REPLAY_START_VEHICLE_AVAILABLE()
vehs[mvf_Frank_car].id = GET_MISSION_START_VEHICLE_INDEX()
IF IS_THIS_MODEL_A_CAR(GET_REPLAY_START_VEHICLE_MODEL())
OR IS_THIS_MODEL_A_BIKE(GET_REPLAY_START_VEHICLE_MODEL())
OR IS_THIS_MODEL_A_BICYCLE(GET_REPLAY_START_VEHICLE_MODEL())
OR IS_THIS_MODEL_A_QUADBIKE(GET_REPLAY_START_VEHICLE_MODEL())
IF GET_REPLAY_START_VEHICLE_MODEL() = BUS
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, <<1360.2174, -2531.7971, 46.8857>>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, 322.7698)
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id,vSTART_CAR)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, fSTARTCAR)
ENDIF
ENDIF
ENDIF
SET_MISSION_START_VEHICLE_AS_VEHICLE_GEN(<<0.0,0.0,0.0>>, 0.0, TRUE, CHAR_FRANKLIN)
ELSE
SET_ENTITY_AS_MISSION_ENTITY(vehs[mvf_Frank_car].id)
DELETE_VEHICLE(vehs[mvf_Frank_car].id)
WHILE NOT CREATE_PLAYER_VEHICLE(vehs[mvf_Frank_car].id, CHAR_FRANKLIN, vSTART_CAR, fSTARTCAR, TRUE, VEHICLE_TYPE_CAR)
PRINTSTRING("waiting on franks car being created") PRINTNL()
WAIT(0)
ENDWHILE
ENDIF
ELSE
WHILE NOT CREATE_PLAYER_VEHICLE(vehs[mvf_Frank_car].id, CHAR_FRANKLIN, vSTART_CAR, fSTARTCAR, TRUE, VEHICLE_TYPE_CAR)
PRINTSTRING("waiting on franks car being created") PRINTNL()
WAIT(0)
ENDWHILE
ENDIF
else
IF GET_ENTITY_MODEL(vehs[mvf_Frank_car].id) = BUS
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, <<1360.2174, -2531.7971, 46.8857>>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, 322.7698)
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Frank_car].id)
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Frank_car].id,false)
ENDIF
ELSE
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, vSTART_CAR)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, fSTARTCAR)
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Frank_car].id)
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Frank_car].id,false)
ENDIF
ENDIF
mission_substage = 3
endif
endif
break
case 3
IF uberRecordingInitialised = FALSE
IF HAS_VEHICLE_RECORDING_BEEN_LOADED(0, "BB_FINALE")
INITIALISE_UBER_PLAYBACK("BB_FINALE", 0, FALSE)
uberRecordingInitialised = TRUE
ENDIF
ENDIF
if not bmusicTriggerStart
if IS_CUTSCENE_PLAYING()
and GET_CUTSCENE_TIME() > 38400
TRIGGER_MUSIC_EVENT("FINA_START")
bmusicTriggerStart= true
endif
endif
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin")
SET_PED_USING_ACTION_MODE(frank(), TRUE, 10000)
// TASK_AIM_GUN_AT_COORD(frank(), GET_ENTITY_COORDS(peds[mpf_trevor].id), 3500, TRUE)
TASK_ENTER_VEHICLE(frank(),vehs[mvf_Frank_car].id,DEFAULT_TIME_NEVER_WARP, VS_DRIVER, PEDMOVE_SPRINT, ECF_RESUME_IF_INTERRUPTED)
// FORCE_PED_AI_AND_ANIMATION_UPDATE(frank(), TRUE)
FORCE_PED_MOTION_STATE(frank(), MS_ON_FOOT_SPRINT, false, FAUS_CUTSCENE_EXIT)
// TASK_AIM_GUN_AT_ENTITY(frank(), peds[mpf_trevor].id, 2000, TRUE)
println("frank")
REPLAY_STOP_EVENT()
bcsFrank = true
else
// Point_Gameplay_cam_at_coord(138.6753)
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
endif
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
//trevor
set_trev()
SET_PED_INTO_VEHICLE(peds[mpf_trevor].id,vehs[mvf_trevor_truck].id)
SET_VEHICLE_DOORS_SHUT(vehs[mvf_trevor_truck].id)
// FORCE_PED_AI_AND_ANIMATION_UPDATE(peds[mpf_trevor].id)
println("trev")
bcsTrev = true
endif
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_car")
FILL_UBER_RECORDING()
// START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id,001,"Finale1")
// SET_PLAYBACK_SPEED(vehs[mvf_trevor_truck].id,1.3)
println("trevcar")
bcsTrevCar = true
endif
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklins_weapon")
IF DOES_ENTITY_EXIST(Weapon_Object)
GIVE_WEAPON_OBJECT_TO_PED(Weapon_Object, Frank())
ENDIF
println("Franklins_weapon")
bcsgun = true
endif
if CAN_SET_EXIT_STATE_FOR_CAMERA()
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0)
bcscam = true
endif
if bcsFrank
and bcsTrev
and bcsTrevCar
and bcsgun
and bcscam
or IS_REPLAY_IN_PROGRESS()
if not bmusicTriggerStart
TRIGGER_MUSIC_EVENT("FINA_START")
bmusicTriggerStart = true
endif
remove_cutscene()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
SET_PLAYER_CONTROL(player_id(),true)
DISPLAY_RADAR(true)
DISPLAY_HUD(true)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_truck].id)
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id,000,"BB_FINALE")
SET_PLAYBACK_SPEED(vehs[mvf_trevor_truck].id,1)
ENDIF
mission_substage = stage_entry
// mission_substage = 4
Mission_Set_Stage(msf_1_CHASE_TREVOR)
ENDIF
break
// CASE 4
// INIT_UBER_RECORDING("BB_FINALE")
// mission_substage = 5
// BREAK
// CASE 5
// UPDATE_UBER_RECORDING()
// BREAK
endswitch
ENDPROC
PROC ST_1_CHASE_TREVOR()
switch mission_substage
Case STAGE_ENTRY
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Stage 1: Chase Trevor")
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_DRIVING)
TRIGGER_MUSIC_EVENT("FINA_CHASE")
//Load in the IPL's for the tanker.
// REQUEST_IPL("DES_tankercrash")
// REQUEST_IPL("tankerexp_grp0")
// REQUEST_IPL("tankercrash_grp1") //BUG FIX 1416493
//Flags
MikeCalledFranDone = FALSE
FrankTurnToSpeak = FALSE
TrevTimeToSpeak = FALSE
failTimerSet = FALSE
iRandomChatTimer = 0
if IS_REPLAY_IN_PROGRESS()
and bCarRunning
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id)
ENDIF
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
REQUEST_VEHICLE_RECORDING(0, "BB_FINALE")
WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(0, "BB_FINALE")
PRINTSTRING("Waiting for recording 0, BB_FINALE loading") PRINTNL()
WAIT(0)
ENDWHILE
INITIALISE_UBER_PLAYBACK("BB_FINALE", 0)
WAIT(0)
FILL_UBER_RECORDING()
WAIT(0)
// START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id,001,"Finale1")
IF DOES_ENTITY_EXIST(vehs[mvf_trevor_truck].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_truck].id)
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id,0,"BB_FINALE")
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id,5000)
ENDIF
ENDIF
ENDIF
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_frank_car].id)
SET_VEHICLE_FORWARD_SPEED(vehs[mvf_Frank_car].id,25)
ENDIF
ENDIF
bCarRunning = false
else
IF NOT IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
REQUEST_VEHICLE_RECORDING(0, "BB_FINALE")
WHILE NOT HAS_VEHICLE_RECORDING_BEEN_LOADED(0, "BB_FINALE")
PRINTSTRING("Waiting for recording 0, BB_FINALE loading") PRINTNL()
WAIT(0)
ENDWHILE
INITIALISE_UBER_PLAYBACK("BB_FINALE", 0)
WAIT(0)
FILL_UBER_RECORDING()
WAIT(0)
START_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id,0,"BB_FINALE")
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id,5000)
ENDIF
endif
if isentityalive(TREV())
SET_ENTITY_INVINCIBLE(trev(),true)
endif
vehs[mvf_trevor_truck].blip = CREATE_BLIP_FOR_VEHICLE(vehs[mvf_trevor_truck].id,true)
PRINT_NOW("FIN1_CHASE",DEFAULT_GOD_TEXT_TIME,1)
if not IS_AUDIO_SCENE_ACTIVE("FIN_1_CHASE_IN_CAR")
START_AUDIO_SCENE("FIN_1_CHASE_IN_CAR")
endif
ADD_PED_FOR_DIALOGUE(convo_struct, 0, NULL, "Michael")
ADD_PED_FOR_DIALOGUE(convo_struct, 1, PLAYER_PED_ID(), "Franklin")
//1991576 - Disable cheats for getting air vehicles, as they'll break the uber chase.
DISABLE_CHEAT(CHEAT_TYPE_SPAWN_VEHICLE, TRUE)
REPLAY_RECORD_BACK_FOR_TIME(0.0, 10.0, REPLAY_IMPORTANCE_HIGHEST)
ADD_ENTITY_TO_AUDIO_MIX_GROUP(vehs[mvf_trevor_truck].id,"FIN_1_TREVORS_TRUCK")
CLEAR_PED_TASKS(peds[mpf_trevor].id)
SET_VEHICLE_RADIO_ENABLED(vehs[mvf_Frank_car].id,true)
bdialougeplayed = false
iDelay = get_game_timer()
mission_substage++
break
case 1
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
PRINT_NOW("FIN1_CHASE",DEFAULT_GOD_TEXT_TIME-500,1)
endif
if IS_PED_IN_ANY_VEHICLE(frank(),true)
and GET_GAME_TIMER() - iDelay > 500
bCueFence = false
bCueTruck = false
bCueSandking = false
bloadscene = true
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1,"Stage 1: Chase Trevor")
mission_substage++
endif
break
case 2
if bloadscene
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(trev(),<< 1770.0, -1474.3, 113 >>) < 300
REMOVE_CUTSCENE()
//-----------load next stage-------
load_asset_stage(msf_2_Fuel_crash_CS)
//---------------------------------
REQUEST_CUTSCENE("FIN_A_MCS_1")//("FIN_A_MCS_1_alt1")
PRINTSTRING("FINALE A = cutscene FIN_A_MCS_1 requested") PRINTNL()
NEW_LOAD_SCENE_START_SPHERE(<<1734.5, -1635.1, 113>>, 100, NEWLOADSCENE_FLAG_REQUIRE_COLLISION)
bloadscene = false
endif
ENDIF
if not bCueFence
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(trev(),<<1551.7487,-2200.6392,76.5152>>) < 100
CREATE_FORCED_OBJECT(<<1551.7487,-2200.6392,76.5152>>,10,PROP_FNCLINK_02P,true)
bCueFence = true
endif
endif
if not bCueTruck
if GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(Frank(),<<1516.7759, -2105.4739, 75.6526>>) < 200
vehs[mvf_scrap].id = CREATE_VEHICLE(scrap,<<1519.6091, -2103.7261, 75.7564>>, 278.7516)
peds[mpf_scrap].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_scrap].id,PEDTYPE_MISSION,S_M_Y_XMECH_02)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_scrap].id,true)
TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING(peds[mpf_Scrap].id,vehs[mvf_scrap].id,"FINA_TRUCK",DRIVINGMODE_PLOUGHTHROUGH,0,EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_NAVMESH_TO_INITIAL_WAYPOINT)
Unload_Asset_Model(sAssetData,scrap)
Unload_Asset_Model(sAssetData,S_M_Y_XMECH_02)
REPLAY_RECORD_BACK_FOR_TIME(5.0, 5.0, REPLAY_IMPORTANCE_HIGH)
bCueTruck = true
endif
endif
if not bCueSandking
if IS_ENTITY_AT_COORD(frank(),<<1742.71191, -1321.26575, 90.47571>>,<<25,25,20>>)
SAFE_RELEASE_PED(peds[mpf_scrap].id)
SAFE_RELEASE_VEHICLE(vehs[mvf_scrap].id)
vehs[mvf_Sandking].id = CREATE_VEHICLE(SANDKING,<<1763.2584, -1437.4216, 111.4945>>, 48.2981)
peds[mpf_sandking].id = CREATE_PED_INSIDE_VEHICLE(vehs[mvf_Sandking].id,PEDTYPE_MISSION,A_M_M_SALTON_01)
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_sandking].id,true)
TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING(peds[mpf_sandking].id,vehs[mvf_Sandking].id,"FINA_SAND",DRIVINGMODE_AVOIDCARS,0,EWAYPOINT_START_FROM_CLOSEST_POINT)
Unload_Asset_Model(sAssetData,SANDKING)
Unload_Asset_Model(sAssetData,A_M_M_SALTON_01)
REPLAY_RECORD_BACK_FOR_TIME(5.0, 5.0, REPLAY_IMPORTANCE_HIGH)
bCueSandking = true
endif
endif
//Request extra collision for the lampost being hit in the playback
IF DOES_ENTITY_EXIST(vehs[mvf_trevor_truck].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_trevor_truck].id)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 15000
AND GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) < 26000
REQUEST_ADDITIONAL_COLLISION_AT_COORD(<<1284.9, -2114.2, 45.8>>)
ENDIF
ENDIF
ENDIF
ENDIF
//Have Michael call Franklin just after they come off the motorway slip road.
IF MikeCalledFranDone = FALSE
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 147292
ADD_PED_FOR_DIALOGUE(convo_struct, 0, NULL, "Michael")
ADD_PED_FOR_DIALOGUE(convo_struct, 1, PLAYER_PED_ID(), "Franklin")
IF CHAR_CALL_PLAYER_CELLPHONE_FORCE_ANSWER(convo_struct, CHAR_MICHAEL, "FIN1AUD", "MIKE_PHONE", CONV_PRIORITY_MEDIUM)
//Yo, where are you man? I'm chasing T through the oil fields.
//Shit. Okay. I'm not far away. Try and stop him.
REPLAY_RECORD_BACK_FOR_TIME(5.0, 5.0, REPLAY_IMPORTANCE_HIGH)
MikeCalledFranDone = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
// if IS_ENTITY_AT_COORD(vehs[mvf_trevor_truck].id,<< 1732.0365, -1580.7053, 111.6170 >>,<<40,30,10>>)
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 172930
SAFE_RELEASE_PED(peds[mpf_sandking].id)
SAFE_RELEASE_VEHICLE(vehs[mvf_Sandking].id)
mission_substage++
ENDIF
endif
break
case 3
IF fdist > 250
Mission_Failed(mff_lost_trevor)
ENDIF
//move michael into place
// if CREATE_PLAYER_VEHICLE(vehs[mvf_michael_car].id,CHAR_MICHAEL,<< 1647.7448, -1646.3500, 111.2280 >>, 269.6557,true,VEHICLE_TYPE_CAR)
mission_substage++
// endif
break
case 4
// if CREATE_PLAYER_PED_ON_FOOT(peds[mpf_michael].id,CHAR_MICHAEL,<< 1647.7448, -1646.3500, 111.2280 >>, 269.6557)
SET_INSTANCE_PRIORITY_HINT( INSTANCE_HINT_NONE )
KILL_CHASE_HINT_CAM(sHintCam)
// Bug fix for 1920968
IF IS_PHONE_ONSCREEN()
DISABLE_CELLPHONE(TRUE)
//DESTROY_MOBILE_PHONE()
ENDIF
if DOES_BLIP_EXIST(vehs[mvf_trevor_truck].blip)
remove_blip(vehs[mvf_trevor_truck].blip)
endif
NEW_LOAD_SCENE_STOP()
IF failTimerSet = FALSE
ifailMissionTimer = GET_GAME_TIMER()
failTimerSet = TRUE
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(5.0, 5.0, REPLAY_IMPORTANCE_HIGH)
// set_mike()
mission_substage = STAGE_ENTRY
mission_set_stage(msf_2_Fuel_crash_CS)
// endif
break
endswitch
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
PRINTSTRING("cutscene ready for variations to be set now 1")
SET_CS_OUTFITS_AND_EXITS()
ENDIF
clear_players_task_on_control_input(SCRIPT_TASK_ENTER_VEHICLE)
//check if player is cheating across the hill
// if DOES_ENTITY_EXIST(frank())
// and DOES_ENTITY_EXIST(peds[mpf_trevor].id)
// vector vPlayer = GET_ENTITY_COORDS(frank())
// vector vTrev = get_entity_coords(peds[mpf_trevor].id)
// if (vPlayer.z - vTrev.z) > 15
// Mission_Failed(mff_lost_trevor)
// endif
// endif
//------------------rubber banding chase----------------------
if DOES_ENTITY_EXIST(vehs[mvf_trevor_truck].id) And DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_playback_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
// Rubber_banding(fplaybackSpeed,vehs[mvf_Frank_car].id,vehs[mvf_trevor_truck].id)
PRINTSTRING("distance between cars is ") PRINTFLOAT(GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), TREV())) PRINTNL()
IF NOT IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID())
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) < 25000
CALCULATE_NEW_PLAYBACK_SPEED_FROM_CHAR(vehs[mvf_trevor_truck].id, PLAYER_PED_ID(), fPlaybackSpeed, 1, 25, 35, 100, 1.7, 1, 0.7, FALSE)
ENDIF
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 25000
AND GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) < 111000
CALCULATE_NEW_PLAYBACK_SPEED_FROM_CHAR(vehs[mvf_trevor_truck].id, PLAYER_PED_ID(), fPlaybackSpeed, 1.1, 40, 50, 100, 1.7, 1, 0.7, FALSE)
ENDIF
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 111000
CALCULATE_NEW_PLAYBACK_SPEED_FROM_CHAR(vehs[mvf_trevor_truck].id, PLAYER_PED_ID(), fPlaybackSpeed, 1.1, 25, 35, 100, 1.7, 1, 0.7, FALSE)
ENDIF
ELSE
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) < 25000
CALCULATE_NEW_PLAYBACK_SPEED_FROM_CHAR(vehs[mvf_trevor_truck].id, PLAYER_PED_ID(), fPlaybackSpeed, 1.5, 25, 35, 100, 1.7, 1, 0.7, FALSE)
ENDIF
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 25000
AND GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) < 111000
CALCULATE_NEW_PLAYBACK_SPEED_FROM_CHAR(vehs[mvf_trevor_truck].id, PLAYER_PED_ID(), fPlaybackSpeed, 1.5, 40, 50, 100, 1.7, 1, 0.7, FALSE)
ENDIF
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 111000
CALCULATE_NEW_PLAYBACK_SPEED_FROM_CHAR(vehs[mvf_trevor_truck].id, PLAYER_PED_ID(), fPlaybackSpeed, 1.5, 25, 35, 100, 1.7, 1, 0.7, FALSE)
ENDIF
ENDIF
UPDATE_UBER_PLAYBACK(vehs[mvf_trevor_truck].id, fPlaybackSpeed)
CREATE_ALL_WAITING_UBER_CARS()
// SET_PLAYBACK_SPEED(vehs[mvf_trevor_truck].id,fplaybackSpeed)
ENDIF
SET_ENTITY_INVINCIBLE(vehs[mvf_trevor_truck].id,true)
endif
if DOES_ENTITY_EXIST(vehs[mvf_michael_car].id)
if IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_michael_car].id)
SET_PLAYBACK_SPEED(vehs[mvf_michael_car].id,fplaybackSpeed)
endif
endif
if DOES_ENTITY_EXIST(frank())
and DOES_ENTITY_EXIST(peds[mpf_trevor].id)
IF NOT IS_PED_INJURED(frank())
AND NOT IS_PED_INJURED(peds[mpf_trevor].id)
IF IS_playback_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
fDist = VDIST(GET_ENTITY_COORDS(frank()),GET_ENTITY_COORDS(peds[mpf_trevor].id))
//Fail reasons
if fCurrentPlaybackTime > 21000
and fdist > 300
Mission_Failed(mff_lost_trevor)
elif fCurrentPlaybackTime < 21000
and fdist > 350
Mission_Failed(mff_lost_trevor)
endif
//Chase Dialogue should stop in time for the phone call
IF GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) < 140000
//Have first line from Franklin at start of chase
if bdialougeplayed = false
and GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 10000
ADD_PED_FOR_DIALOGUE(convo_struct,0,frank(),"FRANKLIN")
ADD_PED_FOR_DIALOGUE(convo_struct,1,peds[mpf_trevor].id,"TREVOR")
IF CREATE_CONVERSATION(convo_struct,"FIN1AUD","FIN1_CHS",CONV_PRIORITY_MEDIUM)
//Shit.
//Man, come on.
iRandomChatTimer = GET_GAME_TIMER()
FrankTurnToSpeak = TRUE
bdialougeplayed = true
ENDIF
endif
//Now start random lines between Franklin and Trevor throughout chase. Providing they are close enough to each other
if bdialougeplayed = true
and GET_TIME_POSITION_IN_RECORDING(vehs[mvf_trevor_truck].id) > 15000
and GET_DISTANCE_BETWEEN_ENTITIES(frank(),peds[mpf_trevor].id) < 60
IF FrankTurnToSpeak = TRUE
IF GET_GAME_TIMER() > (iRandomChatTimer + 8000)
IF NOT IS_MESSAGE_BEING_DISPLAYED()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
ADD_PED_FOR_DIALOGUE(convo_struct,0,frank(),"FRANKLIN")
ADD_PED_FOR_DIALOGUE(convo_struct,1,peds[mpf_trevor].id,"TREVOR")
IF CREATE_CONVERSATION(convo_struct,"FIN1AUD","FIN1_CALL",CONV_PRIORITY_MEDIUM)
//Trevor!
//Trevor, dog!
//Eh, let's do this in a quiet place!
//Pull over, let's talk!
//You goin' run from me?
//Where you going?
iRandomChatTimer = GET_GAME_TIMER()
TrevTimeToSpeak = TRUE
FrankTurnToSpeak = FALSE
ENDIF
ENDIF
ENDIF
endif
endif
IF TrevTimeToSpeak = TRUE
IF GET_DISTANCE_BETWEEN_ENTITIES(frank(),peds[mpf_trevor].id) < 40
IF GET_GAME_TIMER() > (iRandomChatTimer + 8000)
IF NOT IS_MESSAGE_BEING_DISPLAYED()
IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
OR NOT IS_SUBTITLE_PREFERENCE_SWITCHED_ON()
ADD_PED_FOR_DIALOGUE(convo_struct,0,frank(),"FRANKLIN")
ADD_PED_FOR_DIALOGUE(convo_struct,1,peds[mpf_trevor].id,"TREVOR")
IF CREATE_CONVERSATION(convo_struct,"FIN1AUD","FIN1_CALLBCK",CONV_PRIORITY_MEDIUM)
//You snake!
//I was good to you!
//I'll come back and gut you!
//I will hunt you down!
//I shoulda known!
//I'll cut your cold heart out your chest!
//I fell for the lies - again!
//I'll pull your lying tongue out your throat!
iRandomChatTimer = GET_GAME_TIMER()
FrankTurnToSpeak = TRUE
TrevTimeToSpeak = FALSE
ENDIF
ENDIF
ENDIF
endif
ELSE
iRandomChatTimer = GET_GAME_TIMER()
FrankTurnToSpeak = TRUE
TrevTimeToSpeak = FALSE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
endif
endif
if DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
if not IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
Mission_Failed(mff_destroyed_veh)
endif
endif
//hint cam
CONTROL_VEHICLE_CHASE_HINT_CAM_IN_VEHICLE(sHintCam, vehs[mvf_trevor_truck].id)
UPDATE_CHASE_BLIP(vehs[mvf_trevor_truck].blip,vehs[mvf_trevor_truck].id,350)
if IS_GAMEPLAY_HINT_ACTIVE()
if not IS_AUDIO_SCENE_ACTIVE("FIN_1_FOCUS_CAM")
START_AUDIO_SCENE("FIN_1_FOCUS_CAM")
endif
else
if IS_AUDIO_SCENE_ACTIVE("FIN_1_FOCUS_CAM")
stop_Audio_scene("FIN_1_FOCUS_CAM")
endif
endif
ENDPROC
INT iFuelSpillSound
PROC ST_2_Fuel_crash_CS()
// url:bugstar:2048375
DISABLE_CONTROL_ACTION( PLAYER_CONTROL, INPUT_NEXT_CAMERA )
switch mission_substage
Case STAGE_ENTRY
if HAS_CUTSCENE_LOADED()
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2,"Stage 2: Fuel Crash CutScene")
REMOVE_IPL("DES_tankerexp")
REMOVE_IPL("tankerexp_grp1")
REMOVE_IPL("tankerexp_grp2")
IPLsChanged = FALSE
FranksCarMoved = FALSE
trevsLightsTurnedOff = FALSE
MikesLightsTurnedOff = FALSE
rayfireBeingSkipped = FALSE
IF IS_PLAYBACK_GOING_ON_FOR_VEHICLE(vehs[mvf_trevor_truck].id)
STOP_PLAYBACK_RECORDED_VEHICLE(vehs[mvf_trevor_truck].id)
ENDIF
STOP_AUDIO_SCENES()
START_AUDIO_SCENE("FIN_1_TREVOR_CRASH_SCENE")
REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP(vehs[mvf_trevor_truck].id)
set_exit_states(false)
//scene stuff
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_trevor].id,"Trevor",CU_ANIMATE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_PRESERVE_BODY_BLOOD_DAMAGE|CEO_PRESERVE_FACE_BLOOD_DAMAGE)
REGISTER_ENTITY_FOR_CUTSCENE(NULL,"Michael",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, GET_PLAYER_PED_MODEL(CHAR_MICHAEL), CEO_PRESERVE_BODY_BLOOD_DAMAGE|CEO_PRESERVE_FACE_BLOOD_DAMAGE)
// REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_michael_car].id,"Michaels_car",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
REGISTER_ENTITY_FOR_CUTSCENE(NULL,"Showroom_Car",CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, PREMIER)
REGISTER_ENTITY_FOR_CUTSCENE(vehs[mvf_trevor_truck].id,"Trevors_car",CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
mission_substage++
ELSE
IF failTimerSet = TRUE
IF GET_GAME_TIMER() > (ifailMissionTimer + 5000)
Mission_Failed(mff_lost_trevor)
ENDIF
ENDIF
PRINTSTRING("waiting for cutscene to load fin_a_mcs_1")PRINTNL()
ENDIF
break
case 1
if IS_CUTSCENE_PLAYING()
REQUEST_PTFX_ASSET()
REQUEST_ACTION_MODE_ASSET("FRANKLIN_ACTION")
//Put the lights on for the showroom_car and Trevors car
IF NOT IS_ENTITY_DEAD(vehs[mvf_trevor_truck].id)
SET_VEHICLE_LIGHTS(vehs[mvf_trevor_truck].id, FORCE_VEHICLE_LIGHTS_ON)
ENDIF
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_Car"))
IF NOT IS_ENTITY_DEAD(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_Car"))
SET_VEHICLE_LIGHTS(GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_Car")), FORCE_VEHICLE_LIGHTS_ON)
ENDIF
ENDIF
//Grab Michael
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Michael", PLAYER_ZERO))
IF NOT IS_ENTITY_DEAD(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Michael", PLAYER_ZERO))
peds[mpf_michael].id = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Michael", PLAYER_ZERO))
ENDIF
ENDIF
//Move Franklin to safe spot as soon as scene starts
IF FranksCarMoved = FALSE
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, <<1772.7411, -1465.8165, 111.5278>>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, 185.4462)
FranksCarMoved = TRUE
ENDIF
ENDIF
//-----------load next stage-------
load_asset_stage(msf_3_Ignite_trevor)
//---------------------------------
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
TRIGGER_MUSIC_EVENT("FINA_NITRO_CRASH")
stop_audio_scenes()
SET_PED_USING_ACTION_MODE(Frank(), TRUE)
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD)
CLEAR_PED_PROP(peds[mpf_trevor].id, ANCHOR_HEAD)
CLEAR_PED_PROP(peds[mpf_michael].id, ANCHOR_HEAD)
REMOVE_PLAYER_HELMET(PLAYER_ID(), TRUE)
prep_stop_cutscene(true)
bPetrol1 = false
bMikeDamage = false
btrevorDammage = false
ipetrolStage = 0
FranksCarMoved = FALSE
TrevCarImpactTriggered = FALSE
bVideoRecordingDone = FALSE
mission_substage++
endif
break
case 2
if IS_CUTSCENE_PLAYING()
//Add in a video recording for the crash scene
IF bVideoRecordingDone = FALSE
IF GET_CUTSCENE_TIME() > 17814
REPLAY_RECORD_BACK_FOR_TIME(12.0, 0, REPLAY_IMPORTANCE_HIGH)
bVideoRecordingDone = TRUE
ENDIF
ENDIF
//Add effect for impact
IF TrevCarImpactTriggered = FALSE
IF GET_CUTSCENE_TIME() > 8308
IF HAS_PTFX_ASSET_LOADED()
IF START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_fin_trev_car_impact", <<1732.5, -1628.5, 112.8>>, <<0, 0, 0>>)
PRINTSTRING("TrevCarImpactTriggered = TRUE")
TrevCarImpactTriggered = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
//Change IPL's when camera is looking at Franklin
IF IPLsChanged = FALSE
IF GET_CUTSCENE_TIME() > 36635
AND IS_SCREEN_FADED_IN()
REMOVE_IPL("DES_tankercrash")
REMOVE_IPL("tankercrash_grp2")
REMOVE_IPL("tankerexp_grp0")
REQUEST_IPL("DES_tankerexp")
PRINTSTRING("IPL's being changed now")
IPLsChanged = TRUE
ENDIF
ENDIF
//Turn Trev's car lights off just as he crashes.
IF trevsLightsTurnedOff = FALSE
IF GET_CUTSCENE_TIME() > 8330
IF DOES_ENTITY_EXIST(vehs[mvf_trevor_truck].id)
IF NOT IS_ENTITY_DEAD(vehs[mvf_trevor_truck].id)
SET_VEHICLE_LIGHTS(vehs[mvf_trevor_truck].id, FORCE_VEHICLE_LIGHTS_OFF)
iFuelSpillSound = GET_SOUND_ID()
PLAY_SOUND_FROM_COORD(iFuelSpillSound, "FINALE_PETROL_SPILL", <<1733, -1627, 113>>)
trevsLightsTurnedOff = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
//Turn Mike's car lights off just as he crashes.
IF MikesLightsTurnedOff = FALSE
IF GET_CUTSCENE_TIME() > 8049
IF DOES_ENTITY_EXIST(MikeShowRoomCar)
IF NOT IS_ENTITY_DEAD(MikeShowRoomCar)
SET_VEHICLE_LIGHTS(MikeShowRoomCar, FORCE_VEHICLE_LIGHTS_OFF)
MikesLightsTurnedOff = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
IF FranksCarMoved = FALSE
IF GET_CUTSCENE_TIME() > 8088
//frank car
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id, <<1732.6128, -1578.4955, 111.5987>>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id, 134.9147)
FranksCarMoved = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
//Grab Michael's showroom car
IF NOT DOES_ENTITY_EXIST(MikeShowRoomCar)
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_Car"))
SET_ENTITY_AS_MISSION_ENTITY(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_Car"))
MikeShowRoomCar = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Showroom_Car"))
ENDIF
ENDIF
if not bPetrol1
// if Add_Petrol_trail()
bPetrol1 = true
// endif
endif
if not btrevorDammage
if DOES_ENTITY_EXIST(TREV())
IF NOT IS_PED_INJURED(TREV())
if HAS_ANIM_EVENT_FIRED(TREV(),GET_HASH_KEY("Trevor_Damage"))
PRINTSTRING("anim event Trevor_Damage has triggered and damage should be given to Trevor") PRINTNL()
SET_PED_WETNESS_HEIGHT(TREV(),1)
SET_ENABLE_PED_ENVEFF_SCALE(trev(), TRUE)
SET_PED_ENVEFF_COLOR_MODULATOR(trev(),73,51,99)
SET_PED_ENVEFF_SCALE(trev(),0.6)
SET_PED_ENVEFF_CPV_ADD(trev(),0.3)
APPLY_PED_DAMAGE_PACK(trev(),"BigHitByVehicle",0,1)
btrevorDammage = true
ENDIF
ENDIF
ENDIF
ENDIF
if not bMikeDamage
if DOES_ENTITY_EXIST(MIKE())
IF NOT IS_PED_INJURED(MIKE())
if HAS_ANIM_EVENT_FIRED(MIKE(),GET_HASH_KEY("Michael_Damage"))
// APPLY_PED_DAMAGE_PACK(MIKE(),"BigHitByVehicle",0,1)
bMikeDamage = true
endif
endif
endif
endif
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin")
// SET_ENTITY_COORDS(Frank(),<< 1731.5767, -1615.9362, 112.4401 >>)
// SET_ENTITY_HEADING(Frank(),-154.56)
// SET_ENTITY_COORDS(Frank(), <<1731.5765, -1615.9360, 111.4372>>)
// SET_ENTITY_HEADING(Frank(), 205.4400)
SET_PED_USING_ACTION_MODE(Frank(), TRUE)
FORCE_PED_MOTION_STATE(Frank(), MS_ACTIONMODE_IDLE, FALSE, FAUS_CUTSCENE_EXIT)
println("frank")
bcsFrank = true
// else
// Point_Gameplay_cam_at_coord(218.2864)
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor")
println("trev")
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG1,sAnim_trev_LOOP,INSTANT_BLEND_IN,SLOW_BLEND_OUT)
FORCE_PED_AI_AND_ANIMATION_UPDATE(trev())
bcsTrev = true
REPLAY_STOP_EVENT()
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael")
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_michael].id,TRUE)
SET_PED_RELATIONSHIP_GROUP_HASH(peds[mpf_michael].id,REL_Michael)
SET_PED_ACCURACY(peds[mpf_michael].id,100)
SET_PED_COMBAT_ATTRIBUTES(peds[mpf_michael].id,CA_PERFECT_ACCURACY,true)
STOP_PED_SPEAKING(peds[mpf_michael].id,true)
SET_PED_CONFIG_FLAG(peds[mpf_michael].id,PCF_DisableExplosionReactions,true)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(peds[mpf_michael].id,SyncSceneIGMike,sAnimDict_IG1,sAnim_mike_LOOP,walk_BLEND_IN,SLOW_BLEND_OUT)
FORCE_PED_AI_AND_ANIMATION_UPDATE(peds[mpf_michael].id)
bcsMikeCar = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Showroom_Car")
// SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehs[mvf_michael_car].id)
//Turn Mike's car lights off just as he crashes.
IF MikesLightsTurnedOff = FALSE
IF DOES_ENTITY_EXIST(MikeShowRoomCar)
IF NOT IS_ENTITY_DEAD(MikeShowRoomCar)
SET_VEHICLE_LIGHTS(MikeShowRoomCar, FORCE_VEHICLE_LIGHTS_OFF)
SET_ENTITY_PROOFS(MikeShowRoomCar, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE)
MikesLightsTurnedOff = TRUE
ENDIF
ENDIF
ENDIF
println("mike car")
bcsMike = true
endif
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevors_car")
//Turn Trev's car lights off just as he crashes.
IF trevsLightsTurnedOff = FALSE
IF DOES_ENTITY_EXIST(vehs[mvf_trevor_truck].id)
IF NOT IS_ENTITY_DEAD(vehs[mvf_trevor_truck].id)
SET_VEHICLE_LIGHTS(vehs[mvf_trevor_truck].id, FORCE_VEHICLE_LIGHTS_OFF)
trevsLightsTurnedOff = TRUE
ENDIF
ENDIF
ENDIF
// SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION(vehs[mvf_trevor_truck].id)
println("trev car")
bcsTrevCar = true
endif
if bcsFrank
and bcsTrevCar
and bcsTrev
and bcsMike
and bcsMikeCar
IF NOT IS_ENTITY_DEAD(vehs[mvf_michael_car].id)
SET_ENTITY_INVINCIBLE(vehs[mvf_michael_car].id,false)
ENDIF
DISPLAY_RADAR(true)
DISPLAY_HUD(true)
SET_PLAYER_CONTROL(player_Id(),true)
bPlaceholder = false
IF FranksCarMoved = FALSE
//frank car
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id,<< 1728.3752, -1610.3052, 111.4705 >>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id,160.3058)
FranksCarMoved = TRUE
ENDIF
if isentityalive(trev())
SET_PED_WETNESS_HEIGHT(TREV(),1)
endif
IF IS_SCREEN_FADED_OUT()
rayfireBeingSkipped = TRUE
WHILE rayfireBeingSkipped = TRUE
SWITCH rayfireStage
CASE 0
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
SETTIMERB(0)
CrashRayfireEvent = GET_RAYFIRE_MAP_OBJECT(<<1725.7545, -1636.3733, 117.9358>>, 20, "DES_tankercrash")
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(CrashRayfireEvent)
SET_STATE_OF_RAYFIRE_MAP_OBJECT(CrashRayfireEvent, RFMO_STATE_ENDING)
rayfireStage ++
ELSE
PRINTSTRING("rayfire doesn't exist")
rayfireStage ++
ENDIF
BREAK
CASE 1
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(CrashRayfireEvent)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(CrashRayfireEvent) = RFMO_STATE_END
// SET_STATE_OF_RAYFIRE_MAP_OBJECT(CrashRayfireEvent, RFMO_STATE_END)
PRINTSTRING("Setting rayfire state to end") PRINTNL()
rayfireStage ++
ELSE
IF TIMERB() > 10000
PRINTSTRING("timer b is over 10000 so moving on for safety")
rayfireStage ++
ENDIF
PRINTSTRING("waiting on rayfire event state changing to RFMO_STATE_END") PRINTNL()
ENDIF
ELSE
rayfireStage ++
PRINTSTRING("rayfire doesn't exist")
ENDIF
BREAK
CASE 2
REMOVE_IPL("DES_tankercrash")
REMOVE_IPL("tankerexp_grp0")
REMOVE_IPL("tankercrash_grp1")
REMOVE_IPL("tankercrash_grp2")
REQUEST_IPL("DES_tankerexp")
PRINTSTRING("requesting DES_tankerexp now") PRINTNL()
WHILE NOT IS_IPL_ACTIVE("DES_tankerexp")
PRINTSTRING("waiting for IPL DES_tankerexp to activate")
WAIT(0)
ENDWHILE
rayfireStage ++
BREAK
CASE 3
IF timerb() > 5000
rayfireBeingSkipped = FALSE
ENDIF
BREAK
ENDSWITCH
WAIT(0)
IF NOT IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_OUT(0)
ENDIF
//Have this as a safety net to make sure it moves on after 10seconds.
IF timerb() > 10000
rayfireBeingSkipped = FALSE
ENDIF
PRINTSTRING("Waiting on rayfire event ending") PRINTNL()
ENDWHILE
ENDIF
mission_substage = 3
endif
IF NOT IS_CUTSCENE_ACTIVE()
IF NOT IS_ENTITY_DEAD(vehs[mvf_michael_car].id)
SET_ENTITY_INVINCIBLE(vehs[mvf_michael_car].id,false)
ENDIF
DISPLAY_RADAR(true)
DISPLAY_HUD(true)
SET_PLAYER_CONTROL(player_Id(),true)
bPlaceholder = false
IF FranksCarMoved = FALSE
//frank car
SET_ENTITY_COORDS(vehs[mvf_Frank_car].id,<< 1728.3752, -1610.3052, 111.4705 >>)
SET_ENTITY_HEADING(vehs[mvf_Frank_car].id,160.3058)
FranksCarMoved = TRUE
ENDIF
if isentityalive(trev())
SET_PED_WETNESS_HEIGHT(TREV(),1)
endif
// IF IS_SCREEN_FADED_OUT()
// REMOVE_IPL("DES_tankercrash")
// REMOVE_IPL("tankercrash_grp1")
// REMOVE_IPL("tankercrash_grp2")
// REMOVE_IPL("tankerexp_grp0")
// REQUEST_IPL("DES_tankerexp")
// PRINTSTRING("requesting DES_tankerexp now 1") PRINTNL()
// WHILE NOT IS_IPL_ACTIVE("DES_tankerexp")
// PRINTSTRING("waiting for IPL DES_tankerexp to activate 1")
// WAIT(0)
// ENDWHILE
// ENDIF
mission_substage = 3
ENDIF
break
case 3
IF NOT IS_SCREEN_FADED_IN()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
ENDIF
iCamTimer = GET_GAME_TIMER()
mission_substage = stage_entry
Mission_Set_Stage(msf_3_Ignite_trevor)
break
endswitch
//Make sure Trev is wet
IF mission_substage > 1
IF IS_CUTSCENE_PLAYING()
IF GET_CUTSCENE_TIME() > 15019
IF DOES_ENTITY_EXIST(TREV())
SET_PED_WETNESS_ENABLED_THIS_FRAME(TREV())
ENDIF
ENDIF
ELSE
IF DOES_ENTITY_EXIST(TREV())
SET_PED_WETNESS_ENABLED_THIS_FRAME(TREV())
ENDIF
ENDIF
ENDIF
// if bSkipCut
// and not IS_CUTSCENE_PLAYING()
// bSkipCut = false
// bDoSkip = true
// iSkipToStage = ENUM_TO_INT(msf_3_Ignite_trevor)
// DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME)
// endif
ENDPROC
//PURPOSE: Handles the rayfire event for the tanker blowing up
PROC rayfireController()
SWITCH iRayfireStage
CASE 0
rfGasTankExplosion = GET_RAYFIRE_MAP_OBJECT(<<1725.7545, -1636.3733, 117.9358>>, 20, "des_tankerexplosion")
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfGasTankExplosion)
PRINTSTRING("RAYFIRE : rfGasTankExplosion exists") PRINTNL()
iRayfireStage ++
ELSE
PRINTSTRING("RAYFIRE : rfGasTankExplosion doesn't exist") PRINTNL()
ENDIF
BREAK
CASE 1
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfGasTankExplosion, RFMO_STATE_PRIMING)
PRINTSTRING("RAYFIRE : rfGasTankExplosion being set to RFMO_STATE_PRIMING") PRINTNL()
iRayfireStage++
BREAK
CASE 2
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfGasTankExplosion) = RFMO_STATE_PRIMED
PRINTSTRING("RAYFIRE : rfGasTankExplosion is at RFMO_STATE_PRIMED") PRINTNL()
iRayfireStage++
ENDIF
BREAK
CASE 3
IF mission_substage > 3
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfGasTankExplosion, RFMO_STATE_START_ANIM)
PRINTSTRING("RAYFIRE : rfGasTankExplosion is being set to RFMO_STATE_START_ANIM") PRINTNL()
iRayfireStage++
ENDIF
BREAK
CASE 4
IF mission_substage = 5
IF (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 0.16)
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfGasTankExplosion, RFMO_STATE_ENDING)
iRayfireStage++
ENDIF
ENDIF
BREAK
CASE 5
//Handle the rayfire event to end at a specific time in the cutscene
IF rayfireSetToEndState = FALSE
IF mission_substage = 5
IF (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 0.184)
IF DOES_RAYFIRE_MAP_OBJECT_EXIST(rfGasTankExplosion)
IF GET_STATE_OF_RAYFIRE_MAP_OBJECT(rfGasTankExplosion) = RFMO_STATE_ENDING
SET_STATE_OF_RAYFIRE_MAP_OBJECT(rfGasTankExplosion, RFMO_STATE_END)
PRINTSTRING("Setting rayfire state to end") PRINTNL()
rayfireSetToEndState = TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
PRINTSTRING("RAYFIRE : rfGasTankExplosion is running") PRINTNL()
BREAK
ENDSWITCH
ENDPROC
PROC ST_3_Ignite_trevor()
IF DOES_ENTITY_EXIST(TREV())
SET_PED_WETNESS_ENABLED_THIS_FRAME(TREV())
ENDIF
// Removed due to url:bugstar:2048375
//DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE()
SET_PED_MAX_MOVE_BLEND_RATIO(Frank(),PEDMOVE_STILL)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_COVER)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_HEAVY)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK_LIGHT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK1)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MELEE_ATTACK2)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_UD)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_MOVE_LR)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PREV_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_DUCK)
DISABLE_CELLPHONE(TRUE)
IF mission_substage > 0
rayfireController()
ENDIF
switch mission_substage
Case STAGE_ENTRY
// REQUEST_IPL("tankerexp_grp1")
iRayfireStage = 0
rayfireSetToEndState = FALSE
streamLoaded = FALSE
streamStarted = FALSE
PetrolEffectTriggered = FALSE
bMuz_pistol_effect_played = FALSE
// doneTrevCHat = FALSE
REQUEST_PTFX_ASSET()
if IS_SCREEN_FADED_OUT()
IF HAS_SOUND_FINISHED(iFuelSpillSound)
iFuelSpillSound = GET_SOUND_ID()
PLAY_SOUND_FROM_COORD(iFuelSpillSound, "FINALE_PETROL_SPILL", <<1733, -1627, 113>>)
ENDIF
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
//sync scene
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG1,sAnim_mike_LOOP,INSTANT_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG1,sAnim_trev_LOOP,INSTANT_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
endif
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3,"Stage 3: Ignite Trevor")
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(peds[mpf_michael].id,TRUE)
SET_ENTITY_INVINCIBLE(TREV(),true)
if not DOES_BLIP_EXIST(blip_objective)
blip_objective = CREATE_BLIP_FOR_PED(TREV(),true)
endif
if not IS_AUDIO_SCENE_ACTIVE("FIN_1_DESTROY_TREVOR")
START_AUDIO_SCENE("FIN_1_DESTROY_TREVOR")
endif
if HAS_PED_GOT_WEAPON(Frank(),WEAPONTYPE_PISTOL)
SET_CURRENT_PED_WEAPON(Frank(),WEAPONTYPE_PISTOL,true)
IF GET_AMMO_IN_PED_WEAPON(Frank(),WEAPONTYPE_PISTOL) < 50
ADD_AMMO_TO_PED(Frank(),WEAPONTYPE_PISTOL, 50)
ENDIF
else
GIVE_WEAPON_TO_PED(Frank(),WEAPONTYPE_PISTOL,50,true,true)
endif
IF DOES_CAM_EXIST(SyncSceneCam)
DESTROY_CAM(SyncSceneCam)
ENDIF
IF DOES_CAM_EXIST(SyncSceneTrevCam)
DESTROY_CAM(SyncSceneTrevCam)
ENDIF
//Create the scripted camera for the sync scenes
IF NOT DOES_CAM_EXIST(SyncSceneCam)
SyncSceneCam = CREATE_CAM("DEFAULT_ANIMATED_CAMERA") //BUG FIX 1324072
ENDIF
IF NOT DOES_CAM_EXIST(SyncSceneTrevCam)
SyncSceneTrevCam = CREATE_CAM("DEFAULT_ANIMATED_CAMERA") //BUG FIX 1324072
ENDIF
REPLAY_RECORD_BACK_FOR_TIME(0.0, 5.0, REPLAY_IMPORTANCE_HIGHEST)
// REQUEST_CUTSCENE("fin_a_ext") //BUG FIX 1408210
print_now("FIN1_DES",DEFAULT_GOD_TEXT_TIME,1)
iMikeKillTimer = get_Game_timer()
iIgniteStage = 0
bMikeKills = false
bFrankaim = false
cutsceneRequested = FALSE //BUG FIX 1408210
mission_substage++
break
case 1
//Request next cutscene once previous one has finished.
IF cutsceneRequested = FALSE
IF NOT IS_CUTSCENE_ACTIVE()
REQUEST_CUTSCENE("fin_a_ext") //BUG FIX 1408210
cutsceneRequested = TRUE
ENDIF
ELSE
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CS_OUTFITS_AND_EXITS()
ENDIF
ENDIF
if get_game_timer() - iMikeKillTimer > 4000 //8000
switch iIgniteStage
case 0 // mike
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
ADD_PED_FOR_DIALOGUE(convo_struct,2,mike(),"MICHAEL")
if PLAY_SINGLE_LINE_FROM_CONVERSATION(convo_struct,"FIN1AUD","FIN1_COUGH","FIN1_COUGH_1",CONV_PRIORITY_MEDIUM)
if IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG1,sAnim_mike_c,instant_BLEND_IN,normal_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
iMikeKillTimer = get_Game_timer()
iIgniteStage++
endif
endif
endif
break
case 1 //trev
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGtrev)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGTREV) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
ADD_PED_FOR_DIALOGUE(convo_struct,1,trev(),"TREVOR")
if CREATE_CONVERSATION(convo_struct,"FIN1AUD","FIN1_COUGH2",CONV_PRIORITY_MEDIUM)
if IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG1,sAnim_trev_A,instant_BLEND_IN,normal_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
iMikeKillTimer = get_Game_timer()
iIgniteStage = 5
endif
endif
endif
break
case 2// mike
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
ADD_PED_FOR_DIALOGUE(convo_struct,2,mike(),"MICHAEL")
if CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"FIN1AUD","FIN1_COUGH","FIN1_COUGH_2","FIN1_COUGH","FIN1_COUGH_3",CONV_PRIORITY_MEDIUM)
if IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG1,sAnim_mike_a,instant_BLEND_IN,normal_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
iMikeKillTimer = get_Game_timer()
iIgniteStage++
endif
endif
endif
break
case 3//trev
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGtrev)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGTREV) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
ADD_PED_FOR_DIALOGUE(convo_struct,1,trev(),"TREVOR")
if CREATE_CONVERSATION(convo_struct,"FIN1AUD","FIN1_COUGH2",CONV_PRIORITY_MEDIUM)
if IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG1,sAnim_trev_b,instant_BLEND_IN,normal_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
iMikeKillTimer = get_Game_timer()
iIgniteStage++
endif
endif
endif
break
case 4// mike
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
ADD_PED_FOR_DIALOGUE(convo_struct,2,mike(),"MICHAEL")
if CREATE_MULTIPART_CONVERSATION_WITH_2_LINES(convo_struct,"FIN1AUD","FIN1_COUGH","FIN1_COUGH_4","FIN1_COUGH","FIN1_COUGH_5",CONV_PRIORITY_MEDIUM)
if IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG1,sAnim_mike_b,instant_BLEND_IN,normal_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
iMikeKillTimer = get_Game_timer()
iIgniteStage++
endif
endif
endif
break
case 5
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGtrev)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGTREV) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
ADD_PED_FOR_DIALOGUE(convo_struct,2,MIKE(),"MICHAEL")
if CREATE_CONVERSATION(convo_struct,"FIN1AUD","FIN1_MIKE",CONV_PRIORITY_MEDIUM)
if IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
DISPLAY_RADAR(FALSE)
DISPLAY_HUD(FALSE)
SET_CAM_ACTIVE(SyncSceneCam, TRUE)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG2,sAnim_mike_DRAWS,instant_BLEND_IN,normal_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
PLAY_SYNCHRONIZED_CAM_ANIM(SyncSceneCam, SyncSceneIGMike, "cam_base_idle_to_aim_into_pz", sAnimDict_IG2)//BUG FIX 1324072
RENDER_SCRIPT_CAMS(TRUE, FALSE)
bMikeKills = true
bweaponinHand = false
iIgniteStage++
endif
endif
endif
break
case 6
//check to give mike gun in phase
if not bweaponinHand
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 0.5)
GIVE_WEAPON_TO_PED(mike(),WEAPONTYPE_PISTOL,INFINITE_AMMO,true,true)
SET_CURRENT_PED_WEAPON(MIKE(),WEAPONTYPE_PISTOL,true)
bweaponinHand = true
endif
endif
//check to give mike gun in phase
if not bMuz_pistol_effect_played
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 0.95)
START_PARTICLE_FX_NON_LOOPED_AT_COORD("muz_pistol", <<1729.85, -1617.4, 112.8>>, <<90, -40, 0>>)
bMuz_pistol_effect_played = true
endif
endif
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
SET_CAM_ACTIVE(SyncSceneTrevCam, TRUE)
SET_PED_SHOOTS_AT_COORD(mike(),<<1733.70520, -1624.56030, 111.42592>>,true)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG2,sAnim_trev_dies,normal_BLEND_IN,SLOW_BLEND_OUT,SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
PLAY_SYNCHRONIZED_CAM_ANIM(SyncSceneTrevCam, SyncSceneIGTREV, "cam_trevor_death_reaction_pt", sAnimDict_IG2)//BUG FIX 1324072
SET_FACIAL_IDLE_ANIM_OVERRIDE(TREV(), "burning_1")
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG2,sAnim_mike_shoots,instant_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
PLAY_SYNCHRONIZED_CAM_ANIM(SyncSceneCam, SyncSceneIGMike, "cam_gun_shot_&_trevor_death_reaction_pz", sAnimDict_IG2)//BUG FIX 1324072
SyncSceneIGFRANK = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
if IS_PLAYER_FREE_AIMING(player_id())
or IS_PLAYER_TARGETTING_ANYTHING(player_id())
bFrankAim = true
TASK_SYNCHRONIZED_SCENE(Frank(),SyncSceneIGFRANK,sAnimDict_IG2_Alt,sAnim_frank_shoots,Walk_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
else
TASK_SYNCHRONIZED_SCENE(Frank(),SyncSceneIGFRANK,sAnimDict_IG2,sAnim_frank_reacts,instant_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
endif
//Do video record moment here
REPLAY_RECORD_BACK_FOR_TIME(4.0, 2.0, REPLAY_IMPORTANCE_HIGHEST)
mission_substage = 2
endif
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGTREV) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG1,sAnim_trev_LOOP,Slow_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
endif
break
endswitch
else
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG1,sAnim_mike_LOOP,walk_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
endif
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGTREV) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG1,sAnim_trev_LOOP,walk_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
endif
endif
if not bMikeKills
if isentityalive(TREV())
if IS_BULLET_IN_ANGLED_AREA(<<1733.29065, -1628.85950, 112.83256>>,<<1732.59058, -1621.27917, 111.42625>>,9.5)
or HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(trev(),frank())
or IS_ENTITY_ON_FIRE(TREV())
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
DISPLAY_RADAR(FALSE)
DISPLAY_HUD(FALSE)
SET_CAM_ACTIVE(SyncSceneTrevCam, TRUE)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG2,sAnim_trev_dies,normal_BLEND_IN,SLOW_BLEND_OUT,SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
PLAY_SYNCHRONIZED_CAM_ANIM(SyncSceneTrevCam, SyncSceneIGTREV, "cam_trevor_death_reaction_pt", sAnimDict_IG2)//BUG FIX 1324072
SET_CAM_ACTIVE(SyncSceneTrevCam, TRUE)
SET_FACIAL_IDLE_ANIM_OVERRIDE(TREV(), "burning_1")
RENDER_SCRIPT_CAMS(TRUE, FALSE)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG2_Alt,sAnim_mike_reacts,instant_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
SyncSceneIGFRANK = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(Frank(),SyncSceneIGFRANK,sAnimDict_IG2_Alt,sAnim_frank_shoots,walk_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
bFrankAim = true
INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(FINA_KILLTREV)
REPLAY_RECORD_BACK_FOR_TIME(4.0, 4.0, REPLAY_IMPORTANCE_HIGHEST)
mission_substage = 2
endif
else
SET_CAM_ACTIVE(SyncSceneTrevCam, TRUE)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG2,sAnim_trev_dies,normal_BLEND_IN,SLOW_BLEND_OUT,SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
PLAY_SYNCHRONIZED_CAM_ANIM(SyncSceneTrevCam, SyncSceneIGTREV, "cam_trevor_death_reaction_pt", sAnimDict_IG2)//BUG FIX 1324072
SET_CAM_ACTIVE(SyncSceneTrevCam, TRUE)
SET_FACIAL_IDLE_ANIM_OVERRIDE(TREV(), "burning_1")
RENDER_SCRIPT_CAMS(TRUE, FALSE)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMIKE,sAnimDict_IG2_Alt,sAnim_mike_reacts,instant_BLEND_IN,Walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
SyncSceneIGFRANK = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(Frank(),SyncSceneIGFRANK,sAnimDict_IG2_Alt,sAnim_frank_shoots,walk_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
bFrankAim = true
mission_substage = 2
endif
// if GET_NUMBER_OF_FIRES_IN_RANGE(<<1732.64075, -1624.95190, 111.42876>>,10) > 0
IF GET_NUMBER_OF_FIRES_IN_RANGE(<<1733.24158, -1625.56287, 111.43230>>, 4.5) > 0 //B*1955557 - Reduced the size of the check to the size of the gas spill. ( Joe Elvin )
SET_CAM_ACTIVE(SyncSceneTrevCam, TRUE)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG2,sAnim_trev_dies,normal_BLEND_IN,SLOW_BLEND_OUT,SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
PLAY_SYNCHRONIZED_CAM_ANIM(SyncSceneTrevCam, SyncSceneIGTREV, "cam_trevor_death_reaction_pt", sAnimDict_IG2)//BUG FIX 1324072
SET_CAM_ACTIVE(SyncSceneTrevCam, TRUE)
SET_FACIAL_IDLE_ANIM_OVERRIDE(TREV(), "burning_1")
RENDER_SCRIPT_CAMS(TRUE, FALSE)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMIKE,sAnimDict_IG2_Alt,sAnim_mike_reacts,instant_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
SyncSceneIGFRANK = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(Frank(),SyncSceneIGFRANK,sAnimDict_IG2_Alt,sAnim_frank_shoots,instant_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
bFrankAim = true
mission_substage = 2
endif
//Stops michaels car catching fire.
IF isentityalive(Vehs[mvf_michael_car].id)
IF GET_NUMBER_OF_FIRES_IN_RANGE(<<1726.74524, -1622.95288, 111.46024>>, 1) > 0
SET_ENTITY_INVINCIBLE(Vehs[mvf_michael_car].id, TRUE)
ENDIF
IF IS_ENTITY_ON_FIRE(Vehs[mvf_michael_car].id)
STOP_ENTITY_FIRE(Vehs[mvf_michael_car].id)
ENDIf
ENDIF
IF isentityalive(MikeShowRoomCar)
IF GET_NUMBER_OF_FIRES_IN_RANGE(<<1726.74524, -1622.95288, 111.46024>>, 1) > 0
SET_ENTITY_INVINCIBLE(MikeShowRoomCar, TRUE)
ENDIF
IF IS_ENTITY_ON_FIRE(MikeShowRoomCar)
STOP_ENTITY_FIRE(MikeShowRoomCar)
ENDIf
ENDIF
endif
break
case 2
//cam
// cameraIndex2 = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED,<<1730.1110, -1614.5150, 112.9536>>, <<-7.6622, -0.3776, -154.0352>>,45.0)
// SET_CAM_ACTIVE(cameraIndex2,true)
// SHAKE_GAMEPLAY_CAM("SMALL_EXPLOSION_SHAKE",0.5)
// SHAKE_CAM(cameraIndex2,"SMALL_EXPLOSION_SHAKE",0.5)
// prep_start_cutscene(false,<<1736.295,-1619.891,111.290>>,true,true,true,false,1500)
SET_MULTIHEAD_SAFE(TRUE) //B* 2262532: Have blinders on for the sync scene
//Fix for B*1955557 means that car can explode during cutscene, stopping fire on the back wheel when camera cuts.
IF GET_NUMBER_OF_FIRES_IN_RANGE(<<1726.74524, -1622.95288, 111.46024>>, 1) > 0
STOP_FIRE_IN_RANGE(<<1726.74524, -1622.95288, 111.46024>>, 1)
ENDIF
IF isentityalive(Vehs[mvf_michael_car].id)
SET_ENTITY_INVINCIBLE(Vehs[mvf_michael_car].id, FALSE)
ENDIF
IF isentityalive(MikeShowRoomCar)
SET_ENTITY_INVINCIBLE(MikeShowRoomCar, FALSE)
ENDIF
//Add effect for petrol
IF PetrolEffectTriggered = FALSE
IF START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_fin_fire_petrol_trev", <<1734, -1624.4, 111.5>>, <<0,0,0>>)
PRINTSTRING("PetrolEffectTriggered = TRUE")
PetrolEffectTriggered = TRUE
ENDIF
ENDIF
//Start Stream
IF streamStarted = FALSE
IF streamLoaded = TRUE
STOP_SOUND(iFuelSpillSound)
PRINTSTRING("Starting stream FINALE_A_KILL_TREVOR_SCENE_MASTER CASE 2")
PLAY_STREAM_FRONTEND()
streamStarted = TRUE
ENDIF
ENDIF
START_SCRIPT_FIRE(<<1734.28882, -1623.59680, 111.42353>>,5,true)
START_SCRIPT_FIRE(<<1733.27002, -1624.46289, 111.42641>>,5,true)
START_SCRIPT_FIRE(<<1735.64856, -1625.71191, 111.42559>>,5,true)
START_SCRIPT_FIRE(<<1732.42139, -1625.29260, 111.43035>>,5,true)
START_SCRIPT_FIRE(<<1733.44263, -1625.88269, 111.42981>>,5,true)
START_SCRIPT_FIRE(<<1732.59961, -1626.65930, 111.43410>>,5,true)
START_SCRIPT_FIRE(<<1733.02991, -1627.77722, 111.43572>>,5,true)
START_SCRIPT_FIRE(<<1731.66602, -1626.07971, 111.43691>>,5,true)
START_SCRIPT_FIRE(<<1734.27808, -1623.79248, 111.42362>>,5,true)
if isentityalive(TREV())
SET_ENTITY_INVINCIBLE(TREV(), false)
SET_ENTITY_PROOFS(TREV(), TRUE, FALSE, FALSE, TRUE, TRUE)
START_ENTITY_FIRE(trev())
// PLAY_PAIN(trev(),AUD_DAMAGE_REASON_ON_FIRE)
ADD_PED_FOR_DIALOGUE(convo_struct, 1, TREV(), "Trevor")
PRINTSTRING("ADD_PED_FOR_DIALOGUE for TREV called.")
endif
if isentityalive(vehs[mvf_trevor_truck].id)
SET_ENTITY_INVINCIBLE(Vehs[mvf_trevor_truck].id,true)
endif
// SET_TIME_SCALE(0.35)
CLEAR_PRINTS()
if DOES_BLIP_EXIST(blip_objective)
REMOVE_BLIP(blip_objective)
endif
//-----------load next stage-------
load_asset_stage(msf_4_Goodbyes_CS)
//---------------------------------
STOP_AUDIO_SCENES()
if not IS_AUDIO_SCENE_ACTIVE("FIN_1_TREVOR_DIES_SCENE")
START_AUDIO_SCENE("FIN_1_TREVOR_DIES_SCENE")
endif
iCamTimer = GET_GAME_TIMER()
bupdatecam = true
iSkipTimer = get_Game_timer()
mission_substage++
break
case 3
if isentityalive(TREV())
SET_ENTITY_HEALTH(TREV(),300)
PRINTSTRING("Setting Trev's health to 300 every frame to allow him to play dialogue") PRINTNL()
ELSE
PRINTSTRING("Trev's dead ") PRINTNL()
ENDIF
// //Play pain from Trevor
// IF doneTrevCHat = FALSE
// IF CREATE_CONVERSATION(convo_struct, "FIN1AUD", "FIN1_BURN", CONV_PRIORITY_HIGH)
// //Ah! Ah! Ah! Ah!
// //Mowarghhh! Arghh!
// doneTrevCHat = TRUE
// PRINTSTRING("doneTrevCHat = TRUE")
// ENDIF
// ENDIF
//Start Stream
IF streamStarted = FALSE
IF streamLoaded = TRUE
PRINTSTRING("Starting stream FINALE_A_KILL_TREVOR_SCENE_MASTER CASE 3")
PLAY_STREAM_FRONTEND()
streamStarted = TRUE
ENDIF
ENDIF
if get_game_timer() - iCamTimer > 2000
if isentityalive(TREV())
and not IS_ENTITY_ON_FIRE(trev())
START_ENTITY_FIRE(trev())
endif
endif
if bupdatecam
and (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGFRANK)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGFRANK) >= 0.266)
// cameraIndex = create_cam("DEFAULT_ANIMATED_CAMERA",FALSE)
// SET_CAM_ACTIVE(cameraIndex,true)
// PLAY_CAM_ANIM(cameraIndex,"cam_alternate_gun_shot_&_trevor_death_reaction",sAnimDict_IG2_Alt,<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
SET_CAM_ACTIVE(SyncSceneTrevCam,true)//BUG FIX 1324072 activate trev's sync'd scene cam once he lights up
SET_CAM_ACTIVE(SyncSceneCam, FALSE)
bupdatecam = false
endif
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
if bMikeKills
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG2,sAnim_mike_FIRE_LOOP,instant_BLEND_IN,slow_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
else
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG2_Alt,sAnim_mike_FIRE_LOOP_ALT,instant_BLEND_IN,walk_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
endif
endif
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGFRANK)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGFRANK) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGFRANK)
SyncSceneIGFRANK = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
if bFrankAim
TASK_SYNCHRONIZED_SCENE(frank(),SyncSceneIGFRANK,sAnimDict_IG2_Alt,sAnim_frank_FIRE_LOOP_ALT,SLOW_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
else
TASK_SYNCHRONIZED_SCENE(Frank(),SyncSceneIGFRANK,sAnimDict_IG2,sAnim_frank_FIRE_LOOP,SLOW_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
endif
endif
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGTREV) >= 1)
or not IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGTREV)
SyncSceneIGTREV = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
TASK_SYNCHRONIZED_SCENE(TREV(),SyncSceneIGTREV,sAnimDict_IG2,sAnim_trev_dead,Slow_BLEND_IN,SLOW_BLEND_OUT,SYNCED_SCENE_BLOCK_MOVER_UPDATE)
SET_SYNCHRONIZED_SCENE_LOOPED(SyncSceneIGTREV,true)
CLEAR_FACIAL_IDLE_ANIM_OVERRIDE(TREV())
SET_ENTITY_INVINCIBLE(TREV(),false)
SET_ENTITY_INVINCIBLE(Frank(),true)
SET_ENTITY_INVINCIBLE(Mike(),true)
mission_substage++
endif
break
case 4
//Start dialogue now
ADD_PED_FOR_DIALOGUE(convo_struct, 2, Mike(), "Michael")
ADD_PED_FOR_DIALOGUE(convo_struct, 0, PLAYER_PED_ID(), "Franklin")
CREATE_CONVERSATION(convo_struct, "FIN1AUD", "FIN1_LOVEGAS", CONV_PRIORITY_MEDIUM)
SyncSceneIGMike = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
// if bMikeKills
// TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG2,sAnim_mike_EXP,SLOW_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
// else
TASK_SYNCHRONIZED_SCENE(MIKE(),SyncSceneIGMike,sAnimDict_IG2_Alt,sAnim_mike_EXP_ALT,SLOW_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
// endif
SyncSceneIGFRANK = CREATE_SYNCHRONIZED_SCENE(<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
// if bFrankAim
TASK_SYNCHRONIZED_SCENE(frank(),SyncSceneIGFRANK,sAnimDict_IG2_Alt,sAnim_frank_EXP_ALT,SLOW_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
// else
// TASK_SYNCHRONIZED_SCENE(Frank(),SyncSceneIGFRANK,sAnimDict_IG2,sAnim_frank_EXP,SLOW_BLEND_IN,SLOW_BLEND_OUT, SYNCED_SCENE_DONT_INTERRUPT, RBF_FIRE)
// endif
if isentityalive(vehs[mvf_michael_car].id)
SET_VEHICLE_EXPLODES_ON_HIGH_EXPLOSION_DAMAGE(vehs[mvf_michael_car].id,false)
SET_VEHICLE_ENGINE_HEALTH(vehs[mvf_michael_car].id,4000)
SET_ENTITY_INVINCIBLE(Vehs[mvf_michael_car].id,true)
endif
if isentityalive(vehs[mvf_trevor_truck].id)
SET_ENTITY_INVINCIBLE(Vehs[mvf_trevor_truck].id,FALSE)
endif
ADD_EXPLOSION(<<1732.57910, -1628.07703, 111.43906>>,EXP_TAG_CAR)
cameraIndex = create_cam("DEFAULT_ANIMATED_CAMERA",FALSE)
SET_CAM_ACTIVE(cameraIndex,true)
PLAY_CAM_ANIM(cameraIndex,"cam_alternate_gas_tanker_explosion_outro",sAnimDict_IG2_Alt,<<1736.295,-1619.891,111.290>>, << 0, 0, 0 >>)
iCamTimer = GET_GAME_TIMER()
SkyEffectStarted = FALSE
mission_substage++
break
case 5
//Start the effect scr_fin_env_trev_sky
IF SkyEffectStarted = FALSE
IF GET_GAME_TIMER() > (iCamTimer + 1000)
START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE("scr_fin_env_trev_sky", PLAYER_PED_ID(), <<0,0,0>>, <<0,0,0>>, BONETAG_PELVIS) //INT_TO_ENUM(PED_BONETAG, GET_PED_BONE_INDEX(PLAYER_PED_ID(), BONETAG_ROOT)))
SkyEffectStarted = TRUE
ENDIF
ENDIF
if (IS_SYNCHRONIZED_SCENE_RUNNING(SyncSceneIGMike)and GET_SYNCHRONIZED_SCENE_PHASE(SyncSceneIGMike) >= 0.80)
TRIGGER_MUSIC_EVENT("FINA_END")
if isentityalive(trev())
SET_ENTITY_HEALTH(TREV(),0)
endif
mission_substage = STAGE_ENTRY
mission_set_stage(msf_4_Goodbyes_CS)
endif
break
endswitch
PRINTSTRING("icam_timer = ") PRINTINT((GET_GAME_TIMER() - iCamTimer)) PRINTNL()
//Call every frame this command only returns true once after a cutscene has been requested.
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
PRINTSTRING("cutscene ready for variations to be set now 2")
SET_CS_OUTFITS_AND_EXITS()
ENDIF
//Load the stream to be played when the cutscene is trigger for Trevor burning to death.
IF streamLoaded = FALSE
IF LOAD_STREAM("FINALE_A_KILL_TREVOR_SCENE_MASTER")
streamLoaded = TRUE
ENDIF
ENDIF
if mission_substage <= 2
if (GET_GAME_TIMER() - iHeartBeat) > 500
SET_CONTROL_SHAKE(PLAYER_CONTROL,250,80)
iHeartBeat = GET_GAME_TIMER()
endif
else
if get_game_timer() - iSkipTimer > 1500
and IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
STOP_STREAM()
iskiptostage = enum_to_int(msf_4_Goodbyes_CS)
bDoSkip = true
endif
endif
ENDPROC
PROC ST_4_Goodbyes_CS()
switch mission_substage
case STAGE_ENTRY
//Flags
endcamStarted = FALSE
creditsStarted = FALSE
if isentityalive(frank())
SET_ENTITY_INVINCIBLE(Frank(),false)
SET_FORCE_FOOTSTEP_UPDATE(Frank(), true)
endif
if isentityalive(mike())
SET_ENTITY_INVINCIBLE(mike(),false)
SET_FORCE_FOOTSTEP_UPDATE(mike(), true)
endif
CLEAR_HELP()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4,"Stage 4: Goodbyes",true)
set_exit_states(false)
mission_substage++
break
case 1
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
if DOES_ENTITY_EXIST(frank())
REGISTER_ENTITY_FOR_CUTSCENE(frank(),"Franklin",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,GET_ENTITY_MODEL(frank()), CEO_PRESERVE_BODY_BLOOD_DAMAGE|CEO_PRESERVE_FACE_BLOOD_DAMAGE)
endif
if DOES_ENTITY_EXIST(peds[mpf_michael].id)
REGISTER_ENTITY_FOR_CUTSCENE(peds[mpf_michael].id,"Michael",CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY,GET_ENTITY_MODEL(peds[mpf_michael].id), CEO_PRESERVE_BODY_BLOOD_DAMAGE|CEO_PRESERVE_FACE_BLOOD_DAMAGE)
endif
//Just as a safety making sure this gets deleted now as i'm creating it in next stage.
IF DOES_ENTITY_EXIST(vehs[mvf_michael_car].id)
DELETE_VEHICLE(vehs[mvf_michael_car].id)
ENDIF
REQUEST_ADDITIONAL_TEXT("CREDIT", MISSION_TEXT_SLOT)
START_CUTSCENE()
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 40, TRUE)
mission_substage++
endif
break
case 2
if IS_CUTSCENE_PLAYING()
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD)
CLEAR_PED_PROP(peds[mpf_michael].id, ANCHOR_HEAD)
SET_TIME_SCALE(1)
prep_stop_cutscene(true)
HANG_UP_AND_PUT_AWAY_PHONE()
if IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
endif
IF NOT DOES_CAM_EXIST(EndCreditCam)
EndCreditCam = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA")
SET_CAM_PARAMS(EndCreditCam, <<1685.640137,-1750.719482,119.864342>>,<<-1.003233,0.243573,78.915367>>,38.864964)
ENDIF
mission_substage++
endif
break
case 3
//Create Michaels car here for end scene so it looks like Michael has left it there BUG FIX 1310899
IF NOT DOES_ENTITY_EXIST(vehs[mvf_michael_car].id)
IF CREATE_PLAYER_VEHICLE(vehs[mvf_michael_car].id,CHAR_MICHAEL,<<1698.0569, -1782.4751, 110.5612>>, 321.7204,true,VEHICLE_TYPE_CAR)
SET_VEHICLE_LIGHTS(vehs[mvf_michael_car].id, FORCE_VEHICLE_LIGHTS_ON)
ENDIF
ENDIF
//BUG FIX 1310899 fade the screen out on exit state
IF IS_CUTSCENE_PLAYING()
// IF GET_CUTSCENE_TIME() > 120300
// IF NOT IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME_LONG)
// ENDIF
// ENDIF
IF endcamStarted = FALSE
IF DOES_CAM_EXIST(EndCreditCam)
SET_CAM_ACTIVE(EndCreditCam, TRUE)
RENDER_SCRIPT_CAMS(TRUE, FALSE)
DISPLAY_RADAR(FALSE)
DISPLAY_HUD(FALSE)
endcamStarted = TRUE
ENDIF
ENDIF
IF GET_CUTSCENE_TIME() > 99000
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SKIP_CUTSCENE)
ENDIF
//Start end credits music here
IF g_bFinaleCreditsPlaylistStarted = FALSE
IF GET_CUTSCENE_TIME() > 99963
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SKIP_CUTSCENE)
PLAY_END_CREDITS_MUSIC(TRUE)
SET_MOBILE_RADIO_ENABLED_DURING_GAMEPLAY(TRUE)
SET_MOBILE_PHONE_RADIO_STATE(TRUE)
SET_RADIO_TO_STATION_NAME("RADIO_01_CLASS_ROCK")
SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_TREVOR", TRUE)
g_bFinaleCreditsPlaylistStarted = TRUE
ENDIF
ENDIF
IF creditsStarted = FALSE
IF GET_CUTSCENE_TIME() > 113300
SET_CREDITS_ACTIVE(TRUE)
SET_CREDITS_FADE_OUT_WITH_SCREEN(FALSE)
START_AUDIO_SCENE("END_CREDITS_SCENE")
SET_GAME_PAUSES_FOR_STREAMING(FALSE)
AWARD_ACHIEVEMENT_FOR_MISSION(ACH04) // To live or die in los santos
creditsStarted = TRUE
ENDIF
ENDIF
ENDIF
//Delete Franklins car
IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
DELETE_VEHICLE(vehs[mvf_Frank_car].id)
ENDIF
ENDIF
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin")
//BUG FIX 1310899 fade the screen out on exit state
// IF NOT IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME_SHORT)
// ENDIF
SET_ENTITY_COORDS(PLAYER_PED_ID(), <<1668.9279, -1743.7573, 111.2063>>)
SET_ENTITY_HEADING(PLAYER_PED_ID(), 51.8277)
// SET_FORCE_FOOTSTEP_UPDATE(Frank(), false)
// SET_FORCE_FOOTSTEP_UPDATE(Mike(), false)
bcsFrank = true
endif
if bcsFrank
// if IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
// endif
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
// IF DOES_ENTITY_EXIST(vehs[mvf_Frank_car].id)
// IF IS_VEHICLE_DRIVEABLE(vehs[mvf_Frank_car].id)
// SET_ENTITY_COORDS(vehs[mvf_Frank_car].id,<< 1663.7246, -1732.3535, 111.2844 >>)
// SET_ENTITY_HEADING(vehs[mvf_Frank_car].id,18.3814)
// SET_VEHICLE_ON_GROUND_PROPERLY(vehs[mvf_Frank_car].id)
// ENDIF
// ENDIF
endif
// IF IS_SCREEN_FADED_OUT()
IF NOT IS_CUTSCENE_ACTIVE()
REPLAY_STOP_EVENT()
mission_substage++
// Mission_Passed()
ENDIF
break
case 4
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE)
PRINTSTRING("Setting player control to false ") PRINTNL()
SHAKE_CAM(EndCreditCam, "HAND_SHAKE", 0.1)
SETTIMERA(0)
mission_substage++
break
case 5
IF TIMERA() > 45000
IF NOT IS_SCREEN_FADED_OUT()
DO_SCREEN_FADE_OUT(5000)
ENDIF
IF IS_SCREEN_FADED_OUT()
Mission_Passed()
ENDIF
ENDIF
break
endswitch
ENDPROC
Proc ST_5_PASSED()
switch mission_substage
case STAGE_ENTRY
// IF IS_SCREEN_FADED_OUT()
// DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
// endif
mission_substage++
break
case 1
Mission_Passed()
break
endswitch
endproc
// -----------------------------------------------------------------------------------------------------------
// MISSION FLOW
// -----------------------------------------------------------------------------------------------------------
PROC mission_flow()
Switch int_to_enum(MSF_MISSION_STAGE_FLAGS, mission_stage)
case msf_0_meet ST_0_meet() break
case msf_1_CHASE_TREVOR ST_1_CHASE_TREVOR() break
case msf_2_Fuel_crash_CS ST_2_Fuel_crash_CS() break
case msf_3_Ignite_trevor ST_3_Ignite_trevor() break
case msf_4_Goodbyes_CS ST_4_Goodbyes_CS() break
case msf_5_passed ST_5_PASSED() break
endswitch
ENDPROC
#IF IS_DEBUG_BUILD
PROC DO_DEBUG()
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)
MISSION_PASSED()
ELIF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
MISSION_FAILED()
ENDIF
ENDPROC
#endif
// ===========================================================================================================
// Script Loop
// ===========================================================================================================
SCRIPT
PRINTSTRING("...Finale 1 Mission Launched")
PRINTNL()
IF (HAS_FORCE_CLEANUP_OCCURRED())
PRINTSTRING("...Finale 1 Mission Force Cleanup")
PRINTNL()
Mission_Flow_Mission_Force_Cleanup()
if IS_CUTSCENE_ACTIVE()
SET_CUTSCENE_FADE_VALUES()
endif
Mission_Cleanup()
TERMINATE_THIS_THREAD()
ENDIF
SET_MISSION_FLAG(TRUE)
REQUEST_MISSION_AUDIO_BANK("FINALE_A_GENERAL")
REQUEST_IPL("DES_tankercrash")
//load text
REQUEST_ADDITIONAL_TEXT("FINALE1",MISSION_TEXT_SLOT)
if not HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT)
wait(0)
endif
#if IS_DEBUG_BUILD
//z menu for skipping stages
zMenuNames[msf_0_meet].sTxtLabel = "Stage 0: Phone Call"
zMenuNames[msf_1_CHASE_TREVOR].sTxtLabel = "Stage 1: Chase Trevor"
zMenuNames[msf_2_Fuel_crash_CS].sTxtLabel = "Stage 2: Fuel Crash CutScene"
zMenuNames[msf_3_Ignite_trevor].sTxtLabel = "Stage 3: Ignite Trevor"
zMenuNames[msf_4_Goodbyes_CS].sTxtLabel = "Stage 4: Goodbyes"
zMenuNames[msf_5_Passed].sTxtLabel = "----------- PASSED -----------"
zMenuNames[CST_INT].sTxtLabel = "Stage 0: Init"
zMenuNames[CST_INT].bSelectable = false
zMenuNames[CST_MCS_1].sTxtLabel = "Stage 2: MCS_1_alt1"
zMenuNames[CST_MCS_1].bSelectable = false
zMenuNames[CST_EXT].sTxtLabel = "Exit Cutscene"
zMenuNames[CST_EXT].bSelectable = false
widget_debug = START_WIDGET_GROUP("Finale 1 Menu")
STOP_WIDGET_GROUP()
SET_LOCATES_HEADER_WIDGET_GROUP(widget_debug)
SET_UBER_PARENT_WIDGET_GROUP(widget_debug)
#endif
if not IS_REPLAY_IN_PROGRESS()
timelapse()
WAIT(500)
endif
//initialize mission
MISSION_SETUP()
WHILE (TRUE)
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_KillTrevor")
//prestreaming loop
Update_Asset_Management_System(sAssetData) // Deals with loading any assets and keeps track of what has been loaded
Update_Cutscene_Prestreaming(sCutscenePedVariationRegister)
Mission_stage_management()
MISSION_STAGE_SKIP()
if not bDoSkip
MISSION_CHECKS()
mission_flow()
endif
#IF IS_DEBUG_BUILD
DO_DEBUG()
#ENDIF
WAIT(0)
ENDWHILE
ENDSCRIPT