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

260 lines
10 KiB
XML
Executable File

// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//
// MISSION NAME : drunk_globals.sch
// AUTHOR : Keith / Alwyn
// DESCRIPTION : Globals required to control drunk peds.
//
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
CONST_INT MAX_NUMBER_OF_DRUNK_REQUESTS 5
CONST_INT MAX_NUMBER_OF_DRUNK_PEDS 16
CONST_INT MAX_NUMBER_OF_DRUNK_NOTICES 16
CONST_INT UNKNOWN_DRUNK_ARRAY_INDEX -1
CONST_INT NO_DRUNK_NOTICES -1
CONST_INT INACTIVE_DRUNK_TIMER -2
CONST_INT DRUNK_DEFAULT_TIMEOUT_msec 30000
CONST_INT DRUNK_LEVEL_NOT_DRUNK 0
CONST_INT DRUNK_LEVEL_CONSTANT -1
// Unique Drunk Ped IDs
CONST_INT NO_UNIQUE_DRUNK_PED_ID -1
CONST_INT UNIQUE_ID_CONTROL_SCRIPT 0 // For generic notices
CONST_INT UNIQUE_ID_PUBLIC_FUNCTIONS 1 // Command from public functions - the control script converts these to UNIQUE_ID_CONTROL_SCRIPT so they get cleaned up next frame after the relevant 'drunk' scripts have had a chance to read them
CONST_INT UNIQUE_ID_ALL_FOLLOWERS 2 // So a leader can inform all followers of his actions
CONST_INT UNIQUE_ID_FIRST_UNIQUE_ID 100 // All new drunk peds will get a unique ID from this value upwards
INT g_nextUniqueDrunkPedID = UNIQUE_ID_FIRST_UNIQUE_ID
INT g_drunkRequestsPending = 0
BOOL g_bHANGOVER_WAKEUP_BROWSER_OPEN_KILLSWITCH = FALSE
ENUM g_eDrunkStatus
// Script Control
DS_REQUEST_SCRIPT, // Used when the 'drunk' script has been requested but is not yet loaded
// Long-Term Target
DSLT_PLAYER_CONTROLLED, // Used when the ped is being controlled by player input
DSLT_GET_INTO_VEHICLE, // Used when an AI's leader is sitting in a vehicle
DSLT_HANGOVER_WAKEUP, // Used when the player ped has had too much to drink
// Short-Term Task
DSST_SWITCH_ON_RAGDOLL, // Used when the ped may need to re-activate ragdoll
DSST_WALK, // Used when the ped needs to walk somewhere
DSST_ENTER_VEHICLE, // Used when the ped is trying to get in position to enter a vehicle
DSST_ENTERING_VEHICLE, // Used when the ped has been given a task to enter vehicle
DSST_WARP_INTO_TAXI, // Used when the ped failed to enter taxi normally (taxi doors are locked when player chooses destination)
DSST_SHUFFLE_CARSEATS, // Used when teh ped has been told to shuffle from teh passenger seat to the driver seat
DSST_IN_VEHICLE, // Used when the ped is sitting in a vehicle
DSST_LEAVE_VEHICLE, // Used when the ped has been given a task to leave a vehicle
// Generic
DS_IDLE, // Used when the ped is just stumbling aimlessly
// Leave this at the bottom
DS_NO_STATUS
ENDENUM
ENUM g_eDrunkLevel
DL_verydrunk, //"move_m@drunk@verydrunk"
DL_slightlydrunk, //"move_m@drunk@slightlydrunk"
DL_moderatedrunk, //"move_m@drunk@moderatedrunk"
// Leave this at the bottom
DL_NO_LEVEL = -1
ENDENUM
// -----------------------------------------------------------------------------------------
// Drunken Requests globals
// -----------------------------------------------------------------------------------------
STRUCT g_sDrunkRequests
g_eDrunkStatus status // Current status of the drunk request
PED_INDEX ped // The ped getting drunk
INT ragdoll_msec // How long should the ped ragdoll for
INT overall_msec // How long other drunk effects should remain active for
VEHICLE_INDEX vehicle // The vehicle the ped either owns or is trying to get into
ENDSTRUCT
// The number of peds requesting to become drunk at the same time
g_sDrunkRequests g_drunkRequests[MAX_NUMBER_OF_DRUNK_REQUESTS]
// -----------------------------------------------------------------------------------------
// Drunken Ped globals
// -----------------------------------------------------------------------------------------
STRUCT g_sDrunkPeds
INT uniqueID // Unique ID for this drunk ped (for posting and receiving notices)
PED_INDEX myPedIndex // PED_INDEX for this drunk ped
g_eDrunkLevel eDrunkLevel //drunken level (#1341523)
INT iAlcoholHit, iWeedHit
ENDSTRUCT
// Control Details for all drunk peds
g_sDrunkPeds g_drunkPeds[MAX_NUMBER_OF_DRUNK_PEDS]
// -----------------------------------------------------------------------------------------
// Drunken Noticeboard globals
// -----------------------------------------------------------------------------------------
ENUM g_eDrunkNoticeIDs
DNID_STILL_DRUNK, // Sent by 'drunk' each frame. Informs 'control' that drunk script for ped is still active.
DNID_BECOME_SOBER, // Sent by 'control' script. Informs 'drunk' script that it should terminate.
DNID_EXTENDED_TIME, // Sent by 'control' script. Informs 'drunk' script that effects other than ragdolling should last a bit longer.
DNID_HIT_ALCOHOL, //
DNID_HIT_WEED, //
DNID_IN_VEHICLE, // Sent by 'drunk' script. Informs 'followers' that this drunk ped in now in a vehicle.
// Leave this at the bottom
DNID_NO_DRUNK_NOTICE
ENDENUM
STRUCT g_sDrunkNoticeboard
INT poster // notice poster ID
INT reader // target ID for notice
g_eDrunkNoticeIDs notice // message ID for notice
PED_INDEX pedIndex // ped parameter for notice
INT intval // int parameter for notice
INT inthit // int parameter for number of hits
ENDSTRUCT
g_sDrunkNoticeboard g_drunkNotices[MAX_NUMBER_OF_DRUNK_NOTICES]
// -----------------------------------------------------------------------------------------
// Drunken Camera globals
// -----------------------------------------------------------------------------------------
FLOAT g_drunkenCinematicCamMultiplier = 1.0
BOOL g_drunkCameraActive = FALSE
CAMERA_INDEX g_drunkCameraIndex = NULL
INT g_drunkCameraTimeout = DRUNK_LEVEL_NOT_DRUNK // Roughly when the effects should wear off
INT g_drunkCameraTimeoutDuration = DRUNK_DEFAULT_TIMEOUT_msec // Amount of time to spend gradually timing out the drunk gameplay cam
FLOAT g_drunkCameraMotionBlur = 0.0 // Amount of blur to apply to the drunk gameplay cam
FLOAT g_drunkCameraActualAmplitudeScalar = 0.0 // Amount of shake amplitude to apply to the drunk gameplay cam
FLOAT g_drunkCameraDesiredAmplitudeScalar = 0.0 // Amount of shake amplitude to apply to the drunk gameplay cam
FLOAT g_drunkCameraEffectStrength = 1.0
FLOAT g_drunkCameraTimeCycleModifier = 0.0
TEXT_LABEL g_drunkCameraTimeCycleName = ""
TEXT_LABEL_63 g_drunkAudioSceneName = ""
TEXT_LABEL g_drunkAudioSceneScript = ""
// -----------------------------------------------------------------------------------------
// Drunken Player globals
// -----------------------------------------------------------------------------------------
BOOL g_playerRequestedToBeDrunk = FALSE // TRUE when the request to make the player drunk appears, FALSE once the player IS drunk, or can't be made drunk
BOOL g_playerIsDrunk = FALSE // TRUE when the player has become drunk, FALSE at all other times - including when the player has been requested to be drunk
BOOL g_isPlayerDrunk = FALSE // TRUE when the player has become drunk, FALSE at all other times - including when the player has been requested to be drunk
INT g_iPlayerDrunkCount = 0
// -----------------------------------------------------------------------------------------
// Drunken Player wakeup
// -----------------------------------------------------------------------------------------
ENUM g_eDrunkWakeupCutscene
DWC_MICHAEL_mansion,
DWC_MICHAEL_trailer,
DWC_FRANKLIN_city,
DWC_FRANKLIN_hills,
DWC_TREVOR_trailer,
DWC_TREVOR_beach,
DWC_TREVOR_stripclub,
// Leave this at the bottom
DWC_NO_DRUNK_WAKEUP_CUTSCENE
ENDENUM
#IF IS_DEBUG_BUILD
// -----------------------------------------------------------------------------------------
// Debug globals
// -----------------------------------------------------------------------------------------
WIDGET_GROUP_ID g_wDrawDebugDrunkInfo
// Requests
INT g_widgetDrunkRequestStatusAsInt[MAX_NUMBER_OF_DRUNK_REQUESTS]
// Peds
INT g_widgetUniqueID[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetLongTermStatusAsInt[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetShortTermStatusAsInt[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetDrunkLevelAsInt[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetTimerA[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetRagdolling[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetOverall[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetActivity[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetFailsafe[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetSteering[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetAlcoholHitCount[MAX_NUMBER_OF_DRUNK_PEDS]
INT g_widgetWeedHitCount[MAX_NUMBER_OF_DRUNK_PEDS]
BOOL g_widgetMakePlayerDrunk_60s = FALSE
BOOL g_widgetMakePlayerDrunk_constant = FALSE
BOOL g_widgetExtendPlayerDrunkTime_30s = FALSE
BOOL g_widgetMakePlayerSober = FALSE
BOOL g_widgetPlayerTakesAlcoholHit = FALSE
BOOL g_widgetPlayerTakesWeedHit = FALSE
BOOL g_widgetPlayerHangoverWakeup = FALSE
BOOL g_widgetCreateDrunkPedOne = FALSE
BOOL g_widgetCreateDrunkPedTwo = FALSE
PED_INDEX g_widgetDrunkPedOne = NULL
PED_INDEX g_widgetDrunkPedTwo = NULL
BOOL g_widgetActivateDrunkCamera_60s = FALSE
BOOL g_widgetActivateDrunkCameraConstant = FALSE
BOOL g_widgetQuitDrunkCameraNow = FALSE
BOOL g_widgetQuitDrunkCameraGradual = FALSE
BOOL g_bDrawDebugDrunkInfo = FALSE
BOOL g_bIncrementDrunkModifier[5]
BOOL g_isDrunkCameraActive = FALSE
#ENDIF
#IF FEATURE_CASINO_HEIST
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_SPECIAL_FORTUNE_ACTIVE 0
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_WEATHER 1
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_FEDS 2
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_TRUE_LOVE 3
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_BOUNTY 4
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_MERRY_WEATHER 5
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_MERRY_WEATHER_SENT 6
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_MUGGER 7
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_PEYOTE 8
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_DRANK_PEYOTE 9
CONST_INT ARCADE_FORTUNE_GLOBAL_BS_AIRSTRIKE 10
INCIDENT_INDEX g_iFortuneIncident
INT g_iArcadeFortuneBS = 0
SCRIPT_TIMER g_stArcadeFortuneTimer
SCRIPT_TIMER g_stArcadeFortuneCooldownTimer
#ENDIF