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

244 lines
12 KiB
XML
Executable File

// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//
// MISSION NAME : randomChar_globals.sch
// AUTHOR : Keith
// DESCRIPTION : Random Character Globals.
//
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
CONST_FLOAT RC_BRAIN_COMMS_OVERRIDE_RANGE 50.0
CONST_FLOAT RC_BRAIN_ACTIVATION_RANGE_NORMAL 100.0
CONST_FLOAT RC_BRAIN_ACTIVATION_RANGE_EXTRA 209.0 // must be less than 210.0 //increased from 150.0 to fix bug 904887
CONST_FLOAT RANDOMCHAR_ACTIVATE_MISSION_RANGE 12.0
CONST_FLOAT RC_BECKON_ANIM_DISTANCE 20.0
CONST_INT RC_MAX_SCENE_PEDS(6)
CONST_INT RC_MAX_SCENE_VEHS(5)
CONST_INT RC_MAX_SCENE_OBJS(6)
CONST_INT RC_MAX_FOW_VISIBLE_BITSETS(2)
// ENUM List of Random Character mission strands for GTA5
ENUM g_eRC_MissionStrands
RCS_ABIGAIL,
RCS_BARRY,
RCS_DREYFUSS,
RCS_EPSILON,
RCS_EXTREME,
RCS_FANATIC,
RCS_HAO,
RCS_HUNTING,
RCS_JOSH,
RCS_MAUDE,
RCS_MINUTE,
RCS_MRS_PHILIPS,
RCS_NIGEL,
RCS_OMEGA,
RCS_PAPARAZZO,
RCS_RAMPAGE,
RCS_THELASTONE,
RCS_TONYA,
NO_RC_STRAND
ENDENUM
// ENUM List of Random Character sub mission groups for GTA5
ENUM g_eRC_MissionGroupIDs
RC_GROUP_BARRY_3, // Barry 3A-3E
RC_GROUP_NIGEL_1, // Nigel 1A-1E
RC_GROUP_PAPARAZZO_3, // Paparazzo 3A + 3B
// Leave these at the bottom in this order
MAX_RC_MISSION_GROUPS,
NO_RC_MISSION_GROUP
ENDENUM
// ENUM List of Random Character flags for GTA5
ENUM g_eRC_FlagIDs
RC_FLAG_ACTIVATED, // Allows the mission to start checking the trigger conditions
RC_FLAG_ACTIVATED_IN_FLOW, // Flagged as activated in the flow
RC_FLAG_READY_TO_PLAY, // Mission can start when trigger conditions are met (eg. initial delay expired, mission flow flag set, etc.)
RC_FLAG_COMPLETED, // Player has passed the random character mission
RC_FLAG_BLIP_HELP_DISPLAYED, // Help text has been displayed for rc blip
RC_FLAG_STATWATCHER_RUNNING //used to ensure stat watcher launches happen in the right order for RC missions
ENDENUM
ENUM g_eRC_BlipState
RC_BLIP_TURNED_OFF,
RC_BLIP_READY_TO_PLAY,
RC_BLIP_READY_TO_TRIGGER
ENDENUM
ENUM g_eRC_TriggerEntity
RC_TRIG_CHAR, // Player is near a specified character
RC_TRIG_NEAR_VEHICLE, // Player is near a specified vehicle
RC_TRIG_ENTER_VEHICLE, // Player enters a specific vehicle
RC_TRIG_LOCATE_POINT, // Player gets within activation range of specified coords
RC_TRIG_LOCATE_AXIS, // Player enters axis aligned locate
RC_TRIG_LOCATE_NONAXIS, // Player enters non-axis aligned locate
RC_TRIG_NOT_SET
ENDENUM
/// PURPOSE: used the the Eyefind News Story feed to check which stories are relevant
ENUM g_eRC_IfindNewsStoryBits
RC_NWS_DREYFUSS_KILLED_DREY = 0, // set if Dreyfuss is killed in Dreyfuss1.sc
RC_NWS_EPS_STOLEN_CASH, // set if Michael steals the money in Epsilon8.sc
RC_NWS_NGLA_KILLED_WILLIE, // set if Willie was killed in Nigel1A.sc
RC_NWS_NGLB_KILLED_TYLER, // set if Tyler was killed in Nigel1B.sc
RC_NWS_NGLD_KILLED_MARK, // set if Mark was killed in Nigel1D.sc
RC_NWS_NGL3_DINAPOLI_NOT_KILLED_BY_TRAIN, // set if Di Napoli doesn't get killed by the train
RC_WEB_VISITED_COM_SITE
ENDENUM
// -----------------------------------------------------------------
// UNSAVED DATA
// -----------------------------------------------------------------
// State the RC idle animations can be in before the mission is triggered
ENUM RC_LAUNCHER_ANIM_STATE
LAS_INACTIVE, // Animations not set up or they have all played
LAS_DONE_SETUP, // Check animations have been setup
LAS_PLAYING_IDLE, // RC ped is playing main idle anim
LAS_WAITING_FOR_BECKON, // Trigger beckon animation
LAS_PLAYING_PRE_LEAD_IN, // RC ped is turning to player
LAS_TURNING_TO_PLAYER
ENDENUM
// STRUCT containing the information used for RC characters to play animations before the mission is launched
STRUCT RC_LAUNCHER_ANIMS
STRING sDictionary
STRING sIdleAnim
STRING sBeckonAnim
RC_LAUNCHER_ANIM_STATE eState
BOOL bBeckonPerformed
VECTOR vAnimPos
VECTOR vAnimRot
ENDSTRUCT
// ENUM containing states for handling stopping & restarting conversation to avoid subtitles overwriting god text
ENUM RC_CONV_RESTORE_STATE
RC_CONV_IDLE,
RC_CONV_STOP_CURRENT_CONV,
RC_CONV_RESTART_WITHOUT_SUBS,
RC_CONV_RESTORE_WAIT_FOR_NO_TEXT,
RC_CONV_RESTART_WITH_SUBS
ENDENUM
// STRUCT containing the initial RC scene vars. This gets passed into an RC script when launched.
// The RC Character / Object will always be in Index 0 of the arrays
// If changing this, please modify RC_TakeEntityOwnership() and RC_CleanupSceneEntities() to accommodate them
STRUCT g_structRCScriptArgs
g_eRC_MissionIDs eMissionID // ID of the mission
TEXT_LABEL_31 sScriptName // Actual name of the script to launch
TEXT_LABEL_23 sIntroCutscene // Name of intro cutscene to preload.
FLOAT activationRange // The range at which the mission triggers
g_eRC_TriggerEntity triggerType // What does the player have to get close to, so that the mission triggers
VECTOR triggerLocate[2] // Used to store trigger positions and locates
FLOAT triggerWidth // Used for non-axis aligned locates
BOOL bPedsCritical // Deactivate mission when scene peds are attacked
BOOL bVehsCritical // Deactivate mission when scene vehicles are attacked
BOOL bAllowVehicleActivation // Allows the mission to be activated when already in a non-scene vehicle
PED_INDEX pedID[RC_MAX_SCENE_PEDS]// Initial scene peds - if RC is a char trigger, it will always be index 0
VEHICLE_INDEX vehID[RC_MAX_SCENE_VEHS]// Initial scene vehicles - if the RC is a vehicle trigger, it will always be index 0
OBJECT_INDEX objID[RC_MAX_SCENE_OBJS]// Initial scene props
RC_LAUNCHER_ANIMS sAnims // Animations required by peds setup in the RC launcher
INT iSyncSceneIndex // Index to the synced scene if one is necessary
INT iConversationTimer // Delay before the next ambient pre-launch conversation
ENDSTRUCT
// STRUCT containing Random Character static mission details
STRUCT g_structRCMissionsStatic
// These vars have been setup in a static struct as they will not change
// throughout the game. Scripts should use the look-up func to obtain the
// static mission details.
STRING rcScriptName // Random Character Mission Filename
TEXT_LABEL_7 tRCNameLabel // Text label for looking up the name of this RC mission
INT rcStatVariation // The variation of the stat ID for bugstar and playstat tracking.
g_eRC_MissionStrands rcStrandID // Random Character Mission Strand
g_eRC_MissionGroupIDs rcMissionGroup // The Random Character mission group that this mission belongs to
VECTOR rcCoords // Random Character Blip Coords
BLIP_SPRITE rcBlipSprite // Which blip sprite to use - needed more than male / female
TEXT_LABEL_15 rcBlipHelp // Which help text we should display when the blip first becomes active
FLOW_FLAG_IDS rcFlowFlagReq // A flow flag requirement for the Random Character to become ready
INT rcHoursToWaitReq // A time delay from when the Random Character mission gets Activated to when it can become Ready To Play
TEXT_LABEL_23 rcAmbientPassScript // An ambient script to launch when the Random Character mission passes
CC_CodeID rcPassCodeID // A code ID referencing a custom block of script to be executed when the RC mission is passed.
BOOL rcMustBeActivatedInFlow // A flow activation requirement for the Random Character to become ready
g_eRC_MissionIDs rcNextMission // A Random Character mission that should be Activated when the mission passes
g_eRC_MissionGroupIDs rcNextMissionGroup // A group of Random Character missions that should be Activated when the mission passes
INT rcPlayableChars // Bitset used to store which characters can trigger the mission - BIT_MICHAEL, BIT_TREVOR, BIT_FRANKLIN.
INT rcStartTime // The time of day that the random char becomes available
INT rcEndTime // The time of day that the random char is no longer available
BOOL bRCRepeatable // Can this RC mission be repeat played?
BOOL bBlockedInExile // Can this RC mission launch when Michael and Trevor are Exile?
BOOL bUsesShitSkips // Does this RC mission offer a shitskip if a section is failed 3 times?
ENDSTRUCT
// STRUCT containing Random Character dynamic mission details
STRUCT g_structRCMissionsDynamic
BOOL rcTerminateLauncher // TRUE if the Random Character Launcher that started this mission should terminate
BOOL rcIsAwaitingTrigger // TRUE if the Random Character mission is awaiting player trigger - RESET FLAG
BOOL rcForceStateUpdate // TRUE if the Random Character Controller should update the RC missions state - RESET FLAG
BOOL rcLeaveAreaCheck // TRUE if the Random Character mission should check for the player leaving the area
BOOL rcIsRunning // TRUE if the Random Character mission is currently running
BOOL rcPassed // TRUE if the Random Character mission has passed whilst the script is running
BOOL rcFailed // TRUE if the Random Character mission has failed whilst the script is running
g_eRC_BlipState rcBlipState // The current state of the blip - off, ready to play, ready to trigger
INT rcBlipIndex // The index of the random character blip array
INT rcMissionCandidateID // Candidate ID required for requesting mission launch
ENDSTRUCT
// An array of Random Character Mission data - unsaved
g_structRCMissionsDynamic g_RandomChars[MAX_RC_MISSIONS]
#IF IS_DEBUG_BUILD
g_eRC_MissionIDs g_eDebugLaunchingToRCMission = NO_RC_MISSION
#ENDIF
// -----------------------------------------------------------------
// SAVED DATA
// -----------------------------------------------------------------
// STRUCT containing Random Character mission details that need to be saved
STRUCT g_structSavedMissionsRC
INT rcFlags // Bitset used to contain all the random character mission flags (see g_eRC_FlagIDs enum)
BOOL rcTimeReqSet // If the time delay has been set
TIMEOFDAY rcTimeReq // The game time that the Random Character can become Ready To Play
INT iCompletionOrder // The order that missions were completed. Used by repeat play to set gameflow
INT iFailsNoProgress // Number of times mission has been failed without progressing to next checkpoint (used for shitskips)
FLOAT fStatCompletion // awarded percentage from stat system, is equivalent to medal value
ENDSTRUCT
STRUCT g_structSavedVarsRC
g_structSavedMissionsRC savedRC[MAX_RC_MISSIONS]
INT savedRCEvents
INT iRCMissionsCompleted // The number of RC missions the player has completed. Used for repeat play
INT g_iCurrentEpsilonPayment // The amount of money that the player has donated to Epsilonism (reset on each request)
INT g_iWebsiteQueryBit // Used to determine whether an Ifind story should be displayed on the Ifind home page
INT g_iREDomesticCompOrder // Used to determine when RE Domestic was completed to know when to unlock a message on Lifeinvader
BOOL g_bFanaticHelp // First time stamina help message on playing Fanatic mission
BOOL g_bFanaticStamina // Second time stamina help message on playing Fanatic mission
BOOL g_bFanaticCheated // Used in Fanatic missions to have dialogue about player previously cheating
BOOL g_bFinalEpsilonPayment // Whether the player has paid $ to start the final Epsilon mission
BOOL g_bStoleEpsilonCash // Whether the player stole the Epsilonists money
BOOL g_bTriggeredHao1 // Whether the player has ever triggered Hao 1
INT g_iVisibleInFOWBitset[RC_MAX_FOW_VISIBLE_BITSETS] // A bit for each RC mission tracking if their location has been revealed in the FOW.
ENDSTRUCT
INT g_iNoRCLeadinsActive = 0