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

6724 lines
294 KiB
XML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
USING "rage_builtins.sch"
USING "globals.sch"
USING "friends_public.sch"
USING "selector_public.sch"
USING "comms_control_public.sch"
USING "script_clock.sch"
#if not USE_CLF_DLC
#if not USE_NRM_DLC
USING "properties_public.sch"
#endif
#endif
USING "player_scene_coords.sch"
USING "player_scene_vehicle.sch"
USING "player_scene_assets.sch"
#IF IS_DEBUG_BUILD
USING "flow_debug_GAME.sch"
USING "player_ped_debug.sch"
USING "respawn_location_private.sch"
USING "vector_id_public.sch"
#ENDIF
//////////////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : player_scene_schedule.sch //
// AUTHOR : Alwyn Roberts //
// DESCRIPTION : Contains the players timetable and procs to set up the //
// scenes for each slot in the timetable. //
// //
//////////////////////////////////////////////////////////////////////////////////////////
SP_MISSIONS eTREV_CITY_SAFEHOUSE_REMOVED = SP_MISSION_TREVOR_4 //SP_MISSION_TREVOR_5
SP_MISSIONS eMichHasMetSolomon = SP_MISSION_MICHAEL_4 //SP_MISSION_SOLOMON_4
SP_MISSIONS old_sp_mission_trevor_4 = SP_MISSION_TREVOR_3
// *******************************************************************************************
// PED REQUEST BIT FUNCTIONS AND PROCEDURES
// *******************************************************************************************
FUNC BOOL GET_ONE_OFF_BIT_FOR_PED_REQUEST_SCENE(PED_REQUEST_SCENE_ENUM eScene, INT &iOneOffBit)
SWITCH eScene
CASE PR_SCENE_M2_PHARMACY iOneOffBit = 1 RETURN TRUE BREAK
CASE PR_SCENE_M_VWOODPARK_a iOneOffBit = 2 RETURN TRUE BREAK
CASE PR_SCENE_M_VWOODPARK_b iOneOffBit = 3 RETURN TRUE BREAK
CASE PR_SCENE_M_BENCHCALL_a iOneOffBit = 4 RETURN TRUE BREAK
CASE PR_SCENE_F_LAMTAUNT_P1 iOneOffBit = 5 RETURN TRUE BREAK
CASE PR_SCENE_F_CLUB iOneOffBit = 6 RETURN TRUE BREAK
CASE PR_SCENE_F1_ONCELL iOneOffBit = 7 RETURN TRUE BREAK
CASE PR_SCENE_F0_TANISHAFIGHT iOneOffBit = 8 RETURN TRUE BREAK
CASE PR_SCENE_F1_NEWHOUSE iOneOffBit = 9 RETURN TRUE BREAK
CASE PR_SCENE_T_FIGHTBBUILD iOneOffBit = 10 RETURN TRUE BREAK
CASE PR_SCENE_T_CR_CHASEBIKE iOneOffBit = 11 RETURN TRUE BREAK
CASE PR_SCENE_M4_WASHFACE iOneOffBit = 12 RETURN TRUE BREAK
//#1568441
CASE PR_SCENE_Fa_PHONECALL_ARM3 iOneOffBit = 13 RETURN TRUE BREAK
CASE PR_SCENE_Fa_PHONECALL_FAM1 iOneOffBit = 13 RETURN TRUE BREAK
CASE PR_SCENE_Fa_PHONECALL_FAM3 iOneOffBit = 13 RETURN TRUE BREAK
#IF IS_DEBUG_BUILD
CASE NUM_OF_PED_REQUEST_SCENES iOneOffBit = 14 RETURN FALSE BREAK
#ENDIF
ENDSWITCH
iOneOffBit = -1
RETURN FALSE
ENDFUNC
// *******************************************************************************************
// GENERAL SCHEDULE FUNCTIONS AND PROCEDURES
// *******************************************************************************************
FUNC BOOL HasHourPassedSincePedTimeStruct(TIMEOFDAY sLastTimeActive)
RETURN HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 1)
ENDFUNC
FUNC BOOL HasHourPassedSinceCharLastTimeActive(enumCharacterList sceneCharID)
TIMEOFDAY sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[sceneCharID]
RETURN HasHourPassedSincePedTimeStruct(sLastTimeActive)
ENDFUNC
FUNC BOOL IsCharPresentInWorld(enumCharacterList sceneCharID)
SELECTOR_SLOTS_ENUM eSceneSlot = GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(sceneCharID)
PED_INDEX scenePedID = g_sPlayerPedRequest.sSelectorPeds.pedID[eSceneSlot]
IF DOES_ENTITY_EXIST(scenePedID)
IF NOT IS_PED_INJURED(scenePedID)
// VECTOR vPlayerCurrentCoord = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
// VECTOR vScenePedCurrentCoord = GET_ENTITY_COORDS(scenePedID)
//
// FLOAT fDistanceFromPlayerToScenePed = VDIST(vPlayerCurrentCoord, vScenePedCurrentCoord)
//
// CONST_FLOAT fRADIUS_FROM_SCENEPED_TO_CHECK 4.0
//
// CONST_FLOAT fDIST_FROM_SCENEPED_VISIBLE_FOR_DEFAULT 140.0
// CONST_FLOAT fDIST_FROM_SCENEPED_HIDDEN_FOR_DEFAULT 40.0
//
// IF IS_SPHERE_VISIBLE(vScenePedCurrentCoord, fRADIUS_FROM_SCENEPED_TO_CHECK)
// #IF IS_DEBUG_BUILD
// DrawDebugSceneLineBetweenEntities(PLAYER_PED_ID(), scenePedID, HUD_COLOUR_BLUELIGHT)
//
// TEXT_LABEL_63 str = GET_PLAYER_PED_STRING(sceneCharID)
// str += " visible "
// str += GET_STRING_FROM_FLOAT(fDistanceFromPlayerToScenePed)
// str += " < "
// str += (ROUND(fDIST_FROM_SCENEPED_VISIBLE_FOR_DEFAULT))
// DrawDebugSceneTextWithOffset(str, vPlayerCurrentCoord, 0, HUD_COLOUR_BLUELIGHT)
// #ENDIF
//
// IF fDistanceFromPlayerToScenePed < fDIST_FROM_SCENEPED_VISIBLE_FOR_DEFAULT
// RETURN TRUE
// ENDIF
// ELSE
// #IF IS_DEBUG_BUILD
// DrawDebugSceneLineBetweenEntities(PLAYER_PED_ID(), scenePedID, HUD_COLOUR_BLUEDARK)
//
// TEXT_LABEL_63 str = GET_PLAYER_PED_STRING(sceneCharID)
// str += " hidden "
// str += GET_STRING_FROM_FLOAT(fDistanceFromPlayerToScenePed)
// str += " < "
// str += ROUND(fDIST_FROM_SCENEPED_HIDDEN_FOR_DEFAULT)
// DrawDebugSceneTextWithOffset(str, vPlayerCurrentCoord, 0, HUD_COLOUR_BLUEDARK)
// #ENDIF
//
// IF fDistanceFromPlayerToScenePed < fDIST_FROM_SCENEPED_HIDDEN_FOR_DEFAULT
// RETURN TRUE
// ENDIF
// ENDIF
RETURN TRUE
ELSE
#IF IS_DEBUG_BUILD
DrawDebugSceneLineBetweenEntities(PLAYER_PED_ID(), scenePedID, HUD_COLOUR_REDLIGHT)
#ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL HasDayPassedSincePedTimeStruct(TIMEOFDAY sLastTimeActive)
IF NOT Is_TimeOfDay_Valid(sLastTimeActive)
RETURN FALSE
ENDIF
INT iSeconds, iMinutes, iHours, iDays, iMonths, iYears
GET_DIFFERENCE_BETWEEN_NOW_AND_TIMEOFDAY(sLastTimeActive, iSeconds, iMinutes, iHours, iDays, iMonths, iYears)
IF (iYears > 0)
OR (iMonths > 0)
OR (iDays > 0)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_IsRandomCharFlagSet(g_eRC_MissionIDs eRCMission, g_eRC_FlagIDs eRCFlagID)
#if USE_CLF_DLC
unused_parameter(eRCMission)
unused_parameter(eRCFlagID)
RETURN FALSE
#endif
#if USE_NRM_DLC
unused_parameter(eRCMission)
unused_parameter(eRCFlagID)
RETURN FALSE
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
IF IS_BIT_SET(g_savedGlobals.sRandomChars.savedRC[eRCMission].rcFlags, ENUM_TO_INT(eRCFlagID))
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
g_structRCMissionsStatic sRCMissionDetails
Retrieve_Random_Character_Static_Mission_Details(eRCMission, sRCMissionDetails)
CPRINTLN(DEBUG_SWITCH, "PRIVATE_IsRandomCharFlagSet(", sRCMissionDetails.rcScriptName, ", ", ENUM_TO_INT(eRCFlagID), ")")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
RETURN FALSE
#endif
#endif
ENDFUNC
FUNC BOOL PRIVATE_DoPedRequestScenesMatch(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene,
PED_REQUEST_SCENE_ENUM eTestSceneOne,
PED_REQUEST_SCENE_ENUM eTestSceneTwo,
PED_REQUEST_SCENE_ENUM eTestSceneThree = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneFour = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneFive = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneSix = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneSeven = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneEight = PR_SCENE_INVALID)
IF ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneOne) AND (eTestSceneOne <> PR_SCENE_INVALID))
OR ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneTwo) AND (eTestSceneTwo <> PR_SCENE_INVALID))
OR ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneThree) AND (eTestSceneThree <> PR_SCENE_INVALID))
OR ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneFour) AND (eTestSceneFour <> PR_SCENE_INVALID))
OR ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneFive) AND (eTestSceneFive <> PR_SCENE_INVALID))
OR ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneSix) AND (eTestSceneSix <> PR_SCENE_INVALID))
OR ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneSeven) AND (eTestSceneSeven <> PR_SCENE_INVALID))
OR ((g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eTestSceneEight) AND (eTestSceneEight <> PR_SCENE_INVALID))
IF ((eReqScene = eTestSceneOne) AND (eTestSceneOne <> PR_SCENE_INVALID))
OR ((eReqScene = eTestSceneTwo) AND (eTestSceneTwo <> PR_SCENE_INVALID))
OR ((eReqScene = eTestSceneThree) AND (eTestSceneThree <> PR_SCENE_INVALID))
OR ((eReqScene = eTestSceneFour) AND (eTestSceneFour <> PR_SCENE_INVALID))
OR ((eReqScene = eTestSceneFive) AND (eTestSceneFive <> PR_SCENE_INVALID))
OR ((eReqScene = eTestSceneSix) AND (eTestSceneSix <> PR_SCENE_INVALID))
OR ((eReqScene = eTestSceneSeven) AND (eTestSceneSeven <> PR_SCENE_INVALID))
OR ((eReqScene = eTestSceneEight) AND (eTestSceneEight <> PR_SCENE_INVALID))
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by match [last known ", Get_String_From_Ped_Request_Scene_Enum(g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed]), "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IsPedRequestSceneDupeOfLastKnownScene(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene)
IF (eReqScene = g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed])
RETURN TRUE
ENDIF
SWITCH ePed
/* michael's overlapping scenes */
CASE CHAR_MICHAEL
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M2_SAVEHOUSE1_a, PR_SCENE_M2_SAVEHOUSE1_b, PR_SCENE_M2_SMOKINGGOLF)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M2_BEDROOM, PR_SCENE_M2_SAVEHOUSE0_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M4_WAKEUPSCREAM, PR_SCENE_M4_WAKESUPSCARED)
RETURN TRUE
ENDIF
// IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
// PR_SCENE_M6_HOUSETV_a, PR_SCENE_M6_HOUSETV_b)
// RETURN TRUE
// ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_POOLSIDE_a, PR_SCENE_M_POOLSIDE_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_CANAL_a, PR_SCENE_M_CANAL_b, PR_SCENE_M_CANAL_c)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_PARKEDHILLS_a, PR_SCENE_M_PARKEDHILLS_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M6_PARKEDHILLS_a, PR_SCENE_M6_PARKEDHILLS_b, PR_SCENE_M6_PARKEDHILLS_c, PR_SCENE_M6_PARKEDHILLS_d, PR_SCENE_M6_PARKEDHILLS_e)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M2_WIFEEXITSCAR, PR_SCENE_M2_DROPOFFDAU_a, PR_SCENE_M2_DROPOFFDAU_b, PR_SCENE_M2_DROPOFFSON_a, PR_SCENE_M2_DROPOFFSON_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M4_EXITRESTAURANT, PR_SCENE_M4_LUNCH_b, PR_SCENE_M4_CINEMA)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_COFFEE_a, PR_SCENE_M_COFFEE_b, PR_SCENE_M_COFFEE_c)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_TRAFFIC_a, PR_SCENE_M_TRAFFIC_b, PR_SCENE_M_TRAFFIC_c)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M2_CYCLING_a, PR_SCENE_M2_CYCLING_b, PR_SCENE_M2_CYCLING_c)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_PIER_a, PR_SCENE_M_PIER_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_VWOODPARK_a, PR_SCENE_M_VWOODPARK_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M_BENCHCALL_a, PR_SCENE_M_BENCHCALL_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M2_CARSLEEP_a, PR_SCENE_M2_CARSLEEP_b)
RETURN TRUE
ENDIF
// IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
// PR_SCENE_M_BAR_a, PR_SCENE_M_BAR_b)
// RETURN TRUE
// ENDIF
// IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
// PR_SCENE_M_HOOKERMOTEL, PR_SCENE_M_HOOKERCAR)
// RETURN TRUE
// ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M7_EMPLOYEECONVO, PR_SCENE_M7_TALKTOGUARD, PR_SCENE_M7_LOT_JIMMY)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_M7_OPENDOORFORAMA, PR_SCENE_M7_DROPPINGOFFJMY, PR_SCENE_M7_TRACEYEXITSCAR)
RETURN TRUE
ENDIF
BREAK
/* franklins's overlapping scenes */
CASE CHAR_FRANKLIN
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_F_MD_KUSH_DOC, PR_SCENE_F_KUSH_DOC_a, PR_SCENE_F_KUSH_DOC_b, PR_SCENE_F_KUSH_DOC_c)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_F_THROW_CUP, PR_SCENE_F_HIT_CUP_HAND)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_F_CS_CHECKSHOE, PR_SCENE_F_CS_WIPEHANDS, PR_SCENE_F_CS_WIPERIGHT)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_F0_BIKE, PR_SCENE_F1_BIKE, PR_SCENE_F_BIKE_c, PR_SCENE_F_BIKE_d)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_F_BAR_a_01, PR_SCENE_F_BAR_b_01, PR_SCENE_F_BAR_c_02, PR_SCENE_F_BAR_d_02, PR_SCENE_F_BAR_e_01)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_F1_POOLSIDE_a, PR_SCENE_F1_POOLSIDE_b)
RETURN TRUE
ENDIF
BREAK
/* trevor's overlapping scenes */
CASE CHAR_TREVOR
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_DOCKS_a, PR_SCENE_T_DOCKS_b, PR_SCENE_T_DOCKS_c, PR_SCENE_T_DOCKS_d)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_CN_CHATEAU_b, PR_SCENE_T_CN_CHATEAU_c, PR_SCENE_T_CR_CHATEAU_d)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_PUKEINTOFOUNT, PR_SCENE_T_CN_PARK_b)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_CR_POLICE_a, PR_SCENE_T_CN_POLICE_b, PR_SCENE_T_CN_POLICE_c)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_FLOYDSPOON_A, PR_SCENE_T_FLOYDSPOON_B, PR_SCENE_T_FLOYDSPOON_B2, PR_SCENE_T_FLOYDSPOON_A2)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_FLOYD_BEAR, PR_SCENE_T_FLOYD_DOLL, PR_SCENE_T_FLOYDPINEAPPLE)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_FLOYDCRYING_A, PR_SCENE_T_FLOYDCRYING_E0, PR_SCENE_T_FLOYDCRYING_E1, PR_SCENE_T_FLOYDCRYING_E2, PR_SCENE_T_FLOYDCRYING_E3)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_CR_DUMPSTER, PR_SCENE_T_CN_WAKETRASH_b, PR_SCENE_T_CR_WAKEBEACH, PR_SCENE_T_CN_WAKEBARN, PR_SCENE_T_CN_WAKETRAIN, PR_SCENE_T_CR_WAKEROOFTOP, PR_SCENE_T_CN_WAKEMOUNTAIN)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_CR_CHASECAR_a, PR_SCENE_T_CN_CHASECAR_b, PR_SCENE_T_CR_CHASEBIKE, PR_SCENE_T_CR_CHASESCOOTER)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_FIGHTBAR_a, PR_SCENE_T_FIGHTBAR_b, PR_SCENE_T_FIGHTBAR_c,
PR_SCENE_T_FIGHTBBUILD, PR_SCENE_T_ESCORTED_OUT,
PR_SCENE_T_YELLATDOORMAN, PR_SCENE_T_FIGHTYAUCLUB_b, PR_SCENE_T_FIGHTCASINO)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_NAKED_BRIDGE, PR_SCENE_T_NAKED_GARDEN)
RETURN TRUE
ENDIF
IF PRIVATE_DoPedRequestScenesMatch(ePed, eReqScene,
PR_SCENE_T_GARBAGE_FOOD, PR_SCENE_T_THROW_FOOD)
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL IsPedRequestScenesBlockedForFriend(PED_REQUEST_SCENE_ENUM eReqScene)
SWITCH eReqScene
// Lamar scenes
// CASE PR_SCENE_F_LAMGRAFF FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_P1 FALLTHRU
// CASE PR_SCENE_F_LAMTAUNT_P2 FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_P3 FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_P5 FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_NIGHT
IF HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY(CHAR_FRANKLIN, CHAR_LAMAR)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by connection ", GetLabel_enumFriendConnection(FC_FRANKLIN_LAMAR))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
IF HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY(CHAR_TREVOR, CHAR_LAMAR)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by connection ", GetLabel_enumFriendConnection(FC_TREVOR_LAMAR))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
// Jimmy scenes
CASE PR_SCENE_M2_KIDS_TV FALLTHRU
CASE PR_SCENE_M2_DROPOFFSON_a FALLTHRU
CASE PR_SCENE_M2_DROPOFFSON_b FALLTHRU
CASE PR_SCENE_M7_DROPPINGOFFJMY FALLTHRU
CASE PR_SCENE_M7_BIKINGJIMMY
IF HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY(CHAR_MICHAEL, CHAR_JIMMY)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by connection ", GetLabel_enumFriendConnection(FC_MICHAEL_JIMMY))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
IF HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY(CHAR_FRANKLIN, CHAR_JIMMY)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by connection ", GetLabel_enumFriendConnection(FC_FRANKLIN_JIMMY))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
IF HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY(CHAR_TREVOR, CHAR_JIMMY)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by connection ", GetLabel_enumFriendConnection(FC_TREVOR_JIMMY))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
// Amanda scenes
CASE PR_SCENE_M2_BEDROOM FALLTHRU
CASE PR_SCENE_M2_SAVEHOUSE0_b FALLTHRU
CASE PR_SCENE_M2_SAVEHOUSE1_a FALLTHRU
CASE PR_SCENE_M2_LUNCH_a FALLTHRU
CASE PR_SCENE_M2_WIFEEXITSCAR FALLTHRU
CASE PR_SCENE_M2_ARGUEWITHWIFE FALLTHRU
CASE PR_SCENE_M7_RESTAURANT
IF HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY(CHAR_MICHAEL, CHAR_AMANDA)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by connection ", GetLabel_enumFriendConnection(FC_MICHAEL_AMANDA))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_3)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(SP_MISSION_FAMILY_3), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
// Floyd scenes
CASE PR_SCENE_T_FLOYDSAVEHOUSE
CASE PR_SCENE_T_FLOYD_BEAR
CASE PR_SCENE_T_FLOYD_DOLL
CASE PR_SCENE_T_FLOYDPINEAPPLE
CASE PR_SCENE_T_FLOYDCRYING_A
CASE PR_SCENE_T_FLOYDCRYING_E0
CASE PR_SCENE_T_FLOYDCRYING_E1
CASE PR_SCENE_T_FLOYDCRYING_E2
CASE PR_SCENE_T_FLOYDCRYING_E3
CASE PR_SCENE_T_FLOYDSPOON_A
CASE PR_SCENE_T_FLOYDSPOON_A2
CASE PR_SCENE_T_FLOYDSPOON_B
CASE PR_SCENE_T_FLOYDSPOON_B2
IF IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_2A)
OR IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_2B)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"")
IF IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_2A)
CPRINTLN(DEBUG_SWITCH, GET_SP_MISSION_DISPLAY_STRING_FROM_ID(SP_HEIST_DOCKS_2A))
ENDIF
IF IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_2B)
IF IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_2A)
CPRINTLN(DEBUG_SWITCH, "\" and \"")
ENDIF
CPRINTLN(DEBUG_SWITCH, GET_SP_MISSION_DISPLAY_STRING_FROM_ID(SP_HEIST_DOCKS_2B))
ENDIF
CPRINTLN(DEBUG_SWITCH, "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL IsPedRequestScenesBlockedForBuddyInAvailableMission(PED_REQUEST_SCENE_ENUM eReqScene,
PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
sPedScene.iStage = 0
sPedScene.eScene = eReqScene
sPedScene.ePed = g_sPlayerPedRequest.ePed
IF SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
IF (sPassedScene.eSceneBuddy <> NO_CHARACTER)
AND (sPassedScene.eSceneBuddy <> CHAR_BLANK_ENTRY)
INT iBIT_SCENE_BUDDY = BIT_NOBODY
INT iMissionID
SP_MISSIONS eMissionID
SWITCH sPassedScene.eSceneBuddy
CASE CHAR_LAMAR
iBIT_SCENE_BUDDY = BIT_LAMAR
BREAK
CASE CHAR_JIMMY
iBIT_SCENE_BUDDY = BIT_JIMMY
BREAK
CASE CHAR_AMANDA
iBIT_SCENE_BUDDY = BIT_AMANDA
BREAK
DEFAULT
RETURN FALSE
BREAK
ENDSWITCH
INT availableMissionIndex
#IF USE_CLF_DLC
REPEAT COUNT_OF(g_availableMissionsTU) availableMissionIndex
//Is a valid mission saved in this slot?
IF g_availableMissionsTU[availableMissionIndex].index != ILLEGAL_ARRAY_POSITION
//Yes. Check the coreVars index it points to.
iMissionID = g_flowUnsaved.coreVars[g_availableMissionsTU[availableMissionIndex].index].iValue1
#ENDIF
#IF USE_NRM_DLC
REPEAT COUNT_OF(g_availableMissionsTU) availableMissionIndex
//Is a valid mission saved in this slot?
IF g_availableMissionsTU[availableMissionIndex].index != ILLEGAL_ARRAY_POSITION
//Yes. Check the coreVars index it points to.
iMissionID = g_flowUnsaved.coreVars[g_availableMissionsTU[availableMissionIndex].index].iValue1
#ENDIF
#IF NOT USE_CLF_DLC
#IF NOT USE_NRM_DLC
REPEAT COUNT_OF(g_availableMissions) availableMissionIndex
//Is a valid mission saved in this slot?
IF g_availableMissions[availableMissionIndex].index != ILLEGAL_ARRAY_POSITION
//Yes. Check the coreVars index it points to.
iMissionID = g_flowUnsaved.coreVars[g_availableMissions[availableMissionIndex].index].iValue1
#ENDIF
#ENDIF
eMissionID = INT_TO_ENUM(SP_MISSIONS, iMissionID)
IF IS_BITMASK_SET(g_sMissionStaticData[eMissionID].friendCharBitset, iBIT_SCENE_BUDDY)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by buddy ", GET_PLAYER_PED_STRING(sPassedScene.eSceneBuddy), " on mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IsPedRequestScenesBlockedForAvailableMission(PED_REQUEST_SCENE_ENUM eReqScene)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
SP_MISSIONS eMissionID = SP_MISSION_NONE
SWITCH eReqScene
CASE PR_SCENE_M2_BEDROOM FALLTHRU // #379457
CASE PR_SCENE_M2_SAVEHOUSE0_b FALLTHRU // #379457
CASE PR_SCENE_M2_SAVEHOUSE1_a FALLTHRU
CASE PR_SCENE_M2_KIDS_TV FALLTHRU
CASE PR_SCENE_M_POOLSIDE_a FALLTHRU
CASE PR_SCENE_M2_ARGUEWITHWIFE FALLTHRU
CASE PR_SCENE_M2_CARSLEEP_a //#1381663
eMissionID = SP_MISSION_FAMILY_1
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
eMissionID = SP_MISSION_FAMILY_3
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
eMissionID = SP_MISSION_TREVOR_1
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_M4_WAKESUPSCARED FALLTHRU //#1570367
CASE PR_SCENE_M4_WAKEUPSCREAM FALLTHRU
CASE PR_SCENE_M4_WATCHINGTV FALLTHRU
CASE PR_SCENE_M4_WASHFACE
eMissionID = SP_MISSION_FAMILY_6
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_M7_BIKINGJIMMY FALLTHRU //#1573264
CASE PR_SCENE_M7_DROPPINGOFFJMY FALLTHRU
CASE PR_SCENE_M7_FAKEYOGA FALLTHRU
CASE PR_SCENE_M7_GETSREADY FALLTHRU
CASE PR_SCENE_M7_KIDS_GAMING FALLTHRU
CASE PR_SCENE_M7_KIDS_TV FALLTHRU
CASE PR_SCENE_M7_LOT_JIMMY FALLTHRU
CASE PR_SCENE_M7_LOUNGECHAIRS FALLTHRU
CASE PR_SCENE_M7_OPENDOORFORAMA FALLTHRU
CASE PR_SCENE_M7_RESTAURANT FALLTHRU
CASE PR_SCENE_M7_ROUNDTABLE FALLTHRU
CASE PR_SCENE_M7_TRACEYEXITSCAR FALLTHRU
CASE PR_SCENE_M7_WIFETENNIS
eMissionID = SP_MISSION_MICHAEL_4
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_F0_CLEANCAR FALLTHRU
CASE PR_SCENE_F0_BIKE FALLTHRU
// CASE PR_SCENE_F_LAMGRAFF FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_P1 FALLTHRU
// CASE PR_SCENE_F_LAMTAUNT_P2 FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_P3 FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_P5 FALLTHRU
CASE PR_SCENE_F_LAMTAUNT_NIGHT
eMissionID = SP_MISSION_FRANKLIN_1
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_T_FLOYDSAVEHOUSE FALLTHRU
CASE PR_SCENE_T_FLOYD_BEAR FALLTHRU
CASE PR_SCENE_T_FLOYD_DOLL FALLTHRU
CASE PR_SCENE_T_FLOYDPINEAPPLE FALLTHRU
CASE PR_SCENE_T_FLOYDCRYING_A FALLTHRU
CASE PR_SCENE_T_FLOYDCRYING_E0 FALLTHRU
CASE PR_SCENE_T_FLOYDCRYING_E1 FALLTHRU
CASE PR_SCENE_T_FLOYDCRYING_E2 FALLTHRU
CASE PR_SCENE_T_FLOYDCRYING_E3 FALLTHRU
CASE PR_SCENE_T_FLOYDSPOON_A FALLTHRU
CASE PR_SCENE_T_FLOYDSPOON_B FALLTHRU
CASE PR_SCENE_T_FLOYDSPOON_B2 FALLTHRU
CASE PR_SCENE_T_FLOYDSPOON_A2
eMissionID = old_sp_mission_trevor_4
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
eMissionID = eTREV_CITY_SAFEHOUSE_REMOVED //614152
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
eMissionID = SP_HEIST_DOCKS_1 //1348541
IF IS_MISSION_AVAILABLE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_T_CN_WAKEMOUNTAIN
eMissionID = SP_HEIST_DOCKS_1
IF NOT GET_MISSION_COMPLETE_STATE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by uncompleted mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_T_CN_WAKEBARN
eMissionID = SP_HEIST_FINALE_2_INTRO
IF GET_MISSION_COMPLETE_STATE(eMissionID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by completed mission \"", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL IsPedRequestScenesBlockedForLastPassedMission(PED_REQUEST_SCENE_ENUM eReqScene)
SWITCH eReqScene
CASE PR_SCENE_T_HEADINSINK
CASE PR_SCENE_T6_FLUSHESFOOT
#IF NOT IS_JAPANESE_BUILD
CASE PR_SCENE_T_SHIT
CASE PR_SCENE_T_JERKOFF
#ENDIF
CASE PR_SCENE_T_SMOKEMETH
IF IS_BIT_SET(g_savedGlobals.sRandomChars.savedRC[RC_MRS_PHILIPS_1].rcFlags, ENUM_TO_INT(RC_FLAG_COMPLETED))
AND NOT IS_BIT_SET(g_savedGlobals.sRandomChars.savedRC[RC_MRS_PHILIPS_2].rcFlags, ENUM_TO_INT(RC_FLAG_COMPLETED))
//
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by completed mission \"", "RC_MRS_PHILIPS_1", "\"")
// CASSERTLN(DEBUG_SWITCH, "trevor scene blocked for RC_MRS_PHILIPS_1!!!")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
SWITCH g_eLastMissionPassed
// CASE SP_HEIST_AGENCY_3A
// IF (eReqScene = PR_SCENE_T_SWEATSHOP)
//
// #IF IS_DEBUG_BUILD
// IF g_bDebugPrint_SceneScheduleInfo
// CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by last passed mission \"", "agency_heist3A", "\" id:", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(g_eLastMissionPassed))
// ENDIF
// #ENDIF
//
// RETURN TRUE
// ENDIF
// BREAK
CASE SP_MISSION_FRANKLIN_2
IF (eReqScene = PR_SCENE_M2_CYCLING_a)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by last passed mission \"", "franklin2", "\" id:", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(g_eLastMissionPassed))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_In_Queued_VectorID(PED_REQUEST_SCENE_ENUM eReqScene)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
INT iQueueGameTimer = GET_GAME_TIMER()
CONST_INT iCONST_QueueGameTimerMs 180000 //3min
VECTOR vRequestCoord
FLOAT fHead
TEXT_LABEL_31 tRoom
IF GET_PLAYER_PED_POSITION_FOR_SCENE(eReqScene, vRequestCoord, fHead, tRoom)
INT index
REPEAT g_savedGlobals.sCommsControlData.iNoQueuedCalls index
VectorID eVectorID = GET_QUEUED_CALL_VECTOR_ID(index)
IF eVectorID <> VID_BLANK
IF ((eVectorID <> VID_BLANK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_HARBOR) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RACE_TRACK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_WINDMILLS) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_NORTH_CLIFF) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_MAZE_BANK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CRANE) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RIVER_CLIFF) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RUNAWAY_TRAIN) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_GOLF_COURSE) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_1K) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_1_5K) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_ROCK_CLIFF))
INT iQueuedCallsDelay = g_savedGlobals.sCommsControlData.sQueuedCalls[index].sCommData.iQueueTime - iQueueGameTimer
IF (iQueuedCallsDelay < iCONST_QueueGameTimerMs)
IF IS_COORD_IN_VECTOR_ID_AREA(vRequestCoord, eVectorID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by call eVectorID ", GET_DEBUG_STRING_FOR_VECTOR_ID(eVectorID), " [", TO_FLOAT(iQueuedCallsDelay) / 1000.0, "s]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
REPEAT g_savedGlobals.sCommsControlData.iNoQueuedTexts index
VectorID eVectorID = GET_QUEUED_TEXT_VECTOR_ID(index)
IF eVectorID <> VID_BLANK
IF ((eVectorID <> VID_BLANK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_HARBOR) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RACE_TRACK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_WINDMILLS) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_NORTH_CLIFF) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_MAZE_BANK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CRANE) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RIVER_CLIFF) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RUNAWAY_TRAIN) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_GOLF_COURSE) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_1K) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_1_5K) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_ROCK_CLIFF))
INT iQueuedTextsDelay = g_savedGlobals.sCommsControlData.sQueuedTexts[index].sCommData.iQueueTime - iQueueGameTimer
IF (iQueuedTextsDelay < iCONST_QueueGameTimerMs)
IF IS_COORD_IN_VECTOR_ID_AREA(vRequestCoord, eVectorID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by text eVectorID ", GET_DEBUG_STRING_FOR_VECTOR_ID(eVectorID), " [", TO_FLOAT(iQueuedTextsDelay) / 1000.0, "s]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
REPEAT g_savedGlobals.sCommsControlData.iNoQueuedEmails index
VectorID eVectorID = GET_QUEUED_EMAIL_VECTOR_ID(index)
IF eVectorID <> VID_BLANK
IF ((eVectorID <> VID_BLANK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_HARBOR) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RACE_TRACK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_WINDMILLS) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_NORTH_CLIFF) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_MAZE_BANK) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CRANE) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RIVER_CLIFF) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_RUNAWAY_TRAIN) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_GOLF_COURSE) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_1K) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_1_5K) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_CANAL) AND (eVectorID <> VID_AMBIENT_BASEJUMP_ROCK_CLIFF))
INT iQueuedEmailsDelay = g_savedGlobals.sCommsControlData.sQueuedEmails[index].sCommData.iQueueTime - iQueueGameTimer
IF (iQueuedEmailsDelay < iCONST_QueueGameTimerMs)
IF IS_COORD_IN_VECTOR_ID_AREA(vRequestCoord, eVectorID)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by email eVectorID ", GET_DEBUG_STRING_FOR_VECTOR_ID(eVectorID), " [", TO_FLOAT(iQueuedEmailsDelay) / 1000.0, "s]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_Close_To_Blip_Coord(PED_REQUEST_SCENE_ENUM eReqScene,
VECTOR vRequestCoord,
VECTOR vBlipCoord,
FLOAT &fCloseDist2,
STATIC_BLIP_NAME_ENUM eBlipName,
INT iBlipCoord = 0)
INT iBlip = ENUM_TO_INT(eBlipName)
//Range check the blip before accessing arrays.
IF ENUM_TO_INT(iBlip) < 0 OR ENUM_TO_INT(iBlip) >= g_iTotalStaticBlips
OR eBlipName = STATIC_BLIP_NAME_DUMMY_FINAL
CASSERTLN(DEBUG_BLIP, "PRIVATE_Is_PedRequest_Close_To_Blip_Coord: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to query. Bug BenR.")
RETURN FALSE
ENDIF
IF g_GameBlips[iBlip].eCategory = STATIC_BLIP_CATEGORY_MINIGAME
OR g_GameBlips[iBlip].eCategory = STATIC_BLIP_CATEGORY_SAVEHOUSE //#1490906
OR g_GameBlips[iBlip].eCategory = STATIC_BLIP_CATEGORY_PROPERTY //#1490906
OR g_GameBlips[iBlip].eCategory = STATIC_BLIP_CATEGORY_SHOP //#2093111
RETURN FALSE
ENDIF
CONST_FLOAT fCONST_MIN_DIST_FROM_BLIP 7.5
CONST_FLOAT fCONST_MIN_DIST_FROM_MISSION_BLIP 10.0 //min:9.251859 url:bugstar:958564
CONST_FLOAT fCONST_MIN_DIST_FROM_RCM_BLIP 20.0 //
CONST_FLOAT fCONST_MIN_MISSION_DIST_FROM_SAFEHOUSE 50.0 //min:46.611153 url:bugstar:887427
CONST_FLOAT fCONST_MIN_SCENE_DIST_FROM_SAFEHOUSE 30.0
IF VDIST2(vRequestCoord, vBlipCoord) < (fCONST_MIN_DIST_FROM_BLIP*fCONST_MIN_DIST_FROM_BLIP)
fCloseDist2 = VDIST2(vRequestCoord, vBlipCoord)
RETURN TRUE
ENDIF
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CDEBUG1LN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene),
" allows blipcheck, nearest mission ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip),
" [dist:", VDIST(vRequestCoord, vBlipCoord), "m]")
ENDIF
#ENDIF
FLOAT fMin_dist_from_blip = -1
IF (g_GameBlips[iBlip].eCategory = STATIC_BLIP_CATEGORY_MISSION)
fMin_dist_from_blip = fCONST_MIN_DIST_FROM_MISSION_BLIP
// #1420453 //
INT iTriggerIndex
REPEAT MAX_MISSION_TRIGGERS iTriggerIndex
IF g_TriggerableMissions[iTriggerIndex].bUsed
//Is this trigger registered to use the blip we are interested in?
IF g_TriggerableMissions[iTriggerIndex].eBlip = eBlipName
fMin_dist_from_blip = g_sMissionActiveData[g_TriggerableMissions[iTriggerIndex].eMissionID].leaveAreaDistance
ENDIF
ENDIF
ENDREPEAT
// // // // //
ELIF (g_GameBlips[iBlip].eCategory = STATIC_BLIP_CATEGORY_RANDOMCHAR)
fMin_dist_from_blip = fCONST_MIN_DIST_FROM_RCM_BLIP
ENDIF
IF fMin_dist_from_blip > 0
IF VDIST2(vRequestCoord, vBlipCoord) < (fMin_dist_from_blip*fMin_dist_from_blip)
fCloseDist2 = VDIST2(vRequestCoord, vBlipCoord)
RETURN TRUE
ENDIF
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CDEBUG1LN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene),
" allows extra blipcheck, nearest mission ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip),
" [dist:", VDIST(vRequestCoord, vBlipCoord),
" <= ", fMin_dist_from_blip,
"m]")
ENDIF
#ENDIF
IF (eReqScene <> PR_SCENE_M2_CARSLEEP_a) //#1021775
/* SAFEHOUSE BLIPS #782819 */
SAVEHOUSE_NAME_ENUM iSavehouse
REPEAT NUMBER_OF_SAVEHOUSE_LOCATIONS iSavehouse
IF IS_BIT_SET(g_savedGlobals.sRespawnData.iSavehouseProperties[iSavehouse], REPAWN_FLAG_AVAILABLE_BIT)
IF VDIST2(g_sSavehouses[iSavehouse].vBlipCoords, vBlipCoord) < (fCONST_MIN_MISSION_DIST_FROM_SAFEHOUSE*fCONST_MIN_MISSION_DIST_FROM_SAFEHOUSE)
IF VDIST2(g_sSavehouses[iSavehouse].vBlipCoords, vRequestCoord) < (fCONST_MIN_SCENE_DIST_FROM_SAFEHOUSE*fCONST_MIN_SCENE_DIST_FROM_SAFEHOUSE)
fCloseDist2 = VDIST2(g_sSavehouses[iSavehouse].vBlipCoords, vRequestCoord)
eReqScene = eReqScene
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDIF
/* * * * * * * * * * * * * */
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CDEBUG1LN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene),
" allows blipcheck, nearest mission ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip),
" [dist:", VDIST(vRequestCoord, vBlipCoord), "m]")
ENDIF
#ENDIF
iBlipCoord = iBlipCoord
fCloseDist2 = 0.0
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_In_Active_Blip(PED_REQUEST_SCENE_ENUM eReqScene)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
VECTOR vRequestCoord
FLOAT fHead
TEXT_LABEL_31 tRoom
IF GET_PLAYER_PED_POSITION_FOR_SCENE(eReqScene, vRequestCoord, fHead, tRoom)
INT iTriggerIndex
REPEAT MAX_MISSION_TRIGGERS iTriggerIndex
IF g_TriggerableMissions[iTriggerIndex].bUsed AND g_TriggerableMissions[iTriggerIndex].eType != MISSION_TRIGGER_TYPE_SWITCH
// B*-2266498 MISSION_TRIGGER_TYPE_SWITCH - don't run. This type doesn't have an eBlip. (Causes array overrun)
//Is this trigger registered to use the blip we are interested in?
STATIC_BLIP_NAME_ENUM eTriggerableBlip = g_TriggerableMissions[iTriggerIndex].eBlip
// B*-2344951 Ensure the blip is in range to be extra safe.
IF ENUM_TO_INT(eTriggerableBlip) >= 0 AND ENUM_TO_INT(eTriggerableBlip) < g_iTotalStaticBlips
VECTOR vBlipCoord = GET_STATIC_BLIP_POSITION(eTriggerableBlip)
FLOAT fCloseDist2 = 0.0
IF PRIVATE_Is_PedRequest_Close_To_Blip_Coord(eReqScene, vRequestCoord, vBlipCoord, fCloseDist2, eTriggerableBlip)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by eTriggerableBlip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eTriggerableBlip)),
" [", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(g_TriggerableMissions[iTriggerIndex].eMissionID, TRUE),
", dist:", SQRT(fCloseDist2), "m]")
ENDIF
#ENDIF
RETURN TRUE
ELSE
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CDEBUG1LN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " falls through eTriggerableBlip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eTriggerableBlip)),
" [", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(g_TriggerableMissions[iTriggerIndex].eMissionID, TRUE), "]")
ENDIF
#ENDIF
ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CDEBUG1LN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " unused by eTriggerableBlip ",
" [", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(g_TriggerableMissions[iTriggerIndex].eMissionID, TRUE), "]")
ENDIF
#ENDIF
ENDIF
ENDREPEAT
STATIC_BLIP_NAME_ENUM eBlip
REPEAT g_iTotalStaticBlips eBlip
IF IS_BIT_SET(g_GameBlips[eBlip].iSetting,STATIC_BLIP_SETTING_ACTIVE)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CDEBUG1LN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene),
" needs to check for mission ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eBlip)))
ENDIF
#ENDIF
VECTOR vBlipCoord = GET_STATIC_BLIP_POSITION(eBlip)
FLOAT fCloseDist2 = 0.0
IF PRIVATE_Is_PedRequest_Close_To_Blip_Coord(eReqScene, vRequestCoord, vBlipCoord, fCloseDist2, eBlip)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by eBlip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eBlip)), " [dist:", SQRT(fCloseDist2), "m]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
//for multi-char missions
IF IS_BIT_SET(g_GameBlips[eBlip].iSetting,STATIC_BLIP_SETTING_MULTI_COORD_AND_SPRITE)//g_GameBlips[eBlip].bMultiCoordAndSprite
INT iMultiBlip, iMULTI_BLIP_COUNT = 3
REPEAT iMULTI_BLIP_COUNT iMultiBlip
VECTOR vMultiBlipCoord = GET_STATIC_BLIP_POSITION(eBlip, iMultiBlip)
IF NOT IS_VECTOR_ZERO(vMultiBlipCoord)
IF PRIVATE_Is_PedRequest_Close_To_Blip_Coord(eReqScene, vRequestCoord, vMultiBlipCoord, fCloseDist2, eBlip, iMultiBlip)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by eMultiBlip[", iMultiBlip, "] ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(ENUM_TO_INT(eBlip)), " [dist:", SQRT(fCloseDist2), "m]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDREPEAT
ENDIF
ENDIF
ENDREPEAT
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_PedRequest_Have_Queued_Char(PED_REQUEST_SCENE_ENUM eReqScene,
PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
IF bDescentOnlyScene
RETURN FALSE
ENDIF
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
sPedScene.iStage = 0
sPedScene.eScene = eReqScene
sPedScene.ePed = g_sPlayerPedRequest.ePed
IF SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
IF (eReqScene = PR_SCENE_M6_DEPRESSED) //#989626
sPassedScene.eSceneBuddy = CHAR_DR_FRIEDLANDER
ENDIF
IF (sPassedScene.eSceneBuddy <> NO_CHARACTER)
IF DOES_CHAR_HAVE_COMMUNICATION_QUEUED(sPassedScene.eSceneBuddy)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by queued comm from char ", GET_PLAYER_PED_STRING(sPassedScene.eSceneBuddy))
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_In_City(PED_REQUEST_SCENE_ENUM eReqScene)
VECTOR vRequestCoord
FLOAT fHead
TEXT_LABEL_31 tRoom
IF GET_PLAYER_PED_POSITION_FOR_SCENE(eReqScene, vRequestCoord, fHead, tRoom)
IF vRequestCoord.y < 400.0
IF vRequestCoord.x < 1400.0
IF vRequestCoord.x > -1900.0
IF vRequestCoord.y > -3500.0
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDIF
RETURN FALSE
ENDFUNC
#if USE_CLF_DLC
FUNC BOOL PRIVATE_Is_PedRequest_Blocked_To_CityCLF(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene)
unused_parameter(eReqScene)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobalsClifford.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
SWITCH ePed
CASE CHAR_MICHAEL
RETURN FALSE
BREAK
CASE CHAR_TREVOR
RETURN FALSE
BREAK
DEFAULT
RETURN FALSE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
#endif
#if USE_NRM_DLC
FUNC BOOL PRIVATE_Is_PedRequest_Blocked_To_CityNRM(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene)
unused_parameter(eReqScene)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobalsnorman.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
SWITCH ePed
CASE CHAR_MICHAEL
RETURN FALSE
BREAK
CASE CHAR_NRM_JIMMY
RETURN FALSE
BREAK
CASE CHAR_NRM_TRACEY
RETURN FALSE
BREAK
DEFAULT
RETURN FALSE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
#endif
FUNC BOOL PRIVATE_Is_PedRequest_Blocked_To_City(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene)
#if USE_CLF_DLC
return PRIVATE_Is_PedRequest_Blocked_To_CityCLF(ePed,eReqScene)
#endif
#if USE_NRM_DLC
return PRIVATE_Is_PedRequest_Blocked_To_CityNRM(ePed,eReqScene)
#endif
#if not USE_CLF_DLC
#if not USE_NRM_DLC
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
SWITCH ePed
CASE CHAR_MICHAEL
IF Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
AND NOT Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED)
IF PRIVATE_Is_PedRequest_In_City(eReqScene)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked exile [", "michael in exile", "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
BREAK
CASE CHAR_TREVOR
IF Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_COUNTRY)
IF PRIVATE_Is_PedRequest_In_City(eReqScene)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked [", "trevor restricted to country", "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_CITY)
IF NOT PRIVATE_Is_PedRequest_In_City(eReqScene)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked [", "trevor restricted to city", "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
AND NOT Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED)
IF PRIVATE_Is_PedRequest_In_City(eReqScene)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked exile [", "trevor in exile", "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
BREAK
DEFAULT
RETURN FALSE
BREAK
ENDSWITCH
RETURN FALSE
#endif
#endif
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_In_LastSceneQueue(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene)
INT iQueue
REPEAT g_iCOUNT_OF_LAST_SCENE_QUEUE iQueue
IF (eReqScene = g_SavedGlobals.sPlayerSceneData.g_eLastSceneQueue[ePed][iQueue])
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked last scene queue [", iQueue, "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Has_One_Off_PedRequest_Been_Seen(PED_REQUEST_SCENE_ENUM eReqScene)
INT iOneOffBit
IF GET_ONE_OFF_BIT_FOR_PED_REQUEST_SCENE(eReqScene, iOneOffBit)
//#1574416
IF eReqScene = PR_SCENE_F1_NEWHOUSE
IF NOT IS_BIT_SET(g_SavedGlobals.sPlayerSceneData.g_iSeenOneOffSceneBit, iOneOffBit)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_2)
SET_BIT(g_SavedGlobals.sPlayerSceneData.g_iSeenOneOffSceneBit, iOneOffBit)
ENDIF
ENDIF
ENDIF
IF IS_BIT_SET(g_SavedGlobals.sPlayerSceneData.g_iSeenOneOffSceneBit, iOneOffBit)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked one-off seen [", g_SavedGlobals.sPlayerSceneData.g_iSeenOneOffSceneBit, "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC INT PRIVATE_Get_Switch_Clock_Hours()
IF IS_TIMEOFDAY_VALID(g_sMultiplayerTransitionTOD)
RETURN GET_TIMEOFDAY_HOUR(g_sMultiplayerTransitionTOD)
ENDIF
RETURN GET_CLOCK_HOURS()
ENDFUNC
FUNC INT PRIVATE_Get_Switch_Clock_Minutes()
IF IS_TIMEOFDAY_VALID(g_sMultiplayerTransitionTOD)
RETURN GET_TIMEOFDAY_MINUTE(g_sMultiplayerTransitionTOD)
ENDIF
RETURN GET_CLOCK_MINUTES()
ENDFUNC
/// PURPOSE:
/// X:\gta5\build\dev\common\data\levels\gta5\weather.dat
/// PARAMS:
/// eReqScene -
/// RETURNS:
///
FUNC BOOL PRIVATE_Is_PedRequest_Blocked_For_Weather(PED_REQUEST_SCENE_ENUM eReqScene, BOOL bDescentOnlyScene)
/*
EXTRASUNNY CLEAR CLOUDS
SMOG CLOUDY OVERCAST
RAIN THUNDER CLEARING
NEUTRAL SNOW MULTIPLAYER
*/
// GET_WEATHER_STRING_FROM_HASH()
CONST_INT iEXTRASUNNY HASH("EXTRASUNNY")
CONST_INT iCLEAR HASH("CLEAR")
CONST_INT iCLOUDS HASH("CLOUDS")
CONST_INT iSMOG HASH("SMOG")
CONST_INT iCLOUDY HASH("CLOUDY")
CONST_INT iOVERCAST HASH("OVERCAST")
CONST_INT iRAIN HASH("RAIN")
CONST_INT iTHUNDER HASH("THUNDER")
CONST_INT iCLEARING HASH("CLEARING")
CONST_INT iNEUTRAL HASH("NEUTRAL")
CONST_INT iSNOW HASH("SNOW")
CONST_INT iMULTIPLAYER HASH("MULTIPLAYER")
INT iPREV_WEATHER_TYPE_HASH_NAME, iNEXT_WEATHER_TYPE_HASH_NAME
INT iCLOCK_HOURS
SWITCH eReqScene
// Sunny scenes
CASE PR_SCENE_M_POOLSIDE_a
CASE PR_SCENE_M_POOLSIDE_b
CASE PR_SCENE_M2_SAVEHOUSE1_b
CASE PR_SCENE_M7_READSCRIPT
CASE PR_SCENE_M7_LOUNGECHAIRS
CASE PR_SCENE_F1_POOLSIDE_a
CASE PR_SCENE_F1_POOLSIDE_b
CASE PR_SCENE_T_CN_CHATEAU_c
CASE PR_SCENE_T_ANNOYSUNBATHERS
CASE PR_SCENE_T_CR_RUDEATCAFE
iPREV_WEATHER_TYPE_HASH_NAME = GET_PREV_WEATHER_TYPE_HASH_NAME()
iNEXT_WEATHER_TYPE_HASH_NAME = GET_NEXT_WEATHER_TYPE_HASH_NAME()
BOOL bInvalidPrevWeather, bInvalidNextWeather
bInvalidPrevWeather = FALSE
bInvalidNextWeather = FALSE
IF NOT bDescentOnlyScene
IF (iPREV_WEATHER_TYPE_HASH_NAME = iRAIN)
OR (iPREV_WEATHER_TYPE_HASH_NAME = iTHUNDER)
OR (iPREV_WEATHER_TYPE_HASH_NAME = iSNOW)
bInvalidPrevWeather = TRUE
ENDIF
ENDIF
IF (iNEXT_WEATHER_TYPE_HASH_NAME = iRAIN)
OR (iNEXT_WEATHER_TYPE_HASH_NAME = iTHUNDER)
OR (iNEXT_WEATHER_TYPE_HASH_NAME = iSNOW)
bInvalidPrevWeather = TRUE
ENDIF
IF bInvalidPrevWeather OR bInvalidNextWeather
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
TEXT_LABEL str1, str2
IF NOT bDescentOnlyScene
SWITCH iPREV_WEATHER_TYPE_HASH_NAME
CASE iRAIN str1 = ("iRAIN") BREAK
CASE iTHUNDER str1 = ("iTHUNDER") BREAK
CASE iSNOW str1 = ("iSNOW") BREAK
DEFAULT
str1 = ("\"")
str1 += (iPREV_WEATHER_TYPE_HASH_NAME)
str1 += ("\"")
BREAK
ENDSWITCH
ELSE
str1 += ("DescentOnly")
ENDIF
SWITCH iNEXT_WEATHER_TYPE_HASH_NAME
CASE iRAIN str2 += ("iRAIN") BREAK
CASE iTHUNDER str2 += ("iTHUNDER") BREAK
CASE iSNOW str2 += ("iSNOW") BREAK
DEFAULT
str2 = ("\"")
str2 += (iNEXT_WEATHER_TYPE_HASH_NAME)
str2 += ("\"")
BREAK
ENDSWITCH
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked for weather [prev:", str1, ", next:", str2, "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
iCLOCK_HOURS = PRIVATE_Get_Switch_Clock_Hours()
IF (iCLOCK_HOURS < 9 OR iCLOCK_HOURS >= 14) /* 09:00 - 13:59 */
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
TEXT_LABEL str
str = iCLOCK_HOURS
str += ":"
IF (PRIVATE_Get_Switch_Clock_Minutes() < 10) str += "0" ENDIF
str += PRIVATE_Get_Switch_Clock_Minutes()
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked for weather TOD [", str, "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_F_MD_KUSH_DOC
CASE PR_SCENE_F_KUSH_DOC_a
CASE PR_SCENE_F_GYM
iCLOCK_HOURS = PRIVATE_Get_Switch_Clock_Hours()
IF (iCLOCK_HOURS < 9 OR iCLOCK_HOURS >= 21) /* 09:00 - 20:59 */
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
TEXT_LABEL str
str = iCLOCK_HOURS
str += ":"
IF (PRIVATE_Get_Switch_Clock_Minutes() < 10) str += "0" ENDIF
str += PRIVATE_Get_Switch_Clock_Minutes()
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked for weather TOD [", str, "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_M2_SMOKINGGOLF
iCLOCK_HOURS = PRIVATE_Get_Switch_Clock_Hours()
IF NOT IS_GOLF_CLUB_OPEN_AT_TIME_OF_DAY(iCLOCK_HOURS)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
TEXT_LABEL str
str = iCLOCK_HOURS
str += ":"
IF (PRIVATE_Get_Switch_Clock_Minutes() < 10) str += "0" ENDIF
str += PRIVATE_Get_Switch_Clock_Minutes()
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked for weather TOD [", str, "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_T_FLOYD_BEAR
IF g_eCurrentBuildingState[BUILDINGNAME_ES_FLOYDS_APPARTMENT_RASPBERRY_JAM] <> BUILDINGSTATE_DESTROYED
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked for building ex [", "FLOYDS_APPARTMENT_RASPBERRY_JAM", "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE PR_SCENE_M2_CARSLEEP_a
CASE PR_SCENE_M2_CARSLEEP_b
CASE PR_SCENE_M_PARKEDHILLS_a
CASE PR_SCENE_M_PARKEDHILLS_b
CASE PR_SCENE_M4_PARKEDBEACH
#if not USE_CLF_DLC
#if not USE_NRM_DLC
IF g_savedGlobals.sFlow.controls.flagIDs[FLOWFLAG_MICHAEL_AMANDA_HAVE_SPLIT]
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked by available mission \"", GET_FLAG_DISPLAY_STRING_FROM_FLAG_ID(FLOWFLAG_MICHAEL_AMANDA_HAVE_SPLIT), "\"")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
#endif
#endif
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_Blocked_For_Sleeptime(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene, BOOL bDescentOnlyScene)
IF bDescentOnlyScene
RETURN FALSE
ENDIF
TIMEOFDAY sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed]
IF NOT Is_TIMEOFDAY_Valid(sLastTimeActive)
RETURN FALSE
ENDIF
SWITCH eReqScene
CASE PR_SCENE_M2_BEDROOM
CASE PR_SCENE_M2_SAVEHOUSE0_b
CASE PR_SCENE_M2_CARSLEEP_a
CASE PR_SCENE_M2_CARSLEEP_b
CASE PR_SCENE_M4_WAKESUPSCARED
CASE PR_SCENE_M4_WAKEUPSCREAM
CASE PR_SCENE_M6_HOUSEBED
CASE PR_SCENE_M7_GETSREADY
CASE PR_SCENE_F0_SH_ASLEEP
CASE PR_SCENE_F1_SH_ASLEEP
CASE PR_SCENE_T_FLOYDSPOON_A
CASE PR_SCENE_T_FLOYDSPOON_A2
CASE PR_SCENE_T_FLOYDSPOON_B
CASE PR_SCENE_T_FLOYDSPOON_B2
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, g_iCONST_GAME_HOURS_FOR_ASLEEP_SWITCH)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
INT iSeconds, iMinutes, iHours, iDays, iMonths, iYears
GET_DIFFERENCE_BETWEEN_NOW_AND_TIMEOFDAY(sLastTimeActive, iSeconds, iMinutes, iHours, iDays, iMonths, iYears)
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked for sleeptime [", iSeconds, "s ", iMinutes, "m ", iHours, "h ", iDays, "d ", iMonths+(iYears*12), "m", "]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_Blocked_For_SafehouseTutorial(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene)
IF (eReqScene = PR_SCENE_F1_NEWHOUSE) //#1501744
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " ignores safehouse tutorial scene")
ENDIF
#ENDIF
RETURN FALSE
ENDIF
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
VECTOR vCentreProperty = <<0,0,0>>
FLOAT fPropertyDistChec = -1
FLOW_BITSET_IDS eFlowBitsetToQuery
INT iOffsetBitIndex
SWITCH ePed
CASE CHAR_MICHAEL
// For Michael's Family Home -
/* IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY("SH_Intro_M_Home")) > 0
vCentreProperty = << -808.79742, 169.31934, 70.95580 >>
fPropertyDistChec = 85.0
ENDIF */
// Michael's house
//Is this bit in our first or second bitset?
IF ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_M_HOME) <= 31
eFlowBitsetToQuery = FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_1
iOffsetBitIndex = ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_M_HOME)
ELSE
eFlowBitsetToQuery = FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_2
iOffsetBitIndex = ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_M_HOME) - 31
ENDIF
IF IS_BIT_SET (g_savedGlobals.sFlow.controls.bitsetIDs[eFlowBitsetToQuery], iOffsetBitIndex)
// cutscene script is due to relaunch or is active
vCentreProperty = << -808.79742, 169.31934, 70.95580 >>
fPropertyDistChec = 85.0
ENDIF
BREAK
CASE CHAR_FRANKLIN
// For Franklin's hills safehouse -
/* IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY("SH_Intro_F_Hills")) > 0
vCentreProperty = << -2.62564, 528.32562, 178.39198 >>
fPropertyDistChec = 65.0
ENDIF */
// Franklin's appartment
//Is this bit in our first or second bitset?
IF ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS) <= 31
eFlowBitsetToQuery = FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_1
iOffsetBitIndex = ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS)
ELSE
eFlowBitsetToQuery = FLOWBITSET_RESTART_FLOW_LAUNCHED_SCRIPTS_2
iOffsetBitIndex = ENUM_TO_INT(LAUNCH_BIT_SH_INTRO_F_HILLS) - 31
ENDIF
IF IS_BIT_SET (g_savedGlobals.sFlow.controls.bitsetIDs[eFlowBitsetToQuery], iOffsetBitIndex)
// cutscene script is due to relaunch or is active
vCentreProperty = << -2.62564, 528.32562, 178.39198 >>
fPropertyDistChec = 65.0
ENDIF
BREAK
DEFAULT
RETURN FALSE
BREAK
ENDSWITCH
IF (fPropertyDistChec < 0)
RETURN FALSE
ENDIF
VECTOR vRequestCoord
FLOAT fHead
TEXT_LABEL_31 tRoom
IF GET_PLAYER_PED_POSITION_FOR_SCENE(eReqScene, vRequestCoord, fHead, tRoom)
FLOAT fPropertyDist2 = VDIST2(vRequestCoord, vCentreProperty)
IF (fPropertyDist2 < (fPropertyDistChec*fPropertyDistChec))
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked too close to a safehouse tutorial scene [", SQRT(fPropertyDist2), "m]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
RETURN FALSE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_PedRequest_TooCloseToCurrentPlayer(PED_REQUEST_SCENE_ENUM eReqScene, BOOL bDescentOnlyScene,
FLOAT fCONST_DIST_FROM_CURRENT_PLAYER = 400.0) //750.0 //150.0)
IF bDescentOnlyScene
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " ignores TooCloseToCurrentPlayer for descent only scenes")
ENDIF
#ENDIF
RETURN FALSE
ENDIF
VECTOR vRequestCoord
FLOAT fHead
TEXT_LABEL_31 tRoom
IF GET_PLAYER_PED_POSITION_FOR_SCENE(eReqScene, vRequestCoord, fHead, tRoom)
// IF vRequestCoord.y < 400.0
// IF vRequestCoord.x < 1400.0
// IF vRequestCoord.x > -1900.0
// IF vRequestCoord.y > -3500.0
// RETURN TRUE
// ENDIF
// ENDIF
// ENDIF
// ENDIF
VECTOR vPlayerCoord = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
FLOAT fPlayerDist2 = VDIST2(vRequestCoord, vPlayerCoord)
//1492523
IF fPlayerDist2 < (fCONST_DIST_FROM_CURRENT_PLAYER*fCONST_DIST_FROM_CURRENT_PLAYER)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked too close to the player [", SQRT(fPlayerDist2), "m < ", ROUND(fCONST_DIST_FROM_CURRENT_PLAYER), "m]")
ENDIF
#ENDIF
RETURN TRUE
ENDIF
RETURN FALSE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IsPedRequestScenesAcceptable(PED_REQUEST_SCENE_ENUM eReqScene, enumCharacterList ePed, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene, BOOL bIgnoreBlipDistCheck = FALSE)
IF (eReqScene = PR_SCENE_INVALID)
OR (eReqScene = PR_SCENE_DEAD)
RETURN FALSE
ENDIF
IF bDescentOnlyScene
IF (eReqScene = PR_SCENE_F0_TANISHAFIGHT) //#1522036
OR (eReqScene = PR_SCENE_F1_NEWHOUSE)
OR (eReqScene = PR_SCENE_T6_METHLAB)
OR (eReqScene = PR_SCENE_T6_LAKE)
OR (eReqScene = PR_SCENE_T_FLYING_PLANE)
OR (eReqScene = PR_SCENE_M_TRAFFIC_a)
OR (eReqScene = PR_SCENE_M_TRAFFIC_b)
OR (eReqScene = PR_SCENE_M_TRAFFIC_c)
OR (eReqScene = PR_SCENE_F_TRAFFIC_a)
OR (eReqScene = PR_SCENE_F_TRAFFIC_b)
OR (eReqScene = PR_SCENE_F_TRAFFIC_c)
OR (eReqScene = PR_SCENE_F_MD_KUSH_DOC)
OR (eReqScene = PR_SCENE_F_CS_CHECKSHOE)
OR (eReqScene = PR_SCENE_F_CS_WIPEHANDS)
OR (eReqScene = PR_SCENE_F_CS_WIPERIGHT)
OR (eReqScene = PR_SCENE_T_CR_CHASECAR_a)
OR (eReqScene = PR_SCENE_T_CN_CHASECAR_b)
OR (eReqScene = PR_SCENE_T_CR_CHASEBIKE)
OR (eReqScene = PR_SCENE_T_CR_CHASESCOOTER)
OR (eReqScene = PR_SCENE_T_CR_POLICE_a)
OR (eReqScene = PR_SCENE_T_CN_POLICE_b)
OR (eReqScene = PR_SCENE_T_CN_POLICE_c)
OR (eReqScene = PR_SCENE_F_LAMTAUNT_P1) //#1820715
OR (eReqScene = PR_SCENE_F_LAMTAUNT_P3)
OR (eReqScene = PR_SCENE_F_LAMTAUNT_P5)
OR (eReqScene = PR_SCENE_F_LAMTAUNT_NIGHT)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked bDescentOnlyScene [", "descent only", "]")
ENDIF
#ENDIF
RETURN FALSE
ENDIF
TEXT_LABEL_31 RoomName = ""
FLOAT fTurnOffTVPhase = 0.0
TV_LOCATION eRoomTVLocation
TVCHANNELTYPE eTVChannelType
TV_CHANNEL_PLAYLIST eTVPlaylist
IF CONTROL_PLAYER_WATCHING_TV(eReqScene, RoomName, fTurnOffTVPhase, eRoomTVLocation, eTVChannelType, eTVPlaylist)
#IF IS_DEBUG_BUILD
IF g_bDebugPrint_SceneScheduleInfo
CPRINTLN(DEBUG_SWITCH, "eReqScene ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " blocked bDescentOnlyScene [", "descent only/tv script!", "]")
ENDIF
#ENDIF
RETURN FALSE
ENDIF
ENDIF
IF PRIVATE_Has_One_Off_PedRequest_Been_Seen(eReqScene)
RETURN FALSE
ENDIF
IF IsPedRequestSceneDupeOfLastKnownScene(ePed, eReqScene)
RETURN FALSE
ENDIF
IF PRIVATE_Is_PedRequest_In_LastSceneQueue(ePed, eReqScene)
RETURN FALSE
ENDIF
IF IsPedRequestScenesBlockedForFriend(eReqScene)
RETURN FALSE
ENDIF
IF IsPedRequestScenesBlockedForBuddyInAvailableMission(eReqScene, sPedScene, sPassedScene)
RETURN FALSE
ENDIF
IF NOT bIgnoreBlipDistCheck //pre-mission switches
IF IsPedRequestScenesBlockedForAvailableMission(eReqScene)
RETURN FALSE
ENDIF
ENDIF
IF IsPedRequestScenesBlockedForLastPassedMission(eReqScene)
RETURN FALSE
ENDIF
IF PRIVATE_Is_PedRequest_In_Queued_VectorID(eReqScene)
RETURN FALSE
ENDIF
IF PRIVATE_Does_PedRequest_Have_Queued_Char(eReqScene, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN FALSE
ENDIF
IF PRIVATE_Is_PedRequest_Blocked_To_City(ePed, eReqScene)
RETURN FALSE
ENDIF
IF NOT bIgnoreBlipDistCheck //pre-mission switches
IF PRIVATE_Is_PedRequest_In_Active_Blip(eReqScene)
RETURN FALSE
ENDIF
ENDIF
IF PRIVATE_Is_PedRequest_Blocked_For_Weather(eReqScene, bDescentOnlyScene)
RETURN FALSE
ENDIF
IF PRIVATE_Is_PedRequest_Blocked_For_Sleeptime(ePed, eReqScene, bDescentOnlyScene)
RETURN FALSE
ENDIF
IF PRIVATE_Is_PedRequest_Blocked_For_SafehouseTutorial(ePed, eReqScene)
RETURN FALSE
ENDIF
IF NOT bIgnoreBlipDistCheck
IF PRIVATE_Is_PedRequest_TooCloseToCurrentPlayer(eReqScene, bDescentOnlyScene)
RETURN FALSE
ENDIF
ELSE
IF PRIVATE_Is_PedRequest_TooCloseToCurrentPlayer(eReqScene, bDescentOnlyScene, 15)
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
FUNC FLOAT GetDistanceFromTimeOfDayDifference(TIMEOFDAY sDiffTimeOfDay)
CONST_FLOAT fMIN_DISTANCE 1000.0
CONST_FLOAT fMAX_DISTANCE 10000.0
FLOAT fMIN_HOURS = 1.0 * 60.0 * 60.0
FLOAT fMAX_HOURS = 24.0 * 60.0 * 60.0
IF (GET_TIMEOFDAY_YEAR(sDiffTimeOfDay) > 0)
OR (GET_TIMEOFDAY_MONTH(sDiffTimeOfDay) > INT_TO_ENUM(MONTH_OF_YEAR,0))
OR (GET_TIMEOFDAY_DAY(sDiffTimeOfDay) > 0)
/* OR (sDifferenceTimeActive.iDayOfWeek > 0) */ // never needed (mon-sun?)
/* OR (sDifferenceTimeActive.iHours > 0) // only need to check if year, month or
OR (sDifferenceTimeActive.iMinutes > 0) // DOM is greater than zero to see if more
OR (sDifferenceTimeActive.iSeconds > 0) */ // than a day has passed
RETURN fMAX_DISTANCE
ENDIF
IF (GET_TIMEOFDAY_HOUR(sDiffTimeOfDay) <= 0)
RETURN 0.0
ENDIF
INT iDiffTimeInSeconds = (((GET_TIMEOFDAY_HOUR(sDiffTimeOfDay) * 60) + GET_TIMEOFDAY_MINUTE(sDiffTimeOfDay)) * 60) + GET_TIMEOFDAY_SECOND(sDiffTimeOfDay)
// CPRINTLN(DEBUG_SWITCH, " iMAX_TimeInSeconds: ")
// CPRINTLN(DEBUG_SWITCH, iMAX_TimeInSeconds)
// CPRINTLN(DEBUG_SWITCH, ", iDiffTimeInSeconds: ")
// CPRINTLN(DEBUG_SWITCH, iDiffTimeInSeconds)
//
FLOAT m = (fMAX_distance - fMIN_distance) / (fMAX_hours - fMIN_hours)
FLOAT c = fMIN_distance - (m*fMIN_hours)
FLOAT d = (m*iDiffTimeInSeconds) + c
IF d < fMIN_DISTANCE
d = fMIN_DISTANCE
ENDIF
IF d > fMAX_DISTANCE
d = fMAX_DISTANCE
ENDIF
RETURN d
ENDFUNC
FUNC BOOL GetDesiredPedRequestSceneFromArray(enumCharacterList ePed,
PED_REQUEST_SCENE_ENUM &eRequestArray[], FLOAT &fPercentArray[],
PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent,
PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene, BOOL bIgnoreBlipDistCheck = FALSE)
//get a percentage...
FLOAT fMaxPercent = 0
INT iLoop
REPEAT COUNT_OF(fPercentArray) iLoop
IF IsPedRequestScenesAcceptable(eRequestArray[iLoop], ePed, sPedScene, sPassedScene, bDescentOnlyScene, bIgnoreBlipDistCheck)
fMaxPercent += fPercentArray[iLoop]
ELSE
eRequestArray[iLoop] = PR_SCENE_INVALID
fPercentArray[iLoop] = 0.0
ENDIF
ENDREPEAT
// // // // //
// #IF IS_DEBUG_BUILD
IF NOT bDescentOnlyScene
AND NOT bIgnoreBlipDistCheck
IF (g_iAvailablePlayerMissions[ePed] = 1)
SP_MISSIONS eMission = g_eFirstAvailablePlayerMission[ePed]
STATIC_BLIP_NAME_ENUM eBlip = g_sMissionStaticData[eMission].blip
// IF (eMission = SP_HEIST_FINALE_2B)
// SAVE_STRING_TO_DEBUG_FILE("g_iAvailablePlayerMissions[")
// SAVE_STRING_TO_DEBUG_FILE(GET_PLAYER_PED_STRING(ePed))
// SAVE_STRING_TO_DEBUG_FILE("]: ")
// SAVE_INT_TO_DEBUG_FILE(g_iAvailablePlayerMissions[ePed])
// SAVE_STRING_TO_DEBUG_FILE(" mission: ")
// SAVE_STRING_TO_DEBUG_FILE(GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMission))
// SAVE_NEWLINE_TO_DEBUG_FILE()
// ENDIF
VECTOR vBlipCoords
IF NOT IS_STATIC_BLIP_MULTIMODE(eBlip)
vBlipCoords = GET_STATIC_BLIP_POSITION(eBlip)
ELSE
vBlipCoords = GET_STATIC_BLIP_POSITION(eBlip, ENUM_TO_INT(ePed))
ENDIF
VECTOR vCreateCoords = <<0,0,0>>
FLOAT fCreateHead = 0
TEXT_LABEL_31 tRoom = ""
REPEAT COUNT_OF(fPercentArray) iLoop
IF (eRequestArray[iLoop] <> PR_SCENE_INVALID)
IF GET_PLAYER_PED_POSITION_FOR_SCENE(eRequestArray[iLoop],
vCreateCoords, fCreateHead, tRoom)
FLOAT fSwitchToMissionDist2 = VDIST2(vBlipCoords, vCreateCoords)
// IF (eMission = SP_HEIST_FINALE_2B)
// #IF IS_DEBUG_BUILD
// SAVE_STRING_TO_DEBUG_FILE(" switch ")
// SAVE_STRING_TO_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(eRequestArray[iLoop]))
// SAVE_STRING_TO_DEBUG_FILE(" dist: ")
// SAVE_FLOAT_TO_DEBUG_FILE(SQRT(fSwitchToMissionDist2))
// SAVE_NEWLINE_TO_DEBUG_FILE()
// #ENDIF
// ENDIF
IF (fSwitchToMissionDist2 < (150*150))
eReqScene = eRequestArray[iLoop]
fScenePercent = 100 //fPercentArray[iLoop]
CPRINTLN(DEBUG_SWITCH, "will this ever fire - check url:bugstar:944315")
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDREPEAT
ELSE
//
ENDIF
ENDIF
// #ENDIF
// // // // //
FLOAT fPercent = GET_RANDOM_FLOAT_IN_RANGE(0, fMaxPercent)
REPEAT COUNT_OF(fPercentArray) iLoop
IF (eRequestArray[iLoop] <> PR_SCENE_INVALID)
IF fPercent < fPercentArray[iLoop]
eReqScene = eRequestArray[iLoop]
fScenePercent = fPercentArray[iLoop]
RETURN TRUE
ENDIF
fPercent -= fPercentArray[iLoop]
ENDIF
ENDREPEAT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "invalid fPercent in GetDesiredPedRequestSceneFromArray(", GET_PLAYER_PED_STRING(ePed), ",", PRIVATE_Get_Switch_Clock_Hours(), ":00)")
g_bDebugPrint_SceneScheduleInfo = TRUE
#ENDIF
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
RETURN FALSE
ENDFUNC
//ENUM TIME_SAMPLE
// TS_NIGHT = 0,
// TS_MORNING,
// TS_AFTERNOON,
// TS_EVENING
//ENDENUM
FUNC TIME_SAMPLE PRIVATE_GetPlayerTriggerPrioritySwitch(enumCharacterList ePed)
SWITCH ePed
CASE CHAR_MICHAEL
SWITCH PRIVATE_Get_Switch_Clock_Hours()
/* 00:00 - 08:59 */
CASE 0 CASE 1 CASE 2
CASE 3 CASE 4 CASE 5
CASE 6 CASE 7 CASE 8
RETURN TS_MORNING
BREAK
/* 09:00 - 13:59 */
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13
RETURN TS_AFTERNOON
BREAK
/* 14:00 - 19:59 */
CASE 14 CASE 15 CASE 16
CASE 17 CASE 18 CASE 19
RETURN TS_EVENING
BREAK
/* 20:00 - 23:59 */
CASE 20 CASE 21 CASE 22
CASE 23
RETURN TS_NIGHT
BREAK
ENDSWITCH
BREAK
CASE CHAR_FRANKLIN
SWITCH PRIVATE_Get_Switch_Clock_Hours()
/* 03:00 - 08:59 */
CASE 3 CASE 4 CASE 5
CASE 6 CASE 7 CASE 8
RETURN TS_NIGHT
BREAK
/* 09:00 - 14:59 */
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13 CASE 14
RETURN TS_MORNING
BREAK
/* 15:00 - 20:59 */
CASE 15 CASE 16 CASE 17
CASE 18 CASE 19 CASE 20
RETURN TS_AFTERNOON
BREAK
/* 21:00 - 02:59 */
CASE 21 CASE 22 CASE 23
CASE 0 CASE 1 CASE 2
RETURN TS_EVENING
BREAK
ENDSWITCH
BREAK
CASE CHAR_TREVOR
SWITCH PRIVATE_Get_Switch_Clock_Hours()
/* 00:00 - 5:59 */
CASE 0 CASE 1 CASE 2
CASE 3 CASE 4 CASE 5
RETURN TS_MORNING
BREAK
/* 06:00 - 14:59 */
CASE 6 CASE 7 CASE 8
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13 CASE 14
RETURN TS_AFTERNOON
BREAK
/* 15:00 - 23:59 */
CASE 15 CASE 16 CASE 17
CASE 18 CASE 19 CASE 20
CASE 21 CASE 22 CASE 23
RETURN TS_EVENING
BREAK
ENDSWITCH
BREAK
ENDSWITCH
RETURN INT_TO_ENUM(TIME_SAMPLE, -1)
ENDFUNC
FUNC BOOL PRIVATE_ShouldPlayerTriggerPrioritySwitch(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent,
PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
TIME_SAMPLE eSample, BOOL bDescentOnlyScene,
PED_REQUEST_SCENE_ENUM eTestSceneOne = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneTwo = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneThree = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneFour = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneFive = PR_SCENE_INVALID,
PED_REQUEST_SCENE_ENUM eTestSceneSix = PR_SCENE_INVALID)
// for url:bugstar:944315 and url:bugstar:965982, ignore priority
IF (g_iAvailablePlayerMissions[ePed] = 1)
RETURN FALSE
ENDIF
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
IF g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[ePed][eSample]
INT iSceneIndex
PED_REQUEST_SCENE_ENUM eRequestArray[6]
FLOAT fPercentArray[6]
IF (eTestSceneOne <> PR_SCENE_INVALID)
eRequestArray[iSceneIndex] = eTestSceneOne
fPercentArray[iSceneIndex] = 1.0
iSceneIndex++
ENDIF
IF (eTestSceneTwo <> PR_SCENE_INVALID)
eRequestArray[iSceneIndex] = eTestSceneTwo
fPercentArray[iSceneIndex] = 1.0
iSceneIndex++
ENDIF
IF (eTestSceneThree <> PR_SCENE_INVALID)
eRequestArray[iSceneIndex] = eTestSceneThree
fPercentArray[iSceneIndex] = 1.0
iSceneIndex++
ENDIF
IF (eTestSceneFour <> PR_SCENE_INVALID)
eRequestArray[iSceneIndex] = eTestSceneFour
fPercentArray[iSceneIndex] = 1.0
iSceneIndex++
ENDIF
IF (eTestSceneFive <> PR_SCENE_INVALID)
eRequestArray[iSceneIndex] = eTestSceneFive
fPercentArray[iSceneIndex] = 1.0
iSceneIndex++
ENDIF
IF (eTestSceneSix <> PR_SCENE_INVALID)
eRequestArray[iSceneIndex] = eTestSceneSix
fPercentArray[iSceneIndex] = 1.0
iSceneIndex++
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[ePed][eSample] = FALSE
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "reset g_bPlayerTriggeredPrioritySwitch[", GET_PLAYER_PED_STRING(ePed), "][", ENUM_TO_INT(eSample), "]")
#ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_ClearPrioritySwitchFlag(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene)
IF (eReqScene = PR_SCENE_M_DEFAULT)
OR (eReqScene = PR_SCENE_F_DEFAULT)
OR (eReqScene = PR_SCENE_T_DEFAULT)
OR (eReqScene = PR_SCENE_HOSPITAL)
OR (eReqScene = PR_SCENE_M_OVERRIDE)
OR (eReqScene = PR_SCENE_F_OVERRIDE)
OR (eReqScene = PR_SCENE_T_OVERRIDE)
RETURN FALSE
ENDIF
VECTOR vLastKnownCoords
FLOAT fLastKnownHead
IF GetLastKnownPedInfoPostMission(eReqScene, vLastKnownCoords, fLastKnownHead)
RETURN FALSE
ENDIF
TIME_SAMPLE eSample = PRIVATE_GetPlayerTriggerPrioritySwitch(ePed)
g_SavedGlobals.sPlayerSceneData.g_bPlayerTriggeredPrioritySwitch[ePed][eSample] = FALSE
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "clear g_bPlayerTriggeredPrioritySwitch[", GET_PLAYER_PED_STRING(ePed), "][sample_", ENUM_TO_INT(eSample), "]")
#ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL PRIVATE_TriggerThisPrioritySwitch(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM eReqScene, TIME_SAMPLE eSample)
IF (ePed <> NO_CHARACTER)
ENDIF
IF (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF (eSample <> TS_NIGHT)
ENDIF
RETURN TRUE
ENDFUNC
TYPEDEF FUNC BOOL SceneScheduleFunc(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
FUNC BOOL BlankSceneScheduleFunc(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
sPedScene.eScene = sPedScene.eScene
sPassedScene.eSceneBuddy = sPassedScene.eSceneBuddy
bDescentOnlyScene = bDescentOnlyScene
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDFUNC
/// PURPOSE: Cycles through the list of weapons and checks to see if the player has any ammo or mods
FUNC BOOL DoesPlayerPedHaveWeaponStored(enumCharacterList ePed, WEAPON_TYPE eWeaponType)
WEAPON_SLOT eWeaponSlot = GET_WEAPONTYPE_SLOT(eWeaponType)
// Grab the weapon type and reset ammo/mod counts
IF g_savedGlobals.sPlayerData.sInfo.sWeapons[ePed].sWeaponInfo[GET_INT_FROM_PLAYER_PED_WEAPON_SLOT(eWeaponSlot)].eWeaponType = eWeaponType
IF (g_savedGlobals.sPlayerData.sInfo.sWeapons[ePed].sWeaponInfo[GET_INT_FROM_PLAYER_PED_WEAPON_SLOT(eWeaponSlot)].iAmmoCount > 0)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
// *******************************************************************************************
// FUNCTIONS FOR MISSION SPECIFIC SWITCH SCHEDULING
// *******************************************************************************************
FUNC BOOL GetPedRequestSceneForAvailableMission(enumCharacterList ePed,
PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent,
PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[3]
FLOAT fPercentArray[3]
SP_MISSIONS ePostMissionSwitch = SP_MISSION_NONE
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_3)
// Michael should have a switch near his safehouse
IF (ePed = CHAR_MICHAEL)
eRequestArray[0] = PR_SCENE_M2_DRIVING_a fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_M2_CARSLEEP_b fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_M_COFFEE_b fPercentArray[2] = 33.3
ePostMissionSwitch = SP_MISSION_FAMILY_3
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FRANKLIN_1)
// Franklin near safehouse Block Franklin switch scenes in countryside or Drunk etc
IF (ePed = CHAR_FRANKLIN)
eRequestArray[0] = PR_SCENE_F_HIT_CUP_HAND fPercentArray[0] = 40.0
eRequestArray[1] = PR_SCENE_F_THROW_CUP fPercentArray[1] = 40.0
eRequestArray[2] = PR_SCENE_F_TRAFFIC_b fPercentArray[2] = 20.0
ePostMissionSwitch = SP_MISSION_FRANKLIN_1
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_MARTIN_1)
// Michael should be on one of his hills switches
IF (ePed = CHAR_MICHAEL)
eRequestArray[0] = PR_SCENE_M_PARKEDHILLS_a fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_M_PARKEDHILLS_b fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_M_COFFEE_a fPercentArray[2] = 33.3
ePostMissionSwitch = SP_MISSION_MARTIN_1
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_MICHAEL_1)
// Michael should have a switch near his safehouse
IF (ePed = CHAR_MICHAEL)
eRequestArray[0] = PR_SCENE_M4_CINEMA fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_M4_EXITRESTAURANT fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_M_COFFEE_a fPercentArray[2] = 33.3
ePostMissionSwitch = SP_MISSION_MICHAEL_1
ENDIF
// #1539580 - Trevor should be near Michaels
IF (ePed = CHAR_TREVOR)
eRequestArray[0] = PR_SCENE_T_DOCKS_b fPercentArray[0] = 50.0
eRequestArray[1] = PR_SCENE_T_FIGHTYAUCLUB_b fPercentArray[1] = 25.0
eRequestArray[2] = PR_SCENE_T_ESCORTED_OUT fPercentArray[2] = 25.0
ePostMissionSwitch = SP_MISSION_MICHAEL_1
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_MICHAEL_2)
// Franklin should have a switch scene near (but not too near!) city safehouse
IF (ePed = CHAR_FRANKLIN)
eRequestArray[0] = PR_SCENE_F_LAMTAUNT_P1 fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_F_TRAFFIC_b fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_F_BAR_a_01 fPercentArray[2] = 33.3
ePostMissionSwitch = SP_MISSION_MICHAEL_2
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_HEIST_FINALE_1)
// No countryside or hills for Michael city switches only.
IF (ePed = CHAR_MICHAEL)
eRequestArray[0] = PR_SCENE_M4_CINEMA fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_M4_EXITRESTAURANT fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_M_PIER_b fPercentArray[2] = 33.3
ePostMissionSwitch = SP_HEIST_FINALE_1
ENDIF
// No countryside for Trevor or too random
IF (ePed = CHAR_TREVOR)
eRequestArray[0] = PR_SCENE_T_SC_DRUNKHOWLING fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_T_SC_BAR fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_T_SC_ALLEYDRUNK fPercentArray[2] = 33.3
ePostMissionSwitch = SP_HEIST_FINALE_1
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_HEIST_FINALE_2_INTRO)
// No countryside or hills for Michael city switches only.
IF (ePed = CHAR_MICHAEL)
eRequestArray[0] = PR_SCENE_M4_CINEMA fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_M4_EXITRESTAURANT fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_M_PIER_b fPercentArray[2] = 33.3
ePostMissionSwitch = SP_HEIST_FINALE_2_INTRO
ENDIF
// No countryside for Trevor or too random
IF (ePed = CHAR_TREVOR)
eRequestArray[0] = PR_SCENE_T_SC_DRUNKHOWLING fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_T_SC_BAR fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_T_SC_ALLEYDRUNK fPercentArray[2] = 33.3
ePostMissionSwitch = SP_HEIST_FINALE_2_INTRO
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_HEIST_RURAL_1)
// Trevor on a switch that is nearby to Meth lab planning location
IF (ePed = CHAR_TREVOR)
eRequestArray[0] = PR_SCENE_T_CN_CHATEAU_b fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_T6_DIGGING fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_T_CN_POLICE_c fPercentArray[2] = 33.3
ePostMissionSwitch = SP_HEIST_RURAL_1
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_2B)
// Michael on a switch in venice area, near marina, pier?
IF (ePed = CHAR_MICHAEL)
eRequestArray[0] = PR_SCENE_M_CANAL_a fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_M2_MARINA fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_INVALID fPercentArray[2] = 33.3
ePostMissionSwitch = SP_HEIST_DOCKS_2B
ENDIF
// Trevor on a switch nearby to Floyds apartment
IF (ePed = CHAR_TREVOR)
eRequestArray[0] = PR_SCENE_T_FIGHTBBUILD fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_T_FLOYDSAVEHOUSE fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_T_FLOYDPINEAPPLE fPercentArray[2] = 33.3
ePostMissionSwitch = SP_HEIST_DOCKS_2B
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_CARSTEAL_4) //#1535040
// Trevor on a switch nearby to Franklins safehouse (the stripclub)
IF (ePed = CHAR_TREVOR)
eRequestArray[0] = PR_SCENE_T_SC_MOCKLAPDANCE fPercentArray[0] = 33.3
eRequestArray[1] = PR_SCENE_T_SC_CHASE fPercentArray[1] = 33.3
eRequestArray[2] = PR_SCENE_T_SC_BAR fPercentArray[2] = 33.3
ePostMissionSwitch = SP_MISSION_CARSTEAL_4
ENDIF
ENDIF
IF (ePostMissionSwitch <> SP_MISSION_NONE)
IF GetDesiredPedRequestSceneFromArray(ePed, eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, FALSE, TRUE)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "GetPedRequestSceneForAvailableMission(", GET_PLAYER_PED_STRING(ePed), ", ", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(ePostMissionSwitch), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " dist: ", VDIST(GET_STATIC_BLIP_POSITION(g_sMissionStaticData[ePostMissionSwitch].blip),g_sPedSceneData[eReqScene].vCreateCoords), "m")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "GetPedRequestSceneForAvailableMission(", GET_PLAYER_PED_STRING(ePed), ", ", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(ePostMissionSwitch), ") FAILED AT ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
// CASSERTLN(DEBUG_SWITCH, "GetPedRequestSceneForAvailableMission failed!!!")
#ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL SchedulePostMissionSpecificScene(enumCharacterList ePed,
PED_REQUEST_SCENE_ENUM eCurrentScene, PED_REQUEST_SCENE_ENUM &eReqScene,
FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene,
PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
FLOAT fPostMissSwitchTimeMult = 1.0)
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = eCurrentScene)
#IF IS_DEBUG_BUILD
STRING sFile = "player_switch_scene.log"
STRING sPath = "X:/gta5/build/dev/"
#ENDIF
IF NOT HasNumOfHoursPassedSincePedTimeStruct(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed], ROUND(TO_FLOAT(g_iCONST_GAME_HOURS_FOR_POST_MISSION_SWITCH)*fPostMissSwitchTimeMult))
#IF IS_DEBUG_BUILD
SAVE_STRING_TO_NAMED_DEBUG_FILE("NOT HasHourPassedSincePedTimeStruct(", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(eCurrentScene), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(", ", sPath, sFile)
SAVE_TIMEOFDAY_TO_NAMED_DEBUG_FILE(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed], sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(")", sPath, sFile)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile)
#ENDIF
fScenePercent = 100
eReqScene = eCurrentScene
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
#IF IS_DEBUG_BUILD
SAVE_STRING_TO_NAMED_DEBUG_FILE("HasHourPassedSincePedTimeStruct(", sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(Get_String_From_Ped_Request_Scene_Enum(eCurrentScene), sPath, sFile)
SAVE_STRING_TO_NAMED_DEBUG_FILE(")", sPath, sFile)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE(sPath, sFile)
#ENDIF
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed])
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_INVALID
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
sPedScene.eScene = sPedScene.eScene
sPassedScene.eSceneBuddy = sPassedScene.eSceneBuddy
RETURN FALSE
ENDFUNC
// *******************************************************************************************
// FUNCTIONS TO RETURN NEXT SCENE FOR MICHAEL
// *******************************************************************************************
ENUM enumMichaelScheduleStage
MSS_M2_WithFamily = 0, //Michael with Family [1,2,3,4]
MSS_M4_WithoutFamily, //Michael without Family [4,5,7]
MSS_M6_Exiled, //Michael Exiled
MSS_M7_ReunitedWithFamily, //Michael Re-united with family
MSS_M9_killedMichael //
ENDENUM
FUNC enumMichaelScheduleStage GetMichaelScheduleStage()
IF (g_eCurrentBuildingState[BUILDINGNAME_IPL_KILLED_MICHAEL] = BUILDINGSTATE_DESTROYED)
RETURN MSS_M9_killedMichael
ENDIF
IF NOT (GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_5))
RETURN MSS_M2_WithFamily
ELIF NOT (Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED))
RETURN MSS_M4_WithoutFamily
ELIF NOT (Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED))
RETURN MSS_M6_Exiled
ELIF NOT (GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_6))
RETURN MSS_M4_WithoutFamily
// #1476433 //
ELIF NOT (GET_MISSION_COMPLETE_STATE(SP_MISSION_MICHAEL_4))
RETURN MSS_M7_ReunitedWithFamily
ELIF NOT (GET_MISSION_COMPLETE_STATE(SP_MISSION_FINALE_CREDITS))
RETURN MSS_M4_WithoutFamily
// // // //
ELSE
RETURN MSS_M7_ReunitedWithFamily
ENDIF
ENDFUNC
/// PURPOSE:
/// /* 00:00 - 08:59 */
/// PARAMS:
/// eReqScene -
/// ePed -
/// RETURNS:
///
FUNC BOOL GetMichaelSceneForMorning(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_MICHAEL
eReqScene = PR_SCENE_INVALID fScenePercent = -1
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_M2_BEDROOM 25.0
CONST_FLOAT fCHANCE_M2_SAVEHOUSE0_b 25.0
CONST_FLOAT fCHANCE_M2_CARSLEEP_a 7.0
CONST_FLOAT fCHANCE_M2_CARSLEEP_b 3.0
CONST_FLOAT fCHANCE_M4_WATCHINGTV 15.0
CONST_FLOAT fCHANCE_M2_SAVEHOUSE1_a 12.0
CONST_FLOAT fCHANCE_M2_DRIVING_a 2.0
CONST_FLOAT fCHANCE_M_VWOODPARK_a 2.0
CONST_FLOAT fCHANCE_M_VWOODPARK_b 1.0
PED_REQUEST_SCENE_ENUM eRequestArray[10]
FLOAT fPercentArray[10]
eRequestArray[0] = PR_SCENE_M2_BEDROOM fPercentArray[0] = fCHANCE_M2_BEDROOM
eRequestArray[1] = PR_SCENE_M2_SAVEHOUSE0_b fPercentArray[1] = fCHANCE_M2_SAVEHOUSE0_b
eRequestArray[2] = PR_SCENE_M2_CARSLEEP_a fPercentArray[2] = fCHANCE_M2_CARSLEEP_a
eRequestArray[3] = PR_SCENE_M2_CARSLEEP_b fPercentArray[3] = fCHANCE_M2_CARSLEEP_b
eRequestArray[4] = PR_SCENE_M4_WATCHINGTV fPercentArray[4] = fCHANCE_M4_WATCHINGTV
eRequestArray[5] = PR_SCENE_M2_SAVEHOUSE1_a fPercentArray[5] = fCHANCE_M2_SAVEHOUSE1_a
eRequestArray[6] = PR_SCENE_M2_DRIVING_a fPercentArray[6] = fCHANCE_M2_DRIVING_a / 2.0
eRequestArray[7] = PR_SCENE_M2_DRIVING_b fPercentArray[7] = fCHANCE_M2_DRIVING_a / 2.0
IF PRIVATE_Get_Switch_Clock_Hours() > 4 //#1561291
eRequestArray[8] = PR_SCENE_M_VWOODPARK_a fPercentArray[8] = fCHANCE_M_VWOODPARK_a
eRequestArray[9] = PR_SCENE_M_VWOODPARK_b fPercentArray[9] = fCHANCE_M_VWOODPARK_b
ELSE
eRequestArray[8] = PR_SCENE_INVALID fPercentArray[8] = 0.0
eRequestArray[9] = PR_SCENE_INVALID fPercentArray[9] = 0.0
ENDIF
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_MORNING, bDescentOnlyScene)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_MORNING)
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
CONST_FLOAT fCHANCE_M4_WAKEUPSCREAM 30.0
CONST_FLOAT fCHANCE_M4_WAKESUPSCARED 30.0
CONST_FLOAT fCHANCE_M4_WATCHINGTV 30.0
CONST_FLOAT fCHANCE_M_CANAL_a 3.0
CONST_FLOAT fCHANCE_M_CANAL_b 3.0
CONST_FLOAT fCHANCE_M_CANAL_c 3.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_a 3.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_b 3.0
CONST_FLOAT fCHANCE_M_BAR_a 10.0
CONST_FLOAT fCHANCE_M_BAR_b 10.0
PED_REQUEST_SCENE_ENUM eRequestArray[10-2+1]
FLOAT fPercentArray[10-2+1]
eRequestArray[0] = PR_SCENE_M4_WAKEUPSCREAM fPercentArray[0] = fCHANCE_M4_WAKEUPSCREAM
eRequestArray[1] = PR_SCENE_M4_WAKESUPSCARED fPercentArray[1] = fCHANCE_M4_WAKESUPSCARED
eRequestArray[2] = PR_SCENE_M4_WATCHINGTV fPercentArray[2] = fCHANCE_M4_WATCHINGTV
eRequestArray[3] = PR_SCENE_M_CANAL_a fPercentArray[3] = fCHANCE_M_CANAL_a
eRequestArray[4] = PR_SCENE_M_CANAL_b fPercentArray[4] = fCHANCE_M_CANAL_b
eRequestArray[5] = PR_SCENE_M_CANAL_c fPercentArray[5] = fCHANCE_M_CANAL_c
eRequestArray[6] = PR_SCENE_M_PARKEDHILLS_a fPercentArray[6] = fCHANCE_M_PARKEDHILLS_a
eRequestArray[7] = PR_SCENE_M_PARKEDHILLS_b fPercentArray[7] = fCHANCE_M_PARKEDHILLS_b
// eRequestArray[8] = PR_SCENE_M_BAR_a fPercentArray[8] = fCHANCE_M_BAR_a
// eRequestArray[9] = PR_SCENE_M_BAR_b fPercentArray[9] = fCHANCE_M_BAR_b
eRequestArray[7+1] = PR_SCENE_M4_WASHFACE fPercentArray[7+1] = fCHANCE_M_PARKEDHILLS_b
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M6_Exiled)
CONST_FLOAT fCHANCE_M6_MORNING_a 20.0
CONST_FLOAT fCHANCE_M6_MORNING_b 20.0
CONST_FLOAT fCHANCE_M6_CARSLEEP 10.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_a 2.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_b 2.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_c 2.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_d 2.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_e 2.0
CONST_FLOAT fCHANCE_M6_HOUSETV_a 10.0
CONST_FLOAT fCHANCE_M6_HOUSETV_b 10.0
CONST_FLOAT fCHANCE_M6_DRIVING_c 2.5
CONST_FLOAT fCHANCE_M6_DRIVING_d 2.5
CONST_FLOAT fCHANCE_M6_RONBORING 10.0
PED_REQUEST_SCENE_ENUM eRequestArray[13-2]
FLOAT fPercentArray[13-2]
eRequestArray[0] = PR_SCENE_M6_MORNING_a fPercentArray[0] = fCHANCE_M6_MORNING_a
// eRequestArray[1] = PR_SCENE_M6_MORNING_b fPercentArray[1] = fCHANCE_M6_MORNING_b
eRequestArray[2-1] = PR_SCENE_M6_CARSLEEP fPercentArray[2-1] = fCHANCE_M6_CARSLEEP
eRequestArray[3-1] = PR_SCENE_M6_PARKEDHILLS_a fPercentArray[3-1] = fCHANCE_M6_PARKEDHILLS_a
eRequestArray[4-1] = PR_SCENE_M6_PARKEDHILLS_b fPercentArray[4-1] = fCHANCE_M6_PARKEDHILLS_b
eRequestArray[5-1] = PR_SCENE_M6_PARKEDHILLS_c fPercentArray[5-1] = fCHANCE_M6_PARKEDHILLS_c
eRequestArray[6-1] = PR_SCENE_M6_PARKEDHILLS_d fPercentArray[6-1] = fCHANCE_M6_PARKEDHILLS_d
eRequestArray[7-1] = PR_SCENE_M6_PARKEDHILLS_e fPercentArray[7-1] = fCHANCE_M6_PARKEDHILLS_e
eRequestArray[8-1] = PR_SCENE_M6_HOUSETV_a fPercentArray[8-1] = fCHANCE_M6_HOUSETV_a
// eRequestArray[9-1] = PR_SCENE_M6_HOUSETV_b fPercentArray[9-1] = fCHANCE_M6_HOUSETV_b
eRequestArray[10-1-1] = PR_SCENE_M6_DRIVING_c fPercentArray[10-1-1] = fCHANCE_M6_DRIVING_c
eRequestArray[11-1-1] = PR_SCENE_M6_DRIVING_d fPercentArray[11-1-1] = fCHANCE_M6_DRIVING_d
eRequestArray[12-1-1] = PR_SCENE_M6_RONBORING fPercentArray[12-1-1] = fCHANCE_M6_RONBORING
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
CONST_FLOAT fCHANCE_M4_WATCHINGTV 15.0
CONST_FLOAT fCHANCE_M7_GETSREADY 25.0
CONST_FLOAT fCHANCE_M7_KIDS_GAMING 20.0
CONST_FLOAT fCHANCE_M7_KIDS_TV 20.0
CONST_FLOAT fCHANCE_M7_HOOKERS 20.0
PED_REQUEST_SCENE_ENUM eRequestArray[10]
FLOAT fPercentArray[10]
eRequestArray[0] = PR_SCENE_M4_WATCHINGTV fPercentArray[0] = fCHANCE_M4_WATCHINGTV
eRequestArray[1] = PR_SCENE_M7_GETSREADY fPercentArray[1] = fCHANCE_M7_GETSREADY
eRequestArray[2] = PR_SCENE_M7_KIDS_GAMING fPercentArray[2] = fCHANCE_M7_KIDS_GAMING
eRequestArray[3] = PR_SCENE_M7_KIDS_TV fPercentArray[3] = fCHANCE_M7_KIDS_TV
eRequestArray[4] = PR_SCENE_M7_HOOKERS fPercentArray[4] = fCHANCE_M7_HOOKERS
eRequestArray[5] = PR_SCENE_M6_PARKEDHILLS_a fPercentArray[5] = 1.0
eRequestArray[6] = PR_SCENE_M6_PARKEDHILLS_b fPercentArray[6] = 1.0
eRequestArray[7] = PR_SCENE_M6_PARKEDHILLS_c fPercentArray[7] = 1.0
eRequestArray[8] = PR_SCENE_M6_PARKEDHILLS_d fPercentArray[8] = 1.0
eRequestArray[9] = PR_SCENE_M6_PARKEDHILLS_e fPercentArray[9] = 1.0
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_MORNING, bDescentOnlyScene,
PR_SCENE_M7_KIDS_GAMING, PR_SCENE_M7_KIDS_TV)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_MORNING)
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
eReqScene = PR_SCENE_INVALID fScenePercent = -1
CASSERTLN(DEBUG_SWITCH, "invalid thisMichaelScheduleStage in GetMichaelSceneForMorning()")
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDFUNC
FUNC BOOL GetMichaelSceneForMorningParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetMichaelSceneForMorning(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
/// PURPOSE:
/// /* 09:00 - 13:59 */
/// PARAMS:
/// eReqScene -
/// RETURNS:
///
FUNC BOOL GetMichaelSceneForAfternoon(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent,
PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_MICHAEL
eReqScene = PR_SCENE_INVALID fScenePercent = -1
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_M_POOLSIDE_a 1.5
CONST_FLOAT fCHANCE_M_POOLSIDE_b 1.5
CONST_FLOAT fCHANCE_M2_SMOKINGGOLF 2.0
CONST_FLOAT fCHANCE_M_PIER_a 1.0
CONST_FLOAT fCHANCE_M_PIER_b 1.0
CONST_FLOAT fCHANCE_M_TRAFFIC_a 1.0
CONST_FLOAT fCHANCE_M_TRAFFIC_b 1.0
CONST_FLOAT fCHANCE_M_TRAFFIC_c 1.0
CONST_FLOAT fCHANCE_M_VWOODPARK_a 2.0
CONST_FLOAT fCHANCE_M_VWOODPARK_b 1.0
CONST_FLOAT fCHANCE_M2_WIFEEXITSCAR 10.5
CONST_FLOAT fCHANCE_M2_DROPOFFDAU_a 10.5
CONST_FLOAT fCHANCE_M2_DROPOFFSON_a 10.5
CONST_FLOAT fCHANCE_M2_DROPOFFSON_b 10.5
CONST_FLOAT fCHANCE_M_BENCHCALL_a 3.0
CONST_FLOAT fCHANCE_M_BENCHCALL_b 2.0
CONST_FLOAT fCHANCE_M_COFFEE_a 1.0
CONST_FLOAT fCHANCE_M_COFFEE_b 1.0
CONST_FLOAT fCHANCE_M_COFFEE_c 1.0
CONST_FLOAT fCHANCE_M2_CYCLING_a 2.0
CONST_FLOAT fCHANCE_M2_CYCLING_b 2.0
CONST_FLOAT fCHANCE_M2_CYCLING_c 2.0
CONST_FLOAT fCHANCE_M2_LUNCH_a 10.0
CONST_FLOAT fCHANCE_M2_PHARMACY 5.0
CONST_FLOAT fCHANCE_M2_MARINA 1.0
CONST_FLOAT fCHANCE_M2_ARGUEWITHWIFE 5.0
CONST_FLOAT fCHANCE_M2_DRIVING_a 2.0
CONST_FLOAT fCHANCE_M2_SAVEHOUSE1_b 10.0
PED_REQUEST_SCENE_ENUM eRequestArray[30]
FLOAT fPercentArray[30]
eRequestArray[0] = PR_SCENE_M_POOLSIDE_a fPercentArray[0] = fCHANCE_M_POOLSIDE_a
eRequestArray[1] = PR_SCENE_M_POOLSIDE_b fPercentArray[1] = fCHANCE_M_POOLSIDE_b
IF GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_GOLF))
eRequestArray[2] = PR_SCENE_M2_SMOKINGGOLF fPercentArray[2] = fCHANCE_M2_SMOKINGGOLF
ELSE
eRequestArray[2] = PR_SCENE_INVALID fPercentArray[2] = 0.0
ENDIF
eRequestArray[3] = PR_SCENE_M_PIER_a fPercentArray[3] = fCHANCE_M_PIER_a
eRequestArray[4] = PR_SCENE_M_PIER_b fPercentArray[4] = fCHANCE_M_PIER_b
eRequestArray[5] = PR_SCENE_M_TRAFFIC_a fPercentArray[5] = fCHANCE_M_TRAFFIC_a
eRequestArray[6] = PR_SCENE_M_TRAFFIC_b fPercentArray[6] = fCHANCE_M_TRAFFIC_b
eRequestArray[7] = PR_SCENE_M_TRAFFIC_c fPercentArray[7] = fCHANCE_M_TRAFFIC_c
eRequestArray[8] = PR_SCENE_M_VWOODPARK_a fPercentArray[8] = fCHANCE_M_VWOODPARK_a
eRequestArray[9] = PR_SCENE_M_VWOODPARK_b fPercentArray[9] = fCHANCE_M_VWOODPARK_b
eRequestArray[10] = PR_SCENE_M2_WIFEEXITSCAR fPercentArray[10] = fCHANCE_M2_WIFEEXITSCAR
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_2)
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
eRequestArray[11] = PR_SCENE_M2_DROPOFFDAU_a fPercentArray[11] = fCHANCE_M2_DROPOFFDAU_a
ELSE
eRequestArray[11] = PR_SCENE_INVALID fPercentArray[11] = 0.0
ENDIF
eRequestArray[12] = PR_SCENE_M2_DROPOFFSON_a fPercentArray[12] = fCHANCE_M2_DROPOFFSON_a
eRequestArray[13] = PR_SCENE_M2_DROPOFFSON_b fPercentArray[13] = fCHANCE_M2_DROPOFFSON_b
ELSE
eRequestArray[11] = PR_SCENE_INVALID fPercentArray[11] = 0.0
eRequestArray[12] = PR_SCENE_INVALID fPercentArray[12] = 0.0
eRequestArray[13] = PR_SCENE_INVALID fPercentArray[13] = 0.0
ENDIF
eRequestArray[14] = PR_SCENE_M_BENCHCALL_a fPercentArray[14] = fCHANCE_M_BENCHCALL_a
eRequestArray[15] = PR_SCENE_M_BENCHCALL_b fPercentArray[15] = fCHANCE_M_BENCHCALL_b
eRequestArray[16] = PR_SCENE_M_COFFEE_a fPercentArray[16] = fCHANCE_M_COFFEE_a
eRequestArray[17] = PR_SCENE_M_COFFEE_b fPercentArray[17] = fCHANCE_M_COFFEE_b
eRequestArray[18] = PR_SCENE_M_COFFEE_c fPercentArray[18] = fCHANCE_M_COFFEE_c
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_3) //1080407
eRequestArray[19] = PR_SCENE_M2_CYCLING_a fPercentArray[19] = fCHANCE_M2_CYCLING_a
eRequestArray[20] = PR_SCENE_M2_CYCLING_b fPercentArray[20] = fCHANCE_M2_CYCLING_b
eRequestArray[21] = PR_SCENE_M2_CYCLING_c fPercentArray[21] = fCHANCE_M2_CYCLING_c
ELSE
eRequestArray[19] = PR_SCENE_INVALID fPercentArray[19] = 0.0
eRequestArray[20] = PR_SCENE_INVALID fPercentArray[20] = 0.0
eRequestArray[21] = PR_SCENE_INVALID fPercentArray[21] = 0.0
ENDIF
eRequestArray[22] = PR_SCENE_M2_LUNCH_a fPercentArray[22] = fCHANCE_M2_LUNCH_a
eRequestArray[24] = PR_SCENE_M2_PHARMACY fPercentArray[24] = fCHANCE_M2_PHARMACY
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_1)
eRequestArray[25] = PR_SCENE_M2_MARINA fPercentArray[25] = fCHANCE_M2_MARINA
ELSE
eRequestArray[25] = PR_SCENE_INVALID fPercentArray[25] = 0.0
ENDIF
eRequestArray[26] = PR_SCENE_M2_ARGUEWITHWIFE fPercentArray[26] = fCHANCE_M2_ARGUEWITHWIFE
eRequestArray[27] = PR_SCENE_M2_DRIVING_a fPercentArray[27] = fCHANCE_M2_DRIVING_a / 2.0
eRequestArray[28] = PR_SCENE_M2_DRIVING_b fPercentArray[28] = fCHANCE_M2_DRIVING_a / 2.0
eRequestArray[29] = PR_SCENE_M2_SAVEHOUSE1_b fPercentArray[29] = fCHANCE_M2_SAVEHOUSE1_b
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_2)
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_M2_WIFEEXITSCAR, PR_SCENE_M2_DROPOFFDAU_a, PR_SCENE_M2_DROPOFFSON_a, PR_SCENE_M2_DROPOFFSON_b,
PR_SCENE_M2_ARGUEWITHWIFE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
ELSE
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_M2_WIFEEXITSCAR, PR_SCENE_M2_DROPOFFSON_a, PR_SCENE_M2_DROPOFFSON_b,
PR_SCENE_M2_ARGUEWITHWIFE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
ENDIF
ELSE
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_M2_WIFEEXITSCAR,
PR_SCENE_M2_ARGUEWITHWIFE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
CONST_FLOAT fCHANCE_M4_WAKEUPSCREAM 10.5
CONST_FLOAT fCHANCE_M4_WAKESUPSCARED 10.5
CONST_FLOAT fCHANCE_M_POOLSIDE_a 5.0
CONST_FLOAT fCHANCE_M_POOLSIDE_b 5.0
CONST_FLOAT fCHANCE_M4_HOUSEBED_b 2.5
CONST_FLOAT fCHANCE_M_CANAL_a 2.5
CONST_FLOAT fCHANCE_M_CANAL_b 2.5
CONST_FLOAT fCHANCE_M_PIER_a 2.5
CONST_FLOAT fCHANCE_M_PIER_b 2.5
CONST_FLOAT fCHANCE_M_TRAFFIC_a 2.0
CONST_FLOAT fCHANCE_M_TRAFFIC_b 2.0
CONST_FLOAT fCHANCE_M_TRAFFIC_c 2.0
CONST_FLOAT fCHANCE_M_VWOODPARK_a 2.0
CONST_FLOAT fCHANCE_M_VWOODPARK_b 1.0
CONST_FLOAT fCHANCE_M_BENCHCALL_a 2.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_a 2.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_b 2.0
CONST_FLOAT fCHANCE_M_COFFEE_a 3.0
CONST_FLOAT fCHANCE_M_COFFEE_b 3.0
CONST_FLOAT fCHANCE_M_COFFEE_c 2.0
CONST_FLOAT fCHANCE_M4_EXITRESTAURANT 10.0
CONST_FLOAT fCHANCE_M4_LUNCH_b 5.0
CONST_FLOAT fCHANCE_M4_CINEMA 10.0
CONST_FLOAT fCHANCE_M_BAR_a 2.5
CONST_FLOAT fCHANCE_M_BAR_b 2.5
CONST_FLOAT fCHANCE_M4_DOORSTUMBLE 11.0
PED_REQUEST_SCENE_ENUM eRequestArray[24-3+2]
FLOAT fPercentArray[24-3+2]
eRequestArray[0] = PR_SCENE_M4_WAKEUPSCREAM fPercentArray[0] = fCHANCE_M4_WAKEUPSCREAM
eRequestArray[1] = PR_SCENE_M4_WAKESUPSCARED fPercentArray[1] = fCHANCE_M4_WAKESUPSCARED
eRequestArray[2] = PR_SCENE_M_POOLSIDE_a fPercentArray[2] = fCHANCE_M_POOLSIDE_a
eRequestArray[3] = PR_SCENE_M_POOLSIDE_b fPercentArray[3] = fCHANCE_M_POOLSIDE_b
// eRequestArray[4] = PR_SCENE_M4_HOUSEBED_b fPercentArray[4] = fCHANCE_M4_HOUSEBED_b
eRequestArray[3+1] = PR_SCENE_M_CANAL_a fPercentArray[3+1] = fCHANCE_M_CANAL_a
eRequestArray[4+1] = PR_SCENE_M_CANAL_b fPercentArray[4+1] = fCHANCE_M_CANAL_b
eRequestArray[5+1] = PR_SCENE_M_PIER_a fPercentArray[5+1] = fCHANCE_M_PIER_a
eRequestArray[6+1] = PR_SCENE_M_PIER_b fPercentArray[6+1] = fCHANCE_M_PIER_b
eRequestArray[7+1] = PR_SCENE_M_TRAFFIC_a fPercentArray[7+1] = fCHANCE_M_TRAFFIC_a
eRequestArray[10-2+1] = PR_SCENE_M_TRAFFIC_b fPercentArray[10-2+1] = fCHANCE_M_TRAFFIC_b
eRequestArray[11-2+1] = PR_SCENE_M_TRAFFIC_c fPercentArray[11-2+1] = fCHANCE_M_TRAFFIC_c
eRequestArray[10+1] = PR_SCENE_M_VWOODPARK_a fPercentArray[10+1] = fCHANCE_M_VWOODPARK_a
eRequestArray[11+1] = PR_SCENE_M_VWOODPARK_b fPercentArray[11+1] = fCHANCE_M_VWOODPARK_b
eRequestArray[12+1] = PR_SCENE_M_BENCHCALL_a fPercentArray[12+1] = fCHANCE_M_BENCHCALL_a
eRequestArray[13+1] = PR_SCENE_M_PARKEDHILLS_a fPercentArray[13+1] = fCHANCE_M_PARKEDHILLS_a
eRequestArray[14+1] = PR_SCENE_M_PARKEDHILLS_b fPercentArray[14+1] = fCHANCE_M_PARKEDHILLS_b
eRequestArray[15+1] = PR_SCENE_M_COFFEE_a fPercentArray[15+1] = fCHANCE_M_COFFEE_a
eRequestArray[16+1] = PR_SCENE_M_COFFEE_b fPercentArray[16+1] = fCHANCE_M_COFFEE_b
eRequestArray[17+1] = PR_SCENE_M_COFFEE_c fPercentArray[17+1] = fCHANCE_M_COFFEE_c
eRequestArray[20-2+1] = PR_SCENE_M4_EXITRESTAURANT fPercentArray[20-2+1] = fCHANCE_M4_EXITRESTAURANT
eRequestArray[21-2+1] = PR_SCENE_M4_LUNCH_b fPercentArray[21-2+1] = fCHANCE_M4_LUNCH_b
eRequestArray[20+1] = PR_SCENE_M4_CINEMA fPercentArray[20+1] = fCHANCE_M4_CINEMA
// eRequestArray[21+1] = PR_SCENE_M_BAR_a fPercentArray[21+1] = fCHANCE_M_BAR_a
// eRequestArray[22+1] = PR_SCENE_M_BAR_b fPercentArray[22+1] = fCHANCE_M_BAR_b
// eRequestArray[23+1] = PR_SCENE_M4_DOORSTUMBLE fPercentArray[23+1] = fCHANCE_M4_DOORSTUMBLE
eRequestArray[20+1+1] = PR_SCENE_M4_WASHFACE fPercentArray[20+1+1] = fCHANCE_M4_CINEMA
// IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
// PR_SCENE_M4_DOORSTUMBLE)
// RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
// ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M6_Exiled)
CONST_FLOAT fCHANCE_M6_SUNBATHING 20.0
CONST_FLOAT fCHANCE_M6_ONPHONE 20.0
CONST_FLOAT fCHANCE_M6_DEPRESSED 20.0
CONST_FLOAT fCHANCE_M6_BOATING 15.0
CONST_FLOAT fCHANCE_M6_LIQUORSTORE 15.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_a 3.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_b 3.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_c 3.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_d 3.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_e 3.0
CONST_FLOAT fCHANCE_M6_DRIVING_e 1.5
CONST_FLOAT fCHANCE_M6_DRIVING_f 1.5
CONST_FLOAT fCHANCE_M6_HOUSEBED 2.5
CONST_FLOAT fCHANCE_M6_RONBORING 15.0
PED_REQUEST_SCENE_ENUM eRequestArray[14]
FLOAT fPercentArray[14]
eRequestArray[0] = PR_SCENE_M6_SUNBATHING
IF IS_BIT_SET(g_savedGlobals.sPlayerData.sInfo.sLimitedWardrobeItems[LPW_MICHAEL_COUNTRYSIDE].iItemBitset[COMP_TYPE_OUTFIT][(ENUM_TO_INT(OUTFIT_P0_YOGA_FLIP_FLOPS)/32)], (ENUM_TO_INT(OUTFIT_P0_YOGA_FLIP_FLOPS)%32))
fPercentArray[0] = fCHANCE_M6_SUNBATHING * 2.0
ELSE
fPercentArray[0] = fCHANCE_M6_SUNBATHING
ENDIF
eRequestArray[1] = PR_SCENE_M6_ONPHONE fPercentArray[1] = fCHANCE_M6_ONPHONE
eRequestArray[2] = PR_SCENE_M6_DEPRESSED fPercentArray[2] = fCHANCE_M6_DEPRESSED
eRequestArray[3] = PR_SCENE_M6_BOATING fPercentArray[3] = fCHANCE_M6_BOATING
eRequestArray[4] = PR_SCENE_M6_LIQUORSTORE fPercentArray[4] = fCHANCE_M6_LIQUORSTORE
eRequestArray[5] = PR_SCENE_M6_PARKEDHILLS_a fPercentArray[5] = fCHANCE_M6_PARKEDHILLS_a
eRequestArray[6] = PR_SCENE_M6_PARKEDHILLS_b fPercentArray[6] = fCHANCE_M6_PARKEDHILLS_b
eRequestArray[7] = PR_SCENE_M6_PARKEDHILLS_c fPercentArray[7] = fCHANCE_M6_PARKEDHILLS_c
eRequestArray[8] = PR_SCENE_M6_PARKEDHILLS_d fPercentArray[8] = fCHANCE_M6_PARKEDHILLS_d
eRequestArray[9] = PR_SCENE_M6_PARKEDHILLS_e fPercentArray[9] = fCHANCE_M6_PARKEDHILLS_e
eRequestArray[10] = PR_SCENE_M6_DRIVING_e fPercentArray[10] = fCHANCE_M6_DRIVING_e
eRequestArray[11] = PR_SCENE_M6_DRIVING_f fPercentArray[11] = fCHANCE_M6_DRIVING_f
eRequestArray[12] = PR_SCENE_M6_HOUSEBED fPercentArray[12] = fCHANCE_M6_HOUSEBED
eRequestArray[13] = PR_SCENE_M6_RONBORING fPercentArray[13] = fCHANCE_M6_RONBORING
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
CONST_FLOAT fCHANCE_M7_RESTAURANT 10.0
CONST_FLOAT fCHANCE_M7_COFFEE 15.0
CONST_FLOAT fCHANCE_M7_READSCRIPT 15.0
CONST_FLOAT fCHANCE_M7_OPENDOORFORAMA 3.33
CONST_FLOAT fCHANCE_M7_DROPPINGOFFJMY 3.33
CONST_FLOAT fCHANCE_M7_TRACEYEXITSCAR 3.33
CONST_FLOAT fCHANCE_M7_BYESOLOMON 5.0
CONST_FLOAT fCHANCE_M7_EXITBARBER 10.0
CONST_FLOAT fCHANCE_M7_EXITFANCYSHOP 10.0
CONST_FLOAT fCHANCE_M7_FAKEYOGA 10.0
CONST_FLOAT fCHANCE_M7_WIFETENNIS 15.0
CONST_FLOAT fCHANCE_M7_LUNCH_b 10.0
PED_REQUEST_SCENE_ENUM eRequestArray[13-1]
FLOAT fPercentArray[13-1]
eRequestArray[0] = PR_SCENE_M7_RESTAURANT fPercentArray[0] = fCHANCE_M7_RESTAURANT
eRequestArray[1] = PR_SCENE_M7_COFFEE fPercentArray[1] = fCHANCE_M7_COFFEE
eRequestArray[2] = PR_SCENE_M7_READSCRIPT fPercentArray[2] = fCHANCE_M7_READSCRIPT
eRequestArray[3] = PR_SCENE_M7_OPENDOORFORAMA fPercentArray[3] = fCHANCE_M7_OPENDOORFORAMA
eRequestArray[4] = PR_SCENE_M7_DROPPINGOFFJMY fPercentArray[4] = fCHANCE_M7_DROPPINGOFFJMY
eRequestArray[5] = PR_SCENE_M7_TRACEYEXITSCAR fPercentArray[5] = fCHANCE_M7_TRACEYEXITSCAR
eRequestArray[6] = PR_SCENE_M7_BYESOLOMON_a fPercentArray[6] = fCHANCE_M7_BYESOLOMON / 2.0
eRequestArray[7] = PR_SCENE_M7_BYESOLOMON_b fPercentArray[7] = fCHANCE_M7_BYESOLOMON / 2.0
IF HAS_SHOP_RUN_ENTRY_INTRO(HAIRDO_SHOP_01_BH)
eRequestArray[8] = PR_SCENE_M7_EXITBARBER fPercentArray[8] = fCHANCE_M7_EXITBARBER
ELSE
eRequestArray[8] = PR_SCENE_INVALID fPercentArray[8] = 0.0
ENDIF
eRequestArray[9] = PR_SCENE_M7_EXITFANCYSHOP fPercentArray[9] = fCHANCE_M7_EXITFANCYSHOP
eRequestArray[10] = PR_SCENE_M7_FAKEYOGA fPercentArray[10] = fCHANCE_M7_FAKEYOGA
eRequestArray[11] = PR_SCENE_M7_WIFETENNIS fPercentArray[11] = fCHANCE_M7_WIFETENNIS
// eRequestArray[12] = PR_SCENE_M7_LUNCH_b fPercentArray[12] = fCHANCE_M7_LUNCH_b
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_M7_BYESOLOMON_a, PR_SCENE_M7_BYESOLOMON_b,
PR_SCENE_M7_FAKEYOGA, PR_SCENE_M7_WIFETENNIS,
PR_SCENE_M7_ROUNDTABLE, PR_SCENE_M7_KIDS_TV)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
eReqScene = PR_SCENE_INVALID fScenePercent = -1
CASSERTLN(DEBUG_SWITCH, "invalid thisMichaelScheduleStage in GetMichaelSceneForAfternoon()")
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDFUNC
FUNC BOOL GetMichaelSceneForAfternoonParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetMichaelSceneForAfternoon(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
/// PURPOSE:
/// /* 14:00 - 19:59 */
/// PARAMS:
/// eReqScene -
/// RETURNS:
///
FUNC BOOL GetMichaelSceneForEvening(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_MICHAEL
eReqScene = PR_SCENE_INVALID fScenePercent = -1
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_M_PIER_a 9.0
CONST_FLOAT fCHANCE_M_PIER_b 5.0
CONST_FLOAT fCHANCE_M_TRAFFIC_a 7.0
CONST_FLOAT fCHANCE_M_TRAFFIC_b 9.0
CONST_FLOAT fCHANCE_M_TRAFFIC_c 7.0
CONST_FLOAT fCHANCE_M_VWOODPARK_a 5.0
CONST_FLOAT fCHANCE_M_VWOODPARK_b 1.0
CONST_FLOAT fCHANCE_M_BENCHCALL_a 5.0
CONST_FLOAT fCHANCE_M_BENCHCALL_b 5.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_a 5.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_b 5.0
CONST_FLOAT fCHANCE_M2_MARINA 10.0
CONST_FLOAT fCHANCE_M2_ARGUEWITHWIFE 16.0
CONST_FLOAT fCHANCE_M2_LUNCH_a 5.0
CONST_FLOAT fCHANCE_M2_DRIVING_a 2.0
PED_REQUEST_SCENE_ENUM eRequestArray[16]
FLOAT fPercentArray[16]
eRequestArray[0] = PR_SCENE_M_PIER_a fPercentArray[0] = fCHANCE_M_PIER_a
eRequestArray[1] = PR_SCENE_M_PIER_b fPercentArray[1] = fCHANCE_M_PIER_b
eRequestArray[2] = PR_SCENE_M_TRAFFIC_a fPercentArray[2] = fCHANCE_M_TRAFFIC_a
eRequestArray[3] = PR_SCENE_M_TRAFFIC_b fPercentArray[3] = fCHANCE_M_TRAFFIC_b
eRequestArray[4] = PR_SCENE_M_TRAFFIC_c fPercentArray[4] = fCHANCE_M_TRAFFIC_c
eRequestArray[5] = PR_SCENE_M_VWOODPARK_a fPercentArray[5] = fCHANCE_M_VWOODPARK_a
eRequestArray[6] = PR_SCENE_M_VWOODPARK_b fPercentArray[6] = fCHANCE_M_VWOODPARK_b
eRequestArray[7] = PR_SCENE_M_BENCHCALL_a fPercentArray[7] = fCHANCE_M_BENCHCALL_a
eRequestArray[8] = PR_SCENE_M_BENCHCALL_b fPercentArray[8] = fCHANCE_M_BENCHCALL_b
eRequestArray[9] = PR_SCENE_M_PARKEDHILLS_a fPercentArray[9] = fCHANCE_M_PARKEDHILLS_a
eRequestArray[10] = PR_SCENE_M_PARKEDHILLS_b fPercentArray[10] = fCHANCE_M_PARKEDHILLS_b
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_1)
eRequestArray[11] = PR_SCENE_M2_MARINA fPercentArray[11] = fCHANCE_M2_MARINA
ELSE
eRequestArray[11] = PR_SCENE_INVALID fPercentArray[11] = 0.0
ENDIF
eRequestArray[12] = PR_SCENE_M2_ARGUEWITHWIFE fPercentArray[12] = fCHANCE_M2_ARGUEWITHWIFE
eRequestArray[13] = PR_SCENE_M2_LUNCH_a fPercentArray[13] = fCHANCE_M2_LUNCH_a
eRequestArray[14] = PR_SCENE_M2_DRIVING_a fPercentArray[14] = fCHANCE_M2_DRIVING_a / 2.0
eRequestArray[15] = PR_SCENE_M2_DRIVING_b fPercentArray[15] = fCHANCE_M2_DRIVING_a / 2.0
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
// PR_SCENE_M_TRAFFIC_a, PR_SCENE_M_TRAFFIC_b, PR_SCENE_M_TRAFFIC_c,
PR_SCENE_M2_ARGUEWITHWIFE,
PR_SCENE_M2_LUNCH_a)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
CONST_FLOAT fCHANCE_M4_WAKEUPSCREAM 10.0
CONST_FLOAT fCHANCE_M4_WAKESUPSCARED 10.5
CONST_FLOAT fCHANCE_M_CANAL_a 3.0
CONST_FLOAT fCHANCE_M_CANAL_b 3.0
CONST_FLOAT fCHANCE_M_CANAL_c 3.0
CONST_FLOAT fCHANCE_M_PIER_a 3.0
CONST_FLOAT fCHANCE_M_PIER_b 3.0
CONST_FLOAT fCHANCE_M_TRAFFIC_a 3.0
CONST_FLOAT fCHANCE_M_TRAFFIC_b 3.0
CONST_FLOAT fCHANCE_M_TRAFFIC_c 4.0
CONST_FLOAT fCHANCE_M_VWOODPARK_a 1.5
CONST_FLOAT fCHANCE_M_VWOODPARK_b 1.0
CONST_FLOAT fCHANCE_M_BENCHCALL_a 1.0
CONST_FLOAT fCHANCE_M_BENCHCALL_b 1.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_a 1.5
CONST_FLOAT fCHANCE_M_PARKEDHILLS_b 1.5
CONST_FLOAT fCHANCE_M_COFFEE_a 4.0
CONST_FLOAT fCHANCE_M_COFFEE_b 3.0
CONST_FLOAT fCHANCE_M_COFFEE_c 3.0
CONST_FLOAT fCHANCE_M_BAR_a 6.0
CONST_FLOAT fCHANCE_M_BAR_b 6.0
CONST_FLOAT fCHANCE_M4_PARKEDBEACH 4.0
CONST_FLOAT fCHANCE_M4_DOORSTUMBLE 5.0
CONST_FLOAT fCHANCE_M4_EXITRESTAURANT 2.5
CONST_FLOAT fCHANCE_M4_LUNCH_b 2.5
CONST_FLOAT fCHANCE_M4_CINEMA 5.0
CONST_FLOAT fCHANCE_M_HOOKERMOTEL 8.0
CONST_FLOAT fCHANCE_M_HOOKERCAR 5.0
PED_REQUEST_SCENE_ENUM eRequestArray[28-3-1+1]
FLOAT fPercentArray[28-3-1+1]
eRequestArray[0] = PR_SCENE_M4_WAKEUPSCREAM fPercentArray[0] = fCHANCE_M4_WAKEUPSCREAM
eRequestArray[1] = PR_SCENE_M4_WAKESUPSCARED fPercentArray[1] = fCHANCE_M4_WAKESUPSCARED
eRequestArray[2] = PR_SCENE_M_CANAL_a fPercentArray[2] = fCHANCE_M_CANAL_a
eRequestArray[3] = PR_SCENE_M_CANAL_b fPercentArray[3] = fCHANCE_M_CANAL_b
eRequestArray[4] = PR_SCENE_M_CANAL_c fPercentArray[4] = fCHANCE_M_CANAL_c
eRequestArray[5] = PR_SCENE_M_PIER_a fPercentArray[5] = fCHANCE_M_PIER_a
eRequestArray[6] = PR_SCENE_M_PIER_b fPercentArray[6] = fCHANCE_M_PIER_b
eRequestArray[7] = PR_SCENE_M_TRAFFIC_a fPercentArray[7] = fCHANCE_M_TRAFFIC_a
eRequestArray[8] = PR_SCENE_M_TRAFFIC_b fPercentArray[8] = fCHANCE_M_TRAFFIC_b
eRequestArray[9] = PR_SCENE_M_TRAFFIC_c fPercentArray[9] = fCHANCE_M_TRAFFIC_c
eRequestArray[10] = PR_SCENE_M_VWOODPARK_a fPercentArray[10] = fCHANCE_M_VWOODPARK_a
eRequestArray[11] = PR_SCENE_M_VWOODPARK_b fPercentArray[11] = fCHANCE_M_VWOODPARK_b
eRequestArray[12] = PR_SCENE_M_BENCHCALL_a fPercentArray[12] = fCHANCE_M_BENCHCALL_a
eRequestArray[13] = PR_SCENE_M_BENCHCALL_b fPercentArray[13] = fCHANCE_M_BENCHCALL_b
eRequestArray[14] = PR_SCENE_M_PARKEDHILLS_a fPercentArray[14] = fCHANCE_M_PARKEDHILLS_a
eRequestArray[15] = PR_SCENE_M_PARKEDHILLS_b fPercentArray[15] = fCHANCE_M_PARKEDHILLS_b
eRequestArray[16] = PR_SCENE_M_COFFEE_a fPercentArray[16] = fCHANCE_M_COFFEE_a
eRequestArray[17] = PR_SCENE_M_COFFEE_b fPercentArray[17] = fCHANCE_M_COFFEE_b
eRequestArray[18] = PR_SCENE_M_COFFEE_c fPercentArray[18] = fCHANCE_M_COFFEE_c
// eRequestArray[19] = PR_SCENE_M_BAR_a fPercentArray[19] = fCHANCE_M_BAR_a
// eRequestArray[20] = PR_SCENE_M_BAR_b fPercentArray[20] = fCHANCE_M_BAR_b
eRequestArray[21-2] = PR_SCENE_M4_PARKEDBEACH fPercentArray[21-2] = fCHANCE_M4_PARKEDBEACH
// eRequestArray[22-2] = PR_SCENE_M4_DOORSTUMBLE fPercentArray[22-2] = fCHANCE_M4_DOORSTUMBLE
eRequestArray[23-2-1] = PR_SCENE_M4_EXITRESTAURANT fPercentArray[23-2-1] = fCHANCE_M4_EXITRESTAURANT
eRequestArray[24-2-1] = PR_SCENE_M4_LUNCH_b fPercentArray[24-2-1] = fCHANCE_M4_LUNCH_b
eRequestArray[25-2-1] = PR_SCENE_M4_CINEMA fPercentArray[25-2-1] = fCHANCE_M4_CINEMA
eRequestArray[26-2-1] = PR_SCENE_M_HOOKERMOTEL fPercentArray[26-2-1] = fCHANCE_M_HOOKERMOTEL
// eRequestArray[27-2-1] = PR_SCENE_M_HOOKERCAR fPercentArray[27-2-1] = fCHANCE_M_HOOKERCAR
eRequestArray[25-2-1+1] = PR_SCENE_M4_WASHFACE fPercentArray[25-2-1+1] = fCHANCE_M_HOOKERMOTEL
// IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
// PR_SCENE_M4_DOORSTUMBLE)
// RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
// ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M6_Exiled)
CONST_FLOAT fCHANCE_M6_DRINKINGBEER 20.0
CONST_FLOAT fCHANCE_M6_ONPHONE 15.0
CONST_FLOAT fCHANCE_M6_DEPRESSED 15.0
CONST_FLOAT fCHANCE_M6_BOATING 20.0
CONST_FLOAT fCHANCE_M6_LIQUORSTORE 15.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_a 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_b 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_c 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_d 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_e 4.0
CONST_FLOAT fCHANCE_M6_DRIVING_g 1.5
CONST_FLOAT fCHANCE_M6_DRIVING_h 1.5
CONST_FLOAT fCHANCE_M6_RONBORING 7.5
PED_REQUEST_SCENE_ENUM eRequestArray[13]
FLOAT fPercentArray[13]
eRequestArray[0] = PR_SCENE_M6_DRINKINGBEER fPercentArray[0] = fCHANCE_M6_DRINKINGBEER
eRequestArray[1] = PR_SCENE_M6_ONPHONE fPercentArray[2] = fCHANCE_M6_ONPHONE
eRequestArray[2] = PR_SCENE_M6_DEPRESSED fPercentArray[2] = fCHANCE_M6_DEPRESSED
eRequestArray[3] = PR_SCENE_M6_BOATING fPercentArray[3] = fCHANCE_M6_BOATING
eRequestArray[4] = PR_SCENE_M6_LIQUORSTORE fPercentArray[4] = fCHANCE_M6_LIQUORSTORE
eRequestArray[5] = PR_SCENE_M6_PARKEDHILLS_a fPercentArray[5] = fCHANCE_M6_PARKEDHILLS_a
eRequestArray[6] = PR_SCENE_M6_PARKEDHILLS_b fPercentArray[6] = fCHANCE_M6_PARKEDHILLS_b
eRequestArray[7] = PR_SCENE_M6_PARKEDHILLS_c fPercentArray[7] = fCHANCE_M6_PARKEDHILLS_c
eRequestArray[8] = PR_SCENE_M6_PARKEDHILLS_d fPercentArray[8] = fCHANCE_M6_PARKEDHILLS_d
eRequestArray[9] = PR_SCENE_M6_PARKEDHILLS_e fPercentArray[9] = fCHANCE_M6_PARKEDHILLS_e
eRequestArray[10] = PR_SCENE_M6_DRIVING_g fPercentArray[10] = fCHANCE_M6_DRIVING_g
eRequestArray[11] = PR_SCENE_M6_DRIVING_h fPercentArray[11] = fCHANCE_M6_DRIVING_h
eRequestArray[12] = PR_SCENE_M6_RONBORING fPercentArray[12] = fCHANCE_M6_RONBORING
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
CONST_FLOAT fCHANCE_M7_RESTAURANT 10.0
CONST_FLOAT fCHANCE_M7_BYESOLOMON 5.0
CONST_FLOAT fCHANCE_M7_READSCRIPT 5.0
CONST_FLOAT fCHANCE_M7_EMPLOYEECONVO 5.0
CONST_FLOAT fCHANCE_M7_TALKTOGUARD 5.0
CONST_FLOAT fCHANCE_M7_LOT_JIMMY 5.0
CONST_FLOAT fCHANCE_M7_KIDS_TV 5.0
CONST_FLOAT fCHANCE_M7_KIDS_GAMING 5.0
CONST_FLOAT fCHANCE_M7_OPENDOORFORAMA 5.0
CONST_FLOAT fCHANCE_M7_DROPPINGOFFJMY 5.0
CONST_FLOAT fCHANCE_M7_TRACEYEXITSCAR 5.0
CONST_FLOAT fCHANCE_M7_REJECTENTRY 5.0
CONST_FLOAT fCHANCE_M7_LOUNGECHAIRS 10.0
CONST_FLOAT fCHANCE_M7_BIKINGJIMMY 5.0
CONST_FLOAT fCHANCE_M7_FAMARGUE 10.0
CONST_FLOAT fCHANCE_M7_FAKEYOGA 5.0
CONST_FLOAT fCHANCE_M7_WIFETENNIS 5.0
CONST_FLOAT fCHANCE_M7_LUNCH_b 5.0
PED_REQUEST_SCENE_ENUM eRequestArray[19+1-1]
FLOAT fPercentArray[19+1-1]
eRequestArray[0] = PR_SCENE_M7_RESTAURANT fPercentArray[0] = fCHANCE_M7_RESTAURANT
eRequestArray[3] = PR_SCENE_M7_READSCRIPT fPercentArray[3] = fCHANCE_M7_READSCRIPT
eRequestArray[4] = PR_SCENE_M7_EMPLOYEECONVO fPercentArray[4] = fCHANCE_M7_EMPLOYEECONVO
eRequestArray[5] = PR_SCENE_M7_TALKTOGUARD fPercentArray[5] = fCHANCE_M7_TALKTOGUARD
eRequestArray[6] = PR_SCENE_M7_LOT_JIMMY fPercentArray[6] = fCHANCE_M7_LOT_JIMMY
eRequestArray[7] = PR_SCENE_M7_KIDS_TV fPercentArray[7] = fCHANCE_M7_KIDS_TV
eRequestArray[8] = PR_SCENE_M7_KIDS_GAMING fPercentArray[8] = fCHANCE_M7_KIDS_GAMING
eRequestArray[9] = PR_SCENE_M7_OPENDOORFORAMA fPercentArray[9] = fCHANCE_M7_OPENDOORFORAMA
eRequestArray[10] = PR_SCENE_M7_DROPPINGOFFJMY fPercentArray[10] = fCHANCE_M7_DROPPINGOFFJMY
eRequestArray[11] = PR_SCENE_M7_TRACEYEXITSCAR fPercentArray[11] = fCHANCE_M7_TRACEYEXITSCAR
IF GET_MISSION_COMPLETE_STATE(eMichHasMetSolomon)
eRequestArray[1] = PR_SCENE_M7_BYESOLOMON_a fPercentArray[1] = fCHANCE_M7_BYESOLOMON / 2.0
eRequestArray[2] = PR_SCENE_M7_BYESOLOMON_b fPercentArray[2] = fCHANCE_M7_BYESOLOMON / 2.0
eRequestArray[12] = PR_SCENE_M7_REJECTENTRY fPercentArray[12] = fCHANCE_M7_REJECTENTRY
ELSE
eRequestArray[1] = PR_SCENE_INVALID fPercentArray[1] = 0.0
eRequestArray[2] = PR_SCENE_INVALID fPercentArray[2] = 0.0
eRequestArray[12] = PR_SCENE_INVALID fPercentArray[12] = 0.0
ENDIF
eRequestArray[13] = PR_SCENE_M7_LOUNGECHAIRS fPercentArray[13] = fCHANCE_M7_LOUNGECHAIRS
eRequestArray[14] = PR_SCENE_M7_BIKINGJIMMY fPercentArray[14] = fCHANCE_M7_BIKINGJIMMY
eRequestArray[15] = PR_SCENE_M7_ROUNDTABLE fPercentArray[15] = fCHANCE_M7_FAMARGUE
eRequestArray[16] = PR_SCENE_M7_FAKEYOGA fPercentArray[16] = fCHANCE_M7_FAKEYOGA
eRequestArray[17] = PR_SCENE_M7_WIFETENNIS fPercentArray[17] = fCHANCE_M7_WIFETENNIS
IF GET_MISSION_COMPLETE_STATE(eMichHasMetSolomon)
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
PR_SCENE_M7_OPENDOORFORAMA, PR_SCENE_M7_DROPPINGOFFJMY, PR_SCENE_M7_TRACEYEXITSCAR,
PR_SCENE_M7_KIDS_TV)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
ELSE
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
PR_SCENE_M7_OPENDOORFORAMA, PR_SCENE_M7_DROPPINGOFFJMY, PR_SCENE_M7_TRACEYEXITSCAR,
PR_SCENE_M7_ROUNDTABLE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
eReqScene = PR_SCENE_INVALID fScenePercent = -1
CASSERTLN(DEBUG_SWITCH, "invalid thisMichaelScheduleStage in GetMichaelSceneForEvening()")
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDFUNC
FUNC BOOL GetMichaelSceneForEveningParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetMichaelSceneForEvening(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
/// PURPOSE:
/// /* 20:00 - 23:59 */
/// PARAMS:
/// eReqScene -
/// RETURNS:
///
FUNC BOOL GetMichaelSceneForNight(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_MICHAEL
eReqScene = PR_SCENE_INVALID fScenePercent = -1
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_M_CANAL_a 8.0
CONST_FLOAT fCHANCE_M2_KIDS_TV 14.0
CONST_FLOAT fCHANCE_M_PIER_a 1.0
CONST_FLOAT fCHANCE_M_PIER_b 1.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_a 1.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_b 1.0
CONST_FLOAT fCHANCE_M_BAR_a 10.0
CONST_FLOAT fCHANCE_M_BAR_b 10.0
CONST_FLOAT fCHANCE_M2_MARINA 8.0
CONST_FLOAT fCHANCE_M2_ARGUEWITHWIFE 10.0
CONST_FLOAT fCHANCE_M2_DROPOFFDAU_b 21.0
CONST_FLOAT fCHANCE_M_HOOKERMOTEL 7.0
CONST_FLOAT fCHANCE_M_HOOKERCAR 8.0
CONST_FLOAT fCHANCE_M2_DRIVING_a 5.0
PED_REQUEST_SCENE_ENUM eRequestArray[15-2-1]
FLOAT fPercentArray[15-2-1]
eRequestArray[0] = PR_SCENE_M_CANAL_a fPercentArray[0] = fCHANCE_M_CANAL_a
eRequestArray[1] = PR_SCENE_M2_KIDS_TV fPercentArray[1] = fCHANCE_M2_KIDS_TV
eRequestArray[2] = PR_SCENE_M_PIER_a fPercentArray[2] = fCHANCE_M_PIER_a
eRequestArray[3] = PR_SCENE_M_PIER_b fPercentArray[3] = fCHANCE_M_PIER_b
eRequestArray[4] = PR_SCENE_M_PARKEDHILLS_a fPercentArray[4] = fCHANCE_M_PARKEDHILLS_a
eRequestArray[5] = PR_SCENE_M_PARKEDHILLS_b fPercentArray[5] = fCHANCE_M_PARKEDHILLS_b
// eRequestArray[6] = PR_SCENE_M_BAR_a fPercentArray[6] = fCHANCE_M_BAR_a
// eRequestArray[7] = PR_SCENE_M_BAR_b fPercentArray[7] = fCHANCE_M_BAR_b
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_1)
eRequestArray[8-2] = PR_SCENE_M2_MARINA fPercentArray[8-2] = fCHANCE_M2_MARINA
ELSE
eRequestArray[8-2] = PR_SCENE_INVALID fPercentArray[8-2] = 0.0
ENDIF
eRequestArray[9-2] = PR_SCENE_M2_ARGUEWITHWIFE fPercentArray[9-2] = fCHANCE_M2_ARGUEWITHWIFE
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_2)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
eRequestArray[10-2] = PR_SCENE_M2_DROPOFFDAU_b fPercentArray[10-2] = fCHANCE_M2_DROPOFFDAU_b
ELSE
eRequestArray[10-2] = PR_SCENE_INVALID fPercentArray[10-2] = 0.0
ENDIF
eRequestArray[11-2] = PR_SCENE_M_HOOKERMOTEL fPercentArray[11-2] = fCHANCE_M_HOOKERMOTEL
// eRequestArray[12-2] = PR_SCENE_M_HOOKERCAR fPercentArray[12-2] = fCHANCE_M_HOOKERCAR
eRequestArray[13-2-1] = PR_SCENE_M2_DRIVING_a fPercentArray[13-2-1] = fCHANCE_M2_DRIVING_a / 2.0
eRequestArray[14-2-1] = PR_SCENE_M2_DRIVING_b fPercentArray[14-2-1] = fCHANCE_M2_DRIVING_a / 2.0
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_2)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_NIGHT, bDescentOnlyScene,
PR_SCENE_M2_ARGUEWITHWIFE, PR_SCENE_M2_DROPOFFDAU_b,
PR_SCENE_M_HOOKERMOTEL)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_NIGHT)
ENDIF
ELSE
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_NIGHT, bDescentOnlyScene,
PR_SCENE_M2_ARGUEWITHWIFE,
PR_SCENE_M_HOOKERMOTEL)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_NIGHT)
ENDIF
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
CONST_FLOAT fCHANCE_M_CANAL_a 4.0
CONST_FLOAT fCHANCE_M_CANAL_b 3.0
CONST_FLOAT fCHANCE_M_CANAL_c 3.0
CONST_FLOAT fCHANCE_M_PIER_a 5.0
CONST_FLOAT fCHANCE_M_PIER_b 5.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_a 5.0
CONST_FLOAT fCHANCE_M_PARKEDHILLS_b 5.0
CONST_FLOAT fCHANCE_M_BAR_a 10.0
CONST_FLOAT fCHANCE_M_BAR_b 10.0
CONST_FLOAT fCHANCE_M4_PARKEDBEACH 10.0
CONST_FLOAT fCHANCE_M4_DOORSTUMBLE 20.0
CONST_FLOAT fCHANCE_M_HOOKERMOTEL 10.0
CONST_FLOAT fCHANCE_M_HOOKERCAR 10.0
PED_REQUEST_SCENE_ENUM eRequestArray[13-3-1+1]
FLOAT fPercentArray[13-3-1+1]
eRequestArray[0] = PR_SCENE_M_CANAL_a fPercentArray[0] = fCHANCE_M_CANAL_a
eRequestArray[1] = PR_SCENE_M_CANAL_b fPercentArray[1] = fCHANCE_M_CANAL_b
eRequestArray[2] = PR_SCENE_M_CANAL_c fPercentArray[2] = fCHANCE_M_CANAL_c
eRequestArray[3] = PR_SCENE_M_PIER_a fPercentArray[3] = fCHANCE_M_PIER_a
eRequestArray[4] = PR_SCENE_M_PIER_b fPercentArray[4] = fCHANCE_M_PIER_b
eRequestArray[5] = PR_SCENE_M_PARKEDHILLS_a fPercentArray[5] = fCHANCE_M_PARKEDHILLS_a
eRequestArray[6] = PR_SCENE_M_PARKEDHILLS_b fPercentArray[6] = fCHANCE_M_PARKEDHILLS_b
// eRequestArray[7] = PR_SCENE_M_BAR_a fPercentArray[7] = fCHANCE_M_BAR_a
// eRequestArray[8] = PR_SCENE_M_BAR_b fPercentArray[8] = fCHANCE_M_BAR_b
eRequestArray[9-2] = PR_SCENE_M4_PARKEDBEACH fPercentArray[9-2] = fCHANCE_M4_PARKEDBEACH
// eRequestArray[10-2] = PR_SCENE_M4_DOORSTUMBLE fPercentArray[10-2] = fCHANCE_M4_DOORSTUMBLE
eRequestArray[11-2-1] = PR_SCENE_M_HOOKERMOTEL fPercentArray[11-2-1] = fCHANCE_M_HOOKERMOTEL
// eRequestArray[12-2-1] = PR_SCENE_M_HOOKERCAR fPercentArray[12-2-1] = fCHANCE_M_HOOKERCAR
eRequestArray[11-2-1+1] = PR_SCENE_M4_WASHFACE fPercentArray[11-2-1+1] = fCHANCE_M_HOOKERMOTEL
// IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_NIGHT, bDescentOnlyScene,
// PR_SCENE_M4_DOORSTUMBLE)
// RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_NIGHT)
// ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M6_Exiled)
CONST_FLOAT fCHANCE_M6_DRINKINGBEER 20.0
CONST_FLOAT fCHANCE_M6_ONPHONE 30.0
CONST_FLOAT fCHANCE_M6_DEPRESSED 30.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_a 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_b 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_c 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_d 4.0
CONST_FLOAT fCHANCE_M6_PARKEDHILLS_e 4.0
CONST_FLOAT fCHANCE_M6_DRIVING_a 5.0
CONST_FLOAT fCHANCE_M6_DRIVING_b 5.0
CONST_FLOAT fCHANCE_M6_RONBORING 20.0
PED_REQUEST_SCENE_ENUM eRequestArray[11]
FLOAT fPercentArray[11]
eRequestArray[0] = PR_SCENE_M6_DRINKINGBEER fPercentArray[0] = fCHANCE_M6_DRINKINGBEER
eRequestArray[1] = PR_SCENE_M6_ONPHONE fPercentArray[1] = fCHANCE_M6_ONPHONE
eRequestArray[2] = PR_SCENE_M6_DEPRESSED fPercentArray[2] = fCHANCE_M6_DEPRESSED
eRequestArray[3] = PR_SCENE_M6_PARKEDHILLS_a fPercentArray[3] = fCHANCE_M6_PARKEDHILLS_a
eRequestArray[4] = PR_SCENE_M6_PARKEDHILLS_b fPercentArray[4] = fCHANCE_M6_PARKEDHILLS_b
eRequestArray[5] = PR_SCENE_M6_PARKEDHILLS_c fPercentArray[5] = fCHANCE_M6_PARKEDHILLS_c
eRequestArray[6] = PR_SCENE_M6_PARKEDHILLS_d fPercentArray[6] = fCHANCE_M6_PARKEDHILLS_d
eRequestArray[7] = PR_SCENE_M6_PARKEDHILLS_e fPercentArray[7] = fCHANCE_M6_PARKEDHILLS_e
eRequestArray[8] = PR_SCENE_M6_DRIVING_a fPercentArray[8] = fCHANCE_M6_DRIVING_a
eRequestArray[9] = PR_SCENE_M6_DRIVING_b fPercentArray[9] = fCHANCE_M6_DRIVING_b
eRequestArray[10] = PR_SCENE_M6_RONBORING fPercentArray[10] = fCHANCE_M6_RONBORING
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
CONST_FLOAT fCHANCE_M7_RESTAURANT 10.0
CONST_FLOAT fCHANCE_M7_REJECTENTRY 20.0
CONST_FLOAT fCHANCE_M7_GETSREADY 10.0
CONST_FLOAT fCHANCE_M7_EMPLOYEECONVO 5.0
CONST_FLOAT fCHANCE_M7_TALKTOGUARD 5.0
CONST_FLOAT fCHANCE_M7_LOT_JIMMY 5.0
CONST_FLOAT fCHANCE_M7_KIDS_TV 15.0
CONST_FLOAT fCHANCE_M7_KIDS_GAMING 15.0
CONST_FLOAT fCHANCE_M7_HOOKERS 15.0
PED_REQUEST_SCENE_ENUM eRequestArray[14]
FLOAT fPercentArray[14]
eRequestArray[0] = PR_SCENE_M7_RESTAURANT fPercentArray[0] = fCHANCE_M7_RESTAURANT
IF GET_MISSION_COMPLETE_STATE(eMichHasMetSolomon)
eRequestArray[1] = PR_SCENE_M7_REJECTENTRY fPercentArray[1] = fCHANCE_M7_REJECTENTRY
ELSE
eRequestArray[1] = PR_SCENE_INVALID fPercentArray[1] = 0.0
ENDIF
eRequestArray[2] = PR_SCENE_M7_GETSREADY fPercentArray[2] = fCHANCE_M7_GETSREADY
eRequestArray[3] = PR_SCENE_M7_EMPLOYEECONVO fPercentArray[3] = fCHANCE_M7_EMPLOYEECONVO
eRequestArray[4] = PR_SCENE_M7_TALKTOGUARD fPercentArray[4] = fCHANCE_M7_TALKTOGUARD
eRequestArray[5] = PR_SCENE_M7_LOT_JIMMY fPercentArray[5] = fCHANCE_M7_LOT_JIMMY
eRequestArray[6] = PR_SCENE_M7_KIDS_TV fPercentArray[6] = fCHANCE_M7_KIDS_TV
eRequestArray[7] = PR_SCENE_M7_KIDS_GAMING fPercentArray[7] = fCHANCE_M7_KIDS_GAMING
eRequestArray[8] = PR_SCENE_M7_HOOKERS fPercentArray[8] = fCHANCE_M7_HOOKERS
eRequestArray[9] = PR_SCENE_M6_PARKEDHILLS_a fPercentArray[9] = 1.0
eRequestArray[10] = PR_SCENE_M6_PARKEDHILLS_b fPercentArray[10] = 1.0
eRequestArray[11] = PR_SCENE_M6_PARKEDHILLS_c fPercentArray[11] = 1.0
eRequestArray[12] = PR_SCENE_M6_PARKEDHILLS_d fPercentArray[12] = 1.0
eRequestArray[13] = PR_SCENE_M6_PARKEDHILLS_e fPercentArray[13] = 1.0
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_NIGHT, bDescentOnlyScene,
PR_SCENE_M7_EMPLOYEECONVO,
PR_SCENE_M7_ROUNDTABLE, PR_SCENE_M7_KIDS_TV)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_NIGHT)
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
eReqScene = PR_SCENE_INVALID fScenePercent = -1
CASSERTLN(DEBUG_SWITCH, "invalid thisMichaelScheduleStage in GetMichaelSceneForNight()")
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDFUNC
FUNC BOOL GetMichaelSceneForNightParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetMichaelSceneForNight(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
/// PURPOSE: Returns the scene ID from the timetable
FUNC BOOL GetMichaelSceneForCurrentTime(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
IF NOT bDescentOnlyScene
IF GetPedRequestSceneForAvailableMission(CHAR_MICHAEL, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
SWITCH PRIVATE_Get_Switch_Clock_Hours()
/* 00:00 - 08:59 */
CASE 0 CASE 1 CASE 2
CASE 3 CASE 4 CASE 5
CASE 6 CASE 7 CASE 8
GetMichaelSceneForMorning(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetMichaelSceneForAfternoonParam, bDescentOnlyScene)
BREAK
/* 09:00 - 13:59 */
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13
GetMichaelSceneForAfternoon(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetMichaelSceneForEveningParam, bDescentOnlyScene)
BREAK
/* 14:00 - 19:59 */
CASE 14 CASE 15 CASE 16
CASE 17 CASE 18 CASE 19
GetMichaelSceneForEvening(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetMichaelSceneForNightParam, bDescentOnlyScene)
BREAK
/* 20:00 - 23:59 */
CASE 20 CASE 21 CASE 22
CASE 23
GetMichaelSceneForNight(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetMichaelSceneForMorningParam, bDescentOnlyScene)
BREAK
ENDSWITCH
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDFUNC
// *******************************************************************************************
// FUNCTIONS TO RETURN NEXT SCENE FOR FRANKLIN
// *******************************************************************************************
FUNC BOOL GetFranklinSceneForNight(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_FRANKLIN
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
PED_REQUEST_SCENE_ENUM eRequestArray[7-1]
FLOAT fPercentArray[7-1]
CONST_FLOAT fCHANCE_F0_SH_ASLEEP 30.0
CONST_FLOAT fCHANCE_F0_SH_READING 10.0
CONST_FLOAT fCHANCE_F0_SH_PUSHUP_a 10.0
CONST_FLOAT fCHANCE_F0_SH_PUSHUP_b 10.0
CONST_FLOAT fCHANCE_F_LAMTAUNT_NIGHT 10.0
CONST_FLOAT fCHANCE_F_CLUB 10.0
CONST_FLOAT fCHANCE_F0_WATCHINGTV 20.0
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_NIGHT, bDescentOnlyScene,
PR_SCENE_F0_TANISHAFIGHT)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_NIGHT)
ENDIF
eRequestArray[0] = PR_SCENE_F0_SH_ASLEEP fPercentArray[0] = fCHANCE_F0_SH_ASLEEP
eRequestArray[1] = PR_SCENE_F0_SH_READING fPercentArray[1] = fCHANCE_F0_SH_READING
eRequestArray[2] = PR_SCENE_F0_SH_PUSHUP_a fPercentArray[2] = fCHANCE_F0_SH_PUSHUP_a
eRequestArray[3] = PR_SCENE_F0_SH_PUSHUP_b fPercentArray[3] = fCHANCE_F0_SH_PUSHUP_b
// eRequestArray[4] = PR_SCENE_F0_WATCHINGTV fPercentArray[4] = fCHANCE_F0_WATCHINGTV
eRequestArray[5-1] = PR_SCENE_F_LAMTAUNT_NIGHT fPercentArray[5-1] = fCHANCE_F_LAMTAUNT_NIGHT
eRequestArray[6-1] = PR_SCENE_F_CLUB fPercentArray[6-1] = fCHANCE_F_CLUB
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
PED_REQUEST_SCENE_ENUM eRequestArray[6+2]
FLOAT fPercentArray[6+2]
CONST_FLOAT fCHANCE_F1_SH_ASLEEP 50.0
CONST_FLOAT fCHANCE_F1_SH_READING 10.0
CONST_FLOAT fCHANCE_F1_WATCHINGTV 10.0
CONST_FLOAT fCHANCE_F1_BYETAXI 10.0
CONST_FLOAT fCHANCE_F1_SNACKING 10.0
CONST_FLOAT fCHANCE_F1_SH_PUSHUP 10.0
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_NIGHT, bDescentOnlyScene,
PR_SCENE_F1_NEWHOUSE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_NIGHT)
ENDIF
eRequestArray[0] = PR_SCENE_F1_SH_ASLEEP fPercentArray[0] = fCHANCE_F1_SH_ASLEEP / 3
eRequestArray[1] = PR_SCENE_F1_NAPPING fPercentArray[1] = fCHANCE_F1_SH_ASLEEP / 3
eRequestArray[2] = PR_SCENE_F1_GETTINGREADY fPercentArray[2] = fCHANCE_F1_SH_ASLEEP / 3
eRequestArray[1+2] = PR_SCENE_F1_SH_READING fPercentArray[1+2] = fCHANCE_F1_SH_READING
eRequestArray[2+2] = PR_SCENE_F1_WATCHINGTV fPercentArray[2+2] = fCHANCE_F1_WATCHINGTV
eRequestArray[3+2] = PR_SCENE_F1_BYETAXI fPercentArray[3+2] = fCHANCE_F1_BYETAXI
eRequestArray[4+2] = PR_SCENE_F1_SNACKING fPercentArray[4+2] = fCHANCE_F1_SNACKING
eRequestArray[5+2] = PR_SCENE_F1_SH_PUSHUP fPercentArray[5+2] = fCHANCE_F1_SH_PUSHUP
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ENDIF
ENDFUNC
FUNC BOOL GetFranklinSceneForNightParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetFranklinSceneForNight(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
FUNC BOOL GetFranklinSceneForMorning(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_FRANKLIN
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
PED_REQUEST_SCENE_ENUM eRequestArray[21-1]
FLOAT fPercentArray[21-1]
CONST_FLOAT fCHANCE_F0_WATCHINGTV 6.6
CONST_FLOAT fCHANCE_F_MD_KUSH_DOC 6.2
CONST_FLOAT fCHANCE_F_KUSH_DOC_a 6.2
CONST_FLOAT fCHANCE_F_KUSH_DOC_b 6.2
CONST_FLOAT fCHANCE_F_KUSH_DOC_c 6.2
CONST_FLOAT fCHANCE_F0_GARBAGE 9.6
CONST_FLOAT fCHANCE_F_THROW_CUP 3.3
CONST_FLOAT fCHANCE_F_HIT_CUP_HAND 3.3
CONST_FLOAT fCHANCE_F_TRAFFIC_a 1.6
CONST_FLOAT fCHANCE_F_TRAFFIC_b 1.6
CONST_FLOAT fCHANCE_F_TRAFFIC_c 1.6
CONST_FLOAT fCHANCE_F0_BIKE 1.6
CONST_FLOAT fCHANCE_F_BIKE_c 1.6
CONST_FLOAT fCHANCE_F_BIKE_d 1.6
CONST_FLOAT fCHANCE_F_CS_CHECKSHOE 7.2 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPEHANDS 7.2 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPERIGHT 7.2 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_GYM 6.6
CONST_FLOAT fCHANCE_F0_WALKCHOP 6.6 //(only if chop app enabled)
CONST_FLOAT fCHANCE_F0_PLAYCHOP 6.6 //(only if chop app enabled)
CONST_FLOAT fCHANCE_F0_CLEANCAR 6.6
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_MORNING, bDescentOnlyScene,
PR_SCENE_F0_TANISHAFIGHT)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_MORNING)
ENDIF
// eRequestArray[0] = PR_SCENE_F0_WATCHINGTV fPercentArray[0] = fCHANCE_F0_WATCHINGTV
eRequestArray[1-1] = PR_SCENE_F_MD_KUSH_DOC fPercentArray[1-1] = fCHANCE_F_MD_KUSH_DOC
eRequestArray[1+1-1] = PR_SCENE_F_KUSH_DOC_a fPercentArray[1+1-1] = fCHANCE_F_KUSH_DOC_a
eRequestArray[2+1-1] = PR_SCENE_F_KUSH_DOC_b fPercentArray[2+1-1] = fCHANCE_F_KUSH_DOC_b
eRequestArray[3+1-1] = PR_SCENE_F_KUSH_DOC_c fPercentArray[3+1-1] = fCHANCE_F_KUSH_DOC_c
eRequestArray[4+1-1] = PR_SCENE_F0_GARBAGE fPercentArray[4+1-1] = fCHANCE_F0_GARBAGE
eRequestArray[5+1-1] = PR_SCENE_F_THROW_CUP fPercentArray[5+1-1] = fCHANCE_F_THROW_CUP
eRequestArray[6+1-1] = PR_SCENE_F_HIT_CUP_HAND fPercentArray[6+1-1] = fCHANCE_F_HIT_CUP_HAND
eRequestArray[7+1-1] = PR_SCENE_F_TRAFFIC_a fPercentArray[7+1-1] = fCHANCE_F_TRAFFIC_a
eRequestArray[8+1-1] = PR_SCENE_F_TRAFFIC_b fPercentArray[8+1-1] = fCHANCE_F_TRAFFIC_b
eRequestArray[9+1-1] = PR_SCENE_F_TRAFFIC_c fPercentArray[9+1-1] = fCHANCE_F_TRAFFIC_c
IF Get_Mission_Flow_Flag_State(FLOWFLAG_PLAYER_VEH_F_UNLOCK_BIKE)
eRequestArray[10+1-1] = PR_SCENE_F0_BIKE fPercentArray[10+1-1] = fCHANCE_F0_BIKE
eRequestArray[11+1-1] = PR_SCENE_F_BIKE_c fPercentArray[11+1-1] = fCHANCE_F_BIKE_c
eRequestArray[12+1-1] = PR_SCENE_F_BIKE_d fPercentArray[12+1-1] = fCHANCE_F_BIKE_d
ELSE
eRequestArray[10+1-1] = PR_SCENE_INVALID fPercentArray[10+1-1] = 0.0
eRequestArray[11+1-1] = PR_SCENE_INVALID fPercentArray[11+1-1] = 0.0
eRequestArray[12+1-1] = PR_SCENE_INVALID fPercentArray[12+1-1] = 0.0
ENDIF
eRequestArray[13+1-1] = PR_SCENE_F_GYM fPercentArray[13+1-1] = fCHANCE_F_GYM
eRequestArray[14+1-1] = PR_SCENE_F0_CLEANCAR fPercentArray[14+1-1] = fCHANCE_F0_CLEANCAR
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_1)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_4)
eRequestArray[15+1-1] = PR_SCENE_F_CS_CHECKSHOE fPercentArray[15+1-1] = fCHANCE_F_CS_CHECKSHOE
eRequestArray[16+1-1] = PR_SCENE_F_CS_WIPEHANDS fPercentArray[16+1-1] = fCHANCE_F_CS_WIPEHANDS
eRequestArray[17+1-1] = PR_SCENE_F_CS_WIPERIGHT fPercentArray[17+1-1] = fCHANCE_F_CS_WIPERIGHT
ELSE
eRequestArray[15+1-1] = PR_SCENE_INVALID fPercentArray[15+1-1] = 0.0
eRequestArray[16+1-1] = PR_SCENE_INVALID fPercentArray[16+1-1] = 0.0
eRequestArray[17+1-1] = PR_SCENE_INVALID fPercentArray[17+1-1] = 0.0
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_CHOP_THE_DOG_UNLOCKED)
eRequestArray[18+1-1] = PR_SCENE_F0_WALKCHOP fPercentArray[18+1-1] = fCHANCE_F0_WALKCHOP
eRequestArray[19+1-1] = PR_SCENE_F0_PLAYCHOP fPercentArray[19+1-1] = fCHANCE_F0_PLAYCHOP
ELSE
eRequestArray[18+1-1] = PR_SCENE_INVALID fPercentArray[18+1-1] = 0.0
eRequestArray[19+1-1] = PR_SCENE_INVALID fPercentArray[19+1-1] = 0.0
ENDIF
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
PED_REQUEST_SCENE_ENUM eRequestArray[29-2]
FLOAT fPercentArray[29-2]
CONST_FLOAT fCHANCE_F_MD_KUSH_DOC 1.5
CONST_FLOAT fCHANCE_F_KUSH_DOC_a 1.5
CONST_FLOAT fCHANCE_F_KUSH_DOC_b 1.5
CONST_FLOAT fCHANCE_F_KUSH_DOC_c 1.5
CONST_FLOAT fCHANCE_F1_GARBAGE 4.5
CONST_FLOAT fCHANCE_F_GYM 4.5
CONST_FLOAT fCHANCE_F_TRAFFIC_a 1.5
CONST_FLOAT fCHANCE_F_TRAFFIC_b 1.5
CONST_FLOAT fCHANCE_F_TRAFFIC_c 1.5
CONST_FLOAT fCHANCE_F1_BIKE 1.5
CONST_FLOAT fCHANCE_F_BIKE_c 1.5
CONST_FLOAT fCHANCE_F_BIKE_d 1.5
CONST_FLOAT fCHANCE_F_CS_CHECKSHOE 1.5 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPEHANDS 1.5 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPERIGHT 1.5 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F1_POOLSIDE_a 6.5
CONST_FLOAT fCHANCE_F1_POOLSIDE_b 6.5
CONST_FLOAT fCHANCE_F1_WALKCHOP 1.5 //(only if chop app enabled)
CONST_FLOAT fCHANCE_F1_PLAYCHOP 1.5 //(only if chop app enabled)
CONST_FLOAT fCHANCE_F1_CLEANINGAPT 8.5
CONST_FLOAT fCHANCE_F1_ONCELL 8.5
CONST_FLOAT fCHANCE_F1_SNACKING 8.5
CONST_FLOAT fCHANCE_F1_ONLAPTOP 8.5
CONST_FLOAT fCHANCE_F1_CLEANCAR 4.5
CONST_FLOAT fCHANCE_F1_IRONING 8.5
CONST_FLOAT fCHANCE_F1_WATCHINGTV 8.5
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_MORNING, bDescentOnlyScene,
PR_SCENE_F1_NEWHOUSE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_MORNING)
ENDIF
eRequestArray[0] = PR_SCENE_F_MD_KUSH_DOC fPercentArray[0] = fCHANCE_F_MD_KUSH_DOC
eRequestArray[0+1] = PR_SCENE_F_KUSH_DOC_a fPercentArray[0+1] = fCHANCE_F_KUSH_DOC_a
eRequestArray[1+1] = PR_SCENE_F_KUSH_DOC_b fPercentArray[1+1] = fCHANCE_F_KUSH_DOC_b
eRequestArray[2+1] = PR_SCENE_F_KUSH_DOC_c fPercentArray[2+1] = fCHANCE_F_KUSH_DOC_c
eRequestArray[3+1] = PR_SCENE_F1_GARBAGE fPercentArray[3+1] = fCHANCE_F1_GARBAGE
eRequestArray[6-2+1] = PR_SCENE_F_GYM fPercentArray[6-2+1] = fCHANCE_F_GYM
eRequestArray[7-2+1] = PR_SCENE_F_TRAFFIC_a fPercentArray[7-2+1] = fCHANCE_F_TRAFFIC_a
eRequestArray[8-2+1] = PR_SCENE_F_TRAFFIC_b fPercentArray[8-2+1] = fCHANCE_F_TRAFFIC_b
eRequestArray[9-2+1] = PR_SCENE_F_TRAFFIC_c fPercentArray[9-2+1] = fCHANCE_F_TRAFFIC_c
IF Get_Mission_Flow_Flag_State(FLOWFLAG_PLAYER_VEH_F_UNLOCK_BIKE)
eRequestArray[10-2+1] = PR_SCENE_F1_BIKE fPercentArray[10-2+1] = fCHANCE_F1_BIKE
eRequestArray[11-2+1] = PR_SCENE_F_BIKE_c fPercentArray[11-2+1] = fCHANCE_F_BIKE_c
eRequestArray[12-2+1] = PR_SCENE_F_BIKE_d fPercentArray[12-2+1] = fCHANCE_F_BIKE_d
ELSE
eRequestArray[10-2+1] = PR_SCENE_INVALID fPercentArray[10-2+1] = 0.0
eRequestArray[11-2+1] = PR_SCENE_INVALID fPercentArray[11-2+1] = 0.0
eRequestArray[12-2+1] = PR_SCENE_INVALID fPercentArray[12-2+1] = 0.0
ENDIF
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_1)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_4)
eRequestArray[13-2+1] = PR_SCENE_F_CS_CHECKSHOE fPercentArray[13-2+1] = fCHANCE_F_CS_CHECKSHOE
eRequestArray[14-2+1] = PR_SCENE_F_CS_WIPEHANDS fPercentArray[14-2+1] = fCHANCE_F_CS_WIPEHANDS
eRequestArray[15-2+1] = PR_SCENE_F_CS_WIPERIGHT fPercentArray[15-2+1] = fCHANCE_F_CS_WIPERIGHT
ELSE
eRequestArray[13-2+1] = PR_SCENE_INVALID fPercentArray[13-2+1] = 0.0
eRequestArray[14-2+1] = PR_SCENE_INVALID fPercentArray[14-2+1] = 0.0
eRequestArray[15-2+1] = PR_SCENE_INVALID fPercentArray[15-2+1] = 0.0
ENDIF
eRequestArray[16-2+1] = PR_SCENE_F1_POOLSIDE_a fPercentArray[16-2+1] = fCHANCE_F1_POOLSIDE_a
eRequestArray[17-2+1] = PR_SCENE_F1_POOLSIDE_b fPercentArray[17-2+1] = fCHANCE_F1_POOLSIDE_b
IF Get_Mission_Flow_Flag_State(FLOWFLAG_CHOP_THE_DOG_UNLOCKED)
// eRequestArray[18-2+1] = PR_SCENE_F1_WALKCHOP fPercentArray[18-2+1] = fCHANCE_F1_WALKCHOP
eRequestArray[19-2] = PR_SCENE_F1_PLAYCHOP fPercentArray[19-2] = fCHANCE_F1_PLAYCHOP
ELSE
// eRequestArray[18-2+1] = PR_SCENE_INVALID fPercentArray[18-2+1] = 0.0
eRequestArray[19-2] = PR_SCENE_INVALID fPercentArray[19-2] = 0.0
ENDIF
eRequestArray[20-2] = PR_SCENE_F1_WATCHINGTV fPercentArray[20-2] = fCHANCE_F1_WATCHINGTV
eRequestArray[21-2] = PR_SCENE_F1_SNACKING fPercentArray[21-2] = fCHANCE_F1_SNACKING
eRequestArray[22-2] = PR_SCENE_F1_ONLAPTOP fPercentArray[22-2] = fCHANCE_F1_ONLAPTOP
eRequestArray[23-2] = PR_SCENE_F1_CLEANCAR fPercentArray[23-2] = fCHANCE_F1_CLEANCAR
eRequestArray[24-2] = PR_SCENE_F1_IRONING fPercentArray[24-2] = fCHANCE_F1_IRONING
eRequestArray[25-2] = PR_SCENE_F1_CLEANINGAPT fPercentArray[25-2] = fCHANCE_F1_CLEANINGAPT
eRequestArray[26-2] = PR_SCENE_F1_ONCELL fPercentArray[26-2] = fCHANCE_F1_ONCELL
eRequestArray[27-2] = PR_SCENE_F_THROW_CUP fPercentArray[27-2] = 1.0
eRequestArray[28-2] = PR_SCENE_F_HIT_CUP_HAND fPercentArray[28-2] = 1.0
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ENDIF
ENDFUNC
FUNC BOOL GetFranklinSceneForMorningParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetFranklinSceneForMorning(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
FUNC BOOL GetFranklinSceneForAfternoon(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_FRANKLIN
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
PED_REQUEST_SCENE_ENUM eRequestArray[28+3-1-1]
FLOAT fPercentArray[28+3-1-1]
CONST_FLOAT fCHANCE_F_TAUNT 1.5
CONST_FLOAT fCHANCE_F_LAMTAUNT_P1 3.8 //(ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_LAMTAUNT_P2 3.8 //(ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_LAMTAUNT_P3 3.8 //(ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_LAMTAUNT_P5 3.8 //(ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_LAMGRAFF 6.0 //(ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_TRAFFIC_a 5.0
CONST_FLOAT fCHANCE_F_TRAFFIC_b 5.0
CONST_FLOAT fCHANCE_F_TRAFFIC_c 5.0
CONST_FLOAT fCHANCE_F0_BIKE 2.0
CONST_FLOAT fCHANCE_F_BIKE_c 2.0
CONST_FLOAT fCHANCE_F_BIKE_d 2.0
CONST_FLOAT fCHANCE_F_MD_KUSH_DOC 2.0
CONST_FLOAT fCHANCE_F_KUSH_DOC_a 2.0
CONST_FLOAT fCHANCE_F_KUSH_DOC_b 2.0
CONST_FLOAT fCHANCE_F_KUSH_DOC_c 2.0
CONST_FLOAT fCHANCE_F0_GARBAGE 6.0
CONST_FLOAT fCHANCE_F_THROW_CUP 2.0
CONST_FLOAT fCHANCE_F_HIT_CUP_HAND 2.0
CONST_FLOAT fCHANCE_F0_WATCHINGTV 3.0
CONST_FLOAT fCHANCE_F0_CLEANCAR 6.0
CONST_FLOAT fCHANCE_F_BAR_a_01 1.5
CONST_FLOAT fCHANCE_F_BAR_b_01 1.5
CONST_FLOAT fCHANCE_F_BAR_c_02 1.5
CONST_FLOAT fCHANCE_F_BAR_d_02 1.5
CONST_FLOAT fCHANCE_F_BAR_e_01 1.5
CONST_FLOAT fCHANCE_F_CS_CHECKSHOE 6.0 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5-1]
CONST_FLOAT fCHANCE_F_CS_WIPEHANDS 5.0 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5-1]
CONST_FLOAT fCHANCE_F_CS_WIPERIGHT 6.0 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5-1]
CONST_FLOAT fCHANCE_F0_WALKCHOP 6.0 //(only if chop app enabled)
CONST_FLOAT fCHANCE_F0_PLAYCHOP 6.0 //(only if chop app enabled)
// eRequestArray[0-1] = PR_SCENE_F_TAUNT fPercentArray[0-1] = fCHANCE_F_TAUNT
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_LAMAR)
eRequestArray[1-1] = PR_SCENE_F_LAMTAUNT_P1 fPercentArray[1-1] = fCHANCE_F_LAMTAUNT_P1
// eRequestArray[2-1] = PR_SCENE_F_LAMTAUNT_P2 fPercentArray[2-1] = fCHANCE_F_LAMTAUNT_P2
eRequestArray[3-1-1] = PR_SCENE_F_LAMTAUNT_P3 fPercentArray[3-1-1] = fCHANCE_F_LAMTAUNT_P3
eRequestArray[4-1-1] = PR_SCENE_F_LAMTAUNT_P5 fPercentArray[4-1-1] = fCHANCE_F_LAMTAUNT_P5
// eRequestArray[5-1-1] = PR_SCENE_F_LAMGRAFF fPercentArray[5-1-1] = fCHANCE_F_LAMGRAFF
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_F_LAMTAUNT_P1, //PR_SCENE_F_LAMTAUNT_P2,
PR_SCENE_F_LAMTAUNT_P3, PR_SCENE_F_LAMTAUNT_P5,
// PR_SCENE_F_LAMGRAFF,
PR_SCENE_F0_TANISHAFIGHT)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
ELSE
eRequestArray[1-1] = PR_SCENE_INVALID fPercentArray[1-1] = 0.0
// eRequestArray[2-1] = PR_SCENE_INVALID fPercentArray[2-1] = 0.0
eRequestArray[3-1-1] = PR_SCENE_INVALID fPercentArray[3-1-1] = 0.0
eRequestArray[4-1-1] = PR_SCENE_INVALID fPercentArray[4-1-1] = 0.0
eRequestArray[5-1-1] = PR_SCENE_INVALID fPercentArray[5-1-1] = 0.0
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_F0_TANISHAFIGHT)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
ENDIF
eRequestArray[6-1-1] = PR_SCENE_F_TRAFFIC_a fPercentArray[6-1-1] = fCHANCE_F_TRAFFIC_a
eRequestArray[7-1-1] = PR_SCENE_F_TRAFFIC_b fPercentArray[7-1-1] = fCHANCE_F_TRAFFIC_b
eRequestArray[8-1-1] = PR_SCENE_F_TRAFFIC_c fPercentArray[8-1-1] = fCHANCE_F_TRAFFIC_c
IF Get_Mission_Flow_Flag_State(FLOWFLAG_PLAYER_VEH_F_UNLOCK_BIKE)
eRequestArray[9-1-1] = PR_SCENE_F0_BIKE fPercentArray[9-1-1] = fCHANCE_F0_BIKE
eRequestArray[10-1-1] = PR_SCENE_F_BIKE_c fPercentArray[10-1-1] = fCHANCE_F_BIKE_c
eRequestArray[11-1-1] = PR_SCENE_F_BIKE_d fPercentArray[11-1-1] = fCHANCE_F_BIKE_d
ELSE
eRequestArray[9-1-1] = PR_SCENE_INVALID fPercentArray[9-1-1] = 0.0
eRequestArray[10-1-1] = PR_SCENE_INVALID fPercentArray[10-1-1] = 0.0
eRequestArray[11-1-1] = PR_SCENE_INVALID fPercentArray[11-1-1] = 0.0
ENDIF
eRequestArray[12-1-1] = PR_SCENE_F_MD_KUSH_DOC fPercentArray[12-1-1] = fCHANCE_F_MD_KUSH_DOC
eRequestArray[12-1] = PR_SCENE_F_KUSH_DOC_a fPercentArray[12-1] = fCHANCE_F_KUSH_DOC_a
eRequestArray[13-1] = PR_SCENE_F_KUSH_DOC_b fPercentArray[13-1] = fCHANCE_F_KUSH_DOC_b
eRequestArray[14-1] = PR_SCENE_F_KUSH_DOC_c fPercentArray[14-1] = fCHANCE_F_KUSH_DOC_c
eRequestArray[15-1] = PR_SCENE_F0_GARBAGE fPercentArray[15-1] = fCHANCE_F0_GARBAGE
eRequestArray[16-1] = PR_SCENE_F_THROW_CUP fPercentArray[16-1] = fCHANCE_F_THROW_CUP
eRequestArray[17-1] = PR_SCENE_F_HIT_CUP_HAND fPercentArray[17-1] = fCHANCE_F_HIT_CUP_HAND
// eRequestArray[18-1] = PR_SCENE_F0_WATCHINGTV fPercentArray[18-1] = fCHANCE_F0_WATCHINGTV
eRequestArray[19-1-1] = PR_SCENE_F0_CLEANCAR fPercentArray[19-1-1] = fCHANCE_F0_CLEANCAR
eRequestArray[20-1-1] = PR_SCENE_F_BAR_a_01 fPercentArray[20-1-1] = fCHANCE_F_BAR_a_01
eRequestArray[22+1-3-1] = PR_SCENE_F_BAR_b_01 fPercentArray[22+1-3-1] = fCHANCE_F_BAR_b_01
eRequestArray[23+1-3-1] = PR_SCENE_F_BAR_c_02 fPercentArray[23+1-3-1] = fCHANCE_F_BAR_c_02
eRequestArray[24+1-3-1] = PR_SCENE_F_BAR_d_02 fPercentArray[24+1-3-1] = fCHANCE_F_BAR_d_02
eRequestArray[25+1-3-1] = PR_SCENE_F_BAR_e_01 fPercentArray[25+1-3-1] = fCHANCE_F_BAR_e_01
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_1)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_4)
eRequestArray[23+3+1-3-1] = PR_SCENE_F_CS_CHECKSHOE fPercentArray[23+3+1-3-1] = fCHANCE_F_CS_CHECKSHOE
eRequestArray[24+3+1-3-1] = PR_SCENE_F_CS_WIPEHANDS fPercentArray[24+3+1-3-1] = fCHANCE_F_CS_WIPEHANDS
eRequestArray[25+3+1-3-1] = PR_SCENE_F_CS_WIPERIGHT fPercentArray[25+3+1-3-1] = fCHANCE_F_CS_WIPERIGHT
ELSE
eRequestArray[23+3+1-3-1] = PR_SCENE_INVALID fPercentArray[23+3+1-3-1] = 0.0
eRequestArray[24+3+1-3-1] = PR_SCENE_INVALID fPercentArray[24+3+1-3-1] = 0.0
eRequestArray[25+3+1-3-1] = PR_SCENE_INVALID fPercentArray[25+3+1-3-1] = 0.0
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_CHOP_THE_DOG_UNLOCKED)
eRequestArray[26+3+1-3-1] = PR_SCENE_F0_WALKCHOP fPercentArray[26+3+1-3-1] = fCHANCE_F0_WALKCHOP
eRequestArray[27+3+1-3-1] = PR_SCENE_F0_PLAYCHOP fPercentArray[27+3+1-3-1] = fCHANCE_F0_PLAYCHOP
ELSE
eRequestArray[26+3+1-3-1] = PR_SCENE_INVALID fPercentArray[26+3+1-3-1] = 0.0
eRequestArray[27+3+1-3-1] = PR_SCENE_INVALID fPercentArray[27+3+1-3-1] = 0.0
ENDIF
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
PED_REQUEST_SCENE_ENUM eRequestArray[33-2-1]
FLOAT fPercentArray[33-2-1]
CONST_FLOAT fCHANCE_F_GYM 4.3
CONST_FLOAT fCHANCE_F_TRAFFIC_a 1.4
CONST_FLOAT fCHANCE_F_TRAFFIC_b 1.4
CONST_FLOAT fCHANCE_F_TRAFFIC_c 1.4
CONST_FLOAT fCHANCE_F1_BIKE 1.4
CONST_FLOAT fCHANCE_F_BIKE_c 1.4
CONST_FLOAT fCHANCE_F_BIKE_d 1.4
CONST_FLOAT fCHANCE_F_MD_KUSH_DOC 4.3
CONST_FLOAT fCHANCE_F_KUSH_DOC_a 4.3
CONST_FLOAT fCHANCE_F_KUSH_DOC_b 4.3
CONST_FLOAT fCHANCE_F_KUSH_DOC_c 4.3
CONST_FLOAT fCHANCE_F1_GARBAGE 4.3
CONST_FLOAT fCHANCE_F_THROW_CUP 2.15
CONST_FLOAT fCHANCE_F_HIT_CUP_HAND 2.15
CONST_FLOAT fCHANCE_F_CS_CHECKSHOE 1.4 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPEHANDS 1.4 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPERIGHT 1.4 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_BAR_a_01 7.0
CONST_FLOAT fCHANCE_F_BAR_b_01 7.0
CONST_FLOAT fCHANCE_F_BAR_c_02 7.0
CONST_FLOAT fCHANCE_F_BAR_d_02 7.0
CONST_FLOAT fCHANCE_F_BAR_e_01 7.0
CONST_FLOAT fCHANCE_F1_WALKCHOP 4.3 //(only if chop app enabled)
CONST_FLOAT fCHANCE_F1_PLAYCHOP 4.3 //(only if chop app enabled)
CONST_FLOAT fCHANCE_F1_WATCHINGTV 8.3
CONST_FLOAT fCHANCE_F1_SNACKING 8.3
CONST_FLOAT fCHANCE_F1_ONLAPTOP 8.3
CONST_FLOAT fCHANCE_F1_CLEANCAR 8.3
CONST_FLOAT fCHANCE_F1_IRONING 8.3
CONST_FLOAT fCHANCE_F1_CLEANINGAPT 8.3
CONST_FLOAT fCHANCE_F1_ONCELL 8.2
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_F1_NEWHOUSE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
eRequestArray[0] = PR_SCENE_F_GYM fPercentArray[0] = fCHANCE_F_GYM
eRequestArray[1] = PR_SCENE_F_TRAFFIC_a fPercentArray[1] = fCHANCE_F_TRAFFIC_a
eRequestArray[2] = PR_SCENE_F_TRAFFIC_b fPercentArray[2] = fCHANCE_F_TRAFFIC_b
eRequestArray[3] = PR_SCENE_F_TRAFFIC_c fPercentArray[3] = fCHANCE_F_TRAFFIC_c
IF Get_Mission_Flow_Flag_State(FLOWFLAG_PLAYER_VEH_F_UNLOCK_BIKE)
eRequestArray[4] = PR_SCENE_F1_BIKE fPercentArray[4] = fCHANCE_F1_BIKE
eRequestArray[5] = PR_SCENE_F_BIKE_c fPercentArray[5] = fCHANCE_F_BIKE_c
eRequestArray[6] = PR_SCENE_F_BIKE_d fPercentArray[6] = fCHANCE_F_BIKE_d
ELSE
eRequestArray[4] = PR_SCENE_INVALID fPercentArray[4] = 0.0
eRequestArray[5] = PR_SCENE_INVALID fPercentArray[5] = 0.0
eRequestArray[6] = PR_SCENE_INVALID fPercentArray[6] = 0.0
ENDIF
eRequestArray[7] = PR_SCENE_F_MD_KUSH_DOC fPercentArray[7] = fCHANCE_F_MD_KUSH_DOC
eRequestArray[7+1] = PR_SCENE_F_KUSH_DOC_a fPercentArray[7+1] = fCHANCE_F_KUSH_DOC_a
eRequestArray[8+1] = PR_SCENE_F_KUSH_DOC_b fPercentArray[8+1] = fCHANCE_F_KUSH_DOC_b
eRequestArray[9+1] = PR_SCENE_F_KUSH_DOC_c fPercentArray[9+1] = fCHANCE_F_KUSH_DOC_c
eRequestArray[10+1] = PR_SCENE_F1_GARBAGE fPercentArray[10+1] = fCHANCE_F1_GARBAGE
eRequestArray[11+1] = PR_SCENE_F_THROW_CUP fPercentArray[11+1] = fCHANCE_F_THROW_CUP
eRequestArray[12+1] = PR_SCENE_F_HIT_CUP_HAND fPercentArray[12+1] = fCHANCE_F_HIT_CUP_HAND
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_1)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_4)
eRequestArray[13+1] = PR_SCENE_F_CS_CHECKSHOE fPercentArray[13+1] = fCHANCE_F_CS_CHECKSHOE
eRequestArray[14+1] = PR_SCENE_F_CS_WIPEHANDS fPercentArray[14+1] = fCHANCE_F_CS_WIPEHANDS
eRequestArray[15+1] = PR_SCENE_F_CS_WIPERIGHT fPercentArray[15+1] = fCHANCE_F_CS_WIPERIGHT
ELSE
eRequestArray[13+1] = PR_SCENE_INVALID fPercentArray[13+1] = 0.0
eRequestArray[14+1] = PR_SCENE_INVALID fPercentArray[14+1] = 0.0
eRequestArray[15+1] = PR_SCENE_INVALID fPercentArray[15+1] = 0.0
ENDIF
eRequestArray[16+1] = PR_SCENE_F_BAR_a_01 fPercentArray[16+1] = fCHANCE_F_BAR_a_01
eRequestArray[18] = PR_SCENE_F_BAR_b_01 fPercentArray[18] = fCHANCE_F_BAR_b_01
eRequestArray[19] = PR_SCENE_F_BAR_c_02 fPercentArray[19] = fCHANCE_F_BAR_c_02
eRequestArray[20] = PR_SCENE_F_BAR_d_02 fPercentArray[20] = fCHANCE_F_BAR_d_02
eRequestArray[21] = PR_SCENE_F_BAR_e_01 fPercentArray[21] = fCHANCE_F_BAR_e_01
IF Get_Mission_Flow_Flag_State(FLOWFLAG_CHOP_THE_DOG_UNLOCKED)
// eRequestArray[24-2] = PR_SCENE_F1_WALKCHOP fPercentArray[24-2] = fCHANCE_F1_WALKCHOP
eRequestArray[25-2-1] = PR_SCENE_F1_PLAYCHOP fPercentArray[25-2-1] = fCHANCE_F1_PLAYCHOP
ELSE
// eRequestArray[24-2-1] = PR_SCENE_INVALID fPercentArray[24-2-1] = 0.0
eRequestArray[25-2-1] = PR_SCENE_INVALID fPercentArray[25-2-1] = 0.0
ENDIF
eRequestArray[26-2-1] = PR_SCENE_F1_WATCHINGTV fPercentArray[26-2-1] = fCHANCE_F1_WATCHINGTV
eRequestArray[27-2-1] = PR_SCENE_F1_SNACKING fPercentArray[27-2-1] = fCHANCE_F1_SNACKING
eRequestArray[28-2-1] = PR_SCENE_F1_ONLAPTOP fPercentArray[28-2-1] = fCHANCE_F1_ONLAPTOP
eRequestArray[29-2-1] = PR_SCENE_F1_CLEANCAR fPercentArray[29-2-1] = fCHANCE_F1_CLEANCAR
eRequestArray[28+2-2-1] = PR_SCENE_F1_IRONING fPercentArray[28+2-2-1] = fCHANCE_F1_IRONING
eRequestArray[29+2-2-1] = PR_SCENE_F1_CLEANINGAPT fPercentArray[29+2-2-1] = fCHANCE_F1_CLEANINGAPT
eRequestArray[32-2-1] = PR_SCENE_F1_ONCELL fPercentArray[32-2-1] = fCHANCE_F1_ONCELL
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ENDIF
ENDFUNC
FUNC BOOL GetFranklinSceneForAfternoonParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetFranklinSceneForAfternoon(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
FUNC BOOL GetFranklinSceneForEvening(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene,
SceneScheduleFunc invalidSceneScheduleFunc, BOOL bDescentOnlyScene)
enumCharacterList ePed = CHAR_FRANKLIN
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
PED_REQUEST_SCENE_ENUM eRequestArray[17]
FLOAT fPercentArray[17]
CONST_FLOAT fCHANCE_F_CLUB 10.0
CONST_FLOAT fCHANCE_F_LAMTAUNT_P1 1.0 //ONLY UP TO JEWEL HEIST)
// CONST_FLOAT fCHANCE_F_LAMTAUNT_P2 1.0 //ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_LAMTAUNT_P3 1.0 //ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_LAMTAUNT_P5 1.0 //ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_LAMTAUNT_NIGHT 5.0 //ONLY UP TO JEWEL HEIST)
CONST_FLOAT fCHANCE_F_BAR_a_01 1.0
CONST_FLOAT fCHANCE_F_BAR_b_01 1.0
CONST_FLOAT fCHANCE_F_BAR_c_02 1.0
CONST_FLOAT fCHANCE_F_BAR_d_02 1.0
CONST_FLOAT fCHANCE_F_BAR_e_01 0.98
CONST_FLOAT fCHANCE_F0_WATCHINGTV 20.0
CONST_FLOAT fCHANCE_F_CS_CHECKSHOE 5.0 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPEHANDS 5.0 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPERIGHT 5.0 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
//B*-2351523
CONST_FLOAT fCHANCE_F_HIT_CUP_HAND 0.01
CONST_FLOAT fCHANCE_F_TRAFFIC 0.01
//B*-2351523
eRequestArray[0] = PR_SCENE_F_CLUB fPercentArray[0] = fCHANCE_F_CLUB
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_LAMAR)
eRequestArray[1] = PR_SCENE_F_LAMTAUNT_P1 fPercentArray[1] = fCHANCE_F_LAMTAUNT_P1
// eRequestArray[2] = PR_SCENE_F_LAMTAUNT_P2 fPercentArray[2] = fCHANCE_F_LAMTAUNT_P2
eRequestArray[2] = PR_SCENE_F_LAMTAUNT_P3 fPercentArray[2] = fCHANCE_F_LAMTAUNT_P3
eRequestArray[3] = PR_SCENE_F_LAMTAUNT_P5 fPercentArray[3] = fCHANCE_F_LAMTAUNT_P5
eRequestArray[4] = PR_SCENE_F_LAMTAUNT_NIGHT fPercentArray[4] = fCHANCE_F_LAMTAUNT_NIGHT
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
PR_SCENE_F_LAMTAUNT_P1, //PR_SCENE_F_LAMTAUNT_P2,
PR_SCENE_F_LAMTAUNT_P3, PR_SCENE_F_LAMTAUNT_P5,
PR_SCENE_F_LAMTAUNT_NIGHT,
PR_SCENE_F0_TANISHAFIGHT)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
ELSE
eRequestArray[1] = PR_SCENE_INVALID fPercentArray[1] = 0.0
// eRequestArray[2] = PR_SCENE_INVALID fPercentArray[2] = 0.0
eRequestArray[2] = PR_SCENE_INVALID fPercentArray[2] = 0.0
eRequestArray[3] = PR_SCENE_INVALID fPercentArray[3] = 0.0
eRequestArray[4] = PR_SCENE_INVALID fPercentArray[4] = 0.0
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
PR_SCENE_F0_TANISHAFIGHT)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
ENDIF
eRequestArray[5] = PR_SCENE_F_BAR_a_01 fPercentArray[5] = fCHANCE_F_BAR_a_01
eRequestArray[6] = PR_SCENE_F_BAR_b_01 fPercentArray[6] = fCHANCE_F_BAR_b_01
eRequestArray[7] = PR_SCENE_F_BAR_c_02 fPercentArray[7] = fCHANCE_F_BAR_c_02
eRequestArray[8] = PR_SCENE_F_BAR_d_02 fPercentArray[8] = fCHANCE_F_BAR_d_02
eRequestArray[9] = PR_SCENE_F_BAR_e_01 fPercentArray[9] = fCHANCE_F_BAR_e_01
// eRequestArray[12-1-1] = PR_SCENE_F0_WATCHINGTV fPercentArray[12-1-1] = fCHANCE_F0_WATCHINGTV
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_1)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_4)
eRequestArray[10] = PR_SCENE_F_CS_CHECKSHOE fPercentArray[10] = fCHANCE_F_CS_CHECKSHOE
eRequestArray[11] = PR_SCENE_F_CS_WIPEHANDS fPercentArray[11] = fCHANCE_F_CS_WIPEHANDS
eRequestArray[12] = PR_SCENE_F_CS_WIPERIGHT fPercentArray[12] = fCHANCE_F_CS_WIPERIGHT
ELSE
eRequestArray[10] = PR_SCENE_INVALID fPercentArray[10] = 0.0
eRequestArray[11] = PR_SCENE_INVALID fPercentArray[11] = 0.0
eRequestArray[12] = PR_SCENE_INVALID fPercentArray[12] = 0.0
ENDIF
//B*-2351523
eRequestArray[13] = PR_SCENE_F_HIT_CUP_HAND fPercentArray[13] = fCHANCE_F_HIT_CUP_HAND
eRequestArray[14] = PR_SCENE_F_TRAFFIC_c fPercentArray[14] = fCHANCE_F_TRAFFIC
eRequestArray[15] = PR_SCENE_F_TRAFFIC_a fPercentArray[15] = fCHANCE_F_TRAFFIC
eRequestArray[16] = PR_SCENE_F_TRAFFIC_b fPercentArray[16] = fCHANCE_F_TRAFFIC
//B*-2351523
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ELSE
PED_REQUEST_SCENE_ENUM eRequestArray[13]
FLOAT fPercentArray[13]
CONST_FLOAT fCHANCE_F_CLUB 14.2
CONST_FLOAT fCHANCE_F_CS_CHECKSHOE 4.7 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPEHANDS 4.7 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_CS_WIPERIGHT 4.7 //[ONLY AFTER PASSED CarSteal1 UNTIL PASSED CS5]
CONST_FLOAT fCHANCE_F_BAR_a_01 13.5
CONST_FLOAT fCHANCE_F_BAR_b_01 13.5
CONST_FLOAT fCHANCE_F_BAR_c_02 13.5
CONST_FLOAT fCHANCE_F_BAR_d_02 13.5
CONST_FLOAT fCHANCE_F_BAR_e_01 13.3
//B*-2351523
CONST_FLOAT fCHANCE_F_HIT_CUP_HAND 0.01
CONST_FLOAT fCHANCE_F_TRAFFIC 0.01
//B*-2351523
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
PR_SCENE_F1_NEWHOUSE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
eRequestArray[0] = PR_SCENE_F_CLUB fPercentArray[0] = fCHANCE_F_CLUB
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_1)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_CARSTEAL_4)
eRequestArray[1] = PR_SCENE_F_CS_CHECKSHOE fPercentArray[1] = fCHANCE_F_CS_CHECKSHOE
eRequestArray[2] = PR_SCENE_F_CS_WIPEHANDS fPercentArray[2] = fCHANCE_F_CS_WIPEHANDS
eRequestArray[3] = PR_SCENE_F_CS_WIPERIGHT fPercentArray[3] = fCHANCE_F_CS_WIPERIGHT
ELSE
eRequestArray[1] = PR_SCENE_INVALID fPercentArray[1] = 0.0
eRequestArray[2] = PR_SCENE_INVALID fPercentArray[2] = 0.0
eRequestArray[3] = PR_SCENE_INVALID fPercentArray[3] = 0.0
ENDIF
eRequestArray[4] = PR_SCENE_F_BAR_a_01 fPercentArray[4] = fCHANCE_F_BAR_a_01
eRequestArray[5] = PR_SCENE_F_BAR_b_01 fPercentArray[5] = fCHANCE_F_BAR_b_01
eRequestArray[6] = PR_SCENE_F_BAR_c_02 fPercentArray[6] = fCHANCE_F_BAR_c_02
eRequestArray[7] = PR_SCENE_F_BAR_d_02 fPercentArray[7] = fCHANCE_F_BAR_d_02
eRequestArray[8] = PR_SCENE_F_BAR_e_01 fPercentArray[8] = fCHANCE_F_BAR_e_01
//B*-2351523
eRequestArray[9] = PR_SCENE_F_HIT_CUP_HAND fPercentArray[9] = fCHANCE_F_HIT_CUP_HAND
eRequestArray[10] = PR_SCENE_F_TRAFFIC_c fPercentArray[10] = fCHANCE_F_TRAFFIC
eRequestArray[11] = PR_SCENE_F_TRAFFIC_a fPercentArray[11] = fCHANCE_F_TRAFFIC
eRequestArray[12] = PR_SCENE_F_TRAFFIC_b fPercentArray[12] = fCHANCE_F_TRAFFIC
//B*-2351523
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray,
eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
RETURN CALL invalidSceneScheduleFunc(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDIF
ENDIF
ENDFUNC
FUNC BOOL GetFranklinSceneForEveningParam(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
RETURN GetFranklinSceneForEvening(eReqScene, fScenePercent, sPedScene, sPassedScene, &BlankSceneScheduleFunc, bDescentOnlyScene)
ENDFUNC
/// PURPOSE: Returns the scene ID from the timetable
FUNC BOOL GetFranklinSceneForCurrentTime(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
// enumCharacterList ePed = CHAR_FRANKLIN
eReqScene = PR_SCENE_INVALID fScenePercent = -1
IF NOT bDescentOnlyScene
IF GetPedRequestSceneForAvailableMission(CHAR_FRANKLIN, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
SWITCH PRIVATE_Get_Switch_Clock_Hours()
/* 03:00 - 08:59 */
CASE 3 CASE 4 CASE 5
CASE 6 CASE 7 CASE 8
/* 100% */
GetFranklinSceneForNight(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetFranklinSceneForMorningParam, bDescentOnlyScene)
BREAK
/* 09:00 - 14:59 */
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13 CASE 14
GetFranklinSceneForMorning(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetFranklinSceneForAfternoonParam, bDescentOnlyScene)
BREAK
/* 15:00 - 20:59 */
CASE 15 CASE 16 CASE 17
CASE 18 CASE 19 CASE 20
GetFranklinSceneForAfternoon(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetFranklinSceneForEveningParam, bDescentOnlyScene)
BREAK
/* 21:00 - 02:59 */
CASE 21 CASE 22 CASE 23
CASE 0 CASE 1 CASE 2
GetFranklinSceneForEvening(eReqScene, fScenePercent, sPedScene, sPassedScene,
&GetFranklinSceneForNightParam, bDescentOnlyScene)
BREAK
ENDSWITCH
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDFUNC
// *******************************************************************************************
// FUNCTIONS TO RETURN NEXT SCENE FOR TREVOR
// *******************************************************************************************
CONST_INT iNUM_OF_TREVOR_CRAZY_RANDOM_SCENES 57 //58 //60 //52
/// PURPOSE: Returns the scene ID from the timetable
FUNC BOOL FillSlotInTrevorSceneArray(PED_REQUEST_SCENE_ENUM eReqScene, FLOAT fScenePercent,
PED_REQUEST_SCENE_ENUM &eRequestArray[], FLOAT &fPercentArray[],
INT &iSceneIndex)
IF (iSceneIndex) >= COUNT_OF(eRequestArray)
CASSERTLN(DEBUG_SWITCH, "Bug for Alwyn - non-fatal array overrun in FillSlotInTrevorSceneArray()")
RETURN FALSE
ENDIF
eRequestArray[iSceneIndex] = eReqScene
fPercentArray[iSceneIndex] = fScenePercent
iSceneIndex++
RETURN TRUE
ENDFUNC
/// PURPOSE: Returns the scene ID from the timetable
FUNC BOOL FillSlotInTrevorSceneCrazyArray(INT &iScene,
PED_REQUEST_SCENE_ENUM eReqScene, PED_REQUEST_SCENE_ENUM &eRequestArray[])
IF (iScene) >= COUNT_OF(eRequestArray)
CASSERTLN(DEBUG_SWITCH, "Bug for Alwyn - non-fatal array overrun in FillSlotInTrevorSceneCrazyArray()")
RETURN FALSE
ENDIF
eRequestArray[iScene] = eReqScene
iScene++
RETURN TRUE
ENDFUNC
/// PURPOSE: Returns the scene ID from the timetable
FUNC BOOL FillTrevorCrazyCountrySceneArray(INT &iSceneIndex, FLOAT fTOTAL_PERCENT,
PED_REQUEST_SCENE_ENUM &eRequestArray[], FLOAT &fPercentArray[])
INT iStart = iSceneIndex
SWITCH PRIVATE_Get_Switch_Clock_Hours()
/* 00:00 - 5:59 */
CASE 0 CASE 1 CASE 2
CASE 3 CASE 4 CASE 5
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_CHATEAU_b, eRequestArray)
BREAK
/* 06:00 - 14:59 */
CASE 6 CASE 7 CASE 8
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13 CASE 14
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_CHATEAU_c, eRequestArray)
BREAK
/* 15:00 - 23:59 */
CASE 15 CASE 16 CASE 17
CASE 18 CASE 19 CASE 20
CASE 21 CASE 22 CASE 23
//
BREAK
ENDSWITCH
IF GET_CURRENT_PROPERTY_OWNER(PROPERTY_BAR_HEN_HOUSE) <> CHAR_TREVOR
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FIGHTBAR_c, eRequestArray)
ENDIF
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_PARK_b, eRequestArray)
// FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_PARK_c, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_WAKETRASH_b, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_WAKEBARN, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_WAKETRAIN, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_WAKEMOUNTAIN, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_POLICE_b, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_POLICE_c, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_CHASECAR_b, eRequestArray)
IF DoesPlayerPedHaveWeaponStored(CHAR_TREVOR, WEAPONTYPE_PISTOL)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CN_PIER, eRequestArray)
ENDIF
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_2)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FLYING_PLANE, eRequestArray)
ENDIF
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T6_LAKE, eRequestArray)
// FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T6_DISPOSEBODY_A, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T6_DIGGING, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T6_FLUSHESFOOT, eRequestArray)
INT iSceneCount
FOR iSceneCount = iStart TO (COUNT_OF(fPercentArray) - 1)
IF (eRequestArray[iSceneCount] = INT_TO_ENUM(PED_REQUEST_SCENE_ENUM, 0))
eRequestArray[iSceneCount] = PR_SCENE_INVALID
ENDIF
IF (eRequestArray[iSceneCount] <> PR_SCENE_INVALID)
fPercentArray[iSceneCount] = fTOTAL_PERCENT / TO_FLOAT(iSceneIndex)
ELSE
fPercentArray[iSceneCount] = 0.0
ENDIF
ENDFOR
RETURN TRUE
ENDFUNC
/// PURPOSE: Returns the scene ID from the timetable
FUNC BOOL FillTrevorCrazyCitySceneArray(INT &iSceneIndex, FLOAT fTOTAL_PERCENT,
PED_REQUEST_SCENE_ENUM &eRequestArray[], FLOAT &fPercentArray[])
INT iStart = iSceneIndex
INT iPRIVATE_Get_Switch_Clock_Hours = PRIVATE_Get_Switch_Clock_Hours()
SWITCH iPRIVATE_Get_Switch_Clock_Hours
/* 00:00 - 5:59 */
CASE 0 CASE 1 CASE 2
CASE 3 CASE 4 CASE 5
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_ESCORTED_OUT, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_CHATEAU_d, eRequestArray)
BREAK
/* 06:00 - 14:59 */
CASE 6 CASE 7 CASE 8
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13 CASE 14
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FIGHTBBUILD, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_ANNOYSUNBATHERS, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_BLOCK_CAMERA, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_GUITARBEATDOWN, eRequestArray)
BREAK
/* 15:00 - 23:59 */
CASE 15 CASE 16 CASE 17
CASE 18 CASE 19 CASE 20
CASE 21 CASE 22 CASE 23
IF (iPRIVATE_Get_Switch_Clock_Hours = 18) //PR_SCENE_T_CR_RAND_TEMPLE in the sunset (1232107)
OR (iPRIVATE_Get_Switch_Clock_Hours = 19) //
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_RAND_TEMPLE, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_RAND_TEMPLE, eRequestArray)
ELSE
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_LINGERIE, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_FUNERAL, eRequestArray)
ENDIF
BREAK
ENDSWITCH
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_GARBAGE_FOOD, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_THROW_FOOD, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FIGHTBAR_a, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FIGHTBAR_b, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_YELLATDOORMAN, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FIGHTYAUCLUB_b, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FIGHTCASINO, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_SCARETRAMP, eRequestArray)
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_CARSTEAL_1) //1203682
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_DUMPSTER, eRequestArray)
ENDIF
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_WAKEBEACH, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_WAKEROOFTOP, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_ALLEYDRUNK, eRequestArray)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_4) //1403370
#if not USE_CLF_DLC
#if not USE_NRM_DLC
IF Is_Savehouse_Respawn_Available(SAVEHOUSE_TREVOR_SC) //1450306
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_SC_ALLEYDRUNK, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_SC_DRUNKHOWLING, eRequestArray)
ENDIF
#endif
#endif
ENDIF
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_PUKEINTOFOUNT, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_POLICE_a, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_NAKED_BRIDGE, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_NAKED_GARDEN, eRequestArray)
// FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_NAKED_ISLAND, eRequestArray) //only post-Fam6
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_CHASECAR_a, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_CHASEBIKE, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_CHASESCOOTER, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_BRIDGEDROP, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_CR_RUDEATCAFE, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_UNDERPIER, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_DRUNKHOWLING, eRequestArray)
IF NOT GET_MISSION_COMPLETE_STATE(eTREV_CITY_SAFEHOUSE_REMOVED)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_KONEIGHBOUR, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FLOYDSPOON_A, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FLOYDSPOON_B, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FLOYDSPOON_B2, eRequestArray)
FillSlotInTrevorSceneCrazyArray(iSceneIndex, PR_SCENE_T_FLOYDSPOON_A2, eRequestArray)
ENDIF
INT iSceneCount
FOR iSceneCount = iStart TO (COUNT_OF(fPercentArray) - 1)
IF (eRequestArray[iSceneCount] = INT_TO_ENUM(PED_REQUEST_SCENE_ENUM, 0))
eRequestArray[iSceneCount] = PR_SCENE_INVALID
ENDIF
IF (eRequestArray[iSceneCount] <> PR_SCENE_INVALID)
fPercentArray[iSceneCount] = fTOTAL_PERCENT / TO_FLOAT(iSceneIndex)
ELSE
fPercentArray[iSceneCount] = 0.0
ENDIF
ENDFOR
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// /* 00:00 - 5:59 */
/// PARAMS:
/// eReqScene -
/// ePed -
/// RETURNS:
///
FUNC BOOL GetTrevorSceneForMorning(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
INT iSceneIndex = 0
CONST_INT iCOUNT_T_CITY_SCENES 8
CONST_INT iCOUNT_T_COUNTRY_SCENES 7 //5
enumCharacterList ePed = CHAR_TREVOR
PED_REQUEST_SCENE_ENUM eRequestArray[iCOUNT_T_CITY_SCENES+iCOUNT_T_COUNTRY_SCENES+iNUM_OF_TREVOR_CRAZY_RANDOM_SCENES]
FLOAT fPercentArray[iCOUNT_T_CITY_SCENES+iCOUNT_T_COUNTRY_SCENES+iNUM_OF_TREVOR_CRAZY_RANDOM_SCENES]
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_COUNTRY)
IF NOT GET_MISSION_COMPLETE_STATE(eTREV_CITY_SAFEHOUSE_REMOVED)
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_MORNING, bDescentOnlyScene,
PR_SCENE_T_FLOYD_BEAR, PR_SCENE_T_FLOYD_DOLL, PR_SCENE_T_FLOYDPINEAPPLE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_MORNING)
ENDIF
ELSE
// IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_MORNING,
// PR_SCENE_T_CR_POLICE_a, PR_SCENE_T_CR_BRIDGEDROP)
// RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_MORNING)
// ENDIF
ENDIF
CONST_FLOAT fCHANCE_T_FLOYDSPOON_A 7.5
CONST_FLOAT fCHANCE_T_FLOYDSPOON_B 7.5
CONST_FLOAT fCHANCE_T_FLOYDSPOON_C 7.5
CONST_FLOAT fCHANCE_T_FLOYDSPOON_D 7.5
// CONST_FLOAT fCHANCE_T_STRIPCLUB_a 5.0
CONST_FLOAT fCHANCE_T_SC_MOCKLAPDANCE 5.0
CONST_FLOAT fCHANCE_T_SC_BAR 5.0
CONST_FLOAT fCHANCE_T_STRIPCLUB_out 5.0
CONST_FLOAT fCHANCE_T_CITY_RANDOM 50.0
IF NOT GET_MISSION_COMPLETE_STATE(eTREV_CITY_SAFEHOUSE_REMOVED)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYDSPOON_A, fCHANCE_T_FLOYDSPOON_A, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYDSPOON_B, fCHANCE_T_FLOYDSPOON_B, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYDSPOON_B2, fCHANCE_T_FLOYDSPOON_C, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYDSPOON_A2, fCHANCE_T_FLOYDSPOON_D, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYD_BEAR, 1.0, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYD_DOLL, 1.0, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYDPINEAPPLE, 1.0, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
// FillSlotInTrevorSceneArray(PR_SCENE_T_STRIPCLUB_a, fCHANCE_T_STRIPCLUB_a, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_SC_MOCKLAPDANCE, fCHANCE_T_SC_MOCKLAPDANCE, eRequestArray, fPercentArray, iSceneIndex)
IF NOT IS_MISSION_AVAILABLE(SP_HEIST_FINALE_2B) //1072399
FillSlotInTrevorSceneArray(PR_SCENE_T_SC_BAR, fCHANCE_T_SC_BAR / 2.0, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_SC_CHASE, fCHANCE_T_SC_BAR / 2.0, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
FillSlotInTrevorSceneArray(PR_SCENE_T_STRIPCLUB_out, fCHANCE_T_STRIPCLUB_out, eRequestArray, fPercentArray, iSceneIndex)
FillTrevorCrazyCitySceneArray(iSceneIndex, fCHANCE_T_CITY_RANDOM, eRequestArray, fPercentArray)
ENDIF
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_CITY)
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_MORNING, bDescentOnlyScene,
PR_SCENE_T_CN_WAKEBARN, PR_SCENE_T_CN_WAKEMOUNTAIN)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_MORNING)
ENDIF
CONST_FLOAT fCHANCE_T6_SMOKECRYSTAL 15.0
CONST_FLOAT fCHANCE_T_SMOKEMETH 15.0
CONST_FLOAT fCHANCE_T6_METHLAB 5.0
CONST_FLOAT fCHANCE_T6_TRAF_AIR 10.0
CONST_FLOAT fCHANCE_T_HEADINSINK 5.0
CONST_FLOAT fCHANCE_T_JERKOFF 5.0
CONST_FLOAT fCHANCE_T_COUNTRY_RANDOM 30.0
FillSlotInTrevorSceneArray(PR_SCENE_T6_SMOKECRYSTAL, fCHANCE_T6_SMOKECRYSTAL, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_SMOKEMETH, fCHANCE_T_SMOKEMETH, eRequestArray, fPercentArray, iSceneIndex)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CHINESE_1) AND NOT GET_MISSION_COMPLETE_STATE(SP_HEIST_RURAL_2)
IF NOT IS_MISSION_AVAILABLE(SP_HEIST_RURAL_2) //1339576
AND NOT IS_MISSION_AVAILABLE(SP_HEIST_RURAL_1) //1541148
FillSlotInTrevorSceneArray(PR_SCENE_T6_METHLAB, fCHANCE_T6_METHLAB, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
ENDIF
IF GET_CURRENT_PROPERTY_OWNER(PROPERTY_ARMS_TRAFFICKING) = CHAR_TREVOR
FillSlotInTrevorSceneArray(PR_SCENE_T6_TRAF_AIR, fCHANCE_T6_TRAF_AIR, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
FillSlotInTrevorSceneArray(PR_SCENE_T_HEADINSINK, fCHANCE_T_HEADINSINK, eRequestArray, fPercentArray, iSceneIndex)
#IF NOT IS_JAPANESE_BUILD
FillSlotInTrevorSceneArray(PR_SCENE_T_JERKOFF, fCHANCE_T_JERKOFF, eRequestArray, fPercentArray, iSceneIndex)
#ENDIF
FillTrevorCrazyCountrySceneArray(iSceneIndex, fCHANCE_T_COUNTRY_RANDOM, eRequestArray, fPercentArray)
ENDIF
RETURN GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDFUNC
/// PURPOSE:
/// /* 06:00 - 14:59 */
/// PARAMS:
/// eReqScene -
/// ePed -
/// RETURNS:
///
FUNC BOOL GetTrevorSceneForAfternoon(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
INT iSceneIndex = 0
CONST_INT iCOUNT_T_CITY_SCENES 1
CONST_INT iCOUNT_T_COUNTRY_SCENES 6 //4
enumCharacterList ePed = CHAR_TREVOR
PED_REQUEST_SCENE_ENUM eRequestArray[iCOUNT_T_CITY_SCENES+iCOUNT_T_COUNTRY_SCENES+iNUM_OF_TREVOR_CRAZY_RANDOM_SCENES]
FLOAT fPercentArray[iCOUNT_T_CITY_SCENES+iCOUNT_T_COUNTRY_SCENES+iNUM_OF_TREVOR_CRAZY_RANDOM_SCENES]
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_COUNTRY)
IF NOT GET_MISSION_COMPLETE_STATE(eTREV_CITY_SAFEHOUSE_REMOVED)
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_T_FLOYD_BEAR, PR_SCENE_T_FLOYD_DOLL, PR_SCENE_T_FLOYDPINEAPPLE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
ELSE
// IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON,
// PR_SCENE_T_CR_POLICE_a, PR_SCENE_T_CR_BRIDGEDROP)
// RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
// ENDIF
ENDIF
CONST_FLOAT fCHANCE_T_FLOYDSAVEHOUSE 20.0
CONST_FLOAT fCHANCE_T_CITY_RANDOM 80.0
IF NOT GET_MISSION_COMPLETE_STATE(eTREV_CITY_SAFEHOUSE_REMOVED)
FillSlotInTrevorSceneArray(PR_SCENE_T_FLOYDSAVEHOUSE , fCHANCE_T_FLOYDSAVEHOUSE, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
FillTrevorCrazyCitySceneArray(iSceneIndex, fCHANCE_T_CITY_RANDOM, eRequestArray, fPercentArray)
ENDIF
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_CITY)
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_AFTERNOON, bDescentOnlyScene,
PR_SCENE_T_CN_WAKEBARN, PR_SCENE_T_CN_WAKEMOUNTAIN)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_AFTERNOON)
ENDIF
// CONST_FLOAT fCHANCE_T6_BLOWSHITUP 20.0
CONST_FLOAT fCHANCE_T6_METHLAB 5.0
CONST_FLOAT fCHANCE_T6_HUNTING 5.0
CONST_FLOAT fCHANCE_T6_TRAF_AIR 10.0
CONST_FLOAT fCHANCE_T_HEADINSINK 5.0
CONST_FLOAT fCHANCE_T_JERKOFF 5.0
CONST_FLOAT fCHANCE_T_COUNTRY_RANDOM 40.0
// FillSlotInTrevorSceneArray(PR_SCENE_T6_BLOWSHITUP, fCHANCE_T6_BLOWSHITUP, eRequestArray, fPercentArray, iSceneIndex)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CHINESE_1) AND NOT GET_MISSION_COMPLETE_STATE(SP_HEIST_RURAL_2)
IF NOT IS_MISSION_AVAILABLE(SP_HEIST_RURAL_2) //1339576
AND NOT IS_MISSION_AVAILABLE(SP_HEIST_RURAL_1) //1541148
FillSlotInTrevorSceneArray(PR_SCENE_T6_METHLAB, fCHANCE_T6_METHLAB, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
ENDIF
IF GET_MISSION_FLOW_BITSET_BIT_STATE(FLOWBITSET_MINIGAME_ACTIVE, ENUM_TO_INT(MINIGAME_HUNTING))
IF NOT PRIVATE_IsRandomCharFlagSet(RC_HUNTING_1, RC_FLAG_READY_TO_PLAY)
AND NOT PRIVATE_IsRandomCharFlagSet(RC_HUNTING_2, RC_FLAG_READY_TO_PLAY)
IF DoesPlayerPedHaveWeaponStored(CHAR_TREVOR, WEAPONTYPE_SNIPERRIFLE)
OR DoesPlayerPedHaveWeaponStored(CHAR_TREVOR, WEAPONTYPE_HEAVYSNIPER)
FillSlotInTrevorSceneArray(PR_SCENE_T6_HUNTING1, fCHANCE_T6_HUNTING, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T6_HUNTING2, fCHANCE_T6_HUNTING, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T6_HUNTING3, fCHANCE_T6_HUNTING, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
ENDIF
ENDIF
IF GET_CURRENT_PROPERTY_OWNER(PROPERTY_ARMS_TRAFFICKING) = CHAR_TREVOR
FillSlotInTrevorSceneArray(PR_SCENE_T6_TRAF_AIR, fCHANCE_T6_TRAF_AIR, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
FillSlotInTrevorSceneArray(PR_SCENE_T_HEADINSINK, fCHANCE_T_HEADINSINK, eRequestArray, fPercentArray, iSceneIndex)
#IF NOT IS_JAPANESE_BUILD
FillSlotInTrevorSceneArray(PR_SCENE_T_JERKOFF, fCHANCE_T_JERKOFF, eRequestArray, fPercentArray, iSceneIndex)
#ENDIF
FillTrevorCrazyCountrySceneArray(iSceneIndex, fCHANCE_T_COUNTRY_RANDOM, eRequestArray, fPercentArray)
ENDIF
RETURN GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDFUNC
/// PURPOSE:
/// /* 15:00 - 23:59 */
/// PARAMS:
/// eReqScene -
/// ePed -
/// RETURNS:
///
FUNC BOOL GetTrevorSceneForEvening(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
INT iSceneIndex = 0
CONST_INT iCOUNT_T_CITY_SCENES 8
CONST_INT iCOUNT_T_COUNTRY_SCENES 6 //4
enumCharacterList ePed = CHAR_TREVOR
PED_REQUEST_SCENE_ENUM eRequestArray[iCOUNT_T_CITY_SCENES+iCOUNT_T_COUNTRY_SCENES+iNUM_OF_TREVOR_CRAZY_RANDOM_SCENES]
FLOAT fPercentArray[iCOUNT_T_CITY_SCENES+iCOUNT_T_COUNTRY_SCENES+iNUM_OF_TREVOR_CRAZY_RANDOM_SCENES]
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_COUNTRY)
IF NOT GET_MISSION_COMPLETE_STATE(eTREV_CITY_SAFEHOUSE_REMOVED)
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
PR_SCENE_T_FLOYD_BEAR, PR_SCENE_T_FLOYD_DOLL, PR_SCENE_T_FLOYDPINEAPPLE)
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
ELSE
// IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING,
// PR_SCENE_T_CR_POLICE_a, PR_SCENE_T_CR_BRIDGEDROP)
// RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
// ENDIF
ENDIF
CONST_FLOAT fCHANCE_T_DOCKS_a 5.0
CONST_FLOAT fCHANCE_T_DOCKS_b 5.0
CONST_FLOAT fCHANCE_T_DOCKS_c 5.0
CONST_FLOAT fCHANCE_T_DOCKS_d 5.0
// CONST_FLOAT fCHANCE_T_STRIPCLUB_a 2.5
CONST_FLOAT fCHANCE_T_SC_MOCKLAPDANCE 2.5
CONST_FLOAT fCHANCE_T_SC_BAR 2.5
CONST_FLOAT fCHANCE_T_STRIPCLUB_out 2.5
CONST_FLOAT fCHANCE_T_CITY_RANDOM 70.0
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_HEIST_FINISHED_DOCKS)
FillSlotInTrevorSceneArray(PR_SCENE_T_DOCKS_a, fCHANCE_T_DOCKS_a, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_DOCKS_b, fCHANCE_T_DOCKS_b, eRequestArray, fPercentArray, iSceneIndex)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_2)
FillSlotInTrevorSceneArray(PR_SCENE_T_DOCKS_c, fCHANCE_T_DOCKS_c, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
FillSlotInTrevorSceneArray(PR_SCENE_T_DOCKS_d, fCHANCE_T_DOCKS_d, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
// FillSlotInTrevorSceneArray(PR_SCENE_T_STRIPCLUB_a, fCHANCE_T_STRIPCLUB_a, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_SC_MOCKLAPDANCE, fCHANCE_T_SC_MOCKLAPDANCE, eRequestArray, fPercentArray, iSceneIndex)
IF NOT IS_MISSION_AVAILABLE(SP_HEIST_FINALE_2B) //1072399
FillSlotInTrevorSceneArray(PR_SCENE_T_SC_BAR, fCHANCE_T_SC_BAR / 2.0, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T_SC_CHASE, fCHANCE_T_SC_BAR / 2.0, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
FillSlotInTrevorSceneArray(PR_SCENE_T_STRIPCLUB_out, fCHANCE_T_STRIPCLUB_out, eRequestArray, fPercentArray, iSceneIndex)
FillTrevorCrazyCitySceneArray(iSceneIndex, fCHANCE_T_CITY_RANDOM, eRequestArray, fPercentArray)
ENDIF
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_TREVOR_RESTRICTED_TO_CITY)
IF PRIVATE_ShouldPlayerTriggerPrioritySwitch(ePed, eReqScene, fScenePercent, sPedScene, sPassedScene, TS_EVENING, bDescentOnlyScene,
PR_SCENE_T_CN_WAKEBARN, PR_SCENE_T_CN_WAKEMOUNTAIN)
//
RETURN PRIVATE_TriggerThisPrioritySwitch(ePed, eReqScene, TS_EVENING)
ENDIF
// CONST_FLOAT fCHANCE_T6_EVENING 30.0
CONST_FLOAT fCHANCE_T6_METHLAB 5.0
CONST_FLOAT fCHANCE_T6_HUNTING 5.0
CONST_FLOAT fCHANCE_T6_TRAF_AIR 10.0
CONST_FLOAT fCHANCE_T_HEADINSINK 5.0
CONST_FLOAT fCHANCE_T_JERKOFF 5.0
CONST_FLOAT fCHANCE_T_COUNTRY_RANDOM 30.0
// FillSlotInTrevorSceneArray(PR_SCENE_T6_EVENING, fCHANCE_T6_EVENING, eRequestArray, fPercentArray, iSceneIndex)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_CHINESE_1) AND NOT GET_MISSION_COMPLETE_STATE(SP_HEIST_RURAL_2)
IF NOT IS_MISSION_AVAILABLE(SP_HEIST_RURAL_2) //1339576
AND NOT IS_MISSION_AVAILABLE(SP_HEIST_RURAL_1) //1541148
FillSlotInTrevorSceneArray(PR_SCENE_T6_METHLAB, fCHANCE_T6_METHLAB, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
ENDIF
IF NOT PRIVATE_IsRandomCharFlagSet(RC_HUNTING_1, RC_FLAG_READY_TO_PLAY)
AND NOT PRIVATE_IsRandomCharFlagSet(RC_HUNTING_2, RC_FLAG_READY_TO_PLAY)
IF DoesPlayerPedHaveWeaponStored(CHAR_TREVOR, WEAPONTYPE_SNIPERRIFLE)
OR DoesPlayerPedHaveWeaponStored(CHAR_TREVOR, WEAPONTYPE_HEAVYSNIPER)
FillSlotInTrevorSceneArray(PR_SCENE_T6_HUNTING1, fCHANCE_T6_HUNTING, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T6_HUNTING2, fCHANCE_T6_HUNTING, eRequestArray, fPercentArray, iSceneIndex)
FillSlotInTrevorSceneArray(PR_SCENE_T6_HUNTING3, fCHANCE_T6_HUNTING, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
ENDIF
IF GET_CURRENT_PROPERTY_OWNER(PROPERTY_ARMS_TRAFFICKING) = CHAR_TREVOR
FillSlotInTrevorSceneArray(PR_SCENE_T6_TRAF_AIR, fCHANCE_T6_TRAF_AIR, eRequestArray, fPercentArray, iSceneIndex)
ENDIF
FillSlotInTrevorSceneArray(PR_SCENE_T_HEADINSINK, fCHANCE_T_HEADINSINK, eRequestArray, fPercentArray, iSceneIndex)
#IF NOT IS_JAPANESE_BUILD
FillSlotInTrevorSceneArray(PR_SCENE_T_JERKOFF, fCHANCE_T_JERKOFF, eRequestArray, fPercentArray, iSceneIndex)
#ENDIF
FillTrevorCrazyCountrySceneArray(iSceneIndex, fCHANCE_T_COUNTRY_RANDOM, eRequestArray, fPercentArray)
ENDIF
RETURN GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
ENDFUNC
/// PURPOSE: Returns the scene ID from the timetable
FUNC BOOL GetTrevorSceneForCurrentTime(PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bDescentOnlyScene)
// enumCharacterList ePed = CHAR_TREVOR
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
IF NOT bDescentOnlyScene
IF GetPedRequestSceneForAvailableMission(CHAR_TREVOR, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
SWITCH PRIVATE_Get_Switch_Clock_Hours()
/* 00:00 - 5:59 */
CASE 0 CASE 1 CASE 2
CASE 3 CASE 4 CASE 5
GetTrevorSceneForMorning(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
BREAK
/* 06:00 - 14:59 */
CASE 6 CASE 7 CASE 8
CASE 9 CASE 10 CASE 11
CASE 12 CASE 13 CASE 14
GetTrevorSceneForAfternoon(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
BREAK
/* 15:00 - 23:59 */
CASE 15 CASE 16 CASE 17
CASE 18 CASE 19 CASE 20
CASE 21 CASE 22 CASE 23
GetTrevorSceneForEvening(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
BREAK
ENDSWITCH
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDFUNC
// *******************************************************************************************
// MAIN FUNCTION TO RETURN NEXT SCENE FOR PLAYER CHAR
// *******************************************************************************************
FUNC BOOL PassedBlimpCheckOnLastAndNext(enumCharacterList ePed)
IF g_sPlayerLastVeh[ePed].model = BLIMP
OR g_sPlayerLastVeh[ePed].model = BLIMP2
TIMEOFDAY sLastTimeActive
SWITCH ePed
CASE CHAR_MICHAEL
//check franklins blimp state
IF g_sPlayerLastVeh[CHAR_FRANKLIN].model = BLIMP
OR g_sPlayerLastVeh[CHAR_FRANKLIN].model = BLIMP2
sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[CHAR_FRANKLIN], <<0,0,0>>, 1.5)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 3)
CASSERTLN(DEBUG_SWITCH, "PassedBlimpCheckOnLastAndNext(", GET_PLAYER_PED_STRING(ePed), ") - Franklin was in a blimp")
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDIF
//check trevors blimp state
IF g_sPlayerLastVeh[CHAR_TREVOR].model = BLIMP
OR g_sPlayerLastVeh[CHAR_TREVOR].model = BLIMP2
sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[CHAR_TREVOR], <<0,0,0>>, 1.5)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 3)
CASSERTLN(DEBUG_SWITCH, "PassedBlimpCheckOnLastAndNext(", GET_PLAYER_PED_STRING(ePed), ") - Trevor was in a blimp")
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE CHAR_FRANKLIN
//check michaels blimp state
IF g_sPlayerLastVeh[CHAR_MICHAEL].model = BLIMP
OR g_sPlayerLastVeh[CHAR_MICHAEL].model = BLIMP2
sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[CHAR_MICHAEL], <<0,0,0>>, 1.5)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 3)
CASSERTLN(DEBUG_SWITCH, "PassedBlimpCheckOnLastAndNext(", GET_PLAYER_PED_STRING(ePed), ") - Michael was in a blimp")
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDIF
//check trevors blimp state
IF g_sPlayerLastVeh[CHAR_TREVOR].model = BLIMP
OR g_sPlayerLastVeh[CHAR_TREVOR].model = BLIMP2
sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_TREVOR]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[CHAR_TREVOR], <<0,0,0>>, 1.5)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 3)
CASSERTLN(DEBUG_SWITCH, "PassedBlimpCheckOnLastAndNext(", GET_PLAYER_PED_STRING(ePed), ") - Trevor was in a blimp")
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE CHAR_TREVOR
//check michaels blimp state
IF g_sPlayerLastVeh[CHAR_MICHAEL].model = BLIMP
OR g_sPlayerLastVeh[CHAR_MICHAEL].model = BLIMP2
sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_MICHAEL]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[CHAR_MICHAEL], <<0,0,0>>, 1.5)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 3)
CASSERTLN(DEBUG_SWITCH, "PassedBlimpCheckOnLastAndNext(", GET_PLAYER_PED_STRING(ePed), ") - Michael was in a blimp")
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDIF
//check franklins blimp state
IF g_sPlayerLastVeh[CHAR_FRANKLIN].model = BLIMP
OR g_sPlayerLastVeh[CHAR_FRANKLIN].model = BLIMP2
sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[CHAR_FRANKLIN]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[CHAR_FRANKLIN], <<0,0,0>>, 1.5)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 3)
CASSERTLN(DEBUG_SWITCH, "PassedBlimpCheckOnLastAndNext(", GET_PLAYER_PED_STRING(ePed), ") - Franklin was in a blimp")
RETURN FALSE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
VEHICLE_INDEX vehID
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(), TRUE)
vehID = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID(), TRUE)
ELSE
vehID = GET_PLAYERS_LAST_VEHICLE()
ENDIF
IF DOES_ENTITY_EXIST(vehID)
MODEL_NAMES modelID = GET_ENTITY_MODEL(vehID)
IF modelID = BLIMP
OR modelID = BLIMP2
CASSERTLN(DEBUG_SWITCH, "PassedBlimpCheckOnLastAndNext(", GET_PLAYER_PED_STRING(ePed), ") - Player is/was in a blimp")
RETURN FALSE
ENDIF
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL FallenThroughPostMissionScene(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM ePostReqScene,
PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent,
PED_SCENE_STRUCT &sPedScene,
PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "FallenThroughPostMissionScene ", Get_String_From_Ped_Request_Scene_Enum(ePostReqScene))
CERRORLN(DEBUG_SWITCH, "FallenThroughPostMissionScene ", Get_String_From_Ped_Request_Scene_Enum(ePostReqScene))
#ENDIF
SWITCH ePed
CASE CHAR_MICHAEL
GetMichaelSceneForCurrentTime(eReqScene, fScenePercent, sPedScene, sPassedScene, FALSE)
BREAK
CASE CHAR_FRANKLIN
GetFranklinSceneForCurrentTime(eReqScene, fScenePercent, sPedScene, sPassedScene, FALSE)
BREAK
CASE CHAR_TREVOR
GetTrevorSceneForCurrentTime(eReqScene, fScenePercent, sPedScene, sPassedScene, FALSE)
BREAK
DEFAULT
ePostReqScene = ePostReqScene
RETURN FALSE
BREAK
ENDSWITCH
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(ePostReqScene), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDFUNC
FUNC BOOL GET_PLAYER_PED_SCENE_FOR_CURRENT_TIME(enumCharacterList ePed, PED_REQUEST_SCENE_ENUM &eReqScene, FLOAT &fScenePercent, PED_SCENE_STRUCT &sPedScene, PLAYER_TIMETABLE_SCENE_STRUCT &sPassedScene, BOOL bBypassDefaultSwitch = FALSE)
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
#IF IS_DEBUG_BUILD //#1508299
IF GET_COMMANDLINE_PARAM_EXISTS("ForceDefaultSwitch")
IF NOT Is_TIMEOFDAY_Valid(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed])
g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed] = GET_CURRENT_TIMEOFDAY()
ENDIF
IF ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed], <<0,0,0>>, 1.5)
g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed] = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
g_savedGlobals.sPlayerData.sInfo.fLastKnownHead[ePed] = GET_ENTITY_HEADING(PLAYER_PED_ID())
ENDIF
SWITCH ePed
CASE CHAR_MICHAEL
CASSERTLN(DEBUG_SWITCH, "Michael - \"ForceDefaultSwitch\"")
fScenePercent = 100
eReqScene = PR_SCENE_M_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_FRANKLIN
CASSERTLN(DEBUG_SWITCH, "Franklin - \"ForceDefaultSwitch\"")
fScenePercent = 100
eReqScene = PR_SCENE_F_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_TREVOR
CASSERTLN(DEBUG_SWITCH, "Trevor - \"ForceDefaultSwitch\"")
fScenePercent = 100
eReqScene = PR_SCENE_T_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
ENDSWITCH
ENDIF
IF GET_COMMANDLINE_PARAM_EXISTS("ForceOverrideSwitch")
SWITCH ePed
CASE CHAR_MICHAEL
CASSERTLN(DEBUG_SWITCH, "Michael - \"ForceOverrideSwitch\"")
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_M_OVERRIDE
g_sOverrideScene[ePed].ePed = ePed
g_sOverrideScene[ePed].eScene = g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed]
g_sOverrideScene[ePed].vCreateCoords = g_vDebugStartPositions[0]
g_sOverrideScene[ePed].fCreateHead = g_vDebugStartOrientations[0]
fScenePercent = 100
eReqScene = PR_SCENE_M_OVERRIDE
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_FRANKLIN
CASSERTLN(DEBUG_SWITCH, "Franklin - \"ForceOverrideSwitch\"")
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_F_OVERRIDE
g_sOverrideScene[ePed].ePed = ePed
g_sOverrideScene[ePed].eScene = g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed]
g_sOverrideScene[ePed].vCreateCoords = g_vDebugStartPositions[1]
g_sOverrideScene[ePed].fCreateHead = g_vDebugStartOrientations[1]
fScenePercent = 100
eReqScene = PR_SCENE_F_OVERRIDE
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_TREVOR
CASSERTLN(DEBUG_SWITCH, "Trevor - \"ForceOverrideSwitch\"")
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_T_OVERRIDE
g_sOverrideScene[ePed].ePed = ePed
g_sOverrideScene[ePed].eScene = g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed]
g_sOverrideScene[ePed].vCreateCoords = g_vDebugStartPositions[2]
g_sOverrideScene[ePed].fCreateHead = g_vDebugStartOrientations[2]
fScenePercent = 100
eReqScene = PR_SCENE_T_OVERRIDE
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
ENDSWITCH
ENDIF
IF GET_COMMANDLINE_PARAM_EXISTS("sc_ForceNamedSwitch")
STRING sNamedSwitch = GET_COMMANDLINE_PARAM("sc_ForceNamedSwitch")
SWITCH GET_HASH_KEY(sNamedSwitch) /* michael */
CASE HASH("PR_SCENE_M2_BEDROOM") fScenePercent = 100 eReqScene = PR_SCENE_M2_BEDROOM RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_SAVEHOUSE0_b") fScenePercent = 100 eReqScene = PR_SCENE_M2_SAVEHOUSE0_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_SAVEHOUSE1_a") fScenePercent = 100 eReqScene = PR_SCENE_M2_SAVEHOUSE1_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_SAVEHOUSE1_b") fScenePercent = 100 eReqScene = PR_SCENE_M2_SAVEHOUSE1_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_SMOKINGGOLF") fScenePercent = 100 eReqScene = PR_SCENE_M2_SMOKINGGOLF RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_WAKEUPSCREAM") fScenePercent = 100 eReqScene = PR_SCENE_M4_WAKEUPSCREAM RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_WAKESUPSCARED") fScenePercent = 100 eReqScene = PR_SCENE_M4_WAKESUPSCARED RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_HOUSEBED") fScenePercent = 100 eReqScene = PR_SCENE_M6_HOUSEBED RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_WATCHINGTV") fScenePercent = 100 eReqScene = PR_SCENE_M4_WATCHINGTV RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_KIDS_TV") fScenePercent = 100 eReqScene = PR_SCENE_M2_KIDS_TV RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_POOLSIDE_a") fScenePercent = 100 eReqScene = PR_SCENE_M_POOLSIDE_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_POOLSIDE_b") fScenePercent = 100 eReqScene = PR_SCENE_M_POOLSIDE_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_CARSLEEP_a") fScenePercent = 100 eReqScene = PR_SCENE_M2_CARSLEEP_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_CARSLEEP_b") fScenePercent = 100 eReqScene = PR_SCENE_M2_CARSLEEP_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_CANAL_a") fScenePercent = 100 eReqScene = PR_SCENE_M_CANAL_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_CANAL_b") fScenePercent = 100 eReqScene = PR_SCENE_M_CANAL_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_CANAL_c") fScenePercent = 100 eReqScene = PR_SCENE_M_CANAL_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_LUNCH_a") fScenePercent = 100 eReqScene = PR_SCENE_M2_LUNCH_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_EXITRESTAURANT") fScenePercent = 100 eReqScene = PR_SCENE_M4_EXITRESTAURANT RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_LUNCH_b") fScenePercent = 100 eReqScene = PR_SCENE_M4_LUNCH_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_CINEMA") fScenePercent = 100 eReqScene = PR_SCENE_M4_CINEMA RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_WIFEEXITSCAR") fScenePercent = 100 eReqScene = PR_SCENE_M2_WIFEEXITSCAR RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_DROPOFFDAU_a") fScenePercent = 100 eReqScene = PR_SCENE_M2_DROPOFFDAU_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_DROPOFFDAU_b") fScenePercent = 100 eReqScene = PR_SCENE_M2_DROPOFFDAU_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_DROPOFFSON_a") fScenePercent = 100 eReqScene = PR_SCENE_M2_DROPOFFSON_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_DROPOFFSON_b") fScenePercent = 100 eReqScene = PR_SCENE_M2_DROPOFFSON_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_PIER_a") fScenePercent = 100 eReqScene = PR_SCENE_M_PIER_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_PIER_b") fScenePercent = 100 eReqScene = PR_SCENE_M_PIER_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_TRAFFIC_a") fScenePercent = 100 eReqScene = PR_SCENE_M_TRAFFIC_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_TRAFFIC_b") fScenePercent = 100 eReqScene = PR_SCENE_M_TRAFFIC_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_TRAFFIC_c") fScenePercent = 100 eReqScene = PR_SCENE_M_TRAFFIC_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_VWOODPARK_a") fScenePercent = 100 eReqScene = PR_SCENE_M_VWOODPARK_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_VWOODPARK_b") fScenePercent = 100 eReqScene = PR_SCENE_M_VWOODPARK_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_BENCHCALL_a") fScenePercent = 100 eReqScene = PR_SCENE_M_BENCHCALL_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_BENCHCALL_b") fScenePercent = 100 eReqScene = PR_SCENE_M_BENCHCALL_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_PARKEDHILLS_a") fScenePercent = 100 eReqScene = PR_SCENE_M_PARKEDHILLS_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_PARKEDHILLS_b") fScenePercent = 100 eReqScene = PR_SCENE_M_PARKEDHILLS_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_PHARMACY") fScenePercent = 100 eReqScene = PR_SCENE_M2_PHARMACY RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_COFFEE_a") fScenePercent = 100 eReqScene = PR_SCENE_M_COFFEE_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_COFFEE_b") fScenePercent = 100 eReqScene = PR_SCENE_M_COFFEE_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_COFFEE_c") fScenePercent = 100 eReqScene = PR_SCENE_M_COFFEE_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_CYCLING_a") fScenePercent = 100 eReqScene = PR_SCENE_M2_CYCLING_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_CYCLING_b") fScenePercent = 100 eReqScene = PR_SCENE_M2_CYCLING_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_CYCLING_c") fScenePercent = 100 eReqScene = PR_SCENE_M2_CYCLING_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_MARINA") fScenePercent = 100 eReqScene = PR_SCENE_M2_MARINA RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_ARGUEWITHWIFE") fScenePercent = 100 eReqScene = PR_SCENE_M2_ARGUEWITHWIFE RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_PARKEDBEACH") fScenePercent = 100 eReqScene = PR_SCENE_M4_PARKEDBEACH RETURN TRUE BREAK
CASE HASH("PR_SCENE_M4_WASHFACE") fScenePercent = 100 eReqScene = PR_SCENE_M4_WASHFACE RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_HOOKERMOTEL") fScenePercent = 100 eReqScene = PR_SCENE_M_HOOKERMOTEL RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_MORNING_a") fScenePercent = 100 eReqScene = PR_SCENE_M6_MORNING_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_CARSLEEP") fScenePercent = 100 eReqScene = PR_SCENE_M6_CARSLEEP RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_HOUSETV_a") fScenePercent = 100 eReqScene = PR_SCENE_M6_HOUSETV_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_SUNBATHING") fScenePercent = 100 eReqScene = PR_SCENE_M6_SUNBATHING RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRINKINGBEER") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRINKINGBEER RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_ONPHONE") fScenePercent = 100 eReqScene = PR_SCENE_M6_ONPHONE RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DEPRESSED") fScenePercent = 100 eReqScene = PR_SCENE_M6_DEPRESSED RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_BOATING") fScenePercent = 100 eReqScene = PR_SCENE_M6_BOATING RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_LIQUORSTORE") fScenePercent = 100 eReqScene = PR_SCENE_M6_LIQUORSTORE RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_PARKEDHILLS_a") fScenePercent = 100 eReqScene = PR_SCENE_M6_PARKEDHILLS_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_PARKEDHILLS_b") fScenePercent = 100 eReqScene = PR_SCENE_M6_PARKEDHILLS_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_PARKEDHILLS_c") fScenePercent = 100 eReqScene = PR_SCENE_M6_PARKEDHILLS_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_PARKEDHILLS_d") fScenePercent = 100 eReqScene = PR_SCENE_M6_PARKEDHILLS_d RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_PARKEDHILLS_e") fScenePercent = 100 eReqScene = PR_SCENE_M6_PARKEDHILLS_e RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_DRIVING_a") fScenePercent = 100 eReqScene = PR_SCENE_M2_DRIVING_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M2_DRIVING_b") fScenePercent = 100 eReqScene = PR_SCENE_M2_DRIVING_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_a") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_b") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_c") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_d") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_d RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_e") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_e RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_f") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_f RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_g") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_g RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_DRIVING_h") fScenePercent = 100 eReqScene = PR_SCENE_M6_DRIVING_h RETURN TRUE BREAK
CASE HASH("PR_SCENE_M6_RONBORING") fScenePercent = 100 eReqScene = PR_SCENE_M6_RONBORING RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_RESTAURANT") fScenePercent = 100 eReqScene = PR_SCENE_M7_RESTAURANT RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_LOUNGECHAIRS") fScenePercent = 100 eReqScene = PR_SCENE_M7_LOUNGECHAIRS RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_BYESOLOMON_a") fScenePercent = 100 eReqScene = PR_SCENE_M7_BYESOLOMON_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_BYESOLOMON_b") fScenePercent = 100 eReqScene = PR_SCENE_M7_BYESOLOMON_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_WIFETENNIS") fScenePercent = 100 eReqScene = PR_SCENE_M7_WIFETENNIS RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_ROUNDTABLE") fScenePercent = 100 eReqScene = PR_SCENE_M7_ROUNDTABLE RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_REJECTENTRY") fScenePercent = 100 eReqScene = PR_SCENE_M7_REJECTENTRY RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_HOOKERS") fScenePercent = 100 eReqScene = PR_SCENE_M7_HOOKERS RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_EXITBARBER") fScenePercent = 100 eReqScene = PR_SCENE_M7_EXITBARBER RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_EXITFANCYSHOP") fScenePercent = 100 eReqScene = PR_SCENE_M7_EXITFANCYSHOP RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_FAKEYOGA") fScenePercent = 100 eReqScene = PR_SCENE_M7_FAKEYOGA RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_COFFEE") fScenePercent = 100 eReqScene = PR_SCENE_M7_COFFEE RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_GETSREADY") fScenePercent = 100 eReqScene = PR_SCENE_M7_GETSREADY RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_READSCRIPT") fScenePercent = 100 eReqScene = PR_SCENE_M7_READSCRIPT RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_EMPLOYEECONVO") fScenePercent = 100 eReqScene = PR_SCENE_M7_EMPLOYEECONVO RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_TALKTOGUARD") fScenePercent = 100 eReqScene = PR_SCENE_M7_TALKTOGUARD RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_LOT_JIMMY") fScenePercent = 100 eReqScene = PR_SCENE_M7_LOT_JIMMY RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_KIDS_TV") fScenePercent = 100 eReqScene = PR_SCENE_M7_KIDS_TV RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_KIDS_GAMING") fScenePercent = 100 eReqScene = PR_SCENE_M7_KIDS_GAMING RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_OPENDOORFORAMA") fScenePercent = 100 eReqScene = PR_SCENE_M7_OPENDOORFORAMA RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_DROPPINGOFFJMY") fScenePercent = 100 eReqScene = PR_SCENE_M7_DROPPINGOFFJMY RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_TRACEYEXITSCAR") fScenePercent = 100 eReqScene = PR_SCENE_M7_TRACEYEXITSCAR RETURN TRUE BREAK
CASE HASH("PR_SCENE_M7_BIKINGJIMMY") fScenePercent = 100 eReqScene = PR_SCENE_M7_BIKINGJIMMY RETURN TRUE BREAK
CASE HASH("PR_SCENE_M_S_FAMILY4") fScenePercent = 100 eReqScene = PR_SCENE_M_S_FAMILY4 RETURN TRUE BREAK
ENDSWITCH
SWITCH GET_HASH_KEY(sNamedSwitch) /* franklin */
CASE HASH("PR_SCENE_F0_SH_ASLEEP") fScenePercent = 100 eReqScene = PR_SCENE_F0_SH_ASLEEP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_SH_ASLEEP") fScenePercent = 100 eReqScene = PR_SCENE_F1_SH_ASLEEP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_NAPPING") fScenePercent = 100 eReqScene = PR_SCENE_F1_NAPPING RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_GETTINGREADY") fScenePercent = 100 eReqScene = PR_SCENE_F1_GETTINGREADY RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_SH_READING") fScenePercent = 100 eReqScene = PR_SCENE_F0_SH_READING RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_SH_READING") fScenePercent = 100 eReqScene = PR_SCENE_F1_SH_READING RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_SH_PUSHUP_a") fScenePercent = 100 eReqScene = PR_SCENE_F0_SH_PUSHUP_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_SH_PUSHUP_b") fScenePercent = 100 eReqScene = PR_SCENE_F0_SH_PUSHUP_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_SH_PUSHUP") fScenePercent = 100 eReqScene = PR_SCENE_F1_SH_PUSHUP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_POOLSIDE_a") fScenePercent = 100 eReqScene = PR_SCENE_F1_POOLSIDE_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_POOLSIDE_b") fScenePercent = 100 eReqScene = PR_SCENE_F1_POOLSIDE_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_CLEANINGAPT") fScenePercent = 100 eReqScene = PR_SCENE_F1_CLEANINGAPT RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_ONCELL") fScenePercent = 100 eReqScene = PR_SCENE_F1_ONCELL RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_SNACKING") fScenePercent = 100 eReqScene = PR_SCENE_F1_SNACKING RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_ONLAPTOP") fScenePercent = 100 eReqScene = PR_SCENE_F1_ONLAPTOP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_IRONING") fScenePercent = 100 eReqScene = PR_SCENE_F1_IRONING RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_WATCHINGTV") fScenePercent = 100 eReqScene = PR_SCENE_F1_WATCHINGTV RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_MD_KUSH_DOC") fScenePercent = 100 eReqScene = PR_SCENE_F_MD_KUSH_DOC RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_KUSH_DOC_a") fScenePercent = 100 eReqScene = PR_SCENE_F_KUSH_DOC_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_KUSH_DOC_b") fScenePercent = 100 eReqScene = PR_SCENE_F_KUSH_DOC_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_KUSH_DOC_c") fScenePercent = 100 eReqScene = PR_SCENE_F_KUSH_DOC_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_TANISHAFIGHT") fScenePercent = 100 eReqScene = PR_SCENE_F0_TANISHAFIGHT RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_NEWHOUSE") fScenePercent = 100 eReqScene = PR_SCENE_F1_NEWHOUSE RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_GARBAGE") fScenePercent = 100 eReqScene = PR_SCENE_F0_GARBAGE RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_GARBAGE") fScenePercent = 100 eReqScene = PR_SCENE_F1_GARBAGE RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_THROW_CUP") fScenePercent = 100 eReqScene = PR_SCENE_F_THROW_CUP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_HIT_CUP_HAND") fScenePercent = 100 eReqScene = PR_SCENE_F_HIT_CUP_HAND RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_GYM") fScenePercent = 100 eReqScene = PR_SCENE_F_GYM RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_WALKCHOP") fScenePercent = 100 eReqScene = PR_SCENE_F0_WALKCHOP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_PLAYCHOP") fScenePercent = 100 eReqScene = PR_SCENE_F0_PLAYCHOP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_PLAYCHOP") fScenePercent = 100 eReqScene = PR_SCENE_F1_PLAYCHOP RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_WALKCHOP_a") fScenePercent = 100 eReqScene = PR_SCENE_F_WALKCHOP_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_WALKCHOP_b") fScenePercent = 100 eReqScene = PR_SCENE_F_WALKCHOP_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_TRAFFIC_a") fScenePercent = 100 eReqScene = PR_SCENE_F_TRAFFIC_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_TRAFFIC_b") fScenePercent = 100 eReqScene = PR_SCENE_F_TRAFFIC_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_TRAFFIC_c") fScenePercent = 100 eReqScene = PR_SCENE_F_TRAFFIC_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_BIKE") fScenePercent = 100 eReqScene = PR_SCENE_F0_BIKE RETURN TRUE BREAK
CASE HASH("PR_SCENE_F0_CLEANCAR") fScenePercent = 100 eReqScene = PR_SCENE_F0_CLEANCAR RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_BIKE") fScenePercent = 100 eReqScene = PR_SCENE_F1_BIKE RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_CLEANCAR") fScenePercent = 100 eReqScene = PR_SCENE_F1_CLEANCAR RETURN TRUE BREAK
CASE HASH("PR_SCENE_F1_BYETAXI") fScenePercent = 100 eReqScene = PR_SCENE_F1_BYETAXI RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_BIKE_c") fScenePercent = 100 eReqScene = PR_SCENE_F_BIKE_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_BIKE_d") fScenePercent = 100 eReqScene = PR_SCENE_F_BIKE_d RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_LAMTAUNT_P1") fScenePercent = 100 eReqScene = PR_SCENE_F_LAMTAUNT_P1 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_LAMTAUNT_P3") fScenePercent = 100 eReqScene = PR_SCENE_F_LAMTAUNT_P3 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_LAMTAUNT_P5") fScenePercent = 100 eReqScene = PR_SCENE_F_LAMTAUNT_P5 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_CLUB") fScenePercent = 100 eReqScene = PR_SCENE_F_CLUB RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_CS_CHECKSHOE") fScenePercent = 100 eReqScene = PR_SCENE_F_CS_CHECKSHOE RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_CS_WIPEHANDS") fScenePercent = 100 eReqScene = PR_SCENE_F_CS_WIPEHANDS RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_CS_WIPERIGHT") fScenePercent = 100 eReqScene = PR_SCENE_F_CS_WIPERIGHT RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_LAMTAUNT_NIGHT") fScenePercent = 100 eReqScene = PR_SCENE_F_LAMTAUNT_NIGHT RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_BAR_a_01") fScenePercent = 100 eReqScene = PR_SCENE_F_BAR_a_01 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_BAR_b_01") fScenePercent = 100 eReqScene = PR_SCENE_F_BAR_b_01 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_BAR_c_02") fScenePercent = 100 eReqScene = PR_SCENE_F_BAR_c_02 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_BAR_d_02") fScenePercent = 100 eReqScene = PR_SCENE_F_BAR_d_02 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_BAR_e_01") fScenePercent = 100 eReqScene = PR_SCENE_F_BAR_e_01 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_S_EXILE2") fScenePercent = 100 eReqScene = PR_SCENE_F_S_EXILE2 RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_S_AGENCY_2A_a") fScenePercent = 100 eReqScene = PR_SCENE_F_S_AGENCY_2A_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_F_S_AGENCY_2A_b") fScenePercent = 100 eReqScene = PR_SCENE_F_S_AGENCY_2A_b RETURN TRUE BREAK
ENDSWITCH
SWITCH GET_HASH_KEY(sNamedSwitch) /* trevor */
#IF NOT IS_JAPANESE_BUILD
CASE HASH("PR_SCENE_T_SHIT") fScenePercent = 100 eReqScene = PR_SCENE_T_SHIT RETURN TRUE BREAK
#ENDIF
CASE HASH("PR_SCENE_T_SC_MOCKLAPDANCE") fScenePercent = 100 eReqScene = PR_SCENE_T_SC_MOCKLAPDANCE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_SC_BAR") fScenePercent = 100 eReqScene = PR_SCENE_T_SC_BAR RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_SC_CHASE") fScenePercent = 100 eReqScene = PR_SCENE_T_SC_CHASE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_STRIPCLUB_out") fScenePercent = 100 eReqScene = PR_SCENE_T_STRIPCLUB_out RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_ESCORTED_OUT") fScenePercent = 100 eReqScene = PR_SCENE_T_ESCORTED_OUT RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_CHATEAU_b") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_CHATEAU_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_CHATEAU_c") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_CHATEAU_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_CHATEAU_d") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_CHATEAU_d RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_GARBAGE_FOOD") fScenePercent = 100 eReqScene = PR_SCENE_T_GARBAGE_FOOD RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_THROW_FOOD") fScenePercent = 100 eReqScene = PR_SCENE_T_THROW_FOOD RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_SMOKEMETH") fScenePercent = 100 eReqScene = PR_SCENE_T_SMOKEMETH RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FIGHTBBUILD") fScenePercent = 100 eReqScene = PR_SCENE_T_FIGHTBBUILD RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_ANNOYSUNBATHERS") fScenePercent = 100 eReqScene = PR_SCENE_T_ANNOYSUNBATHERS RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_BLOCK_CAMERA") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_BLOCK_CAMERA RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_GUITARBEATDOWN") fScenePercent = 100 eReqScene = PR_SCENE_T_GUITARBEATDOWN RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_DOCKS_a") fScenePercent = 100 eReqScene = PR_SCENE_T_DOCKS_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_DOCKS_b") fScenePercent = 100 eReqScene = PR_SCENE_T_DOCKS_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_DOCKS_c") fScenePercent = 100 eReqScene = PR_SCENE_T_DOCKS_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_DOCKS_d") fScenePercent = 100 eReqScene = PR_SCENE_T_DOCKS_d RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_LINGERIE") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_LINGERIE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_FUNERAL") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_FUNERAL RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FIGHTBAR_a") fScenePercent = 100 eReqScene = PR_SCENE_T_FIGHTBAR_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FIGHTBAR_b") fScenePercent = 100 eReqScene = PR_SCENE_T_FIGHTBAR_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FIGHTBAR_c") fScenePercent = 100 eReqScene = PR_SCENE_T_FIGHTBAR_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_YELLATDOORMAN") fScenePercent = 100 eReqScene = PR_SCENE_T_YELLATDOORMAN RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FIGHTYAUCLUB_b") fScenePercent = 100 eReqScene = PR_SCENE_T_FIGHTYAUCLUB_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FIGHTCASINO") fScenePercent = 100 eReqScene = PR_SCENE_T_FIGHTCASINO RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_KONEIGHBOUR") fScenePercent = 100 eReqScene = PR_SCENE_T_KONEIGHBOUR RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_SCARETRAMP") fScenePercent = 100 eReqScene = PR_SCENE_T_SCARETRAMP RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_DUMPSTER") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_DUMPSTER RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_WAKETRASH_b") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_WAKETRASH_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_WAKEBEACH") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_WAKEBEACH RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_WAKEBARN") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_WAKEBARN RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_WAKETRAIN") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_WAKETRAIN RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_WAKEROOFTOP") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_WAKEROOFTOP RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_WAKEMOUNTAIN") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_WAKEMOUNTAIN RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_ALLEYDRUNK") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_ALLEYDRUNK RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_SC_ALLEYDRUNK") fScenePercent = 100 eReqScene = PR_SCENE_T_SC_ALLEYDRUNK RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_PUKEINTOFOUNT") fScenePercent = 100 eReqScene = PR_SCENE_T_PUKEINTOFOUNT RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_PARK_b") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_PARK_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_POLICE_a") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_POLICE_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_POLICE_b") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_POLICE_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_POLICE_c") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_POLICE_c RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_NAKED_BRIDGE") fScenePercent = 100 eReqScene = PR_SCENE_T_NAKED_BRIDGE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_NAKED_GARDEN") fScenePercent = 100 eReqScene = PR_SCENE_T_NAKED_GARDEN RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_NAKED_ISLAND") fScenePercent = 100 eReqScene = PR_SCENE_T_NAKED_ISLAND RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_CHASECAR_a") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_CHASECAR_a RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_CHASECAR_b") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_CHASECAR_b RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_CHASEBIKE") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_CHASEBIKE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_CHASESCOOTER") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_CHASESCOOTER RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_BRIDGEDROP") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_BRIDGEDROP RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_RUDEATCAFE") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_RUDEATCAFE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CR_RAND_TEMPLE") fScenePercent = 100 eReqScene = PR_SCENE_T_CR_RAND_TEMPLE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_UNDERPIER") fScenePercent = 100 eReqScene = PR_SCENE_T_UNDERPIER RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_DRUNKHOWLING") fScenePercent = 100 eReqScene = PR_SCENE_T_DRUNKHOWLING RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_SC_DRUNKHOWLING") fScenePercent = 100 eReqScene = PR_SCENE_T_SC_DRUNKHOWLING RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDSAVEHOUSE") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDSAVEHOUSE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDSPOON_A") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDSPOON_A RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDSPOON_B") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDSPOON_B RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDSPOON_B2") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDSPOON_B2 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDSPOON_A2") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDSPOON_A2 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYD_BEAR") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYD_BEAR RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYD_DOLL") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYD_DOLL RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDPINEAPPLE") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDPINEAPPLE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDCRYING_A") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDCRYING_A RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDCRYING_E0") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDCRYING_E0 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDCRYING_E1") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDCRYING_E1 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDCRYING_E2") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDCRYING_E2 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLOYDCRYING_E3") fScenePercent = 100 eReqScene = PR_SCENE_T_FLOYDCRYING_E3 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_SMOKECRYSTAL") fScenePercent = 100 eReqScene = PR_SCENE_T6_SMOKECRYSTAL RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_METHLAB") fScenePercent = 100 eReqScene = PR_SCENE_T6_METHLAB RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_HUNTING1") fScenePercent = 100 eReqScene = PR_SCENE_T6_HUNTING1 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_HUNTING2") fScenePercent = 100 eReqScene = PR_SCENE_T6_HUNTING2 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_HUNTING3") fScenePercent = 100 eReqScene = PR_SCENE_T6_HUNTING3 RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_TRAF_AIR") fScenePercent = 100 eReqScene = PR_SCENE_T6_TRAF_AIR RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_DIGGING") fScenePercent = 100 eReqScene = PR_SCENE_T6_DIGGING RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_FLUSHESFOOT") fScenePercent = 100 eReqScene = PR_SCENE_T6_FLUSHESFOOT RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_CN_PIER") fScenePercent = 100 eReqScene = PR_SCENE_T_CN_PIER RETURN TRUE BREAK
CASE HASH("PR_SCENE_T6_LAKE") fScenePercent = 100 eReqScene = PR_SCENE_T6_LAKE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_FLYING_PLANE") fScenePercent = 100 eReqScene = PR_SCENE_T_FLYING_PLANE RETURN TRUE BREAK
CASE HASH("PR_SCENE_T_HEADINSINK") fScenePercent = 100 eReqScene = PR_SCENE_T_HEADINSINK RETURN TRUE BREAK
#IF NOT IS_JAPANESE_BUILD
CASE HASH("PR_SCENE_T_JERKOFF") fScenePercent = 100 eReqScene = PR_SCENE_T_JERKOFF RETURN TRUE BREAK
#ENDIF
ENDSWITCH
CASSERTLN(DEBUG_SWITCH, "command like arg \"sc_ForceNamedSwitch\" called with unknown param \"", sNamedSwitch, "\"")
ENDIF
#ENDIF //#1508299
BOOL bDescentOnlyScene = FALSE
IF (ePed >= CHAR_MULTIPLAYER)
CPRINTLN(DEBUG_SWITCH, "PR_SCENE_INVALID for (ePed >= CHAR_MULTIPLAYER)")
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF g_bMagDemoActive
// SWITCH ePed
// CASE CHAR_MICHAEL
// fScenePercent = 100
// eReqScene = PR_SCENE_M_MD_FBI2
// RETURN (eReqScene <> PR_SCENE_INVALID)
// BREAK
// CASE CHAR_FRANKLIN
// fScenePercent = 100
// eReqScene = PR_SCENE_F_MD_KUSH_DOC //PR_SCENE_F_KUSH_DOC_a
// RETURN (eReqScene <> PR_SCENE_INVALID)
// BREAK
// CASE CHAR_TREVOR
// fScenePercent = 100
// eReqScene = PR_SCENE_T_SHIT
// RETURN (eReqScene <> PR_SCENE_INVALID)
// BREAK
// ENDSWITCH
SWITCH ePed
CASE CHAR_MICHAEL
fScenePercent = 100
eReqScene = PR_SCENE_M4_EXITRESTAURANT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_FRANKLIN
fScenePercent = 100
eReqScene = PR_SCENE_F_MD_FRANKLIN2
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_TREVOR
fScenePercent = 100
eReqScene = PR_SCENE_T_NAKED_ISLAND
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
ENDSWITCH
ENDIF
IF NOT bDescentOnlyScene
//if is player char dead
CONST_INT iNUMBER_OF_HOURS_DEAD 6
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_DEAD)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed], iNUMBER_OF_HOURS_DEAD)
fScenePercent = 100
eReqScene = PR_SCENE_HOSPITAL
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_INVALID
ENDIF
ENDIF
IF NOT bBypassDefaultSwitch
IF NOT IS_PED_THE_CURRENT_PLAYER_PED(ePed)
IF IsCharPresentInWorld(ePed)
SWITCH ePed
CASE CHAR_MICHAEL
fScenePercent = 100
eReqScene = PR_SCENE_M_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_FRANKLIN
fScenePercent = 100
eReqScene = PR_SCENE_F_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_TREVOR
fScenePercent = 100
eReqScene = PR_SCENE_T_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
ENDSWITCH
ENDIF
IF NOT IS_PLAYER_PED_AVAILABLE(ePed)
SWITCH ePed
CASE CHAR_MICHAEL
BREAK
CASE CHAR_FRANKLIN
BREAK
CASE CHAR_TREVOR
BREAK
ENDSWITCH
CASSERTLN(DEBUG_SWITCH, "PR_SCENE_INVALID for IS_PLAYER_PED_AVAILABLE ", GET_PLAYER_PED_STRING(ePed), ")???")
eReqScene = PR_SCENE_INVALID
fScenePercent = -1
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ELSE
IF NOT ARE_STRINGS_EQUAL(GET_THIS_SCRIPT_NAME(), "debug")
CPRINTLN(GET_THIS_SCRIPT_NAME(), ": PR_SCENE_INVALID for IS_PED_THE_CURRENT_PLAYER_PED")
ENDIF
// eReqScene = PR_SCENE_INVALID
// fScenePercent = -1
// RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ELSE
CPRINTLN(DEBUG_SWITCH, "bBypassDefaultSwitch is true...")
ENDIF
//pre-mission switches forced if mission is available
SWITCH ePed
CASE CHAR_MICHAEL
// #1293475 temp comment out for Les [#784198]
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_4)
fScenePercent = 100
eReqScene = PR_SCENE_M_S_FAMILY4
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
BREAK
CASE CHAR_FRANKLIN
//
IF IS_MISSION_AVAILABLE(SP_MISSION_EXILE_2) //574569
#IF USE_TU_CHANGES
//Fix for 1654538. Don't attempt to switch into Exile2 if the mission's trigger has a leave area flag set.
AND NOT g_sMissionActiveData[SP_MISSION_EXILE_2].leaveArea
#ENDIF
fScenePercent = 100
eReqScene = PR_SCENE_F_S_EXILE2
RETURN (eReqScene <> PR_SCENE_INVALID)
#IF USE_TU_CHANGES
ELIF IS_MISSION_AVAILABLE(SP_MISSION_EXILE_2)
//Fix for 1654538. If we have denied this mission switch due to a leave area flag,
//also clear Franklin's last known location to force a switch scene.
g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed] = <<0,0,0>>
#ENDIF
ENDIF
//AGENCY_HEIST_2A,2B,2C have been reduced down to AGENCY_HEIST_2. Commented out for now.
//PLEASE REVIEW THIS CHANGE. Ben R
IF IS_MISSION_AVAILABLE(SP_HEIST_AGENCY_2)
fScenePercent = 100
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_AGENCY_2_AUTOTRIGGERED)
eReqScene = PR_SCENE_F_S_AGENCY_2A_a
ELSE
eReqScene = PR_SCENE_F_S_AGENCY_2A_b
ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF IS_MISSION_AVAILABLE(SP_HEIST_AGENCY_2B)
// fScenePercent = 100
// eReqScene = PR_SCENE_F_S_AGENCY_2B
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF IS_MISSION_AVAILABLE(SP_HEIST_AGENCY_2C)
// fScenePercent = 100
// eReqScene = PR_SCENE_F_S_AGENCY_2C
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
BREAK
CASE CHAR_TREVOR
//
BREAK
ENDSWITCH
//should the override switch scene be used?
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_M_OVERRIDE)
fScenePercent = 100
eReqScene = PR_SCENE_M_OVERRIDE
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_F_OVERRIDE)
fScenePercent = 100
eReqScene = PR_SCENE_F_OVERRIDE
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_T_OVERRIDE)
fScenePercent = 100
eReqScene = PR_SCENE_T_OVERRIDE
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
//should the next scene be a mission scene??
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_ARM3, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FAMILY1, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FAMILY3, eReqScene, fScenePercent, sPedScene, sPassedScene)
// #IF IS_DEBUG_BUILD
// SAVE_STRING_TO_DEBUG_FILE("SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FAMILY3, eReqScene, fScenePercent, sPedScene, sPassedScene)")
// SAVE_NEWLINE_TO_DEBUG_FILE()
// #ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FBI1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FBI2, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FBI2, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FAMILY1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FBI4intro, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FBI4intro, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FBI4, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FBI4, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FBI5, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[2]
FLOAT fPercentArray[2]
eRequestArray[0] = PR_SCENE_M4_WASHFACE fPercentArray[0] = 90.0
eRequestArray[1] = PR_SCENE_M4_WATCHINGTV fPercentArray[1] = 10.0
IF GetDesiredPedRequestSceneFromArray(CHAR_MICHAEL,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ma_FBI5), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_MICHAEL, PR_SCENE_Ma_FBI5,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FBI3, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FBI4, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FBI5, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FBI5, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FAMILY4_a, eReqScene, fScenePercent, sPedScene, sPassedScene)
//
// CONST_INT iNumOfMinutes 10
// IF HasNumOfMinutesPassedSincePedTimeStruct(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed], iNumOfMinutes)
// IF UpdatePostMissionInfo(g_savedGlobals.sPlayerData.sInfo, ePed, PR_SCENE_Ma_FAMILY4_b)
//
// fScenePercent = 100
// eReqScene = g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed]
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// ENDIF
//
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FAMILY4_b, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FAMILY4, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_NICE1B, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_AGENCY1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_AGENCYprep1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_AGENCY3B, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_AGENCY2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_AGENCY3A, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_CARSTEAL1, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_CARSTEAL1, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_CARSTEAL1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_CARSTEAL1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_AGENCY2, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_CARSTEAL2, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FBI2, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[3]
FLOAT fPercentArray[3]
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_FRANKLIN_1)
eRequestArray[0] = PR_SCENE_F0_WALKCHOP fPercentArray[0] = 80.0
eRequestArray[1] = PR_SCENE_F0_SH_READING fPercentArray[1] = 10.0
eRequestArray[2] = PR_SCENE_F0_BIKE fPercentArray[2] = 10.0
ELSE
eRequestArray[0] = PR_SCENE_F_BAR_c_02 fPercentArray[0] = 30.0
eRequestArray[1] = PR_SCENE_F_LAMTAUNT_P3 fPercentArray[1] = 40.0
eRequestArray[2] = PR_SCENE_F_BAR_e_01 fPercentArray[2] = 30.0
ENDIF
ELSE
eRequestArray[0] = PR_SCENE_F1_PLAYCHOP fPercentArray[0] = 80.0
eRequestArray[1] = PR_SCENE_F1_SH_READING fPercentArray[1] = 10.0
eRequestArray[2] = PR_SCENE_F1_BIKE fPercentArray[2] = 10.0
ENDIF
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene, TRUE)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_FBI2), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_FBI2,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FBI4, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[4]
FLOAT fPercentArray[4]
eRequestArray[0] = PR_SCENE_T_KONEIGHBOUR fPercentArray[0] = 85.0
eRequestArray[1] = PR_SCENE_T_THROW_FOOD fPercentArray[1] = 5.0
eRequestArray[2] = PR_SCENE_T_GUITARBEATDOWN fPercentArray[2] = 5.0
eRequestArray[3] = PR_SCENE_T_CR_BLOCK_CAMERA fPercentArray[3] = 5.0
IF GetDesiredPedRequestSceneFromArray(CHAR_TREVOR,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ta_FBI4), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_TREVOR, PR_SCENE_Ta_FBI4,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_DOCKS2B, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[6]
FLOAT fPercentArray[6]
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
eRequestArray[0] = PR_SCENE_F_THROW_CUP fPercentArray[0] = 80.0
eRequestArray[1] = PR_SCENE_F_BAR_c_02 fPercentArray[1] = 10.0
eRequestArray[2] = PR_SCENE_F_LAMTAUNT_P1 fPercentArray[2] = 2.5
eRequestArray[3] = PR_SCENE_F_LAMTAUNT_P3 fPercentArray[3] = 2.5
eRequestArray[4] = PR_SCENE_F_LAMTAUNT_P5 fPercentArray[4] = 2.5
eRequestArray[3] = PR_SCENE_F_GYM fPercentArray[3] = 2.5
ELSE
eRequestArray[0] = PR_SCENE_F1_CLEANCAR fPercentArray[0] = 80.0
eRequestArray[1] = PR_SCENE_F1_SH_READING fPercentArray[1] = 10.0
eRequestArray[2] = PR_SCENE_F1_BIKE fPercentArray[2] = 2.5
eRequestArray[3] = PR_SCENE_F1_PLAYCHOP fPercentArray[3] = 2.5
eRequestArray[4] = PR_SCENE_F1_NEWHOUSE fPercentArray[4] = 2.5
eRequestArray[5] = PR_SCENE_F_GYM fPercentArray[5] = 2.5
ENDIF
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_DOCKS2B), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_DOCKS2B,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FAMILY6, eReqScene, fScenePercent, sPedScene, sPassedScene)
//#944265 & 1031378
PED_REQUEST_SCENE_ENUM eRequestArray[1]
FLOAT fPercentArray[1]
eRequestArray[0] = PR_SCENE_T_NAKED_ISLAND fPercentArray[0] = 100.0
IF GetDesiredPedRequestSceneFromArray(CHAR_TREVOR,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ta_FAMILY6), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_TREVOR, PR_SCENE_Ta_FAMILY6,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FINALEprepD, eReqScene, fScenePercent, sPedScene, sPassedScene)
//#1582249
PED_REQUEST_SCENE_ENUM eRequestArray[4]
FLOAT fPercentArray[4]
eRequestArray[0] = PR_SCENE_T_HEADINSINK fPercentArray[0] = 80.0
eRequestArray[1] = PR_SCENE_T6_FLUSHESFOOT fPercentArray[1] = 10.0
eRequestArray[2] = PR_SCENE_T6_SMOKECRYSTAL fPercentArray[2] = 10.0
#IF NOT IS_JAPANESE_BUILD
eRequestArray[3] = PR_SCENE_T_SHIT fPercentArray[3] = 10.0
#ENDIF
#IF IS_JAPANESE_BUILD
eRequestArray[3] = PR_SCENE_T_SMOKEMETH fPercentArray[3] = 10.0
#ENDIF
IF GetDesiredPedRequestSceneFromArray(CHAR_TREVOR,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ta_FINALEprepD), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_TREVOR, PR_SCENE_Ta_FINALEprepD,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FAMILY6, eReqScene, fScenePercent, sPedScene, sPassedScene)
//#1286223
PED_REQUEST_SCENE_ENUM eRequestArray[2]
FLOAT fPercentArray[2]
eRequestArray[0] = PR_SCENE_M7_ROUNDTABLE fPercentArray[0] = 50.0
eRequestArray[1] = PR_SCENE_M7_KIDS_TV fPercentArray[1] = 50.0
IF GetDesiredPedRequestSceneFromArray(CHAR_MICHAEL,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ma_FAMILY6), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_MICHAEL, PR_SCENE_Ma_FAMILY6,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_MARTIN1, eReqScene, fScenePercent, sPedScene, sPassedScene)
//#944265
PED_REQUEST_SCENE_ENUM eRequestArray[3]
FLOAT fPercentArray[3]
eRequestArray[0] = PR_SCENE_F1_NEWHOUSE fPercentArray[0] = 50.0
eRequestArray[1] = PR_SCENE_F_WALKCHOP_a fPercentArray[1] = 25.0
eRequestArray[2] = PR_SCENE_F_WALKCHOP_b fPercentArray[2] = 25.0
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_MARTIN1), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_MARTIN1,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_TREVOR3, eReqScene, fScenePercent, sPedScene, sPassedScene)
//#944265
PED_REQUEST_SCENE_ENUM eRequestArray[3]
FLOAT fPercentArray[3]
eRequestArray[0] = PR_SCENE_M_POOLSIDE_a fPercentArray[0] = 50.0
eRequestArray[1] = PR_SCENE_M4_WATCHINGTV fPercentArray[1] = 50.0
eRequestArray[2] = PR_SCENE_M4_WASHFACE fPercentArray[1] = 50.0
IF GetDesiredPedRequestSceneFromArray(CHAR_MICHAEL,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ma_TREVOR3), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_MICHAEL, PR_SCENE_Ma_TREVOR3,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_TREVOR3, eReqScene, fScenePercent, sPedScene, sPassedScene)
//#944265
PED_REQUEST_SCENE_ENUM eRequestArray[2]
FLOAT fPercentArray[2]
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
eRequestArray[0] = PR_SCENE_F0_CLEANCAR fPercentArray[0] = 50.0
eRequestArray[1] = PR_SCENE_F0_SH_READING fPercentArray[1] = 50.0
ELSE
eRequestArray[0] = PR_SCENE_F1_CLEANCAR fPercentArray[0] = 50.0
eRequestArray[1] = PR_SCENE_F1_SH_READING fPercentArray[1] = 50.0
ENDIF
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_TREVOR3), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_TREVOR3,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FRANKLIN2, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FRANKLIN2, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FBI1end, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_MARTIN1, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_MARTIN1, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_RURAL2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
//#944265
PED_REQUEST_SCENE_ENUM eRequestArray[4]
FLOAT fPercentArray[4]
eRequestArray[0] = PR_SCENE_T_HEADINSINK fPercentArray[0] = 80.0
eRequestArray[1] = PR_SCENE_T_SMOKEMETH fPercentArray[1] = 10.0
eRequestArray[2] = PR_SCENE_T6_SMOKECRYSTAL fPercentArray[2] = 10.0
#IF NOT IS_JAPANESE_BUILD
eRequestArray[3] = PR_SCENE_T_SHIT fPercentArray[3] = 10.0
#ENDIF
IF GetDesiredPedRequestSceneFromArray(CHAR_TREVOR,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene, TRUE)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ta_RURAL2A), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_TREVOR, PR_SCENE_Ta_RURAL2A,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_RURAL2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_RC_MRSP2, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_RURAL1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_NICE2B, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_NICE2B, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_FTa_FRANKLIN1a, eReqScene, fScenePercent, sPedScene, sPassedScene)
// OR SchedulePostMissionSpecificScene(ePed, PR_SCENE_FTa_FRANKLIN1b, eReqScene, fScenePercent, sPedScene, sPassedScene)
OR SchedulePostMissionSpecificScene(ePed, PR_SCENE_FTa_FRANKLIN1c, eReqScene, fScenePercent, sPedScene, sPassedScene)
OR SchedulePostMissionSpecificScene(ePed, PR_SCENE_FTa_FRANKLIN1d, eReqScene, fScenePercent, sPedScene, sPassedScene)
OR SchedulePostMissionSpecificScene(ePed, PR_SCENE_FTa_FRANKLIN1e, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[5-1]
FLOAT fPercentArray[5-1]
SWITCH g_ePostFranklin1Switch
CASE POST_FRANKLIN1_0_escapePoliceAlone
//#1015706
eRequestArray[0] = PR_SCENE_FTa_FRANKLIN1a fPercentArray[0] = 25.0
eRequestArray[1] = PR_SCENE_FTa_FRANKLIN1c fPercentArray[1] = 25.0
eRequestArray[2] = PR_SCENE_FTa_FRANKLIN1d fPercentArray[3-1] = 25.0
eRequestArray[3] = PR_SCENE_FTa_FRANKLIN1e fPercentArray[4-1] = 25.0
IF GetDesiredPedRequestSceneFromArray(ePed,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_FTa_FRANKLIN1a), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " //0_escapePoliceAlone")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
BREAK
CASE POST_FRANKLIN1_1_TrevorStripclub
IF GET_RANDOM_BOOL()
eReqScene = PR_SCENE_T_SC_BAR
fScenePercent = 50.0
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_FTa_FRANKLIN1a), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " //1_TrevorStripclub")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
eReqScene = PR_SCENE_T_SC_DRUNKHOWLING
fScenePercent= 50.0
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_FTa_FRANKLIN1a), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " //1_TrevorStripclub")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
BREAK
CASE POST_FRANKLIN1_2_Frank
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
IF GET_RANDOM_BOOL()
eReqScene = PR_SCENE_F0_SH_READING
fScenePercent = 50.0
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_FTa_FRANKLIN1a), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " //2_Frank")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
eReqScene = PR_SCENE_F0_SH_PUSHUP_a
fScenePercent= 50.0
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_FTa_FRANKLIN1a), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " //2_Frank")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ELSE
IF GET_RANDOM_BOOL()
eReqScene = PR_SCENE_F_BAR_a_01
fScenePercent = 50.0
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_FTa_FRANKLIN1a), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " //2_Frank (allow safehouse)")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ELSE
eReqScene = PR_SCENE_F_BAR_b_01
fScenePercent= 50.0
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_FTa_FRANKLIN1a), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene), " //2_Frank (ignore safehouse)")
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
BREAK
DEFAULT
BREAK
ENDSWITCH
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FRANKLIN2, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FRANKLIN2, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_EXILE2, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[2]
FLOAT fPercentArray[2]
eRequestArray[0] = PR_SCENE_M6_MORNING_a fPercentArray[0] = 95.0
eRequestArray[1] = PR_SCENE_M6_DRINKINGBEER fPercentArray[1] = 5.0
IF GetDesiredPedRequestSceneFromArray(CHAR_MICHAEL,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ma_EXILE2), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_MICHAEL, PR_SCENE_Ma_EXILE2,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_EXILE2, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_EXILE3, eReqScene, fScenePercent, sPedScene, sPassedScene, 3.0)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_EXILE3, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_MICHAEL2, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_MICHAEL2, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_MICHAEL3, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_MICHAEL3, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_DOCKS2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_DOCKS2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FINALE1, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[5]
FLOAT fPercentArray[5]
eRequestArray[0] = PR_SCENE_F1_ONLAPTOP fPercentArray[0] = 10.0
eRequestArray[1] = PR_SCENE_F1_IRONING fPercentArray[1] = 5.0
eRequestArray[2] = PR_SCENE_F1_SNACKING fPercentArray[2] = 75.0
eRequestArray[3] = PR_SCENE_F1_SH_READING fPercentArray[3] = 5.0
eRequestArray[4] = PR_SCENE_F1_NEWHOUSE fPercentArray[4] = 5.0
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene, TRUE)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_FINALE1), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_FINALE1,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FINALE1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_CARSTEAL4, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FINALE2intro, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FINALE2intro, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_DOCKS2B, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FINALE1, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_AGENCY3A, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FINALE2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[3]
FLOAT fPercentArray[3]
eRequestArray[0] = PR_SCENE_M4_WASHFACE fPercentArray[0] = 40.0
eRequestArray[1] = PR_SCENE_M4_WATCHINGTV fPercentArray[1] = 60.0
eRequestArray[2] = PR_SCENE_INVALID fPercentArray[2] = 0.0
IF GetDesiredPedRequestSceneFromArray(CHAR_MICHAEL,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene, TRUE)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ma_FINALE2A), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_MICHAEL, PR_SCENE_Ma_FINALE2A,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FINALE2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FINALE2B, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FINALE2B, eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FINALEA, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[2]
FLOAT fPercentArray[2]
eRequestArray[0] = PR_SCENE_F1_POOLSIDE_b fPercentArray[0] = 95.0
eRequestArray[1] = PR_SCENE_F1_BYETAXI fPercentArray[1] = 5.0
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_FINALEA), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_FINALEA,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FINALEB, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[2]
FLOAT fPercentArray[2]
eRequestArray[0] = PR_SCENE_F1_POOLSIDE_b fPercentArray[0] = 95.0
eRequestArray[1] = PR_SCENE_F1_BYETAXI fPercentArray[1] = 5.0
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_FINALEB), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_FINALEB,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_FINALEC, eReqScene, fScenePercent, sPedScene, sPassedScene)
AND (GetMichaelScheduleStage() = MSS_M7_ReunitedWithFamily)
PED_REQUEST_SCENE_ENUM eRequestArray[4]
FLOAT fPercentArray[4]
eRequestArray[0] = PR_SCENE_M7_WIFETENNIS fPercentArray[0] = 85.0
eRequestArray[1] = PR_SCENE_M7_ROUNDTABLE fPercentArray[1] = 5.0
eRequestArray[2] = PR_SCENE_M7_KIDS_TV fPercentArray[2] = 5.0
eRequestArray[3] = PR_SCENE_M7_GETSREADY fPercentArray[3] = 5.0
IF GetDesiredPedRequestSceneFromArray(CHAR_MICHAEL,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Ma_FINALEC), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_MICHAEL, PR_SCENE_Ma_FINALEC,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_FINALEC, eReqScene, fScenePercent, sPedScene, sPassedScene)
PED_REQUEST_SCENE_ENUM eRequestArray[5]
FLOAT fPercentArray[5]
eRequestArray[0] = PR_SCENE_F1_BYETAXI fPercentArray[0] = 95.0
eRequestArray[1] = PR_SCENE_F1_POOLSIDE_b fPercentArray[1] = 2.0
eRequestArray[2] = PR_SCENE_F1_POOLSIDE_a fPercentArray[2] = 1.0
eRequestArray[3] = PR_SCENE_F1_WATCHINGTV fPercentArray[3] = 1.0
eRequestArray[4] = PR_SCENE_F_BAR_c_02 fPercentArray[4] = 1.0
IF GetDesiredPedRequestSceneFromArray(CHAR_FRANKLIN,
eRequestArray, fPercentArray, eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_SWITCH, "SchedulePostMissionSpecificScene(", Get_String_From_Ped_Request_Scene_Enum(PR_SCENE_Fa_FINALEC), ") chose ", Get_String_From_Ped_Request_Scene_Enum(eReqScene))
#ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
IF FallenThroughPostMissionScene(CHAR_FRANKLIN, PR_SCENE_Fa_FINALEC,
eReqScene, fScenePercent, sPedScene, sPassedScene)
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ta_FINALE2A, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Ma_SOLOMON4, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
// IF SchedulePostMissionSpecificScene(ePed, PR_SCENE_Fa_SOLOMON4, eReqScene, fScenePercent, sPedScene, sPassedScene)
// RETURN (eReqScene <> PR_SCENE_INVALID)
// ENDIF
//was the friend active in the last game-hour
TIMEOFDAY sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT bBypassDefaultSwitch
IF NOT ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed], <<0,0,0>>, 1.5)
IF NOT HasNumOfHoursPassedSincePedTimeStruct(sLastTimeActive, 3)
IF PassedBlimpCheckOnLastAndNext(ePed)
SWITCH ePed
CASE CHAR_MICHAEL
fScenePercent = 100
eReqScene = PR_SCENE_M_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_FRANKLIN
fScenePercent = 100
eReqScene = PR_SCENE_F_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_TREVOR
fScenePercent = 100
eReqScene = PR_SCENE_T_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//should the next scene be a mission scene??
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_PHONECALL_ARM3)
IF NOT PRIVATE_Is_PedRequest_TooCloseToCurrentPlayer(PR_SCENE_Fa_PHONECALL_ARM3, bDescentOnlyScene, 150.0)
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_ARM3_STRIPCLUB_SWITCH_AVAILABLE)
fScenePercent = 100
eReqScene = PR_SCENE_Fa_PHONECALL_ARM3
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed])
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_INVALID
ENDIF
ENDIF
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_PHONECALL_FAM1)
IF NOT PRIVATE_Is_PedRequest_TooCloseToCurrentPlayer(PR_SCENE_Fa_PHONECALL_FAM1, bDescentOnlyScene, 150.0)
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_ARM3_STRIPCLUB_SWITCH_AVAILABLE)
fScenePercent = 100
eReqScene = PR_SCENE_Fa_PHONECALL_FAM1
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed])
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_INVALID
ENDIF
ENDIF
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_PHONECALL_FAM3)
IF NOT PRIVATE_Is_PedRequest_TooCloseToCurrentPlayer(PR_SCENE_Fa_PHONECALL_FAM3, bDescentOnlyScene, 150.0)
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_ARM3_STRIPCLUB_SWITCH_AVAILABLE)
fScenePercent = 100
eReqScene = PR_SCENE_Fa_PHONECALL_FAM3
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDIF
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed])
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_INVALID
ENDIF
ENDIF
IF (g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_Fa_EXILE3)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_5)
CLEAR_TIMEOFDAY(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed])
g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[ePed] = PR_SCENE_INVALID
ENDIF
ENDIF
SWITCH ePed
CASE CHAR_MICHAEL
GetMichaelSceneForCurrentTime(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
BREAK
CASE CHAR_FRANKLIN
GetFranklinSceneForCurrentTime(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
BREAK
CASE CHAR_TREVOR
GetTrevorSceneForCurrentTime(eReqScene, fScenePercent, sPedScene, sPassedScene, bDescentOnlyScene)
BREAK
ENDSWITCH
IF (eReqScene = PR_SCENE_INVALID)
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 str
str =("invalid switch schedule(")
str +=(GET_PLAYER_PED_STRING(ePed))
str +=(", ")
str +=(PRIVATE_Get_Switch_Clock_Hours())
str +=(":")
str +=(PRIVATE_Get_Switch_Clock_Minutes())
str +=(")")
CPRINTLN(DEBUG_SWITCH, "GET_PLAYER_PED_SCENE_FOR_CURRENT_TIME(", str, ")")
g_bDebugPrint_SceneScheduleInfo = TRUE
CASSERTLN(DEBUG_SWITCH, str)
#ENDIF
IF NOT Is_TIMEOFDAY_Valid(g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed])
g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed] = GET_CURRENT_TIMEOFDAY()
ENDIF
IF ARE_VECTORS_ALMOST_EQUAL(g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed], <<0,0,0>>, 1.5)
g_savedGlobals.sPlayerData.sInfo.vLastKnownCoords[ePed] = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
g_savedGlobals.sPlayerData.sInfo.fLastKnownHead[ePed] = GET_ENTITY_HEADING(PLAYER_PED_ID())
ENDIF
SWITCH ePed
CASE CHAR_MICHAEL
CASSERTLN(DEBUG_SWITCH, "Michael - \"invalid switch!!!!\"")
fScenePercent = 100
eReqScene = PR_SCENE_M_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_FRANKLIN
CASSERTLN(DEBUG_SWITCH, "Franklin - \"invalid switch!!!!\"")
fScenePercent = 100
eReqScene = PR_SCENE_F_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
CASE CHAR_TREVOR
CASSERTLN(DEBUG_SWITCH, "Trevor - \"invalid switch!!!!\"")
fScenePercent = 100
eReqScene = PR_SCENE_T_DEFAULT
RETURN (eReqScene <> PR_SCENE_INVALID)
BREAK
ENDSWITCH
ENDIF
RETURN (eReqScene <> PR_SCENE_INVALID)
ENDFUNC
FUNC INT PRIVATE_GetRoamingLastKnownSwitchStage(enumCharacterList sceneCharID, TIMEOFDAY sLastTimeActive, FLOAT &fCreateDistMultiplier)
INT iSeconds, iMinutes, iHours, iDays, iMonths, iYears
GET_DIFFERENCE_BETWEEN_NOW_AND_TIMEOFDAY(sLastTimeActive, iSeconds, iMinutes, iHours, iDays, iMonths, iYears)
fCreateDistMultiplier = TO_FLOAT(iSeconds+(iMinutes*60)+(iHours*60*60)) / 3600.0
IF (fCreateDistMultiplier < 0.0) fCreateDistMultiplier = 0.0 ENDIF
IF (fCreateDistMultiplier > 1.0) fCreateDistMultiplier = 1.0 ENDIF
IF fCreateDistMultiplier < 0.25
AND NOT g_sDefaultPlayerSwitchState[sceneCharID].bVehicleCoordForced
RETURN 0
ELIF fCreateDistMultiplier < 0.5
RETURN 1
ELIF fCreateDistMultiplier < 0.75
RETURN 2
ELSE
RETURN 3
ENDIF
ENDFUNC