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

601 lines
19 KiB
XML
Executable File

USING "globals_sp_dlc_feature_flags.sch"
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//
// MISSION NAME : ambient_globals.sch
// AUTHOR : Keith
// DESCRIPTION : This is the globals file containing all single player ambient globals.
// It will be automatically included when Globals.sch is used
// within any single player scripts.
//
// Any global scripts included within here should split it's data
// into saved and unsaved data. The saved data should be packaged
// up in one struct so that it can be easily added to the Saved
// Globals struct contained within SP_Globals_Saved.sch.
//
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
// Global BOOL to indicate that the player is currently on a rampage mission
// IS_CURRENTLY_ON_MISSION_TO_TYPE() will be TRUE
BOOL g_bIsOnRampage = FALSE
// Global BOOL used to force shutdown the cable car script externally
BOOL g_bForceNoCableCar = FALSE
// Global BOOL used to force shutdown the ambient ufo script externally
BOOL g_bForceNoAmbientUFO = FALSE
// Global BOOL used by the Chop ambient script to detect when the player is about to ride the cable car
BOOL g_bIsOnCableCar = FALSE
// Global BOOL to allow a debug HOLD state for Random Event worldpoint scripts
BOOL g_bHoldRandomEventForSelection = FALSE
// Global BOOL to disable the military base script
BOOL g_bDisableArmyBase = FALSE
// Global BOOL to disable the Prison script
BOOL g_bDisablePrison = FALSE
// Global BOOL used to check the medals. This has to be used or i'll have to include loads of stuff from achievement controller into mission_stat_public.sch
// This gets set back to false once the achievement_controller has checked it - this is not saved
BOOL g_bCheckSolidGoldBabyAchievement = FALSE
// Disabled calls to REGISTER_NOIR_LENS_EFFECT in noirEffects.sch
BOOL g_bDisableNoirLensEffect = FALSE
// Debug global bools
#IF IS_DEBUG_BUILD
BOOL g_bDontResetCompletionOnDebugLaunch = FALSE
BOOL can_cleanup_script_for_debug // Used so random scipts can instantly clean up assets for the debug menu
#ENDIF
MODEL_NAMES g_eAmbientModelSuppress[10]
BOOL g_bAmbientModelSuppressVehicle[10]
INT g_iAmbientModelSuppressTimer[10]
BOOL g_bAmbientModelSuppressActive
// Stores the current active safehouse activity
ENUM SAFEHOUSE_ACTIVITY_STATE
SA_NONE,
SA_FRANKLIN_SOFA,
SA_MICHAEL_BEER,
SA_MICHAEL_SOFA,
SA_TREVOR_BEER,
SA_MICHAEL_SHOTS,
SA_TREVOR_SHOTS
ENDENUM
SAFEHOUSE_ACTIVITY_STATE g_eCurrentSafehouseActivity = SA_NONE
CONST_FLOAT SOFA_TRIGGER_DIST 3.0
// Random event globals
CONST_INT TEMP_DELAY -1
FLOAT RE_BLIP_SCALE = 0.6
//Time delay for update
CONST_INT CONST_AmbEventUpdate 600
// Timestamp to limit number of ambient events running
INT g_iLastSuccessfulAmbientLaunchTime
// for stepping through each variation when launched through the debug menu
//INT g_iDrunkDriverEventVariation = 0
//INT g_iGangVictimEventVariation = 0
//INT g_iShopRobberyEventVariation = 0
//INT g_iHitchLiftsEventVariation = 0
//INT g_single_player_basejump = 0
//INT g_iPrisonerLiftEventVariation = 0
//INT g_iSecurityVanEventVariation = 0
#IF IS_DEBUG_BUILD
TEXT_LABEL_23 g_sLastRandomEventScript = "NULL"
#ENDIF
//BOOL g_bKillAllAmbience = TRUE
BOOL g_bMilitaryWantedLevelSuppressedByMenu
// Activity globals
BOOL g_bActivityLaunchedFromDebugMenu
// Global INT for re_hitch_lift mission
//INT g_iHitchLiftStage = 0
// Tasklist mission globals
//BOOL CONTACT_1_ACTIVATED = FALSE, TREVOR_GOALS_ACTIVATED = FALSE
BOOL CHECKED_OFF_KILLS[3]
BOOL CHECKED_OFF_GANG_PHOTOS[3]
//BOOL SHOOT_PEDS_FROM_BIKE[3]
// Global to force emrgencyCall onto answer phone/engaged
BOOL g_bForceEmergencyCallAnswerphone
INT g_iRECandidateID = -1
// Global enum to check current TV channel
ENUM TV_CHANNEL
TV_CHANNEL_NONE,
TV_CHANNEL_CNT,
TV_CHANNEL_WEAZEL,
TV_CHANNEL_END
ENDENUM
ENUM TV_LOCATION
TV_LOC_NONE = -1,
TV_LOC_FRANKLIN_LIVING = 0,
TV_LOC_FRANKLIN_VINEWOOD = 1,
TV_LOC_TREVOR_TRAILER = 2,
TV_LOC_TREVOR_VENICE = 3,
TV_LOC_MICHAEL_PROJECTOR = 4,
TV_LOC_JIMMY_BEDROOM = 5,
TV_LOC_GUN_CLUB = 6,
TV_LOC_END = 7
ENDENUM
/// PURPOSE: Holds global variables to control and query TV functionality. STEVE R. LDS
STRUCT TV_STRUCT
INT iTVChannelType // Stored TV channel type for this TV
INT iTVChannelPlaylist // Stored TV channel playlist for this TV
BOOL bIsTVOn // TRUE if this TV is on and displaying programmes.
BOOL bForceStartTV // Set this to TRUE to force a TV on (May be redundant - see bForceStartAmbientTV)
BOOL bForceStopTV // Set this to TRUE to force a TV off.
BOOL bForceStartAmbientTV // Set this to TRUE to force a TV on and playing TV ambiently.
BOOL bAvailableForUse // TRUE if the TV script is initialised, and ready for use.
BOOL bIsPlayerControlled // TRUE if the player turned on the TV.
BOOL bTVControlsDisabled // Set this to TRUE to disable the TV's controls, so the player can't manipulate it.
BOOL bStartPlaylistFromBeginning // Set this to TRUE to start a playlist from the beginning.
BOOL bIsIndestructible // Set this to TRUE to make a TV indestructible.
ENDSTRUCT
// Array of TV structures. One for each TV location.
TV_STRUCT g_TVStruct[TV_LOC_END]
// New TV globals
TEXT_LABEL_23 g_sTVPlaybackStartedByThisScript = "NULL"
//BOOL ambient_sprite_blip_active = FALSE
// Forces the current minigame stat tracker to kill itself...can probably go away if/when we move it to use the mission tracker one
BOOL g_bForceKillMGStatTracker
// B*1186007 - Used to reset Chop's happiness if the player kills him
BOOL g_bPlayerHasKilledChop
// B*1502616 - Used by scripts other than chop.sc to check if Franklin is currently interacting with Chop
BOOL g_bPlayerInteractingWithChop
// B*1334659 - Used to tell the Chop script when a safehouse tutorial is active
BOOL g_bSafehouseTutorialIsActive = FALSE
// B*2019260 - Used to tell the Chop script when the player is in a cinema
BOOL g_bPlayerIsInCinema = FALSE
// ------------------------------------------------------------
//
// GLOBALS THAT WILL BE SAVED
//
// ------------------------------------------------------------
STRUCT STUNT_JUMPS
INT iStuntJumpsCompleted
ENDSTRUCT
/*
STRUCT RE_ARREST
BOOL g_cop_killer
ENDSTRUCT
*/
//Kevin Bolt's Garage Door Variables.
INT g_propGarDoorBit // A bit to store locked state of various garage doors for script control.
//Prostitute globals
//═══════════════════════════════════════════════════════════════════════════════
//═════════════════════════════╡ Unsaved data ╞══════════════════════════════════
//═══════════════════════════════════════════════════════════════════════════════
BOOL g_bPlayerHasActiveProstitute
BOOL g_bPlayerCanCallProstitute
BOOL g_bIsProstituteAICustomerActive
//BOOL g_bIsProstitutePimpActive //In a group of prostitutes, keep track if any of them are talking to a pimp
FLOAT g_fDistToClosestProstitute // When near more then one prostitute this will keep track of the closest one
THREADID g_threadIDOfClosestProstitute
ENUM PROSTITUTE_UNIQUE_ENUM
PUN_UNDEFINED = -1,
PUN_BABS = 0,
PUN_DANA,
PUN_LIZZIE,
PUN_AMANDA,
PUN_ASHLEY,
PUN_KRISTEN,
PUN_SASHA,
PUN_JACQUELINE,
MAX_UNIQUE_PROSTITUTES //8
ENDENUM
ENUM UNIQUE_PROSTITUTE_DRAWABLE_COMPONENTS
PRO_COMP_HEAD = 0, //only care about the head texture
PRO_COMP_HAIR, //hair texture
// PRO_COMP_TORSO,
// PRO_COMP_LEG,
NUM_PRO_COMPONENTS
ENDENUM
ENUM UNIQUE_PROSTITUTE_TEXTURE_VARIATIONS
PRO_TEXT_VAR_HEAD = 0, //only care about the head texture
PRO_TEXT_VAR_HAIR, //hair texture
NUM_PRO_TEXTURE_VARIATIONS
ENDENUM
CONST_INT CONST_iMaxNumStoryLines 6 //Num of lines to trigger in D*
//Peyote Animal Pickups
ENUM AnimalPickup
AP_INVALID = -1,
AP_LOWLAND_BOAR,
AP_LOWLAND_CAT,
AP_LOWLAND_COW,
AP_LOWLAND_COYOTE,
AP_LOWLAND_DEER,
AP_LOWLAND_HUSKY,
AP_LOWLAND_MTLION,
AP_LOWLAND_PIG,
AP_LOWLAND_POODLE,
AP_LOWLAND_PUG,
AP_LOWLAND_RABBIT,
AP_LOWLAND_RETRIEVER,
AP_LOWLAND_ROTTWEILER,
AP_LOWLAND_SHEPHERD,
AP_LOWLAND_WESTY,
AP_HIGHLAND_CHICKENHAWK,
AP_HIGHLAND_CORMORANT,
AP_HIGHLAND_CROW,
AP_HIGHLAND_HEN,
AP_HIGHLAND_PIGEON,
AP_HIGHLAND_SEAGULL,
AP_UNDERWATER_DOLPHIN,
AP_UNDERWATER_FISH,
AP_UNDERWATER_KILLERWHALE,
AP_UNDERWATER_SHARKHAMMER,
AP_UNDERWATER_SHARKTIGER,
AP_UNDERWATER_STINGRAY,
AP_SECRET_SASQUATCH,
AP_SECRET_CHOP, // 28
AP_UNDERWATER_HUMPBACKWHALE,
AP_COUNT
ENDENUM
ENUM AnimalPickupType
APT_INVALID = -1,
APT_LOWLAND = 0,
APT_HIGHLAND,
APT_UNDERWATER,
APT_SECRET,
APT_COUNT
ENDENUM
INT g_iAnimalShockingEvent = 0
INT g_iAnimalWaterTimer = 0
BOOL g_bAnimalControllerFakeDeath = FALSE
#IF IS_DEBUG_BUILD
BOOL g_bDebugPeyoteResetProgression = FALSE
BOOL g_bDebugPeyotePickupLabels[APT_COUNT]
BOOL g_bDebugPeyotePickupBlips[APT_COUNT]
AnimalPickup g_eDebugPeyoteAnimalLowland = AP_INVALID
AnimalPickup g_eDebugPeyoteAnimalHighland = AP_INVALID
AnimalPickup g_eDebugPeyoteAnimalUnderwater = AP_INVALID
AnimalPickup g_eDebugPeyoteAnimalSecret = AP_INVALID
AnimalPickupType g_eDebugPeyoteType = APT_INVALID
INT g_iDebugPeyoteIndex = -1
INT g_iDebugPeyoteBlockControllerUntil = 0
#ENDIF
//═══════════════════════════════════════════════════════════════════════════════
//════════════════════════════╡ Data to be saved ╞═══════════════════════════════
//═══════════════════════════════════════════════════════════════════════════════
STRUCT ProstituteSaved
INT iNumTimesEncounteredByPlayer[NUM_OF_PLAYABLE_PEDS]
INT iComponentDrawableVariation[NUM_PRO_COMPONENTS]
INT iComponentTextureVariation[NUM_PRO_TEXTURE_VARIATIONS]
INT iModelType
ENDSTRUCT
//End Prostitute Data
CONST_INT MAX_HUNT_CHALLENGE 3
CONST_INT NUMBER_OF_LETTER_SCRAPS 50 // Hidden packages
CONST_INT NUMBER_OF_SPACESHIP_PARTS 50
// Hidden packages globals
STRUCT GLOBAL_SCRAP_DATA
INT iScrap0to31
INT iScrap32to63
BOOL bMissionActive
ENDSTRUCT
ENUM NOIR_EFFECTS_STATUS
NOIR_OFF,
NOIR_FILTER_0,
NOIR_FILTER_1
ENDENUM
STRUCT g_ambientSavedData
// RE_ARREST ReArrest
STUNT_JUMPS stuntJumps
ProstituteSaved sProstituteData[MAX_UNIQUE_PROSTITUTES] //These are the 8 UNIQUE BACKSTORY Prostitues
INT iNumTimesPlayerPaidForProstituteServices[3] //B*1416861 - This is all time prostitutes
INT iChopHintsDisplayed
INT iWardrobeHintsDisplayed
INT iBridgesFlownUnderFlags
INT iBridgesFlownUnderFlags2
INT iBridgesFlownUnderFlags3
INT iWildlifePhotographsFlags
INT iChaseHelpTextDisplayed_mission
INT iChaseHelpTextDisplayed_RC
INT iChaseHelpTextDisplayed_RE
INT iEpsilonCarStage // Epsilon 3
INT iEpsilonLastEmailSentDay // Epsilon 3
INT iEpsilonRobesHours // Epsilon 5
INT iEpsilonRobesDeliveryTime // Epsilon 5 (Expected Robes Delivery Time)
FLOAT fDistRunInDesert // Epsilon 7
INT iForSaleSignDestroyedFlags // Josh 1
INT iHighScoreFreeMode // Ambient Hunting
INT iLowestGoldTime // Ambient Hunting
INT iChallengeRankFreeMode[MAX_HUNT_CHALLENGE]
BOOL bChallengeHelpDisplayed // Ambient Hunting
TIMEOFDAY todHuntedWeekExp // Ambient Hunting
INT iVehiclesRepairedByFranklin
INT iVehiclesRepairedByMichael
INT iVehiclesRepairedByTrevor
BOOL bTaxiHailingHelpDisplayed
INT iTaxiEnterPromptDisplayed
GLOBAL_SCRAP_DATA sLetterScrapData // Hidden packages (used by Chop)
GLOBAL_SCRAP_DATA sSpaceshipPartData
INT iGetawayState
BOOL bWebsiteSubscription[3] // Website subscription for Reality Mill
INT iMurderMysteryFlags // Murder mystery easter egg
NOIR_EFFECTS_STATUS eNoirEffectState // Saves the type of filter to be used by the noir effects header
INT iPhotographyMonkeyFlags[2] // Bit flags for photographyMonkey
INT iPeyotePickupOfTypeFound[APT_COUNT]
INT iPeyoteAnimalSeen
BOOL bPeyoteProgressionComplete
ENDSTRUCT
// Restricted Area Globals
CONST_INT TOTAL_AC_AREAS 9 //ENUM_TO_INT(AC_END)
INT g_iRestrictedAreaBitSet
TEXT_LABEL_23 g_sAreaSuppressedByThisScript[TOTAL_AC_AREAS]
BOOL g_bPlayerIsActiveInRestrictedArea[TOTAL_AC_AREAS]
// Emergency Calls Globals
BOOL g_bEmergencyCallsSuppressed = FALSE
TEXT_LABEL_31 g_sEmergencyCallsSuppressedByThisScript = "NULL"
BOOL g_bEmergencyCallPriorityIsHigh = FALSE
// Fly Under Bridges
INT g_bCompletedBridgesCount
// Wildlife Photography
INT g_bCompletedAnimalPhotosCount
// Monkey Photography None Saved
#IF IS_DEBUG_BUILD
INT g_iDebugMosaicToJumpTo = -1
BOOL g_bDebugJumpToMosaic = FALSE
BOOL g_bDebugCompleteAllMosaics = FALSE
#ENDIF
// Gate Controller Globals
BOOL g_bDocksBackGatesIgnoreTrevorsUniform = FALSE
CONST_INT ciSINGLE_PLAYER_SJS_GROUP 0
CONST_INT ciFREEMODE_PLAYER_SJS_GROUP 1
CONST_INT ciUGC_PLAYER_SJS_GROUP 2
CONST_INT ciRC_TIME_TRIALS_SJS_GROUP 3
// Altrusit Cult Globals
BOOL g_bDeliverCurrentGroupMembersToCult = FALSE
BOOL g_bCurrentGroupMembersHaveBeenDeliveredToCult = FALSE
BOOL g_bAltruistCultHelpHasDisplayed = FALSE
BOOL g_bAltruistCultDialogueHasPlayed = FALSE
BOOL g_bAltruistCultFinalDialogueHasPlayed = FALSE
BOOL g_bAltruistCultExitMusicPlayed = FALSE
//BOOL g_bThisPedHasBeenDeliveredToCult[7]
// Pickup controller query system
ENUM PICKUP_QUERY
PC_QUERY_INACTIVE,
PC_QUERY_REQUEST,
PC_QUERY_RESULT,
PC_QUERY_RESET
ENDENUM
ENUM QUERY_TYPE
PC_QUERY_TYPE_ARMOUR,
PC_QUERY_TYPE_HEALTH,
PC_QUERY_TYPE_WEAPON,
PC_QUERY_TYPE_INVALID
ENDENUM
PICKUP_QUERY g_ePickupQuery = PC_QUERY_INACTIVE
QUERY_TYPE g_eQueryType = PC_QUERY_TYPE_INVALID
INT g_iPickupIndex
BOOL g_bPickupCollected
// Cheat controller
INT g_iBitsetCheatsCurrentlyDisabled // Bitset which tells the cheat controller which cheats are disabled this frame.
INT g_iBitsetCheatsCurrentlyActive // Bitset which keeps track of which cheats are currently active.
INT g_iBitsetCheatsUsedThisSession // Bitset which keeps track of which cheats were used this session.
INT g_iCheatTriggerBitset // Bitset for triggering cheats, e.g. from phone.
MODEL_NAMES g_eCheatVehicleModelName // Model name of phone cheat vehicle.
BOOL g_bHasAnyCheatBeenUsed // Bool for the stats guys to check if a cheat has been used. Must be reset to FALSE when starting checking.
STRUCT PHYSICS_PERF_STRUCT
VECTOR vInput
FLOAT fInput
ENDSTRUCT
//Are the vending machines active.
BOOL g_bVendingMachinesActive = TRUE
BOOL g_bCurrentlyUsingVendingMachine = FALSE // B*1567131 Prevent Chop running off when using a vending machine
BOOL g_bCurrentlyUsingTelescope = FALSE // Prevent Chop running off when using a telescope
BOOL g_bCurrentlyBuyingProperty = FALSE // Prevent Chop running off when showing the buying property cutscene
//Peyote conversation bitsets
INT g_iBitsetPeyoteFranklin
INT g_iBitsetPeyoteMichael
INT g_iBitsetPeyoteTrevor
INT g_iBitsetPeyoteFranklinSecond
INT g_iBitsetPeyoteMichaelSecond
INT g_iBitsetPeyoteTrevorSecond
//Ped brain timer.
CONST_INT PED_BRAIN_LOAD_COOLDOWN 10000
INT g_iPedBrainLastLoaded = -PED_BRAIN_LOAD_COOLDOWN
// Grass cull spheres
CONST_INT NUMBER_AVAILABLE_CULLSPHERES 8
// Used to stop ambient assets loading while the player is moving at speed.
// Helps relieve pressure on the streaming engine.
CONST_INT AMBIENT_LOAD_PLAYER_SPEED_CUTOFF 1369 // 37^2 m/s
//Previous number of completed stunt jumps
INT g_iPreviousNumberOfStuntJumps = -1
INT g_iLuxeLatestScriptInstanceID = -1
INT g_iLuxeBootVerifyBS
BOOL g_bInLuxeVehicle = FALSE // True when the local player is inside a luxe vehicle.
BOOL g_BInYachtJacuzzi = FALSE // True when player is using the Jacuzzi
BOOL g_bInRadioLocate = FALSE
BOOL g_bRadioActTriggered = FALSE
BOOL g_bInTVLocate = FALSE
BOOL g_bCanPlayerUseSafehouseActivity = FALSE
BOOL g_bUsingBarmaidActivity = FALSE
ENUM OFFICE_SEAT_ACT_STATE
OFFICE_SEAT_INIT = 0,
OFFICE_SEAT_LOCATECHECK,
OFFICE_SEAT_PROMPT,
OFFICE_SEAT_REQUEST,
OFFICE_SEAT_APPROACH,
OFFICE_SEAT_RUN_ENTER_ANIM,
OFFICE_SEAT_CHECK_ENTER_OR_IDLE_ANIM,
OFFICE_SEAT_CHECK_BASE_ANIM,
OFFICE_SEAT_RUNANIM,
OFFICE_SEAT_EXIT_TURN,
OFFICE_SEAT_ENTER_TURN,
OFFICE_SEAT_EXIT,
OFFICE_SEAT_CLEANUP,
OFFICE_SEAT_EXIT_INTERRUPT,
OFFICE_SEAT_TV_EXIT_SEAT,
OFFICE_SEAT_PUT_ON_CLOTHES,
OFFICE_SEAT_PLAY_COMPUTER_ENTER,
OFFICE_SEAT_PLAY_COMPUTER_IDLE,
OFFICE_SEAT_PLAY_COMPUTER_EXIT,
OFFICE_SEAT_SWITCH_TO_GAME_ANIM,
OFFICE_SEAT_SWITCH_FROM_GAME_ANIM_TO_SEAT,
OFFICE_SEAT_SWITCH_FROM_GAME_ANIM_TO_STAND,
OFFICE_SEAT_PLAY_LAPTOP_INTERNET_ENTER,
OFFICE_SEAT_PLAY_GAME_STANDING_ENTER,
OFFICE_SEAT_SPAWN_ACTIVITY,
OFFICE_SEAT_CLEANUP_WAIT
,OFFICE_SEAT_RESET_AFTER_QUITTING_SMV
ENDENUM
OFFICE_SEAT_ACT_STATE g_OfficeArmChairState = OFFICE_SEAT_INIT
INT g_iDayOfWeek
BOOL g_b_ScriptMPBlock = FALSE
/* *\
*********** Global cache for specific events *************
See event_listener.sc
\* */
STRUCT EVENT_CACHE_ITEM
INT iEventName
INT iFrame
INT iScriptNameHash
#IF IS_DEBUG_BUILD
INT iDebugCount
#ENDIF //IS_DEBUG_BUILD
ENDSTRUCT
CONST_INT EVENT_CACHE_SIZE 20
STRUCT EVENT_CACHE
EVENT_CACHE_ITEM events[EVENT_CACHE_SIZE]
INT iLength
ENDSTRUCT
EVENT_CACHE g_eventCache
#IF IS_DEBUG_BUILD
STRUCT SCRIPT_EVENT_FATAL_ERROR_DATA
EVENT_NAMES eEvent
INT iFrame
TEXT_LABEL_31 txtScriptName
TEXT_LABEL_23 txt23FatalPlayer
ENDSTRUCT
STRUCT GLOBAL_NET_FATAL_ERROR_DATA
PLAYER_INDEX iPlayerIndex
SCRIPT_EVENT_FATAL_ERROR_DATA data
INT iFrameReceived
ENDSTRUCT
GLOBAL_NET_FATAL_ERROR_DATA g_netFatalError
BOOL g_bReceivedNetFatalError
BOOL g_bBroadcastNetFatalError
#ENDIF //IS_DEBUG_BUILD
/********************************************************/