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

194 lines
6.8 KiB
Python
Executable File

//
// Author: Ben Rollinson Date: 15/03/11
//
//
// Finale Strand Intro Cutscene
//
//
//Compile out Title Update changes to header functions.
//Must be before includes.
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
// Includes
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_script.sch"
USING "commands_graphics.sch"
USING "commands_camera.sch"
USING "commands_cutscene.sch"
USING "clearmissionarea.sch"
USING "flow_public_core_override.sch"
USING "flow_help_public.sch"
USING "script_misc.sch"
USING "replay_public.sch"
USING "commands_recording.sch"
// Variables
BOOL m_bGameplayCamCentered = FALSE
INT m_iCutsceneStartTime
VEHICLE_INDEX viPlayerVehicle
PROC Mission_Cleanup()
// Force Chop to relaunch for B*1351643
SET_VEHICLE_AS_NO_LONGER_NEEDED(viPlayerVehicle)
REACTIVATE_NAMED_WORLD_BRAINS_WAITING_TILL_OUT_OF_RANGE("chop")
TERMINATE_THIS_THREAD()
ENDPROC
PROC Mission_Passed()
Mission_Flow_Mission_Passed()
Mission_Cleanup()
ENDPROC
PROC Load_Cutscene_Assets()
REQUEST_CUTSCENE("CHOICE_INT")
WHILE NOT HAS_CUTSCENE_LOADED()
REQUEST_CUTSCENE("CHOICE_INT")
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED_SAFE("FRANKLIN", PLAYER_PED_ID())
ENDIF
WAIT(0)
ENDWHILE
ENDPROC
PROC Do_Finale_Intro_Cutscene()
VEHICLE_INDEX veh = GET_PLAYERS_LAST_VEHICLE()
IF DOES_ENTITY_EXIST(veh)
IF NOT IS_VEHICLE_A_PLAYER_PERSONAL_VEHICLE(veh, CHAR_FRANKLIN, VEHICLE_TYPE_CAR)
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<12.5881, 545.7901, 174.9232>>, 5)
ENDIF
ELSE
DELETE_VEHICLE_GEN_VEHICLES_IN_AREA(<<12.5881, 545.7901, 174.9232>>, 5)
ENDIF
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "FRANKLIN", CU_ANIMATE_EXISTING_SCRIPT_ENTITY, PLAYER_ONE)
ENDIF
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
CLEAR_HELP()
ENDIF
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_FinaleChoice")
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
START_CUTSCENE()
SET_WEATHER_TYPE_NOW("CLEAR")
// B*1897079 - Clear area for cutscene.
CLEAR_AREA_OF_OBJECTS(<<8.61554, 541.07635, 175.02826>>, 7.5)
// B*1918436 - Clear area of projectiles
CLEAR_AREA_OF_PROJECTILES(<<8.61554, 541.07635, 175.02826>>, 7.5)
IF IS_REPLAY_START_VEHICLE_UNDER_SIZE_LIMIT(GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR())
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<26.15189, 560.65405, 190.32320>>, <<-14.36067, 539.86017, 170.34720>>, 30, << 3.51800, 546.92346, 173.72620>>, 125.6127 , GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR())
ELSE
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<26.15189, 560.65405, 190.32320>>, <<-14.36067, 539.86017, 170.34720>>, 30, <<9.0390, 554.2676, 175.1200>>, 119.3638)
ENDIF
// RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<26.15189, 560.65405, 190.32320>>, <<-14.36067, 539.86017, 170.34720>>, 30, << 1.4300, 543.5197, 173.3552 >>, 126.3274 , GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR())
BOOL bCutsceneStarted = FALSE
m_iCutsceneStartTime = GET_GAME_TIMER()
WHILE IS_CUTSCENE_PLAYING() OR NOT bCutsceneStarted
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_FinaleChoice")
IF IS_CUTSCENE_PLAYING()
bCutsceneStarted = TRUE
ENDIF
IF NOT DOES_ENTITY_EXIST(viPlayerVehicle)
veh = GET_PLAYERS_LAST_VEHICLE()
IF DOES_ENTITY_EXIST(veh)
IF NOT IS_VEHICLE_A_PLAYER_PERSONAL_VEHICLE(veh, CHAR_FRANKLIN, VEHICLE_TYPE_CAR)
AND NOT IS_PLAYER_VEHICLE_IN_AREA(CHAR_FRANKLIN, VEHICLE_TYPE_CAR, <<-1.3389, 544.1759, 172.7673>>, -1)
CREATE_PLAYER_VEHICLE(viPlayerVehicle, CHAR_FRANKLIN, <<-1.3389, 544.1759, 172.7673>>, 124.3018, TRUE, VEHICLE_TYPE_CAR)
ENDIF
ELSE
IF NOT IS_PLAYER_VEHICLE_IN_AREA(CHAR_FRANKLIN, VEHICLE_TYPE_CAR, <<-1.3389, 544.1759, 172.7673>>, -1)
CREATE_PLAYER_VEHICLE(viPlayerVehicle, CHAR_FRANKLIN, <<-1.3389, 544.1759, 172.7673>>, 124.3018, TRUE, VEHICLE_TYPE_CAR)
ENDIF
ENDIF
ENDIF
// CPRINTLN(DEBUG_FLOW, "Cutscene time: ", GET_GAME_TIMER() - m_iCutsceneStartTime)
IF NOT m_bGameplayCamCentered
IF (GET_GAME_TIMER() - m_iCutsceneStartTime) > 92400
REPLAY_STOP_EVENT()
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
m_bGameplayCamCentered = TRUE
ENDIF
ENDIF
IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("FRANKLIN", PLAYER_ONE)
IF NOT m_bGameplayCamCentered
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
m_bGameplayCamCentered = TRUE
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF CAN_SET_EXIT_STATE_FOR_CAMERA()
CPRINTLN(DEBUG_FLOW, "Exit state for camera.")
ENDIF
#ENDIF
WAIT(0)
ENDWHILE
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_FinaleChoice")
REMOVE_CUTSCENE()
CLEAR_MUST_LEAVE_AREA_VEHICLE_GEN_FLAG(VEHGEN_FRANKLIN_SAVEHOUSE_HILLS_CAR)
IF NOT IS_PLAYER_PLAYING(PLAYER_ID())
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
ENDIF
ENDPROC
// ===========================================================================================================
// Script Loop
// ===========================================================================================================
/// PURPOSE:
/// Turn off the ambient services
PROC SERVICES_TOGGLE(BOOL bOn)
//Wanted
ENABLE_DISPATCH_SERVICE(DT_POLICE_AUTOMOBILE, bOn)
ENABLE_DISPATCH_SERVICE(DT_POLICE_HELICOPTER, bOn)
ENABLE_DISPATCH_SERVICE(DT_FIRE_DEPARTMENT, bOn)
ENABLE_DISPATCH_SERVICE(DT_SWAT_AUTOMOBILE, bOn)
ENABLE_DISPATCH_SERVICE(DT_AMBULANCE_DEPARTMENT, bOn)
IF bOn
SET_WANTED_LEVEL_MULTIPLIER(1.0)
SET_MAX_WANTED_LEVEL(5)
ELSE
IF IS_PLAYER_PLAYING(PLAYER_ID())
CLEAR_PLAYER_WANTED_LEVEL(PLAYER_ID())
ENDIF
SET_MAX_WANTED_LEVEL(0)
SET_WANTED_LEVEL_MULTIPLIER(0)
ENDIF
ENDPROC
SCRIPT
IF HAS_FORCE_CLEANUP_OCCURRED()
Mission_Flow_Mission_Force_Cleanup()
Mission_Cleanup()
ENDIF
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_FinaleChoice")
SET_MISSION_FLAG(TRUE)
SERVICES_TOGGLE(FALSE)
Load_Cutscene_Assets()
Do_Finale_Intro_Cutscene()
SERVICES_TOGGLE(TRUE)
Mission_Passed()
ENDSCRIPT