5062 lines
214 KiB
Python
Executable File
5062 lines
214 KiB
Python
Executable File
|
|
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Date: 22/04/2014 //
|
|
// //
|
|
// Script: Celebrations.sc //
|
|
// //
|
|
// Description: Handles running the end celebration screen independently of the mission controller script. //
|
|
// Originally requested so we can do session to session transitions behind the celebration screen. //
|
|
// //
|
|
// Author: William.Kennedy@RockstarNorth.com //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
|
|
// **************** //
|
|
// USING INCLUDES //
|
|
// **************** //
|
|
|
|
USING "globals.sch"
|
|
USING "commands_network.sch"
|
|
USING "script_player.sch"
|
|
USING "commands_path.sch"
|
|
USING "commands_fire.sch"
|
|
USING "building_control_public.sch"
|
|
USING "cutscene_public.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "net_events.sch"
|
|
USING "MP_SkyCam.sch"
|
|
USING "net_spawn.sch"
|
|
USING "net_mission.sch"
|
|
USING "net_scoring_common.sch"
|
|
USING "net_ambience.sch"
|
|
USING "net_rank_ui.sch"
|
|
USING "net_hud_activating.sch"
|
|
USING "selector_public.sch"
|
|
USING "help_at_location.sch"
|
|
USING "net_objective_text.sch"
|
|
USING "net_cutscene.sch"
|
|
USING "carmod_shop_private.sch"
|
|
USING "freemode_header.sch"
|
|
USING "net_mission_locate_message.sch"
|
|
USING "NET_TAXI.sch"
|
|
USING "cheat_handler.sch"
|
|
USING "net_wait_zero.sch"
|
|
USING "net_celebration_screen.sch"
|
|
|
|
USING "net_heists_common.sch"
|
|
USING "net_heist_summary.sch"
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
USING "net_debug_log.sch"
|
|
#ENDIF
|
|
|
|
|
|
|
|
// **************************** //
|
|
// ENUMS, STRUCTS & CONSTS //
|
|
// **************************** //
|
|
|
|
|
|
CONST_INT CELEB_GENERAL_BITSET_PRE_LOAD_WARP_TRIGGERED 0
|
|
CONST_INT CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP 1
|
|
CONST_INT CELEB_GENERAL_BITSET_SETUP_WINNER_SCENE_MOVIE 2
|
|
CONST_INT CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE 3
|
|
CONST_INT CELEB_GENERAL_BITSET_TRANSITIONED_INTO_BW 4
|
|
CONST_INT CELEB_GENERAL_BITSET_TRANSITIONED_OUT_OF_BW 5
|
|
CONST_INT CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC 6
|
|
CONST_INT CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT 7
|
|
CONST_INT CELEB_GENERAL_STARTED_WHITE_RECTANGLE_FADE 8
|
|
CONST_INT CELEB_GENERAL_STARTED_STATS_SCREEN_MUSIC_EVENT 9
|
|
CONST_INT CELEB_GENERAL_STOPPED_STATS_SCREEN_MUSIC_EVENT 10
|
|
CONST_INT CELEB_GENERAL_PLAYED_SUCCESS_NEUTRAL_FX_STACK 11
|
|
CONST_INT CELEB_GENERAL_REQUESTED_CUTSCENE_MUSIC_EVENT 12
|
|
CONST_INT CELEB_GENERAL_SET_ALLOW_RADIO_OVER_FADE_FLAG 13
|
|
CONST_INT CELEB_GENERAL_SET_ALLOW_CUTSCENE_OVER_FADE_FLAG 14
|
|
CONST_INT CELEB_GENERAL_BITSET_FREEZE_MICROPHONE 15
|
|
CONST_INT CELEB_GENERAL_STARTED_FADE_BLACK_SCENE 16
|
|
CONST_INT CELEB_GENERAL_FIX_POSITION 17
|
|
|
|
CONST_INT HEIST_WINNER_SCENE_SET_PLAYER_FOR_MOCAP 0
|
|
CONST_INT HEIST_WINNER_SCENE_INITIALISED_DATA 1
|
|
CONST_INT HEIST_WINNER_SCENE_SWITCHED_OF_LOADING_SPINNER 2
|
|
CONST_INT HEIST_WINNER_SCENE_STARTED_WAITING_SPINNER 3
|
|
CONST_INT HEIST_WINNER_SCENE_INITIALISED_APARTMENT_DATA 4
|
|
CONST_INT HEIST_WINNER_SCENE_CREATED_ENTITIES 5
|
|
CONST_INT HEIST_WINNER_SCENE_SET_FOCUS_POS 6
|
|
|
|
CONST_INT HEIST_WINNER_MOCAP_LOAD_FINISHED 9999
|
|
|
|
CONST_INT HEIST_MAX_WINNER_SCENE_OBJECTS 5
|
|
|
|
CONST_INT HEIST_WINNER_SCENE_STRIP_GLASS 0
|
|
CONST_INT HEIST_WINNER_SCENE_STRIP_GLASS_1 1
|
|
CONST_INT HEIST_WINNER_SCENE_STRIP_GLASS_2 2
|
|
CONST_INT HEIST_WINNER_SCENE_STRIP_GLASS_3 3
|
|
CONST_INT HEIST_WINNER_SCENE_STRIP_WHISKEY 4
|
|
|
|
CONST_INT HEIST_WINNER_SCENE_APT_CHAMP_2 0
|
|
CONST_INT HEIST_WINNER_SCENE_APT_CHAMP_3 1
|
|
CONST_INT HEIST_WINNER_SCENE_APT_CHAMP_4 2
|
|
|
|
CONST_INT HEIST_WINNER_SCENE_BAR_BOTTLE 0
|
|
CONST_INT HEIST_WINNER_SCENE_BAR_BOTTLE_1 1
|
|
|
|
|
|
CONST_INT WHITE_SCREEN_HOLD_TIME 3000
|
|
CONST_INT DELAY_FOR_MUSIC_TIME 2000
|
|
|
|
// Backup winner scene peds.
|
|
INT iNumPlayersInScene
|
|
CONST_INT NUM_PLAYERS_NEEDED_FOR_STRIP_SCENE 4
|
|
CONST_INT NUM_PLAYERS_NEEDED_FOR_TREVOR_SCENE 0
|
|
CONST_INT NUM_PLAYERS_NEEDED_FOR_ROOFTOP_SCENE 4
|
|
CONST_INT NUM_PLAYERS_NEEDED_FOR_APARTMENT_SCENE 4
|
|
CONST_INT NUM_PLAYERS_NEEDED_FOR_CASINO_HEIST 4
|
|
CONST_INT NUM_PLAYERS_NEEDED_FOR_BAR_SCENE 2
|
|
#IF FEATURE_HEIST_ISLAND
|
|
CONST_INT NUM_PLAYERS_NEEDED_FOR_ISLAND_HEIST 4
|
|
|
|
CONST_INT COMPANION_PED_ID 1
|
|
#ENDIF
|
|
|
|
//Scene specific vehicles/props
|
|
CONST_INT CASINO_HEIST_ROOF_SCENE_VEHICLES 13
|
|
CONST_INT CASINO_HEIST_BAR_SCENE_PROPS 3
|
|
CONST_INT CASINO_ISLAND_HEIST_SCENE_PROPS 4
|
|
|
|
// Game States
|
|
ENUM eGAME_STATE
|
|
eGAME_STATE_INI = 0,
|
|
eGAME_STATE_INI_SPAWN,
|
|
eGAME_STATE_RUNNING,
|
|
eGAME_STATE_END
|
|
ENDENUM
|
|
|
|
// Celebration States
|
|
ENUM eCELEBRATION_STATE
|
|
eCELEBRATIONSTATE_INIT_MOVIE = 0,
|
|
eCELEBRATIONSTATE_LOAD_MOVIE,
|
|
eCELEBRATIONSTATE_DRAW_MOVIE,
|
|
eCELEBRATIONSTATE_DO_WINNER_SCENE,
|
|
eCELEBRATIONSTATE_FADE_IN,
|
|
eCELEBRATIONSTATE_APARTMENT_FAILSAFE,
|
|
eCELEBRATIONSTATE_CLEANUP
|
|
ENDENUM
|
|
|
|
|
|
// Heist Winner Scene
|
|
ENUM eHEIST_WINNER_SCENE_STAGE
|
|
eHEISTWINNERSCENESTAGE_INIT = 0,
|
|
eHEISTWINNERSCENESTAGE_LOAD_SCENE,
|
|
eHEISTWINNERSCENESTAGE_LOAD_SIMPLE_INTERIOR,
|
|
eHEISTWINNERSCENESTAGE_DELAY_BEFORE_CUTSCENE_START,
|
|
eHEISTWINNERSCENESTAGE_START_SCENE,
|
|
eHEISTWINNERSCENESTAGE_START_CELEBRATION_MOVIE,
|
|
eHEISTWINNERSCENESTAGE_RUN_SCENE,
|
|
eHEISTWINNERSCENESTAGE_WARP_TO_OUTSIDE_STRIP_CLUB,
|
|
eHEISTWINNERSCENESTAGE_DO_JOINED_MISSION_AS_SPECTATOR_WARP,
|
|
eHEISTWINNERSCENESTAGE_WARP_TO_POST_MISSION_VECTOR,
|
|
eHEISTWINNERSCENESTAGE_SCTV_FADE_IN_DELAY,
|
|
eHEISTWINNERSCENESTAGE_SHARD_OVER_FADE,
|
|
eHEISTWINNERSCENESTAGE_SHARD_OVER_PAUSED_RENDER,
|
|
eHEISTWINNERSCENESTAGE_END
|
|
ENDENUM
|
|
|
|
ENUM eHEIST_WINNER_SCENE_TYPE
|
|
eHEISTWINNERSCENETYPE_ROOFTOP = 0,
|
|
eHEISTWINNERSCENETYPE_BAR,
|
|
eHEISTWINNERSCENETYPE_APARTMENT,
|
|
eHEISTWINNERSCENETYPE_STRIP_CLUB,
|
|
eHEISTWINNERSCENETYPE_TREVOR,
|
|
eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF,
|
|
eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
#IF FEATURE_HEIST_ISLAND
|
|
,eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
ENDENUM
|
|
|
|
|
|
INT iCelebrationCloningStage
|
|
SCRIPT_TIMER timerFadeFlashDelay
|
|
SCRIPT_TIMER timerDelayForCutsceneMusic
|
|
SCRIPT_TIMER waitForApartmentFadeIntimer
|
|
|
|
//SCALEFORM_RETURN_INDEX movieLengthReturnIndex
|
|
INT iCelebrationGeneralBitset
|
|
INT iPreLoadStage
|
|
INT iApartmentFailsafeStage
|
|
|
|
INT iJoinedMissionAsSpectatorWarpStage
|
|
|
|
BOOL bActivateInteractionMenuOnCleanup
|
|
BOOL bWaitingOnPlayersTimeout
|
|
|
|
SCRIPT_TIMER timerWaitingOnPlayers
|
|
SCRIPT_TIMER timerFrozenForCelebrationScreen
|
|
SCRIPT_TIMER timerShardFallenAway
|
|
SCRIPT_TIMER timerSctvFadeInDelay
|
|
|
|
SCRIPT_TIMER timerPlaceCameraFailSafeTimer
|
|
|
|
// url:bugstar:2255042
|
|
INT iFreezeMicrophoneDelay = 0
|
|
|
|
STRUCT STAND_ALONE_CELEBRATION_DATA_STRUCT
|
|
eGAME_STATE eGameState
|
|
eCELEBRATION_STATE eCelebrationState
|
|
INT iGameState
|
|
INT iFlagsBitset
|
|
SCRIPT_TIMER timeTerminate
|
|
ENDSTRUCT
|
|
|
|
|
|
STRUCT STRUCT_HEIST_WINNER_SCENE_PED_DATA
|
|
|
|
PED_INDEX pedId
|
|
VECTOR vSpawnPosition
|
|
FLOAT fSpawnHeading
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vPedPosDebug
|
|
FLOAT fPedHeadingDebug
|
|
BOOL bOverridePedWorldData
|
|
#ENDIF
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT STRUCT_HEIST_WINNER_SCENE_EXTRA_PED_DATA
|
|
|
|
PED_INDEX pedId
|
|
VECTOR vSpawnPosition
|
|
FLOAT fSpawnHeading
|
|
MODEL_NAMES eModel
|
|
TEXT_LABEL_23 tl23_handle
|
|
BOOL bAppliedHeadBlood
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT STRUCT_HEIST_WINNER_SCENE_OBJECT_DATA
|
|
|
|
ENTITY_INDEX entityId
|
|
VECTOR vSpawnPosition
|
|
FLOAT fSpawnHeading
|
|
MODEL_NAMES eModel
|
|
TEXT_LABEL_23 tl23_handle
|
|
|
|
ENDSTRUCT
|
|
|
|
ENUM SHARD_OVER_FADE_STAGE
|
|
SOF_FADE_OUT,
|
|
SOF_SETUP_SHARD,
|
|
SOF_DRAW,
|
|
SOF_CLEANUP
|
|
ENDENUM
|
|
|
|
STRUCT STRUCT_HEIST_END_WINNER_SCENE_DATA
|
|
|
|
eHEIST_WINNER_SCENE_TYPE eSceneType
|
|
eHEIST_WINNER_SCENE_STAGE eSceneStage
|
|
|
|
VECTOR vPlayerPosForLoadingScene
|
|
FLOAT fPlayerHeadingForLoadingScene
|
|
|
|
VECTOR vPlayerPosForAfterScene
|
|
FLOAT fPlayerHeadingForafterScene
|
|
|
|
VECTOR vFocusPosition
|
|
|
|
INT iMyScenePositionIndex
|
|
|
|
INT iLoadMocapStage
|
|
INT iMocapRegisteredPedsCount
|
|
|
|
STRUCT_HEIST_WINNER_SCENE_PED_DATA playerPedClone[4]
|
|
STRUCT_HEIST_WINNER_SCENE_EXTRA_PED_DATA extraPed
|
|
STRUCT_HEIST_WINNER_SCENE_OBJECT_DATA object[HEIST_MAX_WINNER_SCENE_OBJECTS]
|
|
|
|
INT iBitset
|
|
SCRIPT_TIMER sceneTimer
|
|
|
|
BOOL bCreatedPlayerPedClones
|
|
|
|
INTERIOR_INSTANCE_INDEX interiorIndex
|
|
STRING strInteriorName
|
|
STRING strRoomName
|
|
|
|
SCRIPT_TIMER mocapNotPlayingTimer
|
|
|
|
BOOL bInteriorNeedsReCapped
|
|
BOOL bInteriorNeedsDisabled
|
|
|
|
BOOL bDrawCongratsShard
|
|
|
|
BOOL bActivatedRequiredIpls
|
|
BOOL bSetupSceneEntities
|
|
SHARD_OVER_FADE_STAGE eShardOverFadeStage
|
|
SCRIPT_TIMER shardOverFadeDisplayTime
|
|
|
|
eCELEBRATION_AUDIO_STAGE eWinnerAudioScene
|
|
|
|
PLAYER_INDEX pOwner
|
|
SIMPLE_INTERIORS eTargetInteriorID
|
|
BOOL bPinnedAndRequestedInterior
|
|
|
|
GAMER_HANDLE playerLeader //Script launch data passes us the leader of the last mission
|
|
|
|
#IF FEATURE_HEIST_ISLAND
|
|
MODEL_NAMES eCompanionPedModel = DUMMY_MODEL_FOR_SCRIPT
|
|
#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
BOOL bRunEndHeistScene
|
|
BOOL bTerminateEndHeistScene
|
|
BOOL bEditMode
|
|
#ENDIF
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT_HEIST_END_WINNER_SCENE_DATA sHeistWinnerSceneData
|
|
|
|
|
|
STAND_ALONE_CELEBRATION_DATA_STRUCT standAloneData[1]
|
|
CELEBRATION_SCREEN_DATA sCelebrationData
|
|
|
|
|
|
|
|
// ******************** //
|
|
// LOCAL VARIABLES //
|
|
// ******************** //
|
|
|
|
CAMERA_INDEX pointAtPlayerCam
|
|
BOOL bPointAtPlayerCamSuccessfullyPlaced
|
|
INT iPointAtPlayerCameraCutStage
|
|
INTERIOR_INSTANCE_INDEX apartmentInteriorIndex
|
|
|
|
|
|
|
|
// ******************** //
|
|
// DEBUG VARIABLES //
|
|
// ******************** //
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
BOOL bHostEndMissionNow
|
|
TEXT_WIDGET_ID twID_GameState
|
|
TEXT_WIDGET_ID twID_FailReason
|
|
TEXT_WIDGET_ID twID_LiteralFailReason
|
|
TEXT_WIDGET_ID twID_lbPlayerRating[4]
|
|
TEXT_WIDGET_ID twID_lbPlayerName[4]
|
|
INT iWidgetPlayerIds[4]
|
|
|
|
|
|
|
|
// ******************** //
|
|
// DEBUG FUNCTIONS //
|
|
// ******************** //
|
|
|
|
FUNC STRING GET_GAME_STATE_NAME(eGAME_STATE eState)
|
|
|
|
SWITCH eState
|
|
CASE eGAME_STATE_INI RETURN "eGAME_STATE_INI"
|
|
CASE eGAME_STATE_INI_SPAWN RETURN "eGAME_STATE_INI_SPAWN"
|
|
CASE eGAME_STATE_RUNNING RETURN "eGAME_STATE_RUNNING"
|
|
CASE eGAME_STATE_END RETURN "eGAME_STATE_END"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID GAME STATE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_CELEBRATION_STATE_NAME(eCELEBRATION_STATE eState)
|
|
|
|
SWITCH eState
|
|
CASE eCELEBRATIONSTATE_INIT_MOVIE RETURN "eCELEBRATIONSTATE_INIT_MOVIE"
|
|
CASE eCELEBRATIONSTATE_LOAD_MOVIE RETURN "eCELEBRATIONSTATE_LOAD_MOVIE"
|
|
CASE eCELEBRATIONSTATE_DRAW_MOVIE RETURN "eCELEBRATIONSTATE_DRAW_MOVIE"
|
|
CASE eCELEBRATIONSTATE_DO_WINNER_SCENE RETURN "eCELEBRATIONSTATE_DO_WINNER_SCENE"
|
|
CASE eCELEBRATIONSTATE_FADE_IN RETURN "eCELEBRATIONSTATE_FADE_IN"
|
|
CASE eCELEBRATIONSTATE_APARTMENT_FAILSAFE RETURN "eCELEBRATIONSTATE_APARTMENT_FAILSAFE"
|
|
CASE eCELEBRATIONSTATE_CLEANUP RETURN "eCELEBRATIONSTATE_CLEANUP"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID CELEBRATION STATE"
|
|
|
|
ENDFUNC
|
|
#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PROC ADD_HEIST_WINNER_SCENE_WIDGETS()
|
|
INT i
|
|
TEXT_LABEL_63 tl63
|
|
START_WIDGET_GROUP("Heist Winner Scene")
|
|
ADD_WIDGET_BOOL("Run Scene", sHeistWinnerSceneData.bRunEndHeistScene)
|
|
ADD_WIDGET_BOOL("Terminate Scene", sHeistWinnerSceneData.bTerminateEndHeistScene)
|
|
ADD_WIDGET_BOOL("Edit Mode Active", sHeistWinnerSceneData.bEditMode)
|
|
START_WIDGET_GROUP("Scene Peds")
|
|
REPEAT 4 i
|
|
tl63 = "Ped "
|
|
tl63 += i
|
|
tl63 += " Activate Override World Data"
|
|
ADD_WIDGET_BOOL(tl63, sHeistWinnerSceneData.playerPedClone[i].bOverridePedWorldData)
|
|
tl63 = "Ped "
|
|
tl63 += i
|
|
tl63 += " World Position"
|
|
ADD_WIDGET_VECTOR_SLIDER(tl63, sHeistWinnerSceneData.playerPedClone[i].vPedPosDebug, -10000.0, 10000.0, 0.01)
|
|
tl63 = "Ped "
|
|
tl63 += i
|
|
tl63 += " World Heading"
|
|
ADD_WIDGET_FLOAT_SLIDER(tl63, sHeistWinnerSceneData.playerPedClone[i].fPedHeadingDebug, -10000.0, 10000.0, 0.01)
|
|
ENDREPEAT
|
|
STOP_WIDGET_GROUP()
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|
|
|
|
|
|
// ************ //
|
|
// FUNCTIONS //
|
|
// ************ //
|
|
|
|
/// PURPOSE:
|
|
/// Helper function to get a clients game/mission state
|
|
/// PARAMS:
|
|
/// iPlayer - The player's game state you want.
|
|
/// RETURNS:
|
|
/// The game state.
|
|
FUNC eGAME_STATE GET_GAME_STATE(INT iParticipant)
|
|
|
|
RETURN standAloneData[iParticipant].eGameState
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Sets the game state on the local participant.
|
|
/// PARAMS:
|
|
/// eState - state to set to.
|
|
PROC SET_GAME_STATE(eGAME_STATE eState)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF standAloneData[0].eGameState != eState
|
|
STRING sTemp = GET_GAME_STATE_NAME(eState)
|
|
PRINTLN("[SAC] - setting local participant game state to ", sTemp)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
standAloneData[0].eGameState = eState
|
|
|
|
ENDPROC
|
|
|
|
FUNC eCELEBRATION_STATE GET_CELEBRATION_STATE(INT iParticipant)
|
|
|
|
PRINTLN("[SAC] - get local participant celebration state is ", standAloneData[iParticipant].eCelebrationState)
|
|
RETURN standAloneData[iParticipant].eCelebrationState
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Sets the game state on the local participant.
|
|
/// PARAMS:
|
|
/// eState - state to set to.
|
|
PROC SET_CELEBRATION_STATE(eCELEBRATION_STATE eState)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF standAloneData[0].eCelebrationState != eState
|
|
STRING sTemp = GET_CELEBRATION_STATE_NAME(eState)
|
|
PRINTLN("[SAC] - setting local participant celebration state to ", sTemp)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
standAloneData[0].eCelebrationState = eState
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL GET_SHOULD_END_SCRIPT()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bHostEndMissionNow
|
|
PRINTLN("[SAC] - bHostEndMissionNow = TRUE, making GET_SHOULD_END_SCRIPT return TRUE.")
|
|
RETURN TRUE
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
PROC SET_MY_SCENE_POSITION_INDEX(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
INT iPlayer, iCount
|
|
PLAYER_INDEX playerId
|
|
|
|
REPEAT NUM_NETWORK_PLAYERS iPlayer
|
|
IF IS_NET_PLAYER_OK(INT_TO_NATIVE(PLAYER_INDEX, iPlayer), FALSE)
|
|
playerId = INT_TO_NATIVE(PLAYER_INDEX, iPlayer)
|
|
IF NOT IS_PLAYER_SCTV(playerId)
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(playerId)].bJoinedMissionAsSpectator
|
|
IF playerId = PLAYER_ID()
|
|
IF iCount <= 3
|
|
sData.iMyScenePositionIndex = iCount
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - set my scene position index to ", sData.iMyScenePositionIndex)
|
|
#IF IS_DEBUG_BUILD
|
|
ELSE
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - SET_MY_SCENE_POSITION_INDEX - iCount > 3. iCount = ", iCount)
|
|
#ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
iCount++
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_APARTMENT_EXTERIOR_SPAWN_DATA(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
MP_PROP_OFFSET_STRUCT sOffsetStruct
|
|
INT iBuilding = GET_PROPERTY_BUILDING(g_TransitionSessionNonResetVars.iAptIndex)
|
|
INT iSpawnIndex
|
|
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
iSpawnIndex = sData.iMyScenePositionIndex
|
|
ELSE
|
|
iSpawnIndex = 0
|
|
ENDIF
|
|
|
|
GET_TRANSITION_ANIM_CUSTOM_EXIT_SPAWN_COORDS(iBuilding, 0, iSpawnIndex, sOffsetStruct)
|
|
sData.vPlayerPosForAfterScene = sOffsetStruct.vLoc
|
|
sData.fPlayerHeadingForafterScene = sOffsetStruct.vRot.z
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
GET_TRANSITION_ANIM_CUSTOM_EXIT_SPAWN_COORDS(iBuilding, 0, 0, sOffsetStruct)
|
|
sData.vPlayerPosForAfterScene = sOffsetStruct.vLoc
|
|
sData.fPlayerHeadingForafterScene = sOffsetStruct.vRot.z
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
IF IS_VECTOR_ZERO(sData.vPlayerPosForAfterScene)
|
|
GET_TRANSITION_ANIM_CUSTOM_EXIT_SPAWN_COORDS(1, 0, 0, sOffsetStruct)
|
|
sData.vPlayerPosForAfterScene = sOffsetStruct.vLoc
|
|
sData.fPlayerHeadingForafterScene = sOffsetStruct.vRot.z
|
|
PRINTLN("[SAC] - Something has gone wrong with getting apartment experior coords. Force getting for building 1, so we dont fall through the map.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
PRINTLN("[SAC] - Called GET_TRANSITION_ANIM_CUSTOM_EXIT_SPAWN_COORDS with the following args:")
|
|
PRINTLN("[SAC] - iAptIndex = ", g_TransitionSessionNonResetVars.iAptIndex)
|
|
PRINTLN("[SAC] - iApartmentVariation = ", g_TransitionSessionNonResetVars.iApartmentVariation)
|
|
PRINTLN("[SAC] - iBuilding = GET_PROPERTY_BUILDING(g_TransitionSessionNonResetVars.iAptIndex) = ", iBuilding)
|
|
PRINTLN("[SAC] - iEntrance = ", 0)
|
|
PRINTLN("[SAC] - iSpawnIndex = ", iSpawnIndex)
|
|
PRINTLN("[SAC] - GET_TRANSITION_ANIM_CUSTOM_EXIT_SPAWN_COORDS results: ")
|
|
PRINTLN("[SAC] - sData.vPlayerPosForAfterScene = sOffsetStruct.vLoc = ", sOffsetStruct.vLoc)
|
|
PRINTLN("[SAC] - sData.fPlayerHeadingForafterScene = sOffsetStruct.vRot.z = ", sOffsetStruct.vRot.z)
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_APARTMENT_INTERIOR_SPAWN_DATA(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
sData.vPlayerPosForAfterScene = sData.vPlayerPosForLoadingScene
|
|
sData.fPlayerHeadingForafterScene = sData.fPlayerHeadingForLoadingScene
|
|
|
|
SET_POST_MISSION_PLACE_IN_APARTMENT_FLAG(TRUE)
|
|
|
|
PRINTLN("[SAC] - set vPlayerPosForAfterScene = vPlayerPosForLoadingScene = ", sData.vPlayerPosForAfterScene)
|
|
PRINTLN("[SAC] - set fPlayerHeadingForafterScene = fPlayerHeadingForLoadingScene = ", sData.fPlayerHeadingForafterScene)
|
|
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_APARTMENT_SCENE_DATA(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
INT iBase
|
|
MP_PROP_OFFSET_STRUCT sOffsetStruct
|
|
|
|
|
|
|
|
IF IS_HEIST_PROPERTY_TYPE_DLC(g_TransitionSessionNonResetVars.iAptIndex)
|
|
sData.strInteriorName = "hei_dlc_apart_high2_new"
|
|
sData.strRoomName = "mp_apt_h_01_main"
|
|
iBase = PROPERTY_BUS_HIGH_APT_1
|
|
|
|
ELIF IS_PROPERTY_CUSTOM_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex)
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_1
|
|
sData.strInteriorName = "apa_v_mp_h_01"
|
|
sData.strRoomName = "mp_h_01_living"
|
|
ENDIF
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_2
|
|
sData.strInteriorName = "apa_v_mp_h_02"
|
|
sData.strRoomName = "mp_h_02_living"
|
|
ENDIF
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_3
|
|
sData.strInteriorName = "apa_v_mp_h_03"
|
|
sData.strRoomName = "mp_h_03_living"
|
|
ENDIF
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_4
|
|
sData.strInteriorName = "apa_v_mp_h_04"
|
|
sData.strRoomName = "mp_h_04_living"
|
|
ENDIF
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_5
|
|
sData.strInteriorName = "apa_v_mp_h_05"
|
|
sData.strRoomName = "mp_h_05_living"
|
|
ENDIF
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_6
|
|
sData.strInteriorName = "apa_v_mp_h_06"
|
|
sData.strRoomName = "mp_h_06_living"
|
|
ENDIF
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_7
|
|
sData.strInteriorName = "apa_v_mp_h_07"
|
|
sData.strRoomName = "mp_h_07_living"
|
|
ENDIF
|
|
IF g_TransitionSessionNonResetVars.iApartmentVariation = PROPERTY_VARIATION_8
|
|
sData.strInteriorName = "apa_v_mp_h_08"
|
|
sData.strRoomName = "mp_h_08_living"
|
|
ENDIF
|
|
iBase = PROPERTY_CUSTOM_APT_1_BASE
|
|
|
|
ELIF IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_5_BASE_A)
|
|
sData.strInteriorName = "apa_v_mp_stilts_a"
|
|
sData.strRoomName = "mr_mp_stilts_a_living"
|
|
iBase = PROPERTY_STILT_APT_5_BASE_A
|
|
|
|
ELIF IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_1_BASE_B)
|
|
sData.strInteriorName = "apa_v_mp_stilts_b"
|
|
sData.strRoomName = "mr_mp_stilts_b_living"
|
|
iBase = PROPERTY_STILT_APT_1_BASE_B
|
|
|
|
ELSE
|
|
sData.strInteriorName = "hei_dlc_apart_high_new"
|
|
sData.strRoomName = "rm_high_lounge"
|
|
iBase = PROPERTY_HIGH_APT_1
|
|
|
|
ENDIF
|
|
|
|
GET_POSITION_AS_OFFSET_FOR_PROPERTY(g_TransitionSessionNonResetVars.iAptIndex, MP_END_HEIST_WINNER_SCENE_PED_0_COORDS, sOffsetStruct, iBase)
|
|
sData.playerPedClone[0].vSpawnPosition = sOffsetStruct.vLoc
|
|
sData.playerPedClone[0].fSpawnHeading = sOffsetStruct.vRot.z
|
|
|
|
GET_POSITION_AS_OFFSET_FOR_PROPERTY(g_TransitionSessionNonResetVars.iAptIndex, MP_END_HEIST_WINNER_SCENE_PED_1_COORDS, sOffsetStruct, iBase)
|
|
sData.playerPedClone[1].vSpawnPosition = sOffsetStruct.vLoc
|
|
sData.playerPedClone[1].fSpawnHeading = sOffsetStruct.vRot.z
|
|
|
|
GET_POSITION_AS_OFFSET_FOR_PROPERTY(g_TransitionSessionNonResetVars.iAptIndex, MP_END_HEIST_WINNER_SCENE_PED_2_COORDS, sOffsetStruct, iBase)
|
|
sData.playerPedClone[2].vSpawnPosition = sOffsetStruct.vLoc
|
|
sData.playerPedClone[2].fSpawnHeading = sOffsetStruct.vRot.z
|
|
|
|
GET_POSITION_AS_OFFSET_FOR_PROPERTY(g_TransitionSessionNonResetVars.iAptIndex, MP_END_HEIST_WINNER_SCENE_PED_3_COORDS, sOffsetStruct, iBase)
|
|
sData.playerPedClone[3].vSpawnPosition = sOffsetStruct.vLoc
|
|
sData.playerPedClone[3].fSpawnHeading = sOffsetStruct.vRot.z
|
|
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_2].vSpawnPosition = sData.playerPedClone[0].vSpawnPosition
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_2].vSpawnPosition += << 0.5, 0.0, 0.0 >>
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_2].fSpawnHeading = sData.playerPedClone[0].fSpawnHeading
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_2].eModel = PROP_CS_CHAMP_FLUTE
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_2].tl23_handle = "MPH_CHAMP_2"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_3].vSpawnPosition = sData.playerPedClone[0].vSpawnPosition
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_3].vSpawnPosition += << 0.0, 0.5, 0.0 >>
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_3].fSpawnHeading = sData.playerPedClone[0].fSpawnHeading
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_3].eModel = PROP_CS_CHAMP_FLUTE
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_3].tl23_handle = "MPH_CHAMP_3"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_4].vSpawnPosition = sData.playerPedClone[0].vSpawnPosition
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_4].vSpawnPosition += << 0.0, 0.0, 0.5 >>
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_4].fSpawnHeading = sData.playerPedClone[0].fSpawnHeading
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_4].eModel = PROP_CS_CHAMP_FLUTE
|
|
sData.object[HEIST_WINNER_SCENE_APT_CHAMP_4].tl23_handle = "MPH_CHAMP_4"
|
|
|
|
sData.eWinnerAudioScene = eCAS_PRISON_SCENE
|
|
|
|
sData.vFocusPosition = sData.playerPedClone[0].vSpawnPosition
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].fSpawnHeading
|
|
|
|
SET_APARTMENT_INTERIOR_SPAWN_DATA(sData)
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - iBase = ", iBase)
|
|
|
|
ENDPROC
|
|
|
|
PROC SETUP_SIMPLE_INTERIOR_PROPERTY_OWNER(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
IF IS_GAMER_HANDLE_VALID(sHeistWinnerSceneData.playerLeader)
|
|
sData.pOwner = NETWORK_GET_PLAYER_FROM_GAMER_HANDLE(sHeistWinnerSceneData.playerLeader)
|
|
|
|
IF sData.pOwner = INVALID_PLAYER_INDEX()
|
|
PRINTLN("[CASINO_HEIST_FLOW][CHF_CS][SAC] | SETUP_SIMPLE_INTERIOR_PROPERTY_OWNER - Gamer handle is valid. Not able to convert to player ID!")
|
|
ELSE
|
|
sData.eTargetInteriorID = GET_OWNED_SIMPLE_INTERIOR_OF_TYPE(sData.pOwner, SIMPLE_INTERIOR_TYPE_ARCADE)
|
|
PRINTLN("[CASINO_HEIST_FLOW][CHF_CS][SAC] | SETUP_SIMPLE_INTERIOR_PROPERTY_OWNER - Gamer handle is valid. Owner: ", NATIVE_TO_INT(sData.pOwner))
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT GB_IS_LOCAL_PLAYER_MEMBER_OF_A_GANG()
|
|
PRINTLN("[CASINO_HEIST_FLOW][CHF_CS][SAC] | SETUP_SIMPLE_INTERIOR_PROPERTY_OWNER - Not in a gang, using local player.")
|
|
sData.pOwner = PLAYER_ID()
|
|
ELIF GB_GET_LOCAL_PLAYER_GANG_BOSS() != INVALID_PLAYER_INDEX()
|
|
AND NETWORK_IS_PLAYER_ACTIVE(GB_GET_LOCAL_PLAYER_GANG_BOSS())
|
|
PRINTLN("[CASINO_HEIST_FLOW][CHF_CS][SAC] | SETUP_SIMPLE_INTERIOR_PROPERTY_OWNER - In a gang, using ths boss.")
|
|
sData.pOwner = GB_GET_LOCAL_PLAYER_GANG_BOSS()
|
|
ELSE
|
|
PRINTLN("[CASINO_HEIST_FLOW][CHF_CS][SAC] | SETUP_SIMPLE_INTERIOR_PROPERTY_OWNER - Fallback check, using ths boss.")
|
|
sData.pOwner = GB_GET_LOCAL_PLAYER_GANG_BOSS()
|
|
ENDIF
|
|
|
|
sData.eTargetInteriorID = GET_OWNED_SIMPLE_INTERIOR_OF_TYPE(sData.pOwner, SIMPLE_INTERIOR_TYPE_ARCADE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_NAME_HASHES_FOR_PLAYERS_IN_SCENE(eHEIST_WINNER_SCENE_TYPE eSceneType)
|
|
IF NOT GB_IS_LOCAL_PLAYER_MEMBER_OF_A_GANG()
|
|
PRINTLN("[CHF_CS][SAC] | SET_NAME_HASHES_FOR_PLAYERS_IN_SCENE - not in a gang!.")
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[0] = NETWORK_HASH_FROM_PLAYER_HANDLE(PLAYER_ID())
|
|
EXIT
|
|
ENDIF
|
|
|
|
PRINTLN("[CHF_CS][SAC] | SET_NAME_HASHES_FOR_PLAYERS_IN_SCENE - Doing this.")
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[0] = NETWORK_HASH_FROM_PLAYER_HANDLE(GB_GET_LOCAL_PLAYER_GANG_BOSS())
|
|
|
|
INT i, iPlayerLoop
|
|
|
|
SWITCH eSceneType
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
iPlayerLoop = NUM_PLAYERS_NEEDED_FOR_CASINO_HEIST
|
|
BREAK
|
|
#IF FEATURE_HEIST_ISLAND
|
|
CASE eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
iPlayerLoop = NUM_PLAYERS_NEEDED_FOR_ISLAND_HEIST
|
|
BREAK
|
|
#ENDIF
|
|
ENDSWITCH
|
|
|
|
|
|
REPEAT iPlayerLoop i
|
|
IF GlobalplayerBD_FM_3[NATIVE_TO_INT(GB_GET_LOCAL_PLAYER_GANG_BOSS())].sMagnateGangBossData.GangMembers[i] != INVALID_PLAYER_INDEX()
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[i + 1] = NETWORK_HASH_FROM_PLAYER_HANDLE(GlobalplayerBD_FM_3[NATIVE_TO_INT(GB_GET_LOCAL_PLAYER_GANG_BOSS())].sMagnateGangBossData.GangMembers[i] )
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
PROC SET_UP_STRAND_MISSION_FINISHED_FINAL_CUTSCENES()
|
|
IF NOT CHECK_TO_SEE_IF_THIS_IS_THE_LAST_STRAND_MISSION()
|
|
PRINTLN("[SAC] - Exiting - Not the last mission of a strand.")
|
|
EXIT
|
|
ENDIF
|
|
|
|
PRINTLN("[SAC] - This is the last mission of a strand.")
|
|
|
|
IF NOT CASINO_HEIST_FLOW_IS_CURRENT_MISSION_CASINO_HEIST_FINALE()
|
|
PRINTLN("[SAC] - Not the heist finale.")
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(g_sCasinoHeistFlowData.iBitSet, ciCASINO_HEIST_FLOW_BITSET__PLAY_LESTER_POST_MISSION_ONE_TIME_SCENE)
|
|
PRINTLN("[SAC] - PLAY_LESTER_POST_MISSION_ONE_TIME_SCENE already set.")
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF GB_GET_LOCAL_PLAYER_GANG_BOSS() = INVALID_PLAYER_INDEX()
|
|
PRINTLN("[SAC] - LOCAL_PLAYER_GANG_BOSS is invalid.")
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(GlobalplayerBD_CasinoHeist[NATIVE_TO_INT(GB_GET_LOCAL_PLAYER_GANG_BOSS())].iFlowBitSet,
|
|
ciCASINO_HEIST_FLOW_STAT_BITSET__LESTER_POST_MISSION_ONE_TIME_SCENE_VIEWED)
|
|
PRINTLN("[SAC] - LESTER_POST_MISSION_ONE_TIME_SCENE_VIEWED already set in BD.")
|
|
EXIT
|
|
ENDIF
|
|
|
|
PRINTLN("[SAC] - Casino Heist - Setting ciCASINO_HEIST_FLOW_BITSET__PLAY_LESTER_POST_MISSION_ONE_TIME_SCENE")
|
|
SET_BIT(g_sCasinoHeistFlowData.iBitSet, ciCASINO_HEIST_FLOW_BITSET__PLAY_LESTER_POST_MISSION_ONE_TIME_SCENE)
|
|
ENDPROC
|
|
|
|
PROC SET_CASINO_HEIST_FINALE_VEHICLE_STAT()
|
|
IF GB_IS_PLAYER_BOSS_OF_A_GANG(PLAYER_ID())
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT")
|
|
|
|
INT iCasinoHeistFinaleVehicleBS = GET_MP_INT_CHARACTER_STAT(MP_STAT_H3_VEHICLESUSED)
|
|
|
|
IF GET_LOCAL_PLAYER_CASINO_HEIST_APPROACH() = CASINO_HEIST_APPROACH_TYPE__SUBTERFUGE
|
|
SWITCH INT_TO_ENUM(CASINO_HEIST_OUTFITS, GlobalplayerBD_CasinoHeist[NATIVE_TO_INT(PLAYER_ID())].sMissionConfig.iSubterfugeOutfitsIn)
|
|
CASE CASINO_HEIST_OUTFIT_IN__BUGSTAR
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_BURRITO2)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_BURRITO2")
|
|
BREAK
|
|
CASE CASINO_HEIST_OUTFIT_IN__CELEBRITY
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_FURIA)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_FURIA")
|
|
BREAK
|
|
CASE CASINO_HEIST_OUTFIT_IN__GRUPPE_SECHS
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_STOCKADE)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_STOCKADE")
|
|
BREAK
|
|
CASE CASINO_HEIST_OUTFIT_IN__MECHANIC
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_BOXVILLE)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_BOXVILLE")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SWITCH INT_TO_ENUM(CASINO_HEIST_OUTFITS, GlobalplayerBD_CasinoHeist[NATIVE_TO_INT(PLAYER_ID())].sMissionConfig.iSubterfugeOutfitsOut)
|
|
CASE CASINO_HEIST_OUTFIT_OUT__FIREMAN
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_FIRETRUK)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_FIRETRUK")
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
SWITCH GET_LOCAL_PLAYER_CASINO_HEIST_DRIVER()
|
|
CASE CASINO_HEIST_DRIVER__KARIM_DENZ
|
|
SWITCH GET_LOCAL_PLAYER_CASINO_HEIST_VEHICLE_SELECTION()
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_ASBO)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_ASBO")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_2
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_KANJO)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_KANJO")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_3
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_SENTINEL3)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_SENTINEL3")
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE CASINO_HEIST_DRIVER__TALIANA_MARTINEZ
|
|
SWITCH GET_LOCAL_PLAYER_CASINO_HEIST_VEHICLE_SELECTION()
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__DEFAULT
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_RETINUE2)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_RETINUE2")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_YOSEMITE2)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_YOSEMITE2")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_2
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_SUGOI)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_SUGOI")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_3
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_JUGULAR)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_JUGULAR")
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE CASINO_HEIST_DRIVER__EDDIE_TOH
|
|
SWITCH GET_LOCAL_PLAYER_CASINO_HEIST_VEHICLE_SELECTION()
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__DEFAULT
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_SULTAN2)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_SULTAN2")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_GAUNTLET3)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_GAUNTLET3")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_2
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_ELLIE)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_ELLIE")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_3
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_KOMODA)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_KOMODA")
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE CASINO_HEIST_DRIVER__ZACH
|
|
SWITCH GET_LOCAL_PLAYER_CASINO_HEIST_VEHICLE_SELECTION()
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__DEFAULT
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_MANCHEZ)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_MANCHEZ")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_STRYDER)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_STRYDER")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_2
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_DEFILER)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_DEFILER")
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE CASINO_HEIST_DRIVER__WEAPONS_EXPERT
|
|
SWITCH GET_LOCAL_PLAYER_CASINO_HEIST_VEHICLE_SELECTION()
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__DEFAULT
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_ZHABA)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_ZHABA")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_VAGRANT)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_VAGRANT")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_2
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_OUTLAW)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_OUTLAW")
|
|
BREAK
|
|
CASE CASINO_HEIST_VEHICLE_SELECTION__ALTERNATE_3
|
|
SET_BIT(iCasinoHeistFinaleVehicleBS, ciCASINO_HEIST_FINALE_EVERON)
|
|
PRINTLN("[SAC] - Casino Heist - SET_CASINO_HEIST_FINALE_VEHICLE_STAT - ciCASINO_HEIST_FINALE_EVERON")
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SET_MP_INT_CHARACTER_STAT(MP_STAT_H3_VEHICLESUSED, iCasinoHeistFinaleVehicleBS)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
#IF FEATURE_HEIST_ISLAND
|
|
PROC SET_ISLAND_HEIST_COMPANION_PED_MODEL(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
IF HAS_PLAYER_COMPLETED_ISLAND_HEIST_AS_LEADER_FOR_SECOND_TIME(GB_GET_LOCAL_PLAYER_GANG_BOSS())
|
|
sData.eCompanionPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("s_m_m_highsec_04"))
|
|
ENDIF
|
|
|
|
sData.eCompanionPedModel = INT_TO_ENUM(MODEL_NAMES, HASH("ig_miguelmadrazo"))
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
FUNC BOOL INITIALISE_HEIST_END_WINNER_SCENE_DATA(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iHeistType = ciCELEBRATION_HEIST_TYPE__PREP
|
|
|
|
PRINTLN("[SAC] - init winner scene data - iHeistType = 1 (setup).")
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
PRINTLN("[SAC] - init winner scene data - iPostMissionSceneId = SIS_POST_APARTMENT.")
|
|
INITIALISE_APARTMENT_SCENE_DATA(sData)
|
|
ELSE
|
|
PRINTLN("[SAC] - init winner scene data - iPostMissionSceneId != SIS_POST_APARTMENT.")
|
|
ENDIF
|
|
SET_BIT(sData.iBitset, HEIST_WINNER_SCENE_INITIALISED_DATA)
|
|
PRINTLN("[SAC] - init winner scene data - set bit HEIST_WINNER_SCENE_INITIALISED_DATA.")
|
|
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iHeistType = ciCELEBRATION_HEIST_TYPE__FINALE
|
|
|
|
PRINTLN("[SAC] - init winner scene data - iHeistType = 2 (finale).")
|
|
|
|
IF NOT IS_BIT_SET(sData.iBitset, HEIST_WINNER_SCENE_INITIALISED_DATA)
|
|
|
|
SWITCH g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType
|
|
CASE FMMC_CELEBRATION_TYPE_ROOFTOP
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_ROOFTOP
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_ROOFTOP.")
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_BAR
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_BAR
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_BAR.")
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_STRIP_CLUB
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_STRIP_CLUB.")
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_APARTMENT
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_APARTMENT.")
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_TREVOR
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_TREVOR
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_TREVOR.")
|
|
BREAK
|
|
#IF FEATURE_HEIST_ISLAND
|
|
CASE FMMC_CELEBRATION_TYPE_ISLAND_HEIST
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_ISLAND_HEIST
|
|
SET_NAME_HASHES_FOR_PLAYERS_IN_SCENE(sData.eSceneType)
|
|
SET_ISLAND_HEIST_COMPANION_PED_MODEL(sData)
|
|
PREPARE_MUSIC_EVENT("HEI4_CELEBRATION_CHEERS_MUSIC")
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_ISLAND_HEIST, setting to eHEISTWINNERSCENETYPE_ISLAND_HEIST.")
|
|
BREAK
|
|
#ENDIF
|
|
CASE FMMC_CELEBRATION_TYPE_DEFAULT
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_ROOFTOP
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_DEFAULT, setting to eHEISTWINNERSCENETYPE_ROOFTOP.")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_DEFAULT
|
|
IF CASINO_HEIST_FLOW_IS_CURRENT_MISSION_CASINO_HEIST_FINALE()
|
|
SET_UP_STRAND_MISSION_FINISHED_FINAL_CUTSCENES()
|
|
|
|
SET_CASINO_HEIST_FINALE_VEHICLE_STAT()
|
|
|
|
IF IS_BIT_SET(g_sCasinoHeistFlowData.iBitSet, ciCASINO_HEIST_FLOW_BITSET__PLAY_LESTER_POST_MISSION_ONE_TIME_SCENE)
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_CASINO_HEIST
|
|
SET_NAME_HASHES_FOR_PLAYERS_IN_SCENE(sData.eSceneType)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = override to eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF.")
|
|
ELSE
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_CASINO_HEIST_2
|
|
SET_NAME_HASHES_FOR_PLAYERS_IN_SCENE(sData.eSceneType)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = override to eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR.")
|
|
ENDIF
|
|
|
|
CLEAR_BIT(g_sCasinoHeistFlowData.iBitSet, ciCASINO_HEIST_FLOW_BITSET__PLAY_LESTER_POST_MISSION_ONE_TIME_SCENE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT.")
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType = FMMC_CELEBRATION_TYPE_APARTMENT.")
|
|
ENDIF
|
|
|
|
// sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
|
|
SWITCH sData.eSceneType
|
|
|
|
#IF FEATURE_HEIST_ISLAND
|
|
CASE eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
sData.playerPedClone[0].vSpawnPosition = <<-1754.7, 438.9, 127.8>>
|
|
sData.playerPedClone[0].fSpawnHeading = 237.2271
|
|
|
|
sData.playerPedClone[1].vSpawnPosition = <<-1755.7, 438.9, 127.8>>
|
|
sData.playerPedClone[1].fSpawnHeading = 245.8436
|
|
|
|
sData.playerPedClone[2].vSpawnPosition = <<-1756.7, 438.9, 127.8>>
|
|
sData.playerPedClone[2].fSpawnHeading = 242.1219
|
|
|
|
sData.playerPedClone[3].vSpawnPosition = <<-1757.7, 438.9, 127.8>>
|
|
sData.playerPedClone[3].fSpawnHeading = 238.3524
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].fSpawnHeading
|
|
|
|
sData.eWinnerAudioScene = eCAS_FADE_WHITE_SCENE
|
|
|
|
sData.vFocusPosition = sData.playerPedClone[0].vSpawnPosition
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[0].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[0].fSpawnHeading
|
|
ENDIF
|
|
BREAK
|
|
#ENDIF
|
|
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
|
|
sData.playerPedClone[0].vSpawnPosition = <<788.1093, 202.0296, 80.4982>>
|
|
sData.playerPedClone[0].fSpawnHeading = 237.2271
|
|
|
|
sData.playerPedClone[1].vSpawnPosition = <<787.3500, 200.9037, 80.4979>>
|
|
sData.playerPedClone[1].fSpawnHeading = 245.8436
|
|
|
|
sData.playerPedClone[2].vSpawnPosition = <<786.5688, 199.3651, 80.5096>>
|
|
sData.playerPedClone[2].fSpawnHeading = 242.1219
|
|
|
|
sData.playerPedClone[3].vSpawnPosition = <<785.8018, 197.8395, 80.5189>>
|
|
sData.playerPedClone[3].fSpawnHeading = 238.3524
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].fSpawnHeading
|
|
|
|
sData.eWinnerAudioScene = eCAS_FADE_WHITE_SCENE
|
|
|
|
sData.vFocusPosition = sData.playerPedClone[0].vSpawnPosition
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[0].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[0].fSpawnHeading
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
sData.playerPedClone[0].vSpawnPosition = <<2726.3704, -381.3114, -49.9999>>
|
|
sData.playerPedClone[0].fSpawnHeading = 264.5209
|
|
|
|
sData.playerPedClone[1].vSpawnPosition = <<2726.8015, -383.3425, -49.9999>>
|
|
sData.playerPedClone[1].fSpawnHeading = 305.0945
|
|
|
|
sData.playerPedClone[2].vSpawnPosition = <<2726.7837, -385.0965, -49.9999>>
|
|
sData.playerPedClone[2].fSpawnHeading = 221.9951
|
|
|
|
sData.playerPedClone[3].vSpawnPosition = <<2727.0337, -386.7577, -49.9999>>
|
|
sData.playerPedClone[3].fSpawnHeading = 289.0450
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].fSpawnHeading
|
|
|
|
sData.eWinnerAudioScene = eCAS_FADE_WHITE_SCENE
|
|
|
|
sData.vFocusPosition = sData.playerPedClone[0].vSpawnPosition
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[0].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[0].fSpawnHeading
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENETYPE_ROOFTOP
|
|
|
|
sData.playerPedClone[0].vSpawnPosition = << 705.515, -964.901, 35.859 >>
|
|
sData.playerPedClone[0].fSpawnHeading = 74.187
|
|
|
|
sData.playerPedClone[1].vSpawnPosition = << 706.374, -964.040, 35.859 >>
|
|
sData.playerPedClone[1].fSpawnHeading = 80.000
|
|
|
|
sData.playerPedClone[2].vSpawnPosition = << 706.166, -962.865, 35.859 >>
|
|
sData.playerPedClone[2].fSpawnHeading = 90.000
|
|
|
|
sData.playerPedClone[3].vSpawnPosition = << 705.842, -965.960, 35.859 >>
|
|
sData.playerPedClone[3].fSpawnHeading = 70.652
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].fSpawnHeading
|
|
|
|
sData.eWinnerAudioScene = eCAS_PACIFIC_SCENE
|
|
|
|
sData.vFocusPosition = sData.playerPedClone[0].vSpawnPosition
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[0].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[0].fSpawnHeading
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
|
|
sData.strInteriorName = "v_strip3"
|
|
sData.strRoomName = "strp3mainrm"
|
|
|
|
sData.playerPedClone[0].vSpawnPosition = <<115.3036, -1286.7184, 27.2615>>
|
|
sData.playerPedClone[0].fSpawnHeading = 106.5682
|
|
|
|
sData.playerPedClone[1].vSpawnPosition = <<114.7243, -1285.9166, 27.2625>>
|
|
sData.playerPedClone[1].fSpawnHeading = 103.7247
|
|
|
|
sData.playerPedClone[2].vSpawnPosition = <<114.2871, -1284.9615, 27.2642>>
|
|
sData.playerPedClone[2].fSpawnHeading = 135.9676
|
|
|
|
sData.playerPedClone[3].vSpawnPosition = <<113.8246, -1284.0287, 27.2658>>
|
|
sData.playerPedClone[3].fSpawnHeading = 152.4515
|
|
|
|
sData.extraPed.vSpawnPosition = <<115.3036, -1286.7184, 27.2615>>
|
|
sData.extraPed.fSpawnHeading = 106.5682
|
|
sData.extraPed.eModel = S_F_Y_Stripper_01
|
|
sData.extraPed.tl23_handle = "Bar_Maid"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS].vSpawnPosition = <<115.3036, -1286.2184, 27.2615>>
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS].fSpawnHeading = 106.5682
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS].eModel = P_CS_Shot_Glass_2_S
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS].tl23_handle = "Glass"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_1].vSpawnPosition = <<115.3036, -1286.4184, 27.2615>>
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_1].fSpawnHeading = 106.5682
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_1].eModel = P_CS_Shot_Glass_2_S
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_1].tl23_handle = "Glass_1"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_2].vSpawnPosition = <<115.3036, -1286.6184, 27.2615>>
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_2].fSpawnHeading = 106.5682
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_2].eModel = P_CS_Shot_Glass_2_S
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_2].tl23_handle = "Glass_2"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_3].vSpawnPosition = <<115.3036, -1286.8184, 27.2615>>
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_3].fSpawnHeading = 106.5682
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_3].eModel = P_CS_Shot_Glass_2_S
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_GLASS_3].tl23_handle = "Glass_3"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_WHISKEY].vSpawnPosition = <<115.3036, -1286.7184, 27.6615>>
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_WHISKEY].fSpawnHeading = 106.5682
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_WHISKEY].eModel = P_Whiskey_Bottle_S
|
|
sData.object[HEIST_WINNER_SCENE_STRIP_WHISKEY].tl23_handle = "Whisky"
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].fSpawnHeading
|
|
|
|
SWITCH sData.iMyScenePositionIndex
|
|
CASE 0
|
|
sData.vPlayerPosForAfterScene = <<132.4727, -1304.2257, 28.2104>>
|
|
sData.fPlayerHeadingForafterScene = 212.0879
|
|
BREAK
|
|
CASE 1
|
|
sData.vPlayerPosForAfterScene = <<129.9843, -1302.3949, 28.2327>>
|
|
sData.fPlayerHeadingForafterScene = 212.6229
|
|
BREAK
|
|
CASE 2
|
|
sData.vPlayerPosForAfterScene = <<135.6028, -1303.9547, 28.1685>>
|
|
sData.fPlayerHeadingForafterScene = 163.7941
|
|
BREAK
|
|
CASE 3
|
|
sData.vPlayerPosForAfterScene = <<128.0055, -1305.1724, 28.2327>>
|
|
sData.fPlayerHeadingForafterScene = 246.5913
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bBlockStripClubPedsForCongratsScreen = TRUE
|
|
|
|
sData.eWinnerAudioScene = eCAS_HUMANE_SCENE
|
|
|
|
sData.vFocusPosition = sData.playerPedClone[0].vSpawnPosition
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[0].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[0].fSpawnHeading
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENETYPE_BAR
|
|
|
|
sData.strInteriorName = "v_rockclub"
|
|
|
|
sData.playerPedClone[0].vSpawnPosition = <<-562.7222, 285.1675, 84.3764>>
|
|
sData.playerPedClone[0].fSpawnHeading = 76.7772
|
|
|
|
sData.playerPedClone[1].vSpawnPosition = <<-562.6874, 286.8524, 84.3764>>
|
|
sData.playerPedClone[1].fSpawnHeading = 101.7949
|
|
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE].vSpawnPosition = <<-562.7222, 285.1675, 84.3764>>
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE].fSpawnHeading = 253.0338
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE].eModel = PROP_CS_BEER_BOT_01
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE].tl23_handle = "MPH_Bottle"
|
|
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE_1].vSpawnPosition = <<-562.7222, 285.1675, 84.7764>>
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE_1].fSpawnHeading = 253.0338
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE_1].eModel = PROP_CS_BEER_BOT_01
|
|
sData.object[HEIST_WINNER_SCENE_BAR_BOTTLE_1].tl23_handle = "MPH_Bottle^1"
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[sData.iMyScenePositionIndex].fSpawnHeading
|
|
|
|
sData.eWinnerAudioScene = eCAS_FLEECA_SCENE
|
|
|
|
sData.vFocusPosition = sData.playerPedClone[0].vSpawnPosition
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[0].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[0].fSpawnHeading
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENETYPE_APARTMENT
|
|
|
|
INITIALISE_APARTMENT_SCENE_DATA(sData)
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENETYPE_TREVOR
|
|
|
|
sData.playerPedClone[0].vSpawnPosition = <<2825.8787, 4818.5977, 46.8845>>
|
|
sData.playerPedClone[0].fSpawnHeading = 45.8519
|
|
|
|
sData.playerPedClone[1].vSpawnPosition = <<2825.8787, 4818.5977, 46.8845>>
|
|
sData.playerPedClone[1].fSpawnHeading = 11.7321
|
|
|
|
sData.playerPedClone[2].vSpawnPosition = <<2825.8787, 4818.5977, 46.8845>>
|
|
sData.playerPedClone[2].fSpawnHeading = 81.2564
|
|
|
|
sData.playerPedClone[3].vSpawnPosition = <<2825.8787, 4818.5977, 46.8845>>
|
|
sData.playerPedClone[3].fSpawnHeading = 152.4515
|
|
|
|
sData.extraPed.vSpawnPosition = <<2825.8787, 4818.5977, 46.8845>>
|
|
sData.extraPed.fSpawnHeading = 303.5638
|
|
sData.extraPed.eModel = player_two
|
|
sData.extraPed.tl23_handle = "TREVOR"
|
|
|
|
sData.vPlayerPosForLoadingScene = sData.extraPed.vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.extraPed.fSpawnHeading
|
|
|
|
sData.eWinnerAudioScene = eCAS_SERIES_A_SCENE
|
|
|
|
sData.vFocusPosition = sData.extraPed.vSpawnPosition
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.vPlayerPosForLoadingScene = sData.playerPedClone[0].vSpawnPosition
|
|
sData.fPlayerHeadingForLoadingScene = sData.playerPedClone[0].fSpawnHeading
|
|
ENDIF
|
|
|
|
SWITCH sData.iMyScenePositionIndex
|
|
CASE 0
|
|
sData.vPlayerPosForAfterScene = <<2702.9031, 4335.1421, 44.8519>>
|
|
sData.fPlayerHeadingForafterScene = 45.8519
|
|
BREAK
|
|
CASE 1
|
|
sData.vPlayerPosForAfterScene = <<2698.0510, 4331.7847, 44.8526>>
|
|
sData.fPlayerHeadingForafterScene = 11.7321
|
|
BREAK
|
|
CASE 2
|
|
sData.vPlayerPosForAfterScene = <<2705.3345, 4339.2905, 44.8519>>
|
|
sData.fPlayerHeadingForafterScene = 81.2564
|
|
BREAK
|
|
CASE 3
|
|
sData.vPlayerPosForAfterScene = <<113.8246, -1284.0287, 27.2658>>
|
|
sData.fPlayerHeadingForafterScene = 152.4515
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
// Setup widget values.
|
|
sData.playerPedClone[0].vPedPosDebug = sData.playerPedClone[0].vSpawnPosition
|
|
sData.playerPedClone[0].fPedHeadingDebug = sData.playerPedClone[0].fSpawnHeading
|
|
sData.playerPedClone[1].vPedPosDebug = sData.playerPedClone[1].vSpawnPosition
|
|
sData.playerPedClone[1].fPedHeadingDebug = sData.playerPedClone[1].fSpawnHeading
|
|
sData.playerPedClone[2].vPedPosDebug = sData.playerPedClone[2].vSpawnPosition
|
|
sData.playerPedClone[2].fPedHeadingDebug = sData.playerPedClone[2].fSpawnHeading
|
|
sData.playerPedClone[3].vPedPosDebug = sData.playerPedClone[3].vSpawnPosition
|
|
sData.playerPedClone[3].fPedHeadingDebug = sData.playerPedClone[3].fSpawnHeading
|
|
|
|
// Print data values to logs.
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print")
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - strInteriorName = ", sData.strInteriorName)
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - iAptIndex = ", g_TransitionSessionNonResetVars.iAptIndex)
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - vPlayerPosForLoadingScene = ", sData.vPlayerPosForLoadingScene)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - fPlayerHeadingForLoadingScene = ", sData.fPlayerHeadingForLoadingScene)
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[0].vSpawnPosition = ", sData.playerPedClone[0].vSpawnPosition)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[0].fSpawnHeading", sData.playerPedClone[0].fSpawnHeading)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[1].vSpawnPosition = ", sData.playerPedClone[1].vSpawnPosition)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[1].fSpawnHeading", sData.playerPedClone[1].fSpawnHeading)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[2].vSpawnPosition = ", sData.playerPedClone[2].vSpawnPosition)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[2].fSpawnHeading", sData.playerPedClone[2].fSpawnHeading)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[3].vSpawnPosition = ", sData.playerPedClone[3].vSpawnPosition)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - playerPedClone[3].fSpawnHeading", sData.playerPedClone[3].fSpawnHeading)
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - vPlayerPosForAfterScene = ", sData.vPlayerPosForAfterScene)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [PMC] - scene data print - fPlayerHeadingForafterScene", sData.fPlayerHeadingForafterScene)
|
|
|
|
#ENDIF
|
|
|
|
SET_BIT(sData.iBitset, HEIST_WINNER_SCENE_INITIALISED_DATA)
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
PRINTLN("[SAC] - init winner scene data - iHeistType has invalid value. iHeistType = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iHeistType)
|
|
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iHeistType = ciCELEBRATION_HEIST_TYPE__PREP
|
|
|
|
PRINTLN("[SAC] - init winner scene data - defaulted iHeistType to 1 (setup) so we can continue into freemode.")
|
|
|
|
SCRIPT_ASSERT("iHeistType has invalid value. defaulted iHeistType to 1 (setup).")
|
|
|
|
ENDIF
|
|
|
|
RETURN IS_BIT_SET(sData.iBitset, HEIST_WINNER_SCENE_INITIALISED_DATA)
|
|
|
|
ENDFUNC
|
|
|
|
FUNC MODEL_NAMES GET_BACKUP_PED_MODEL(INT iBackupPed)
|
|
|
|
SWITCH iBackupPed
|
|
CASE 0
|
|
// RETURN A_F_Y_VINEWOOD_01
|
|
RETURN A_F_Y_GENHOT_01
|
|
CASE 1
|
|
// RETURN A_M_Y_VINEWOOD_01
|
|
RETURN A_F_Y_GENHOT_01
|
|
ENDSWITCH
|
|
|
|
RETURN A_F_Y_GENHOT_01
|
|
|
|
ENDFUNC
|
|
|
|
PROC DELETE_HEIST_END_WINNER_SCENE_ENTITIES(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
INT iObj
|
|
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[0].pedId)
|
|
DELETE_PED(sData.playerPedClone[0].pedId)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_BACKUP_PED_MODEL(0))
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - DELETE_HEIST_END_WINNER_SCENE_ENTITIES - deleted clone ped 0.")
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[1].pedId)
|
|
DELETE_PED(sData.playerPedClone[1].pedId)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_BACKUP_PED_MODEL(1))
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - DELETE_HEIST_END_WINNER_SCENE_ENTITIES - deleted clone ped 1.")
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[2].pedId)
|
|
DELETE_PED(sData.playerPedClone[2].pedId)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_BACKUP_PED_MODEL(2))
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - DELETE_HEIST_END_WINNER_SCENE_ENTITIES - deleted clone ped 2.")
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[3].pedId)
|
|
DELETE_PED(sData.playerPedClone[3].pedId)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(GET_BACKUP_PED_MODEL(3))
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - DELETE_HEIST_END_WINNER_SCENE_ENTITIES - deleted clone ped 3.")
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sData.extraPed.pedId)
|
|
DELETE_PED(sData.extraPed.pedId)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(sData.extraPed.eModel)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - DELETE_HEIST_END_WINNER_SCENE_ENTITIES - deleted extra ped.")
|
|
ENDIF
|
|
|
|
REPEAT HEIST_MAX_WINNER_SCENE_OBJECTS iObj
|
|
IF DOES_ENTITY_EXIST(sData.object[iObj].entityId)
|
|
DELETE_ENTITY(sData.object[iObj].entityId)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(sData.object[iObj].eModel)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - DELETE_HEIST_END_WINNER_SCENE_ENTITIES - deleted object ", iObj)
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PROC UPDATE_HEIST_END_WINNER_SCENE_PEDS_WITH_WIDGET_DATA(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
INT i
|
|
|
|
REPEAT 4 i
|
|
IF sData.playerPedClone[i].bOverridePedWorldData
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[i].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sData.playerPedClone[i].pedId)
|
|
SET_ENTITY_COORDS(sData.playerPedClone[i].pedId, sData.playerPedClone[i].vPedPosDebug)
|
|
SET_ENTITY_HEADING(sData.playerPedClone[i].pedId, sData.playerPedClone[i].fPedHeadingDebug)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
PROC TRIGGER_POST_HEIST_POSITION_SYSTEMS()
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
PRINTLN("[SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - iPostMissionSceneId = SIS_POST_APARTMENT.")
|
|
#IF IS_DEBUG_BUILD
|
|
INT i
|
|
REPEAT COUNT_OF(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash) i
|
|
PRINTLN("[RCC MISSION] - [SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - iPlayerNameHash[", i, "] = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[i])
|
|
PRINTLN("[RCC MISSION] - [SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - strLeaderBoardPlayerName[", i, "] = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.strLeaderBoardPlayerName[i])
|
|
ENDREPEAT
|
|
#ENDIF
|
|
CLEANUP_MP_CUTSCENE(TRUE, FALSE)
|
|
TRIGGER_APARTMENT_HANDOVER(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash, (NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene))
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_STRIP_CLUB
|
|
PRINTLN("[SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - iPostMissionSceneId = SIS_POST_STRIP_CLUB.")
|
|
#IF IS_DEBUG_BUILD
|
|
INT i
|
|
REPEAT COUNT_OF(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash) i
|
|
PRINTLN("[SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - iPlayerNameHash[", i, "] = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[i])
|
|
PRINTLN("[RCC MISSION] - [SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - strLeaderBoardPlayerName[", i, "] = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.strLeaderBoardPlayerName[i])
|
|
ENDREPEAT
|
|
#ENDIF
|
|
CLEANUP_MP_CUTSCENE(TRUE, FALSE)
|
|
// g_TransitionSessionNonResetVars.sGlobalCelebrationData.enumPostMissionScenePossibleResult = PMSP_FAILED
|
|
TRIGGER_STRIP_CLUB_POST_SCENE_SYSTEM(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash)
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
INT i
|
|
REPEAT COUNT_OF(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash) i
|
|
PRINTLN("[SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - iPlayerNameHash[", i, "] = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[i])
|
|
PRINTLN("[RCC MISSION] - [SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - strLeaderBoardPlayerName[", i, "] = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.strLeaderBoardPlayerName[i])
|
|
ENDREPEAT
|
|
#ENDIF
|
|
SET_NO_LOADING_SCREEN(TRUE)
|
|
PRINTLN("[SAC] - called SET_NO_LOADING_SCREEN(TRUE). At request of Neil Ferguson for 2230423.")
|
|
START_SYNCED_INTERACTION_SCENE(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId, g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash)
|
|
PRINTLN("[SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - iPostMissionSceneId != SIS_POST_STRIP_CLUB and != SIS_POST_APARTMENT, using START_SYNCED_INTERACTION_SCENE().")
|
|
PRINTLN("[SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS - iPostMissionSceneId", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId)
|
|
ENDIF
|
|
|
|
DISABLE_INTERACTION_MENU()
|
|
SET_CELEBRATION_SCREEN_AS_ACTIVE(FALSE, FALSE)
|
|
|
|
THEFEED_FLUSH_QUEUE()
|
|
PRINTLN("[RCC MISSION] - [NETCELEBRATION] - [SAC] - called THEFEED_FLUSH_QUEUE.")
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTLN("[SAC] - TRIGGER_POST_HEIST_POSITION_SYSTEMS has been called:")
|
|
DEBUG_PRINTCALLSTACK()
|
|
#ENDIF
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL LOAD_INTERIOR_FOR_HEIST_END_WINNER_SCENE(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
VECTOR vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
|
|
PRINTLN("[SAC] - LOAD_INTERIOR_FOR_HEIST_END_WINNER_SCENE been called with player at pos ", vPlayerPos)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF NOT sData.bActivatedRequiredIpls
|
|
|
|
IF IS_PROPERTY_CUSTOM_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex)
|
|
ACTIVATE_IPLS_FOR_CUSTOM_PROPERTY(g_TransitionSessionNonResetVars.iAptIndex, g_TransitionSessionNonResetVars.iApartmentVariation)
|
|
PRINTLN("[SAC] - LOAD_INTERIOR_FOR_HEIST_END_WINNER_SCENE is for custom apartment, activated ipls with ACTIVATE_IPLS_FOR_CUSTOM_PROPERTY(", g_TransitionSessionNonResetVars.iAptIndex, " ,", g_TransitionSessionNonResetVars.iApartmentVariation, ")")
|
|
ELIF g_TransitionSessionNonResetVars.iAptIndex = PROPERTY_STILT_APT_8_A
|
|
ACTIVATE_IPLS_FOR_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex)
|
|
PRINTLN("[SAC] - LOAD_INTERIOR_FOR_HEIST_END_WINNER_SCENE is for PROPERTY_STILT_APT_8_A, activated ipls with ACTIVATE_IPLS_FOR_STILT_APARTMENT(", g_TransitionSessionNonResetVars.iAptIndex, ")")
|
|
ENDIF
|
|
|
|
sData.bActivatedRequiredIpls = TRUE
|
|
|
|
ELSE
|
|
|
|
IF NOT IS_VALID_INTERIOR(sData.interiorIndex)
|
|
PRINTLN("[SAC] - interior not valid yet, grabbing form coords ", sData.vPlayerPosForLoadingScene, ", interior type = ", sData.strInteriorName)
|
|
sData.interiorIndex = GET_INTERIOR_AT_COORDS_WITH_TYPE(sData.vPlayerPosForLoadingScene, sData.strInteriorName)
|
|
ELSE
|
|
IF IS_INTERIOR_CAPPED(sData.interiorIndex)
|
|
CAP_INTERIOR(sData.interiorIndex, FALSE)
|
|
sData.bInteriorNeedsReCapped = TRUE
|
|
PRINTLN("[SAC] - Trying to load a capped interior,un-capping.")
|
|
ENDIF
|
|
IF IS_INTERIOR_DISABLED(sData.interiorIndex)
|
|
DISABLE_INTERIOR(sData.interiorIndex, FALSE)
|
|
sData.bInteriorNeedsDisabled = TRUE
|
|
PRINTLN("[SAC] - Trying to load a disabled interior, re-enabling.")
|
|
ENDIF
|
|
PIN_INTERIOR_IN_MEMORY(sData.interiorIndex)
|
|
IF IS_INTERIOR_READY(sData.interiorIndex)
|
|
RETAIN_ENTITY_IN_INTERIOR(PLAYER_PED_ID(), sData.interiorIndex)
|
|
PRINTLN("[SAC] - pinned interior into memory.")
|
|
RETURN TRUE
|
|
ELSE
|
|
PRINTLN("[SAC] - pinning interior into memory.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_MOCAP_CUTSCENE_NAME(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
SWITCH sData.eSceneType
|
|
#IF FEATURE_HEIST_ISLAND
|
|
CASE eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
RETURN "HS4F_DRP_CEL"
|
|
BREAK
|
|
#ENDIF
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
RETURN "HS3_EXT"
|
|
BREAK
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
RETURN "HS3_CEL_ARC"
|
|
BREAK
|
|
CASE eHEISTWINNERSCENETYPE_ROOFTOP
|
|
RETURN "MPH_FIN_CEL_ROO"
|
|
BREAK
|
|
CASE eHEISTWINNERSCENETYPE_BAR
|
|
RETURN "MPH_FIN_CEL_BAR"
|
|
BREAK
|
|
CASE eHEISTWINNERSCENETYPE_APARTMENT
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [RCC BUSINESS] [KW CUTSCENES] GET_MOCAP_CUTSCENE_NAME g_TransitionSessionNonResetVars.iAptIndex = ", g_TransitionSessionNonResetVars.iAptIndex)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [RCC BUSINESS] [KW CUTSCENES] GET_MOCAP_CUTSCENE_NAME g_TransitionSessionNonResetVars.iApartmentVariation = ", g_TransitionSessionNonResetVars.iApartmentVariation)
|
|
IF IS_HEIST_PROPERTY_TYPE_DLC(g_TransitionSessionNonResetVars.iAptIndex)
|
|
PRINTLN("[RCC BUSINESS] [KW CUTSCENES] playing MPH_FIN_CEL_APT1")
|
|
RETURN "MPH_FIN_CEL_APT1"
|
|
ELIF IS_PROPERTY_CUSTOM_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [RCC BUSINESS] [KW CUTSCENES] - eHEISTWINNERSCENESTAGE_START_SCENE (IS_PROPERTY_CUSTOM_APARTMENT = TRUE), playing APA_FIN_CEL_APT4")
|
|
RETURN "APA_FIN_CEL_APT4"
|
|
ELIF IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_5_BASE_A)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [RCC BUSINESS] [KW CUTSCENES] - eHEISTWINNERSCENESTAGE_START_SCENE (PROPERTY_STILT_APT_5_BASE_A = TRUE), playing APA_FIN_CEL_APT2")
|
|
RETURN "APA_FIN_CEL_APT2"
|
|
ELIF IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_1_BASE_B)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [RCC BUSINESS] [KW CUTSCENES] - eHEISTWINNERSCENESTAGE_START_SCENE (PROPERTY_STILT_APT_1_BASE_B = TRUE), playing APA_FIN_CEL_APT3")
|
|
RETURN "APA_FIN_CEL_APT3"
|
|
ELSE
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - [RCC BUSINESS] [KW CUTSCENES] playing MPH_FIN_CEL_APT")
|
|
RETURN "MPH_FIN_CEL_APT"
|
|
ENDIF
|
|
BREAK
|
|
CASE eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
RETURN "MPH_FIN_CEL_STR"
|
|
BREAK
|
|
CASE eHEISTWINNERSCENETYPE_TREVOR
|
|
RETURN "MPH_FIN_CEL_TRE"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
|
|
ENDFUNC
|
|
|
|
PROC SET_COMPONENT_VARIATIONS_FOR_CUTSCENE_PEDS()
|
|
|
|
SWITCH g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType
|
|
CASE FMMC_CELEBRATION_TYPE_ROOFTOP
|
|
#IF FEATURE_HEIST_ISLAND
|
|
CASE FMMC_CELEBRATION_TYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_1", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_2", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_3", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_4", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_BAR
|
|
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_1", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_2", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_STRIP_CLUB
|
|
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_1", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_2", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_3", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_4", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("Bar_Maid", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_APARTMENT
|
|
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_1", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_2", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_3", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_4", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_TREVOR
|
|
|
|
BREAK
|
|
CASE FMMC_CELEBRATION_TYPE_DEFAULT
|
|
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_1", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_2", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_3", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
SET_CUTSCENE_ENTITY_STREAMING_FLAGS("MP_4", DUMMY_MODEL_FOR_SCRIPT, CES_DONT_STREAM_AND_APPLY_VARIATIONS)
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL HAS_MOCAP_CUTSCENE_LOADED(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
RETURN (sData.iLoadMocapStage = HEIST_WINNER_MOCAP_LOAD_FINISHED)
|
|
ENDFUNC
|
|
|
|
FUNC BOOL LOAD_WINNER_SCENE_MOCAP(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
STRING strCutscene = GET_MOCAP_CUTSCENE_NAME(sData)
|
|
|
|
SWITCH sData.iLoadMocapStage
|
|
|
|
CASE 0
|
|
REMOVE_CUTSCENE()
|
|
PRINTLN("[SAC] - called REMOVE_CUTSCENE.")
|
|
sData.iLoadMocapStage++
|
|
BREAK
|
|
|
|
CASE 1
|
|
IF NOT HAS_CUTSCENE_LOADED()
|
|
AND NOT IS_CUTSCENE_ACTIVE()
|
|
PRINTLN("[SAC] - HAS_CUTSCENE_LOADED = FALSE and IS_CUTSCENE_ACTIVE = FALSE.")
|
|
sData.iLoadMocapStage++
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 2
|
|
IF HAS_THIS_CUTSCENE_LOADED(strCutscene)
|
|
PRINTLN("[SAC] - loaded cutscene ", strCutscene)
|
|
sData.iLoadMocapStage = HEIST_WINNER_MOCAP_LOAD_FINISHED
|
|
ELSE
|
|
PRINTLN("[SAC] - requesting cutscene ", strCutscene)
|
|
REQUEST_CUTSCENE(strCutscene)
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_REQUESTED_CUTSCENE_MUSIC_EVENT)
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
ENABLE_PREPARE_CELEBRATION_STRIP_CLUB_MUSIC_EVENT()
|
|
ELIF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
ENABLE_PREPARE_CELEBRATION_APARTMENT_MUSIC_EVENT()
|
|
ENDIF
|
|
PRINTLN("[SAC] - LOAD_WINNER_SCENE_MOCAP = requested prepare mmusic events for celebration winner scene.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_REQUESTED_CUTSCENE_MUSIC_EVENT)
|
|
ENDIF
|
|
IF CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY()
|
|
PRINTLN("[SAC] - CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY = TRUE for cutscene ", strCutscene)
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType != FMMC_CELEBRATION_TYPE_TREVOR)
|
|
PRINTLN("[SAC] - calling SET_COMPONENT_VARIATIONS_FOR_CUTSCENE_PEDS for cutscene ", strCutscene)
|
|
SET_COMPONENT_VARIATIONS_FOR_CUTSCENE_PEDS()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN HAS_MOCAP_CUTSCENE_LOADED(sData)
|
|
|
|
ENDFUNC
|
|
|
|
PROC SET_LOCAL_PLAYER_FOR_MOCAP(BOOL bSetInvisible = TRUE, BOOL bClearTasks = TRUE)
|
|
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
IF bSetInvisible
|
|
IF bClearTasks
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_CLEAR_TASKS | NSPC_REMOVE_FIRES | NSPC_REMOVE_EXPLOSIONS | NSPC_FREEZE_POSITION | NSPC_SET_INVISIBLE)
|
|
ELSE
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_REMOVE_FIRES | NSPC_REMOVE_EXPLOSIONS | NSPC_FREEZE_POSITION | NSPC_SET_INVISIBLE)
|
|
ENDIF
|
|
ELSE
|
|
IF bClearTasks
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_CLEAR_TASKS | NSPC_REMOVE_FIRES | NSPC_REMOVE_EXPLOSIONS | NSPC_FREEZE_POSITION)
|
|
ELSE
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_REMOVE_FIRES | NSPC_REMOVE_EXPLOSIONS | NSPC_FREEZE_POSITION)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC PLACE_PLAYER_AT_SYNCED_INTERACTION_SCENE_COORDS()
|
|
|
|
VECTOR vDestination
|
|
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
IF NOT IS_ENTITY_DEAD(PLAYER_PED_ID())
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_BAR // Special case so since post mission scene vector is inside an interior we need to cap, and we need to move the player out of it.
|
|
vDestination = << -565.4, 273.1, 90.0 >>
|
|
CLEAR_ROOM_FOR_ENTITY(PLAYER_PED_ID())
|
|
PRINTLN("[SAC] - doing eHEISTWINNERSCENETYPE_BAR, setting vDestination = ", vDestination)
|
|
ELIF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_TREVOR // url:bugstar:2208758 - [Series A - Finale] In the ending cutscene various foliage and textures pop into view.
|
|
vDestination = << 2828.7, 4810.4, 48.5 >>
|
|
PRINTLN("[SAC] - iPostMissionSceneId = eHEISTWINNERSCENETYPE_TREVOR, setting player to trevors coords = ", vDestination)
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = (-1)
|
|
vDestination = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
|
|
vDestination.z += 2.0 // Make sure we're not inside or below the ground.
|
|
PRINTLN("[SAC] - iPostMissionSceneId = -1, grabbing players current coords (= 2.0 on the z) = ", vDestination)
|
|
ELSE
|
|
vDestination = GET_SYNCED_INTERACTION_SCENE_COORDS(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId)
|
|
vDestination.z += 2.0 // Make sure we're not inside or below the ground.
|
|
PRINTLN("[SAC] - iPostMissionSceneId is valid, called GET_SYNCED_INTERACTION_SCENE_COORDS + 2.0m on the Z. Coords = ", vDestination)
|
|
ENDIF
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_CLEAR_TASKS | NSPC_FREEZE_POSITION | NSPC_NO_COLLISION | NSPC_SET_INVISIBLE)
|
|
IF NOT IS_VECTOR_ZERO(vDestination)
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vDestination, FALSE)
|
|
PRINTLN("[SAC] - set player to coords ", vDestination)
|
|
ELSE
|
|
PRINTLN("[SAC] - leaving player at current coords, vDestination = ", vDestination)
|
|
ENDIF
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
PRINTLN("[SAC] - setting bit CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION()
|
|
|
|
BOOL bLoadInterior
|
|
BOOL bWarpToPostMissionSceneLocation = TRUE
|
|
VECTOR vWarpToLocation
|
|
BOOL bSnapToGround = TRUE
|
|
BOOL bDoQuickWarp
|
|
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PRE_LOAD_WARP_TRIGGERED)
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT)
|
|
|
|
IF ( g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene AND NOT IS_FAKE_MULTIPLAYER_MODE_SET() )
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_SET_FOCUS_POS)
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
SET_FOCUS_POS_AND_VEL(sHeistWinnerSceneData.vFocusPosition, << 0.0, 0.0, 0.0 >>)
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - set focus pos to ", sHeistWinnerSceneData.vFocusPosition)
|
|
ELSE
|
|
SET_SPECTATOR_OVERRIDE_COORDS(sHeistWinnerSceneData.vFocusPosition)
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - set spectator override coords to ", sHeistWinnerSceneData.vFocusPosition)
|
|
ENDIF
|
|
SET_GAME_PAUSES_FOR_STREAMING(FALSE)
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - SET_GAME_PAUSES_FOR_STREAMING(FALSE).")
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_SET_FOCUS_POS)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// If doing an end winner scene, don't warp to the post mission scene location.
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
vWarpToLocation = sHeistWinnerSceneData.vFocusPosition
|
|
bWarpToPostMissionSceneLocation = FALSE
|
|
ELSE
|
|
// If we need to go into an interior for a mocap, don't warp to the post mission scene location.
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_STRIP_CLUB
|
|
vWarpToLocation = sHeistWinnerSceneData.vPlayerPosForLoadingScene
|
|
bWarpToPostMissionSceneLocation = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bWarpToPostMissionSceneLocation
|
|
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
PLACE_PLAYER_AT_SYNCED_INTERACTION_SCENE_COORDS()
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - player not SCTV - completed warp to winner scene location. Setting bit CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
ELSE
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - player is SCTV - completed warp to winner scene location. Setting bit CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
ENDIf
|
|
|
|
ELSE
|
|
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
SWITCH iPreLoadStage
|
|
CASE 0
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_BAR
|
|
bLoadInterior = TRUE
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - eSceneType = eHEISTWINNERSCENETYPE_BAR, setting bLoadInterior = TRUE")
|
|
ENDIF
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
bLoadInterior = TRUE
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB, setting bLoadInterior = TRUE")
|
|
ENDIF
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
bLoadInterior = TRUE
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - eSceneType = eHEISTWINNERSCENETYPE_APARTMENT, setting bLoadInterior = TRUE")
|
|
ELSE
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - eSceneType = eHEISTWINNERSCENETYPE_APARTMENT, player is SCTV, leaving bLoadInterior = FALSE")
|
|
ENDIF
|
|
ENDIF
|
|
IF NOT bLoadInterior
|
|
iPreLoadStage++
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - NOT bLoadInterior, set iPreLoadStage = ", iPreLoadStage)
|
|
ELSE
|
|
IF LOAD_INTERIOR_FOR_HEIST_END_WINNER_SCENE(sHeistWinnerSceneData)
|
|
iPreLoadStage++
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - LOAD_INTERIOR_FOR_HEIST_END_WINNER_SCENE = TRUE, set iPreLoadStage = ", iPreLoadStage)
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE 1
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - IS_PLAYER_SCTV = TRUE, setting bit CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
ELSE
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
// bDoQuickWarp = TRUE
|
|
bSnapToGround = FALSE
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - not snapping player to ground for warp.") //2220835
|
|
ENDIF
|
|
IF NET_WARP_TO_COORD(vWarpToLocation, sHeistWinnerSceneData.fPlayerHeadingForLoadingScene, FALSE, FALSE, TRUE, TRUE, FALSE, bDoQuickWarp, bSnapToGround, TRUE)
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - completed warp to winner scene location. Setting bit CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP.")
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT // url:bugstar:2226484 - ST
|
|
OR sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_FREEZE_MICROPHONE)
|
|
ENDIF
|
|
iPreLoadStage++
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - completed warp, set iPreLoadStage = ", iPreLoadStage)
|
|
ELSE
|
|
PRINTLN("[SAC] - MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION - waiting on NET_WARP_TO_COORD.")
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
// Done.
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_DRAW_BLACK_RECTANGLE_FOR_FADED_MOCAP()
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDrawBlackRectangle[0]
|
|
DRAW_RECT(0.5, 0.5, 3.0, 3.0, 0, 0, 0, 255)
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDrawBlackRectangle[1] = TRUE
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
INT iCreatedCount
|
|
INT iPlayer
|
|
PLAYER_INDEX playerId
|
|
PED_INDEX pedId
|
|
|
|
VECTOR vPos = <<0,0,0>>
|
|
PED_INDEX piLocalPlayerPed = PLAYER_PED_ID()
|
|
|
|
SWITCH iCelebrationCloningStage
|
|
|
|
CASE 0
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bStreamingRequestsComplete
|
|
iCelebrationCloningStage++
|
|
PRINTLN("[RCC MISSION] - [PMC] - [NETCELEBRATION] - [SAC] - MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS - bDoingHeistEndWinnerScene = TRUE. Going to stage ", iCelebrationCloningStage)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE 1
|
|
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iWinnerSceneType != FMMC_CELEBRATION_TYPE_TREVOR)
|
|
|
|
REPEAT NUM_NETWORK_PLAYERS iPlayer
|
|
IF IS_NET_PLAYER_OK(INT_TO_NATIVE(PLAYER_INDEX, iPlayer), FALSE)
|
|
playerId = INT_TO_NATIVE(PLAYER_INDEX, iPlayer)
|
|
pedId = GET_PLAYER_PED(playerId)
|
|
PRINTLN("[RCC MISSION] - [PMC] - [NETCELEBRATION] - [SAC] - MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS - player ", iPlayer, " is net ok.")
|
|
IF NOT IS_PLAYER_SCTV(playerId)
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(playerId)].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(playerId)].bJoinedMissionAsSpectator
|
|
IF IS_ENTITY_ALIVE(piLocalPlayerPed)
|
|
PRINTLN("[RCC MISSION] - [PMC] - [NETCELEBRATION] - [SAC] - MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS - local player ped is alive, getting coords")
|
|
vPos = GET_ENTITY_COORDS(piLocalPlayerPed)
|
|
ENDIF
|
|
CREATE_CLONE_OF_PED_AT_COORDS(sData.playerPedClone[iCreatedCount].pedId, pedId, vPos + <<0.0,0.0,100.0>>, 0.0, iPlayer, TRUE)
|
|
iCreatedCount++
|
|
PRINTLN("[RCC MISSION] - [PMC] - [NETCELEBRATION] - [SAC] - MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS - created clone of player ", iPlayer)
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
iCelebrationCloningStage++
|
|
PRINTLN("[RCC MISSION] - [PMC] - [NETCELEBRATION] - [SAC] - MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS - created clones of all players. Going to stage ", iCelebrationCloningStage)
|
|
|
|
ELSE
|
|
|
|
iCelebrationCloningStage++
|
|
PRINTLN("[RCC MISSION] - [PMC] - [NETCELEBRATION] - [SAC] - MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS - cut scene is Trevor one, not cloning any players. Going to stage ", iCelebrationCloningStage)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE 2
|
|
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bCloningComplete = TRUE
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_PED_BACKUP_PED_VARIATIONS(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData, INT iBackupPed)
|
|
|
|
SWITCH iBackupPed
|
|
CASE 0
|
|
// A_F_Y_VINEWOOD_01
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HEAD, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAIR, 1, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TORSO, 1, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_LEG, 1, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_JBIB, 0, 0)
|
|
BREAK
|
|
CASE 1
|
|
// A_M_Y_VINEWOOD_01
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HEAD, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TORSO, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_LEG, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_JBIB, 0, 0)
|
|
BREAK
|
|
CASE 2
|
|
// A_F_Y_GENHOT_01
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HEAD, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TORSO, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_LEG, 0, 2)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL, 1, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_JBIB, 0, 0)
|
|
BREAK
|
|
CASE 3
|
|
// A_F_Y_GENHOT_01
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAIR, 1, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TORSO, 0, 2)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_LEG, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.playerPedClone[iBackupPed].pedId, PED_COMP_JBIB, 0, 0)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
FUNC INT GET_NUM_PLAYER_PEDS_REQUIRED_FOR_SCENE(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
SWITCH sData.eSceneType
|
|
CASE eHEISTWINNERSCENETYPE_APARTMENT
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_APARTMENT_SCENE
|
|
CASE eHEISTWINNERSCENETYPE_BAR
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_BAR_SCENE
|
|
CASE eHEISTWINNERSCENETYPE_ROOFTOP
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_ROOFTOP_SCENE
|
|
CASE eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_STRIP_SCENE
|
|
CASE eHEISTWINNERSCENETYPE_TREVOR
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_TREVOR_SCENE
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
CASE eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_CASINO_HEIST
|
|
#IF FEATURE_HEIST_ISLAND
|
|
CASE eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_ISLAND_HEIST
|
|
#ENDIF
|
|
ENDSWITCH
|
|
|
|
RETURN NUM_PLAYERS_NEEDED_FOR_STRIP_SCENE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL CREATE_HEIST_END_WINNER_SCENE_ENTITIES(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
INT i, iObj, iNumObjsToCreate, iNumExtraPedsToCreate, iObjsCreated, iNumExtraPedsCreated//, iNumPlayerClonesNeeded
|
|
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_CREATED_ENTITIES)
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bCloningComplete
|
|
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_TREVOR
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
sData.bCreatedPlayerPedClones = TRUE
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - winner scene = eHEISTWINNERSCENETYPE_TREVOR, skipping creating clones of players. Only Trevor is in the scene.")
|
|
#IF FEATURE_HEIST_ISLAND
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[COMPANION_PED_ID].pedId)
|
|
sData.bCreatedPlayerPedClones = TRUE
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - winner scene = eHEISTWINNERSCENETYPE_ISLAND_HEIST, skipping creating clones of players. This is handled elsewhere.")
|
|
ELSE
|
|
IF sData.eCompanionPedModel = DUMMY_MODEL_FOR_SCRIPT
|
|
sData.bCreatedPlayerPedClones = TRUE
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - winner scene = eHEISTWINNERSCENETYPE_ISLAND_HEIST, skipping creating clones of players. Failed to clone companion.")
|
|
SCRIPT_ASSERT("Heist celebration - Failed to clone companion")
|
|
ELSE
|
|
//We do not have another player with us on the heist so we need to create someone to celebrate with
|
|
IF REQUEST_LOAD_MODEL(sData.eCompanionPedModel)
|
|
sData.playerPedClone[COMPANION_PED_ID].pedId = CREATE_PED(PEDTYPE_MISSION, sData.eCompanionPedModel, sData.playerPedClone[1].vSpawnPosition, sData.playerPedClone[1].fSpawnHeading, FALSE, FALSE)
|
|
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[COMPANION_PED_ID].pedId)
|
|
SET_ENTITY_INVINCIBLE(sData.playerPedClone[COMPANION_PED_ID].pedId, TRUE)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(sData.eCompanionPedModel)
|
|
sData.bCreatedPlayerPedClones = TRUE
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - winner scene = eHEISTWINNERSCENETYPE_ISLAND_HEIST, skipping creating clones of players. Created a clone of companion ped.")
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - winner scene = eHEISTWINNERSCENETYPE_ISLAND_HEIST, Loading companion ped: ", sData.eCompanionPedModel)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
ELSE
|
|
|
|
IF NOT sData.bCreatedPlayerPedClones
|
|
|
|
iNumPlayersInScene = 0
|
|
|
|
REPEAT 4 i
|
|
IF NOT DOES_ENTITY_EXIST(sData.playerPedClone[i].pedId)
|
|
IF i <= (GET_NUM_PLAYER_PEDS_REQUIRED_FOR_SCENE(sData) - 1)
|
|
IF REQUEST_LOAD_MODEL(GET_BACKUP_PED_MODEL(i))
|
|
sData.playerPedClone[i].pedId = CREATE_PED(PEDTYPE_MISSION, GET_BACKUP_PED_MODEL(i), sData.playerPedClone[i].vSpawnPosition, sData.playerPedClone[i].fSpawnHeading, FALSE, FALSE)
|
|
// SET_PED_BACKUP_PED_VARIATIONS(sData, i)
|
|
SET_ENTITY_INVINCIBLE(sData.playerPedClone[i].pedId, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
REPEAT 4 i
|
|
IF DOES_ENTITY_EXIST(sData.playerPedClone[i].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sData.playerPedClone[i].pedId)
|
|
SET_ENTITY_COORDS(sData.playerPedClone[i].pedId, sData.playerPedClone[i].vSpawnPosition + <<0.0,0.0,1.0>>)
|
|
SET_ENTITY_HEADING(sData.playerPedClone[i].pedId, sData.playerPedClone[i].fSpawnHeading)
|
|
PRINTLN("[NETCELEBRATIONS] - [SAC] - moved cloned ped ", i, " since they exist. Set to coords ",
|
|
sData.playerPedClone[i].vSpawnPosition,
|
|
", and heading ",
|
|
sData.playerPedClone[i].fSpawnHeading)
|
|
iNumPlayersInScene++
|
|
ENDIF
|
|
ELSE
|
|
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF iNumPlayersInScene = GET_NUM_PLAYER_PEDS_REQUIRED_FOR_SCENE(sData)
|
|
sData.bCreatedPlayerPedClones = TRUE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF NOT ARE_VECTORS_EQUAL(<< 0.0, 0.0, 0.0 >>, sData.extraPed.vSpawnPosition)
|
|
iNumExtraPedsToCreate++
|
|
IF NOT DOES_ENTITY_EXIST(sData.extraPed.pedId)
|
|
IF REQUEST_LOAD_MODEL(sData.extraPed.eModel)
|
|
sData.extraPed.pedId = CREATE_PED(PEDTYPE_MISSION, sData.extraPed.eModel, sData.extraPed.vSpawnPosition, sData.extraPed.fSpawnHeading, FALSE, FALSE)
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_HAIR, 2, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_TORSO, 1, 2)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_LEG, 1, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_SPECIAL, 0, 1)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(sData.extraPed.pedId, PED_COMP_JBIB, 0, 1)
|
|
ENDIF
|
|
PRINTLN("[NETCELEBRATIONS] - [SAC] - created extra ped at coords ", sData.extraPed.vSpawnPosition, " and heading ", sData.extraPed.fSpawnHeading)
|
|
ENDIF
|
|
ELSE
|
|
iNumExtraPedsCreated++
|
|
ENDIF
|
|
ENDIF
|
|
|
|
REPEAT HEIST_MAX_WINNER_SCENE_OBJECTS iObj
|
|
IF NOT ARE_VECTORS_EQUAL(<< 0.0, 0.0, 0.0 >>, sData.object[iObj].vSpawnPosition)
|
|
iNumObjsToCreate++
|
|
IF NOT DOES_ENTITY_EXIST(sData.object[iObj].entityId)
|
|
IF REQUEST_LOAD_MODEL(sData.object[iObj].eModel)
|
|
sData.object[iObj].entityId = CREATE_OBJECT(sData.object[iObj].eModel, sData.object[iObj].vSpawnPosition, FALSE, FALSE)
|
|
PRINTLN("[NETCELEBRATIONS] - [SAC] - created scene object ", iObj, " ped at coords ", sData.object[iObj].vSpawnPosition)
|
|
ENDIF
|
|
ELSE
|
|
iObjsCreated++
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF (iNumObjsToCreate = iObjsCreated)
|
|
AND (iNumExtraPedsToCreate = iNumExtraPedsCreated)
|
|
AND sData.bCreatedPlayerPedClones
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_CREATED_ENTITIES)
|
|
ELSE
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - iNumObjsToCreate = ", iNumObjsToCreate)
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - iObjsCreated = ", iObjsCreated)
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - iNumExtraPedsToCreate = ", iNumExtraPedsToCreate)
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - iNumExtraPedsCreated = ", iNumExtraPedsCreated)
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - sData.bCreatedPlayerPedClones = ", sData.bCreatedPlayerPedClones)
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
PRINTLN("[NETCELEBRATION] - [SAC] - cannot create entities, cloning not complete.")
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
RETURN IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_CREATED_ENTITIES)
|
|
|
|
ENDFUNC
|
|
|
|
PROC REGISTER_PLAYER_PED_FOR_MOCAP(PED_INDEX ped, INT& iRegisterCount)
|
|
|
|
TEXT_LABEL_23 sPlayerString
|
|
|
|
IF NOT IS_PED_INJURED(ped)
|
|
sPlayerString = "MP_"
|
|
sPlayerString += iRegisterCount+1
|
|
SET_ENTITY_VISIBLE(ped, TRUE)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(ped, sPlayerString, CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME)
|
|
|
|
PRINTLN("[NETCELEBRATIONS] - [SAC] - registered player ped ", sPlayerString, " with args (CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME).")
|
|
iRegisterCount++
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC REGISTER_EXTRA_PED_FOR_MOCAP(PED_INDEX ped, STRING strHandle)
|
|
|
|
IF NOT IS_PED_INJURED(ped)
|
|
SET_ENTITY_VISIBLE(ped, TRUE)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(ped, strHandle, CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME)
|
|
PRINTLN("[NETCELEBRATIONS] - [SAC] - registered extra ped ", strHandle, " with args (CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME).")
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC REGISTER_OBJECT_FOR_MOCAP(ENTITY_INDEX entity, STRING strHandle)
|
|
|
|
IF DOES_ENTITY_EXIST(entity)
|
|
IF NOT IS_ENTITY_DEAD(entity)
|
|
SET_ENTITY_VISIBLE(entity, TRUE)
|
|
REGISTER_ENTITY_FOR_CUTSCENE(entity, strHandle, CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME)
|
|
PRINTLN("[NETCELEBRATIONS] - [SAC] - registered object ", strHandle, " with args (CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME).")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC REMOVE_PED_FROM_MOCAP(INT iPed)
|
|
|
|
TEXT_LABEL_23 sPlayerString
|
|
|
|
iPed += 1
|
|
sPlayerString = "MP_"
|
|
sPlayerString += iPed
|
|
REGISTER_ENTITY_FOR_CUTSCENE(NULL, sPlayerString, CU_DONT_ANIMATE_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME)
|
|
PRINTLN("[NETCELEBRATIONS] - [SAC] - removed player ped ", sPlayerString, " by registering them as NULL entity with args (CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY, DUMMY_MODEL_FOR_SCRIPT, CEO_IGNORE_MODEL_NAME).")
|
|
|
|
ENDPROC
|
|
|
|
PROC REGISTER_MOCAP_PEDS(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
// Add peds to mocap.
|
|
IF (sData.eSceneType != eHEISTWINNERSCENETYPE_TREVOR)
|
|
REGISTER_PLAYER_PED_FOR_MOCAP(sData.playerPedClone[0].pedId, sData.iMocapRegisteredPedsCount)
|
|
REGISTER_PLAYER_PED_FOR_MOCAP(sData.playerPedClone[1].pedId, sData.iMocapRegisteredPedsCount)
|
|
REGISTER_PLAYER_PED_FOR_MOCAP(sData.playerPedClone[2].pedId, sData.iMocapRegisteredPedsCount)
|
|
REGISTER_PLAYER_PED_FOR_MOCAP(sData.playerPedClone[3].pedId, sData.iMocapRegisteredPedsCount)
|
|
ENDIF
|
|
|
|
REGISTER_EXTRA_PED_FOR_MOCAP(sData.extraPed.pedId, sData.extraPed.tl23_handle)
|
|
|
|
// Remove unregistered peds from mocap.
|
|
IF (sData.eSceneType = eHEISTWINNERSCENETYPE_BAR)
|
|
IF sData.iMocapRegisteredPedsCount = 0
|
|
REMOVE_PED_FROM_MOCAP(0)
|
|
REMOVE_PED_FROM_MOCAP(1)
|
|
ELIF sData.iMocapRegisteredPedsCount = 1
|
|
REMOVE_PED_FROM_MOCAP(1)
|
|
ENDIF
|
|
ELIF (sData.eSceneType != eHEISTWINNERSCENETYPE_TREVOR)
|
|
IF sData.iMocapRegisteredPedsCount = 0
|
|
REMOVE_PED_FROM_MOCAP(0)
|
|
REMOVE_PED_FROM_MOCAP(1)
|
|
REMOVE_PED_FROM_MOCAP(2)
|
|
REMOVE_PED_FROM_MOCAP(3)
|
|
ELIF sData.iMocapRegisteredPedsCount = 1
|
|
REMOVE_PED_FROM_MOCAP(1)
|
|
REMOVE_PED_FROM_MOCAP(2)
|
|
REMOVE_PED_FROM_MOCAP(3)
|
|
ELIF sData.iMocapRegisteredPedsCount = 2
|
|
REMOVE_PED_FROM_MOCAP(2)
|
|
REMOVE_PED_FROM_MOCAP(3)
|
|
ELIF sData.iMocapRegisteredPedsCount = 3
|
|
REMOVE_PED_FROM_MOCAP(3)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC REGISTER_MOCAP_OBJECTS(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
INT i
|
|
|
|
REPEAT HEIST_MAX_WINNER_SCENE_OBJECTS i
|
|
REGISTER_OBJECT_FOR_MOCAP(sData.object[i].entityId, sData.object[i].tl23_handle)
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_MOCAP_FINISHED()
|
|
|
|
IF NOT IS_CUTSCENE_PLAYING()
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF (GET_CUTSCENE_TOTAL_DURATION() - GET_CUTSCENE_TIME()) <= 250
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
PROC SET_POST_MISSION_VECTOR_SPAWN_LOCATION()
|
|
FLOAT fRadius = 100
|
|
IF g_TransitionSessionNonResetVars.sPostMissionCleanupData.fPostMissionPosSearchRadius != 0
|
|
fRadius = g_TransitionSessionNonResetVars.sPostMissionCleanupData.fPostMissionPosSearchRadius
|
|
ENDIF
|
|
|
|
SETUP_SPECIFIC_SPAWN_LOCATION( g_TransitionSessionNonResetVars.sPostMissionCleanupData.vPostMissionPos, 0.0,
|
|
fRadius, TRUE, 1, FALSE, FALSE, 10, DEFAULT, g_TransitionSessionNonResetVars.sPostMissionCleanupData.bPostMissionPosIgnoreExclusionZones)
|
|
PRINTLN("[PMC] - [SAC] - SET_POST_MISSION_VECTOR_SPAWN_LOCATION - setup specific spawn near location. Position = ", g_TransitionSessionNonResetVars.sPostMissionCleanupData.vPostMissionPos, ", search radius = ", g_TransitionSessionNonResetVars.sPostMissionCleanupData.fPostMissionPosSearchRadius, ", visible checks = TRUE, min dis from coords = 1, consider interiors = FALSE, near roads = FALSE, min dis from other players = 65.")
|
|
|
|
SET_PLAYER_WILL_SPAWN_FACING_COORDS(g_TransitionSessionNonResetVars.sPostMissionCleanupData.vPostMissionPointOfInterest, TRUE, FALSE)
|
|
PRINTLN("[PMC] - [SAC] - SET_POST_MISSION_VECTOR_SPAWN_LOCATION - setup player will spoawn facing coords ", g_TransitionSessionNonResetVars.sPostMissionCleanupData.vPostMissionPointOfInterest)
|
|
|
|
// No being placed inside the grounds of the Humane Labs.
|
|
SET_MISSION_SPAWN_OCCLUSION_ANGLED_AREA(<<3410.697998,3751.923828,9.634556>>, <<3657.413818,3700.305420,72.006607>>, 250.000000, 0, TRUE)
|
|
PRINTLN("[PMC] - [SAC] - called SET_MISSION_SPAWN_OCCLUSION_ANGLED_AREA(<<3410.697998,3751.923828,9.634556>>, <<3657.413818,3700.305420,72.006607>>, 250.000000) - call 2.")
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL SHOULD_DRAW_CONGRATS_CHARD()
|
|
|
|
IF NOT sHeistWinnerSceneData.bDrawCongratsShard
|
|
|
|
IF DOES_ENTITY_EXIST(sHeistWinnerSceneData.playerPedClone[0].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sHeistWinnerSceneData.playerPedClone[0].pedId)
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[0].pedId, GET_HASH_KEY("CongratsSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 0, CongratsSplash event has fired.")
|
|
ENDIF
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[0].pedId, GET_HASH_KEY("CongratSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 0, CongratSplash event has fired.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sHeistWinnerSceneData.playerPedClone[1].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sHeistWinnerSceneData.playerPedClone[1].pedId)
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[1].pedId, GET_HASH_KEY("CongratsSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 1, CongratsSplash event has fired.")
|
|
ENDIF
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[1].pedId, GET_HASH_KEY("CongratSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 1, CongratSplash event has fired.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sHeistWinnerSceneData.playerPedClone[2].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sHeistWinnerSceneData.playerPedClone[2].pedId)
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[2].pedId, GET_HASH_KEY("CongratsSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 2, CongratsSplash event has fired.")
|
|
ENDIF
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[2].pedId, GET_HASH_KEY("CongratSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 2, CongratSplash event has fired.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sHeistWinnerSceneData.playerPedClone[3].pedId)
|
|
IF NOT IS_ENTITY_DEAD(sHeistWinnerSceneData.playerPedClone[3].pedId)
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[3].pedId, GET_HASH_KEY("CongratsSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 3, CongratsSplash event has fired.")
|
|
ENDIF
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.playerPedClone[3].pedId, GET_HASH_KEY("CongratSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - ped 3, CongratSplash event has fired.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(sHeistWinnerSceneData.extraPed.pedId)
|
|
IF NOT IS_ENTITY_DEAD(sHeistWinnerSceneData.extraPed.pedId)
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.extraPed.pedId, GET_HASH_KEY("CongratsSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - extra ped, CongratsSplash event has fired.")
|
|
ENDIF
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.extraPed.pedId, GET_HASH_KEY("CongratSplash"))
|
|
sHeistWinnerSceneData.bDrawCongratsShard = TRUE
|
|
PRINTLN("[SAC] - extra ped, CongratSplash event has fired.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
RETURN sHeistWinnerSceneData.bDrawCongratsShard
|
|
|
|
ENDFUNC
|
|
|
|
PROC MAINTAIN_TREVOR_HEAD_BLOOD()
|
|
|
|
IF NOT sHeistWinnerSceneData.extraPed.bAppliedHeadBlood
|
|
IF DOES_ENTITY_EXIST(sHeistWinnerSceneData.extraPed.pedId)
|
|
IF NOT IS_ENTITY_DEAD(sHeistWinnerSceneData.extraPed.pedId)
|
|
IF HAS_ANIM_EVENT_FIRED(sHeistWinnerSceneData.extraPed.pedId, GET_HASH_KEY("forehead_blood"))
|
|
//APPLY_PED_BLOOD_SPECIFIC(sHeistWinnerSceneData.extraPed.pedId, ENUM_TO_INT(PDZ_HEAD), 0.500, 0.677, 144.815, 0.660, 2, 0.00, "SCR_TrevorTreeBang")
|
|
APPLY_PED_DAMAGE_PACK(sHeistWinnerSceneData.extraPed.pedId, "SCR_TrevorTreeBang", 1.0, 1.0)
|
|
sHeistWinnerSceneData.extraPed.bAppliedHeadBlood = TRUE
|
|
PRINTLN("[SAC] - anim event forehead_blood has fired, called APPLY_PED_DAMAGE_PACK(sHeistWinnerSceneData.extraPed.pedId, SCR_TrevorTreeBang, 1.0, 1.0). ")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_PLAYERS_INVISIBLE_THIS_FRAME()
|
|
|
|
INT i
|
|
|
|
SET_LOCAL_PLAYER_INVISIBLE_LOCALLY(TRUE)
|
|
|
|
REPEAT NUM_NETWORK_PLAYERS i
|
|
IF IS_NET_PLAYER_OK(INT_TO_NATIVE(PLAYER_INDEX, i), FALSE)
|
|
SET_PLAYER_INVISIBLE_LOCALLY(INT_TO_NATIVE(PLAYER_INDEX, i), TRUE)
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL WARP_TO_OUTSIDE_APARTMENT(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
RETURN NET_WARP_TO_COORD(sData.vPlayerPosForAfterScene, sData.fPlayerHeadingForafterScene,FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE)
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_CELEBRATION_SCREEN_NAME()
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingPilotSchoolCelebration
|
|
RETURN "ch"
|
|
ENDIF
|
|
|
|
RETURN "SUMMARY"
|
|
|
|
ENDFUNC
|
|
|
|
PROC MAINTAIN_GET_APARTMENT_INTERIOR_INSTANCE_INDEX_EARLY()
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
IF NOT IS_VECTOR_ZERO(sHeistWinnerSceneData.vPlayerPosForLoadingScene)
|
|
IF NOT IS_VALID_INTERIOR(apartmentInteriorIndex)
|
|
apartmentInteriorIndex = GET_INTERIOR_AT_COORDS_WITH_TYPE(sHeistWinnerSceneData.vPlayerPosForLoadingScene, sHeistWinnerSceneData.strInteriorName)
|
|
PRINTLN("[SAC] - MAINTAIN_GET_APARTMENT_INTERIOR_INSTANCE_INDEX_EARLY - grabbed apartment interior.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
// url:bugstar:2226484
|
|
PROC MAINTAIN_FREEZE_MICROPHONE()
|
|
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_FREEZE_MICROPHONE)
|
|
|
|
// url:bugstar:2255042
|
|
SWITCH iFreezeMicrophoneDelay
|
|
CASE 0
|
|
PRINTLN("[SAC] [FREEZE_MICROPHONE] - Microphone is ***not***being Frozen within MAINTAIN_FREEZE_MICROPHONE")
|
|
iFreezeMicrophoneDelay++
|
|
BREAK
|
|
|
|
CASE 1
|
|
PRINTLN("[SAC] [FREEZE_MICROPHONE] - Microphone is ***not*** being Frozen within MAINTAIN_FREEZE_MICROPHONE")
|
|
iFreezeMicrophoneDelay++
|
|
BREAK
|
|
|
|
CASE 2
|
|
PRINTLN("[SAC] [FREEZE_MICROPHONE] - Microphone is ***not*** being Frozen within MAINTAIN_FREEZE_MICROPHONE")
|
|
iFreezeMicrophoneDelay++
|
|
BREAK
|
|
|
|
CASE 3
|
|
PRINTLN("[SAC] [FREEZE_MICROPHONE] - Microphone is being Frozen within MAINTAIN_FREEZE_MICROPHONE")
|
|
FREEZE_MICROPHONE()
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
bUseHeistTransitionInviteMic = TRUE // Set the apartment microphone to freeze too, so there's no gaps with it unfreezing for a few frames.
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
VECTOR vecTemp1 = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
VECTOR vecTemp2 = GET_FINAL_RENDERED_CAM_COORD()
|
|
PRINTLN("[SAC] [FREEZE_MICROPHONE] - Player's current position for Microphone freeze: ", vecTemp1)
|
|
PRINTLN("[SAC] [FREEZE_MICROPHONE] - GET_FINAL_RENDERED_CAM_COORD for Microphone freeze: ", vecTemp2)
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR()
|
|
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
IF IS_VALID_INTERIOR(apartmentInteriorIndex)
|
|
IF GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) = apartmentInteriorIndex
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
apartmentInteriorIndex = GET_INTERIOR_AT_COORDS_WITH_TYPE(sHeistWinnerSceneData.vPlayerPosForLoadingScene, sHeistWinnerSceneData.strInteriorName)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_VECTOR_ZERO(sHeistWinnerSceneData.vPlayerPosForLoadingScene)
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT()
|
|
|
|
IF IS_PLAYER_IN_MP_PROPERTY(PLAYER_ID(), FALSE)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.iBS,PROPERTY_BROADCAST_BS_PLAYER_USING_PROPERTY)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL STAND_ALONE_CELEBRATION_IS_PLAYER_IN_AN_APARTMENT()
|
|
|
|
IF STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT()
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_AN_APARTMENT - STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT = TRUE.")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR()
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_AN_APARTMENT - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR = TRUE.")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_AN_APARTMENT - RETURNING FALSE.")
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
PROC SET_WINNER_SCENE_INTERIOR_TO_NORMAL_FREEMODE_STATE()
|
|
|
|
IF IS_VALID_INTERIOR(sHeistWinnerSceneData.interiorIndex)
|
|
IF IS_INTERIOR_READY(sHeistWinnerSceneData.interiorIndex)
|
|
UNPIN_INTERIOR(sHeistWinnerSceneData.interiorIndex)
|
|
PRINTLN("[SAC] - un-pinned interior.")
|
|
ENDIF
|
|
IF sHeistWinnerSceneData.bInteriorNeedsReCapped
|
|
IF NOT IS_INTERIOR_CAPPED(sHeistWinnerSceneData.interiorIndex)
|
|
CAP_INTERIOR(sHeistWinnerSceneData.interiorIndex, TRUE)
|
|
PRINTLN("[SAC] - re-capping interior.")
|
|
ENDIF
|
|
ENDIF
|
|
IF sHeistWinnerSceneData.bInteriorNeedsDisabled
|
|
IF IS_INTERIOR_DISABLED(sHeistWinnerSceneData.interiorIndex)
|
|
DISABLE_INTERIOR(sHeistWinnerSceneData.interiorIndex, TRUE)
|
|
PRINTLN("[SAC] - re-disabling interior.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL CAN_START_WINNER_SCENE()
|
|
|
|
BOOL bCanStart = TRUE
|
|
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_CREATED_ENTITIES)
|
|
PRINTLN("[SAC] - CAN_START_WINNER_SCENE = FALSE, HEIST_WINNER_SCENE_CREATED_ENTITIES bit not set.")
|
|
bCanStart = FALSE
|
|
ENDIF
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
PRINTLN("[SAC] - CAN_START_WINNER_SCENE = FALSE, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP bit not set.")
|
|
bCanStart = FALSE
|
|
ENDIF
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE)
|
|
PRINTLN("[SAC] - CAN_START_WINNER_SCENE = FALSE, CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE bit not set.")
|
|
bCanStart = FALSE
|
|
ENDIF
|
|
|
|
IF NOT HAS_MOCAP_CUTSCENE_LOADED(sHeistWinnerSceneData)
|
|
PRINTLN("[SAC] - CAN_START_WINNER_SCENE = FALSE, HAS_MOCAP_CUTSCENE_LOADED = FALSE")
|
|
bCanStart = FALSE
|
|
ENDIF
|
|
|
|
RETURN bCanStart
|
|
|
|
ENDFUNC
|
|
|
|
///PURPOSE: Should turn off all nightvision-related things
|
|
PROC CELEB_TURN_NIGHTVISION_OFF()
|
|
|
|
IF IS_ENTITY_ALIVE(PLAYER_PED_ID())
|
|
REMOVE_MP_HEIST_GEAR(PLAYER_PED_ID(), HEIST_GEAR_NIGHTVISION)
|
|
ENDIF
|
|
IF GET_REQUESTINGNIGHTVISION()
|
|
OR GET_USINGNIGHTVISION()
|
|
ENABLE_NIGHTVISION(VISUALAID_OFF)
|
|
ENDIF
|
|
|
|
DISABLE_NIGHT_VISION_CONTROLLER(TRUE) // Added under instruction of Alwyn for B*2196822
|
|
|
|
ENDPROC
|
|
|
|
PROC SETUP_JOINED_MISSION_AS_SPECTATOR_WARP()
|
|
|
|
INT iTemp
|
|
iTemp = GET_RANDOM_INT_IN_RANGE(0, 5)
|
|
VECTOR vWarpLoc
|
|
FLOAT fWarpHeading
|
|
|
|
SWITCH iTemp
|
|
CASE 0
|
|
vWarpLoc = <<-664.0847, 9.2700, 38.1992>>
|
|
fWarpHeading = 153.2955
|
|
BREAK
|
|
CASE 1
|
|
vWarpLoc = <<-224.8966, -38.2854, 48.5775>>
|
|
fWarpHeading = 140.1033
|
|
BREAK
|
|
CASE 2
|
|
vWarpLoc = <<-292.0316, -1455.0347, 30.3251>>
|
|
fWarpHeading = 305.0253
|
|
BREAK
|
|
CASE 3
|
|
vWarpLoc = <<-1227.5524, -1169.9088, 6.6146>>
|
|
fWarpHeading = 324.8094
|
|
BREAK
|
|
CASE 4
|
|
vWarpLoc = <<-1759.1628, -426.1342, 41.8913>>
|
|
fWarpHeading = 271.1274
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
SETUP_SPECIFIC_SPAWN_LOCATION(vWarpLoc, fWarpHeading, 250, TRUE, 1, FALSE, TRUE)
|
|
PRINTLN("[SAC] - SETUP_CREATOR_POST_MISSION_WARP_LOCATION - setup specific spawn near location. Position = ", vWarpLoc)
|
|
|
|
// No being placed inside the grounds of the Humane Labs.
|
|
SET_MISSION_SPAWN_OCCLUSION_ANGLED_AREA(<<3410.697998,3751.923828,9.634556>>, <<3657.413818,3700.305420,72.006607>>, 250.000000, 0, TRUE)
|
|
PRINTLN("[PMC] - [SAC] - called SET_MISSION_SPAWN_OCCLUSION_ANGLED_AREA(<<3410.697998,3751.923828,9.634556>>, <<3657.413818,3700.305420,72.006607>>, 250.000000) - call 2.")
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL LOAD_SIMPLE_INTERIOR_SYSTEM_FOR_POST_HEIST_MOCAP(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
IF sData.eTargetInteriorID != SIMPLE_INTERIOR_INVALID
|
|
IF NOT sData.bPinnedAndRequestedInterior
|
|
INTERIOR_INSTANCE_INDEX interiorID = GET_INTERIOR_AT_COORDS_WITH_TYPE(<<2730.0, -380.0, -50.0>>, "ch_DLC_Arcade")
|
|
|
|
IF PIN_INTERIOR_IN_MEMORY_VALIDATE(interiorID)
|
|
PRINTLN("[SAC] - LOAD_SIMPLE_INTERIOR_SYSTEM_FOR_POST_HEIST_MOCAP - Pinned ch_DLC_Arcade")
|
|
SET_BIT(g_SimpleInteriorData.iSeventhBS, BS7_SIMPLE_INTERIOR_ENTERING_INTERIOR_FOR_POST_HEIST_MOCAP)
|
|
SET_BIT(g_SimpleInteriorData.iSeventhBS, BS7_SIMPLE_INTERIOR_ENTERING_PLAYING_POST_HEIST_MOCAP)
|
|
SET_SIMPLE_INTERIOR_AUTOWARP_OVERRIDE(sData.pOwner)
|
|
REQUEST_SCRIPT("AM_MP_SMPL_INTERIOR_EXT")
|
|
REQUEST_SCRIPT("AM_MP_SMPL_INTERIOR_INT")
|
|
REQUEST_SCRIPT("AM_MP_ARCADE")
|
|
REQUEST_RELAUCHING_OF_SIMPLE_INTERIOR_INT_SCRIPT(sData.eTargetInteriorID)
|
|
sData.bPinnedAndRequestedInterior = TRUE
|
|
ENDIF
|
|
ELSE
|
|
RETURN NOT IS_BIT_SET(g_SimpleInteriorData.iSeventhBS, BS7_SIMPLE_INTERIOR_ENTERING_INTERIOR_FOR_POST_HEIST_MOCAP)
|
|
ENDIF
|
|
ELSE
|
|
sData.eTargetInteriorID = SIMPLE_INTERIOR_ARCADE_PALETO_BAY
|
|
SCRIPT_ASSERT("LOAD_SIMPLE_INTERIOR_SYSTEM_FOR_POST_HEIST_MOCAP - Invalid interior ID!")
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_CASINO_HEIST_ROOF_SCENE_VEHICLE_NAME(INT iVehID)
|
|
STRING sReturn
|
|
|
|
SWITCH iVehID
|
|
CASE 0 sReturn = "Riot1" BREAK
|
|
CASE 1 sReturn = "Riot2" BREAK
|
|
CASE 2 sReturn = "Riot3" BREAK
|
|
CASE 3 sReturn = "Riot4" BREAK
|
|
CASE 4 sReturn = "Police1" BREAK
|
|
CASE 5 sReturn = "Police2" BREAK
|
|
CASE 6 sReturn = "Police3" BREAK
|
|
CASE 7 sReturn = "Police4" BREAK
|
|
CASE 8 sReturn = "Police5" BREAK
|
|
CASE 9 sReturn = "Police6" BREAK
|
|
CASE 10 sReturn = "Police7" BREAK
|
|
CASE 11 sReturn = "Police8" BREAK
|
|
CASE 12 sReturn = "NewsVan4" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN sReturn
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_CASINO_BAR_SCENE_PROP_NAME(INT iPropID)
|
|
STRING sReturn
|
|
|
|
SWITCH iPropID
|
|
CASE 0 sReturn = "player_bottle_4" BREAK
|
|
CASE 1 sReturn = "player_glass_3" BREAK
|
|
CASE 2 sReturn = "player_glass_4" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN sReturn
|
|
ENDFUNC
|
|
|
|
FUNC BOOL GET_CASINO_HEIST_ROOF_SCENE_VEHICLE_NEEDS_HEADLIGHTS_ON(INT iVehID)
|
|
IF iVehID = 10
|
|
OR iVehID = 11
|
|
OR iVehID = 12
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL GET_CASINO_HEIST_ROOF_SCENE_VEHICLE_NEEDS_SIRENS_ON(INT iVehID)
|
|
IF iVehID = 12
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_CASINO_BAR_SCENE_PROP_NEED_HIDING(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData, INT iPropID)
|
|
|
|
SWITCH iPropID
|
|
CASE 0
|
|
CASE 2
|
|
IF sData.iMocapRegisteredPedsCount <= 3
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
CASE 1 RETURN (sData.iMocapRegisteredPedsCount < 3) BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_ISLAND_HEIST_CELEBRATION_SCENE_PROP_NAME(INT iPropID)
|
|
STRING sReturn
|
|
|
|
SWITCH iPropID
|
|
CASE 0 sReturn = "Shot_Glass_3" BREAK
|
|
CASE 1 sReturn = "MP_3_Lime" BREAK
|
|
CASE 2 sReturn = "Shot_Glass_4" BREAK
|
|
CASE 3 sReturn = "MP_4_Lime" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN sReturn
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_ISLAND_HEIST_CELEBRATION_SCENE_PROP_NEED_HIDING(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData, INT iPropID)
|
|
|
|
SWITCH iPropID
|
|
CASE 0
|
|
CASE 1
|
|
IF sData.iMocapRegisteredPedsCount < 3
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
CASE 3
|
|
IF sData.iMocapRegisteredPedsCount < 4
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC SETUP_CUTSCENE_ENTITIES(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
//This mocap requires script to grab all vehicles and activate their lights
|
|
IF NOT sData.bSetupSceneEntities
|
|
INT i
|
|
|
|
REPEAT CASINO_HEIST_ROOF_SCENE_VEHICLES i
|
|
STRING sSceneEntityName = GET_CASINO_HEIST_ROOF_SCENE_VEHICLE_NAME(i)
|
|
ENTITY_INDEX sceneEntity = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY(sSceneEntityName)
|
|
|
|
IF DOES_ENTITY_EXIST(sceneEntity)
|
|
IF IS_ENTITY_A_VEHICLE(sceneEntity)
|
|
VEHICLE_INDEX sceneVeh = GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(sceneEntity)
|
|
|
|
IF IS_ENTITY_ALIVE(sceneVeh)
|
|
IF GET_CASINO_HEIST_ROOF_SCENE_VEHICLE_NEEDS_HEADLIGHTS_ON(i)
|
|
SET_VEHICLE_LIGHTS(sceneVeh, FORCE_VEHICLE_LIGHTS_ON)
|
|
PRINTLN("[SAC] - SETUP_CUTSCENE_ENTITIES - Turn lights on for vehicle: ", i, " ", sSceneEntityName)
|
|
ENDIF
|
|
IF GET_CASINO_HEIST_ROOF_SCENE_VEHICLE_NEEDS_SIRENS_ON(i)
|
|
SET_VEHICLE_SIREN(sceneVeh, TRUE)
|
|
PRINTLN("[SAC] - SETUP_CUTSCENE_ENTITIES - Turn sirens on for vehicle: ", i, " ", sSceneEntityName)
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - SETUP_CUTSCENE_ENTITIES - FAILED to turn on lights for vehicle: ", i, " ", sSceneEntityName, " IS_ENTITY_ALIVE(sceneVeh) = FALSE")
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - SETUP_CUTSCENE_ENTITIES - FAILED to turn on lights for vehicle: ", i, " ", sSceneEntityName, " IS_ENTITY_A_VEHICLE(sceneEntity) = FALSE")
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - SETUP_CUTSCENE_ENTITIES - FAILED to turn on lights for vehicle: ", i, " ", sSceneEntityName, " DOES_ENTITY_EXIST(sceneEntity)= FALSE")
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
sData.bSetupSceneEntities = TRUE
|
|
ENDIF
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
IF NOT sData.bSetupSceneEntities
|
|
AND sData.iMocapRegisteredPedsCount < 4
|
|
INT i
|
|
|
|
REPEAT CASINO_HEIST_BAR_SCENE_PROPS i
|
|
STRING sSceneEntityName = GET_CASINO_BAR_SCENE_PROP_NAME(i)
|
|
ENTITY_INDEX sceneEntity = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY(sSceneEntityName)
|
|
|
|
IF DOES_ENTITY_EXIST(sceneEntity)
|
|
AND DOES_CASINO_BAR_SCENE_PROP_NEED_HIDING(sData, i)
|
|
SET_ENTITY_VISIBLE(sceneEntity, FALSE)
|
|
sData.bSetupSceneEntities = TRUE
|
|
|
|
PRINTLN("[SAC] - SETUP_CUTSCENE_ENTITIES - hide ", sSceneEntityName)
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
#IF FEATURE_HEIST_ISLAND
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
IF NOT sData.bSetupSceneEntities
|
|
AND sData.iMocapRegisteredPedsCount < 4
|
|
INT i
|
|
|
|
REPEAT CASINO_ISLAND_HEIST_SCENE_PROPS i
|
|
STRING sSceneEntityName = GET_ISLAND_HEIST_CELEBRATION_SCENE_PROP_NAME(i)
|
|
ENTITY_INDEX sceneEntity = GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY(sSceneEntityName)
|
|
|
|
IF DOES_ENTITY_EXIST(sceneEntity)
|
|
AND DOES_ISLAND_HEIST_CELEBRATION_SCENE_PROP_NEED_HIDING(sData, i)
|
|
SET_ENTITY_VISIBLE(sceneEntity, FALSE)
|
|
sData.bSetupSceneEntities = TRUE
|
|
|
|
PRINTLN("[SAC] - SETUP_CUTSCENE_ENTITIES - hide ", sSceneEntityName)
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the time from the end of the scene we should start fading the screen
|
|
FUNC INT GET_SCENE_FADE_OUT_START_TIME(eHEIST_WINNER_SCENE_TYPE eSceneType)
|
|
IF eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
RETURN 3000
|
|
ENDIF
|
|
|
|
RETURN 1000
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_SCENE_FADE_OUT_DURATION(eHEIST_WINNER_SCENE_TYPE eSceneType)
|
|
IF eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
RETURN 3000
|
|
ENDIF
|
|
|
|
RETURN 500
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_SCENE_PAUSE_RENDER_ON_END(eHEIST_WINNER_SCENE_TYPE eSceneType)
|
|
IF eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL SHOULD_SCENE_START_FADE_OUT_AUDIO_WITH_FADE(eHEIST_WINNER_SCENE_TYPE eSceneType)
|
|
IF eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL MAINTAIN_HEIST_END_WINNER_SCENE(STRUCT_HEIST_END_WINNER_SCENE_DATA &sData)
|
|
|
|
BOOL bBeginScene
|
|
BOOL bSkipSceneAndGoToEnd
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sHeistWinnerSceneData.bTerminateEndHeistScene
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
SWITCH sData.eSceneStage
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_INIT
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
DRAW_CELEBRATION_SCREEN_THIS_FRAME(sCelebrationData, FALSE)
|
|
|
|
IF CAN_START_WINNER_SCENE()
|
|
bBeginScene = TRUE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sHeistWinnerSceneData.bRunEndHeistScene
|
|
bBeginScene = TRUE
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF bBeginScene
|
|
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - bBeginScene = TRUE.")
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - bBeginScene - IS_PLAYER_SCTV(PLAYER_ID()) - TRUE")
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
// OR sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
bSkipSceneAndGoToEnd = TRUE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - set bSkipSceneAndGoToEnd = TRUE because we're doing the strip club or apartment scene.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - bBeginScene - bJoinedMissionAsSpectator - TRUE")
|
|
// IF sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
// OR sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
bSkipSceneAndGoToEnd = TRUE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - set bSkipSceneAndGoToEnd = TRUE because we're doing the strip club or apartment scene.")
|
|
// ENDIF
|
|
ENDIF
|
|
|
|
IF bSkipSceneAndGoToEnd
|
|
TOGGLE_RENDERPHASES(TRUE)
|
|
ACTIVATE_RECTANGLE_FADE_IN(FALSE)
|
|
ACTIVATE_RECTANGLE_FADE_OUT(TRUE)
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_DO_JOINED_MISSION_AS_SPECTATOR_WARP
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_DO_JOINED_MISSION_AS_SPECTATOR_WARP.")
|
|
ELSE
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
ENDIF
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call 0.")
|
|
ELSE
|
|
SET_CELEBRATION_SCREEN_AS_ACTIVE(TRUE)
|
|
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
SETUP_SIMPLE_INTERIOR_PROPERTY_OWNER(sData)
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_LOAD_SIMPLE_INTERIOR
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_LOAD_SIMPLE_INTERIOR.")
|
|
ELSE
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_LOAD_SCENE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_LOAD_SCENE.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_LOAD_SIMPLE_INTERIOR
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
IF LOAD_SIMPLE_INTERIOR_SYSTEM_FOR_POST_HEIST_MOCAP(sData)
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_LOAD_SCENE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_LOAD_SCENE.")
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_LOAD_SCENE
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
DRAW_CELEBRATION_SCREEN_THIS_FRAME(sCelebrationData, FALSE)
|
|
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
PRINTLN("[SAC] - CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP bit is set, player is in winner scene location.")
|
|
PRINTLN("[SAC] - going to stage eHEISTWINNERSCENESTAGE_DELAY_BEFORE_CUTSCENE_START.")
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME(sData.strRoomName)
|
|
PRINTLN("[SAC] - SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME - ", sData.strRoomName)
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME(sData.strRoomName)
|
|
PRINTLN("[SAC] - SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME - ", sData.strRoomName)
|
|
IF NOT g_bChampaignCelebrationCutsceneIsActive
|
|
g_bChampaignCelebrationCutsceneIsActive = TRUE
|
|
PRINTLN("[SAC] - set g_bChampaignCelebrationCutsceneIsActive to TRUE.")
|
|
ENDIF
|
|
ENDIF
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_DELAY_BEFORE_CUTSCENE_START
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_DELAY_BEFORE_CUTSCENE_START
|
|
|
|
BOOL bGoToStartScene
|
|
bGoToStartScene = TRUE
|
|
|
|
IF NOT HAS_NET_TIMER_EXPIRED(timerFadeFlashDelay, WHITE_SCREEN_HOLD_TIME)
|
|
bGoToStartScene = FALSE
|
|
ENDIF
|
|
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
|
|
IF NOT HAS_NET_TIMER_STARTED(timerDelayForCutsceneMusic)
|
|
START_NET_TIMER(timerDelayForCutsceneMusic)
|
|
START_CELEBRATION_STRIP_CLUB_MUSIC_EVENT()
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_FREEZE_MICROPHONE)
|
|
PRINTLN("[SAC] - started net timer timerDelayForCutsceneMusic.")
|
|
PRINTLN("[SAC] - called START_CELEBRATION_STRIP_CLUB_MUSIC_EVENT().")
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_BITSET_FREEZE_MICROPHONE.")
|
|
bGoToStartScene = FALSE
|
|
ELSE
|
|
IF NOT HAS_NET_TIMER_EXPIRED(timerDelayForCutsceneMusic, DELAY_FOR_MUSIC_TIME)
|
|
bGoToStartScene = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
|
|
IF NOT HAS_NET_TIMER_STARTED(timerDelayForCutsceneMusic)
|
|
START_NET_TIMER(timerDelayForCutsceneMusic)
|
|
START_CELEBRATION_APARTMENT_MUSIC_EVENT()
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_FREEZE_MICROPHONE)
|
|
PRINTLN("[SAC] - started net timer timerDelayForCutsceneMusic.")
|
|
PRINTLN("[SAC] - called START_CELEBRATION_APARTMENT_MUSIC_EVENT().")
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_BITSET_FREEZE_MICROPHONE.")
|
|
bGoToStartScene = FALSE
|
|
ELSE
|
|
IF NOT HAS_NET_TIMER_EXPIRED(timerDelayForCutsceneMusic, DELAY_FOR_MUSIC_TIME)
|
|
bGoToStartScene = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_OFF)
|
|
ENDIF
|
|
|
|
IF bGoToStartScene
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_START_SCENE
|
|
PRINTLN("[SAC] - going to stage eHEISTWINNERSCENESTAGE_START_SCENE.")
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_START_SCENE
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
SET_LOCAL_PLAYER_FOR_MOCAP()
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - SET_LOCAL_PLAYER_FOR_MOCAP() call 0.")
|
|
ENDIF
|
|
|
|
PRINTLN("[SAC] - BUSY SPINNER OFF - call 6.")
|
|
BUSYSPINNER_OFF()
|
|
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_SET_PLAYER_FOR_MOCAP)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - set HEIST_WINNER_SCENE_SET_PLAYER_FOR_MOCAP bit.")
|
|
|
|
CELEB_TURN_NIGHTVISION_OFF()
|
|
|
|
TOGGLE_RENDERPHASES(TRUE)
|
|
ANIMPOSTFX_STOP_ALL()
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call 1.")
|
|
|
|
STOP_CELEBRATION_SCREEN_ANIM(sCelebrationData, GET_CELEBRATION_SCREEN_NAME())
|
|
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
|
|
RESET_CELEBRATION_DATA(sCelebrationData)
|
|
|
|
REGISTER_MOCAP_PEDS(sData)
|
|
REGISTER_MOCAP_OBJECTS(sData)
|
|
|
|
SET_LOCAL_PLAYER_VISIBLE_IN_CUTSCENE(FALSE, FALSE)
|
|
|
|
START_MP_CUTSCENE()
|
|
|
|
IF (sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT)
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eHEISTWINNERSCENESTAGE_START_SCENE (sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT)")
|
|
|
|
IF IS_HEIST_PROPERTY_TYPE_DLC(g_TransitionSessionNonResetVars.iAptIndex)
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eHEISTWINNERSCENESTAGE_START_SCENE (IS_HEIST_PROPERTY_TYPE_DLC = TRUE)")
|
|
|
|
// DLC high end apartment
|
|
Move_Heist_Cutscene_To_Heist_Apartment(1, g_TransitionSessionNonResetVars.iAptIndex, TRUE)
|
|
|
|
ELIF ( IS_PROPERTY_CUSTOM_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex)
|
|
OR IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_5_BASE_A)
|
|
OR IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_1_BASE_B) )
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_PROPERTY_CUSTOM_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eHEISTWINNERSCENESTAGE_START_SCENE (IS_PROPERTY_CUSTOM_APARTMENT = TRUE)")
|
|
ELIF IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_5_BASE_A)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eHEISTWINNERSCENESTAGE_START_SCENE (PROPERTY_STILT_APT_5_BASE_A = TRUE)")
|
|
ELIF IS_PROPERTY_STILT_APARTMENT(g_TransitionSessionNonResetVars.iAptIndex, PROPERTY_STILT_APT_1_BASE_B)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eHEISTWINNERSCENESTAGE_START_SCENE (PROPERTY_STILT_APT_1_BASE_B = TRUE)")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
// Stilt or customisable apartments
|
|
Move_Heist_Cutscene_To_Heist_Apartment(1, g_TransitionSessionNonResetVars.iAptIndex, FALSE, MP_END_HEIST_WINNER_SCENE_CAMERA_COORDS)
|
|
|
|
ELSE
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eHEISTWINNERSCENESTAGE_START_SCENE (apartment is not high end, stilt or custom)")
|
|
|
|
// All other apartments
|
|
Move_Heist_Cutscene_To_Heist_Apartment(1, g_TransitionSessionNonResetVars.iAptIndex)
|
|
|
|
ENDIF
|
|
ELSE
|
|
START_CUTSCENE()
|
|
ENDIF
|
|
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDrawBlackRectangle[0] = FALSE
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDrawBlackRectangle[1] = FALSE
|
|
|
|
// TRIGGER_MUSIC_EVENT("MP_MC_SILENT")
|
|
// PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - called TRIGGER_MUSIC_EVENT('MP_MC_SILENT').")
|
|
|
|
#IF FEATURE_HEIST_ISLAND
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
TRIGGER_MUSIC_EVENT("HEI4_CELEBRATION_CHEERS_MUSIC")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
ACTIVATE_RECTANGLE_FADE_IN(FALSE)
|
|
ACTIVATE_RECTANGLE_FADE_OUT(TRUE)
|
|
|
|
START_NET_TIMER(sData.sceneTimer)
|
|
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - toggled renderphases, cleaned up old celebrations screen.")
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_START_CELEBRATION_MOVIE.")
|
|
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_START_CELEBRATION_MOVIE
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_START_CELEBRATION_MOVIE
|
|
|
|
BOOL bContinue
|
|
|
|
CELEBRATION_SCREEN_TYPE eCelebType
|
|
eCelebType = CELEBRATION_HEIST
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bGangOpsTransition
|
|
eCelebType = CELEBRATION_GANGOPS
|
|
ENDIF
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
eCelebType = CELEBRATION_HEIST
|
|
ENDIF
|
|
|
|
REQUEST_CELEBRATION_SCREEN(sCelebrationData, eCelebType)
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
IF HAS_CELEBRATION_SCREEN_LOADED(sCelebrationData)
|
|
|
|
IF NOT IS_CUTSCENE_PLAYING()
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - IS_CUTSCENE_PLAYING returning FALSE.")
|
|
IF NOT HAS_NET_TIMER_STARTED(sData.mocapNotPlayingTimer)
|
|
START_NET_TIMER(sData.mocapNotPlayingTimer, TRUE)
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(sData.mocapNotPlayingTimer, 5000, TRUE)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - IS_CUTSCENE_PLAYING has been returning FALSE for >= 5 seconds. Something wrong with the cutscene?")
|
|
SCRIPT_ASSERT("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - IS_CUTSCENE_PLAYING has been returning FALSE for >= 5 seconds. Something wrong with the cutscene?")
|
|
bContinue = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
bContinue = TRUE
|
|
ENDIF
|
|
|
|
IF bContinue
|
|
|
|
// url:bugstar:6151724
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
SET_TIMECYCLE_MODIFIER("bokeh_removebuzz")
|
|
PRINTLN("[SAC] - mocap start, adding timceycle modifier")
|
|
ENDIF
|
|
|
|
// IF HAS_NET_TIMER_EXPIRED(sData.sceneTimer, 2000)
|
|
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_RUN_SCENE.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_RUN_SCENE
|
|
|
|
// ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - requesting congratulations scaleform movie.")
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_RUN_SCENE
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
IF SHOULD_DRAW_CONGRATS_CHARD()
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_SETUP_WINNER_SCENE_MOVIE)
|
|
CREATE_CELEBRATION_SCREEN(sCelebrationData, "WINNER", "HUD_COLOUR_HSHARD", FALSE)
|
|
SET_CELEBRATION_SCREEN_STAT_DISPLAY_TIME(sCelebrationData, CELEBRATION_SCREEN_WINNER_STAT_DISPLAY_TIME - CELEBRATION_SCREEN_STAT_WIPE_TIME)
|
|
ADD_FINALE_COMPLETE_TO_WALL(sCelebrationData, "WINNER")
|
|
ADD_BACKGROUND_TO_CELEBRATION_SCREEN(sCelebrationData, "WINNER", 0, 0)
|
|
SHOW_CELEBRATION_SCREEN(sCelebrationData, "WINNER")
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - populated movie with data.")
|
|
#IF IS_DEBUG_BUILD
|
|
INT iTempValue
|
|
iTempValue = GET_GLOBAL_ACTIONSCRIPT_FLAG(ACTIONSCRIPT_GLOBAL_ID)
|
|
PRINTLN("[SAC] - GET_GLOBAL_ACTIONSCRIPT_FLAG(ACTIONSCRIPT_GLOBAL_ID) = ", iTempValue)
|
|
#ENDIF
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_SETUP_WINNER_SCENE_MOVIE)
|
|
ENDIF
|
|
|
|
DRAW_CELEBRATION_SCREEN_THIS_FRAME(sCelebrationData, FALSE)
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_PLAYED_SUCCESS_NEUTRAL_FX_STACK)
|
|
IF HAS_CELEBRATION_SHARD_HEIST_COMPLETE_HIT_SCREEN_CENTRE()
|
|
//ANIMPOSTFX_PLAY("SuccessNeutral", 1000, TRUE)
|
|
PLAY_HEIST_PASS_FX("HeistCelebToast")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_PLAYED_SUCCESS_NEUTRAL_FX_STACK)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - played stack HeistCelebToast.")
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
// Re-enable subtitles after shard
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_HEIST_END_WINNER_SCENE_PEDS_WITH_WIDGET_DATA(sData)
|
|
#ENDIF
|
|
|
|
IF IS_CUTSCENE_PLAYING()
|
|
SETUP_CUTSCENE_ENTITIES(sData)
|
|
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_STRIP_CLUB
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_SET_ALLOW_RADIO_OVER_FADE_FLAG)
|
|
SET_CELEBRATION_ALLOW_OVER_RADIO_SCREEN_AUDIO_FLAG()
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_SET_ALLOW_RADIO_OVER_FADE_FLAG)
|
|
ENDIF
|
|
ENDIF
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_BAR
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_ROOFTOP
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_SET_ALLOW_CUTSCENE_OVER_FADE_FLAG)
|
|
SET_CELEBRATION_ALLOW_CUTSCENE_OVER_SCREEN_AUDIO_FLAG()
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_SET_ALLOW_CUTSCENE_OVER_FADE_FLAG)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DOES_SCENE_PAUSE_RENDER_ON_END(sData.eSceneType)
|
|
//Next stage will pause the render phases
|
|
|
|
IF (GET_CUTSCENE_TOTAL_DURATION() - GET_CUTSCENE_TIME()) <= 1000
|
|
//Preload the shard
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
|
|
MAINTAIN_MISSION_END_SHARD(missionEndShardData, TRUE, TRUE)
|
|
|
|
REQUEST_STREAMED_TEXTURE_DICT("CommonMenu")
|
|
REQUEST_STREAMED_TEXTURE_DICT("MPLeaderboard")
|
|
REQUEST_STREAMED_TEXTURE_DICT("MPHud")
|
|
REQUEST_SCALEFORM_MOVIE("MP_BIG_MESSAGE_FREEMODE")
|
|
REQUEST_SCALEFORM_MOVIE_INSTANCE("INSTRUCTIONAL_BUTTONS")
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF (GET_CUTSCENE_TOTAL_DURATION() - GET_CUTSCENE_TIME()) <= GET_SCENE_FADE_OUT_START_TIME(sData.eSceneType)
|
|
OR IS_MOCAP_FINISHED()
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
AND NOT IS_SCREEN_FADING_OUT()
|
|
IF SHOULD_SCENE_START_FADE_OUT_AUDIO_WITH_FADE(sData.eSceneType)
|
|
PRINTLN("[SAC] - mocap near end fading and set eCAS_FADE_BLACK_SCENE.")
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_FADE_BLACK_SCENE)
|
|
ENDIF
|
|
DO_SCREEN_FADE_OUT(GET_SCENE_FADE_OUT_DURATION(sData.eSceneType))
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_MOCAP_FINISHED()
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - scene timer has expired.")
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_FREEZE_MICROPHONE)
|
|
CLEAR_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_FREEZE_MICROPHONE)
|
|
ENDIF
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
CLEAR_FOCUS()
|
|
PRINTLN("[SAC] - mocap finished, called CLEAR_FOCUS.")
|
|
ELSE
|
|
CLEAR_SPECTATOR_OVERRIDE_COORDS()
|
|
PRINTLN("[SAC] - mocap finished, called CLEAR_SPECTATOR_OVERRIDE_COORDS.")
|
|
ENDIF
|
|
|
|
// url:bugstar:6151724
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
PRINTLN("[SAC] - mocap finished, clearing time cycle modifier")
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
ENDIF
|
|
|
|
DEACTIVATE_CELEBRATION_AUDIO_CELEB_SCREEN_SCENE()
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_FADE_BLACK_SCENE)
|
|
RESET_NET_TIMER(timerFadeFlashDelay)
|
|
START_NET_TIMER(timerFadeFlashDelay)
|
|
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_STRIP_CLUB)
|
|
TRIGGER_POST_HEIST_POSITION_SYSTEMS()
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_WARP_TO_OUTSIDE_STRIP_CLUB.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_WARP_TO_OUTSIDE_STRIP_CLUB
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
IF IS_GAMER_HANDLE_VALID(sHeistWinnerSceneData.playerLeader)
|
|
AND NETWORK_GET_PLAYER_FROM_GAMER_HANDLE(sHeistWinnerSceneData.playerLeader) = PLAYER_ID()
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - eHEISTWINNERSCENESTAGE_RUN_SCENE - eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF - Player is boss setting stat")
|
|
CASINO_HEIST_FLOW__SET_STAT_BIT(ciCASINO_HEIST_FLOW_STAT_BITSET__LESTER_POST_MISSION_ONE_TIME_SCENE_VIEWED)
|
|
ELSE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - eHEISTWINNERSCENESTAGE_RUN_SCENE - eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF - Player is NOT boss dont't set stat")
|
|
ENDIF
|
|
|
|
sData.eShardOverFadeStage = SOF_FADE_OUT
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_SHARD_OVER_FADE
|
|
ELSE
|
|
TRIGGER_POST_HEIST_POSITION_SYSTEMS()
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_APARTMENT)
|
|
PLACE_PLAYER_AT_SYNCED_INTERACTION_SCENE_COORDS()
|
|
ENDIF
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
ENDIF
|
|
ELSE
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_STRIP_CLUB)
|
|
AND (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_APARTMENT)
|
|
PRINTLN("[SAC] - not doing strip club or apartment post mission scene, using Neil's system, calling DO_SCTV_EXTERNAL_FADE_IN_AFTER_POST_CELEB.")
|
|
DO_SCTV_EXTERNAL_FADE_IN_AFTER_POST_CELEB(TRUE)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - player is SCTV and not doing apartment or strip club, going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
ELSE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - player is SCTV and is doing apartment or strip club, going to stage eHEISTWINNERSCENESTAGE_SCTV_FADE_IN_DELAY.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_SCTV_FADE_IN_DELAY
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ELIF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR sData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_SHARD_OVER_PAUSED_RENDER.")
|
|
sData.eShardOverFadeStage = SOF_SETUP_SHARD
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_SHARD_OVER_PAUSED_RENDER
|
|
g_bDelayShardStart = FALSE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - g_bDelayShardStart = FALSE.")
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - IS_MOCAP_FINISHED returning FALSE.")
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_TREVOR
|
|
MAINTAIN_TREVOR_HEAD_BLOOD()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_SCTV_FADE_IN_DELAY
|
|
|
|
IF NOT HAS_NET_TIMER_STARTED(timerSctvFadeInDelay)
|
|
START_NET_TIMER(timerSctvFadeInDelay)
|
|
PRINTLN("[SAC] - started timer timerSctvFadeInDelay.")
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(timerSctvFadeInDelay, WHITE_SCREEN_HOLD_TIME)
|
|
PRINTLN("[SAC] - timerSctvFadeInDelay has expired, calling DO_SCTV_EXTERNAL_FADE_IN_AFTER_POST_CELEB to trigger Ryan's SCTV fade in.")
|
|
DO_SCTV_EXTERNAL_FADE_IN_AFTER_POST_CELEB(TRUE)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_DO_JOINED_MISSION_AS_SPECTATOR_WARP
|
|
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
AND NOT IS_SCREEN_FADING_OUT()
|
|
|
|
DO_SCREEN_FADE_OUT(1000)
|
|
|
|
ELIF IS_SCREEN_FADED_OUT()
|
|
|
|
SETUP_JOINED_MISSION_AS_SPECTATOR_WARP()
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_WARP_TO_POST_MISSION_VECTOR
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_WARP_TO_POST_MISSION_VECTOR.")
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_WARP_TO_OUTSIDE_STRIP_CLUB
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.enumPostMissionScenePossibleResult = PMSP_PASSED
|
|
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.enumPostMissionScenePossibleResult = PMSP_FAILED
|
|
|
|
IF NET_WARP_TO_COORD(sData.vPlayerPosForAfterScene, sData.fPlayerHeadingForafterScene, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE)
|
|
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - completed warp to outside strip club.")
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - vPlayerPosForAfterScene = ", sData.vPlayerPosForAfterScene)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - fPlayerHeadingForafterScene", sData.fPlayerHeadingForafterScene)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
|
|
IF IS_NET_PLAYER_OK(PLAYER_ID())
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
|
|
DO_SCREEN_FADE_IN(500)
|
|
|
|
bActivateInteractionMenuOnCleanup = TRUE
|
|
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(),TRUE)
|
|
SET_PED_CURRENT_WEAPON_VISIBLE(PLAYER_PED_ID(),TRUE)
|
|
SET_ENTITY_VISIBLE(PLAYER_PED_ID(), TRUE)
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
|
|
CLEANUP_MP_CUTSCENE()
|
|
|
|
STOP_CUTSCENE_AUDIO()
|
|
|
|
Make_Ped_Drunk(PLAYER_PED_ID(), 60000)
|
|
Activate_Drunk_Camera(60000)
|
|
// force_ped_motion_state(player_ped_id(), ms_on_foot_walk, false)
|
|
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 6000)
|
|
force_ped_ai_and_animation_update(player_ped_id(), true)
|
|
Player_Takes_Alcohol_Hit(player_ped_id())
|
|
|
|
ELSE
|
|
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - called SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call A.")
|
|
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_OFF)
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_WARP_TO_POST_MISSION_VECTOR
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
IF WARP_TO_SPAWN_LOCATION(SPAWN_LOCATION_AT_SPECIFIC_COORDS_IF_POSSIBLE, FALSE, FALSE, FALSE, FALSE)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - completed warp to vPostMissionVector.")
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
DO_SCREEN_FADE_IN(500)
|
|
ENDIF
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
ENDIF
|
|
bActivateInteractionMenuOnCleanup = TRUE
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_SHARD_OVER_FADE
|
|
SWITCH sData.eShardOverFadeStage
|
|
CASE SOF_FADE_OUT
|
|
IF IS_SCREEN_FADED_OUT()
|
|
sData.eShardOverFadeStage = SOF_SETUP_SHARD
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - eHEISTWINNERSCENESTAGE_SHARD_OVER_FADE - completed fade out.")
|
|
ELIF NOT IS_SCREEN_FADED_OUT()
|
|
DO_SCREEN_FADE_OUT(GET_SCENE_FADE_OUT_DURATION(sData.eSceneType))
|
|
ENDIF
|
|
BREAK
|
|
CASE SOF_SETUP_SHARD
|
|
REINIT_NET_TIMER(sData.shardOverFadeDisplayTime)
|
|
MAINTAIN_MISSION_END_SHARD(missionEndShardData, TRUE)
|
|
sData.eShardOverFadeStage = SOF_DRAW
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - eHEISTWINNERSCENESTAGE_SHARD_OVER_FADE - Shard setup.")
|
|
BREAK
|
|
CASE SOF_DRAW
|
|
IF HAS_NET_TIMER_EXPIRED(sData.shardOverFadeDisplayTime, 10000)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - eHEISTWINNERSCENESTAGE_SHARD_OVER_FADE - Finished - Move to cleanup.")
|
|
CLEAR_ALL_BIG_MESSAGES()
|
|
sData.eShardOverFadeStage = SOF_CLEANUP
|
|
ELIF NOT HAS_NET_TIMER_STARTED(sData.shardOverFadeDisplayTime)
|
|
REINIT_NET_TIMER(sData.shardOverFadeDisplayTime)
|
|
ENDIF
|
|
BREAK
|
|
CASE SOF_CLEANUP
|
|
IF NOT IS_ANY_BIG_MESSAGE_BEING_DISPLAYED()
|
|
TRIGGER_POST_HEIST_POSITION_SYSTEMS()
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_APARTMENT)
|
|
PLACE_PLAYER_AT_SYNCED_INTERACTION_SCENE_COORDS()
|
|
ENDIF
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_SHARD_OVER_PAUSED_RENDER
|
|
SWITCH sData.eShardOverFadeStage
|
|
CASE SOF_SETUP_SHARD
|
|
sData.eShardOverFadeStage = SOF_DRAW
|
|
BREAK
|
|
CASE SOF_DRAW
|
|
|
|
IF g_bDelayShardStart
|
|
g_bDelayShardStart = FALSE
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - g_bDelayShardStart = FALSE.")
|
|
ELSE
|
|
IF GET_TOGGLE_PAUSED_RENDERPHASES_STATUS()
|
|
TOGGLE_RENDERPHASES(FALSE, TRUE)
|
|
|
|
FLOAT fNearCam
|
|
FLOAT fFarCam
|
|
fNearCam = GET_FINAL_RENDERED_CAM_NEAR_DOF()
|
|
fFarCam = GET_FINAL_RENDERED_CAM_FAR_DOF()
|
|
|
|
SET_HIDOF_OVERRIDE(TRUE, TRUE, 0, fNearCam, fFarCam, fFarCam + 25.0)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(sData.shardOverFadeDisplayTime, 10000)
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - eHEISTWINNERSCENESTAGE_SHARD_OVER_FADE - Finished - Move to cleanup.")
|
|
DO_SCREEN_FADE_OUT(500)
|
|
CLEAR_ALL_BIG_MESSAGES()
|
|
sData.eShardOverFadeStage = SOF_CLEANUP
|
|
ELIF NOT HAS_NET_TIMER_STARTED(sData.shardOverFadeDisplayTime)
|
|
REINIT_NET_TIMER(sData.shardOverFadeDisplayTime)
|
|
ENDIF
|
|
BREAK
|
|
CASE SOF_CLEANUP
|
|
IF IS_SCREEN_FADED_OUT()
|
|
TOGGLE_PAUSED_RENDERPHASES(TRUE)
|
|
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
CLEAR_BIT(g_SimpleInteriorData.iSeventhBS, BS7_SIMPLE_INTERIOR_ENTERING_PLAYING_POST_HEIST_MOCAP)
|
|
ENDIF
|
|
|
|
SET_HIDOF_OVERRIDE(FALSE,FALSE,0,0,0,0)
|
|
|
|
TRIGGER_POST_HEIST_POSITION_SYSTEMS()
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_APARTMENT)
|
|
PLACE_PLAYER_AT_SYNCED_INTERACTION_SCENE_COORDS()
|
|
ENDIF
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - going to stage eHEISTWINNERSCENESTAGE_END.")
|
|
sData.eSceneStage = eHEISTWINNERSCENESTAGE_END
|
|
ELIF NOT IS_SCREEN_FADING_OUT()
|
|
DO_SCREEN_FADE_OUT(500)
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE eHEISTWINNERSCENESTAGE_END
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(timerFadeFlashDelay, WHITE_SCREEN_HOLD_TIME)
|
|
|
|
IF NOT sCelebrationData.bCleanedUpEndWinnerScene
|
|
|
|
SET_WINNER_SCENE_INTERIOR_TO_NORMAL_FREEMODE_STATE()
|
|
|
|
STOP_CELEBRATION_SCREEN_ANIM(sCelebrationData, GET_CELEBRATION_SCREEN_NAME())
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
|
|
CLEANUP_MP_CUTSCENE(TRUE, FALSE)
|
|
|
|
DELETE_HEIST_END_WINNER_SCENE_ENTITIES(sData)
|
|
|
|
REMOVE_CUTSCENE()
|
|
|
|
TOGGLE_PLAYER_DAMAGE_OVERLAY(TRUE)
|
|
|
|
TOGGLE_RENDERPHASES(TRUE)
|
|
PRINTLN("[SAC] - TOGGLE_RENDERPHASES(TRUE)")
|
|
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call 2.")
|
|
|
|
sCelebrationData.bCleanedUpEndWinnerScene = TRUE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF IS_SCREEN_FADED_IN()
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - IS_PLAYER_SCTV(PLAYER_ID()) = TRUE.")
|
|
STRUCT_HEIST_END_WINNER_SCENE_DATA sTemp
|
|
sData = sTemp
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - screen faded in, completed cleanup of end winner scene and movie.")
|
|
RETURN TRUE
|
|
ELSE
|
|
IF STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR()
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR = TRUE.")
|
|
IF STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT()
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT = TRUE.")
|
|
STRUCT_HEIST_END_WINNER_SCENE_DATA sTemp
|
|
sData = sTemp
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - screen faded in, completed cleanup of end winner scene and movie.")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR = FALSE.")
|
|
STRUCT_HEIST_END_WINNER_SCENE_DATA sTemp
|
|
sData = sTemp
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - screen faded in, completed cleanup of end winner scene and movie.")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - sData.eSceneType != eHEISTWINNERSCENETYPE_APARTMENT.")
|
|
STRUCT_HEIST_END_WINNER_SCENE_DATA sTemp
|
|
sData = sTemp
|
|
PRINTLN("[SAC] - MAINTAIN_HEIST_END_WINNER_SCENE - screen faded in, completed cleanup of end winner scene and movie.")
|
|
RETURN TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
IF sData.eSceneType = eHEISTWINNERSCENETYPE_APARTMENT
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF NOT HAS_NET_TIMER_STARTED(waitForApartmentFadeIntimer)
|
|
START_NET_TIMER(waitForApartmentFadeIntimer)
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(waitForApartmentFadeIntimer, 50000)
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_APARTMENT_FAILSAFE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Cleans up variables and calls any required commands just before the script terminates.
|
|
PROC SCRIPT_CLEANUP()
|
|
|
|
PRINTLN("[SAC] - starting script cleanup.")
|
|
DEBUG_PRINTCALLSTACK()
|
|
|
|
DELETE_HEIST_END_WINNER_SCENE_ENTITIES(sHeistWinnerSceneData)
|
|
|
|
STOP_CELEBRATION_SCREEN_ANIM(sCelebrationData, GET_CELEBRATION_SCREEN_NAME())
|
|
|
|
g_sTransitionSessionData.bMaintainCelebrationsScript = FALSE
|
|
|
|
Clear_Any_Objective_Text_From_This_Script()
|
|
|
|
PRINTLN("[SAC] - BUSY SPINNER OFF - script cleanup - call 5.")
|
|
BUSYSPINNER_OFF()
|
|
|
|
IF IS_AUDIO_SCENE_ACTIVE("MP_CELEB_SCREEN_SCENE")
|
|
STOP_AUDIO_SCENE("MP_CELEB_SCREEN_SCENE")
|
|
ENDIF
|
|
|
|
SET_LOCAL_PLAYER_VISIBLE_IN_CUTSCENE(TRUE, TRUE)
|
|
|
|
IF DOES_CAM_EXIST(pointAtPlayerCam)
|
|
SET_CAM_ACTIVE(pointAtPlayerCam, FALSE)
|
|
DESTROY_CAM(pointAtPlayerCam)
|
|
PRINTLN("[SAC] - cleaned up pointAtPlayerCam.")
|
|
ENDIF
|
|
|
|
PRINTLN("[SAC] - reset flag bOkToKillCelebrationScript, call 1.")
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bOkToKillCelebrationScript = FALSE
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.vPostMissionPos = << 0.0, 0.0, 0.0 >>
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.fPostMissionPosSearchRadius = 0.0
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.vPostMissionPointOfInterest = << 0.0, 0.0, 0.0 >>
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.bPostMissionPosIgnoreExclusionZones = FALSE
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.bForcePostMissionWarpCreatorPosition = FALSE
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.fDistanceFromFreemodeEvent = 0.0
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.vFreemodeActionCoords = << 0.0, 0.0, 0.0 >>
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.bSpawnNearEvent = FALSE
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.iWarpForPvAtEvent = 0
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.bPausePvCreation = FALSE
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bGangOpsTransition = FALSE
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bGangOpsTransition
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_STOPPED_STATS_SCREEN_MUSIC_EVENT)
|
|
AND NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_STARTED_STATS_SCREEN_MUSIC_EVENT)
|
|
TRIGGER_MUSIC_EVENT("HEIST_STATS_SCREEN_STOP")
|
|
PRINTLN("[SAC] - triggered music event HEIST_STATS_SCREEN_STOP.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
INT iCounter
|
|
REPEAT COUNT_OF(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash) iCounter
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[iCounter] = -1
|
|
PRINTLN("[SAC] - reset iPlayerNameHash[", iCounter, "] to -1.")
|
|
ENDREPEAT
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = -1
|
|
|
|
GAMER_HANDLE tempHandle
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.iPackedInt = 0
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.ownerHandle = tempHandle
|
|
SET_POST_MISSION_PLACE_IN_APARTMENT_FLAG(FALSE)
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.vApartmentCoords = << 0.0, 0.0, 0.0 >>
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.iApartmentLocation = -1
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.iInvitedPropertyNum = -1
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.iInvitedPropertyInstance = -1
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.iInvitedPropertyEntrance = -1
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.iApartmentCustomVariation = -1
|
|
g_TransitionSessionNonResetVars.sPostMissionCleanupData.bActivatedCutsomaprtmentIpls = FALSE
|
|
PRINTLN("[SAC] - reset packed int, call 0.")
|
|
|
|
CELEB_TURN_NIGHTVISION_OFF()
|
|
TOGGLE_PLAYER_DAMAGE_OVERLAY(TRUE)
|
|
CLEAR_ALL_CELEBRATION_POST_FX()
|
|
TOGGLE_RENDERPHASES(TRUE)
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - called TOGGLE_PLAYER_DAMAGE_OVERLAY(TRUE)")
|
|
PRINTLN("[SAC] - called CLEAR_ALL_CELEBRATION_POST_FX()")
|
|
PRINTLN("[SAC] - TOGGLE_RENDERPHASES(TRUE)")
|
|
PRINTLN("[SAC] - CELEB_TURN_NIGHTVISION_OFF()")
|
|
PRINTLN("[SAC] - SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call 3.")
|
|
DISABLE_NIGHT_VISION_CONTROLLER(FALSE)
|
|
|
|
IF NOT IS_RECTANGLE_FADED_OUT()
|
|
AND NOT IS_RECTANGLE_FADING_OUT()
|
|
PRINTLN("[SAC] - rectangle is faded in while in script cleanup, setting to fade out.")
|
|
ACTIVATE_RECTANGLE_FADE_IN(FALSE)
|
|
ACTIVATE_RECTANGLE_FADE_OUT(TRUE)
|
|
ENDIF
|
|
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
//AND NOT GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
CLEAR_FOCUS()
|
|
PRINTLN("[SAC] - script_cleanup, called CLEAR_FOCUS.")
|
|
ELSE
|
|
CLEAR_SPECTATOR_OVERRIDE_COORDS()
|
|
PRINTLN("[SAC] - script_cleanup, called CLEAR_SPECTATOR_OVERRIDE_COORDS.")
|
|
ENDIF
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
//OR GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
CLEANUP_MP_CUTSCENE(TRUE, FALSE)
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingPilotSchoolCelebration
|
|
OR IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_OFF)
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - called SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call B.")
|
|
STOP_CUTSCENE_AUDIO()
|
|
ENDIF
|
|
|
|
SET_HIDOF_OVERRIDE(FALSE, FALSE, 0, 0, 0, 0)
|
|
|
|
IF IS_NET_PLAYER_OK(PLAYER_ID(), FALSE)
|
|
//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bDoingHeistCelebration = FALSE
|
|
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bDoingHeistCelebration)
|
|
//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bHeistCelebrationShardHasFallenAway = FALSE
|
|
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bHeistCelebrationShardHasFallenAway)
|
|
ENDIF
|
|
|
|
RELEASE_NAMED_SCRIPT_AUDIO_BANK("HUD_321_GO")
|
|
|
|
RESET_CELEBRATION_DATA(sCelebrationData)
|
|
|
|
CLEANUP_STAND_ALONE_CELEBRATION_SCREEN_GLOBALS(FALSE)
|
|
|
|
SET_CELEBRATION_SCREEN_AS_ACTIVE(FALSE, bActivateInteractionMenuOnCleanup)
|
|
|
|
SET_CELEB_BLOCK_RESURRECT_RENDERPHASE_UNPAUSE(FALSE)
|
|
|
|
PRINTLN("[SAC] - completed script cleanup.")
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
|
|
ENDPROC
|
|
|
|
PROC PLAY_HEIST_CELEB_PASS_POST_FX()
|
|
|
|
PLAY_HEIST_PASS_FX("HeistCelebPass")
|
|
PLAY_SOUND_FRONTEND(-1, "Hit_1", "LONG_PLAYER_SWITCH_SOUNDS")
|
|
|
|
ENDPROC
|
|
|
|
PROC FREEZE_SCREEN_FOR_CELEBRATION(BOOL bPlayHeistCelebPassPostFx = TRUE, BOOL bFreezeScreen = TRUE, BOOL bRemoveNightvision = TRUE, BOOL bTerminatePreLoadfx = TRUE)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTLN("[SAC] - FREEZE_SCREEN_FOR_CELEBRATION has been called:")
|
|
DEBUG_PRINTCALLSTACK()
|
|
#ENDIF
|
|
|
|
// Turn off some annoying overlays.
|
|
IF bRemoveNightvision
|
|
CELEB_TURN_NIGHTVISION_OFF()
|
|
TOGGLE_PLAYER_DAMAGE_OVERLAY(FALSE)
|
|
ENDIF
|
|
|
|
// Pause the rendering.
|
|
IF bFreezeScreen
|
|
PRINTLN("[SAC] - FREEZE_SCREEN_FOR_CELEBRATION - bFreezeScreen = TRUE")
|
|
TOGGLE_RENDERPHASES(FALSE, TRUE)
|
|
|
|
|
|
IF Is_Player_Currently_On_MP_Heist(PLAYER_ID())
|
|
OR Is_Player_Currently_On_MP_Heist_Planning(PLAYER_ID())
|
|
|
|
//2230247
|
|
FLOAT fNearCam = GET_FINAL_RENDERED_CAM_NEAR_DOF()
|
|
FLOAT fFarCam = GET_FINAL_RENDERED_CAM_FAR_DOF()
|
|
|
|
SET_HIDOF_OVERRIDE(TRUE, TRUE, 0, fNearCam, fFarCam, fFarCam + 25.0)
|
|
|
|
IF Is_Player_Currently_On_MP_Heist(PLAYER_ID())
|
|
PLAY_SOUND_FRONTEND(-1,"Pre_Screen_Stinger","DLC_HEISTS_FINALE_SCREEN_SOUNDS")
|
|
PRINTLN("[SAC] - [RCC MISSION] - [NETCELEBRATION] - [CELEB_AUDIO] - FREEZE_SCREEN_FOR_CELEBRATION - played Pre_Screen_Stinger, DLC_HEISTS_FINALE_SCREEN_SOUNDS")
|
|
ELIF Is_Player_Currently_On_MP_Heist_Planning(PLAYER_ID())
|
|
PLAY_SOUND_FRONTEND(-1,"Pre_Screen_Stinger","DLC_HEISTS_PREP_SCREEN_SOUNDS")
|
|
PRINTLN("[SAC] - [RCC MISSION] - [NETCELEBRATION] - [CELEB_AUDIO] - FREEZE_SCREEN_FOR_CELEBRATION - played Pre_Screen_Stinger, DLC_HEISTS_PREP_SCREEN_SOUNDS")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - FREEZE_SCREEN_FOR_CELEBRATION - bFreezeScreen = FALSE")
|
|
ENDIF
|
|
|
|
IF bTerminatePreLoadfx
|
|
IF ANIMPOSTFX_IS_RUNNING("MP_Celeb_Preload_Fade")
|
|
ANIMPOSTFX_STOP("MP_Celeb_Preload_Fade")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Stop any previous post fx and play the pass fx.
|
|
IF bPlayHeistCelebPassPostFx
|
|
PLAY_HEIST_CELEB_PASS_POST_FX()
|
|
ENDIF
|
|
|
|
// start timer for initial fx.
|
|
START_NET_TIMER(timerFrozenForCelebrationScreen)
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Do necessary pre game start initialisation.
|
|
PROC PROCESS_PRE_GAME()
|
|
|
|
//This marks the script as a net script, and handles any instancing setup.
|
|
//SETUP_MP_MISSION_FOR_NETWORK(GET_MAX_NUM_PARTICIPANTS_FOR_MP_MISSION(missionScriptArgs.mission), missionScriptArgs)
|
|
|
|
// NETWORK_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT(MAX_NUM_SCRIPT_PARTICIPANTS, FALSE)
|
|
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
g_sTransitionSessionData.bMaintainCelebrationsScript = TRUE
|
|
//This makes sure the net script is active, waits until it is.
|
|
// HANDLE_NET_SCRIPT_INITIALISATION()
|
|
|
|
// NETWORK_REGISTER_HOST_BROADCAST_VARIABLES(standAloneData, SIZE_OF(standAloneData))
|
|
// NETWORK_REGISTER_PLAYER_BROADCAST_VARIABLES(standAloneData, SIZE_OF(standAloneData))
|
|
|
|
// KGM: Wait for the first network broadcast before moving on
|
|
// (after Initialisation and Broadcast Variable Registration - Hosts can do this too)
|
|
// IF NOT Wait_For_First_Network_Broadcast()
|
|
// PRINTLN("[SAC] - Wait_For_First_Network_Broadcast() returned FALSE, calling SCRIPT_CLEANUP and bailing.")
|
|
// SCRIPT_CLEANUP()
|
|
// ENDIF
|
|
|
|
//This script will not be paused if another script calls PAUSE_GAME
|
|
SET_THIS_SCRIPT_CAN_BE_PAUSED(FALSE)
|
|
|
|
IF SHOULD_LAUNCH_HEIST_TUTORIAL_MID_STRAND_CUT_SCENE()
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingAfterApartmentPanHeistCelebration = TRUE
|
|
PRINTLN("[RCC MISSION] - [PMC] - [NETCELEBRATION] - [SAC] - GET_HEIST_TUTORIAL_MID_CUTSCENE_REQUIRED = TRUE, setting bDoingAfterApartmentPanHeistCelebration = TRUE.")
|
|
ENDIF
|
|
|
|
SET_MY_SCENE_POSITION_INDEX(sHeistWinnerSceneData)
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_APARTMENT
|
|
AND g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_STRIP_CLUB
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHandOverToNeilCelebration = TRUE
|
|
PRINTLN("[SAC] - Set bDoingHandOverToNeilCelebration to TRUE.")
|
|
ELSE
|
|
PRINTLN("[SAC] - set bDoingHandOverToNeilCelebration to FALSE.")
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_STRIP_CLUB
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bBlockStripClubAssets = TRUE
|
|
PRINTLN("[SAC] - set bBlockStripClubAssets = TRUE.")
|
|
ENDIF
|
|
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
SET_LOCAL_PLAYER_FOR_MOCAP(FALSE, FALSE)
|
|
ENDIF
|
|
|
|
IF HAS_TRANSITION_SESSION_JIPED_FROM_OTHER_SESSION()
|
|
AND NOT SHOULD_TRANSITION_SESSION_KILL_ALL_MP_SCRIPTS()
|
|
PRINTLN("[SAC] - HAS_TRANSITION_SESSION_JIPED_FROM_OTHER_SESSION = TRUE and SHOULD_TRANSITION_SESSION_KILL_ALL_MP_SCRIPTS = FALSE, calling CLEAR_TRANSITION_SESSION_JIPED_FROM_OTHER_SESSION under instruction of Bobby.")
|
|
CLEAR_TRANSITION_SESSION_JIPED_FROM_OTHER_SESSION()
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
SET_GAME_PAUSES_FOR_STREAMING(FALSE)
|
|
PRINTLN("[SAC] - called SET_GAME_PAUSES_FOR_STREAMING(FALSE).")
|
|
ENDIF
|
|
|
|
SET_CELEB_BLOCK_RESURRECT_RENDERPHASE_UNPAUSE(TRUE)
|
|
|
|
PRINTLN("[SAC] - Completed process pre game.")
|
|
|
|
SET_GAME_STATE(eGAME_STATE_INI)
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_POINT_AT_PLAYER_CAMERA_CUT()
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT)
|
|
|
|
BOOL bFailsafeEnabled
|
|
|
|
IF NOT HAS_NET_TIMER_STARTED(timerPlaceCameraFailSafeTimer)
|
|
START_NET_TIMER(timerPlaceCameraFailSafeTimer)
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(timerPlaceCameraFailSafeTimer, 5000)
|
|
bFailsafeEnabled = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bFailsafeEnabled
|
|
|
|
FREEZE_SCREEN_FOR_CELEBRATION(FALSE, TRUE, TRUE, TRUE)
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT)
|
|
PRINTLN("[SAC] - MAINTAIN_POINT_AT_PLAYER_CAMERA_CUT - bFailsafeEnabled - forcing freeze screen and setting bit CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT.")
|
|
SCRIPT_ASSERT("[SAC] - MAINTAIN_POINT_AT_PLAYER_CAMERA_CUT failsafe enabled.")
|
|
|
|
ELSE
|
|
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoFacePlayerCamCut
|
|
|
|
SWITCH iPointAtPlayerCameraCutStage
|
|
CASE 0
|
|
PRINTLN("[SAC] - bDoFacePlayerCamCut = FALSE.")
|
|
FREEZE_SCREEN_FOR_CELEBRATION(FALSE, FALSE, FALSE)
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_BLUR_SCREEN_SCENE)
|
|
PRINTLN("[SAC] - started MP_BLUR_PRE_CELEB_SCREEN_SCENE.")
|
|
iPointAtPlayerCameraCutStage++
|
|
BREAK
|
|
CASE 1
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT)
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT.")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ELSE
|
|
|
|
SWITCH iPointAtPlayerCameraCutStage
|
|
|
|
CASE 0
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
IF ACTIVATE_CINEMATIC_CAM_FOR_IN_VEHICLE_CELEBRATION_SCREEN()
|
|
PRINTLN("[SAC] - ACTIVATE_CINEMATIC_CAM_FOR_IN_VEHICLE_CELEBRATION_SCREEN(TRUE)")
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_BLUR_SCREEN_SCENE)
|
|
FREEZE_SCREEN_FOR_CELEBRATION()
|
|
iPointAtPlayerCameraCutStage = 2
|
|
ENDIF
|
|
ELSE
|
|
IF PLACE_CAMERA_FOR_CELEBRATION_SCREEN(sCelebrationData, pointAtPlayerCam, bPointAtPlayerCamSuccessfullyPlaced)
|
|
PRINTLN("[SAC] - PLACE_CAMERA_FOR_CELEBRATION_SCREEN = TRUE, bPointAtPlayerCamSuccessfullyPlaced = ", bPointAtPlayerCamSuccessfullyPlaced)
|
|
IF bPointAtPlayerCamSuccessfullyPlaced
|
|
PRINTLN("[SAC] - bPointAtPlayerCamSuccessfullyPlaced = TRUE")
|
|
SET_CAM_ACTIVE(pointAtPlayerCam, TRUE)
|
|
RENDER_SCRIPT_CAMS(TRUE, FALSE)
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_BLUR_SCREEN_SCENE)
|
|
FREEZE_SCREEN_FOR_CELEBRATION(TRUE, FALSE, TRUE)
|
|
iPointAtPlayerCameraCutStage++
|
|
ELSE
|
|
PRINTLN("[SAC] - bPointAtPlayerCamSuccessfullyPlaced = FALSE")
|
|
FREEZE_SCREEN_FOR_CELEBRATION()
|
|
iPointAtPlayerCameraCutStage = 2
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 1
|
|
IF IS_CAM_ACTIVE(pointAtPlayerCam)
|
|
IF IS_CAM_RENDERING(pointAtPlayerCam)
|
|
BOOL bPlayPostHeistPassedPostFx
|
|
BOOL bFreezeScreen
|
|
BOOL bRemoveNightVision
|
|
IF bPointAtPlayerCamSuccessfullyPlaced
|
|
bFreezeScreen = TRUE
|
|
ENDIF
|
|
FREEZE_SCREEN_FOR_CELEBRATION(bPlayPostHeistPassedPostFx, bFreezeScreen, bRemoveNightVision)
|
|
iPointAtPlayerCameraCutStage++
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT.")
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 2
|
|
IF NOT GET_TOGGLE_PAUSED_RENDERPHASES_STATUS()
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT)
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT.")
|
|
ENDIF
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_PLAYER_FROM_MY_HEIST_CELEBRATION(PLAYER_INDEX playerId)
|
|
|
|
INT iHashCount
|
|
|
|
REPEAT COUNT_OF(g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash) iHashCount
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPlayerNameHash[iHashCount] = NETWORK_HASH_FROM_PLAYER_HANDLE(playerId)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL HAVE_ALL_PLAYERS_HEIST_CELEBRATION_SHARD_FALLEN_AWAY()
|
|
|
|
INT i
|
|
|
|
REPEAT NUM_NETWORK_PLAYERS i
|
|
IF IS_NET_PLAYER_OK(INT_TO_NATIVE(PLAYER_INDEX, i), FALSE)
|
|
IF IS_PLAYER_FROM_MY_HEIST_CELEBRATION(INT_TO_NATIVE(PLAYER_INDEX, i))
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[i].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bDoingHeistCelebration)//GlobalplayerBD_FM[i].bDoingHeistCelebration
|
|
IF NOT IS_BIT_SET(GlobalplayerBD_FM[i].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bHeistCelebrationShardHasFallenAway)//GlobalplayerBD_FM[i].bHeistCelebrationShardHasFallenAway
|
|
PRINTLN("[SAC] - HAVE_ALL_PLAYERS_HEIST_CELEBRATION_SHARD_FALLEN_AWAY retuning FALSE for player ", i)
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bHaveAllHeistPlayersCelebrationShardsFallenAway = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
RETURN TRUE
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Processes server
|
|
PROC PROCESS_STAND_ALONE_CELEBRATION_LOGIC()
|
|
|
|
STRING strScreenName
|
|
STRING strColourBackground
|
|
|
|
STOP_CONTROL_SHAKE(PLAYER_CONTROL) // No shaky pads during the celebrations - B*1837406.
|
|
|
|
// No pausing the celebration screen.
|
|
IF IS_PAUSE_MENU_ACTIVE()
|
|
SET_FRONTEND_ACTIVE(FALSE)
|
|
PRINTLN("[RCC MISSION] - [SAC] - called SET_FRONTEND_ACTIVE(FALSE) to remove pause menu for celebration screen.")
|
|
ENDIF
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_FRONTEND_PAUSE)
|
|
DISABLE_FRONTEND_THIS_FRAME()
|
|
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingAfterApartmentPanHeistCelebration
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PRE_LOAD_WARP_TRIGGERED)
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT) // Need this to be done first before we warp player around.
|
|
PRINTLN("[SAC] - CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT bit is set.")
|
|
INITIALISE_HEIST_END_WINNER_SCENE_DATA(sHeistWinnerSceneData)
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
PRINTLN("[SAC] - bDoingHeistEndWinnerScene = TRUE, creating winner scene entities.")
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bCloningComplete
|
|
PRINTLN("[SAC] - bCloningComplete = TRUE, creating winner scene entities.")
|
|
IF CREATE_HEIST_END_WINNER_SCENE_ENTITIES(sHeistWinnerSceneData)
|
|
PRINTLN("[SAC] - CREATE_HEIST_END_WINNER_SCENE_ENTITIES = TRUE, setting CELEB_GENERAL_BITSET_PRE_LOAD_WARP_TRIGGERED.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PRE_LOAD_WARP_TRIGGERED)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - bDoingHeistEndWinnerScene = FALSE, setting CELEB_GENERAL_BITSET_PRE_LOAD_WARP_TRIGGERED.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PRE_LOAD_WARP_TRIGGERED)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Update broadcast version of if I joined heist as spectator.
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator = g_TransitionSessionNonResetVars.sGlobalCelebrationData.bJoinedMissionAsSpectator
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bJoinedMissionAsSpectator
|
|
SET_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)
|
|
ELSE
|
|
CLEAR_BIT(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)
|
|
ENDIF
|
|
ENDIf
|
|
|
|
SWITCH GET_CELEBRATION_STATE(0)
|
|
|
|
CASE eCELEBRATIONSTATE_INIT_MOVIE
|
|
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT)
|
|
|
|
INITIALISE_CELEBRATION_SCREEN_DATA(sCelebrationData)
|
|
SET_CELEBRATION_SCREEN_AS_ACTIVE(TRUE)
|
|
KILL_UI_FOR_CELEBRATION_SCREEN()
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
IF NOT IS_SCREEN_FADING_IN()
|
|
DO_SCREEN_FADE_IN(500)
|
|
PRINTLN("[SAC] - screen not faded or fading in. Called DO_SCREEN_FADE_IN(1000).")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingAfterApartmentPanHeistCelebration
|
|
IF DOES_ENTITY_EXIST(PLAYER_PED_ID())
|
|
SET_PLAYER_CLOTHES_FOR_RETURN_TO_FREEMODE()
|
|
PRINTLN("[SAC] - called SET_PED_VARIATIONS and removed other props etc from the player.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_CLEAR_TASKS | NSPC_REMOVE_FIRES | NSPC_SET_INVISIBLE | NSPC_REMOVE_EXPLOSIONS | NSPC_FREEZE_POSITION)
|
|
|
|
PRINTLN("[SAC] - completed inititialisation of celebration data.")
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_LOAD_MOVIE)
|
|
ELSE
|
|
PRINTLN("[SAC] - CELEB_GENERAL_COMPLETED_POINT_AT_PLAYER_CAMERA_CUT not set.")
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eCELEBRATIONSTATE_LOAD_MOVIE
|
|
|
|
INT iMoneyTexture
|
|
|
|
CELEBRATION_SCREEN_TYPE eCelebType
|
|
eCelebType = CELEBRATION_STANDARD
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bGangOpsTransition
|
|
eCelebType = CELEBRATION_GANGOPS
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
eCelebType = CELEBRATION_HEIST
|
|
ENDIF
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_ROOF
|
|
OR sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_CASINO_HEIST_BAR
|
|
#IF FEATURE_HEIST_ISLAND
|
|
OR sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_ISLAND_HEIST
|
|
#ENDIF
|
|
eCelebType = CELEBRATION_HEIST
|
|
ENDIF
|
|
|
|
REQUEST_CELEBRATION_SCREEN(sCelebrationData, eCelebType)
|
|
|
|
IF HAS_CELEBRATION_SCREEN_LOADED(sCelebrationData)
|
|
AND REQUEST_SCRIPT_AUDIO_BANK("HUD_321_GO")
|
|
|
|
PRINTLN("[SAC] - celebration movies loaded.")
|
|
|
|
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
|
|
IF IS_AUDIO_SCENE_ACTIVE("MP_LEADERBOARD_SCENE")
|
|
STOP_AUDIO_SCENE("MP_LEADERBOARD_SCENE")
|
|
ENDIF
|
|
|
|
strScreenName = GET_CELEBRATION_SCREEN_NAME()
|
|
|
|
// Create celebration screen and add data to it.
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingPilotSchoolCelebration
|
|
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_CELEB_SCREEN_SCENE)
|
|
CREATE_CELEBRATION_SCREEN(sCelebrationData, strScreenName, "HUD_COLOUR_BLACK")
|
|
ADD_PILOT_SCHOOL_DATA_TO_CELEBRATION_SCREEN(sCelebrationData)
|
|
ADD_BACKGROUND_TO_CELEBRATION_SCREEN(sCelebrationData, strScreenName, -1, iMoneyTexture)
|
|
SHOW_CELEBRATION_SCREEN(sCelebrationData, strScreenName)
|
|
SET_CHAT_ENABLED_FOR_CELEBRATION_SCREEN(TRUE)
|
|
RESET_NET_TIMER(sCelebrationData.sCelebrationTimer)
|
|
START_NET_TIMER(sCelebrationData.sCelebrationTimer, g_TransitionSessionNonResetVars.sGlobalCelebrationData.bInTestMode)
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
IF NOT IS_SCREEN_FADING_IN()
|
|
DO_SCREEN_FADE_IN(500)
|
|
PRINTLN("[SAC] - screen not faded or fading in. Called DO_SCREEN_FADE_IN(500).")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_DRAW_MOVIE)
|
|
|
|
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(timerFrozenForCelebrationScreen, 1000)
|
|
|
|
INT iCreateStatWallAudioType
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bPassedMission
|
|
iCreateStatWallAudioType = 2
|
|
PRINTLN("[SAC] - failed mission - set iCreateStatWallAudioType = ", iCreateStatWallAudioType)
|
|
ELSE
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iHeistType = ciCELEBRATION_HEIST_TYPE__PREP
|
|
iCreateStatWallAudioType = 1
|
|
PRINTLN("[SAC] - failed mission - set iCreateStatWallAudioType = ", iCreateStatWallAudioType)
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iHeistType = ciCELEBRATION_HEIST_TYPE__FINALE
|
|
iCreateStatWallAudioType = 3
|
|
PRINTLN("[SAC] - failed mission - set iCreateStatWallAudioType = ", iCreateStatWallAudioType)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
strColourBackground = "HUD_COLOUR_HSHARD"
|
|
|
|
CREATE_CELEBRATION_SCREEN(sCelebrationData, strScreenName, strColourBackground, FALSE, iCreateStatWallAudioType)
|
|
ADD_END_HEIST_DATA_TO_CELEBRATION_SCREEN(sCelebrationData)
|
|
|
|
sCelebrationData.iEstimatedScreenDuration += 5000
|
|
iMoneyTexture = 2
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
INT iTempValue
|
|
iTempValue = GET_GLOBAL_ACTIONSCRIPT_FLAG(ACTIONSCRIPT_GLOBAL_ID)
|
|
PRINTLN("[SAC] - GET_GLOBAL_ACTIONSCRIPT_FLAG(ACTIONSCRIPT_GLOBAL_ID) = ", iTempValue)
|
|
#ENDIF
|
|
|
|
ADD_BACKGROUND_TO_CELEBRATION_SCREEN(sCelebrationData, strScreenName, -1, iMoneyTexture)
|
|
SHOW_CELEBRATION_SCREEN(sCelebrationData, strScreenName)
|
|
SET_CHAT_ENABLED_FOR_CELEBRATION_SCREEN(TRUE)
|
|
RESET_NET_TIMER(sCelebrationData.sCelebrationTimer)
|
|
START_NET_TIMER(sCelebrationData.sCelebrationTimer, g_TransitionSessionNonResetVars.sGlobalCelebrationData.bInTestMode)
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
IF NOT IS_SCREEN_FADING_IN()
|
|
DO_SCREEN_FADE_IN(500)
|
|
PRINTLN("[SAC] - screen not faded or fading in. Called DO_SCREEN_FADE_IN(500).")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_DRAW_MOVIE)
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
PRINTLN("Celebrations - no celebration type has been set, don't know which data to add to movie.")
|
|
SCRIPT_ASSERT("Celebrations - no celebration type has been set, don't know which data to add to movie.")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eCELEBRATIONSTATE_DRAW_MOVIE
|
|
|
|
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
|
|
|
|
REQUEST_SCRIPT_AUDIO_BANK("HUD_321_GO")
|
|
|
|
DRAW_CELEBRATION_SCREEN_THIS_FRAME(sCelebrationData, FALSE)
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingPilotSchoolCelebration
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(sCelebrationData.sCelebrationTimer, sCelebrationData.iEstimatedScreenDuration, g_TransitionSessionNonResetVars.sGlobalCelebrationData.bInTestMode)
|
|
|
|
PRINTLN("[SAC] - celebration finished.")
|
|
PRINTLN("[SAC] - bDoingPilotSchoolCelebration = TRUE.")
|
|
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_SWITCHED_OF_LOADING_SPINNER)
|
|
PRINTLN("[SAC] - BUSY SPINNER OFF - call 0.")
|
|
BUSYSPINNER_OFF()
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_SWITCHED_OF_LOADING_SPINNER)
|
|
ENDIF
|
|
|
|
STOP_CELEBRATION_SCREEN_ANIM(sCelebrationData, GET_CELEBRATION_SCREEN_NAME())
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
|
|
ENDIF
|
|
|
|
ELIF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_TRANSITIONED_INTO_BW)
|
|
IF HAS_CELEBRATION_SHARD_BEGAN_TO_FALL_IN()
|
|
ANIMPOSTFX_STOP("SuccessNeutral")
|
|
PLAY_HEIST_PASS_FX("HeistCelebPassBW")
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_CELEB_SCREEN_SCENE)
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_TRANSITIONED_INTO_BW)
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_BITSET_TRANSITIONED_INTO_BW.")
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bGangOpsTransition
|
|
SET_LOCAL_PLAYER_FOR_MOCAP()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_TRANSITIONED_OUT_OF_BW)
|
|
IF HAS_CELEBRATION_SHARD_BEGAN_TO_FALL_AWAY()
|
|
ANIMPOSTFX_STOP("SuccessNeutral")
|
|
PLAY_HEIST_PASS_FX("HeistCelebEnd")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_TRANSITIONED_OUT_OF_BW)
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_BITSET_TRANSITIONED_OUT_OF_BW.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_CELEBRATION_SHARD_BEGAN_TO_FALL_IN()
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_CELEB_SCREEN_SCENE)
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_STARTED_STATS_SCREEN_MUSIC_EVENT)
|
|
SCRIPT_TRIGGER_MUSIC_EVENT_STOP()
|
|
PRINTLN("[SAC] - triggered music event MP_MC_STOP.")
|
|
TRIGGER_MUSIC_EVENT("HEIST_STATS_SCREEN_START")
|
|
PRINTLN("[SAC] - triggered music event HEIST_STATS_SCREEN_START.")
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
AND NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
// Prepare prep stop music event.
|
|
ENABLE_PREPARE_CELEBRATION_STATS_SCREEN_STOP_MUSIC_EVENT()
|
|
ENDIF
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_STARTED_STATS_SCREEN_MUSIC_EVENT)
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_STARTED_STATS_SCREEN_MUSIC_EVENT.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_CELEBRATION_SHARD_BEGAN_TO_FALL_AWAY()
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_STOPPED_STATS_SCREEN_MUSIC_EVENT)
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.bGangOpsTransition
|
|
TRIGGER_MUSIC_EVENT("HEIST_STATS_SCREEN_STOP")
|
|
PRINTLN("[SAC] - triggered music event HEIST_STATS_SCREEN_STOP.")
|
|
ENDIF
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_STOPPED_STATS_SCREEN_MUSIC_EVENT)
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_STOPPED_STATS_SCREEN_MUSIC_EVENT.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_CELEBRATION_SHARD_FINISHED_FALL_AWAY()
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bGangOpsTransition
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC)
|
|
PRINTLN("[SAC] - GANG_OPS")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC)
|
|
ENDIF
|
|
ELIF NOT HAS_NET_TIMER_STARTED(timerShardFallenAway)
|
|
START_NET_TIMER(timerShardFallenAway)
|
|
PRINTLN("[SAC] - started net timer timerShardFallenAway.")
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(timerShardFallenAway, 2000)
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC)
|
|
PRINTLN("[SAC] - net timer timerShardFallenAway >= 2000")
|
|
PRINTLN("[SAC] - set bit CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bHeistCelebrationShardHasFallenAway
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC)
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bHeistCelebrationShardHasFallenAway = TRUE
|
|
PRINTLN("[SAC] - set bHeistCelebrationShardHasFallenAway = TRUE.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bHaveAllHeistPlayersCelebrationShardsFallenAway
|
|
OR bWaitingOnPlayersTimeout // Assert fires if this gets set, something has gone wrong so we force our way through so nobody gets stuck.
|
|
|
|
// Sort fading out as soon as possible.
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC)
|
|
IF ( g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene AND NOT IS_FAKE_MULTIPLAYER_MODE_SET() )
|
|
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingAfterApartmentPanHeistCelebration
|
|
//PRINTLN("[SAC] - BUSY SPINNER OFF - call 2.")
|
|
BUSYSPINNER_OFF()
|
|
IF NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_STARTED_WHITE_RECTANGLE_FADE)
|
|
IF NOT IS_RECTANGLE_FADING_IN()
|
|
IF sHeistWinnerSceneData.eSceneType = eHEISTWINNERSCENETYPE_TREVOR
|
|
SET_RECTANGLE_COLOUR(FALSE)
|
|
ELSE
|
|
SET_RECTANGLE_COLOUR(TRUE)
|
|
ENDIF
|
|
ACTIVATE_RECTANGLE_FADE_OUT(FALSE)
|
|
ACTIVATE_RECTANGLE_FADE_IN(TRUE)
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_FADE_WHITE_SCENE)
|
|
ENDIF
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_STARTED_WHITE_RECTANGLE_FADE)
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - BUSY SPINNER OFF - call 20.")
|
|
BUSYSPINNER_OFF()
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
AND NOT IS_SCREEN_FADING_OUT()
|
|
DO_SCREEN_FADE_OUT(500)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - BUSY SPINNER OFF - call 3.")
|
|
BUSYSPINNER_OFF()
|
|
IF NOT IS_SCREEN_FADED_OUT()
|
|
AND NOT IS_SCREEN_FADING_OUT()
|
|
DO_SCREEN_FADE_OUT(500)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bOkToKillCelebrationScript
|
|
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.bInTestMode
|
|
|
|
PRINTLN("[SAC] - celebration finished.")
|
|
PRINTLN("[SAC] - bDoingHeistCelebration = TRUE")
|
|
|
|
PRINTLN("[SAC] - bOkToKillCelebrationScript = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.bOkToKillCelebrationScript)
|
|
PRINTLN("[SAC] - bInTestMode = ", g_TransitionSessionNonResetVars.sGlobalCelebrationData.bInTestMode)
|
|
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_SWITCHED_OF_LOADING_SPINNER)
|
|
PRINTLN("[SAC] - BUSY SPINNER OFF - call 1.")
|
|
BUSYSPINNER_OFF()
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_SWITCHED_OF_LOADING_SPINNER)
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC)
|
|
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
OR g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingAfterApartmentPanHeistCelebration
|
|
|
|
IF ( g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene AND NOT IS_FAKE_MULTIPLAYER_MODE_SET() )
|
|
IF IS_RECTANGLE_FADED_IN()
|
|
OR IS_SCREEN_FADED_OUT()
|
|
SET_CELEBRATION_AUDIO_STAGE(sHeistWinnerSceneData.eWinnerAudioScene)
|
|
START_NET_TIMER(timerFadeFlashDelay)
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_DO_WINNER_SCENE)
|
|
ELSE
|
|
PRINTLN("[SAC] - waiting on IS_RECTANGLE_FADED_IN.")
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - bDoingHeistEndWinnerScene = FALSE.")
|
|
IF NOT GET_HEIST_TUTORIAL_MID_CUTSCENE_PRELOAD()
|
|
PRINTLN("[SAC] - GET_HEIST_TUTORIAL_MID_CUTSCENE_PRELOAD = FALSE.")
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingAfterApartmentPanHeistCelebration
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_STARTED_FADE_BLACK_SCENE)
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_FADE_BLACK_SCENE)
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_STARTED_FADE_BLACK_SCENE)
|
|
ENDIF
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
SWITCH iJoinedMissionAsSpectatorWarpStage
|
|
CASE 0
|
|
SETUP_JOINED_MISSION_AS_SPECTATOR_WARP()
|
|
iJoinedMissionAsSpectatorWarpStage++
|
|
BREAK
|
|
CASE 1
|
|
IF WARP_TO_SPAWN_LOCATION(SPAWN_LOCATION_AT_SPECIFIC_COORDS_IF_POSSIBLE, FALSE, FALSE, FALSE, FALSE)
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
DO_SCREEN_FADE_IN(500)
|
|
ENDIF
|
|
IF IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
ENDIF
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
IF NOT STAND_ALONE_CELEBRATION_IS_PLAYER_IN_AN_APARTMENT()
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - player is not already inside an apartment.")
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_INITIALISED_APARTMENT_DATA)
|
|
SET_APARTMENT_EXTERIOR_SPAWN_DATA(sHeistWinnerSceneData)
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_INITIALISED_APARTMENT_DATA)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - set HEIST_WINNER_SCENE_INITIALISED_APARTMENT_DATA.")
|
|
ELSE
|
|
IF WARP_TO_OUTSIDE_APARTMENT(sHeistWinnerSceneData)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - WARP_TO_OUTSIDE_APARTMENT() complete.")
|
|
bActivateInteractionMenuOnCleanup = TRUE
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_FADE_IN)
|
|
ELSE
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - waiting for WARP_TO_OUTSIDE_APARTMENT().")
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - player is already inside an apartment.")
|
|
TRIGGER_POST_HEIST_POSITION_SYSTEMS()
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
ENDIF
|
|
ELSE
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
IF (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_STRIP_CLUB)
|
|
AND (g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId != SIS_POST_APARTMENT)
|
|
PRINTLN("[SAC] - not doing apartment setup post mission scene, using Neil's system, calling DO_SCTV_EXTERNAL_FADE_IN_AFTER_POST_CELEB.")
|
|
DO_SCTV_EXTERNAL_FADE_IN_AFTER_POST_CELEB(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
TRIGGER_POST_HEIST_POSITION_SYSTEMS()
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF NOT IS_RECTANGLE_FADED_OUT()
|
|
IF NOT IS_RECTANGLE_FADING_OUT()
|
|
ACTIVATE_RECTANGLE_FADE_IN(FALSE)
|
|
ACTIVATE_RECTANGLE_FADE_OUT(TRUE)
|
|
CLEAR_ALL_CELEBRATION_POST_FX() // url:bugstar:2221031 - clears up HeistCelebEnd animpostfx. ST.
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - called SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call C.")
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_OFF)
|
|
TRIGGER_MUSIC_EVENT("HEIST_STATS_SCREEN_STOP")
|
|
PRINTLN("[SAC] - triggered music event HEIST_STATS_SCREEN_STOP for flow cutscene.")
|
|
// START_CELEBRATION_STATS_SCREEN_STOP_MUSIC_EVENT()
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
ENDIF
|
|
ELSE
|
|
CLEAR_ALL_CELEBRATION_POST_FX() // url:bugstar:2221031 - clears up HeistCelebEnd animpostfx. ST.
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_OFF)
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF IS_RECTANGLE_FADED_IN()
|
|
IF NOT HAS_NET_TIMER_STARTED(timerFadeFlashDelay)
|
|
START_NET_TIMER(timerFadeFlashDelay)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - started timer timerFadeFlashDelay.")
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(timerFadeFlashDelay, WHITE_SCREEN_HOLD_TIME)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - timer timerFadeFlashDelay has expired = ", WHITE_SCREEN_HOLD_TIME)
|
|
IF g_bCelebrationScreenIsActive
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - calling SET_CELEBRATION_SCREEN_AS_ACTIVE(FALSE) so SET_HEIST_TUTORIAL_MID_CUTSCENE_PRELOAD can be set to FALSE.")
|
|
SET_CELEBRATION_SCREEN_AS_ACTIVE(FALSE, bActivateInteractionMenuOnCleanup)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - waiting for IS_RECTANGLE_FADED_IN to return TRUE.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - waiting for pre-load warp to complete.")
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
PRINTLN("[SAC] - waiting on CELEB_GENERAL_BITSET_PLAYED_CELEB_END_FOR_1_SEC.")
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bHeistCelebrationShardHasFallenAway
|
|
IF NOT HAS_NET_TIMER_STARTED(timerWaitingOnPlayers)
|
|
START_NET_TIMER(timerWaitingOnPlayers)
|
|
PRINTLN("[SAC] - started timer timerWaitingOnPlayers.")
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(timerWaitingOnPlayers, 4000)
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_STARTED_WAITING_SPINNER)
|
|
IF NOT BUSYSPINNER_IS_ON()
|
|
BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("CELEB_WPLYRS")
|
|
END_TEXT_COMMAND_BUSYSPINNER_ON(ENUM_TO_INT(LOADING_ICON_LOADING))
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_STARTED_WAITING_SPINNER)
|
|
PRINTLN("[SAC] - timer timerWaitingOnPlayers has expired (4000).")
|
|
PRINTLN("[SAC] - CELEB_WPLYRS BUSY SPINNER ON")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
IF HAS_NET_TIMER_EXPIRED(timerWaitingOnPlayers, 60000)
|
|
bWaitingOnPlayersTimeout = TRUE
|
|
PRINTLN("[SAC] - other players have taken >= 60000 to finish their celebrations. Setting force through flag bWaitingOnPlayersTimeout.")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eCELEBRATIONSTATE_DO_WINNER_SCENE
|
|
|
|
IF MAINTAIN_HEIST_END_WINNER_SCENE(sHeistWinnerSceneData)
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bOkToKillCelebrationScript = FALSE
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eCELEBRATIONSTATE_FADE_IN
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
DO_SCREEN_FADE_IN(500)
|
|
TOGGLE_PLAYER_DAMAGE_OVERLAY(TRUE)
|
|
ANIMPOSTFX_STOP_ALL()
|
|
TOGGLE_RENDERPHASES(TRUE)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - called SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call D.")
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
ENDIF
|
|
|
|
IF IS_SCREEN_FADED_IN()
|
|
STOP_CELEBRATION_SCREEN_ANIM(sCelebrationData, GET_CELEBRATION_SCREEN_NAME())
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
START_CELEBRATION_STATS_SCREEN_STOP_MUSIC_EVENT()
|
|
ENDIF
|
|
ENDIF
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_OFF)
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE eCELEBRATIONSTATE_APARTMENT_FAILSAFE
|
|
|
|
SWITCH iApartmentFailsafeStage
|
|
|
|
CASE 0
|
|
IF NOT IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_INITIALISED_APARTMENT_DATA)
|
|
SET_APARTMENT_EXTERIOR_SPAWN_DATA(sHeistWinnerSceneData)
|
|
SET_BIT(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_INITIALISED_APARTMENT_DATA)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - set HEIST_WINNER_SCENE_INITIALISED_APARTMENT_DATA.")
|
|
ELSE
|
|
IF WARP_TO_OUTSIDE_APARTMENT(sHeistWinnerSceneData)
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eCELEBRATIONSTATE_APARTMENT_FAILSAFE - WARP_TO_OUTSIDE_APARTMENT() complete.")
|
|
bActivateInteractionMenuOnCleanup = TRUE
|
|
iApartmentFailsafeStage++
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eCELEBRATIONSTATE_APARTMENT_FAILSAFE - iApartmentFailsafeStage = ", iApartmentFailsafeStage)
|
|
ELSE
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eCELEBRATIONSTATE_APARTMENT_FAILSAFE - waiting for WARP_TO_OUTSIDE_APARTMENT().")
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE 1
|
|
|
|
TOGGLE_PLAYER_DAMAGE_OVERLAY(TRUE)
|
|
ANIMPOSTFX_STOP_ALL()
|
|
TOGGLE_RENDERPHASES(TRUE)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING()
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
SET_GAME_PAUSES_FOR_STREAMING(TRUE)
|
|
PRINTLN("[SAC] - called SET_GAME_PAUSES_FOR_STREAMING(TRUE). Call Z.")
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
iApartmentFailsafeStage++
|
|
PRINTLN("[SAC] - [NETCELEBRATION] - eCELEBRATIONSTATE_APARTMENT_FAILSAFE - iApartmentFailsafeStage = ", iApartmentFailsafeStage)
|
|
|
|
BREAK
|
|
|
|
CASE 2
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_IN()
|
|
DO_SCREEN_FADE_IN(500)
|
|
ENDIF
|
|
|
|
IF IS_SCREEN_FADED_IN()
|
|
STOP_CELEBRATION_SCREEN_ANIM(sCelebrationData, GET_CELEBRATION_SCREEN_NAME())
|
|
CLEANUP_CELEBRATION_SCREEN(sCelebrationData, FALSE, GET_CELEBRATION_SCREEN_NAME())
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistCelebration
|
|
IF NOT g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
START_CELEBRATION_STATS_SCREEN_STOP_MUSIC_EVENT()
|
|
ENDIF
|
|
ENDIF
|
|
SET_CELEBRATION_AUDIO_STAGE(eCAS_OFF)
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_CLEANUP)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
BREAK
|
|
|
|
CASE eCELEBRATIONSTATE_CLEANUP
|
|
|
|
BOOL bgoToGameStateEnd
|
|
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPostMissionSceneId = SIS_POST_APARTMENT
|
|
|
|
IF IS_PLAYER_SCTV(PLAYER_ID())
|
|
OR IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bJoinedMissionAsSpectator)//GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].bJoinedMissionAsSpectator
|
|
PRINTLN("[SAC] - IS_PLAYER_SCTV(PLAYER_ID()) = TRUE.")
|
|
bgoToGameStateEnd = TRUE
|
|
ELSE
|
|
|
|
IF STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR()
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR = TRUE.")
|
|
IF STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT()
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT = TRUE, bgoToGameStateEnd = TRUE")
|
|
bgoToGameStateEnd = TRUE
|
|
ELSE
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_RUNNING_APARTMENT_INTERIOR_SCRIPT = FALSE.")
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - STAND_ALONE_CELEBRATION_IS_PLAYER_IN_APARTMENT_INTERIOR = FALSE.")
|
|
ENDIF
|
|
|
|
IF IS_SCREEN_FADED_OUT()
|
|
IF NOT HAS_NET_TIMER_STARTED(waitForApartmentFadeIntimer)
|
|
START_NET_TIMER(waitForApartmentFadeIntimer)
|
|
ELSE
|
|
IF HAS_NET_TIMER_EXPIRED(waitForApartmentFadeIntimer, 50000)
|
|
SET_CELEBRATION_STATE(eCELEBRATIONSTATE_APARTMENT_FAILSAFE)
|
|
ENDIF
|
|
ENDIF
|
|
ELIF IS_SCREEN_FADED_IN()
|
|
PRINTLN("[SAC] - screen is faded in, bgoToGameStateEnd = TRUE")
|
|
bgoToGameStateEnd = TRUE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
PRINTLN("[SAC] - iPostMissionSceneId != SIS_POST_APARTMENT, bgoToGameStateEnd = TRUE")
|
|
bgoToGameStateEnd = TRUE
|
|
ENDIF
|
|
|
|
IF bgoToGameStateEnd
|
|
SET_GAME_STATE(eGAME_STATE_END)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
|
|
// ************ //
|
|
// WIDGETS //
|
|
// ************ //
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PROC CREATE_WIDGETS()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
INT i
|
|
TEXT_LABEL_63 tl63_temp
|
|
#ENDIF
|
|
|
|
START_WIDGET_GROUP("Stand Alone Celebrations")
|
|
|
|
ADD_WIDGET_BOOL("bHostEndMissionNow", bHostEndMissionNow)
|
|
#IF IS_DEBUG_BUILD
|
|
twID_GameState = ADD_TEXT_WIDGET("Game State")
|
|
#ENDIF
|
|
ADD_WIDGET_INT_READ_ONLY("Screen Estimated Duration", sCelebrationData.iEstimatedScreenDuration)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
ADD_HEIST_WINNER_SCENE_WIDGETS()
|
|
#ENDIF
|
|
|
|
START_WIDGET_GROUP("Global Values")
|
|
|
|
ADD_WIDGET_BOOL("bPassedMission", g_TransitionSessionNonResetVars.sGlobalCelebrationData.bPassedMission)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
ADD_WIDGET_BOOL("I am leader", g_TransitionSessionNonResetVars.sGlobalCelebrationData.bIAmHeistLeader)
|
|
ADD_WIDGET_INT_READ_ONLY("Num Peds Killed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iNumPedKills)
|
|
// ADD_WIDGET_INT_READ_ONLY("Num Choppers Destroyed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iChoppersDestroyed)
|
|
// ADD_WIDGET_INT_READ_ONLY("Max Choppers Can Be Destroyed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iMaximumChoppersDestroyed)
|
|
// ADD_WIDGET_INT_READ_ONLY("Num Vehicles Destroyed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iVehiclesDestoryed)
|
|
// ADD_WIDGET_INT_READ_ONLY("Max Vehicles Can Be Destoryed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iMaximumVehDestroyed)
|
|
// ADD_WIDGET_INT_READ_ONLY("Ending Accuracty", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iEndingAccuracy)
|
|
// ADD_WIDGET_INT_READ_ONLY("Num Prisoners Killed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iPrisonersKilled)
|
|
// ADD_WIDGET_INT_READ_ONLY("VIP Damage", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iVipDamage)
|
|
// ADD_WIDGET_INT_READ_ONLY("Lose Wanted Time", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iLoseWantedTime)
|
|
// ADD_WIDGET_INT_READ_ONLY("Bike highest Speed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iBikehighSpeed)
|
|
ADD_WIDGET_INT_READ_ONLY("Max Take", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iMaximumTake)
|
|
ADD_WIDGET_INT_READ_ONLY("My Take", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iMyTake)
|
|
// ADD_WIDGET_INT_READ_ONLY("Maximum Choppers Destroyed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iMaximumChoppersDestroyed)
|
|
// ADD_WIDGET_INT_READ_ONLY("Maximum Vehicles Destroyed", g_TransitionSessionNonResetVars.sGlobalCelebrationData.iMaximumVehDestroyed)
|
|
ADD_WIDGET_BOOL("OK to Kill Celebration Script", g_TransitionSessionNonResetVars.sGlobalCelebrationData.bOkToKillCelebrationScript)
|
|
twID_FailReason = ADD_TEXT_WIDGET("Fail Reason")
|
|
twID_LiteralFailReason = ADD_TEXT_WIDGET("Literal Fail Reason")
|
|
START_WIDGET_GROUP("Player Details")
|
|
REPEAT 4 i
|
|
tl63_temp = "LB Player "
|
|
tl63_temp += i
|
|
tl63_temp += " ID"
|
|
ADD_WIDGET_INT_READ_ONLY(tl63_temp, iWidgetPlayerIds[i])
|
|
tl63_temp = "LB Player "
|
|
tl63_temp += i
|
|
tl63_temp += " name"
|
|
twID_lbPlayerName[i] = ADD_TEXT_WIDGET(tl63_temp)
|
|
tl63_temp = "LB Player "
|
|
tl63_temp += i
|
|
tl63_temp += " rating"
|
|
twID_lbPlayerRating[i] = ADD_TEXT_WIDGET(tl63_temp)
|
|
ENDREPEAT
|
|
STOP_WIDGET_GROUP()
|
|
#ENDIF
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
STOP_WIDGET_GROUP()
|
|
|
|
ENDPROC
|
|
|
|
PROC UPDATE_WIDGETS()
|
|
#IF IS_DEBUG_BUILD
|
|
INT i
|
|
SET_CONTENTS_OF_TEXT_WIDGET(twID_GameState, GET_GAME_STATE_NAME(GET_GAME_STATE(0)))
|
|
SET_CONTENTS_OF_TEXT_WIDGET(twID_FailReason, g_TransitionSessionNonResetVars.sGlobalCelebrationData.strFailReason)
|
|
SET_CONTENTS_OF_TEXT_WIDGET(twID_LiteralFailReason, g_TransitionSessionNonResetVars.sGlobalCelebrationData.strFailReasonLiteral)
|
|
REPEAT 3 i
|
|
SET_CONTENTS_OF_TEXT_WIDGET(twID_lbPlayerName[i], g_TransitionSessionNonResetVars.sGlobalCelebrationData.strLeaderBoardPlayerName[i])
|
|
SET_CONTENTS_OF_TEXT_WIDGET(twID_lbPlayerRating[i], g_TransitionSessionNonResetVars.sGlobalCelebrationData.strRatingColour[i])
|
|
ENDREPEAT
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|
|
// ************************ //
|
|
// MAIN SCRIPT PROCESSING //
|
|
// ************************ //
|
|
|
|
SCRIPT (CELEBRATION_SCRIPT_DATA launchData)
|
|
|
|
// Carry out all the initial game starting duties.
|
|
PROCESS_PRE_GAME()
|
|
|
|
// Setup widgets. Make sure this is done after PROCESS_PRE_GAME()
|
|
#IF IS_DEBUG_BUILD
|
|
CREATE_WIDGETS()
|
|
#ENDIF
|
|
|
|
sHeistWinnerSceneData.playerLeader = launchData.leaderHandle
|
|
|
|
// Main loop.
|
|
WHILE TRUE
|
|
|
|
MP_LOOP_WAIT_ZERO()
|
|
|
|
// If we have a match end event, bail.
|
|
IF SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE()
|
|
// PRINTLN("[SAC] - SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE(). NOt doing anything though as we want this script to continue during transitions.")
|
|
// SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
// Deal with the debug.
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_WIDGETS()
|
|
#ENDIF
|
|
|
|
// If we need to leave the mission, make sure we just straight to the end stage and terminate the script.
|
|
IF SHOULD_PLAYER_LEAVE_MP_MISSION()
|
|
PRINTLN("[SAC] - SHOULD_PLAYER_LEAVE_MP_MISSION() = TRUE.")
|
|
SET_GAME_STATE(eGAME_STATE_END)
|
|
ENDIF
|
|
|
|
IF GET_SHOULD_END_SCRIPT()
|
|
PRINTLN("[SAC] - GET_SHOULD_END_SCRIPT = TRUE, going to game state end call 0.")
|
|
SET_GAME_STATE(eGAME_STATE_END)
|
|
ENDIF
|
|
|
|
IF NOT g_sTransitionSessionData.bMaintainCelebrationsScript
|
|
PRINTLN("[SAC] - bMaintainCelebrationsScript = FALSE, going to game state end call 7.")
|
|
SET_GAME_STATE(eGAME_STATE_END)
|
|
ENDIF
|
|
|
|
IF HAS_TRANSITION_SESSION_JIPED_FROM_OTHER_SESSION()
|
|
AND SHOULD_TRANSITION_SESSION_KILL_ALL_MP_SCRIPTS()
|
|
PRINTLN("[SAC] - HAS_TRANSITION_SESSION_JIPED_FROM_OTHER_SESSION = TRUE and SHOULD_TRANSITION_SESSION_KILL_ALL_MP_SCRIPTS = TRUE, going to game state end call 8.")
|
|
SET_GAME_STATE(eGAME_STATE_END)
|
|
ENDIF
|
|
|
|
|
|
// Load the heist mocap as soon as possible.
|
|
IF NOT IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE)
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bDoingHeistEndWinnerScene
|
|
IF IS_BIT_SET(sHeistWinnerSceneData.iBitset, HEIST_WINNER_SCENE_INITIALISED_DATA)
|
|
IF LOAD_WINNER_SCENE_MOCAP(sHeistWinnerSceneData)
|
|
PRINTLN("[SAC] - LOAD_WINNER_SCENE_MOCAP = TRUE, setting CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[SAC] - bDoingHeistEndWinnerScene = FALSE, setting CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE.")
|
|
SET_BIT(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_MOCAP_PRE_LOAD_COMPLETE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// So the strip club will load it's assets if required, once the warp to location has completed.
|
|
IF g_TransitionSessionNonResetVars.sGlobalCelebrationData.bBlockStripClubAssets
|
|
IF IS_BIT_SET(iCelebrationGeneralBitset, CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP)
|
|
g_TransitionSessionNonResetVars.sGlobalCelebrationData.bBlockStripClubAssets = FALSE
|
|
PRINTLN("[SAC] - CELEB_GENERAL_BITSET_COMPLETED_PLAYER_PRE_LOAD_WARP bit is set, set bBlockStripClubAssets = FALSE.")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Cut cam to face player if required (base don global set in misison controller.
|
|
MAINTAIN_POINT_AT_PLAYER_CAMERA_CUT()
|
|
|
|
// Maintain cloining players as early as possible.
|
|
MAINTAIN_CLONE_EVERYONE_FOR_HEIST_CELEBRATION_SCREENS(sHeistWinnerSceneData)
|
|
|
|
// Warp to the end of celebration location as soon as possible.
|
|
MAINTAIN_WARP_TO_POST_CELEB_STATS_SHARD_LOCATION()
|
|
|
|
// Draw black rectangle on faded mocaps so screen behind celebration stays black.
|
|
MAINTAIN_DRAW_BLACK_RECTANGLE_FOR_FADED_MOCAP()
|
|
|
|
// Maintain fake rectangle.
|
|
MAINTAIN_RECTANGLE()
|
|
|
|
// Get the apartment interior as early as posisble.
|
|
MAINTAIN_GET_APARTMENT_INTERIOR_INSTANCE_INDEX_EARLY()
|
|
|
|
// Freeze microphone for audio inapartment and strip club finle complete scenes.
|
|
MAINTAIN_FREEZE_MICROPHONE()
|
|
|
|
|
|
// -----------------------------------
|
|
// Process your game logic.....
|
|
SWITCH GET_GAME_STATE(0)
|
|
|
|
// Wait untill the server gives the all go before moving on.
|
|
CASE eGAME_STATE_INI
|
|
|
|
SET_GAME_STATE(eGAME_STATE_RUNNING)
|
|
|
|
BREAK
|
|
|
|
// Main gameplay state.
|
|
CASE eGAME_STATE_RUNNING
|
|
|
|
PROCESS_STAND_ALONE_CELEBRATION_LOGIC()
|
|
|
|
BREAK
|
|
|
|
//Cleans up then terminates the mission
|
|
CASE eGAME_STATE_END
|
|
|
|
SCRIPT_CLEANUP()
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDWHILE
|
|
ENDSCRIPT
|
|
|