Files
gtav-src/script/dev_ng/singleplayer/include/globals/replay_globals.sch
T
2025-09-29 00:52:08 +02:00

155 lines
8.5 KiB
XML
Executable File

USING "Clock_Globals.sch"
USING "flow_commands_enums_GAME.sch"
USING "charsheet_global_definitions.sch"
USING "player_ped_globals.sch"
// *****************************************************************************************
//
// MISSION NAME : replay_globals.sch
// AUTHOR : Andy Minghella
// DESCRIPTION : Replay globals.
// NOTES : Replay related non-saved globals
//
// *****************************************************************************************
CONST_INT MAX_RESTRICTED_VEHICLES 7
CONST_FLOAT REPLAY_LOAD_SCENE_SIZE 4500.0
CONST_FLOAT REPLAY_LOAD_SCENE_SIZE_INTERIOR 500.0
CONST_INT REPLAY_LOAD_SCENE_TIMEOUT 20000
CONST_INT REPOP_EARLY_OUT 1000
CONST_INT REPOP_MIN_WAIT 10
ENUM REPLAY_WARP_STAGE
RWS_WAIT,
RWS_START,
RWS_START_LOAD,
RWS_DO_WARP,
RWS_POST_WARP,
RWS_REPOPULATE,
RWS_DONE
ENDENUM
REPLAY_WARP_STAGE g_eReplayWarpStage
VECTOR g_eReplayWarpPos
FLOAT g_eReplayWarpHeading
// Replay Setup Progression Stages
ENUM g_eReplayStages
RS_DO_BLUR, // Show fail reason and fade the screen out
RS_SCREEN_DEFAULT, // Show default replay screen + wait for input.
RS_SCREEN_FORCE_RESTART, // Show force restart replay screen + wait for input.
RS_SCREEN_RESTART_CONFIRMATION, // Show restart confirmation screen + wait for input.
RS_SCREEN_REJECT_CONFIRMATION, // Show rejection confirmation screen + wait for input
RS_SCREEN_SKIP_CONFIRMATION, // Show skip confirmation screen + wait for input
RS_SCREEN_FAIL_ONLY, // Show fail only screen + wait for input.
// if any new wait for screen stages are added, add them to IsReplayWaitingForReplayScreen()
RS_ACCEPTING, // the player has accepted replay: this state cleans up the mission
RS_REJECTING, // the player has rejected replay: this state cleans up the mission
RS_ACTIVATE, // Activation is in progress for a replay
RS_ACTIVE, // A replay is in progress
RS_REJECTED, // Player has rejected replay to get mission flow running properly again
// debug only states
#IF IS_DEBUG_BUILD
RS_WAITING_FOR_FLOW, // This state is entered when debug menu force cleanup is triggered
// to prevent the mission currently being played from offering a replay just before flow setup begins
#ENDIF
RS_NOT_RUNNING, // Replay controller has shutdown
// Leave this at the bottom
RS_NOT_REQUIRED
// If stages are added that are non-processing stages, add them to IS_REPLAY_BEING_PROCESSED()
ENDENUM
ENUM g_eReplayTypes
// These replay types use the story mission launchers
// (add to DoesThisReplayTypeUseStoryMissionLauncher)
REPLAY_TYPE_MISSION,
REPLAY_TYPE_MISSION_FORCE_RESTART,
REPLAY_TYPE_FAIL_SCREEN_ONLY,
REPLAY_TYPE_PHONECALL_TRIGGER, // story mission that triggers via phonecall the player can receive from anywhere
REPLAY_TYPE_MICHAEL_EVENT, // (like missions but no shitskips + warp player back to start pos if retry from beginning)
// other replay types
REPLAY_TYPE_MINIGAME,
REPLAY_TYPE_RANDOM_CHARACTER
// If you add a new replay type and you want it to use shitskips- add it to IsShitskipUsedInThisReplayType()
ENDENUM
ENUM REPLAY_BITS
RB_FAIL_EFFECT_TRIGGERED, // Has the replay controller triggered the fail effect
RB_FAIL_OUT_EFFECT_TRIGGERED, // Has the replay controller triggered the fail out effect
RB_PAUSED_GAME, // Has the replay controller paused the game?
RB_PAUSED_FEED, // Has the replay controller paused the feed?
RB_DISABLED_SELECTOR, // Has the replay controller disabled the character select wheel?
RB_DISABLED_VEH_CONT, // this gets set if the player fails a mission in an upside down vehicle
RB_AUDIO_LOADED, // has the fail screen audio loaded?
RB_QUESTION_SETUP, // used to only setup the question in the scaleform once (or when it changes)
RB_BUTTONS_SETUP, // used to only setup the button prompts in scaleform once (or when they change)
RB_TEXT_SCALE_LOADED, // used to reset the scaleform movie the once it has loaded (to prevent other text appearing)
RB_WEAPON_SELECT_DISABLED, // Has replay controller disabled weapon select
RB_BLOCKED_DEATH_JINGLE, // Has the replay controller blocked the death jingle?
RB_REPLAY_SCENE_STARTED, // Has the replay controller started the replay screen audio scene?
RB_REPLAY_SETUP_STARTED, // Is a replay currently being set up? (Used by the new warp system)
RB_DO_VEHICLE_REPOP, // Used in replay setup- do we want to wait for the vehicle repopulation to refill?
RB_FROZEN_PLAYER, // Has the replay controller frozen the player?
RB_TRIGGERED_SLO_MO, // Has the replay controller triggerd the slow motion effect?
RB_DID_WE_EVER_SHITSKIP, // Has the player ever shitskipped while playing this mission
RB_BLOCK_DAMAGE_OVERLAY, // Has the replay controller blocked the damage overlay?
RB_SET_INVINCIBLE, // Has the replay controller set the player as invincible?
RB_STARTED_TRANSITION, // Have we triggered the message transition (moving failed up the screen)
RB_DONE_TRANSITION, // Have we completed the message transition (moving failed up the screen)
RB_2ND_TEXT_SETUP, // Have we updated the secondary fail text?
RB_BLOCKED_LOAD_SCREEN, // Have we blocked the loading screen
RB_FULLY_INTERIOR, // Is the checkpoint we are setting up in an interior with no view of outside? (used to stream smaller area)
RB_BLOCK_RESPAWN // Stops the respawn controller from taking over the
ENDENUM
STRUCT g_structReplayVariables
g_eReplayStages replayStageID // Replay Setup stage
INT replayCoreVarsIndex // Index into the core vars array for this mission details (also used by RC missions to store the RC mission ID as an int)
INT replayStageReadOnly // This is a copy of the g_replayMissionStage that gets read during the mission but not written to (writes go to the main variable)
TEXT_LABEL_31 replayScriptName // The name of the script this replay needs to fire off. Only used for oddjob or minigame replays.
g_eReplayTypes replayType // An enum to determine whether the replay is configured for a mission, minigame, or RC mission.
INT iReplayInt[3] // Array of integers that can be used by missions to ensure consistency when replaying the mission
SCALEFORM_INDEX mFailTextScaleform // the index to the scaleform movie used to draw the fail screen text
SCALEFORM_INDEX mFailButtonsScaleform // the index to the scaleform movie used to draw the fail screen button prompts
INT iFailSoundID // sound ID used to play / stop fail audio
INT iFailBedSoundID // sound ID used to play / stop fail bed audio
INT iReplayBits // bitset used to store all replay controller bools
enumCharacterList eReplayRejectCharacter // used if this mission must force the player to be a certain character when rejected
VEHICLE_INDEX mRestrictedVehicles[MAX_RESTRICTED_VEHICLES] // we store vehicle indexes for restricted vehicles so we can make sure snapshot system doesnt recreate them when replay rejected
FLOAT fTextTransitionTime // used for timing start and end of text transition
VECTOR vVehicleVelocity // used to restore the velocity when rejecting a replay and not warping
ENDSTRUCT
// Replay control globals
g_structReplayVariables g_replay //The main struct
BOOL g_bLaunchMinigameReplay // Informs all minigame controllers that a minigame replay is ready to launch.
// Launchers can check the value of g_replay.replayScriptName to see which launcher needs to run the replay.
// Also used to get rampage launcher to behave correctly
BOOL g_bReplayDoRejectWarp // Used to set player position after a replay is rejected
BOOL g_bSkipFailScreen // If true we skip over the fail screen completely (Used in agency heist missions if player rejects them via phonecall)
#IF IS_DEBUG_BUILD
INT g_iSkipFailScreenTime // Added to avoid instantly skipping fail screen when F-failing
BOOL g_bDebugSkipReplayScreen //Flag used by F/J skip system to skip mission fail screens.
BOOL g_bDebugDisableFailScreen
INT g_iMetricsTrackingStage // added so we can have more metrics stages than replay stages in missions
#ENDIF
// Mid Mission Stage - mission specific
// Not part of the replay struct because this variable shouldn't get reset when
// the replay control variables get reset otherwise valid data will get lost.
// Whether replay or not, mission should update this when the player passes a checkpoint
INT g_replayMissionStage = 0