Files
gtav-src/script/dev_ng/shared/PauseMenu/PM_MissionCreator_Public.sch
2025-09-29 00:52:08 +02:00

2302 lines
83 KiB
Scheme
Executable File

/***********************************
* Name: PM_MissionCreator_Public.sch
* Author: James Adwick
* Date: 03/10/2012
* Purpose: Common function used
* throughout MP to handle
* mission creator pause menu
***********************************/
USING "globals.sch"
USING "net_include.sch"
USING "net_interactions_public.sch"
USING "net_realty_details.sch"
USING "net_private_yacht.sch"
ENUM PAUSE_MENU_CREATOR_TYPE
PM_CREATE_MISSION = 0,
PM_CREATE_DM,
PM_CREATE_TDM,
PM_CREATE_VDM,
PM_CREATE_TVDM,
PM_CREATE_RACE_LAND,
PM_CREATE_RACE_SEA,
PM_CREATE_RACE_AIR,
PM_CREATE_SURVIVAL,
PM_CREATE_HIDEOUT,
PM_CREATE_SMUGGLING,
PM_CREATE_BASEJUMP,
PM_CREATE_MISSION_TUTORIAL,
PM_CREATE_RACE_TUTORIAL,
PM_CREATE_DM_TUTORIAL
ENDENUM
CONST_INT SPAWN_APT_1 0
CONST_INT SPAWN_APT_2 1
CONST_INT SPAWN_APT_3 2
CONST_INT SPAWN_APT_4 3
CONST_INT SPAWN_APT_5 4
CONST_INT SPAWN_APT_6 5
CONST_INT SPAWN_APT_7 6
CONST_INT SPAWN_APT_8 7
CONST_INT SPAWN_APT_9 8
CONST_INT SPAWN_APT_10 9
CONST_INT SPAWN_GAR_1 10
CONST_INT SPAWN_GAR_2 11
CONST_INT SPAWN_GAR_3 12
CONST_INT SPAWN_GAR_4 13
CONST_INT SPAWN_GAR_5 14
CONST_INT SPAWN_GAR_6 15
CONST_INT SPAWN_GAR_7 16
CONST_INT SPAWN_GAR_8 17
CONST_INT SPAWN_GAR_9 18
CONST_INT SPAWN_GAR_10 19 //MAX_OWNED_PROPERTIES
CONST_INT SPAWN_PRIVATE_YACHT 20
CONST_INT SPAWN_OFFICE 21
CONST_INT SPAWN_CLUBHOUSE 22
CONST_INT SPAWN_IE_WAREHOUSE 23
CONST_INT SPAWN_BUNKER 24
CONST_INT SPAWN_HANGAR 25
CONST_INT SPAWN_DEFUNCT_BASE 26
CONST_INT SPAWN_NIGHTCLUB 27
CONST_INT SPAWN_ARENA_GARAGE 28
CONST_INT SPAWN_CASINO_APARTMENT 29
CONST_INT SPAWN_ARCADE 30
CONST_INT SPAWN_SUBMARINE 31
CONST_INT SPAWN_CAR_MEET 32
CONST_INT SPAWN_AUTO_SHOP 33
CONST_INT SPAWN_FIXER_HQ 34
CONST_INT SPAWN_LAST_LOCATION 35
CONST_INT SPAWN_RANDOM 36
CONST_INT SPAWN_MAX 37
//SPAWN OPTIONS
//#ENDIF
//#ENDIF
//#IF NOT FEATURE_BIKER
//#IF FEATURE_IMPORT_EXPORT
//
//CONST_INT SPAWN_PRIVATE_YACHT 10
//CONST_INT SPAWN_OFFICE 11
//CONST_INT SPAWN_VEH_WAREHOUSE 12
//CONST_INT SPAWN_LAST_LOCATION 13
//CONST_INT SPAWN_RANDOM 14
//CONST_INT SPAWN_MAX 15
//
//#ENDIF
//#ENDIF
//
//#IF FEATURE_BIKER
//#IF FEATURE_IMPORT_EXPORT
//
//CONST_INT SPAWN_PRIVATE_YACHT 10
//CONST_INT SPAWN_OFFICE 11
//CONST_INT SPAWN_CLUBHOUSE 12
//CONST_INT SPAWN_VEH_WAREHOUSE 13
//CONST_INT SPAWN_LAST_LOCATION 14
//CONST_INT SPAWN_RANDOM 15
//CONST_INT SPAWN_MAX 16
//
//#ENDIF
//#ENDIF
INT iMenuSpawnLocation = -1
/// PURPOSE: Return TRUE if a mission has been selected in SP pause menu
FUNC BOOL IS_PAUSE_MENU_REQUESTING_TRANSITION()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseRequestingTransition)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_WARP_TO_MISSION()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseRequestingWarp)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_A_NEW_SESSION()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuRequestingNewSession)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_LAUNCHING_A_USER_MISSION()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseWarpToUserMission)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_TO_EDIT_A_MISSION()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseRequestingToLoadMission)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_TO_START_A_PLAYLIST()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuStartPlaylist)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_TO_CHOOSE_CHAR()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuChooseChar)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_TO_START_A_BOOK_MARK()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuStartBookMark)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_TO_START_ONE_OF_MY_MISSIONS()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuStartMyMission)
ENDFUNC
FUNC BOOL IS_PAUSE_MENU_REQUESTING_TO_START_VERIFIED_MISSIONS()
RETURN IS_BIT_SET(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuStartVerifiedMission)
ENDFUNC
PROC SET_PAUSE_MENU_REQUESTING_TO_START_A_BOOK_MARK()
SET_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuStartBookMark)
CPRINTLN(DEBUG_PAUSE_MENU, "MAINTAIN_LAUNCHING_MISSION_FROM_PAUSE_MENU - SET_PAUSE_MENU_REQUESTING_TO_START_A_BOOK_MARK")
ENDPROC
PROC SET_PAUSE_MENU_REQUESTING_TO_START_ONE_OF_MY_MISSIONS()
CPRINTLN(DEBUG_PAUSE_MENU, "MAINTAIN_LAUNCHING_MISSION_FROM_PAUSE_MENU - SET_PAUSE_MENU_REQUESTING_TO_START_ONE_OF_MY_MISSIONS")
SET_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuStartMyMission)
ENDPROC
PROC SET_PAUSE_MENU_BOOK_MARK_TO_START(INT iArrayPos)
g_FMMC_HEADER_STRUCT_PAUSE_MENU_BOOKMARKS.iMissionToLaunch = iArrayPos
CPRINTLN(DEBUG_PAUSE_MENU, "MAINTAIN_LAUNCHING_MISSION_FROM_PAUSE_MENU - SET_PAUSE_MENU_BOOK_MARK_TO_START iArrayPos = ", iArrayPos)
ENDPROC
PROC SET_PAUSE_MENU_MY_MISSIONS_TO_START(INT iArrayPos)
g_FMMC_HEADER_STRUCT_PAUSE_MENU_MY_MISSIONS.iMissionToLaunch = iArrayPos
CPRINTLN(DEBUG_PAUSE_MENU, "MAINTAIN_LAUNCHING_MISSION_FROM_PAUSE_MENU - SET_PAUSE_MENU_MY_MISSIONS_TO_START iArrayPos = ", iArrayPos)
ENDPROC
/// PURPOSE: Reset single transition request bool
PROC RESET_PAUSE_MENU_TRANSITION_GLOBAL()
CLEAR_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseRequestingTransition)
ENDPROC
/// PURPOSE: Reset single warping bool
PROC RESET_PAUSE_MENU_WARP_GLOBAL()
CLEAR_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseRequestingWarp)
ENDPROC
/// PURPOSE: Resets bools used to trigger transition from pause menu
PROC RESET_PAUSE_MENU_WARP_REQUESTS()
CPRINTLN(DEBUG_PAUSE_MENU, "RESETING ALL MENU WARP REQUESTS")
DEBUG_PRINTCALLSTACK()
RESET_PAUSE_MENU_TRANSITION_GLOBAL()
RESET_PAUSE_MENU_WARP_GLOBAL()
CLEAR_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseWarpToUserMission)
CLEAR_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuStartPlaylist)
CLEAR_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuRequestingNewSession)
CLEAR_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuChooseChar)
g_bKillFMMCmenu = FALSE
ENDPROC
FUNC VECTOR GET_PAUSE_MENU_VECTOR_TO_WARP_TO()
RETURN g_PauseMenuMissionCreatorData.vPMVectorToWarpTo
ENDFUNC
FUNC INT GET_PAUSE_MENU_MISSION_FILE_TO_LOAD()
RETURN g_PauseMenuMissionCreatorData.iPMDataFileToLoad
ENDFUNC
FUNC MP_GAMEMODE GET_PAUSE_MENU_WARP_TO_GAMEMODE()
RETURN INT_TO_ENUM(MP_GAMEMODE, g_PauseMenuMissionCreatorData.warpToMode)
ENDFUNC
FUNC MP_GAMEMODE GET_PAUSE_MENU_WARP_FROM_GAMEMODE()
RETURN INT_TO_ENUM(MP_GAMEMODE, g_PauseMenuMissionCreatorData.warpFromMode)
ENDFUNC
PROC CLEAN_UP_PAUSE_MENU_MISSION_CREATOR_DATA()
RESET_PAUSE_MENU_WARP_REQUESTS()
PAUSE_MENU_MISSION_CREATOR_STRUCT emptyPauseMenuStruct
g_PauseMenuMissionCreatorData = emptyPauseMenuStruct
ENDPROC
/// PURPOSE: Set the game mode you are warping from
PROC SET_PAUSE_MENU_WARP_FROM_MODE(MP_GAMEMODE aGamemode)
g_PauseMenuMissionCreatorData.warpFromMode = ENUM_TO_INT(aGamemode)
ENDPROC
/// PURPOSE: Set the game mode you are warping to
PROC SET_PAUSE_MENU_WARP_TO_MODE(MP_GAMEMODE aGamemode)
#IF IS_DEBUG_BUILD
DEBUG_PRINTCALLSTACK()
NET_NL()NET_PRINT("<<<<SET_PAUSE_MENU_WARP_TO_MODE = ")NET_PRINT(GET_GAMEMODE_STRING(aGamemode))NET_PRINT(" >>>>>> ")
#ENDIF
g_PauseMenuMissionCreatorData.warpToMode = ENUM_TO_INT(aGamemode)
ENDPROC
/// PURPOSE: Set the co-ordinate the spawning system should place the player at
PROC SET_PAUSE_MENU_WARP_TO_VECTOR(VECTOR vWarpCoords)
g_PauseMenuMissionCreatorData.vPMVectorToWarpTo = vWarpCoords
ENDPROC
/// PURPOSE: Sets global bit to notify selector player wants to trigger transition to MP
PROC SET_PAUSE_MENU_REQUESTING_A_WARP()
#IF IS_DEBUG_BUILD
DEBUG_PRINTCALLSTACK()
NET_NL()NET_PRINT("<<<<SET_PAUSE_MENU_REQUESTING_A_WARP - called ")NET_PRINT(" >>>>>> ")
#ENDIF
SET_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseRequestingTransition)
ENDPROC
/// PURPOSE: Sets global bit to notify selector player wants to trigger transition to MP
PROC SET_PAUSE_MENU_REQUESTING_A_WARP_TO_MISSION()
SET_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseRequestingWarp)
ENDPROC
/// PURPOSE: Sets global bit to notify selector player wants a new session
PROC SET_PAUSE_MENU_REQUESTING_A_NEW_SESSION()
SET_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuRequestingNewSession)
ENDPROC
/// PURPOSE: Sets global bit to notify selector player wants a new session
PROC SET_PAUSE_MENU_REQUESTING_TO_CHOOSE_CHAR()
SET_BIT(g_PauseMenuMissionCreatorData.iBS_PauseMenuFlags, bsPauseMenuChooseChar)
ENDPROC
PROC SET_MC_VARS_FROM_PAUSE_MENU()
SWITCH INT_TO_ENUM(PAUSE_MENU_CREATOR_TYPE, g_PauseMenuMissionCreatorData.iMissionCreatorType)
CASE PM_CREATE_MISSION
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_MISSION")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_MISSION
BREAK
CASE PM_CREATE_DM
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_DM")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_DEATHMATCH
g_FMMC_STRUCT.iTeamDeathmatch = 0
g_FMMC_STRUCT.iVehicleDeathmatch = 0
BREAK
CASE PM_CREATE_TDM
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_TDM")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_DEATHMATCH
g_FMMC_STRUCT.iTeamDeathmatch = 1
g_FMMC_STRUCT.iVehicleDeathmatch = 0
BREAK
CASE PM_CREATE_VDM
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_VDM")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_DEATHMATCH
g_FMMC_STRUCT.iTeamDeathmatch = 0
g_FMMC_STRUCT.iVehicleDeathmatch = 1
BREAK
CASE PM_CREATE_TVDM
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_TVDM")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_DEATHMATCH
g_FMMC_STRUCT.iTeamDeathmatch = 1
g_FMMC_STRUCT.iVehicleDeathmatch = 1
BREAK
CASE PM_CREATE_RACE_LAND
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_RACE_LAND")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_RACE
g_FMMC_STRUCT.iRaceType = 0
BREAK
CASE PM_CREATE_RACE_SEA
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_RACE_SEA")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_RACE
g_FMMC_STRUCT.iRaceType = 2
BREAK
CASE PM_CREATE_RACE_AIR
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_RACE_AIR")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_RACE
g_FMMC_STRUCT.iRaceType = 4
BREAK
CASE PM_CREATE_MISSION_TUTORIAL
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_MISSION_TUTORIAL")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_MISSION
g_bFMMC_TutorialSelectedFromMpSkyMenu = TRUE
BREAK
CASE PM_CREATE_DM_TUTORIAL
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_DM_TUTORIAL")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_DEATHMATCH
g_FMMC_STRUCT.iTeamDeathmatch = 0
g_FMMC_STRUCT.iVehicleDeathmatch = 0
g_bFMMC_TutorialSelectedFromMpSkyMenu = TRUE
BREAK
CASE PM_CREATE_RACE_TUTORIAL
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_RACE_TUTORIAL")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_RACE
g_FMMC_STRUCT.iRaceType = 0
g_bFMMC_TutorialSelectedFromMpSkyMenu = TRUE
BREAK
CASE PM_CREATE_SURVIVAL
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_SURVIVAL")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_SURVIVAL
BREAK
CASE PM_CREATE_HIDEOUT
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_HIDEOUT")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_GANGHIDEOUT
BREAK
CASE PM_CREATE_SMUGGLING
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_SMUGGLING")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_ARMS_SMUGGLING
BREAK
CASE PM_CREATE_BASEJUMP
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - PM_CREATE_BASEJUMP")
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_BASE_JUMP
BREAK
DEFAULT
CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] SET_MC_VARS_FROM_PAUSE_MENU - Mission creator option not known!", INT_TO_ENUM(PAUSE_MENU_CREATOR_TYPE, g_PauseMenuMissionCreatorData.iMissionCreatorType))
g_FMMC_STRUCT.iMissionType = FMMC_TYPE_MISSION
BREAK
ENDSWITCH
ENDPROC
// IS_MP_PASSIVE_MODE_ENABLED() //MOVED TO net_include.sch (due to cyclic header)
/// PURPOSE: Returns TRUE if settings have been set for player in crew
FUNC BOOL ARE_PLAYERS_MP_SETTINGS_FOR_A_CREW()
RETURN GET_MP_BOOL_PLAYER_STAT(MPPLY_CREW_SETTINGS)
ENDFUNC
/// PURPOSE: Pass TRUE if the player is in a crew
PROC SET_PLAYERS_MP_SETTINGS_FOR_A_CREW(BOOL bCrewSettings)
SET_MP_BOOL_PLAYER_STAT(MPPLY_CREW_SETTINGS, bCrewSettings)
ENDPROC
/// PURPOSE: Returns value of spawn location setting. ENUM type MULTIPLAYER_SETTING_SPAWN
FUNC MULTIPLAYER_SETTING_SPAWN GET_MP_SPAWN_POINT_SETTING()
RETURN INT_TO_ENUM(MULTIPLAYER_SETTING_SPAWN, GET_MP_INT_CHARACTER_STAT(MP_STAT_SPAWN_LOCATION_SETTING))
ENDFUNC
FUNC STRING GET_MULTIPLAYER_SETTING_SPAWN_STRING(MULTIPLAYER_SETTING_SPAWN spawnSetting)
SWITCH spawnSetting
CASE MP_SETTING_SPAWN_NULL RETURN "MP_SETTING_SPAWN_NULL"
CASE MP_SETTING_SPAWN_PROPERTY RETURN "MP_SETTING_SPAWN_PROPERTY"
CASE MP_SETTING_SPAWN_LAST_POSITION RETURN "MP_SETTING_SPAWN_LAST_POSITION"
CASE MP_SETTING_SPAWN_GARAGE RETURN "MP_SETTING_SPAWN_GARAGE"
CASE MP_SETTING_SPAWN_RANDOM RETURN "MP_SETTING_SPAWN_RANDOM"
CASE MP_SETTING_SPAWN_PRIVATE_YACHT RETURN "MP_SETTING_SPAWN_PRIVATE_YACHT"
CASE MP_SETTING_SPAWN_OFFICE RETURN "MP_SETTING_SPAWN_OFFICE"
CASE MP_SETTING_SPAWN_CLUBHOUSE RETURN "MP_SETTING_SPAWN_CLUBHOUSE"
CASE MP_SETTING_SPAWN_IE_WAREHOUSE RETURN "MP_SETTING_SPAWN_IE_WAREHOUSE"
CASE MP_SETTING_SPAWN_BUNKER RETURN "MP_SETTING_SPAWN_BUNKER"
CASE MP_SETTING_SPAWN_HANGAR RETURN "MP_SETTING_SPAWN_HANGAR"
CASE MP_SETTING_SPAWN_DEFUNCT_BASE RETURN "MP_SETTING_SPAWN_DEFUNCT_BASE"
CASE MP_SETTING_SPAWN_NIGHTCLUB RETURN "MP_SETTING_SPAWN_NIGHTCLUB"
CASE MP_SETTING_SPAWN_ARENA_GARAGE RETURN "MP_SETTING_SPAWN_ARENA_GARAGE"
CASE MP_SETTING_SPAWN_CASINO_APARTMENT RETURN "MP_SETTING_SPAWN_CASINO_APARTMENT"
CASE MP_SETTING_SPAWN_ARCADE RETURN "MP_SETTING_SPAWN_ARCADE"
CASE MP_SETTING_SPAWN_SUBMARINE RETURN "MP_SETTING_SPAWN_SUBMARINE"
CASE MP_SETTING_SPAWN_CAR_MEET RETURN "MP_SETTING_SPAWN_CAR_MEET"
CASE MP_SETTING_SPAWN_AUTO_SHOP RETURN "MP_SETTING_SPAWN_AUTO_SHOP"
#IF FEATURE_FIXER
CASE MP_SETTING_SPAWN_FIXER_HQ RETURN "MP_SETTING_SPAWN_FIXER_HQ"
#ENDIF
#IF FEATURE_GEN9_EXCLUSIVE
CASE MP_SETTING_BIKER_TUTORIAL_BUSINESS RETURN "MP_SETTING_BIKER_TUTORIAL_BUSINESS"
#ENDIF
CASE MP_SETTING_SPAWN_MAX RETURN "MP_SETTING_SPAWN_MAX"
ENDSWITCH
RETURN ""
ENDFUNC
/// PURPOSE:
/// Set the stat value of the MP setting: spawn location
/// PARAMS:
/// spawnSetting - pass valid type of MULTIPLAYER_SETTING_SPAWN
PROC SET_MP_SPAWN_POINT_SETTING(MULTIPLAYER_SETTING_SPAWN spawnSetting)
CPRINTLN(DEBUG_PAUSE_MENU, "SET_MP_SPAWN_POINT_SETTING - new setting: ", ENUM_TO_INT(spawnSetting))
DEBUG_PRINTCALLSTACK()
SET_MP_INT_CHARACTER_STAT(MP_STAT_SPAWN_LOCATION_SETTING, ENUM_TO_INT(spawnSetting))
NETWORK_SET_CURRENT_SPAWN_LOCATION_OPTION(GET_HASH_KEY(GET_MULTIPLAYER_SETTING_SPAWN_STRING(spawnSetting)))
ENDPROC
/// PURPOSE: Returns value of player title setting. ENUM type MULTIPLAYER_SETTING_TITLE
FUNC MULTIPLAYER_SETTING_TITLE GET_MP_CHARACTER_TITLE_SETTING()
RETURN INT_TO_ENUM(MULTIPLAYER_SETTING_TITLE, GET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_TITLE_SETTING))
ENDFUNC
/// PURPOSE:
/// Set the stat value of the MP setting: player title
/// PARAMS:
/// playerTitleSetting - pass valid type of MULTIPLAYER_SETTING_TITLE
PROC SET_MP_CHARACTER_TITLE_SETTING(MULTIPLAYER_SETTING_TITLE playerTitleSetting)
CPRINTLN(DEBUG_PAUSE_MENU, "SET_MP_CHARACTER_TITLE_SETTING - new setting: ", ENUM_TO_INT(playerTitleSetting))
SET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_TITLE_SETTING, ENUM_TO_INT(playerTitleSetting))
ENDPROC
/// PURPOSE: Returns value of betting odds setting. ENUM type MULTIPLAYER_SETTING_BETTING_ODDS
FUNC MULTIPLAYER_SETTING_BETTING_ODDS GET_MP_BETTING_ODDS_SETTING()
RETURN INT_TO_ENUM(MULTIPLAYER_SETTING_BETTING_ODDS, GET_MP_INT_PLAYER_STAT(MPPLY_BETTING_ODDS_SETTING))
ENDFUNC
/// PURPOSE:
/// Set the stat value of the MP setting: betting odds
/// PARAMS:
/// bettingOddsSetting - pass valid type of MULTIPLAYER_SETTING_BETTING_ODDS
PROC SET_MP_PLAYER_BETTING_ODDS_SETTING(MULTIPLAYER_SETTING_BETTING_ODDS bettingOddsSetting)
CPRINTLN(DEBUG_PAUSE_MENU, "SET_MP_PLAYER_BETTING_ODDS_SETTING - new setting: ", ENUM_TO_INT(bettingOddsSetting))
SET_MP_INT_PLAYER_STAT(MPPLY_BETTING_ODDS_SETTING, ENUM_TO_INT(bettingOddsSetting))
ENDPROC
/// PURPOSE: Returns value of the current quick play animation
FUNC INT GET_MP_PLAYER_ANIM_SETTING()
RETURN GET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_ANIM_SETTING)
ENDFUNC
/// PURPOSE: Returns value of the current quick play animation type
FUNC INT GET_MP_PLAYER_ANIM_TYPE()
RETURN GET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_ANIM_TYPE)
ENDFUNC
/// PURPOSE: Returns value of the current quick play animation
FUNC INT GET_MP_PLAYER_VEH_ANIM_SETTING()
RETURN GET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_ANIM_VEH_SETTING)
ENDFUNC
/// PURPOSE:
/// Set the stat value of the MP setting: player quick animation
/// PARAMS:
/// iAnimSetting - pass int for player animation (interaction)
PROC SET_MP_PLAYER_ANIM_SETTING(INT iAnimType, INT iAnimSetting)
#IF IS_DEBUG_BUILD
DEBUG_PRINTCALLSTACK()
CPRINTLN(DEBUG_PAUSE_MENU, "SET_MP_PLAYER_ANIM_SETTING - iAnimType = ", iAnimType, " iAnimSetting = ", iAnimSetting, " interaction name: ", INTERACTION_ANIMS_DEBUG_NAME(iAnimType, iAnimSetting))
#ENDIF
//MPGlobalsInteractions.bUpdateQuickplayAnim = TRUE // added by neil, to let my system know a value has changed without having to call the stat check every frame
SET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_ANIM_SETTING, iAnimSetting)
SET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_ANIM_TYPE, iAnimType)
g_iCurrentOnFootQuickplayType = iAnimType
g_iCurrentOnFootQuickplayAnim = iAnimSetting
ENDPROC
/// PURPOSE:
/// Set the stat value of the MP setting: player quickvehicle animation
/// PARAMS:
/// iAnimSetting - pass int for player vehicle animation (interaction)
PROC SET_MP_PLAYER_VEH_ANIM_SETTING(INT iAnimSetting)
CPRINTLN(DEBUG_PAUSE_MENU, "SET_MP_PLAYER_VEH_ANIM_SETTING - new setting: ", iAnimSetting)
//MPGlobalsInteractions.bUpdateQuickplayAnimVeh = TRUE // added by neil, to let my system know a value has changed without having to call the stat check every frame
SET_MP_INT_CHARACTER_STAT(MP_STAT_PLAYER_ANIM_VEH_SETTING, iAnimSetting)
g_iCurrentInVehQuickplayAnim = iAnimSetting
ENDPROC
FUNC BOOL IS_MP_PLAYER_ANIM_SETTING_CREW_DEFAULT()
RETURN (GET_MP_PLAYER_ANIM_TYPE() = ENUM_TO_INT(INTERACTION_ANIM_TYPE_CREW)) //(GET_MP_PLAYER_ANIM_SETTING() = MP_SETTING_QUICK_ANIM_CREW)
ENDFUNC
FUNC INT GET_MP_SESSION_CREWS_NUM()
RETURN MPGlobalsAmbience.iPMLaunchCrewSessionNum
ENDFUNC
PROC SET_MP_SESSION_CREWS_NUM(INT iNewNum)
CPRINTLN(DEBUG_PAUSE_MENU, "SET_MP_SESSION_CREWS_NUM - new value: ", iNewNum)
MPGlobalsAmbience.iPMLaunchCrewSessionNum = iNewNum
ENDPROC
//Purpose: Set the spawn location based on iMenuSpawnLocation
PROC SET_MP_SPAWN_POINT_FROM_MENU_OPTION()
SWITCH iMenuSpawnLocation
CASE SPAWN_APT_1
CASE SPAWN_APT_2
CASE SPAWN_APT_3
CASE SPAWN_APT_4
CASE SPAWN_APT_5
CASE SPAWN_APT_6
#IF FEATURE_SUMMER_2020
CASE SPAWN_APT_7
CASE SPAWN_APT_8
#ENDIF
CASE SPAWN_APT_9 //MAX_OWNED_PROPERTIES //OLD PROPERTIES
CASE SPAWN_APT_10
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_PROPERTY)
BREAK
CASE SPAWN_GAR_1
CASE SPAWN_GAR_2
CASE SPAWN_GAR_3
CASE SPAWN_GAR_4
CASE SPAWN_GAR_5
CASE SPAWN_GAR_6
#IF FEATURE_SUMMER_2020
CASE SPAWN_GAR_7
CASE SPAWN_GAR_8
#ENDIF
CASE SPAWN_GAR_9 //MAX_OWNED_PROPERTIES //OLD PROPERTIES
CASE SPAWN_GAR_10
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_GARAGE)
BREAK
CASE SPAWN_LAST_LOCATION SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_LAST_POSITION) BREAK
CASE SPAWN_RANDOM SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_RANDOM) BREAK
CASE SPAWN_PRIVATE_YACHT SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_PRIVATE_YACHT) BREAK
CASE SPAWN_OFFICE SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_OFFICE) BREAK
CASE SPAWN_CLUBHOUSE SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_CLUBHOUSE) BREAK
CASE SPAWN_IE_WAREHOUSE
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_IE_WAREHOUSE)
BREAK
CASE SPAWN_BUNKER
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_BUNKER)
BREAK
CASE SPAWN_HANGAR
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_HANGAR)
BREAK
CASE SPAWN_DEFUNCT_BASE
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_DEFUNCT_BASE)
BREAK
CASE SPAWN_NIGHTCLUB
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_NIGHTCLUB)
BREAK
CASE SPAWN_ARENA_GARAGE
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_ARENA_GARAGE)
BREAK
CASE SPAWN_CASINO_APARTMENT
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_CASINO_APARTMENT)
BREAK
CASE SPAWN_ARCADE
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_ARCADE)
BREAK
CASE SPAWN_SUBMARINE
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_SUBMARINE)
BREAK
CASE SPAWN_CAR_MEET
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_CAR_MEET)
BREAK
CASE SPAWN_AUTO_SHOP
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_AUTO_SHOP)
BREAK
#IF FEATURE_FIXER
CASE SPAWN_FIXER_HQ
SET_MP_SPAWN_POINT_SETTING(MP_SETTING_SPAWN_FIXER_HQ)
BREAK
#ENDIF
ENDSWITCH
ENDPROC
//Purpose: Update the last used property from the spawn location selection
PROC SET_LAST_USED_PROPERTY_FROM_MENU_SELECTION()
SWITCH iMenuSpawnLocation
CASE SPAWN_APT_1
CASE SPAWN_GAR_1
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(0))
BREAK
CASE SPAWN_APT_2
CASE SPAWN_GAR_2
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(1))
BREAK
CASE SPAWN_APT_3
CASE SPAWN_GAR_3
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(2))
BREAK
CASE SPAWN_APT_4
CASE SPAWN_GAR_4
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(3))
BREAK
CASE SPAWN_APT_5
CASE SPAWN_GAR_5
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(4))
BREAK
CASE SPAWN_PRIVATE_YACHT
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(YACHT_PROPERTY_OWNED_SLOT))
BREAK
CASE SPAWN_OFFICE
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0))
BREAK
CASE SPAWN_CLUBHOUSE
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE))
BREAK
CASE SPAWN_APT_6
CASE SPAWN_GAR_6
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6))
BREAK
CASE SPAWN_IE_WAREHOUSE
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_IMPORT_EXPORT_GARAGE_ID(GET_PLAYERS_OWNED_IE_GARAGE(PLAYER_ID())))
BREAK
CASE SPAWN_BUNKER
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_FACTORY_ID(GET_OWNED_BUNKER(PLAYER_ID())))
BREAK
CASE SPAWN_HANGAR
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_HANGAR_ID(GET_OWNED_HANGAR(PLAYER_ID())))
BREAK
CASE SPAWN_DEFUNCT_BASE
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_DEFUNCT_BASE_ID(GET_OWNED_DEFUNCT_BASE(PLAYER_ID())))
BREAK
CASE SPAWN_NIGHTCLUB
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_NIGHTCLUB_ID(GET_PLAYERS_OWNED_NIGHTCLUB(PLAYER_ID())))
BREAK
CASE SPAWN_ARENA_GARAGE
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_ARENA_GARAGE_ID(GET_PLAYERS_OWNED_ARENA_GARAGE(PLAYER_ID())))
BREAK
CASE SPAWN_CASINO_APARTMENT
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_CASINO_APARTMENT_ID(GET_PLAYERS_OWNED_CASINO_APARTMENT(PLAYER_ID())))
BREAK
CASE SPAWN_ARCADE
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_ARCADE_PROPERTY_ID(GET_PLAYERS_OWNED_ARCADE_PROPERTY(PLAYER_ID())))
BREAK
CASE SPAWN_APT_7
CASE SPAWN_GAR_7
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7))
BREAK
CASE SPAWN_APT_8
CASE SPAWN_GAR_8
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8))
BREAK
CASE SPAWN_APT_9
CASE SPAWN_GAR_9
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9))
BREAK
CASE SPAWN_APT_10
CASE SPAWN_GAR_10
SET_LAST_USED_PROPERTY(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10)) //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
BREAK
CASE SPAWN_SUBMARINE
SET_LAST_USED_SIMPLE_INTERIOR(SIMPLE_INTERIOR_SUBMARINE)
BREAK
CASE SPAWN_CAR_MEET
SET_LAST_USED_SIMPLE_INTERIOR(SIMPLE_INTERIOR_CAR_MEET)
BREAK
CASE SPAWN_AUTO_SHOP
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_AUTO_SHOP_PROPERTY_ID(GET_PLAYERS_OWNED_AUTO_SHOP_PROPERTY(PLAYER_ID())))
BREAK
#IF FEATURE_FIXER
CASE SPAWN_FIXER_HQ
SET_LAST_USED_SIMPLE_INTERIOR(GET_SIMPLE_INTERIOR_ID_FROM_FIXER_HQ_ID(GET_PLAYERS_OWNED_FIXER_HQ(PLAYER_ID())))
BREAK
#ENDIF
ENDSWITCH
ENDPROC
FUNC INT GET_PROPERTY_MENU_SPAWN_INDEX(INT iPropertySlot, BOOL bGarage)
IF iPropertySlot <= SPAWN_APT_5
IF NOT bGarage
RETURN iPropertySlot
ELSE
RETURN SPAWN_GAR_1 + iPropertySlot
ENDIF
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_OFFICE_0
IF NOT bGarage
RETURN SPAWN_OFFICE
ENDIF
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_CLUBHOUSE
IF NOT bGarage
RETURN SPAWN_CLUBHOUSE
ENDIF
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_APT_6
IF NOT bGarage
RETURN SPAWN_APT_6
ELSE
RETURN SPAWN_GAR_6
ENDIF
#IF FEATURE_SUMMER_2020
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_APT_7
IF NOT bGarage
RETURN SPAWN_APT_7
ELSE
RETURN SPAWN_GAR_7
ENDIF
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_APT_8
IF NOT bGarage
RETURN SPAWN_APT_8
ELSE
RETURN SPAWN_GAR_8
ENDIF
#ENDIF
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_APT_9
IF NOT bGarage
RETURN SPAWN_APT_9
ELSE
RETURN SPAWN_GAR_9
ENDIF
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_APT_10 //MAX_OWNED_PROPERTIES //OLD PROPERTIES
IF NOT bGarage
RETURN SPAWN_APT_10
ELSE
RETURN SPAWN_GAR_10
ENDIF
ELIF iPropertySlot = PROPERTY_OWNED_SLOT_IE_WAREHOUSE
IF NOT bGarage
RETURN SPAWN_IE_WAREHOUSE
ENDIF
ENDIF
RETURN -1
ENDFUNC
PROC GET_SPAWN_LOCATION_VALUE()
//INT i
SWITCH GET_MP_SPAWN_POINT_SETTING()
CASE MP_SETTING_SPAWN_PROPERTY
iMenuSpawnLocation = GET_PROPERTY_MENU_SPAWN_INDEX(GET_OWNED_PROPERTY_SLOT_INDEX(g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastAccessedPropertyID),FALSE)
BREAK
CASE MP_SETTING_SPAWN_GARAGE
iMenuSpawnLocation = GET_PROPERTY_MENU_SPAWN_INDEX(GET_OWNED_PROPERTY_SLOT_INDEX(g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastAccessedPropertyID),TRUE)
BREAK
CASE MP_SETTING_SPAWN_LAST_POSITION
iMenuSpawnLocation = SPAWN_LAST_LOCATION
BREAK
CASE MP_SETTING_SPAWN_RANDOM
iMenuSpawnLocation = SPAWN_RANDOM
BREAK
CASE MP_SETTING_SPAWN_PRIVATE_YACHT
iMenuSpawnLocation = SPAWN_PRIVATE_YACHT
BREAK
CASE MP_SETTING_SPAWN_OFFICE
iMenuSpawnLocation = SPAWN_OFFICE
BREAK
CASE MP_SETTING_SPAWN_CLUBHOUSE
iMenuSpawnLocation = SPAWN_CLUBHOUSE
BREAK
CASE MP_SETTING_SPAWN_IE_WAREHOUSE
iMenuSpawnLocation = SPAWN_IE_WAREHOUSE
BREAK
CASE MP_SETTING_SPAWN_BUNKER
iMenuSpawnLocation = SPAWN_BUNKER
BREAK
CASE MP_SETTING_SPAWN_HANGAR
iMenuSpawnLocation = SPAWN_HANGAR
BREAK
CASE MP_SETTING_SPAWN_DEFUNCT_BASE
iMenuSpawnLocation = SPAWN_DEFUNCT_BASE
BREAK
CASE MP_SETTING_SPAWN_NIGHTCLUB
iMenuSpawnLocation = SPAWN_NIGHTCLUB
BREAK
CASE MP_SETTING_SPAWN_ARENA_GARAGE
iMenuSpawnLocation = SPAWN_ARENA_GARAGE
BREAK
CASE MP_SETTING_SPAWN_CASINO_APARTMENT
iMenuSpawnLocation = SPAWN_CASINO_APARTMENT
BREAK
CASE MP_SETTING_SPAWN_ARCADE
iMenuSpawnLocation = SPAWN_ARCADE
BREAK
CASE MP_SETTING_SPAWN_SUBMARINE
iMenuSpawnLocation = SPAWN_SUBMARINE
BREAK
CASE MP_SETTING_SPAWN_CAR_MEET
iMenuSpawnLocation = SPAWN_CAR_MEET
BREAK
CASE MP_SETTING_SPAWN_AUTO_SHOP
iMenuSpawnLocation = SPAWN_AUTO_SHOP
BREAK
#IF FEATURE_FIXER
CASE MP_SETTING_SPAWN_FIXER_HQ
iMenuSpawnLocation = SPAWN_FIXER_HQ
BREAK
#ENDIF
ENDSWITCH
IF iMenuSpawnLocation > -1
IF iMenuSpawnLocation = SPAWN_APT_1
OR iMenuSpawnLocation = SPAWN_APT_2
OR iMenuSpawnLocation = SPAWN_APT_3
OR iMenuSpawnLocation = SPAWN_APT_4
OR iMenuSpawnLocation = SPAWN_APT_5
OR iMenuSpawnLocation = SPAWN_OFFICE
OR iMenuSpawnLocation = SPAWN_CLUBHOUSE
OR iMenuSpawnLocation = SPAWN_APT_6
#IF FEATURE_SUMMER_2020
OR iMenuSpawnLocation = SPAWN_APT_7
OR iMenuSpawnLocation = SPAWN_APT_8
#ENDIF
OR iMenuSpawnLocation = SPAWN_APT_9
OR iMenuSpawnLocation = SPAWN_APT_10 //MAX_OWNED_PROPERTIES //OLD PROPERTIES
INT iOwnedProperty
IF iMenuSpawnLocation = SPAWN_OFFICE
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0)
ELIF iMenuSpawnLocation = SPAWN_CLUBHOUSE
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE)
ELIF iMenuSpawnLocation = SPAWN_APT_6
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6)
#IF FEATURE_SUMMER_2020
ELIF iMenuSpawnLocation = SPAWN_APT_7
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7)
ELIF iMenuSpawnLocation = SPAWN_APT_8
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8)
#ENDIF
ELIF iMenuSpawnLocation = SPAWN_APT_7
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7)
ELIF iMenuSpawnLocation = SPAWN_APT_8
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8)
ELIF iMenuSpawnLocation = SPAWN_APT_9
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9)
ELIF iMenuSpawnLocation = SPAWN_APT_10
iOwnedProperty = GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10)
ENDIF
IF iOwnedProperty >= 0
AND iOwnedProperty < (MAX_MP_PROPERTIES+1)
IF mpProperties[iOwnedProperty].iType = PROPERTY_TYPE_GARAGE
OR (DOES_PLAYER_OWN_PRIVATE_YACHT(PLAYER_ID())
AND GET_OWNED_PROPERTY(0) = 0)
IF iMenuSpawnLocation = SPAWN_CLUBHOUSE
ELSE
iMenuSpawnLocation = GET_PROPERTY_MENU_SPAWN_INDEX(GET_OWNED_PROPERTY_SLOT_INDEX(g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastAccessedPropertyID),TRUE)
ENDIF
ENDIF
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_1
OR iMenuSpawnLocation = SPAWN_GAR_2
OR iMenuSpawnLocation = SPAWN_GAR_3
OR iMenuSpawnLocation = SPAWN_GAR_4
OR iMenuSpawnLocation = SPAWN_GAR_5
OR iMenuSpawnLocation = SPAWN_GAR_6
OR iMenuSpawnLocation = SPAWN_GAR_7
OR iMenuSpawnLocation = SPAWN_GAR_8
OR iMenuSpawnLocation = SPAWN_GAR_9
OR iMenuSpawnLocation = SPAWN_GAR_10
IF GET_OWNED_PROPERTY(GET_OWNED_PROPERTY_SLOT_INDEX(g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastAccessedPropertyID)) = 0
iMenuSpawnLocation = SPAWN_LAST_LOCATION
ENDIF
ENDIF
//Set the globals based on the new option
SET_MP_SPAWN_POINT_FROM_MENU_OPTION()
SET_LAST_USED_PROPERTY_FROM_MENU_SELECTION()
ENDIF
CPRINTLN(DEBUG_PAUSE_MENU, "GET_SPAWN_LOCATION_VALUE - Current iMenuSpawnLocation = ", iMenuSpawnLocation)
ENDPROC
/// PURPOSE: Returns the correct text label for the value of a multiplayer setting
FUNC STRING GET_MULTIPLAYER_SETTING_TEXT_STRING(MULTIPLAYER_SETTINGS_ENUM aSetting)
SWITCH aSetting
CASE MP_SETTING_QUICK_ANIM_ON_FOOT
IF GET_MP_PLAYER_ANIM_TYPE() = ENUM_TO_INT(INTERACTION_ANIM_TYPE_CREW)
RETURN INTERACTION_ANIMS_TEXT_LABEL(ENUM_TO_INT(INTERACTION_ANIM_TYPE_CREW), MPGlobalsInteractions.iMyCrewInteractionAnim)
ELSE
RETURN INTERACTION_ANIMS_TEXT_LABEL(ENUM_TO_INT(INTERACTION_ANIM_TYPE_PLAYER), GET_MP_PLAYER_ANIM_SETTING())
ENDIF
BREAK
CASE MP_SETTING_QUICK_ANIM_IN_VEH
RETURN INTERACTION_ANIMS_TEXT_LABEL(ENUM_TO_INT(INTERACTION_ANIM_TYPE_IN_CAR), GET_MP_PLAYER_VEH_ANIM_SETTING())
BREAK
CASE MP_SETTING_JOINT_CELEBRATION
SWITCH GET_MP_INT_CHARACTER_STAT(MP_STAT_MP_CHAR_STAT_RALLY_ANIM)
CASE 0
RETURN "PM_TOAST_0"//"mood_Aiming_1"
BREAK
CASE 1
RETURN "PM_TOAST_1"//"mood_Angry_1"
BREAK
CASE 2
RETURN "PM_TOAST_2"//"mood_Happy_1"
BREAK
CASE 3
RETURN "PM_TOAST_3"//"mood_Happy_1"
BREAK
CASE 4
RETURN "PM_TOAST_4"//"mood_Happy_1"
BREAK
CASE 5
RETURN "PM_TOAST_5"//"mood_Happy_1"
BREAK
CASE 6
RETURN "PM_TOAST_6"//"mood_Happy_1"
BREAK
ENDSWITCH
BREAK
CASE MP_SETTING_PL_MOOD_NORMAL
SWITCH GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_NORMAL)
CASE 0
RETURN "PM_MOOD_0"//"mood_Aiming_1"
BREAK
CASE 1
RETURN "PM_MOOD_1"//"mood_Angry_1"
BREAK
CASE 2
RETURN "PM_MOOD_2"//"mood_Happy_1"
BREAK
CASE 3
RETURN "PM_MOOD_3"//"mood_Injured_1"
BREAK
CASE 4
RETURN "PM_MOOD_4"//"mood_Normal_1"
BREAK
CASE 5
RETURN "PM_MOOD_5"//"mood_stressed_1"
BREAK
CASE 6
RETURN "PM_MOOD_6"//"mood_smug_1"
BREAK
CASE 7
RETURN "PM_MOOD_7"//"mood_sulk_1"
BREAK
ENDSWITCH
BREAK
CASE MP_SETTING_PL_MOOD_DM
SWITCH GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_DM)
CASE 0
RETURN "PM_MOOD_0"//"mood_Aiming_1"
BREAK
CASE 1
RETURN "PM_MOOD_1"//"mood_Angry_1"
BREAK
CASE 2
RETURN "PM_MOOD_2"//"mood_Happy_1"
BREAK
CASE 3
RETURN "PM_MOOD_3"//"mood_Injured_1"
BREAK
CASE 4
RETURN "PM_MOOD_4"//"mood_Normal_1"
BREAK
CASE 5
RETURN "PM_MOOD_5"//"mood_stressed_1"
BREAK
CASE 6
RETURN "PM_MOOD_6"//"mood_smug_1"
BREAK
CASE 7
RETURN "PM_MOOD_7"//"mood_sulk_1"
BREAK
ENDSWITCH
BREAK
CASE MP_SETTING_PL_MOOD_RACE
SWITCH GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_RACES)
CASE 0
RETURN "PM_MOOD_0"//"mood_Aiming_1"
BREAK
CASE 1
RETURN "PM_MOOD_1"//"mood_Angry_1"
BREAK
CASE 2
RETURN "PM_MOOD_2"//"mood_Happy_1"
BREAK
CASE 3
RETURN "PM_MOOD_3"//"mood_Injured_1"
BREAK
CASE 4
RETURN "PM_MOOD_4"//"mood_Normal_1"
BREAK
CASE 5
RETURN "PM_MOOD_5"//"mood_stressed_1"
BREAK
CASE 6
RETURN "PM_MOOD_6"//"mood_smug_1"
BREAK
CASE 7
RETURN "PM_MOOD_7"//"mood_sulk_1"
BREAK
ENDSWITCH
BREAK
CASE MP_SETTING_MATCHMAKING
IF NOT GET_PACKED_STAT_BOOL(PACKED_MP_MATCHMAKING_IS_PRIVATE)
RETURN "PM_MATCH_1"
ELSE
RETURN "PM_MATCH_0"
ENDIF
BREAK
CASE MP_SETTING_SPAWN_LOCATION
GET_SPAWN_LOCATION_VALUE()
MULTIPLAYER_SETTING_SPAWN iSpawnPoint
INT iTemp
iSpawnPoint = GET_MP_SPAWN_POINT_SETTING()
SWITCH iSpawnPoint
CASE MP_SETTING_SPAWN_PROPERTY
iTemp = GET_OWNED_PROPERTY_SLOT_INDEX(g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastAccessedPropertyID)
IF GET_OWNED_PROPERTY(iTemp) > 0
AND GET_OWNED_PROPERTY(iTemp) <= MAX_MP_PROPERTIES
tlSettingSpawnLocation = mpproperties[GET_OWNED_PROPERTY(iTemp)].tl_PropertyName
IF mpProperties[GET_OWNED_PROPERTY(iTemp)].iType = PROPERTY_TYPE_GARAGE
tlSettingSpawnLocation += "G"
ELSE
tlSettingSpawnLocation += "A"
ENDIF
IF ARE_STRINGS_EQUAL("A", tlSettingSpawnLocation)
OR ARE_STRINGS_EQUAL("G", tlSettingSpawnLocation)
//OR GET_CURRENT_LANGUAGE() != LANGUAGE_ENGLISH
IF iTemp = 1
tlSettingSpawnLocation = "PM_SPAWN_A2"
ELSE
tlSettingSpawnLocation = "PM_SPAWN_A"
ENDIF
ENDIF
ELSE
tlSettingSpawnLocation = "PM_SPAWN_H"
ENDIF
RETURN Get_String_From_TextLabel(tlSettingSpawnLocation)
CASE MP_SETTING_SPAWN_GARAGE
iTemp = GET_OWNED_PROPERTY_SLOT_INDEX(g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastAccessedPropertyID)
IF GET_OWNED_PROPERTY(iTemp) > 0
AND GET_OWNED_PROPERTY(iTemp) <= MAX_MP_PROPERTIES
tlSettingSpawnLocation = mpproperties[GET_OWNED_PROPERTY(iTemp)].tl_PropertyName
tlSettingSpawnLocation += "G"
IF ARE_STRINGS_EQUAL("G", tlSettingSpawnLocation)
//OR GET_CURRENT_LANGUAGE() != LANGUAGE_ENGLISH
IF iTemp = 1
IF mpProperties[GET_OWNED_PROPERTY(iTemp)].iType = PROPERTY_TYPE_GARAGE
tlSettingSpawnLocation = "PM_SPAWN_G2"
ELSE
tlSettingSpawnLocation = "PM_SPAWN_AG2"
ENDIF
ELSE
IF mpProperties[GET_OWNED_PROPERTY(iTemp)].iType = PROPERTY_TYPE_GARAGE
tlSettingSpawnLocation = "PM_SPAWN_G"
ELSE
tlSettingSpawnLocation = "PM_SPAWN_AG"
ENDIF
ENDIF
ENDIF
ELSE
tlSettingSpawnLocation = "PM_SPAWN_H"
ENDIF
RETURN Get_String_From_TextLabel(tlSettingSpawnLocation)
CASE MP_SETTING_SPAWN_LAST_POSITION RETURN "PM_SPAWN_LL"
CASE MP_SETTING_SPAWN_PRIVATE_YACHT RETURN "PM_SPAWN_Y"
CASE MP_SETTING_SPAWN_OFFICE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0) > 0
tlSettingSpawnLocation = mpproperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0)].tl_PropertyName
IF ARE_STRINGS_EQUAL("", tlSettingSpawnLocation)
OR ARE_STRINGS_EQUAL("S", tlSettingSpawnLocation)
//OR GET_CURRENT_LANGUAGE() != LANGUAGE_ENGLISH
tlSettingSpawnLocation = "PM_SPAWN_OFFICE"
ENDIF
ENDIF
RETURN Get_String_From_TextLabel(tlSettingSpawnLocation)
CASE MP_SETTING_SPAWN_CLUBHOUSE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE) > 0
tlSettingSpawnLocation = mpproperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE)].tl_PropertyName
IF ARE_STRINGS_EQUAL("", tlSettingSpawnLocation)
OR ARE_STRINGS_EQUAL("S", tlSettingSpawnLocation)
//OR GET_CURRENT_LANGUAGE() != LANGUAGE_ENGLISH
tlSettingSpawnLocation = "PM_SPAWN_CLUBH"
ENDIF
ENDIF
RETURN Get_String_From_TextLabel(tlSettingSpawnLocation)
CASE MP_SETTING_SPAWN_IE_WAREHOUSE RETURN "PM_SPAWN_IEWHS"
CASE MP_SETTING_SPAWN_BUNKER tlSettingSpawnLocation = "PM_SPAWN_BNKR"
IF GET_OWNED_BUNKER(PLAYER_ID()) != FACTORY_ID_INVALID
tlSettingSpawnLocation = GET_FACTORY_NAME_FROM_ID(GET_OWNED_BUNKER(PLAYER_ID()))
IF ARE_STRINGS_EQUAL("", tlSettingSpawnLocation)
OR ARE_STRINGS_EQUAL("S", tlSettingSpawnLocation)
//OR GET_CURRENT_LANGUAGE() != LANGUAGE_ENGLISH
tlSettingSpawnLocation = "PM_SPAWN_BNKR"
ENDIF
ENDIF
RETURN Get_String_From_TextLabel(tlSettingSpawnLocation)
CASE MP_SETTING_SPAWN_HANGAR RETURN "PM_SPAWN_HNGR"
CASE MP_SETTING_SPAWN_DEFUNCT_BASE RETURN "PM_SPAWN_BASE"
CASE MP_SETTING_SPAWN_NIGHTCLUB RETURN "PM_SPAWN_NIGHTC"
CASE MP_SETTING_SPAWN_ARENA_GARAGE RETURN "PM_SPAWN_ARENA"
CASE MP_SETTING_SPAWN_CASINO_APARTMENT RETURN "PM_SPAWN_CASINO"
CASE MP_SETTING_SPAWN_ARCADE RETURN "PM_SPAWN_ARCADE"
CASE MP_SETTING_SPAWN_SUBMARINE RETURN "PIM_SUBMARIN"
CASE MP_SETTING_SPAWN_CAR_MEET RETURN "PIM_S_CAR_MEET"
CASE MP_SETTING_SPAWN_AUTO_SHOP RETURN "PIM_S_AUTO_SHOP"
#IF FEATURE_FIXER
CASE MP_SETTING_SPAWN_FIXER_HQ RETURN "PIM_S_FIXER_HQ"
#ENDIF
CASE MP_SETTING_SPAWN_NULL
CASE MP_SETTING_SPAWN_RANDOM RETURN "PM_SPAWN_R"
ENDSWITCH
BREAK
CASE MP_SETTING_PLAYER_TITLES
SWITCH GET_MP_CHARACTER_TITLE_SETTING()
CASE MP_SETTING_TITLE_PERSONAL RETURN "PM_PERSONAL"
CASE MP_SETTING_TITLE_CREW RETURN "PM_CREW"
ENDSWITCH
BREAK
CASE MP_SETTING_BETTING_ODDS
SWITCH GET_MP_BETTING_ODDS_SETTING()
CASE MP_SETTING_ODDS_FRACTIONAL RETURN "PM_ODD_F"
CASE MP_SETTING_ODDS_DECIMAL RETURN "PM_ODD_D"
CASE MP_SETTING_ODDS_MONEYLINE RETURN "PM_ODD_M"
ENDSWITCH
BREAK
CASE MP_SETTING_AW_JOIN_FROM_SPECTATOR_BOX
IF NOT GET_MP_BOOL_PLAYER_STAT(MPPLY_AW_JOINSPEC)
RETURN "PM_JOIN"
ELSE
RETURN "PM_DONTJOIN"
ENDIF
BREAK
CASE MP_SETTING_ALLOW_SPECTATORS
IF GET_MP_BOOL_PLAYER_STAT(MPPLY_CAN_SPECTATE)
RETURN "PM_ON"
ELSE
RETURN "PM_OFF"
ENDIF
BREAK
// CASE MP_SETTING_EXPANDED_RADAR
// IF GET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_EXPANDED_RADAR)
// RETURN "PM_ON"
// ELSE
// RETURN "PM_OFF"
// ENDIF
// BREAK
// CASE MP_SETTING_EXPANDED_RADAR_NAMES
// IF GET_MP_BOOL_PLAYER_STAT(MPPLY_TOGGLE_OFF_BIG_RADAR)
// RETURN "PM_OFF"
// ELSE
// RETURN "PM_ON"
// ENDIF
// BREAK
CASE MP_SETTING_MARKER_DISPLAY
SWITCH GET_PACKED_STAT_INT(PACKED_MP_PLAYER_MARKER_DISPLAY)
CASE 0 RETURN "PM_DISPLAY_0"
CASE 1 RETURN "PM_DISPLAY_1"
CASE 2 RETURN "PM_DISPLAY_2"
CASE 3 RETURN "PM_DISPLAY_3"
ENDSWITCH
BREAK
CASE MP_SETTING_MATCH_AFTER_NJVS
IF IS_PC_VERSION()
IF GET_MP_BOOL_CHARACTER_STAT(MP_STAT_REMAINHOSTOPTION_PC)
RETURN "PM_ON"
ELSE
RETURN "PM_OFF"
ENDIF
ELSE
IF GET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_MATCHMAKING_AFTER_NJVS)
RETURN "PM_ON"
ELSE
RETURN "PM_OFF"
ENDIF
ENDIF
BREAK
CASE MP_SETTING_CONTENT_FILTER
SWITCH GET_PACKED_STAT_INT(PACKED_MP_CHAR_CONTENT_FILTERING)
CASE ciPAUSE_MENU_CONTENT_TYPE_ALL RETURN "PM_CF_ALL"
CASE ciPAUSE_MENU_CONTENT_TYPE_ROCKSTAR RETURN "PM_CF_RSTAR"
CASE ciPAUSE_MENU_CONTENT_TYPE_USER RETURN "PM_CF_USER"
ENDSWITCH
BREAK
CASE MP_SETTING_ONE_ON_ONE_DM
SWITCH GET_MP_INT_CHARACTER_STAT(MP_STAT_TIME_FOR_ONE_ON_ONE_DM)
CASE 0 RETURN "PIM_IDMT0" //5 minutes
CASE 1 RETURN "PIM_IDMT1" //10 minutes
CASE 2 RETURN "PIM_IDMT2" //15 minutes
CASE 3 RETURN "PIM_IDMT3" //20 minutes
CASE 4 RETURN "PIM_IDMT4" //30 minutes
CASE 5 RETURN "PIM_IDMT5" //45 minutes
CASE 6 RETURN "PIM_IDMT6" //60 minutes
ENDSWITCH
BREAK
CASE MP_SETTING_MP_VERSION
RETURN GET_ONLINE_VERSION()
BREAK
ENDSWITCH
RETURN ""
ENDFUNC
FUNC BOOL IS_LOCAL_PLAYER_IN_ACTIVE_CREW()
GAMER_HANDLE GamerHandle = GET_LOCAL_GAMER_HANDLE()
IF IS_PLAYER_ONLINE()
IF NETWORK_CLAN_SERVICE_IS_VALID() AND NETWORK_CLAN_PLAYER_IS_ACTIVE(GamerHandle)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
//FUNC BOOL IS_LOCAL_PLAYER_ANIM_VALID(INT iAnim)
//
// //Check if Blow Kiss is Active
// IF g_sMPTunables.bvalentine_blow_kiss_anim_active = FALSE
// IF iAnim = ENUM_TO_INT(PASSENGER_INTERACTION_BLOW_KISS)
// OR iAnim = ENUM_TO_INT(PLAYER_INTERACTION_BLOW_KISS)
// CPRINTLN(DEBUG_PAUSE_MENU, "IS_LOCAL_PLAYER_ANIM_VALID - FALSE - BLOW KISS - ON FOOT")
// RETURN FALSE
// ENDIF
// ELSE
// CPRINTLN(DEBUG_PAUSE_MENU, "IS_CORONA_PLAYER_ANIM_VALID - g_sMPTunables.bvalentine_blow_kiss_anim_active = TRUE")
// ENDIF
// CPRINTLN(DEBUG_PAUSE_MENU, "IS_CORONA_PLAYER_ANIM_VALID - TRUE")
// RETURN TRUE
//ENDFUNC
//Purpose: Check if the spawn selection needs to skip any property or garage options (Incrementing)
PROC INCREMENT_SPAWN_LOCATION()
//Property
IF iMenuSpawnLocation = SPAWN_APT_1
IF mpProperties[GET_OWNED_PROPERTY(0)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(0) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 1 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_2
IF mpProperties[GET_OWNED_PROPERTY(1)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(1) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 2 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_3
IF mpProperties[GET_OWNED_PROPERTY(2)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(2) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 3 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_4
IF mpProperties[GET_OWNED_PROPERTY(3)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(3) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 4 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_5
IF mpProperties[GET_OWNED_PROPERTY(4)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(4) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 5 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
iMenuSpawnLocation = SPAWN_APT_6
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_6
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 6 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_7
ENDIF
ENDIF
#IF FEATURE_SUMMER_2020
IF iMenuSpawnLocation = SPAWN_APT_7
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 7 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_8
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_8
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 8 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_9
ENDIF
ENDIF
#ENDIF
IF iMenuSpawnLocation = SPAWN_APT_9
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 9 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_10
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_10 //MAX_OWNED_PROPERTIES //OLD PROPERTIES
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP PROPERTY 10 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_1
ENDIF
ENDIF
//Garage
IF iMenuSpawnLocation = SPAWN_GAR_1
IF GET_OWNED_PROPERTY(0) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 1 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_2
IF GET_OWNED_PROPERTY(1) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 2 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_3
IF GET_OWNED_PROPERTY(2) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 3 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_4
IF GET_OWNED_PROPERTY(3) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 4 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_5
IF GET_OWNED_PROPERTY(4) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 5 = ", iMenuSpawnLocation)
iMenuSpawnLocation++
iMenuSpawnLocation = SPAWN_GAR_6
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_6
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 6 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_7
ENDIF
ENDIF
#IF FEATURE_SUMMER_2020
IF iMenuSpawnLocation = SPAWN_GAR_7
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 7 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_8
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_8
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 8 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_9
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_9
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 9 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_10
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_10 //MAX_OWNED_PROPERTIES //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP GARAGE 10 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_PRIVATE_YACHT
ENDIF
ENDIF
#ENDIF
//Yacht
IF iMenuSpawnLocation = SPAWN_PRIVATE_YACHT
IF NOT DOES_PLAYER_OWN_PRIVATE_YACHT(PLAYER_ID())
OR g_sMPTunables.byacht_disable_yacht_as_spawn_location
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP YACHT = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_OFFICE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0) = 0
OR NOT DOES_PROPERTY_HAVE_LIVING_QUATERS_ENABLED(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0))
OR g_sMPTunables.bexec_disable_office_spawn
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP OFFICE = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_CLUBHOUSE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE) = 0
OR BLOCK_CLUBHOUSE_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP CLUBHOUSE = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_IE_WAREHOUSE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_IE_WAREHOUSE) = 0
OR NOT HAS_LOCAL_PLAYER_VIEWED_IE_WAREHOUSE_INTRO_CUTSCENE()
OR BLOCK_IE_WAREHOUSE_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP VEH WAREHOUSE = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_BUNKER
IF GET_OWNED_BUNKER(PLAYER_ID()) = FACTORY_ID_INVALID
OR NOT IS_BUNKER_SAVEBED_PURCHASED()
OR NOT HAS_LOCAL_PLAYER_VIEWED_INTERIOR_CUTSCENE(biFmCut_Bunker_Intro_Cutscene)
OR BLOCK_BUNKER_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP BUNKER = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_HANGAR
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_HANGAR) = 0
OR NOT IS_HANGAR_PERSONAL_QUARTERS_PURCHASED()
OR NOT HAS_LOCAL_PLAYER_VIEWED_INTERIOR_CUTSCENE(biFmCut_Hangar_Intro_Cutscene)
OR BLOCK_HANGAR_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP HANGAR = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_DEFUNCT_BASE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_DEFUNCBASE) = 0
OR NOT HAS_LOCAL_PLAYER_PURCHASED_DEFUNCT_BASE_PERSONAL_QUARTERS()
OR NOT HAS_LOCAL_PLAYER_VIEWED_INTERIOR_CUTSCENE(biFmCut_Base_Intro_Cutscene)
OR BLOCK_DEFUNCT_BASE_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP DEFUNCT BASE = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_NIGHTCLUB
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_NIGHTCLUB) = 0
OR NOT DOES_PLAYER_OWN_A_NIGHTCLUB(PLAYER_ID())
OR NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdBusinessHubData.iBSSetupMissionCompleted, PROPERTY_BROADCAST_BS_SETUP_COMPLETE_COLLECT_DJ) //HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(PLAYER_ID(), MBV_COLLECT_DJ_CRASH)
OR BLOCK_NIGHTCLUB_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP NIGHTCLUB = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_ARENA_GARAGE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL1) = 0
OR NOT DOES_PLAYER_OWN_AN_ARENA_GARAGE(PLAYER_ID())
OR NOT HAS_LOCAL_PLAYER_PURCHASED_ARENA_GARAGE_PERSONAL_QUARTERS()
OR NOT HAS_LOCAL_PLAYER_VIEWED_ARENA_MOCAP_SCENE_2()
OR BLOCK_ARENA_GARAGE_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP ARENA GARAGE = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_CASINO_APARTMENT
IF NOT DOES_PLAYER_OWN_A_CASINO_APARTMENT(PLAYER_ID())
OR BLOCK_CASINO_APARTMENT_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_VIEWED_CASINO_PENTHOUSE_MOCAP()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP CASINO APARTMENT = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_ARCADE
IF NOT DOES_PLAYER_OWN_AN_ARCADE_PROPERTY(PLAYER_ID())
OR BLOCK_ARCADE_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_PURCHASED_ARCADE_PERSONAL_QUARTERS()
OR NOT HAS_LOCAL_PLAYER_COMPLETE_FULL_ARCADE_SETUP()
OR NOT HAS_LOCAL_PLAYER_VIEWED_ARCADE_MOCAP()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP ARCADE = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_SUBMARINE
IF NOT IS_SUBMARINE_OWNED_BY_CHARACTER()
OR BLOCK_SUBMARINE_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_VIEWED_HS4_SUBMARINE_MOCAP()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP SUBMARINE = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_CAR_MEET
IF BLOCK_CAR_MEET_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_VIEWED_CAR_MEET_MOCAP()
OR NOT HAS_PLAYER_PURCHASED_CAR_CLUB_MEMBERSHIP(PLAYER_ID())
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP CAR MEET = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_AUTO_SHOP
IF NOT IS_AUTO_SHOP_OWNED_BY_CHARACTER()
OR BLOCK_AUTO_SHOP_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_PURCHASED_AUTO_SHOP_PERSONAL_QUARTERS(TRUE)
OR NOT HAS_LOCAL_PLAYER_COMPLETED_AUTO_SHOP_SETUP_MISSION(TRUE)
OR NOT HAS_LOCAL_PLAYER_VIEWED_AUTO_SHOP_SETUP_CUTSCENE()
OR NOT HAS_LOCAL_PLAYER_VIEWED_AUTO_SHOP_FINISHED_SETUP_CUTSCENE()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP AUTO SHOP = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
#IF FEATURE_FIXER
IF iMenuSpawnLocation = SPAWN_FIXER_HQ
IF NOT IS_FIXER_HQ_OWNED_BY_CHARACTER()
OR BLOCK_FIXER_HQ_SPAWNING()
OR NOT HAS_PLAYER_PURCHASED_FIXER_HQ_UPGRADE_PERSONAL_QUARTERS(PLAYER_ID())
OR NOT HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_INTRO_CUTSCENE()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP FIXER_HQ = ", iMenuSpawnLocation)
iMenuSpawnLocation++
ENDIF
ENDIF
#ENDIF
ENDPROC
//Purpose: Check if the spawn selection needs to skip any property or garage options (Decrement)
PROC DECREMENT_SPAWN_LOCATION()
#IF FEATURE_FIXER
IF iMenuSpawnLocation = SPAWN_FIXER_HQ
IF NOT IS_FIXER_HQ_OWNED_BY_CHARACTER()
OR BLOCK_FIXER_HQ_SPAWNING()
OR NOT HAS_PLAYER_PURCHASED_FIXER_HQ_UPGRADE_PERSONAL_QUARTERS(PLAYER_ID())
OR NOT HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_INTRO_CUTSCENE()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN RIGHT - SKIP FIXER_HQ = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
#ENDIF
IF iMenuSpawnLocation = SPAWN_CAR_MEET
IF BLOCK_CAR_MEET_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_VIEWED_CAR_MEET_MOCAP()
OR NOT HAS_PLAYER_PURCHASED_CAR_CLUB_MEMBERSHIP(PLAYER_ID())
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP CAR MEET = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_AUTO_SHOP
IF NOT IS_AUTO_SHOP_OWNED_BY_CHARACTER()
OR BLOCK_AUTO_SHOP_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_PURCHASED_AUTO_SHOP_PERSONAL_QUARTERS(TRUE)
OR NOT HAS_LOCAL_PLAYER_COMPLETED_AUTO_SHOP_SETUP_MISSION(TRUE)
OR NOT HAS_LOCAL_PLAYER_VIEWED_AUTO_SHOP_SETUP_CUTSCENE()
OR NOT HAS_LOCAL_PLAYER_VIEWED_AUTO_SHOP_FINISHED_SETUP_CUTSCENE()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP CAR MEET = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_SUBMARINE
IF NOT IS_SUBMARINE_OWNED_BY_CHARACTER()
OR BLOCK_SUBMARINE_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_VIEWED_HS4_SUBMARINE_MOCAP()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP SUBMARINE = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_ARCADE
IF NOT DOES_PLAYER_OWN_AN_ARCADE_PROPERTY(PLAYER_ID())
OR BLOCK_ARCADE_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_PURCHASED_ARCADE_PERSONAL_QUARTERS()
OR NOT HAS_LOCAL_PLAYER_COMPLETE_FULL_ARCADE_SETUP()
OR NOT HAS_LOCAL_PLAYER_VIEWED_ARCADE_MOCAP()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP ARCADE = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_CASINO_APARTMENT
IF NOT DOES_PLAYER_OWN_A_CASINO_APARTMENT(PLAYER_ID())
OR BLOCK_CASINO_APARTMENT_SPAWNING()
OR NOT HAS_LOCAL_PLAYER_VIEWED_CASINO_PENTHOUSE_MOCAP()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] INCREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP CASINO APARTMENT = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_ARENA_GARAGE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_ARENAWARS_GARAGE_LVL1) = 0
OR NOT HAS_LOCAL_PLAYER_PURCHASED_ARENA_GARAGE_PERSONAL_QUARTERS()
OR NOT HAS_LOCAL_PLAYER_VIEWED_ARENA_MOCAP_SCENE_2()
OR BLOCK_ARENA_GARAGE_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP ARENA GARAGE = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_NIGHTCLUB
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_NIGHTCLUB) = 0
OR NOT IS_BIT_SET(GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].propertyDetails.bdBusinessHubData.iBSSetupMissionCompleted, PROPERTY_BROADCAST_BS_SETUP_COMPLETE_COLLECT_DJ) //HAS_PLAYER_COMPLETED_NIGHTCLUB_SETUP_MISSION(PLAYER_ID(), MBV_COLLECT_DJ_CRASH)
OR BLOCK_NIGHTCLUB_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP NIGHTCLUB = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_DEFUNCT_BASE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_DEFUNCBASE) = 0
OR NOT HAS_LOCAL_PLAYER_PURCHASED_DEFUNCT_BASE_PERSONAL_QUARTERS()
OR NOT HAS_LOCAL_PLAYER_VIEWED_INTERIOR_CUTSCENE(biFmCut_Base_Intro_Cutscene)
OR BLOCK_DEFUNCT_BASE_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP DEFUNCT BASE = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_HANGAR
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_HANGAR) = 0
OR NOT IS_HANGAR_PERSONAL_QUARTERS_PURCHASED()
OR NOT HAS_LOCAL_PLAYER_VIEWED_INTERIOR_CUTSCENE(biFmCut_Hangar_Intro_Cutscene)
OR BLOCK_HANGAR_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP HANGAR = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_BUNKER
IF GET_OWNED_BUNKER(PLAYER_ID()) = FACTORY_ID_INVALID
OR NOT IS_BUNKER_SAVEBED_PURCHASED()
OR NOT HAS_LOCAL_PLAYER_VIEWED_INTERIOR_CUTSCENE(biFmCut_Bunker_Intro_Cutscene)
OR BLOCK_BUNKER_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP BUNKER = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_IE_WAREHOUSE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_IE_WAREHOUSE) = 0
OR NOT HAS_LOCAL_PLAYER_VIEWED_IE_WAREHOUSE_INTRO_CUTSCENE()
OR BLOCK_IE_WAREHOUSE_SPAWNING()
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP VEH WAREHOUSE = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_CLUBHOUSE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_CLUBHOUSE) = 0
OR BLOCK_CLUBHOUSE_SPAWNING()
//OR NOT DOES_PROPERTY_HAVE_LIVING_QUATERS_ENABLED(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0))
//OR g_sMPTunables.bexec_disable_office_spawn
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP CLUBHOUSE = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_OFFICE
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0) = 0
OR NOT DOES_PROPERTY_HAVE_LIVING_QUATERS_ENABLED(GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_OFFICE_0))
OR g_sMPTunables.bexec_disable_office_spawn
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP OFFICE= ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
//Yacht
IF iMenuSpawnLocation = SPAWN_PRIVATE_YACHT
IF NOT DOES_PLAYER_OWN_PRIVATE_YACHT(PLAYER_ID())
OR g_sMPTunables.byacht_disable_yacht_as_spawn_location
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP YACHT = ", iMenuSpawnLocation)
iMenuSpawnLocation--
iMenuSpawnLocation = SPAWN_GAR_6
ENDIF
ENDIF
//Garage
IF iMenuSpawnLocation = SPAWN_GAR_10 //MAX_OWNED_PROPERTIES //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 10 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_9
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_9
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 9 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_8
ENDIF
ENDIF
#IF FEATURE_SUMMER_2020
IF iMenuSpawnLocation = SPAWN_GAR_8
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 8 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_7
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_7
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 7 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_6
ENDIF
ENDIF
#ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_6
IF GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 6 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_5
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_5
IF GET_OWNED_PROPERTY(4) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 5 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_GAR_4
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_4
IF GET_OWNED_PROPERTY(3) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 4 = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_3
IF GET_OWNED_PROPERTY(2) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 3 = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_2
IF GET_OWNED_PROPERTY(1) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 2 = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_GAR_1
IF GET_OWNED_PROPERTY(0) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP GARAGE 1 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_6
#IF FEATURE_SUMMER_2020
iMenuSpawnLocation = SPAWN_APT_8
#ENDIF
ENDIF
ENDIF
//Property
IF iMenuSpawnLocation = SPAWN_APT_10 //MAX_OWNED_PROPERTIES //CDM PROPERTY STAT UPDATE //OLD PROPERTIES
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_10) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 10 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_9
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_9
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_9) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 9 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_8
ENDIF
ENDIF
#IF FEATURE_SUMMER_2020
IF iMenuSpawnLocation = SPAWN_APT_8
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_8) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 8 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_7
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_7
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_7) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 7 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_6
ENDIF
ENDIF
#ENDIF
IF iMenuSpawnLocation = SPAWN_APT_6
IF mpProperties[GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(PROPERTY_OWNED_SLOT_APT_6) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 6 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_5
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_5
IF mpProperties[GET_OWNED_PROPERTY(4)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(4) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 5 = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_APT_4
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_4
IF mpProperties[GET_OWNED_PROPERTY(3)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(3) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 4 = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_3
IF mpProperties[GET_OWNED_PROPERTY(2)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(2) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 3 = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_2
IF mpProperties[GET_OWNED_PROPERTY(1)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(1) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 2 = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation = SPAWN_APT_1
IF mpProperties[GET_OWNED_PROPERTY(0)].iType = PROPERTY_TYPE_GARAGE
OR GET_OWNED_PROPERTY(0) = 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - SKIP PROPERTY 1 = ", iMenuSpawnLocation)
iMenuSpawnLocation--
ENDIF
ENDIF
IF iMenuSpawnLocation < 0
CPRINTLN(DEBUG_PAUSE_MENU, "[PM_MissionCreator_Public] DECREMENT_SPAWN_LOCATION - SPAWN LEFT - INVALID = ", iMenuSpawnLocation)
iMenuSpawnLocation = SPAWN_RANDOM
ENDIF
ENDPROC
FUNC BOOL PLAYER_CAN_CHANGE_ANIM_MISS_CREATOR(PED_INDEX pedId)
IF NETWORK_IS_ACTIVITY_SESSION()
IF IS_LOCAL_PLAYER_IN_ARENA_SPECTATOR_BOX()
RETURN TRUE
ENDIF
IF IS_THIS_ROCKSTAR_MISSION_NEW_VS_VEHICULAR_VENDETTA(g_FMMC_STRUCT.iAdversaryModeType)
OR IS_THIS_ROCKSTAR_MISSION_NEW_VS_DCTL(g_FMMC_STRUCT.iAdversaryModeType)
OR IS_THIS_ROCKSTAR_MISSION_NEW_VS_TURF_WARZONE(g_FMMC_STRUCT.iAdversaryModeType)
RETURN FALSE
ENDIF
IF IS_THIS_AN_ADVERSARY_MODE_MISSION(g_FMMC_STRUCT.iRootContentIDHash, g_FMMC_STRUCT.iAdversaryModeType)
RETURN FALSE
ENDIF
ENDIF
UNUSED_PARAMETER(pedId)
RETURN TRUE
ENDFUNC
/// PURPOSE: Increments setting option in direction passed
PROC INCREMENT_PAUSE_MENU_SETTING(INT iSetting, BOOL nextSetting)
MULTIPLAYER_SETTINGS_ENUM aSetting = INT_TO_ENUM(MULTIPLAYER_SETTINGS_ENUM, iSetting)
INT iCurrentSetting
// INT iLoop
SWITCH aSetting
// CASE MP_SETTING_PASSIVE_MODE
// IF IS_MP_PASSIVE_MODE_ENABLED()
// CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] DISABLE_MP_PASSIVE_MODE 2")
// DISABLE_MP_PASSIVE_MODE()
// ELSE
// IF CAN_USE_PASSIVE_MODE() = 0
// CPRINTLN(DEBUG_PAUSE_MENU, "[JA@PAUSEMENU] ENABLE_MP_PASSIVE_MODE 2")
// ENABLE_MP_PASSIVE_MODE()
// ENDIF
// ENDIF
// BREAK
CASE MP_SETTING_QUICK_ANIM_ON_FOOT
IF IS_NET_PLAYER_OK(PLAYER_ID())
AND IS_SAFE_TO_PLAY_ON_FOOT_INTERACTION()
AND PLAYER_CAN_CHANGE_ANIM_MISS_CREATOR(player_ped_id())
AND !SHOULD_BLOCK_QUICK_ACTION_INTERACTION()
iCurrentSetting = GET_MP_PLAYER_ANIM_SETTING()
INT iAnimType
iAnimType = GET_MP_PLAYER_ANIM_TYPE()
IF iAnimType = ENUM_TO_INT(INTERACTION_ANIM_TYPE_CREW)
CPRINTLN(DEBUG_PAUSE_MENU, "MP_SETTING_QUICK_ANIM_ON_FOOT - iAnimType = INTERACTION_ANIM_TYPE_CREW")
IF nextSetting
iCurrentSetting = 0
ELSE
iCurrentSetting = (GET_MAX_PLAYER_INTERACTIONS()-1)
ENDIF
iAnimType = ENUM_TO_INT(INTERACTION_ANIM_TYPE_PLAYER)
ELSE
CPRINTLN(DEBUG_PAUSE_MENU, "MP_SETTING_QUICK_ANIM_ON_FOOT - iAnimType = INTERACTION_ANIM_TYPE_PLAYER")
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
IF MPGlobalsInteractions.iMyCrewInteractionAnim != -1
AND IS_LOCAL_PLAYER_IN_ACTIVE_CREW()
iCurrentSetting = MPGlobalsInteractions.iMyCrewInteractionAnim //MP_SETTING_QUICK_ANIM_CREW
iAnimType = ENUM_TO_INT(INTERACTION_ANIM_TYPE_CREW)
ELSE
iCurrentSetting = (GET_MAX_PLAYER_INTERACTIONS()-1)
iAnimType = ENUM_TO_INT(INTERACTION_ANIM_TYPE_PLAYER)
ENDIF
ENDIF
IF iCurrentSetting > GET_MAX_PLAYER_INTERACTIONS()-1
IF MPGlobalsInteractions.iMyCrewInteractionAnim != -1
AND IS_LOCAL_PLAYER_IN_ACTIVE_CREW()
iCurrentSetting = MPGlobalsInteractions.iMyCrewInteractionAnim //MP_SETTING_QUICK_ANIM_CREW
iAnimType = ENUM_TO_INT(INTERACTION_ANIM_TYPE_CREW)
ELSE
iCurrentSetting = 0
iAnimType = ENUM_TO_INT(INTERACTION_ANIM_TYPE_PLAYER)
ENDIF
ENDIF
ENDIF
SET_MP_PLAYER_ANIM_SETTING(iAnimType, iCurrentSetting)
ENDIF
BREAK
CASE MP_SETTING_QUICK_ANIM_IN_VEH
IF IS_NET_PLAYER_OK(PLAYER_ID())
AND IS_SAFE_TO_PLAY_IN_CAR_INTERACTION()
AND PLAYER_CAN_CHANGE_ANIM_MISS_CREATOR(player_ped_id())
AND !SHOULD_BLOCK_QUICK_ACTION_INTERACTION()
iCurrentSetting = GET_MP_PLAYER_VEH_ANIM_SETTING()
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = (GET_MAX_PASSENGER_INTERACTIONS()-1)
ENDIF
IF iCurrentSetting > GET_MAX_PASSENGER_INTERACTIONS()-1
iCurrentSetting = 0
ENDIF
SET_MP_PLAYER_VEH_ANIM_SETTING(iCurrentSetting)
ENDIF
BREAK
CASE MP_SETTING_JOINT_CELEBRATION
iCurrentSetting = GET_MP_INT_CHARACTER_STAT(MP_STAT_MP_CHAR_STAT_RALLY_ANIM)
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = 6
ENDIF
IF iCurrentSetting > 6
iCurrentSetting = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_MP_CHAR_STAT_RALLY_ANIM, iCurrentSetting)
BREAK
CASE MP_SETTING_PL_MOOD_RACE
iCurrentSetting = GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_RACES)
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = (MAX_PLAYER_MOODS-1)
ENDIF
IF iCurrentSetting >= MAX_PLAYER_MOODS
iCurrentSetting = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_RACES, iCurrentSetting)
MPGlobalsAmbience.bUpdatePlayerMoodRace = TRUE
BREAK
CASE MP_SETTING_PL_MOOD_NORMAL
iCurrentSetting = GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_NORMAL)
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = (MAX_PLAYER_MOODS-1)
ENDIF
IF iCurrentSetting >= MAX_PLAYER_MOODS
iCurrentSetting = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_NORMAL, iCurrentSetting)
MPGlobalsAmbience.bUpdatePlayerMoodNormal = TRUE
BREAK
CASE MP_SETTING_PL_MOOD_DM
iCurrentSetting = GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_DM)
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = (MAX_PLAYER_MOODS-1)
ENDIF
IF iCurrentSetting >= MAX_PLAYER_MOODS
iCurrentSetting = 0
ENDIF
SET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_MOOD_DM, iCurrentSetting)
MPGlobalsAmbience.bUpdatePlayerMoodDM = TRUE
BREAK
CASE MP_SETTING_MATCHMAKING
IF GET_PACKED_STAT_BOOL(PACKED_MP_MATCHMAKING_IS_PRIVATE)
iCurrentSetting = 0
SET_PACKED_STAT_BOOL(PACKED_MP_MATCHMAKING_IS_PRIVATE, FALSE)
ELSE
iCurrentSetting = 1
SET_PACKED_STAT_BOOL(PACKED_MP_MATCHMAKING_IS_PRIVATE, TRUE)
ENDIF
BREAK
CASE MP_SETTING_SPAWN_LOCATION
CPRINTLN(DEBUG_PAUSE_MENU, "MP_SETTING_SPAWN_LOCATION - OLD iMenuSpawnLocation = ", iMenuSpawnLocation)
IF nextSetting
//Jump to the begining of the menu
IF iMenuSpawnLocation = SPAWN_RANDOM
iMenuSpawnLocation = SPAWN_APT_1
ELSE
iMenuSpawnLocation++
ENDIF
INCREMENT_SPAWN_LOCATION()
CPRINTLN(DEBUG_PAUSE_MENU, "MP_SETTING_SPAWN_LOCATION - NEW iMenuSpawnLocation = ", iMenuSpawnLocation)
ELSE
IF iMenuSpawnLocation = SPAWN_APT_1
//Jump to the begining of the menu
iMenuSpawnLocation = SPAWN_RANDOM
ELSE
iMenuSpawnLocation--
ENDIF
DECREMENT_SPAWN_LOCATION()
CPRINTLN(DEBUG_PAUSE_MENU, "MP_SETTING_SPAWN_LOCATION - NEW iMenuSpawnLocation = ", iMenuSpawnLocation)
ENDIF
//Set the globals based on the new option
SET_MP_SPAWN_POINT_FROM_MENU_OPTION()
SET_LAST_USED_PROPERTY_FROM_MENU_SELECTION()
BREAK
CASE MP_SETTING_PLAYER_TITLES
iCurrentSetting = ENUM_TO_INT(GET_MP_CHARACTER_TITLE_SETTING())
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = ENUM_TO_INT(MP_SETTING_TITLE_MAX) - 1
ENDIF
IF iCurrentSetting >= ENUM_TO_INT(MP_SETTING_TITLE_MAX)
iCurrentSetting = 0
ENDIF
SET_MP_CHARACTER_TITLE_SETTING(INT_TO_ENUM(MULTIPLAYER_SETTING_TITLE, iCurrentSetting))
BREAK
CASE MP_SETTING_BETTING_ODDS
iCurrentSetting = ENUM_TO_INT(GET_MP_BETTING_ODDS_SETTING())
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = ENUM_TO_INT(MP_SETTING_ODDS_MAX) - 1
ENDIF
IF iCurrentSetting >= ENUM_TO_INT(MP_SETTING_ODDS_MAX)
iCurrentSetting = 0
ENDIF
SET_MP_PLAYER_BETTING_ODDS_SETTING(INT_TO_ENUM(MULTIPLAYER_SETTING_BETTING_ODDS, iCurrentSetting))
BREAK
CASE MP_SETTING_SUICIDE
//IF GET_PLAYER_CASH(PLAYER_ID()) >= KILL_YOURSELF_COST
// GIVE_LOCAL_PLAYER_CASH(-KILL_YOURSELF_COST, TRUE)
g_MultiplayerSettings.g_bSuicide = TRUE
CPRINTLN(DEBUG_PAUSE_MENU, "PAUSE MENU - MP_SETTING_SUICIDE - DONE")
//ELSE
// CPRINTLN(DEBUG_PAUSE_MENU, "PAUSE MENU - MP_SETTING_SUICIDE - PLAYER CAN'T AFFORD $", KILL_YOURSELF_COST)
//ENDIF
BREAK
CASE MP_SETTING_AW_JOIN_FROM_SPECTATOR_BOX
IF NOT GET_MP_BOOL_PLAYER_STAT(MPPLY_AW_JOINSPEC)
// Don't Join
iCurrentSetting = 0
IF DOES_PLAYER_OWN_AN_ARENA_GARAGE(PLAYER_ID())
SET_MP_BOOL_PLAYER_STAT(MPPLY_AW_JOINSPEC, TRUE)
SET_LOCAL_PLAYER_STAYS_IN_ARENA_BOX_BETWEEN_ROUNDS(TRUE)
ENDIF
ELSE
// Join
iCurrentSetting = 1
IF DOES_PLAYER_OWN_AN_ARENA_GARAGE(PLAYER_ID())
SET_MP_BOOL_PLAYER_STAT(MPPLY_AW_JOINSPEC, FALSE)
SET_LOCAL_PLAYER_STAYS_IN_ARENA_BOX_BETWEEN_ROUNDS(FALSE)
ENDIF
ENDIF
BREAK
CASE MP_SETTING_ALLOW_SPECTATORS
IF GET_MP_BOOL_PLAYER_STAT(MPPLY_CAN_SPECTATE)
iCurrentSetting = 0
SET_MP_BOOL_PLAYER_STAT(MPPLY_CAN_SPECTATE, FALSE)
ELSE
iCurrentSetting = 1
SET_MP_BOOL_PLAYER_STAT(MPPLY_CAN_SPECTATE, TRUE)
ENDIF
BREAK
//
// CASE MP_SETTING_EXPANDED_RADAR
// IF GET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_EXPANDED_RADAR)
// iCurrentSetting = 0
// SET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_EXPANDED_RADAR, FALSE)
// ELSE
// iCurrentSetting = 1
// SET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_EXPANDED_RADAR, TRUE)
// ENDIF
// BREAK
//
// CASE MP_SETTING_EXPANDED_RADAR_NAMES
// IF GET_MP_BOOL_PLAYER_STAT(MPPLY_TOGGLE_OFF_BIG_RADAR)
// iCurrentSetting = 0
// SET_MP_BOOL_PLAYER_STAT(MPPLY_TOGGLE_OFF_BIG_RADAR, FALSE)
// ELSE
// iCurrentSetting = 1
// SET_MP_BOOL_PLAYER_STAT(MPPLY_TOGGLE_OFF_BIG_RADAR, TRUE)
// ENDIF
// BREAK
CASE MP_SETTING_MARKER_DISPLAY
iCurrentSetting = GET_PACKED_STAT_INT(PACKED_MP_PLAYER_MARKER_DISPLAY)
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = 3
ENDIF
IF iCurrentSetting > 3
iCurrentSetting = 0
ENDIF
IF iCurrentSetting = 1 // Name & Crew Tag
IF IS_PLAYSTATION_PLATFORM()
IF !NETWORK_HAVE_USER_CONTENT_PRIVILEGES(PC_EVERYONE)
OR !NETWORK_HAVE_SCS_PRIVATE_MSG_PRIV()
iCurrentSetting = 2
ENDIF
ENDIF
ENDIF
SET_PACKED_STAT_INT(PACKED_MP_PLAYER_MARKER_DISPLAY, iCurrentSetting)
BREAK
CASE MP_SETTING_SESSION_CREWS
iCurrentSetting = GET_MP_SESSION_CREWS_NUM()
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < PAUSE_MENU_MIN_SESSION_CREWS
iCurrentSetting = PAUSE_MENU_MAX_SESSION_CREWS
ENDIF
IF iCurrentSetting > PAUSE_MENU_MAX_SESSION_CREWS
iCurrentSetting = PAUSE_MENU_MIN_SESSION_CREWS
ENDIF
SET_MP_SESSION_CREWS_NUM(iCurrentSetting)
// SET_MP_SESSION_CREWS_NUM(0)
BREAK
CASE MP_SETTING_MATCH_AFTER_NJVS
IF !g_sMPTunables.bDisableNjvsQuickMatch
IF IS_PC_VERSION()
IF GET_MP_BOOL_CHARACTER_STAT(MP_STAT_REMAINHOSTOPTION_PC)
iCurrentSetting = 1
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_REMAINHOSTOPTION_PC, FALSE)
PRINTLN("[TS] SET_MP_BOOL_CHARACTER_STAT(MP_STAT_REMAINHOSTOPTION_PC, FALSE)")
ELSE
iCurrentSetting = 0
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_REMAINHOSTOPTION_PC, TRUE)
PRINTLN("[TS] SET_MP_BOOL_CHARACTER_STAT(MP_STAT_REMAINHOSTOPTION_PC, TRUE)")
ENDIF
ELSE
IF GET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_MATCHMAKING_AFTER_NJVS)
iCurrentSetting = 1
SET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_MATCHMAKING_AFTER_NJVS, FALSE)
PRINTLN("[TS] SET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_MATCHMAKING_AFTER_NJVS, FALSE)")
ELSE
iCurrentSetting = 0
SET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_MATCHMAKING_AFTER_NJVS, TRUE)
PRINTLN("[TS] SET_PACKED_STAT_BOOL(PACKED_MP_TOGGLE_MATCHMAKING_AFTER_NJVS, TRUE)")
ENDIF
ENDIF
ENDIF
BREAK
CASE MP_SETTING_CONTENT_FILTER
iCurrentSetting = GET_PACKED_STAT_INT(PACKED_MP_CHAR_CONTENT_FILTERING)
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = (PAUSE_MENU_MAX_CONTENT_FILTER_OPTIONS-1)
ENDIF
IF IS_ACCOUNT_OVER_17_FOR_UGC()
AND NETWORK_HAVE_USER_CONTENT_PRIVILEGES()
IF iCurrentSetting >= PAUSE_MENU_MAX_CONTENT_FILTER_OPTIONS
iCurrentSetting = 0
ENDIF
ELSE
IF iCurrentSetting >= PAUSE_MENU_MAX_CONTENT_FILTER_OPTIONS-1
iCurrentSetting = 0
ENDIF
ENDIF
PRINTLN("[TS] SET_PACKED_STAT_INT(SET_PACKED_STAT_INT, ", iCurrentSetting, ")")
SET_PACKED_STAT_INT(PACKED_MP_CHAR_CONTENT_FILTERING, iCurrentSetting)
BREAK
CASE MP_SETTING_ONE_ON_ONE_DM
iCurrentSetting = GET_MP_INT_CHARACTER_STAT(MP_STAT_TIME_FOR_ONE_ON_ONE_DM)
iCurrentSetting += PICK_INT(nextSetting, 1, -1)
IF iCurrentSetting < 0
iCurrentSetting = (PAUSE_MENU_MAX_ONE_ON_ONE_DM-1)
ENDIF
IF iCurrentSetting >= PAUSE_MENU_MAX_ONE_ON_ONE_DM
iCurrentSetting = 0
ENDIF
PRINTLN("[TS] SET_PACKED_STAT_INT(SET_PACKED_STAT_INT, ", iCurrentSetting, ")")
SET_MP_INT_CHARACTER_STAT(MP_STAT_TIME_FOR_ONE_ON_ONE_DM, iCurrentSetting)
BREAK
ENDSWITCH
ENDPROC