2220 lines
74 KiB
Python
Executable File
2220 lines
74 KiB
Python
Executable File
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
USING "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, <<vDomPos.x,vDomPos.y,vDomPos.z + 0.4>>, 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
|
|
|