//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 "cutscene_public.sch" USING "commands_cutscene.sch" USING "commands_entity.sch" USING "commands_script.sch" USING "script_player.sch" USING "randomChar_public.sch" USING "RC_Helper_Functions.sch" USING "initial_scenes_Epsilon.sch" USING "commands_recording.sch" // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Epsilon7.sc // AUTHOR : David Roberts // DESCRIPTION : MICHAEL has found a hideaway in the desert. // MARNIE is waiting outside. // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** ENUM eRC_MainState RC_INTRO, RC_WAITTOPASS, RC_FAILED ENDENUM ENUM eRC_SubState SS_ASSET_REQUEST, SS_SETUP, SS_UPDATE, SS_CLEANUP ENDENUM ENUM FAILED_REASON FAILED_GENERIC = 0, FAILED_SPOOKED, FAILED_HURT ENDENUM // Mission state eRC_MainState m_eState = RC_INTRO eRC_SubState m_subState = SS_ASSET_REQUEST FAILED_REASON failReason = FAILED_GENERIC BOOL bHasChanged REL_GROUP_HASH relGroupPlayer PED_INDEX pedMarnie PED_INDEX pedJimmy PED_INDEX pedTom VEHICLE_INDEX eps_vehicle SEQUENCE_INDEX seq INT iCutsceneStage = 0 INT iFailStage = 0 g_structRCScriptArgs sRCLauncherDataLocal #IF IS_DEBUG_BUILD BOOL bDebug_PrintToTTY = TRUE #ENDIF // =========================================================================================================== // Termination // =========================================================================================================== // ----------------------------------------------------------------------------------------------------------- // Script Cleanup // ----------------------------------------------------------------------------------------------------------- /// PURPOSE: /// Safely cleans up the script PROC Script_Cleanup() // Ensure launcher is cleaned up RC_CLEANUP_LAUNCHER() // If the mission was triggered then additional mission cleanup will be required. IF (Random_Character_Cleanup_If_Triggered()) #IF IS_DEBUG_BUILD IF bDebug_PrintToTTY CPRINTLN(DEBUG_MISSION, "...Random Character Script was triggered so additional cleanup required") ENDIF #ENDIF ENDIF SAFE_RELEASE_VEHICLE(eps_vehicle) SAFE_RELEASE_PED(pedMarnie, TRUE, TRUE) SAFE_RELEASE_PED(pedTom, TRUE, TRUE) SAFE_RELEASE_PED(pedJimmy, TRUE, TRUE) //Cleanup the scene created by the launcher RC_CleanupSceneEntities(sRCLauncherDataLocal, FALSE) TERMINATE_THIS_THREAD() ENDPROC // ----------------------------------------------------------------------------------------------------------- // Script Pass // ----------------------------------------------------------------------------------------------------------- /// PURPOSE: /// Adds needed contacts, completion %, cleans up and passes script. /// PARAMS: /// None. /// RETURNS: /// N/A PROC Script_Passed() STOP_SCRIPTED_CONVERSATION(FALSE) CLEAR_PRINTS() ADD_HELP_TO_FLOW_QUEUE("EPSDES_HE", FHP_MEDIUM, 4000, FLOW_HELP_NEVER_EXPIRES, DEFAULT_HELP_TEXT_TIME, BIT_MICHAEL) //Set epsilon step stat INT iCurrent STAT_GET_INT(NUM_EPSILON_STEP,iCurrent) IF iCurrent < 18 STAT_SET_INT(NUM_EPSILON_STEP,18) SET_ACHIEVEMENT_PROGRESS_SAFE(ENUM_TO_INT(ACH20),18) CPRINTLN(debug_dan,"Epsilon progress:",18) ENDIF Random_Character_Passed() Script_Cleanup() ENDPROC // =========================================================================================================== // DEBUG FUNCTIONS // =========================================================================================================== #IF IS_DEBUG_BUILD /// PURPOSE: /// Check for Forced Pass or Fail /// PARAMS: /// None. /// RETURNS: /// N/A PROC DEBUG_Check_Debug_Keys() // Check for Pass IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)) WAIT_FOR_CUTSCENE_TO_STOP() Script_Passed() ENDIF // Check for Fail IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)) WAIT_FOR_CUTSCENE_TO_STOP() STOP_SCRIPTED_CONVERSATION(FALSE) CLEAR_PRINTS() Random_Character_Failed() Script_Cleanup() ENDIF ENDPROC #ENDIF // =========================================================================================================== // MISSION FUNCTIONS & PROCEDURES // =========================================================================================================== /// PURPOSE: /// Sets the medal version as unavailable and not acquired. And the normal version as available and acquired. PROC Reset_Outfit_Availability() SET_PED_COMP_ITEM_AVAILABLE_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON_WITH_MEDAL, FALSE) SET_PED_COMP_ITEM_ACQUIRED_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON_WITH_MEDAL, FALSE) SET_PED_COMP_ITEM_AVAILABLE_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON, TRUE) SET_PED_COMP_ITEM_ACQUIRED_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON, TRUE) ENDPROC PROC GRAB_MARNIE() IF NOT DOES_ENTITY_EXIST(pedMarnie) IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Marnie", IG_MARNIE)) pedMarnie = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Marnie", IG_MARNIE)) CPRINTLN(DEBUG_MISSION, "Got Marnie") ENDIF ENDIF ENDPROC PROC GRAB_JIMMY() IF NOT DOES_ENTITY_EXIST(pedJimmy) IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Jimmy_Boston", IG_JIMMYBOSTON)) pedJimmy = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Jimmy_Boston", IG_JIMMYBOSTON)) CPRINTLN(DEBUG_MISSION, "Got Jimmy") ENDIF ENDIF ENDPROC PROC GRAB_TOM() IF NOT DOES_ENTITY_EXIST(pedTom) IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Tom_Epsilon", IG_TOMEPSILON)) pedTom = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Tom_Epsilon", IG_TOMEPSILON)) CPRINTLN(DEBUG_MISSION, "Got Tom") ENDIF ENDIF ENDPROC FUNC BOOL DO_MICHAEL_EXIT() IF IS_ENTITY_ALIVE(PLAYER_PED_ID()) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Michael") CPRINTLN(DEBUG_MISSION, "Mike exit state") FORCE_PED_MOTION_STATE(PLAYER_PED_ID(), MS_ON_FOOT_IDLE, FALSE, FAUS_CUTSCENE_EXIT) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC PROC DO_MARNIE_EXIT() IF IS_ENTITY_ALIVE(pedMarnie) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Marnie") CPRINTLN(DEBUG_MISSION, "Marnie exit state") IF IS_VEHICLE_OK(eps_vehicle) TASK_WARP_PED_INTO_VEHICLE(pedMarnie, Eps_Vehicle, VS_FRONT_RIGHT) ENDIF ENDIF ENDIF ENDPROC PROC DO_JIMMY_EXIT() IF IS_ENTITY_ALIVE(pedJimmy) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Jimmy_Boston") CPRINTLN(DEBUG_MISSION, "Jimmy exit state") IF IS_VEHICLE_OK(eps_vehicle) TASK_WARP_PED_INTO_VEHICLE(pedJimmy, Eps_Vehicle, VS_DRIVER) ENDIF ENDIF ENDIF ENDPROC PROC DO_TOM_EXIT() IF IS_ENTITY_ALIVE(pedTom) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Tom_Epsilon") CPRINTLN(DEBUG_MISSION, "Tom exit state") IF IS_VEHICLE_OK(eps_vehicle) TASK_WARP_PED_INTO_VEHICLE(pedTom, Eps_Vehicle, VS_BACK_RIGHT) ENDIF ENDIF ENDIF ENDPROC /// PURPOSE: /// Runs intro cutscene state /// PARAMS: /// None. /// RETURNS: /// N/A PROC STATE_Intro() RC_PLAYER_TRIGGER_SCENE_LOCK_IN() SWITCH m_subState CASE SS_ASSET_REQUEST IF IS_REPLAY_BEING_SET_UP() END_REPLAY_SETUP(DEFAULT, DEFAULT, FALSE) ENDIF RC_REQUEST_CUTSCENE("ep_7_rcm", TRUE) REQUEST_MODEL(BISON) REQUEST_ADDITIONAL_TEXT("EPS7", MISSION_TEXT_SLOT) REQUEST_WAYPOINT_RECORDING("eps7_driveaway") bHasChanged = GET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) // preload the outfit with medal IF IS_PED_UNINJURED(PLAYER_PED_ID()) PRELOAD_OUTFIT(PLAYER_PED_ID(), OUTFIT_P0_EPSILON_WITH_MEDAL) ENDIF m_subState = SS_Setup BREAK CASE SS_Setup #IF IS_DEBUG_BUILD IF bDebug_PrintToTTY CPRINTLN(DEBUG_MISSION, "Init RC_INTRO") ENDIF #ENDIF IF RC_IS_CUTSCENE_OK_TO_START() AND HAS_MODEL_LOADED(BISON) AND HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) AND GET_IS_WAYPOINT_RECORDING_LOADED("eps7_driveaway") RC_CleanupSceneEntities(sRCLauncherDataLocal) REGISTER_ENTITY_FOR_CUTSCENE(pedMarnie, "Marnie", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, IG_MARNIE) REGISTER_ENTITY_FOR_CUTSCENE(pedJimmy, "Jimmy_Boston", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, IG_JIMMYBOSTON) REGISTER_ENTITY_FOR_CUTSCENE(pedTom, "Tom_Epsilon", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, IG_TOMEPSILON) IF IS_ENTITY_ALIVE(PLAYER_PED_ID()) REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) ENDIF RC_CLEANUP_LAUNCHER() TRIGGER_MUSIC_EVENT("EPS7_START") REPLAY_START_EVENT(REPLAY_IMPORTANCE_LOW) START_CUTSCENE() WAIT(0) IF IS_REPLAY_IN_PROGRESS() RC_END_Z_SKIP() ENDIF RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<516.167358,3080.050293,33.841984>>, <<543.897888,3066.680908,44.412357>>, 18.75, << 515.90, 3073.92, 39.72 >>, 9.72, GET_DEFAULT_ALLOWABLE_VEHICLE_SIZE_VECTOR()) RC_START_CUTSCENE_MODE(<< 524.1728, 3079.5901, 39.5043 >>, TRUE, FALSE, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT) CLEAR_ANGLED_AREA_OF_VEHICLES(<<519.447510,3075.087646,38.668587>>, <<546.645569,3068.314697,43.136059>>, 17.25) m_subState = SS_Update ENDIF BREAK CASE SS_Update IF iCutsceneStage = 0 // Create the Epsilonist vehicle IF NOT IS_VEHICLE_OK(eps_vehicle) eps_vehicle = CREATE_VEHICLE(BISON, <<537.28, 3081.30, 39.91>>, 179.03) SET_VEHICLE_COLOURS(eps_vehicle, 157, 157) SET_VEHICLE_EXTRA_COLOURS(eps_vehicle, 5, 157) SET_VEHICLE_ON_GROUND_PROPERLY(eps_vehicle) ENDIF // Loop to grab entities from cutscene GRAB_MARNIE() GRAB_JIMMY() GRAB_TOM() // Reset every frame for blend SET_GAMEPLAY_CAM_RELATIVE_PITCH() SET_GAMEPLAY_CAM_RELATIVE_HEADING() IF WAS_CUTSCENE_SKIPPED() SET_GAMEPLAY_CAM_RELATIVE_PITCH() SET_GAMEPLAY_CAM_RELATIVE_HEADING() iCutsceneStage = 1 ENDIF IF DO_MICHAEL_EXIT() iCutsceneStage = 1 ENDIF DO_MARNIE_EXIT() DO_JIMMY_EXIT() DO_TOM_EXIT() ELIF iCutsceneStage = 1 // Loop to grab entities from cutscene GRAB_MARNIE() GRAB_JIMMY() GRAB_TOM() DO_MARNIE_EXIT() DO_JIMMY_EXIT() DO_TOM_EXIT() DO_MICHAEL_EXIT() IF NOT IS_CUTSCENE_PLAYING() // update the player's outfit to be the epsilon medal outfit SET_PED_COMP_ITEM_AVAILABLE_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON_WITH_MEDAL, TRUE) SET_PED_COMP_ITEM_ACQUIRED_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON_WITH_MEDAL, TRUE) IF IS_PED_UNINJURED(PLAYER_PED_ID()) SET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON_WITH_MEDAL) SET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL) RELEASE_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID()) ENDIF // WHILE GET_PED_COMP_ITEM_CURRENT_SP(PLAYER_PED_ID(), COMP_TYPE_OUTFIT) != OUTFIT_P0_EPSILON_WITH_MEDAL // WAIT(0) // #IF IS_DEBUG_BUILD // IF bDebug_PrintToTTY // CPRINTLN(DEBUG_MISSION, "Waiting for outfit to be correct...") // ENDIF // #ENDIF // ENDWHILE SET_PED_COMP_ITEM_AVAILABLE_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON, FALSE) SET_PED_COMP_ITEM_ACQUIRED_SP(GET_PLAYER_PED_MODEL(CHAR_MICHAEL), COMP_TYPE_OUTFIT, OUTFIT_P0_EPSILON, FALSE) RC_END_CUTSCENE_MODE() m_subState = SS_Cleanup ENDIF ENDIF BREAK CASE SS_Cleanup REPLAY_STOP_EVENT() #IF IS_DEBUG_BUILD IF bDebug_PrintToTTY CPRINTLN(DEBUG_MISSION, "Cleaning up RC_INTRO") ENDIF #ENDIF IF IS_PED_UNINJURED(pedTom) SET_PED_RELATIONSHIP_GROUP_HASH(pedTom, relGroupPlayer) SET_PED_CONFIG_FLAG(pedTom, PCF_KeepRelationshipGroupAfterCleanUp, TRUE) ENDIF IF IS_PED_UNINJURED(pedMarnie) SET_PED_RELATIONSHIP_GROUP_HASH(pedMarnie, relGroupPlayer) SET_PED_CONFIG_FLAG(pedMarnie, PCF_KeepRelationshipGroupAfterCleanUp, TRUE) ENDIF IF IS_PED_UNINJURED(pedJimmy) SET_PED_RELATIONSHIP_GROUP_HASH(pedJimmy, relGroupPlayer) SET_PED_CONFIG_FLAG(pedJimmy, PCF_KeepRelationshipGroupAfterCleanUp, TRUE) ENDIF TRIGGER_MUSIC_EVENT("EPS7_STOP") RC_SET_ENTITY_PROOFS_FOR_CUTSCENE(sRCLauncherDataLocal, FALSE) m_eState = RC_WAITTOPASS m_subState = SS_SETUP BREAK ENDSWITCH ENDPROC PROC STATE_WaitToPass() SWITCH m_subState CASE SS_SETUP IF IS_ENTITY_ALIVE(pedJimmy) AND IS_VEHICLE_OK(Eps_Vehicle) OPEN_SEQUENCE_TASK(seq) TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING(NULL, Eps_Vehicle, "eps7_driveaway", DRIVINGMODE_AVOIDCARS, 0, EWAYPOINT_VEHICLES_USE_AI_SLOWDOWN, 11) TASK_VEHICLE_DRIVE_WANDER(NULL, Eps_Vehicle, 40, DRIVINGMODE_AVOIDCARS_STOPFORPEDS_OBEYLIGHTS) CLOSE_SEQUENCE_TASK(seq) TASK_PERFORM_SEQUENCE(pedJimmy, seq) CLEAR_SEQUENCE_TASK(seq) SET_ENTITY_LOAD_COLLISION_FLAG(Eps_Vehicle, TRUE) m_subState = SS_UPDATE ENDIF BREAK CASE SS_UPDATE IF IS_ENTITY_ALIVE(pedJimmy) IF HAS_PLAYER_THREATENED_PED(pedJimmy, DEFAULT, DEFAULT, DEFAULT, TRUE, TRUE) OR IS_PED_BEING_JACKED(pedJimmy) failReason = FAILED_SPOOKED TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF ELSE failReason = FAILED_HURT TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF IF IS_ENTITY_ALIVE(pedMarnie) IF HAS_PLAYER_THREATENED_PED(pedMarnie, DEFAULT, DEFAULT, DEFAULT, TRUE, TRUE) OR IS_PED_BEING_JACKED(pedMarnie) failReason = FAILED_SPOOKED TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF ELSE failReason = FAILED_HURT TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF IF IS_ENTITY_ALIVE(pedTom) IF HAS_PLAYER_THREATENED_PED(pedTom, DEFAULT, DEFAULT, DEFAULT, TRUE, TRUE) OR IS_PED_BEING_JACKED(pedTom) failReason = FAILED_SPOOKED TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF ELSE failReason = FAILED_HURT TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF IF IS_VEHICLE_OK(eps_vehicle) IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(eps_vehicle, PLAYER_PED_ID()) failReason = FAILED_SPOOKED TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF ELSE failReason = FAILED_SPOOKED TRIGGER_MUSIC_EVENT("EPS_FAIL") m_eState = RC_FAILED ENDIF if GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), eps_vehicle) >= 75 m_subState = SS_CLEANUP ENDIF BREAK CASE SS_CLEANUP Script_Passed() BREAK ENDSWITCH ENDPROC PROC STATE_Failed() SWITCH iFailStage CASE 0 CLEAR_PRINTS() STRING sFailReason IF NOT IS_ENTITY_ALIVE(pedMarnie) OR NOT IS_ENTITY_ALIVE(pedJimmy) OR NOT IS_ENTITY_ALIVE(pedTom) CPRINTLN(DEBUG_MISSION,"Changing fail reason to HURT because 1 or more peds isn't alive") failReason = FAILED_HURT ENDIF SWITCH failReason CASE FAILED_GENERIC CPRINTLN(DEBUG_MISSION,"MISSION_FAILED reason=FAILED_GENERIC") BREAK CASE FAILED_SPOOKED sFailReason = "EPS7_FAIL" // ~r~The Epsilonists were spooked. CPRINTLN(DEBUG_MISSION,"MISSION_FAILED reason=FAILED_SPOOKED") BREAK CASE FAILED_HURT sFailReason = "EPS7_HURT" // ~r~The Epsilonists were spooked. CPRINTLN(DEBUG_MISSION,"MISSION_FAILED reason=FAILED_SPOOKED") BREAK ENDSWITCH IF failReason = FAILED_GENERIC Random_Character_Failed() ELSE Random_Character_Failed_With_Reason(sFailReason) ENDIF iFailStage = 1 BREAK CASE 1 IF GET_MISSION_FLOW_SAFE_TO_CLEANUP() // Do a check here to see if we need to warp the player at all // (only set the fail warp locations if we can't leave the player where he was) //MISSION_FLOW_SET_FAIL_WARP_LOCATION(<< 822.7919, 1278.0978, 359.4304 >>, 105.0195) //SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<<823.432, 1280.526, 359.923>>, -90.133) CPRINTLN(DEBUG_MISSION,"Restoring mission start outfit.") Reset_Outfit_Availability() RESTORE_MISSION_START_OUTFIT() RESET_PLAYER_HAS_CHANGE_CLOTHES_ON_MISSION(CHAR_MICHAEL, bHasChanged) Script_Cleanup() ELSE // not finished fading out // you may want to handle dialogue etc here. ENDIF BREAK ENDSWITCH ENDPROC // =========================================================================================================== // Script Loop // =========================================================================================================== SCRIPT(g_structRCScriptArgs sRCLauncherDataIn) sRCLauncherDataLocal = sRCLauncherDataIn RC_TakeEntityOwnership(sRCLauncherDataLocal) SET_MISSION_FLAG(TRUE) // Setup callback when player is killed, arrested or goes to multiplayer IF (HAS_FORCE_CLEANUP_OCCURRED(DEFAULT_FORCE_CLEANUP_FLAGS|FORCE_CLEANUP_FLAG_DEBUG_MENU)) PRINT_LAUNCHER_DEBUG("Force cleanup [TERMINATING]") Random_Character_Failed() Reset_Outfit_Availability() Script_Cleanup() TRIGGER_MUSIC_EVENT("EPS_FAIL") ENDIF IF NOT Is_Replay_In_Progress() // Set up the initial scene for replays IF NOT IS_CUTSCENE_ACTIVE() RC_REQUEST_CUTSCENE("ep_7_rcm", TRUE) ENDIF ELSE g_bSceneAutoTrigger = TRUE eInitialSceneStage = IS_REQUEST_SCENE WHILE NOT SetupScene_EPSILON_7(sRCLauncherDataLocal) WAIT(0) ENDWHILE g_bSceneAutoTrigger = FALSE START_REPLAY_SETUP(<<523.37, 3077.92, 39.35>>, 329.9107) ENDIF // Get the PLAYER relationship group IF IS_PED_UNINJURED(PLAYER_PED_ID()) relGroupPlayer = GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID()) ENDIF ADD_CONTACT_TO_PHONEBOOK(CHAR_MARNIE, MICHAEL_BOOK, FALSE) ADD_CONTACT_TO_PHONEBOOK(CHAR_JIMMY_BOSTON, MICHAEL_BOOK, FALSE) // Loop within here until the mission passes or fails WHILE(TRUE) REPLAY_CHECK_FOR_EVENT_THIS_FRAME("SF_Esplison7") WAIT(0) UPDATE_MISSION_NAME_DISPLAYING(sRCLauncherDataLocal.sIntroCutscene) SWITCH(m_eState) CASE RC_INTRO STATE_Intro() BREAK CASE RC_WAITTOPASS STATE_WaitToPass() BREAK CASE RC_FAILED STATE_Failed() BREAK ENDSWITCH // Check debug completion/failure #IF IS_DEBUG_BUILD DEBUG_Check_Debug_Keys() #ENDIF ENDWHILE // Script should never reach here. Always terminate with cleanup function. ENDSCRIPT