//Compile out Title Update changes to header functions. //Must be before includes. //CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R. USING "CompletionPercentage_public.sch" USING "RC_Threat_public.sch" USING "RC_Launcher_public.sch" USING "initial_scenes_Extreme.sch" USING "commands_recording.sch" #IF IS_DEBUG_BUILD USING "select_mission_stage.sch" #ENDIF // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : Extreme4.sc // AUTHOR : Andy Minghella/Tom Kingsley // DESCRIPTION : Dom jumps off a dam // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // The Random Character - sRCLauncherDataLocal.pedID[0] g_structRCScriptArgs sRCLauncherDataLocal VECTOR m_vCharPos = << 1726.40, 83.0424, 169.67 >> FLOAT m_fCharHeading = 328.7801 // Mission stages ENUM MISSION_STAGE MS_INTRO, MS_MEET_DOM, MS_MIDTRO, MS_DOM_JUMPS, MS_MISSION_FAILING ENDENUM // Sub-stages ENUM SUB_STAGE SS_SETUP, SS_UPDATE, SS_CLEANUP ENDENUM ENUM FAIL_STATE FS_SETUP, FS_UPDATE, FS_CLEANUP ENDENUM ENUM CUTSCENE_STAGE eCutInit, eCutUpdate, eCutCleanup ENDENUM FAIL_STATE eFAIL_STATE // MISSION PED STRUCT MISSION_PED PED_INDEX mPed VECTOR vStartPos FLOAT fStartHeading MODEL_NAMES mModel VECTOR vMidtroPos VECTOR vMidtroEndPos FLOAT fMidtroEndHeading ENDSTRUCT // ENUMS MISSION_STAGE eMissionStage = MS_INTRO SUB_STAGE eSubStage = SS_SETUP CUTSCENE_STAGE eCutsceneState = eCutInit // STAGE SKIPPING #IF IS_DEBUG_BUILD BOOL bFinishedSkipping MISSION_STAGE eTargetStage CONST_INT MAX_SKIP_MENU_LENGTH 4 MissionStageMenuTextStruct mSkipMenu[MAX_SKIP_MENU_LENGTH] #ENDIF BOOL bDebugSkipping BOOL bIntroCutDone BOOL bWarnedAboutDistance BOOL bKickedOffSS1 MISSION_PED mDom CONST_INT DOM_IDLE_WAIT_TIME 8000 CONST_INT NUM_OF_DOM_IDLES 6 STRING sFailReason INT iAttackConvo BLIP_INDEX mMissionBlip SEQUENCE_INDEX seqDomIdle VEHICLE_INDEX vehPlayer VEHICLE_INDEX vehDomsSanchez VEHICLE_INDEX vehBmx OBJECT_INDEX objDummyBox OBJECT_INDEX objBox1 OBJECT_INDEX objBox2 OBJECT_INDEX objParachute OBJECT_INDEX pickupParachute PTFX_ID ptfxBleed MODEL_NAMES modelVehPlayer structPedsForConversation sSpeach BOOL bJumpCam VECTOR vRepos FLOAT fRepos CAMERA_INDEX camDomJump CAMERA_INDEX camDomJump2 CAMERA_INDEX camDomJump3 CAMERA_INDEX camDomJump4 CAMERA_INDEX camDomJump5 CAMERA_INDEX camDomJump6 CAMERA_INDEX camDomJump7 CAMERA_INDEX camDomJump8 CAMERA_INDEX camDomJump9 CAMERA_INDEX camDomJump10 CAMERA_INDEX camDomJump11 CAMERA_INDEX camDomJumpSS1 CAMERA_INDEX camDomJumpSS2 CAMERA_INDEX camDomJumpSS3 SCENARIO_BLOCKING_INDEX sbiDamBlock //INT iWindSound = GET_SOUND_ID() INT iDomPants = GET_SOUND_ID() INT iDomIdleConvo INT iTimerDomIdleConvo INT iTimerDomJumped INT issDomJump1 INT issDomJump2 INT issDomJump3 INT iTimerDomJumpCam BOOL bPlayerParaTask BOOL bDomBreakBonesSound BOOL bDomScream BOOL bFrankComm BOOL bSwitchSS BOOL bSwitchSS2 BOOL bSkipCS BOOL bDomBlood //BOOL bInitSSAudio BOOL bDoingFocusPush INT iTimerFocusPush //BOOL bFakeDomCreated //VECTOR vDomRot //VECTOR vDomPos //FLOAT fDomHeading #IF IS_DEBUG_BUILD INT iNewStage #ENDIF // =========================================================================================================== // Termination // =========================================================================================================== /// PURPOSE: /// Unloads car recordings, animations, models. marks entities as no longer needed PROC UnloadEverything() //Cleanup the scene created by the launcher (this will delete them) RC_CleanupSceneEntities(sRCLauncherDataLocal) //SAFE_RELEASE_PED(mDom.mPed) SAFE_RELEASE_PED(sRCLauncherDataLocal.pedID[0]) //SET_MODEL_AS_NO_LONGER_NEEDED(mDom.mModel) REMOVE_ANIM_DICT("rcmextreme4") ENDPROC /// PURPOSE: Cleanup that needs to be done as soon as mission is passed or failed. Blip removal etc PROC MissionCleanup(BOOL bClearText = TRUE) if bClearText =TRUE CLEAR_PRINTS() ENDIF SAFE_REMOVE_BLIP(mMissionBlip) SAFE_DELETE_OBJECT(objDummyBox) if IS_SCRIPTED_CONVERSATION_ONGOING() // stop any conversations STOP_SCRIPTED_CONVERSATION(FALSE) ENDIF ENDPROC // ----------------------------------------------------------------------------------------------------------- // Script Cleanup // ----------------------------------------------------------------------------------------------------------- PROC Script_Cleanup(BOOL bClearText = TRUE) // 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()) PRINTSTRING("...Random Character Script was triggered so additional cleanup required") PRINTNL() MissionCleanup(bClearText) UnloadEverything() ENDIF REMOVE_SCENARIO_BLOCKING_AREA(sbiDamBlock) RELEASE_SCRIPT_AUDIO_BANK() SAFE_RELEASE_OBJECT(objBox1) SAFE_RELEASE_OBJECT(objBox2) SAFE_RELEASE_OBJECT(objParachute) SET_SCENARIO_TYPE_ENABLED("WORLD_VEHICLE_BICYCLE_MOUNTAIN",TRUE) RC_CleanupSceneEntities(sRCLauncherDataLocal) //Cleanup the scene created by the launcher TERMINATE_THIS_THREAD() ENDPROC // ----------------------------------------------------------------------------------------------------------- // Script Pass // ----------------------------------------------------------------------------------------------------------- PROC Script_Passed() IF bPlayerParaTask = TRUE #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "STAT **** LEAP OF FAITH ****") #ENDIF REPLAY_RECORD_BACK_FOR_TIME(10.0, 4.0, REPLAY_IMPORTANCE_LOWEST) INFORM_STAT_SYSTEM_OF_BOOL_STAT_HAPPENED(EXT4_FALL_SURVIVED) ENDIF MissionCleanup() Random_Character_Passed(CP_RAND_C_EXT4) Script_Cleanup() ENDPROC PROC DO_FOCUS_PUSH() FLOAT fHintFov = 35.0 FLOAT fHintFollow = 0.4//0.35 FLOAT fHintPitchOrbit = 0.000 FLOAT fHintSide = -0.85//-0.01 FLOAT fHintVert = 0//0.05 //-0.050 IF NOT IS_REPLAY_IN_PROGRESS() AND IS_PED_UNINJURED(sRCLauncherDataLocal.pedID[0]) AND IS_PED_UNINJURED(PLAYER_PED_ID()) AND bDoingFocusPush = TRUE IF NOT IS_GAMEPLAY_HINT_ACTIVE() SET_PLAYER_CONTROL(PLAYER_ID(),FALSE) TASK_LOOK_AT_ENTITY(PLAYER_PED_ID(),sRCLauncherDataLocal.pedID[0],-1) //IF NOT IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),sRCLauncherDataLocal.pedID[0],6) TASK_FOLLOW_TO_OFFSET_OF_ENTITY(PLAYER_PED_ID(),sRCLauncherDataLocal.pedID[0],<<0,0,0>>,1,-1,0.5) //ELSE // TASK_TURN_PED_TO_FACE_ENTITY(PLAYER_PED_ID(),sRCLauncherDataLocal.pedID[0],-1) //ENDIF SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE(TRUE) SET_GAMEPLAY_ENTITY_HINT(sRCLauncherDataLocal.pedID[0], <<-0.5,0,-0.2>>, TRUE, 30000) SET_GAMEPLAY_HINT_FOV(fHintFov) SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(fHintFollow) SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET(fHintPitchOrbit) SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(fHintSide) SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET(fHintVert) iTimerFocusPush = GET_GAME_TIMER() ELSE /* IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),sRCLauncherDataLocal.pedID[0],6) AND GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(),SCRIPT_TASK_FOLLOW_TO_OFFSET_OF_ENTITY) = PERFORMING_TASK CLEAR_PED_TASKS(PLAYER_PED_ID()) ENDIF */ IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),sRCLauncherDataLocal.pedID[0],4) iTimerFocusPush -= 10000 ENDIF SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),1) STOP_GAMEPLAY_HINT_BEING_CANCELLED_THIS_UPDATE(TRUE) ENDIF ENDIF ENDPROC PROC DO_FOCUS_PUSH_TWO() /* FLOAT fHintFov = 25.0 FLOAT fHintFollow = 0.4//0.35 FLOAT fHintPitchOrbit = 0.000 FLOAT fHintSide = -0.85//-0.01 FLOAT fHintVert = 0//0.05 //-0.050 */ FLOAT fHintFov = 35.0 FLOAT fHintFollow = 0.45//0.35 FLOAT fHintPitchOrbit = 0.000 FLOAT fHintSide = 0//0.07 //0.25 //-0.01 FLOAT fHintVert = 0.07 //-0.050 IF bDoingFocusPush IF NOT IS_GAMEPLAY_HINT_ACTIVE() SET_PLAYER_CONTROL(PLAYER_ID(),FALSE) TASK_LOOK_AT_ENTITY(PLAYER_PED_ID(),mDom.mPed,-1) /* IF NOT IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),mDom.mPed,6) TASK_FOLLOW_TO_OFFSET_OF_ENTITY(PLAYER_PED_ID(),mDom.mPed,<<0,-4,0>>,1,-1,0.5) ELSE TASK_TURN_PED_TO_FACE_ENTITY(PLAYER_PED_ID(),mDom.mPed,-1) ENDIF */ TASK_FOLLOW_NAV_MESH_TO_COORD(PLAYER_PED_ID(),<<1658.95, -5.45, 173.78>>,1,-1,0.25,ENAV_DEFAULT,-161.08) SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE(TRUE) SET_GAMEPLAY_ENTITY_HINT(mDom.mPed, <<-0,0,0>>, TRUE, 30000) SET_GAMEPLAY_HINT_FOV(fHintFov) SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR(fHintFollow) SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET(fHintPitchOrbit) SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET(fHintSide) SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET(fHintVert) iTimerFocusPush = GET_GAME_TIMER() ELSE SET_PED_MAX_MOVE_BLEND_RATIO(PLAYER_PED_ID(),1) STOP_GAMEPLAY_HINT_BEING_CANCELLED_THIS_UPDATE(TRUE) ENDIF ENDIF ENDPROC PROC DoDomIdleConvo() IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF iDomIdleConvo < 5 IF GET_GAME_TIMER() > iTimerDomIdleConvo + (8000 + GET_RANDOM_INT_IN_RANGE(0,2000)) IF HAS_SOUND_FINISHED(iDomPants) IF CREATE_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_DOM",CONV_PRIORITY_LOW) iTimerDomIdleConvo = GET_GAME_TIMER() ++iDomIdleConvo EXIT ENDIF ENDIF ENDIF ENDIF ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF REQUEST_SCRIPT_AUDIO_BANK("EXTREME_04_DOM_A") AND REQUEST_SCRIPT_AUDIO_BANK("EXTREME_04_DOM_B") AND REQUEST_SCRIPT_AUDIO_BANK("EXTREME_04_DOM_C") IF HAS_SOUND_FINISHED(iDomPants) PLAY_SOUND_FROM_ENTITY(iDomPants,"DOM",mDom.mPed,"EXTREME_04_SOUNDSET") ENDIF ENDIF ENDIF ENDPROC /// PURPOSE: /// Requests models and anims needed for Dom /// PARAMS: /// bWaitForLoad - if true, will wait in this proc until everything is loaded PROC RequestDomAssets(BOOL bWaitForLoad = FALSE) REQUEST_MODEL(mDom.mModel) REQUEST_ANIM_DICT("rcmextreme4") REQUEST_ANIM_DICT("skydive@parachute@") REQUEST_MODEL(SANCHEZ) REQUEST_PTFX_ASSET() IF bWaitForLoad = TRUE WHILE NOT HAS_MODEL_LOADED(mDom.mModel) or NOT HAS_MODEL_LOADED(SANCHEZ) or NOT HAS_ANIM_DICT_LOADED("rcmextreme4") or NOT HAS_ANIM_DICT_LOADED("skydive@parachute@") or NOT HAS_PTFX_ASSET_LOADED() WAIT(0) ENDWHILE ENDIF ENDPROC /// PURPOSE: makes dom play idle anims PROC HandleDomIdles() if IS_PED_UNINJURED(mDom.mPed) IF GET_SCRIPT_TASK_STATUS(mDom.mPed,SCRIPT_TASK_PERFORM_SEQUENCE) <> PERFORMING_TASK TASK_PERFORM_SEQUENCE(mDom.mPed,seqDomIdle) ENDIF ENDIF ENDPROC /// PURPOSE: Creates the RCM mission giver FUNC BOOL RCM_CREATE_NPC_PED_ON_FOOT(PED_INDEX &ReturnPed, BOOL bCleanupModel = TRUE) MODEL_NAMES model = A_C_RETRIEVER REQUEST_MODEL(model) IF HAS_MODEL_LOADED(model) IF DOES_ENTITY_EXIST(ReturnPed) DELETE_PED(ReturnPed) ENDIF ReturnPed = CREATE_PED(PEDTYPE_MISSION, model, m_vCharPos, m_fCharHeading, FALSE, FALSE) SET_PED_DEFAULT_COMPONENT_VARIATION(ReturnPed) SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(ReturnPed, FALSE) IF bCleanupModel SET_MODEL_AS_NO_LONGER_NEEDED(model) ENDIF RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: Sets the new mission stage and initialises the substate + cutscene stage. PROC SetStage(MISSION_STAGE eNewStage) eMissionStage = eNewStage // Setup new mission state eSubStage = SS_SETUP eCutsceneState = eCutInit ENDPROC PROC KILL_SCRIPTED_CUT() RENDER_SCRIPT_CAMS(FALSE, FALSE) DISPLAY_HUD(TRUE) DISPLAY_RADAR(TRUE) SET_PLAYER_CONTROL(PLAYER_ID(),TRUE,SPC_REENABLE_CONTROL_ON_DEATH) SET_TIME_SCALE(1.0) SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH() ENDPROC /// PURPOSE: initialises mission variables PROC InitVariables() //INFORM_MISSION_STATS_OF_MISSION_START_EXTREME_4() #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Init variables ****") #ENDIF ADD_CONTACT_TO_PHONEBOOK(CHAR_DOM, FRANKLIN_BOOK, FALSE) #IF IS_DEBUG_BUILD // stage skipping bFinishedSkipping = TRUE mSkipMenu[0].sTxtLabel = "INTRO" mSkipMenu[1].sTxtLabel = "MEET DOM" mSkipMenu[2].sTxtLabel = "MIDTRO" mSkipMenu[3].sTxtLabel = "DOM JUMPS" #ENDIF bWarnedAboutDistance = FALSE //bFakeDomCreated = FALSE mDom.vStartPos = <<1658.42, -8.02, 174.78 - 1>>//<<1658.403809,-7.921877,174.558792>> mDom.fStartHeading = 116.87//116.945824 mDom.mModel = GET_NPC_PED_MODEL(CHAR_DOM) mDom.vMidtroEndPos = <<1660.323853,-11.712502,173.963791>> mDom.fMidtroEndHeading = 119.600716 REQUEST_ADDITIONAL_TEXT("EXT4", MISSION_TEXT_SLOT) WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(MISSION_TEXT_SLOT) WAIT(0) ENDWHILE REQUEST_MODEL(prop_box_guncase_03a) REQUEST_MODEL(prop_box_wood01a) REQUEST_MODEL(P_PARACHUTE_S) REQUEST_MODEL(BMX) WHILE NOT HAS_MODEL_LOADED(prop_box_guncase_03a) OR NOT HAS_MODEL_LOADED(prop_box_wood01a) OR NOT HAS_MODEL_LOADED(P_PARACHUTE_S) OR NOT HAS_MODEL_LOADED(BMX) WAIT(0) ENDWHILE IF NOT DOES_ENTITY_EXIST(objDummyBox) objDummyBox = CREATE_OBJECT_NO_OFFSET(prop_box_guncase_03a, <<1658.298950,-7.930665,173.71>>) //173.925766 SET_ENTITY_ROTATION (objDummyBox, <<90.000000,0,-62.999996>>) FREEZE_ENTITY_POSITION(objDummyBox,TRUE) SET_ENTITY_VISIBLE(objDummyBox,FALSE) ENDIF RequestDomAssets(TRUE) IF NOT DOES_ENTITY_EXIST(mDom.mPed) RC_CREATE_NPC_PED(mDom.mPed, CHAR_DOM, mDom.vStartPos, mDom.fStartHeading, "Ext4-Dom") // create peds FREEZE_ENTITY_POSITION(mDom.mPed,TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(mDom.mPed,TRUE) REMOVE_ALL_PED_WEAPONS(mDom.mPed) SET_PED_COMPONENT_VARIATION(mDom.mPed,PED_COMP_SPECIAL,2,0,0) DISABLE_PED_PAIN_AUDIO(mDom.mPed,TRUE) SET_PED_CONFIG_FLAG(mDom.mPed,PCF_RemoveDeadExtraFarAway,TRUE) SET_PED_CONFIG_FLAG(mDom.mPed,PCF_RunFromFiresAndExplosions,FALSE) //To fix B*1958328 SET_PED_CONFIG_FLAG(mDom.mPed,PCF_DisableExplosionReactions,TRUE) //To fix B*1958328 SET_PED_MONEY(mDom.mPed,5000) ENDIF if IS_ENTITY_ALIVE(PLAYER_PED_ID()) ADD_PED_FOR_DIALOGUE(sSpeach, 1, PLAYER_PED_ID(), "FRANKLIN") ENDIF bPlayerParaTask = FALSE bDomBreakBonesSound = FALSE bDomScream = FALSE bFrankComm = FALSE bSwitchSS = FALSE bSwitchSS2 = FALSE bSkipCS = FALSE bDoingFocusPush = FALSE bKickedOffSS1 = FALSE SetStage(MS_INTRO) ENDPROC /// PURPOSE: Initialise everything PROC Init() #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION,"EXT4**** Init mission ****") IF HAS_PED_GOT_WEAPON(PLAYER_PED_ID(),GADGETTYPE_PARACHUTE) REMOVE_WEAPON_FROM_PED(PLAYER_PED_ID(),GADGETTYPE_PARACHUTE) ENDIF CPRINTLN(DEBUG_MISSION,"Debug build so removing parachute (so we can test the parachute pickup is working)") #ENDIF IF IS_ENTITY_ALIVE(sRCLauncherDataLocal.pedID[0]) SAFE_TELEPORT_ENTITY(sRCLauncherDataLocal.pedID[0],<<1737.4534, 101.7498, 170.0243>>, 288.5211) ELSE CREATE_DOG_CONTACT(sRCLauncherDataLocal.pedID[0], <<1737.4534, 101.7498, 170.0243>>, 288.5211) ENDIF TASK_FOLLOW_NAV_MESH_TO_COORD(sRCLauncherDataLocal.pedID[0],<<1826.6621, 146.9161, 170.4472>>,1,-1) SET_SCENARIO_TYPE_ENABLED("WORLD_VEHICLE_BICYCLE_MOUNTAIN",FALSE) CLEAR_AREA_OF_VEHICLES(mDom.vStartPos, 20.0) // clear cars from the midtro area IF NOT DOES_ENTITY_EXIST(vehDomsSanchez) vehDomsSanchez = CREATE_VEHICLE(SANCHEZ,<< 1662.8799, -14.2550, 172.7742 >>, 205.3516) ENDIF IF NOT DOES_ENTITY_EXIST(vehBmx) vehBmx = CREATE_VEHICLE(BMX,<<1633.7656, -23.6768, 127.0535>>, 55.7565) ENDIF IF NOT DOES_ENTITY_EXIST(objBox1) objBox1 = CREATE_OBJECT (prop_box_wood01a, <<1666.282349,-11.204082,172.777298>>) SET_ENTITY_ROTATION (objBox1, <<0.000637,-0.000136,10.660593>>) ENDIF IF NOT DOES_ENTITY_EXIST(objBox2) objBox2 = CREATE_OBJECT (prop_box_wood01a, <<1667.076416,-12.077780,173.261093>>) SET_ENTITY_ROTATION (objBox2, <<90.039322,-0.257438,-13.861418>>) ENDIF //REQUEST_SCRIPT_AUDIO_BANK("EXTREME_04_DOM_A") //REQUEST_SCRIPT_AUDIO_BANK("EXTREME_04_DOM_B") //REQUEST_SCRIPT_AUDIO_BANK("EXTREME_04_DOM_C") //IF NOT DOES_PICKUP_EXIST(pickupParachute) // pickupParachute = CREATE_AMBIENT_PICKUP(PICKUP_PARACHUTE,<<1666.29,-11.20,173.270350>>) //ENDIF //IF NOT DOES_ENTITY_EXIST(pickupParachute) //ENDIF /* IF NOT DOES_ENTITY_EXIST(objParachute) objParachute = CREATE_OBJECT (P_Parachute_S, <<1666.29,-11.20,173.270350>>) //<<1665.941895,-11.189898,173.240350>> //173.640350 SET_ENTITY_ROTATION (objParachute, <<-111.822540,-0.454914,-162.223083>>) ENDIF */ if IS_PED_UNINJURED(mDom.mPed) IF GET_SCRIPT_TASK_STATUS(mDom.mPed,SCRIPT_TASK_PERFORM_SEQUENCE) <> PERFORMING_TASK //seq of idle anims OPEN_SEQUENCE_TASK(seqDomIdle) TASK_PLAY_ANIM(NULL, "rcmextreme4", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1) TASK_PLAY_ANIM(NULL, "rcmextreme4", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1) TASK_PLAY_ANIM(NULL, "rcmextreme4", "fidget_01", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1) TASK_PLAY_ANIM(NULL, "rcmextreme4", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1) TASK_PLAY_ANIM(NULL, "rcmextreme4", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1) TASK_PLAY_ANIM(NULL, "rcmextreme4", "idle", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1) TASK_PLAY_ANIM(NULL, "rcmextreme4", "fidget_02", NORMAL_BLEND_IN, NORMAL_BLEND_OUT, -1) SET_SEQUENCE_TO_REPEAT(seqDomIdle,REPEAT_FOREVER) CLOSE_SEQUENCE_TASK(seqDomIdle) TASK_PERFORM_SEQUENCE(mDom.mPed,seqDomIdle) ENDIF ENDIF if IS_PED_UNINJURED(mDom.mPed) SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT(mDom.mPed, FALSE) ADD_PED_FOR_DIALOGUE(sSpeach, 4, mDom.mPed, "DOM") SET_PED_RELATIONSHIP_GROUP_HASH(mDom.mPed,GET_PED_RELATIONSHIP_GROUP_HASH(PLAYER_PED_ID())) ENDIF //pickupParachute = CREATE_AMBIENT_PICKUP(PICKUP_PARACHUTE,<<1665.3146, -11.4569, 173.1747>>,6,-1,P_Parachute_S,TRUE) //172.7747 //pickupParachute = CREATE_AMBIENT_PICKUP(PICKUP_PARACHUTE,<<1666.29,-11.20,173.250350>>,7,-1,P_Parachute_S,TRUE) //173.270350//172.7747 IF NOT DOES_ENTITY_EXIST(pickupParachute) pickupParachute = CREATE_AMBIENT_PICKUP(PICKUP_PARACHUTE,<<1665.2640, -11.4427, 172.7747>>,7,-1,P_Parachute_S,TRUE) //173.270350//172.7747 ENDIF SET_ENTITY_ROTATION (pickupParachute, <<-111.822540,-0.454914,-162.223083>>) PLAY_ENTITY_ANIM(pickupParachute,"Chute_Off_Bag","skydive@parachute@",4,FALSE,TRUE,FALSE,0.99) //ACTIVATE_PHYSICS(pickupParachute) /* PLACEMENT_FLAG_MAP = 0, PLACEMENT_FLAG_FIXED = 1, PLACEMENT_FLAG_REGENERATES = 2, PLACEMENT_FLAG_SNAP_TO_GROUND = 3, PLACEMENT_FLAG_ORIENT_TO_GROUND = 4, PLACEMENT_FLAG_LOCAL_ONLY = 5, PLACEMENT_FLAG_BLIPPED_SIMPLE = 6, PLACEMENT_FLAG_BLIPPED_COMPLEX = 7, PLACEMENT_FLAG_UPRIGHT = 8 */ SetStage(MS_MEET_DOM) ENDPROC /// PURPOSE: Check fail conditions PROC CheckForFail() FLOAT fDistance IF eMissionStage = MS_MEET_DOM IF NOT IS_PED_UNINJURED(mDom.mPed) sFailReason = "EXT4_F1" //Dom died eMissionStage = MS_MISSION_FAILING ELSE fDistance = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(mDom.mPed)) if bWarnedAboutDistance = FALSE if fDistance > 160.0 //180 //PRINT_NOW("EXT4_02", DEFAULT_GOD_TEXT_TIME, 1) // warn player about leaving the area bWarnedAboutDistance = TRUE ENDIF ELSE if fDistance > 200.0 // player has been warned, check for fail sFailReason = "EXT4_F2" //You left the area eMissionStage = MS_MISSION_FAILING ENDIF ENDIF if fDistance > 150.0 //180 IF DOES_BLIP_EXIST(mMissionBlip) SET_BLIP_FLASHES(mMissionBlip,TRUE) ENDIF ELSE IF DOES_BLIP_EXIST(mMissionBlip) SET_BLIP_FLASHES(mMissionBlip,FALSE) ENDIF ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(),<<1660.332031,-20.456074,136.702896>>, <<1584.418945,-30.291168,120.603775>>, 32.000000) sFailReason = "EXT4_F2" //You left the area eMissionStage = MS_MISSION_FAILING ENDIF ENDIF ENDPROC PROC FailWait() SWITCH eFAIL_STATE CASE FS_SETUP SAFE_REMOVE_BLIP(mMissionBlip) CLEAR_PRINTS() CLEAR_HELP() IF IS_STRING_NULL_OR_EMPTY(sFailReason) Random_Character_Failed() ELSE Random_Character_Failed_With_Reason(sFailReason) ENDIF eFAIL_STATE = FS_UPDATE BREAK CASE FS_UPDATE 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(<< 1759.5635, 111.1878, 170.3075 >>, 281.1612) //SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION(<< 1766.8259, 109.9883, 170.0763 >>, 291.1678) // delete everything MissionCleanup() Script_Cleanup(FALSE) ELSE // not finished fading out // you may want to handle dialogue etc here. ENDIF BREAK ENDSWITCH ENDPROC #IF IS_DEBUG_BUILD /// PURPOSE: Resets mission PROC ResetMission() DESTROY_CAM(camDomJumpSS1) DESTROY_CAM(camDomJumpSS2) DESTROY_CAM(camDomJumpSS3) //issDomJump1 = -1 //issDomJump2 = -1 //issDomJump3 = -1 CLEAR_PRINTS() UnloadEverything() bIntroCutDone = FALSE bJumpCam = FALSE //bFakeDomCreated = FALSE SAFE_DELETE_PED(mDom.mPed) SAFE_DELETE_PED(sRCLauncherDataLocal.pedID[0]) SAFE_DELETE_OBJECT(objDummyBox) SAFE_DELETE_OBJECT(objBox1) SAFE_DELETE_OBJECT(objBox2) SAFE_DELETE_OBJECT(objParachute) WHILE NOT RCM_CREATE_NPC_PED_ON_FOOT(sRCLauncherDataLocal.pedID[0]) WAIT(0) ENDWHILE SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(), << 1732.2219, 92.0087, 169.7867 >>, 138.1854, FALSE) InitVariables() // initialise everything SetStage(MS_INTRO) ENDPROC /// PURPOSE: Skips the current stage PROC SkipStage() SWITCH eMissionStage CASE MS_INTRO BREAK CASE MS_MEET_DOM SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(), << 1659.2189, -4.5402, 172.7742 >>, 182.5585, FALSE) BREAK CASE MS_MIDTRO BREAK CASE MS_DOM_JUMPS SAFE_TELEPORT_ENTITY(mDom.mPed, <<1658.713257,-8.521038,174.766663>>, 119.056664 , FALSE) SETTIMERA(40000) BREAK ENDSWITCH ENDPROC /// PURPOSE: Jumps to the stage selected PROC JumpToStage(MISSION_STAGE eNewStage) if eMissionStage = eNewStage // skip current stage bFinishedSkipping = TRUE ELSE SkipStage() ENDIF ENDPROC /// PURPOSE: Goes back to the previous stage PROC PreviousStage() iNewStage = ENUM_TO_INT(eMissionStage)-1 if iNewStage >-1 //we can skip to a previous stage eTargetStage = INT_TO_ENUM(MISSION_STAGE, iNewStage) ResetMission() bFinishedSkipping = FALSE JumpToStage(eTargetStage) ENDIF ENDPROC #ENDIF // =========================================================================================================== // DEBUG FUNCTIONS // =========================================================================================================== #IF IS_DEBUG_BUILD /// PURPOSE: Check for Forced Pass or Fail PROC DEBUG_Check_Debug_Keys() IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_S)) // Check for Pass WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() CLEAR_PRINTS() Script_Passed() ENDIF IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)) // Check for Fail WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() CLEAR_PRINTS() eMissionStage = MS_MISSION_FAILING ENDIF IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J)) // Check for Skip forward WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() SkipStage() ENDIF IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_P)) // Check for Skip backwards IF eMissionStage = MS_INTRO WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() init() RC_END_Z_SKIP() SetStage(MS_INTRO) ELIF eMissionStage = MS_MEET_DOM WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() init() RC_END_Z_SKIP() SetStage(MS_INTRO) ELIF eMissionStage = MS_MIDTRO WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() Init() SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(), << 1732.2219, 92.0087, 169.7867 >>, 138.1854, FALSE) RC_END_Z_SKIP() SetStage(MS_MEET_DOM) ELIF eMissionStage = MS_DOM_JUMPS WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() Init() SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(),<< 1659.2189, -4.5402, 172.7742 >>, 182.5585,FALSE) RC_END_Z_SKIP() SetStage(MS_MIDTRO) ENDIF ENDIF if LAUNCH_MISSION_STAGE_MENU(mSkipMenu, iNewStage) // Check for jumping to stage bDebugSkipping = TRUE IF iNewStage = 0 WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() init() RC_END_Z_SKIP() SetStage(MS_INTRO) ELIF iNewStage = 1 WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() Init() SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(), << 1732.2219, 92.0087, 169.7867 >>, 138.1854, FALSE) RC_END_Z_SKIP() SetStage(MS_MEET_DOM) ELIF iNewStage = 2 WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() Init() SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(),<< 1659.2189, -4.5402, 172.7742 >>, 182.5585,FALSE) RC_END_Z_SKIP() SetStage(MS_MIDTRO) ELIF iNewStage = 3 WAIT_FOR_CUTSCENE_TO_STOP() KILL_SCRIPTED_CUT() RC_START_Z_SKIP() ResetMission() InitVariables() Init() SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(),<< 1662.3895, -9.8186, 172.7746 >>, 124.6761,FALSE) RC_END_Z_SKIP() SetStage(MS_DOM_JUMPS) ENDIF ENDIF ENDPROC #ENDIF // =========================================================================================================== // MISSION FUNCTIONS & PROCEDURES // =========================================================================================================== // -------------------------------------------------------------- // STAGE FUNCTIONS // -------------------------------------------------------------- /// PURPOSE: Handle intro mocap PROC IntroMocap() SWITCH eCutsceneState CASE eCutInit DO_FOCUS_PUSH() bDebugSkipping = FALSE RC_REQUEST_CUTSCENE("es_4_rcm_p1") IF RC_IS_CUTSCENE_OK_TO_START() IF NOT bDoingFocusPush OR GET_GAME_TIMER() > iTimerFocusPush + 3500 RC_CLEANUP_LAUNCHER() REPLAY_START_EVENT(REPLAY_IMPORTANCE_LOW) START_CUTSCENE() if IS_ENTITY_ALIVE(sRCLauncherDataLocal.pedID[0]) REGISTER_ENTITY_FOR_CUTSCENE(sRCLauncherDataLocal.pedID[0],"Hudson",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,a_c_retriever) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Registered dog for cutscene ****") #ENDIF ENDIF WAIT(0) STOP_GAMEPLAY_HINT() RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<1729.921631,89.416199,174.012268>>, <<1739.745361,101.281578,167.828156>>, 7.000000,<< 1739.9564, 97.8651, 169.9797 >>, 140.8760) RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<1743.115479,105.832962,169.636169>>, <<1732.028809,93.771118,172.607452>>, 4.000000,<< 1739.9564, 97.8651, 169.9797 >>, 140.8760) RC_START_CUTSCENE_MODE(<< 1733.3149, 95.2246, 169.9192 >>,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Cutscene started ****") #ENDIF eCutsceneState = eCutUpdate ENDIF ENDIF BREAK CASE eCutUpdate IF IS_CUTSCENE_PLAYING() #IF IS_DEBUG_BUILD IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) STOP_CUTSCENE() ENDIF //DEBUG_Check_Debug_Keys() #ENDIF ELSE //SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0) //SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) eCutsceneState = eCutCleanup ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") //FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT) //SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK) //TASK_FOLLOW_NAV_MESH_TO_COORD(PLAYER_PED_ID(),<<-63.1068, 294.9655, 105.0442>>,PEDMOVEBLENDRATIO_WALK,-1,1,ENAV_NO_STOPPING | ENAV_DONT_AVOID_PEDS | ENAV_DONT_AVOID_OBJECTS) //SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0) //SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) eCutsceneState = eCutCleanup ENDIF BREAK CASE eCutCleanup //IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Franklin") // FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT) // SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK) //ENDIF SAFE_TELEPORT_ENTITY(PLAYER_PED_ID(), << 1732.2219, 92.0087, 169.7867 >>, 138.1854, FALSE) //FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID()) FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT) SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK) TASK_FOLLOW_NAV_MESH_TO_COORD(PLAYER_PED_ID(),<<1723.4518, 80.7290, 169.6701>>,PEDMOVEBLENDRATIO_WALK,-1,1,ENAV_NO_STOPPING | ENAV_DONT_AVOID_PEDS | ENAV_DONT_AVOID_OBJECTS) SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0) SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0) //SET_GAMEPLAY_CAM_RELATIVE_PITCH(-7.5576) //SET_GAMEPLAY_CAM_RELATIVE_HEADING(-153.9845) /* if IS_ENTITY_ALIVE(sRCLauncherDataLocal.pedID[0]) SAFE_DELETE_PED(sRCLauncherDataLocal.pedID[0]) ENDIF */ #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Cutscene finished ****") #ENDIF REPLAY_STOP_EVENT() bIntroCutDone = TRUE RC_END_CUTSCENE_MODE() BREAK ENDSWITCH ENDPROC FUNC BOOL IS_MIDTRO_OK_TO_START(BOOL check_for_cutscene_loaded = TRUE, FLOAT stopping_distance = DEFAULT_VEH_STOPPING_DISTANCE, BOOL b_player_exit_vehicle = FALSE) // See B*649704 - we need to do all this stuff rather than return false as soon as a condition returns false BOOL b_cutscene_ok_to_start = TRUE IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) IF NOT IS_PED_IN_ANY_HELI(PLAYER_PED_ID()) AND NOT IS_PED_IN_ANY_BOAT(PLAYER_PED_ID()) AND NOT IS_PED_IN_ANY_PLANE(PLAYER_PED_ID()) IF NOT BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), stopping_distance, 1) b_cutscene_ok_to_start = FALSE ELSE // Vehicle has stopped IF b_player_exit_vehicle = TRUE b_cutscene_ok_to_start = FALSE IF NOT IsPedPerformingTask(PLAYER_PED_ID(), SCRIPT_TASK_LEAVE_ANY_VEHICLE) TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID()) ENDIF ENDIF ENDIF IF IS_ENTITY_IN_AIR(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) b_cutscene_ok_to_start = FALSE ENDIF ENDIF ENDIF // Disable attack controls RC_DISABLE_CONTROL_ACTIONS_FOR_LEAD_IN() IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() //KILL_ANY_CONVERSATION() b_cutscene_ok_to_start = FALSE ENDIF IF b_cutscene_ok_to_start = FALSE RETURN FALSE ENDIF // B*1521696 - swap over from HAS_CUTSCENE_LOADED // HAS_CUTSCENE_LOADED_WITH_FAILSAFE()- Ensure you are only calling this check when your script is ready to play the cutscene IF check_for_cutscene_loaded = TRUE IF NOT HAS_CUTSCENE_LOADED_WITH_FAILSAFE() RETURN FALSE ENDIF ENDIF // Double check to make sure any conversations are killed when the function is returning TRUE //IF IS_SCRIPTED_CONVERSATION_ONGOING() // STOP_SCRIPTED_CONVERSATION(FALSE) //ENDIF RETURN TRUE ENDFUNC /// PURPOSE: Handle midtro mocap PROC MidtroMocap() IF eSubStage < SS_CLEANUP PREPARE_MUSIC_EVENT("EXT4_JUMPED_OS") ENDIF SWITCH eSubStage CASE SS_SETUP bDebugSkipping = FALSE IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1655.139282,5.342447,172.674774>>, <<1662.085327,-6.198325,175.024765>>, 8.250000) REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("es_4_rcm_p2_concat", CS_SECTION_2 | CS_SECTION_3) ELSE REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("es_4_rcm_p2_concat", CS_SECTION_1 | CS_SECTION_3) //Player triggering cutscene a weird way ENDIF STOP_SOUND(iDomPants) //KILL_ANY_CONVERSATION() IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION("Dom",PED_COMP_SPECIAL,2,0) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY = TRUE") #ENDIF ENDIF IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF IS_MIDTRO_OK_TO_START(TRUE,20,TRUE) IF NOT bDoingFocusPush OR GET_GAME_TIMER() > iTimerFocusPush + 3000 OR IS_ENTITY_AT_COORD(PLAYER_PED_ID(),<<1658.95, -5.45, 173.78>>,<<0.2,0.2,0.2>>) //SET_CUTSCENE_PED_COMPONENT_VARIATION("Dom",PED_COMP_SPECIAL,2,0) REPLAY_START_EVENT(REPLAY_IMPORTANCE_LOW) START_CUTSCENE(CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH) if IS_PED_UNINJURED(mDom.mPed) REGISTER_ENTITY_FOR_CUTSCENE(mDom.mPed,"Dom",CU_ANIMATE_EXISTING_SCRIPT_ENTITY,CS_DOM) //SET_CUTSCENE_PED_COMPONENT_VARIATION("Dom",PED_COMP_SPECIAL,2,0) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Dom registered for cutscene ****") #ENDIF ENDIF WAIT(0) bDoingFocusPush = FALSE STOP_GAMEPLAY_HINT() START_AUDIO_SCENE("EXTREME_04_CUSTOM_QUIET_SCENE") if IS_PED_UNINJURED(mDom.mPed) FREEZE_ENTITY_POSITION(mDom.mPed,FALSE) ENDIF IF DOES_ENTITY_EXIST(pickupParachute) AND NOT IS_ENTITY_DEAD(pickupParachute) SET_ENTITY_VISIBLE(pickupParachute,FALSE) ENDIF IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) vehPlayer = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) modelVehPlayer = GET_ENTITY_MODEL(vehPlayer) IF IS_THIS_MODEL_A_CAR(modelVehPlayer) = TRUE OR IS_THIS_MODEL_A_BIKE(modelVehPlayer) = TRUE vRepos = <<1649.7930, 11.7826, 172.7745>> fRepos = 220.9923 ELSE vRepos = << 1662.0160, 53.0925, 171.2482 >> fRepos = 298.6364 ENDIF //TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID()) RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<1654.721069,4.166876,172.524506>>, <<1662.561646,-8.920052,178.274155>>, 6.250000,vRepos, fRepos) ELSE vRepos = <<1649.7930, 11.7826, 172.7745>> fRepos = 220.9923 REPOSITION_PLAYERS_VEHICLE(vRepos, fRepos) ENDIF RC_START_CUTSCENE_MODE(<< 1660.1857, -7.4920, 172.7740 >>,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE) //REPOSITION_PLAYERS_VEHICLE(vRepos, fRepos) //CLEAR_AREA_OF_VEHICLES(<< 1660.1857, -7.4920, 172.7740 >>,200,TRUE) CLEAR_AREA_OF_PEDS(<< 1660.1857, -7.4920, 172.7740 >>,200) sbiDamBlock = ADD_SCENARIO_BLOCKING_AREA(<<1636.6907, -89.8127, 150.0>>,<<1706.1459, 58.7210, 190.0>>,FALSE,TRUE) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Cutscene started ****") #ENDIF eSubStage = SS_UPDATE ENDIF ENDIF ENDIF BREAK CASE SS_UPDATE IF IS_CUTSCENE_PLAYING() #IF IS_DEBUG_BUILD IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_J) STOP_CUTSCENE() ENDIF //DEBUG_Check_Debug_Keys() #ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA() IF NOT bKickedOffSS1 IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) IF IS_PED_UNINJURED(mDom.mPed) IF NOT DOES_CAM_EXIST(camDomJumpSS1) camDomJumpSS1 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) ENDIF SET_CAM_ACTIVE(camDomJumpSS1,TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) issDomJump1 = CREATE_SYNCHRONIZED_SCENE(<<1656.378, -12.057, 169.038>>,<< 0.000, 0.000, 115.850 >>) //camDomJumpSS1 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) TASK_SYNCHRONIZED_SCENE(mDom.mPed,issDomJump1,"rcmextreme4","Base_Jump_Spot",INSTANT_BLEND_IN,INSTANT_BLEND_OUT) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(issDomJump1,TRUE) SET_CAM_ACTIVE(camDomJumpSS1,TRUE) PLAY_SYNCHRONIZED_CAM_ANIM(camDomJumpSS1,issDomJump1,"Base_Jump_Spot_CAM","rcmextreme4") RENDER_SCRIPT_CAMS(TRUE, FALSE) FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) bKickedOffSS1 = TRUE ENDIF ENDIF ENDIF eSubStage = SS_CLEANUP ENDIF IF IS_PED_UNINJURED(mDom.mPed) IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Dom") /* IF NOT bKickedOffSS1 IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) IF NOT DOES_CAM_EXIST(camDomJumpSS1) camDomJumpSS1 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) ENDIF SET_CAM_ACTIVE(camDomJumpSS1,TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) issDomJump1 = CREATE_SYNCHRONIZED_SCENE(<<1656.378, -12.057, 169.038>>,<< 0.000, 0.000, 115.850 >>) //camDomJumpSS1 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) TASK_SYNCHRONIZED_SCENE(mDom.mPed,issDomJump1,"rcmextreme4","Base_Jump_Spot",INSTANT_BLEND_IN,INSTANT_BLEND_OUT) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(issDomJump1,FALSE) SET_CAM_ACTIVE(camDomJumpSS1,TRUE) PLAY_SYNCHRONIZED_CAM_ANIM(camDomJumpSS1,issDomJump1,"Base_Jump_Spot_CAM","rcmextreme4") RENDER_SCRIPT_CAMS(TRUE, FALSE) FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) bKickedOffSS1 = TRUE ENDIF ENDIF */ eSubStage = SS_CLEANUP ENDIF ENDIF //SET_CAM_PARAMS(camDomJump,<<1652.527954,-5.777370,167.722397>>,<<51.350212,1.771070,-126.907448>>,26.295422) //SHAKE_CAM(camDomJump,"HAND_SHAKE",1) ELSE eSubStage = SS_CLEANUP ENDIF BREAK CASE SS_CLEANUP REPLAY_STOP_EVENT() #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Cutscene finished ****") #ENDIF IF DOES_ENTITY_EXIST(pickupParachute) AND NOT IS_ENTITY_DEAD(pickupParachute) SET_ENTITY_VISIBLE(pickupParachute,TRUE) ENDIF IF bDebugSkipping = FALSE /* IF NOT bKickedOffSS1 IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) issDomJump1 = CREATE_SYNCHRONIZED_SCENE(<<1656.378, -12.057, 169.038>>,<< 0.000, 0.000, 115.850 >>) camDomJumpSS1 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) TASK_SYNCHRONIZED_SCENE(mDom.mPed,issDomJump1,"rcmextreme4","Base_Jump_Spot",INSTANT_BLEND_IN,INSTANT_BLEND_OUT) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(issDomJump1,TRUE) SET_CAM_ACTIVE(camDomJumpSS1,TRUE) PLAY_SYNCHRONIZED_CAM_ANIM(camDomJumpSS1,issDomJump1,"Base_Jump_Spot_CAM","rcmextreme4") RENDER_SCRIPT_CAMS(TRUE, FALSE) FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) ENDIF ENDIF */ TRIGGER_MUSIC_EVENT("EXT4_JUMPED_OS") /* if IS_PED_UNINJURED(mDom.mPed) IF NOT IS_ENTITY_PLAYING_ANIM(mDom.mPed,"rcmextreme4", "base_jump_spot") SET_ENTITY_COLLISION(mDom.mPed,TRUE) TASK_PLAY_ANIM(mDom.mPed, "rcmextreme4", "base_jump_spot",SLOW_BLEND_IN,-1,-1,AF_NOT_INTERRUPTABLE) FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) ENDIF ENDIF */ SetStage(MS_DOM_JUMPS) ENDIF BREAK ENDSWITCH ENDPROC /// PURPOSE: Wait for the player to reach Dom's location PROC MeetDom() IF NOT IS_PED_INJURED(PLAYER_PED_ID()) IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_FOLLOW_NAV_MESH_TO_COORD) = PERFORMING_TASK IF IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_MOVE_LR) OR IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_MOVE_UD) OR IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_ENTER) OR IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_SPRINT) OR IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_JUMP) OR (IS_PLAYER_IN_FIRST_PERSON_CAMERA() AND IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_LOOK_LR)) OR (IS_PLAYER_IN_FIRST_PERSON_CAMERA() AND IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_LOOK_UD)) OR (IS_PLAYER_IN_FIRST_PERSON_CAMERA() AND IS_CONTROL_PRESSED(PLAYER_CONTROL,INPUT_MOVE_UP_ONLY)) //FORCE_PED_AI_AND_ANIMATION_UPDATE(PLAYER_PED_ID()) CLEAR_PED_TASKS(PLAYER_PED_ID()) ENDIF ENDIF ENDIF SWITCH eSubStage CASE SS_SETUP #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Init meet Dom ****") #ENDIF IF IS_PED_UNINJURED(sRCLauncherDataLocal.pedID[0]) SET_PED_COMBAT_ATTRIBUTES(sRCLauncherDataLocal.pedID[0],CA_ALWAYS_FLEE,TRUE) ENDIF iDomIdleConvo = 0 bDoingFocusPush = TRUE PRINT_NOW("EXT4_01", DEFAULT_GOD_TEXT_TIME, 1) mMissionBlip = CREATE_PED_BLIP(mDom.mPed,TRUE,TRUE) SETTIMERA(0) eSubStage = SS_UPDATE BREAK CASE SS_UPDATE //FREEZE_ENTITY_POSITION(mDom.mPed,TRUE) IF DOES_ENTITY_EXIST(objParachute) IF NOT IS_ENTITY_DEAD(objParachute) //IF NOT DOES_ENTITY_HAVE_PHYSICS(objParachute) // ACTIVATE_PHYSICS(objParachute) //ENDIF IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),objParachute,1.0) GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), GADGETTYPE_PARACHUTE, 1,FALSE,FALSE) DELETE_OBJECT(objParachute) ENDIF ENDIF ENDIF if IS_PED_UNINJURED(PLAYER_PED_ID()) // check for player meeting up with Dom if IS_PED_UNINJURED(mDom.mPed) IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),mDom.mPed,DEFAULT_CUTSCENE_LOAD_DIST) REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("es_4_rcm_p2_concat", CS_SECTION_2 | CS_SECTION_3) IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY() SET_CUTSCENE_PED_COMPONENT_VARIATION("Dom",PED_COMP_SPECIAL,2,0) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY = TRUE") #ENDIF ENDIF ENDIF IF IS_PED_RAGDOLL(mDom.mPed) SET_ENTITY_HEALTH(mDom.mPed,0) ENDIF //IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),mDom.mPed,70.0) // SET_SCENARIO_TYPE_ENABLED("WORLD_VEHICLE_BICYCLE_MOUNTAIN",FALSE) //ENDIF IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),mDom.mPed,32.0) IF IS_PLAYER_SHOOTING_NEAR_PED(mDom.mPed) IF iAttackConvo = 0 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() //What are you doing man? PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_ATTACK", "EXT4_ATTACK_1", CONV_PRIORITY_MEDIUM) iAttackConvo = 1 ENDIF ELIF iAttackConvo = 1 IF NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() //Seriously now, stop that please. PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_ATTACK", "EXT4_ATTACK_2", CONV_PRIORITY_MEDIUM) iAttackConvo = 2 ENDIF ENDIF ELSE IF NOT bFrankComm IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),mDom.mPed,30.0) AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED() IF CREATE_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_COMM", CONV_PRIORITY_MEDIUM) bFrankComm = TRUE ENDIF ENDIF ENDIF DoDomIdleConvo() IF NOT IS_PED_HEADTRACKING_PED(PLAYER_PED_ID(),mDom.mPed) TASK_LOOK_AT_ENTITY(PLAYER_PED_ID(),mDom.mPed,-1) ENDIF ENDIF ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1663.587280,-11.714151,172.674759>>, <<1658.386841,-1.735749,175.774765>>, 5.500000) //<<1657.426636,-2.182298,172.774017>>, <<1663.951416,-14.652416,175.774216>>, 4.200000 IF NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) eSubStage = SS_CLEANUP // player has met Dom (and is on foot) ELSE vehPlayer = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()) modelVehPlayer = GET_ENTITY_MODEL(vehPlayer) IF IS_THIS_MODEL_A_CAR(modelVehPlayer) = TRUE OR IS_THIS_MODEL_A_BIKE(modelVehPlayer) = TRUE eSubStage = SS_CLEANUP // player has met Dom (and is in a car or bike) ENDIF ENDIF ELSE HandleDomIdles() // handle dom's idle anims ENDIF ENDIF ENDIF BREAK CASE SS_CLEANUP REPLAY_RECORD_BACK_FOR_TIME(5.0, 0.0) SAFE_REMOVE_BLIP(mMissionBlip) if IS_PED_UNINJURED(PLAYER_PED_ID()) // if player in car, stop him if IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()) BRING_VEHICLE_TO_HALT(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID()), 5.0, 1) wait(600) //DEFAULT_CAR_STOPPING_TO_CUTSCENE TASK_LEAVE_ANY_VEHICLE(PLAYER_PED_ID()) ENDIF ENDIF if IS_SCRIPTED_CONVERSATION_ONGOING() STOP_SCRIPTED_CONVERSATION(FALSE) ENDIF #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Cleanup meet Dom ****") #ENDIF SetStage(MS_MIDTRO) BREAK ENDSWITCH ENDPROC /// PURPOSE: Scripted cameras for dom jumping off the dam PROC DomJumpCam() INT iCamSwitch = 0 FLOAT fTimeScale FLOAT fExpectedFrameSpeed FLOAT fTimeScalar fTimeScale = 1.0 iTimerDomJumpCam = GET_GAME_TIMER() IF NOT DOES_CAM_EXIST(camDomJump) //camDomJump = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump2) //camDomJump2 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump3) //camDomJump3 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump4) //camDomJump4 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump5) //camDomJump5 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump6) //camDomJump6 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump7) //camDomJump7 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump8) //camDomJump8 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump9) //camDomJump9 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump10) //camDomJump10 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF IF NOT DOES_CAM_EXIST(camDomJump11) //camDomJump11 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) ENDIF /* //first shot SET_CAM_PARAMS(camDomJump,<<1652.527954,-5.777370,167.722397>>,<<51.350212,1.771070,-126.907448>>,26.295422) //first shot (interp from camDomJump - lin) SET_CAM_PARAMS(camDomJump2,<<1652.527954,-5.777370,167.722397>>,<<51.882275,1.771069,-128.265274>>,26.295422) //second (cut) SET_CAM_PARAMS(camDomJump3,<<1657.819702,-8.218518,175.766830>>,<<-43.096615,1.730442,116.986420>>,60.016502) //Second (interp from camDomJump3 - lin) SET_CAM_PARAMS(camDomJump4,<<1657.002319,-8.632171,175.197128>>,<<-61.205029,1.730429,117.738411>>,60.016502) //third (Cut) SET_CAM_PARAMS(camDomJump5,<<1657.367676,-18.865385,168.643616>>,<<15.442405,1.690912,13.221531>>,19.589161) //Third (interp from camDomJump5) SET_CAM_PARAMS(camDomJump6,<<1656.873169,-17.804836,160.604385>>,<<-1.196615,1.690920,10.088464>>,19.589161) //cut on warp - dom falls at the camera SET_CAM_PARAMS(camDomJump7,<<1656.883301,-17.515141,134.562317>>,<<80.652748,1.690934,-30.455717>>,50.009060) //Interp to here from fall cam SET_CAM_PARAMS(camDomJump8,<<1656.883301,-17.515141,134.562317>>,<<76.504456,1.690932,-64.226204>>,50.009060) //splat shot 1 decal SET_CAM_PARAMS(camDomJump9,<<1655.864014,-16.665905,150.794205>>,<<-79.345596,-0.000001,145.071335>>,21.731354) //splat shot 2 5second decal SET_CAM_PARAMS(camDomJump10,<<1656.021484,-16.440193,152.257721>>,<<-79.345581,-0.000001,143.763870>>,21.731354) //catch up cam - over sholder SET_CAM_PARAMS(camDomJump11,<<1659.7664, -7.0467, 175.0521>>, <<-36.0925, 0.0000, 120.3561>>,50.000000) */ // SHAKE_CAM(camDomJump,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump2,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump3,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump4,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump5,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump6,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump7,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump8,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump9,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump10,"HAND_SHAKE",0.5) // SHAKE_CAM(camDomJump11,"HAND_SHAKE",0.5) SET_TIME_SCALE(fTimeScale) //SET_CAM_ACTIVE(camDomJump,TRUE) //true on camera //RENDER_SCRIPT_CAMS(TRUE, FALSE) DISPLAY_HUD(FALSE) DISPLAY_RADAR(FALSE) SET_PLAYER_CONTROL(PLAYER_ID(),FALSE,SPC_REENABLE_CONTROL_ON_DEATH) //PLAY_SOUND_FRONTEND(iWindSound,"WIND","EXTREME_04_SOUNDSET") STOP_AUDIO_SCENE("EXTREME_04_CUSTOM_QUIET_SCENE") SAFE_FADE_SCREEN_IN_FROM_BLACK(DEFAULT_FADE_TIME,FALSE) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Starting scripted cutscene ****") #ENDIF bDomBreakBonesSound = FALSE bDomScream = FALSE bSwitchSS = FALSE bSwitchSS2 = FALSE bSkipCS = FALSE bDomScream = FALSE bDomBlood = FALSE //bInitSSAudio = FALSE // FLOAT fZheight ACTIVATE_AUDIO_SLOWMO_MODE("SLOWMO_EXTREME_04") REPLAY_START_EVENT(REPLAY_IMPORTANCE_LOWEST) //Dom jumps off the dam /* IF NOT bKickedOffSS1 IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) issDomJump1 = CREATE_SYNCHRONIZED_SCENE(<<1656.378, -12.057, 169.038>>,<< 0.000, 0.000, 115.850 >>) camDomJumpSS1 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) TASK_SYNCHRONIZED_SCENE(mDom.mPed,issDomJump1,"rcmextreme4","Base_Jump_Spot",INSTANT_BLEND_IN,INSTANT_BLEND_OUT) SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(issDomJump1,TRUE) SET_CAM_ACTIVE(camDomJumpSS1,TRUE) PLAY_SYNCHRONIZED_CAM_ANIM(camDomJumpSS1,issDomJump1,"Base_Jump_Spot_CAM","rcmextreme4") RENDER_SCRIPT_CAMS(TRUE, FALSE) ENDIF ENDIF */ WHILE GET_GAME_TIMER() < iTimerDomJumpCam + 11000 AND NOT IS_SCREEN_FADED_OUT() IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) AND NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump2) IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY(400) bSkipCS = TRUE ENDIF ENDIF IF bSkipCS IF NOT IS_SCREEN_FADING_OUT() DO_SCREEN_FADE_OUT(500) ENDIF ENDIF WAIT(0) #IF IS_DEBUG_BUILD //CPRINTLN(DEBUG_MISSION, "EXT4**** shot time **** = ", GET_GAME_TIMER() - iTimerDomJumpCam) #ENDIF IF NOT bSwitchSS //IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) //OR GET_SYNCHRONIZED_SCENE_PHASE(issDomJump1) = 1 IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) IF GET_SYNCHRONIZED_SCENE_PHASE(issDomJump1) = 1 CPRINTLN(DEBUG_MISSION, "issDomJump1 PHASE 1") //IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump2) IF IS_PED_UNINJURED(mDom.mPed) CPRINTLN(DEBUG_MISSION, "issDomJump2 NOT RUNNING") issDomJump2 = CREATE_SYNCHRONIZED_SCENE(<<1656.378, -12.057, 169.038>>,<< 0.000, 0.000, 115.850 >>) camDomJumpSS2 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) TASK_SYNCHRONIZED_SCENE(mDom.mPed,issDomJump2,"rcmextreme4","Base_Jump_Spot_02",INSTANT_BLEND_IN,INSTANT_BLEND_OUT) //SYNCED_SCENE_USE_PHYSICS SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(issDomJump2,FALSE) SET_CAM_ACTIVE(camDomJumpSS2,TRUE) PLAY_SYNCHRONIZED_CAM_ANIM(camDomJumpSS2,issDomJump2,"Base_Jump_Spot_02_CAM","rcmextreme4") RENDER_SCRIPT_CAMS(TRUE, FALSE) FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) DESTROY_CAM(camDomJumpSS1) bSwitchSS = TRUE ENDIF ENDIF ENDIF ELSE IF NOT bSwitchSS2 //IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump2) //OR GET_SYNCHRONIZED_SCENE_PHASE(issDomJump2) = 1 //IF NOT bInitSSAudio //INIT_SYNCH_SCENE_AUDIO_WITH_ENTITY("RCM_Extreme4_Fall_and_impact",mDom.mPed) // bInitSSAudio = TRUE //ELSE IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump2) AND GET_SYNCHRONIZED_SCENE_PHASE(issDomJump2) >= 0.2 IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump3) PREPARE_SYNCHRONIZED_AUDIO_EVENT("RCM_Extreme4_Fall_and_impact",0) ENDIF ENDIF //ENDIF IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump2) AND GET_SYNCHRONIZED_SCENE_PHASE(issDomJump2) = 1 //IF NOT IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump3) IF IS_PED_UNINJURED(mDom.mPed) issDomJump3 = CREATE_SYNCHRONIZED_SCENE(<<1656.378, -12.057, 169.038>>,<< 0.000, 0.000, 115.850 >>) camDomJumpSS3 = CREATE_CAM("DEFAULT_ANIMATED_CAMERA",TRUE) TASK_SYNCHRONIZED_SCENE(mDom.mPed,issDomJump3,"rcmextreme4","Fall_and_impact",INSTANT_BLEND_IN,INSTANT_BLEND_OUT) //SYNCED_SCENE_USE_PHYSICS SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(issDomJump3,TRUE) SET_CAM_ACTIVE(camDomJumpSS3,TRUE) PLAY_SYNCHRONIZED_CAM_ANIM(camDomJumpSS3,issDomJump3,"Fall_and_impact_CAM","rcmextreme4") PLAY_SYNCHRONIZED_AUDIO_EVENT(issDomJump3) RENDER_SCRIPT_CAMS(TRUE, FALSE) FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) DESTROY_CAM(camDomJumpSS2) bSwitchSS2 = TRUE ENDIF ENDIF ELSE IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump3) AND GET_SYNCHRONIZED_SCENE_PHASE(issDomJump3) >= 0.323//0.578 //IF IS_ENTITY_IN_ANGLED_AREA(mDom.mPed,<<1655.011841,-19.218821,132.747116>>, <<1655.736694,-22.015562,133.804886>>, 2.500000) IF NOT bDomBreakBonesSound //<< 1655.4, -20.5861, 134.311 >> head hits water //<< 1655.27, -20.8134, 133.631 >> head end //START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE("scr_extrm4_water_splash", mDom.mPed,<<0, 0, 0>>, <<0, 0, 0>>, BONETAG_NECK,2) //VECTOR vDomNeck = GET_WORLD_POSITION_OF_ENTITY_BONE(mDom.mPed,GET_PED_BONE_INDEX(mDom.mPed, BONETAG_HEAD)) //PRINTVECTOR(vDomNeck) //PRINTNL() START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_extrm4_water_splash", << 1655.27, -20.8134, 133.841 >>, <<0,0,0>>, 1) SET_PARTICLE_FX_NON_LOOPED_ALPHA(1) //IF ptfxBleed = NULL //ENDIF KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() //PLAY_SOUND_FROM_COORD(-1,"DOM_LANDS",<<1653.1371, -20.1164, 133.2946>>,"EXTREME_04_SOUNDSET") #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "------- SPLAT! -------") #ENDIF //APPLY_PED_BLOOD_DAMAGE_BY_ZONE(mDom.mPed, PDZ_HEAD,0.810, 0.733, BDT_STAB) //APPLY_PED_BLOOD_DAMAGE_BY_ZONE(mDom.mPed, PDZ_TORSO,0.940, 0.590, BDT_SHOTGUN_SMALL) //APPLY_PED_BLOOD(mDom.mPed,0,<< 1655.27, -20.8134, 133.835 >>,"Scripted_Ped_Splash_Back") bDomBreakBonesSound = TRUE ELSE IF NOT bDomBlood IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump3) AND GET_SYNCHRONIZED_SCENE_PHASE(issDomJump3) >= 0.44 ptfxBleed = START_PARTICLE_FX_LOOPED_AT_COORD("scr_extrm4_water_blood", << 1655.27, -20.8134, 133.842 >>, <<0,0,0>>,1) SET_PARTICLE_FX_LOOPED_ALPHA(ptfxBleed,1) bDomBlood = TRUE ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF //IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump1) //AND GET_SYNCHRONIZED_SCENE_PHASE(issDomJump1) >= 0.2//0.584 IF GET_GAME_TIMER() > iTimerDomJumpCam + 600 AND fTimeScale = 1 IF NOT bDomScream //Aaaaaaaaaagggghhhh! //IF PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_WIL", "EXT4_WIL_1", CONV_PRIORITY_MEDIUM) bDomScream = TRUE //ENDIF ENDIF ENDIF fExpectedFrameSpeed = 1.0 / 30.0 fTimeScalar = GET_FRAME_TIME() / (fExpectedFrameSpeed) // Find the fraction of a frame updated this time IF GET_GAME_TIMER() > iTimerDomJumpCam + 630 //650 fTimeScale = fTimeScale + (0.035*fTimeScalar) //speeding up time IF fTimeScale > 1.0 fTimeScale = 1.0 ENDIF //IF fTimeScale >= 0.5 //IF iCamSwitch >= 3 SET_TIME_SCALE(fTimeScale) ELSE fTimeScale = fTimeScale - (0.07*fTimeScalar) //slowing down time IF fTimeScale < 0.1 //0.05 fTimeScale = 0.1 //0.05 ENDIF SET_TIME_SCALE(fTimeScale) ENDIF IF iCamSwitch = 0 //start initial interp //RENDER_SCRIPT_CAMS(TRUE, FALSE) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** interp and activating Cam 2 ****") #ENDIF //SET_CAM_ACTIVE_WITH_INTERP(camDomJump2,camDomJump,7000, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) iCamSwitch = 1 ENDIF IF GET_GAME_TIMER() > iTimerDomJumpCam + 563 IF iCamSwitch = 1 //cut SAFE_DELETE_OBJECT(objDummyBox) //RENDER_SCRIPT_CAMS(TRUE, FALSE) #IF IS_DEBUG_BUILD //CPRINTLN(DEBUG_MISSION, "EXT4**** interp and activating Cam 4 ****") #ENDIF //SET_CAM_ACTIVE(camDomJump3,TRUE) //SET_CAM_ACTIVE_WITH_INTERP(camDomJump4,camDomJump3,8000, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) IF IS_PED_UNINJURED(mDom.mPed) // POINT_CAM_AT_ENTITY(camDomJump3, mDom.mPed, <<0,0,0>>) // POINT_CAM_AT_ENTITY(camDomJump4, mDom.mPed, <<0,0,0>>) ENDIF iCamSwitch = 2 ENDIF ENDIF IF GET_GAME_TIMER() > iTimerDomJumpCam + 871 IF iCamSwitch = 2 //RENDER_SCRIPT_CAMS(TRUE, FALSE) //SET_CAM_ACTIVE(camDomJump5,TRUE) #IF IS_DEBUG_BUILD //CPRINTLN(DEBUG_MISSION, "EXT4**** interp and activating Cam 6 ****") #ENDIF //SET_CAM_ACTIVE_WITH_INTERP(camDomJump6,camDomJump5,1900, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) IF IS_PED_UNINJURED(mDom.mPed) //POINT_CAM_AT_ENTITY(camDomJump6, mDom.mPed, <<0,0,0>>) //POINT_CAM_AT_ENTITY(camDomJump5, mDom.mPed, <<0,0,0>>) ENDIF iCamSwitch = 3 ENDIF ENDIF IF GET_GAME_TIMER() > iTimerDomJumpCam + 2000 IF iCamSwitch = 3 IF IS_PED_UNINJURED(mDom.mPed) //SET_ENTITY_HEALTH(mDom.mPed, 101) // make sure he dies doing the jump //SET_ENTITY_COORDS(mDom.mPed,<< 1657.0461, -17.4571, 145.2477 >>,FALSE,TRUE,TRUE) //z 150.2477 //SET_PED_HEADING_AND_PITCH(mDom.mPed, mDom.fStartHeading, 145) // TASK_PLAY_ANIM(mDom.mPed, "rcmextreme4", "base_jump_spot",SLOW_BLEND_IN,-1,-1,AF_NOT_INTERRUPTABLE, 0.9) // GET_GROUND_Z_FOR_3D_COORD(<< 1657.0461, -17.4571, 145.2477 >>, fZheight) // SET_PED_TO_RAGDOLL_WITH_FALL(mDom.mPed, 8000, 20000, TYPE_DIE_FROM_HIGH, <<0,0,-1>>, fZheight, <<0,0,0>>, <<0,0,0>>) // FORCE_PED_MOTION_STATE(mDom.mPed, MS_PARACHUTING) //SET_HIGH_FALL_TASK(mDom.mPed, 10000, 60000) //FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) ENDIF //RENDER_SCRIPT_CAMS(TRUE, FALSE) //SET_CAM_ACTIVE(camDomJump7,TRUE) #IF IS_DEBUG_BUILD //CPRINTLN(DEBUG_MISSION, "EXT4**** interp and activating Cam 7 ****") #ENDIF ////SET_ENTITY_COORDS(PLAYER_PED_ID(), <<1659.2251, -7.8510, 172.7747>>) //SET_ENTITY_HEADING(PLAYER_PED_ID(), 102.7977) //SET_CAM_ACTIVE_WITH_INTERP(camDomJump8,camDomJump7,2000, GRAPH_TYPE_LINEAR, GRAPH_TYPE_LINEAR) iCamSwitch = 4 ENDIF ENDIF IF GET_GAME_TIMER() > iTimerDomJumpCam + 3500 IF iCamSwitch = 4 //RENDER_SCRIPT_CAMS(TRUE, FALSE) //SET_CAM_ACTIVE(camDomJump9, TRUE) #IF IS_DEBUG_BUILD //CPRINTLN(DEBUG_MISSION, "EXT4**** interp and activating Cam 9 ****") #ENDIF //SET_CAM_ACTIVE_WITH_INTERP(camDomJump10,camDomJump9,5000, GRAPH_TYPE_DECEL, GRAPH_TYPE_DECEL) iCamSwitch = 5 ENDIF ENDIF /* IF iCamSwitch = 5 IF NOT IS_ENTITY_DEAD(mDom.mPed) IF HAS_ENTITY_COLLIDED_WITH_ANYTHING(mDom.mPed) //SET_ENTITY_HEALTH(mDom.mPed, 0) //CPRINTLN(DEBUG_MISSION, "EXT4**** Setting Doms hp to 0 ****") APPLY_PED_BLOOD(mDom.mPed,0,GET_WORLD_POSITION_OF_ENTITY_BONE(mDom.mPed,GET_PED_BONE_INDEX(mDom.mPed, BONETAG_HEAD)),"Scripted_Ped_Splash_Back") iCamSwitch = 6 ENDIF ELSE APPLY_PED_BLOOD(mDom.mPed,0,GET_WORLD_POSITION_OF_ENTITY_BONE(mDom.mPed,GET_PED_BONE_INDEX(mDom.mPed, BONETAG_HEAD)),"Scripted_Ped_Splash_Back") iCamSwitch = 6 ENDIF ENDIF */ IF GET_GAME_TIMER() > iTimerDomJumpCam + 10000 IF iCamSwitch <> 7 DESTROY_CAM(camDomJumpSS3) camDomJump11 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) SET_CAM_PARAMS(camDomJump11,<<1659.892700,-6.552459,174.870987>>,<<-29.259314,0.000001,122.450188>>,50.000000) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_CAM_ACTIVE(camDomJump11, TRUE) /* IF IS_PED_UNINJURED(mDom.mPed) CLEAR_PED_TASKS(mDom.mPed) ENDIF IF IS_ENTITY_ALIVE(mDom.mPed) CLEAR_PED_TASKS_IMMEDIATELY(mDom.mPed) SET_ENTITY_COORDS(mDom.mPed,<<1655.77, -20.04, 134.8>>) //134.74 SET_ENTITY_HEALTH(mDom.mPed, 0) ENDIF */ iCamSwitch = 7 ENDIF ENDIF /* IF NOT bDomBreakBonesSound IF IS_ENTITY_DEAD(mDom.mPed) OR IS_PED_INJURED(mDom.mPed) PLAY_SOUND_FROM_COORD(-1,"DOM_LANDS",<<1653.1371, -20.1164, 133.2946>>,"EXTREME_04_SOUNDSET") APPLY_PED_BLOOD_DAMAGE_BY_ZONE(mDom.mPed, PDZ_HEAD,0.810, 0.733, BDT_STAB) APPLY_PED_BLOOD_DAMAGE_BY_ZONE(mDom.mPed, PDZ_TORSO,0.940, 0.590, BDT_SHOTGUN_SMALL) APPLY_PED_BLOOD(mDom.mPed,0,GET_WORLD_POSITION_OF_ENTITY_BONE(mDom.mPed,GET_PED_BONE_INDEX(mDom.mPed, BONETAG_HEAD)),"Scripted_Ped_Splash_Back") bDomBreakBonesSound = TRUE ENDIF ENDIF */ /* IF NOT IS_ENTITY_DEAD(mDom.mPed) vDomRot = GET_ENTITY_ROTATION(mDom.mPed) fDomHeading = GET_ENTITY_HEADING(mDom.mPed) vDomPos = GET_ENTITY_COORDS(mDom.mPed) ENDIF */ #IF IS_DEBUG_BUILD IF eMissionStage <> MS_MISSION_FAILING if bFinishedSkipping = TRUE DEBUG_Check_Debug_Keys() // Check for debug keys ELSE JumpToStage(eTargetStage) // Skipping stages ENDIF ENDIF #ENDIF ENDWHILE IF bSkipCS IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump3) STOP_SYNCHRONIZED_AUDIO_EVENT(issDomJump3) ENDIF CANCEL_MUSIC_EVENT("EXT4_JUMPED_OS") KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE() camDomJump11 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA",TRUE) SET_CAM_PARAMS(camDomJump11,<<1659.892700,-6.552459,174.870987>>,<<-29.259314,0.000001,122.450188>>,50.000000) RENDER_SCRIPT_CAMS(TRUE, FALSE) SET_CAM_ACTIVE(camDomJump11, TRUE) IF NOT bDomBlood ptfxBleed = START_PARTICLE_FX_LOOPED_AT_COORD("scr_extrm4_water_blood", << 1655.27, -20.8134, 133.842 >>, <<0,0,0>>,1) SET_PARTICLE_FX_LOOPED_ALPHA(ptfxBleed,1) bDomBlood = TRUE ENDIF DO_SCREEN_FADE_IN(500) WAIT(100) ENDIF DEACTIVATE_AUDIO_SLOWMO_MODE("SLOWMO_EXTREME_04") //STOP_SOUND(iWindSound) SAFE_DELETE_OBJECT(objDummyBox) IF IS_PED_UNINJURED(mDom.mPed) IF iCamSwitch < 3 SET_ENTITY_HEALTH(mDom.mPed, 101) VECTOR vDomSkipCoords = GET_ENTITY_COORDS(mDom.mPed) FLOAT fZ IF vDomSkipCoords.z > 155 fZ = 155 ELSE fZ = vDomSkipCoords.z ENDIF SET_ENTITY_COORDS(mDom.mPed,<< 1657.0461, -17.4571, fZ >>) ENDIF ENDIF REPLAY_STOP_EVENT() RC_END_CUTSCENE_MODE() // RENDER_SCRIPT_CAMS(FALSE, FALSE) STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP() DISPLAY_HUD(TRUE) DISPLAY_RADAR(TRUE) SET_PLAYER_CONTROL(PLAYER_ID(),TRUE,SPC_REENABLE_CONTROL_ON_DEATH) SET_TIME_SCALE(1.0) IF IS_ENTITY_ALIVE(mDom.mPed) IF IS_SYNCHRONIZED_SCENE_RUNNING(issDomJump3) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4 SYNCH SCENE RUNNING (issDomJump3)") #ENDIF SET_SYNCHRONIZED_SCENE_PHASE(issDomJump3,1.0) ELSE CPRINTLN(DEBUG_MISSION, "EXT4 SYNCH SCENE NOT RUNNING (issDomJump3)") ENDIF CLEAR_PED_TASKS_IMMEDIATELY(mDom.mPed) FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) SET_ENTITY_COORDS(mDom.mPed,<<1655.77, -20.04, 135.8>>) //134.74 SET_ENTITY_HEALTH(mDom.mPed, 0) ENDIF ADD_PED_FOR_DIALOGUE(sSpeach, 1, PLAYER_PED_ID(), "FRANKLIN") CREATE_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_DUMB", CONV_PRIORITY_MEDIUM) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Finished scripted cutscene ****") #ENDIF ENDPROC /// PURPOSE: Dom jumps PROC DomJumps() SWITCH eSubStage CASE SS_SETUP #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Init Dom jumps ****") #ENDIF //if IS_PED_UNINJURED(mDom.mPed) //IF NOT IS_ENTITY_PLAYING_ANIM(mDom.mPed,"rcmextreme4", "base_jump_spot") //SET_ENTITY_COLLISION(mDom.mPed,TRUE) //TASK_PLAY_ANIM(mDom.mPed, "rcmextreme4", "base_jump_spot",SLOW_BLEND_IN,-1,-1,AF_NOT_INTERRUPTABLE|AF_ACTIVATE_RAGDOLL_ON_COLLISION|AF_HOLD_LAST_FRAME) //FORCE_PED_AI_AND_ANIMATION_UPDATE(mDom.mPed) //ENDIF //ENDIF //Aaaaaaaaaagggghhhh! //PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_WIL", "EXT4_WIL_1", CONV_PRIORITY_MEDIUM) bPlayerParaTask = FALSE SETTIMERA(0) eSubStage = SS_UPDATE BREAK CASE SS_UPDATE IF DOES_ENTITY_EXIST(objParachute) IF NOT IS_ENTITY_DEAD(objParachute) //IF NOT DOES_ENTITY_HAVE_PHYSICS(objParachute) // ACTIVATE_PHYSICS(objParachute) //ENDIF IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),objParachute,1.0) GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), GADGETTYPE_PARACHUTE, 1,FALSE,FALSE) DELETE_OBJECT(objParachute) ENDIF ENDIF ENDIF /* IF bFakeDomCreated = FALSE IF IS_ENTITY_DEAD(mDom.mPed) vDomRot = GET_ENTITY_ROTATION(mDom.mPed) fDomHeading = GET_ENTITY_HEADING(mDom.mPed) vDomPos = GET_ENTITY_COORDS(mDom.mPed,FALSE) IF NOT IS_SPHERE_VISIBLE(vDomPos,15.0) DELETE_PED(mDom.mPed) RC_CREATE_NPC_PED(mDom.mPed, CHAR_DOM, <>, fDomHeading, "Ext4-Dom") SET_ENTITY_ROTATION(mDom.mPed,vDomRot) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(mDom.mPed,TRUE) SET_PED_COMPONENT_VARIATION(mDom.mPed,PED_COMP_SPECIAL,2,0,0) DISABLE_PED_PAIN_AUDIO(mDom.mPed,TRUE) SET_PED_TO_RAGDOLL(mDom.mPed,1000,1000,TASK_RELAX,FALSE,FALSE) ACTIVATE_PHYSICS(mDom.mPed) SET_ENTITY_HEALTH(mDom.mPed, 0) bFakeDomCreated = TRUE ENDIF ELSE vDomRot = GET_ENTITY_ROTATION(mDom.mPed) fDomHeading = GET_ENTITY_HEADING(mDom.mPed) vDomPos = GET_ENTITY_COORDS(mDom.mPed) ENDIF ENDIF */ IF bJumpCam = FALSE DomJumpCam() //GIVE_WEAPON_TO_PED(PLAYER_PED_ID(), GADGETTYPE_PARACHUTE, 1) iTimerDomJumped = GET_GAME_TIMER() if IS_ENTITY_ALIVE(mDom.mPed) //SET_ENTITY_COLLISION(mDom.mPed,TRUE) ENDIF bJumpCam = TRUE ELSE /* IF NOT bDomScream //Aaaaaaaaaagggghhhh! PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_WIL", "EXT4_WIL_1", CONV_PRIORITY_MEDIUM) bDomScream = TRUE ENDIF IF NOT bDomBreakBonesSound IF IS_ENTITY_DEAD(mDom.mPed) OR IS_PED_INJURED(mDom.mPed) PLAY_SOUND_FROM_COORD(-1,"DOM_LANDS",<<1653.1371, -20.1164, 133.2946>>,"EXTREME_04_SOUNDSET") APPLY_PED_BLOOD_DAMAGE_BY_ZONE(mDom.mPed, PDZ_HEAD,0.810, 0.733, BDT_STAB) APPLY_PED_BLOOD_DAMAGE_BY_ZONE(mDom.mPed, PDZ_TORSO,0.940, 0.590, BDT_SHOTGUN_SMALL) APPLY_PED_BLOOD(mDom.mPed,0,GET_WORLD_POSITION_OF_ENTITY_BONE(mDom.mPed,GET_PED_BONE_INDEX(mDom.mPed, BONETAG_HEAD)),"Scripted_Ped_Splash_Back") bDomBreakBonesSound = TRUE ENDIF ENDIF */ ENDIF if IS_PED_UNINJURED(PLAYER_PED_ID()) // wait for dom to jump IF bPlayerParaTask = FALSE IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1624.015015,-5.451070,102.067657>>, <<1639.006592,-52.987503,181.335205>>, 58.750000) AND GET_PED_PARACHUTE_STATE(PLAYER_PED_ID()) = PPS_PARACHUTING //IF IS_PED_FALLING(PLAYER_PED_ID()) //TASK_PARACHUTE(PLAYER_PED_ID(),FALSE) //FORCE_PED_TO_OPEN_PARACHUTE(PLAYER_PED_ID()) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Franklin falling ****") #ENDIF bPlayerParaTask = TRUE //ENDIF ENDIF ENDIF if IS_ENTITY_ALIVE(mDom.mPed) if TIMERA() > 5000 IF GET_GAME_TIMER() > iTimerDomJumped + 25000 OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1665.728516,-26.278694,172.581512>>, <<1672.651855,-24.583941,177.254669>>, 4.000000) OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1650.518921,5.134407,172.674332>>, <<1656.570557,9.669823,176.774338>>, 15.250000) eSubStage = SS_CLEANUP // dom has jumped ENDIF ENDIF ELSE IF GET_GAME_TIMER() > iTimerDomJumped + 25000 OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1665.728516,-26.278694,172.581512>>, <<1672.651855,-24.583941,177.254669>>, 4.000000) OR IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1650.518921,5.134407,172.674332>>, <<1656.570557,9.669823,176.774338>>, 15.250000) eSubStage = SS_CLEANUP // dom died ENDIF ENDIF ENDIF //Disable timer on Dom initially falling IF GET_GAME_TIMER() < (iTimerDomJumped + 5000) IF IS_REPLAY_RECORDING() PRINTLN("[BEAG] DISABLING REPLAY CAMERA") REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() ENDIF ENDIF BREAK CASE SS_CLEANUP //Evolution in action... IF NOT IS_PED_FALLING(PLAYER_PED_ID()) AND NOT IS_PED_IN_PARACHUTE_FREE_FALL(PLAYER_PED_ID()) AND GET_ENTITY_HEIGHT_ABOVE_GROUND(PLAYER_PED_ID()) < 2.0 AND NOT IS_PED_RAGDOLL(PLAYER_PED_ID()) //IF PLAY_SINGLE_LINE_FROM_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_WIL", "EXT4_WIL_2", CONV_PRIORITY_HIGH) IF CREATE_CONVERSATION(sSpeach, "EXT4AUD", "EXT4_WIL2",CONV_PRIORITY_HIGH) Script_Passed() ENDIF ENDIF BREAK ENDSWITCH ENDPROC /// PURPOSE: Mission setup PROC Intro() IF IS_REPLAY_IN_PROGRESS() = FALSE IntroMocap() ELSE #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_MISSION, "EXT4**** Replay skip mocap cutscene ****") #ENDIF START_REPLAY_SETUP(<< 1732.1328, 91.9424, 169.7872 >>,128.6917) //SET_ENTITY_COORDS(PLAYER_PED_ID(),<< 1732.1328, 91.9424, 169.7872 >>) //SET_ENTITY_HEADING(PLAYER_PED_ID(),128.6917) //FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT) //SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK) END_REPLAY_SETUP() SET_GAMEPLAY_CAM_RELATIVE_HEADING(0) SET_GAMEPLAY_CAM_RELATIVE_PITCH(0) SET_PLAYER_CONTROL(PLAYER_ID(),TRUE) CLEAR_PED_WETNESS(PLAYER_PED_ID()) FORCE_PED_MOTION_STATE(PLAYER_PED_ID(),MS_ON_FOOT_WALK,FALSE,FAUS_CUTSCENE_EXIT) SET_PED_MIN_MOVE_BLEND_RATIO(PLAYER_PED_ID(),PEDMOVE_WALK) TASK_FOLLOW_NAV_MESH_TO_COORD(PLAYER_PED_ID(),<<1723.4518, 80.7290, 169.6701>>,PEDMOVEBLENDRATIO_WALK,-1,1,ENAV_NO_STOPPING | ENAV_DONT_AVOID_PEDS | ENAV_DONT_AVOID_OBJECTS) //WAIT(500) SAFE_FADE_SCREEN_IN_FROM_BLACK(DEFAULT_FADE_TIME,FALSE) bIntroCutDone = TRUE RC_END_Z_SKIP(TRUE) ENDIF IF bIntroCutDone = TRUE RC_SET_ENTITY_PROOFS_FOR_CUTSCENE(sRCLauncherDataLocal, FALSE) Init() ENDIF 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() Script_Cleanup() ENDIF IF Is_Replay_In_Progress() // Set up the initial scene for replays g_bSceneAutoTrigger = TRUE SetupScene_EXTREME_4(sRCLauncherDataLocal) g_bSceneAutoTrigger = FALSE ENDIF /* IF NOT DOES_PICKUP_EXIST(pickupParachute) pickupParachute = CREATE_PICKUP_ROTATE(PICKUP_PARACHUTE,<<1666.29,-11.20,173.270350>>,<<-111.822540,-0.454914,-162.223083>>) ENDIF */ //IF NOT DOES_PICKUP_EXIST(pickupParachute) // pickupParachute = CREATE_PICKUP_ROTATE(PICKUP_PARACHUTE,<<1665.3146, -11.4569, 172.7747>>,<<-111.822540,-0.454914,-162.223083>>) //ENDIF //pickupParachute = CREATE_AMBIENT_PICKUP(PICKUP_PARACHUTE,<<1666.29,-11.20,173.270350>>) IF DOES_ENTITY_EXIST(pickupParachute) ENDIF // INITIALISE EVERYTHING InitVariables() IF NOT IS_REPLAY_IN_PROGRESS() IF IS_PED_UNINJURED(sRCLauncherDataLocal.pedID[0]) AND IS_PED_UNINJURED(PLAYER_PED_ID()) AND NOT IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),sRCLauncherDataLocal.pedID[0],4) //AND GET_ENTITY_SPEED(PLAYER_PED_ID()) < 3.1 bDoingFocusPush = TRUE ENDIF ENDIF // Loop within here until the mission passes or fails WHILE(TRUE) WAIT(0) REPLAY_CHECK_FOR_EVENT_THIS_FRAME("SF_UR") UPDATE_MISSION_NAME_DISPLAYING(sRCLauncherDataLocal.sIntroCutscene) IF eMissionStage <> MS_MISSION_FAILING AND eMissionStage <> MS_INTRO CheckForFail() ENDIF IF eMissionStage < MS_DOM_JUMPS AND bDoingFocusPush IF IS_PED_UNINJURED(PLAYER_PED_ID()) AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<1668.882080,-19.652481,172.674759>>, <<1653.855347,8.008027,175.024780>>, 7.000000) IF IS_PED_UNINJURED(mDom.mPed) IF IS_ENTITY_IN_RANGE_ENTITY(PLAYER_PED_ID(),mDom.mPed,10) DO_FOCUS_PUSH_TWO() ENDIF ENDIF ENDIF ENDIF // MAIN LOOP SWITCH eMissionStage CASE MS_INTRO Intro() BREAK CASE MS_MEET_DOM MeetDom() BREAK CASE MS_MIDTRO MidtroMocap() BREAK CASE MS_DOM_JUMPS DomJumps() BREAK CASE MS_MISSION_FAILING FailWait() BREAK ENDSWITCH #IF IS_DEBUG_BUILD IF eMissionStage <> MS_MISSION_FAILING if bFinishedSkipping = TRUE DEBUG_Check_Debug_Keys() // Check for debug keys ELSE JumpToStage(eTargetStage) // Skipping stages ENDIF ENDIF #ENDIF ENDWHILE // Script should never reach here. Always terminate with cleanup function. ENDSCRIPT