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

3739 lines
137 KiB
XML
Executable File

USING "flow_public_core_override.sch"
USING "player_scene_schedule.sch"
///private header for family task control scripts
/// alwyn.roberts@rockstarnorth.com
///
FUNC BOOL HasTimeToWaitPassedFromLastPassedMission(FLOAT fSecondsToWait)
IF (g_iLastMissionPassedGameTime < 0)
RETURN FALSE
ENDIF
INT iGameTime = GET_GAME_TIMER()
IF (iGameTime < (g_iLastMissionPassedGameTime+ROUND(fSecondsToWait*1000.0)))
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyMember_Have_MichaelSofa_Event(enumFamilyMember eFamilyMember)
IF IS_MISSION_AVAILABLE(SP_MISSION_TREVOR_1)
RETURN TRUE
ENDIF
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
IF g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M2_SON_watching_TV
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M7_SON_watching_TV_with_tracey
RETURN TRUE
ENDIF
BREAK
CASE FM_MICHAEL_DAUGHTER
IF g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_workout_with_mp3
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_walks_to_room_music
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_dancing_practice
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_watching_TV_sober
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_watching_TV_drunk
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_crying_over_a_guy
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M7_SON_watching_TV_with_tracey
RETURN TRUE
ENDIF
BREAK
CASE FM_MICHAEL_WIFE
IF g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M2_WIFE_in_face_mask
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M7_WIFE_in_face_mask
// OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_getting_nails_done
// OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_getting_botox_done
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M2_WIFE_passed_out_SOFA
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M7_WIFE_passed_out_SOFA
RETURN TRUE
ENDIF
BREAK
// CASE FM_MICHAEL_MEXMAID
// IF g_eCurrentFamilyEvent[FM_MICHAEL_MEXMAID] = FE_M_MEXMAID_watching_TV
// RETURN TRUE
// ENDIF
// BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_MichaelLivingroom(enumFamilyMember eFamilyMember)
IF (eFamilyMember <> FM_MICHAEL_SON)
IF PRIVATE_Does_FamilyMember_Have_MichaelSofa_Event(FM_MICHAEL_SON)
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_DAUGHTER)
IF PRIVATE_Does_FamilyMember_Have_MichaelSofa_Event(FM_MICHAEL_DAUGHTER)
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_WIFE)
IF g_eLastMissionPassed = SP_MISSION_ME_AMANDA
IF NOT HasTimeToWaitPassedFromLastPassedMission(60.0)
RETURN TRUE
ENDIF
ENDIF
IF PRIVATE_Does_FamilyMember_Have_MichaelSofa_Event(FM_MICHAEL_WIFE)
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M2_WIFE_phones_man_OR_therapist
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M7_WIFE_phones_man_OR_therapist
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_hangs_up_and_wanders
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_MEXMAID)
IF PRIVATE_Does_FamilyMember_Have_MichaelSofa_Event(FM_MICHAEL_MEXMAID)
OR g_eCurrentFamilyEvent[FM_MICHAEL_MEXMAID] = FE_M_MEXMAID_stealing_stuff
OR g_eCurrentFamilyEvent[FM_MICHAEL_MEXMAID] = FE_M_MEXMAID_stealing_stuff_caught
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_MichaelShower(enumFamilyMember eFamilyMember)
IF (eFamilyMember <> FM_MICHAEL_DAUGHTER)
IF g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_shower
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_SON)
IF g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_SON_rapping_in_the_shower
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_MichaelGarden(enumFamilyMember eFamilyMember)
IF (eFamilyMember <> FM_MICHAEL_DAUGHTER)
IF g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M2_DAUGHTER_sunbathing
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M7_DAUGHTER_sunbathing
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_WIFE)
IF g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M2_WIFE_sunbathing
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M7_WIFE_sunbathing
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_MichaelDriveway(enumFamilyMember eFamilyMember)
IF g_eLastMissionPassed = SP_MISSION_ME_TRACEY
IF NOT HasTimeToWaitPassedFromLastPassedMission(60.0)
RETURN TRUE
ENDIF
ENDIF
IF (Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_M2_CARSLEEP_a)
RETURN TRUE
ENDIF
IF (eFamilyMember <> FM_MICHAEL_SON)
IF g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_SON_Borrows_sisters_car
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_DAUGHTER)
IF g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_Going_out_in_her_car
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_WIFE)
IF g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_leaving_in_car
// OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_leaving_in_car_v2
// OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_MD_leaving_in_car_v3
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_MichaelStairs(enumFamilyMember eFamilyMember)
IF (eFamilyMember <> FM_MICHAEL_SON)
IF g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_SON_Fighting_with_sister_A
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_SON_Fighting_with_sister_B
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_SON_Fighting_with_sister_C
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_SON_Fighting_with_sister_D
// OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_WIFE_screaming_at_son_P1
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_WIFE_screaming_at_son_P2
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_WIFE_screaming_at_son_P3
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_DAUGHTER)
IF g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_screaming_at_dad
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_SON_Fighting_with_sister_A
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_SON_Fighting_with_sister_B
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_SON_Fighting_with_sister_C
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_SON_Fighting_with_sister_D
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_WIFE_screaming_at_daughter
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_WIFE)
IF g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_screaming_at_daughter
// OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_screaming_at_son_P1
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_screaming_at_son_P2
OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_WIFE_screaming_at_son_P3
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_MichaelTV(enumFamilyMember eFamilyMember)
IF (eFamilyMember <> FM_MICHAEL_SON)
IF g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M2_SON_gaming_loop
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M7_SON_gaming
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M2_SON_watching_TV
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M7_SON_watching_TV_with_tracey
OR g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M7_FAMILY_watching_TV
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_DAUGHTER)
IF g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M7_FAMILY_watching_TV
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_watching_TV_drunk
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_watching_TV_sober
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_dancing_practice
OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_DAUGHTER_workout_with_mp3
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_MICHAEL_WIFE)
IF g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M7_FAMILY_watching_TV
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_Trevor0Trailer(enumFamilyMember eFamilyMember)
IF (eFamilyMember <> FM_TREVOR_0_RON)
IF g_eCurrentFamilyEvent[FM_TREVOR_0_RON] = FE_T0_RONEX_trying_to_pick_up_signals
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_TREVOR_0_MICHAEL)
IF g_eCurrentFamilyEvent[FM_TREVOR_0_MICHAEL] = FE_T0_MICHAEL_depressed_head_in_hands
OR g_eCurrentFamilyEvent[FM_TREVOR_0_MICHAEL] = FE_T0_MICHAEL_on_phone_to_therapist
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap_Trevor0Garden(enumFamilyMember eFamilyMember)
IF (eFamilyMember <> FM_TREVOR_0_RON)
IF g_eCurrentFamilyEvent[FM_TREVOR_0_RON] = FE_T0_RONEX_outside_looking_lonely
OR g_eCurrentFamilyEvent[FM_TREVOR_0_RON] = FE_T0_RONEX_doing_target_practice
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_TREVOR_0_MICHAEL)
IF g_eCurrentFamilyEvent[FM_TREVOR_0_MICHAEL] = FE_T0_MICHAEL_sunbathing
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_TREVOR_0_TREVOR)
IF g_eCurrentFamilyEvent[FM_TREVOR_0_TREVOR] = FE_T0_TREVOR_blowing_shit_up
OR g_eCurrentFamilyEvent[FM_TREVOR_0_TREVOR] = FE_T0_TREVOR_and_kidnapped_wife_walk
RETURN TRUE
ENDIF
ENDIF
IF (eFamilyMember <> FM_TREVOR_0_WIFE)
IF g_eCurrentFamilyEvent[FM_TREVOR_0_WIFE] = FE_T0_KIDNAPPED_WIFE_does_garden_work
OR g_eCurrentFamilyEvent[FM_TREVOR_0_WIFE] = FE_T0_TREVOR_and_kidnapped_wife_walk
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Does_FamilyEvents_Overlap(enumFamilyMember eFamilyMember, enumFamilyEvents eFamilyEvent)
SWITCH eFamilyEvent
CASE FE_M_SON_rapping_in_the_shower
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelShower(eFamilyMember)
BREAK
CASE FE_M_DAUGHTER_shower
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelShower(eFamilyMember)
BREAK
CASE FE_M_SON_Borrows_sisters_car
CASE FE_M7_SON_going_for_a_bike_ride //#1713901
CASE FE_M7_SON_coming_back_from_a_bike_ride //#1713901
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelDriveway(eFamilyMember)
BREAK
CASE FE_M_DAUGHTER_Going_out_in_her_car
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelDriveway(eFamilyMember)
BREAK
// CASE FE_M_WIFE_leaving_in_car_v2
// CASE FE_M_WIFE_MD_leaving_in_car_v3
CASE FE_M_WIFE_leaving_in_car
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelDriveway(eFamilyMember)
BREAK
CASE FE_M_DAUGHTER_crying_over_a_guy
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelLivingroom(eFamilyMember)
BREAK
CASE FE_M2_WIFE_passed_out_SOFA
CASE FE_M7_WIFE_passed_out_SOFA
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelLivingroom(eFamilyMember)
BREAK
CASE FE_M_DAUGHTER_watching_TV_sober FALLTHRU
CASE FE_M_DAUGHTER_watching_TV_drunk FALLTHRU
CASE FE_M2_SON_watching_TV FALLTHRU
CASE FE_M7_SON_watching_TV_with_tracey FALLTHRU
CASE FE_M_DAUGHTER_workout_with_mp3 FALLTHRU
CASE FE_M_DAUGHTER_dancing_practice FALLTHRU
CASE FE_M7_FAMILY_watching_TV
IF PRIVATE_Does_FamilyEvents_Overlap_MichaelLivingroom(eFamilyMember)
OR PRIVATE_Does_FamilyEvents_Overlap_MichaelTV(eFamilyMember)
RETURN TRUE
ENDIF
BREAK
CASE FE_M_SON_Fighting_with_sister_A
CASE FE_M_SON_Fighting_with_sister_B
CASE FE_M_SON_Fighting_with_sister_C
CASE FE_M_SON_Fighting_with_sister_D
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelStairs(eFamilyMember)
BREAK
CASE FE_M_DAUGHTER_screaming_at_dad
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelStairs(eFamilyMember)
BREAK
// CASE FE_M_WIFE_screaming_at_son_P1
// RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelStairs(eFamilyMember)
// BREAK
CASE FE_M_WIFE_screaming_at_son_P2
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelStairs(eFamilyMember)
BREAK
CASE FE_M_WIFE_screaming_at_son_P3
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelStairs(eFamilyMember)
BREAK
CASE FE_M_WIFE_screaming_at_daughter
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelStairs(eFamilyMember)
BREAK
CASE FE_M_WIFE_gets_drink_in_kitchen
IF g_eCurrentFamilyEvent[FM_MICHAEL_MEXMAID] = FE_M_MEXMAID_stealing_stuff
OR g_eCurrentFamilyEvent[FM_MICHAEL_MEXMAID] = FE_M_MEXMAID_stealing_stuff_caught
RETURN TRUE
ENDIF
BREAK
CASE FE_M2_SON_gaming_loop
CASE FE_M7_SON_gaming
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelTV(eFamilyMember)
BREAK
CASE FE_M2_DAUGHTER_sunbathing
CASE FE_M7_DAUGHTER_sunbathing
CASE FE_M2_WIFE_sunbathing
CASE FE_M7_WIFE_sunbathing
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelGarden(eFamilyMember)
BREAK
// CASE FE_M_MEXMAID_watching_TV FALLTHRU
CASE FE_M_MEXMAID_stealing_stuff
CASE FE_M_MEXMAID_stealing_stuff_caught
RETURN PRIVATE_Does_FamilyEvents_Overlap_MichaelLivingroom(eFamilyMember)
BREAK
// CASE FE_M_MEXMAID_cooking_for_son
// IF g_eCurrentFamilyEvent[FM_MICHAEL_SON] = FE_M_FAMILY_on_laptops
// OR g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] = FE_M_FAMILY_on_laptops
// OR g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] = FE_M_FAMILY_on_laptops
// RETURN TRUE
// ENDIF
// BREAK
CASE FE_T0_KIDNAPPED_WIFE_talks_to_Michael
IF g_eCurrentFamilyEvent[FM_TREVOR_0_MICHAEL] = FAMILY_MEMBER_BUSY
RETURN TRUE
ENDIF
BREAK
CASE FE_T0_RONEX_trying_to_pick_up_signals
CASE FE_T0_MICHAEL_depressed_head_in_hands
CASE FE_T0_MICHAEL_on_phone_to_therapist
RETURN PRIVATE_Does_FamilyEvents_Overlap_Trevor0Trailer(eFamilyMember)
BREAK
CASE FE_T0_RONEX_outside_looking_lonely
CASE FE_T0_RONEX_doing_target_practice
CASE FE_T0_MICHAEL_sunbathing
CASE FE_T0_TREVOR_blowing_shit_up
CASE FE_T0_TREVOR_and_kidnapped_wife_walk
CASE FE_T0_KIDNAPPED_WIFE_does_garden_work
RETURN PRIVATE_Does_FamilyEvents_Overlap_Trevor0Garden(eFamilyMember)
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_Shared_FamilyEvents_Busy(enumFamilyEvents eFamilyEvent)
SWITCH eFamilyEvent
CASE FE_M_FAMILY_on_laptops
CASE FE_M7_FAMILY_finished_breakfast
CASE FE_M7_FAMILY_finished_pizza
CASE FE_M7_FAMILY_watching_TV
IF (g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] <> NO_FAMILY_EVENTS)
OR (g_eCurrentFamilyEvent[FM_MICHAEL_WIFE] <> NO_FAMILY_EVENTS)
RETURN TRUE
ENDIF
BREAK
CASE FE_M2_SON_watching_TV
IF (g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] <> NO_FAMILY_EVENTS)
RETURN TRUE
ENDIF
BREAK
// CASE FE_M_WIFE_screaming_at_son_P1
CASE FE_M_WIFE_screaming_at_son_P2
CASE FE_M_WIFE_screaming_at_son_P3
// CASE FE_M7_WIFE_shopping_with_son
IF (g_eCurrentFamilyEvent[FM_MICHAEL_SON] <> NO_FAMILY_EVENTS)
RETURN TRUE
ENDIF
BREAK
CASE FE_M_WIFE_screaming_at_daughter
CASE FE_M7_WIFE_shopping_with_daughter
IF (g_eCurrentFamilyEvent[FM_MICHAEL_DAUGHTER] <> NO_FAMILY_EVENTS)
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_FamilyEvent_With_Busy_Friend(enumFamilyMember eFamilyMember) //, enumFamilyEvents eFamilyEvent)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
// PED_SCENE_STRUCT sPedScene
// PLAYER_TIMETABLE_SCENE_STRUCT sPassedScene
//
// sPedScene.iStage = 0
// sPedScene.eScene = eReqScene
// sPedScene.ePed = g_sPlayerPedRequest.ePed
//
// IF SETUP_PLAYER_TIMETABLE_FOR_SCENE(sPedScene, sPassedScene)
IF (eFamilyMember <> NO_FAMILY_MEMBER)
AND (eFamilyMember <> MAX_FAMILY_MEMBER)
enumCharacterList friendCharID = NO_CHARACTER
INT iBIT_SCENE_BUDDY = BIT_NOBODY
SWITCH eFamilyMember
CASE FM_FRANKLIN_LAMAR
CASE FM_FRANKLIN_STRETCH
friendCharID = CHAR_LAMAR
iBIT_SCENE_BUDDY = BIT_LAMAR
BREAK
CASE FM_MICHAEL_SON
friendCharID = CHAR_JIMMY
iBIT_SCENE_BUDDY = BIT_JIMMY
BREAK
CASE FM_MICHAEL_WIFE
friendCharID = CHAR_AMANDA
iBIT_SCENE_BUDDY = BIT_AMANDA
BREAK
CASE FM_MICHAEL_DAUGHTER
friendCharID = CHAR_TRACEY
iBIT_SCENE_BUDDY = BIT_NOBODY
BREAK
DEFAULT
RETURN FALSE
BREAK
ENDSWITCH
IF (iBIT_SCENE_BUDDY != BIT_NOBODY)
INT availableMissionIndex
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.
INT iMissionID = g_flowUnsaved.coreVars[g_availableMissions[availableMissionIndex].index].iValue1
SP_MISSIONS eMissionID = INT_TO_ENUM(SP_MISSIONS, iMissionID)
IF IS_BITMASK_SET(g_sMissionStaticData[eMissionID].friendCharBitset, iBIT_SCENE_BUDDY)
// #IF IS_DEBUG_BUILD
// IF g_bDebugCprint_SceneScheduleInfo
// CPRINTLN(DEBUG_FAMILY, "eFamilyMember ")
// CPRINTLN(DEBUG_FAMILY, Get_String_From_FamilyMember(eFamilyMember))
// CPRINTLN(DEBUG_FAMILY, " blocked on mission \"")
// CPRINTLN(DEBUG_FAMILY, GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID))
// CPRINTLN(DEBUG_FAMILY, "\"")
// CprintNL()
// ENDIF
// #ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDREPEAT
IF GET_CONNECTION_FROM_FRIENDS(GET_FRIEND_FROM_CHAR(GET_CURRENT_PLAYER_PED_ENUM()), GET_FRIEND_FROM_CHAR(friendCharID)) < MAX_FRIEND_CONNECTIONS
CONST_FLOAT CONST_fPlayerRealtimeMinuteWait_phone 1.0
CONST_FLOAT CONST_fPlayerRealtimeMinuteWait_face 5.0
FLOAT fLastContactTime = Private_GET_FRIEND_LAST_CONTACT_TIME(GET_CURRENT_PLAYER_PED_ENUM(), friendCharID)
SWITCH Private_GET_FRIEND_LAST_CONTACT_TYPE(GET_CURRENT_PLAYER_PED_ENUM(), friendCharID)
CASE FRIEND_CONTACT_PHONE
IF fLastContactTime <= (CONST_fPlayerRealtimeMinuteWait_phone*60.0)
RETURN TRUE
ENDIF
BREAK
CASE FRIEND_CONTACT_FACE
IF fLastContactTime <= (CONST_fPlayerRealtimeMinuteWait_face*60.0)
RETURN TRUE
ENDIF
BREAK
DEFAULT
//
BREAK
ENDSWITCH
ENDIF
ENDIF
INT iQueueGameTimer = GET_GAME_TIMER()
CONST_INT iCONST_QueueGameTimerMs 150000 //2.5min
INT index
REPEAT g_savedGlobals.sCommsControlData.iNoQueuedCalls index
IF g_savedGlobals.sCommsControlData.sQueuedCalls[index].sCommData.eNPCCharacter = friendCharID
INT iQueuedCallsDelay = g_savedGlobals.sCommsControlData.sQueuedCalls[index].sCommData.iQueueTime - iQueueGameTimer
IF (iQueuedCallsDelay < iCONST_QueueGameTimerMs)
CPRINTLN(DEBUG_FAMILY, "schedule blocked for queued comms")
RETURN TRUE
ENDIF
ENDIF
ENDREPEAT
ENDIF
// ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_FamilyEvent_Near_Player(enumFamilyMember eFamilyMember, enumFamilyEvents eFamilyEvent)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
IF (g_eCurrentFamilyEvent[eFamilyMember] = FE_ANY_wander_family_event)
RETURN FALSE
ENDIF
VECTOR vFamilySceneCoord
FLOAT fInitHead
IF PRIVATE_Get_FamilyMember_Init_Offset(eFamilyMember, eFamilyEvent,
vFamilySceneCoord, fInitHead)
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
CASE FM_MICHAEL_DAUGHTER
CASE FM_MICHAEL_WIFE
CASE FM_MICHAEL_MEXMAID
CASE FM_MICHAEL_GARDENER
vFamilySceneCoord += << -812.0607, 179.5117, 71.1531 >>
BREAK
CASE FM_FRANKLIN_AUNT
CASE FM_FRANKLIN_LAMAR
CASE FM_FRANKLIN_STRETCH
vFamilySceneCoord += << -14.3064, -1435.9974, 30.1160 >>
BREAK
CASE FM_TREVOR_0_RON
CASE FM_TREVOR_0_MICHAEL
CASE FM_TREVOR_0_TREVOR
CASE FM_TREVOR_0_WIFE
CASE FM_TREVOR_0_MOTHER
vFamilySceneCoord += << 1974.6129, 3819.1438, 32.4374 >>
BREAK
CASE FM_TREVOR_1_FLOYD
vFamilySceneCoord += << -1152.5707, -1517.6010, 9.6346 >>
BREAK
ENDSWITCH
VECTOR vPlayerCoord = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
CONST_FLOAT fMIN_DIST_FROM_PLAYER 5.0 //2.5
IF VDIST2(vFamilySceneCoord, vPlayerCoord) < (fMIN_DIST_FROM_PLAYER*fMIN_DIST_FROM_PLAYER)
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_FamilyEvent_Near_Trigger(enumFamilyMember eFamilyMember, enumFamilyEvents eFamilyEvent)
#IF IS_DEBUG_BUILD
IF NOT g_savedGlobals.sFlow.isGameflowActive
RETURN FALSE
ENDIF
#ENDIF
VECTOR vFamilySceneCoord
// FLOAT fInitHead
// IF PRIVATE_Get_FamilyMember_Init_Offset(eFamilyMember, eFamilyEvent,
// vFamilySceneCoord, fInitHead)
enumCharacterList eFamilyChar = NO_CHARACTER
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
CASE FM_MICHAEL_DAUGHTER
CASE FM_MICHAEL_WIFE
CASE FM_MICHAEL_MEXMAID
CASE FM_MICHAEL_GARDENER
vFamilySceneCoord += << -812.0607, 179.5117, 71.1531 >>
BREAK
CASE FM_FRANKLIN_AUNT
CASE FM_FRANKLIN_LAMAR
CASE FM_FRANKLIN_STRETCH
vFamilySceneCoord += << -14.3064, -1435.9974, 30.1160 >>
BREAK
CASE FM_TREVOR_0_RON
CASE FM_TREVOR_0_MICHAEL
CASE FM_TREVOR_0_TREVOR
CASE FM_TREVOR_0_WIFE
CASE FM_TREVOR_0_MOTHER
vFamilySceneCoord += << 1974.6129, 3819.1438, 32.4374 >>
IF (eFamilyMember = FM_TREVOR_0_MICHAEL)
eFamilyChar = CHAR_MICHAEL
ELIF (eFamilyMember = FM_TREVOR_0_TREVOR)
eFamilyChar = CHAR_TREVOR
ELSE
IF (eFamilyEvent = FE_T0_KIDNAPPED_WIFE_talks_to_Michael)
eFamilyChar = CHAR_MICHAEL
// ELIF (eFamilyEvent = FM_TREVOR_0_TREVOR)
// eFamilyChar = CHAR_TREVOR
ELSE
eFamilyChar = NO_CHARACTER
ENDIF
ENDIF
BREAK
CASE FM_TREVOR_1_FLOYD
vFamilySceneCoord += << -1152.5707, -1517.6010, 9.6346 >>
BREAK
ENDSWITCH
IF (eFamilyChar = NO_CHARACTER)
RETURN FALSE
ENDIF
// // // //
// VECTOR vPlayerCoord = GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE)
//
// IF VDIST2(vFamilySceneCoord, vPlayerCoord) < (2.5*2.5)
// RETURN TRUE
// ENDIF
// // // //
INT iTriggerIndex
REPEAT MAX_MISSION_TRIGGERS iTriggerIndex
IF g_TriggerableMissions[iTriggerIndex].bUsed
SP_MISSIONS eMissionID = g_TriggerableMissions[iTriggerIndex].eMissionID
FLOAT fFriendRejectDistance = g_TriggerableMissions[iTriggerIndex].sScene.fFriendRejectDistance
INT iFriendsToAcceptBitset = g_TriggerableMissions[iTriggerIndex].sScene.iFriendsToAcceptBitset
STATIC_BLIP_NAME_ENUM eBlip = g_sMissionStaticData[eMissionID].blip
VECTOR vBlipCoord = GET_STATIC_BLIP_POSITION(eBlip)
FLOAT fDist2FamilyToTrigger = VDIST2(vFamilySceneCoord, vBlipCoord)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Near_Trigger(", Get_String_From_FamilyMember(eFamilyMember), ", ", Get_String_From_FamilyEvent(eFamilyEvent), ") [", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eMissionID), ", ", fFriendRejectDistance, ":", SQRT(fDist2FamilyToTrigger), ", ", IS_BIT_SET(iFriendsToAcceptBitset, ENUM_TO_INT(eFamilyChar)), "]")
#ENDIF
IF NOT IS_BIT_SET(iFriendsToAcceptBitset, ENUM_TO_INT(eFamilyChar))
IF (fDist2FamilyToTrigger < (fFriendRejectDistance*fFriendRejectDistance))
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDREPEAT
// ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(enumFamilyMember eFamilyMember, enumFamilyEvents eFamilyEvent)
SWITCH g_eLastMissionPassed
// CASE SP_MISSION_ARMENIAN_1 //#550889
// IF (eFamilyMember = FM_FRANKLIN_AUNT)
//
// #IF IS_DEBUG_BUILD
// CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(")
// CPRINTLN(DEBUG_FAMILY, Get_String_From_FamilyMember(eFamilyMember))
// CPRINTLN(DEBUG_FAMILY, ", ")
// CPRINTLN(DEBUG_FAMILY, Get_String_From_FamilyEvent(eFamilyEvent))
// CPRINTLN(DEBUG_FAMILY, ")")
// CprintNL()
// #ENDIF
//
// RETURN TRUE
// ENDIF
// BREAK
CASE SP_MISSION_FAMILY_3 //#407123
IF (eFamilyEvent = FE_M_SON_Borrows_sisters_car)
OR (eFamilyEvent = FE_M_DAUGHTER_Going_out_in_her_car)
// OR (eFamilyEvent = FE_M_WIFE_leaving_in_car_v2)
// OR (eFamilyEvent = FE_M_WIFE_MD_leaving_in_car_v3)
OR (eFamilyEvent = FE_M_WIFE_leaving_in_car)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(", Get_String_From_FamilyEvent(eFamilyEvent), ", ", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN TRUE
ENDIF
IF (eFamilyMember = FM_MICHAEL_GARDENER)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(", Get_String_From_FamilyMember(eFamilyMember), ", ", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE SP_MISSION_MICHAEL_4 //#1076003 & #1573264
IF (eFamilyMember = FM_MICHAEL_SON)
OR (eFamilyMember = FM_MICHAEL_DAUGHTER)
OR (eFamilyMember = FM_MICHAEL_WIFE)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(", Get_String_From_FamilyMember(eFamilyMember), ", ", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN TRUE
ENDIF
BREAK
/*
CASE SP_MISSION_ME_AMANDA
IF (eFamilyMember = FM_MICHAEL_WIFE)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(")
CPRINTLN(DEBUG_FAMILY, Get_String_From_FamilyMember(eFamilyMember))
CPRINTLN(DEBUG_FAMILY, ", ")
CPRINTLN(DEBUG_FAMILY, Get_String_From_FamilyEvent(eFamilyEvent))
CPRINTLN(DEBUG_FAMILY, ")")
CprintNL()
#ENDIF
RETURN TRUE
ENDIF
BREAK
CASE SP_MISSION_ME_JIMMY
IF (eFamilyMember = FM_MICHAEL_SON)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(")
CPRINTLN(DEBUG_FAMILY, Get_String_From_FamilyMember(eFamilyMember))
CPRINTLN(DEBUG_FAMILY, ", ")
CPRINTLN(DEBUG_FAMILY, Get_String_From_FamilyEvent(eFamilyEvent))
CPRINTLN(DEBUG_FAMILY, ")")
CprintNL()
#ENDIF
RETURN TRUE
ENDIF
BREAK
*/
CASE SP_MISSION_ME_TRACEY
IF (eFamilyEvent = FE_M_SON_Borrows_sisters_car)
#IF USE_TU_CHANGES
OR (eFamilyEvent = FE_M7_SON_coming_back_from_a_bike_ride)
#ENDIF
OR (eFamilyEvent = FE_M_DAUGHTER_Going_out_in_her_car)
// OR (eFamilyEvent = FE_M_WIFE_leaving_in_car_v2)
// OR (eFamilyEvent = FE_M_WIFE_MD_leaving_in_car_v3)
OR (eFamilyEvent = FE_M_WIFE_leaving_in_car)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(", Get_String_From_FamilyMember(eFamilyMember), ", ", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
//#1542252
IF (eFamilyEvent = FE_M2_SON_gaming_loop)
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_2)
AND NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(", Get_String_From_FamilyMember(eFamilyMember), ", ", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_FamilyEvent_In_Bad_Weather(enumFamilyEvents eFamilyEvent)
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
SWITCH eFamilyEvent
CASE FE_M2_DAUGHTER_sunbathing
CASE FE_M7_DAUGHTER_sunbathing
CASE FE_M2_WIFE_sunbathing
CASE FE_M7_WIFE_sunbathing
CASE FE_T0_MICHAEL_sunbathing
// * bug #1590884 * * * * * * * * * * * //
CASE FE_M_GARDENER_with_leaf_blower
CASE FE_M_GARDENER_planting_flowers //
CASE FE_M_GARDENER_cleaning_pool
CASE FE_M_GARDENER_mowing_lawn //
CASE FE_M_GARDENER_watering_flowers
CASE FE_M_GARDENER_on_phone //
CASE FE_M_GARDENER_smoking_weed
// * * * * * * * * * * * * * * * * * * //
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 (iPREV_WEATHER_TYPE_HASH_NAME = iRAIN)
OR (iPREV_WEATHER_TYPE_HASH_NAME = iTHUNDER)
OR (iPREV_WEATHER_TYPE_HASH_NAME = iSNOW)
bInvalidPrevWeather = TRUE
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
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL PRIVATE_Is_FamilyEvent_Available(enumFamilyMember eFamilyMember, enumFamilyEvents eFamilyEvent)
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4)
IF (eFamilyMember = FM_MICHAEL_SON)
OR (eFamilyMember = FM_MICHAEL_DAUGHTER)
OR (eFamilyMember = FM_MICHAEL_WIFE)
OR (eFamilyMember = FM_MICHAEL_MEXMAID)
OR (eFamilyMember = FM_MICHAEL_GARDENER)
IF IS_PED_THE_CURRENT_PLAYER_PED(CHAR_TREVOR)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_TrevorBeforeFam4(", Get_String_From_FamilyMember(eFamilyMember), ")")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
ENDIF
IF eFamilyEvent = g_savedGlobals.sFamilyData.ePreviousFamilyEvent[eFamilyMember]
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Previous_Family_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
ENDIF
IF PRIVATE_Does_FamilyEvents_Overlap(eFamilyMember, eFamilyEvent)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Does_FamilyEvents_Overlap(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
ENDIF
IF PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(eFamilyMember, eFamilyEvent)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Blocked_For_Last_Passed_Mission(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
ENDIF
IF PRIVATE_Is_Shared_FamilyEvents_Busy(eFamilyEvent)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_Shared_FamilyEvents_Busy(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
ENDIF
IF PRIVATE_Is_FamilyEvent_Near_Player(eFamilyMember, eFamilyEvent)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_Near_Player(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
ENDIF
IF PRIVATE_Is_FamilyEvent_In_Bad_Weather(eFamilyEvent)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_In_Bad_Weather(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
ENDIF
IF (Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_M7_FAKEYOGA)
IF eFamilyEvent = FE_M_FAMILY_on_laptops
OR eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
OR eFamilyEvent = FE_M7_FAMILY_finished_breakfast
OR eFamilyEvent = FE_M7_FAMILY_finished_pizza
OR eFamilyEvent = FE_M7_FAMILY_watching_TV
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_During_Fakeyoga(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
FUNC BOOL PRIVATE_Get_Desired_FamilyEventFromArray(enumFamilyMember eFamilyMember,
enumFamilyEvents &eEventArray[], FLOAT &fPercentArray[],
enumFamilyEvents &eDesiredEvent)
//get a percentage...
FLOAT fMaxPercent = 0
INT iLoop
REPEAT COUNT_OF(fPercentArray) iLoop
IF PRIVATE_Is_FamilyEvent_Available(eFamilyMember, eEventArray[iLoop])
fMaxPercent += fPercentArray[iLoop]
ENDIF
ENDREPEAT
FLOAT fPercent = GET_RANDOM_FLOAT_IN_RANGE(0, fMaxPercent)
REPEAT COUNT_OF(fPercentArray) iLoop
IF PRIVATE_Is_FamilyEvent_Available(eFamilyMember, eEventArray[iLoop])
IF fPercent < fPercentArray[iLoop]
eDesiredEvent = eEventArray[iLoop]
RETURN TRUE
ENDIF
fPercent -= fPercentArray[iLoop]
ENDIF
ENDREPEAT
eDesiredEvent = NO_FAMILY_EVENTS
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 str = ("invalid fPercent in Get_Desired_")
str += GET_STRING_FROM_STRING(Get_String_From_FamilyMember(eFamilyMember),
GET_LENGTH_OF_LITERAL_STRING("FM_"),
GET_LENGTH_OF_LITERAL_STRING(Get_String_From_FamilyMember(eFamilyMember)))
str += ("_Event()")
CPRINTLN(DEBUG_FAMILY, str)
// SCRIPT_ASSERT(str)
#ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL ScheduleEventForThisChar(enumCharacterList ePed)
IF IS_PED_THE_CURRENT_PLAYER_PED(ePed)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "ScheduleEventForThisChar(", GET_PLAYER_PED_STRING(ePed), ") - ped us current ped")
#ENDIF
RETURN FALSE
ENDIF
TIMEOFDAY sLastTimeActive = g_savedGlobals.sPlayerData.sInfo.sLastTimeActive[ePed]
IF Is_TIMEOFDAY_Valid(sLastTimeActive)
IF NOT HasHourPassedSinceCharLastTimeActive(ePed)
#IF IS_DEBUG_BUILD
INT iSeconds, iMinutes, iHours, iDays, iMonths, iYears
GET_DIFFERENCE_BETWEEN_NOW_AND_TIMEOFDAY(sLastTimeActive, iSeconds, iMinutes, iHours, iDays, iMonths, iYears)
CPRINTLN(DEBUG_FAMILY, "ScheduleEventForThisChar(", GET_PLAYER_PED_STRING(ePed), ") - hour hasnt passes since last active[", iSeconds, "s ", iMinutes, "m ", iHours, "h ", iDays, "d ", iMonths+(iYears*12), "m", "]")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
IF NOT IS_PLAYER_PED_AVAILABLE(ePed)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "ScheduleEventForThisChar(", GET_PLAYER_PED_STRING(ePed), ") - ped is not available")
#ENDIF
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE SON SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
FUNC BOOL PRIVATE_Force_Family_EventAvailableMissions(enumFamilyMember eFamilyMember, enumFamilyEvents &eFamilyEvent, SP_MISSIONS &eReturnedSpMissions)
eReturnedSpMissions = SP_MISSION_NONE
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_1)
eReturnedSpMissions = SP_MISSION_FAMILY_1
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_4) //#1088344
eReturnedSpMissions = SP_MISSION_FAMILY_4
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF (g_eLastMissionPassed = SP_MISSION_LESTER_1) //#1336824
IF HasTimeToWaitPassedFromLastPassedMission(60.0)
eReturnedSpMissions = SP_MISSION_LESTER_1
#IF NOT IS_NEXTGEN_BUILD
eFamilyEvent = FE_M_SON_rapping_in_the_shower
#ENDIF
#IF IS_NEXTGEN_BUILD
eFamilyEvent = NO_FAMILY_EVENTS
#ENDIF
RETURN TRUE
ENDIF
ENDIF
BREAK
CASE FM_MICHAEL_DAUGHTER
IF GetMichaelScheduleStage() = MSS_M2_WithFamily
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
eReturnedSpMissions = SP_MISSION_FAMILY_4
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_2)
eReturnedSpMissions = SP_MISSION_FAMILY_2
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_1) //#1024884
eReturnedSpMissions = SP_MISSION_FAMILY_1
eFamilyEvent = FE_M_DAUGHTER_watching_TV_sober
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_4) //#1122724
eReturnedSpMissions = SP_MISSION_FAMILY_4
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_3) //#1282380
eReturnedSpMissions = SP_MISSION_FAMILY_3
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF (g_eLastMissionPassed = SP_MISSION_LESTER_1) //#1336824
IF HasTimeToWaitPassedFromLastPassedMission(60.0)
eReturnedSpMissions = SP_MISSION_LESTER_1
eFamilyEvent = FE_M_DAUGHTER_on_phone_to_friends
RETURN TRUE
ENDIF
ENDIF
BREAK
CASE FM_MICHAEL_WIFE
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_1) //#1024884
eReturnedSpMissions = SP_MISSION_FAMILY_1
eFamilyEvent = FE_M_WIFE_gets_drink_in_kitchen
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_3)
eReturnedSpMissions = SP_MISSION_FAMILY_3
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_4) //#1088344
eReturnedSpMissions = SP_MISSION_FAMILY_4
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF (g_eLastMissionPassed = SP_MISSION_ME_AMANDA) //#1738671
IF HasTimeToWaitPassedFromLastPassedMission(60.0)
eReturnedSpMissions = SP_MISSION_ME_AMANDA
eFamilyEvent = FE_M_WIFE_gets_drink_in_kitchen
RETURN TRUE
ENDIF
ENDIF
BREAK
CASE FM_MICHAEL_MEXMAID
IF (g_eLastMissionPassed = SP_MISSION_LESTER_1) //#1771082
eReturnedSpMissions = SP_MISSION_LESTER_1
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
BREAK
CASE FM_FRANKLIN_AUNT
IF (g_eLastMissionPassed = SP_MISSION_ARMENIAN_1) //#1390895
IF NOT HasTimeToWaitPassedFromLastPassedMission(60.0)
eReturnedSpMissions = SP_MISSION_ARMENIAN_1
eFamilyEvent = FE_F_AUNT_watching_TV
RETURN TRUE
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_LAMAR)
eReturnedSpMissions = SP_MISSION_LAMAR
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FRANKLIN_1)
eReturnedSpMissions = SP_MISSION_FRANKLIN_1
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
BREAK
CASE FM_FRANKLIN_LAMAR
CASE FM_FRANKLIN_STRETCH
IF (g_eLastMissionPassed = SP_MISSION_LAMAR)
IF HasTimeToWaitPassedFromLastPassedMission(60.0)
IF g_savedGlobals.sFamilyData.ePreviousFamilyEvent[FM_FRANKLIN_STRETCH] != FE_F_LAMAR_and_STRETCH_wandering
AND g_savedGlobals.sFamilyData.ePreviousFamilyEvent[FM_FRANKLIN_LAMAR] != FE_F_LAMAR_and_STRETCH_wandering
eReturnedSpMissions = SP_MISSION_LAMAR
eFamilyEvent = FE_F_LAMAR_and_STRETCH_wandering
RETURN TRUE
ELSE
PRINTLN("bug #1668574 would have happened here, fix must have worked")
ENDIF
ENDIF
ENDIF
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_LAMAR) //1081258
eReturnedSpMissions = SP_MISSION_LAMAR
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_FRANKLIN_1) //1090775
eReturnedSpMissions = SP_MISSION_FRANKLIN_1
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FRANKLIN_1) //1081258
eReturnedSpMissions = SP_MISSION_FRANKLIN_1
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
BREAK
CASE FM_TREVOR_0_RON
IF (g_eLastMissionPassed = SP_MISSION_TREVOR_1) //1111358
IF HasTimeToWaitPassedFromLastPassedMission(60.0)
eReturnedSpMissions = SP_MISSION_TREVOR_1
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
ENDIF
IF (g_eLastMissionPassed = SP_MISSION_EXILE_1) //1167803
IF HasTimeToWaitPassedFromLastPassedMission(60.0)
eReturnedSpMissions = SP_MISSION_EXILE_1
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_TREVOR_2)
eReturnedSpMissions = SP_MISSION_TREVOR_2
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_TREVOR_3)
eReturnedSpMissions = SP_MISSION_TREVOR_3
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_EXILE_3) //1090653
eReturnedSpMissions = SP_MISSION_EXILE_3
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
BREAK
// CASE FM_TREVOR_0_MICHAEL
// IF g_SavedGlobals.sPlayerSceneData.g_ePlayerLastScene[CHAR_MICHAEL] = PR_SCENE_Ma_MICHAEL2
// eFamilyEvent = FE_M_MICHAEL_MIC2_washing_face
// RETURN TRUE
// ENDIF
//
// eFamilyEvent = NO_FAMILY_EVENTS
// RETURN FALSE
// BREAK
CASE FM_TREVOR_0_TREVOR
IF IS_MISSION_AVAILABLE(SP_MISSION_EXILE_3) //1090653
eReturnedSpMissions = SP_MISSION_EXILE_3
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
BREAK
CASE FM_TREVOR_0_WIFE
IF IS_MISSION_AVAILABLE(SP_MISSION_EXILE_3) //1090653
eReturnedSpMissions = SP_MISSION_EXILE_3
eFamilyEvent = NO_FAMILY_EVENTS
RETURN TRUE
ENDIF
BREAK
CASE FM_TREVOR_1_FLOYD // block Floyd for the pre-Docks Heist 1 setup stuff)
IF IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_1)
eReturnedSpMissions = SP_HEIST_DOCKS_1
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
IF PRIVATE_Is_FamilyEvent_With_Busy_Friend(eFamilyMember)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Is_FamilyEvent_With_Busy_Friend(", Get_String_From_FamilyMember(eFamilyMember), ")")
#ENDIF
eReturnedSpMissions = SP_MISSION_MAX
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE SON SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Son_Morning_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_SON_sleeping 60.0
CONST_FLOAT fCHANCE_SON_gaming 10.0
CONST_FLOAT fCHANCE_SON_out 10.0
CONST_FLOAT fCHANCE_SON_rapping 10.0
CONST_FLOAT fCHANCE_FAMILY_allOnline 10.0
enumFamilyEvents eEventArray[5]
FLOAT fPercentArray[5]
eEventArray[0] = FE_M_SON_sleeping fPercentArray[0] = fCHANCE_SON_sleeping
eEventArray[1] = FE_M2_SON_gaming_loop fPercentArray[1] = fCHANCE_SON_gaming
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = fCHANCE_SON_out
eEventArray[3] = FE_M_SON_rapping_in_the_shower fPercentArray[3] = fCHANCE_SON_rapping
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
eEventArray[4] = FE_M_FAMILY_on_laptops fPercentArray[4] = fCHANCE_FAMILY_allOnline
ELSE
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = 0.0
ENDIF
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_SON_jumping_jacks 15.0
CONST_FLOAT fCHANCE_SON_Gaming 15.0
CONST_FLOAT fCHANCE_SON_going_for_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_coming_back_from_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_on_laptop_looking_for_jobs 15.0
CONST_FLOAT fCHANCE_SON_watching_TV_with_tracey 10.0
CONST_FLOAT fCHANCE_FAMILY_finished_breakfast 15.0
CONST_FLOAT fCHANCE_FAMILY_finished_pizza 15.0
CONST_FLOAT fCHANCE_FAMILY_watching_TV 15.0
enumFamilyEvents eEventArray[9]
FLOAT fPercentArray[9]
eEventArray[0] = FE_M7_SON_jumping_jacks fPercentArray[0] = fCHANCE_SON_jumping_jacks
eEventArray[1] = FE_M7_SON_Gaming fPercentArray[1] = fCHANCE_SON_Gaming
eEventArray[2] = FE_M7_SON_going_for_a_bike_ride fPercentArray[2] = fCHANCE_SON_going_for_a_bike_ride
eEventArray[3] = FE_M7_SON_coming_back_from_a_bike_ride fPercentArray[3] = fCHANCE_SON_coming_back_from_a_bike_ride
eEventArray[4] = FE_M7_SON_on_laptop_looking_for_jobs fPercentArray[4] = fCHANCE_SON_on_laptop_looking_for_jobs
eEventArray[5] = FE_M7_FAMILY_watching_TV fPercentArray[5] = fCHANCE_SON_watching_TV_with_tracey
eEventArray[6] = FE_M7_FAMILY_finished_breakfast fPercentArray[6] = fCHANCE_FAMILY_finished_breakfast
eEventArray[7] = FE_M7_FAMILY_finished_pizza fPercentArray[7] = fCHANCE_FAMILY_finished_pizza
eEventArray[8] = FE_M7_FAMILY_watching_TV fPercentArray[8] = fCHANCE_FAMILY_watching_TV
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Son_Morning_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 12:00 - 17:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Son_Afternoon_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_SON_borrowCar 20.0
CONST_FLOAT fCHANCE_FAMILY_allOnline 10.0
CONST_FLOAT fCHANCE_SON_out 20.0
CONST_FLOAT fCHANCE_SON_gaming 40.0
CONST_FLOAT fCHANCE_SON_crackingOff 10.0
enumFamilyEvents eEventArray[5]
FLOAT fPercentArray[5]
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_ME_TRACEY)
eEventArray[0] = FE_M_SON_Borrows_sisters_car fPercentArray[0] = fCHANCE_SON_borrowCar
ELSE
eEventArray[0] = NO_FAMILY_EVENTS fPercentArray[0] = 0.0
ENDIF
eEventArray[1] = FE_M_FAMILY_on_laptops fPercentArray[1] = fCHANCE_FAMILY_allOnline
ELSE
eEventArray[0] = NO_FAMILY_EVENTS fPercentArray[0] = 0.0
eEventArray[1] = NO_FAMILY_EVENTS fPercentArray[1] = 0.0
ENDIF
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = fCHANCE_SON_out
eEventArray[3] = FE_M2_SON_gaming_loop fPercentArray[3] = fCHANCE_SON_gaming
eEventArray[4] = FE_M_SON_watching_porn fPercentArray[4] = fCHANCE_SON_crackingOff
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_SON_jumping_jacks 15.0
CONST_FLOAT fCHANCE_SON_Gaming 15.0
CONST_FLOAT fCHANCE_SON_going_for_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_coming_back_from_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_on_laptop_looking_for_jobs 15.0
CONST_FLOAT fCHANCE_SON_watching_TV_with_tracey 10.0
CONST_FLOAT fCHANCE_FAMILY_finished_breakfast 15.0
CONST_FLOAT fCHANCE_FAMILY_finished_pizza 15.0
CONST_FLOAT fCHANCE_FAMILY_watching_TV 15.0
enumFamilyEvents eEventArray[9]
FLOAT fPercentArray[9]
eEventArray[0] = FE_M7_SON_jumping_jacks fPercentArray[0] = fCHANCE_SON_jumping_jacks
eEventArray[1] = FE_M7_SON_Gaming fPercentArray[1] = fCHANCE_SON_Gaming
eEventArray[2] = FE_M7_SON_going_for_a_bike_ride fPercentArray[2] = fCHANCE_SON_going_for_a_bike_ride
eEventArray[3] = FE_M7_SON_coming_back_from_a_bike_ride fPercentArray[3] = fCHANCE_SON_coming_back_from_a_bike_ride
eEventArray[4] = FE_M7_SON_on_laptop_looking_for_jobs fPercentArray[4] = fCHANCE_SON_on_laptop_looking_for_jobs
eEventArray[5] = FE_M7_FAMILY_watching_TV fPercentArray[5] = fCHANCE_SON_watching_TV_with_tracey
eEventArray[6] = FE_M7_FAMILY_finished_breakfast fPercentArray[6] = fCHANCE_FAMILY_finished_breakfast
eEventArray[7] = FE_M7_FAMILY_finished_pizza fPercentArray[7] = fCHANCE_FAMILY_finished_pizza
eEventArray[8] = FE_M7_FAMILY_watching_TV fPercentArray[8] = fCHANCE_FAMILY_watching_TV
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Son_Afternoon_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 18:00 - 23:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Son_Evening_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_SON_munchRoom 10.0
CONST_FLOAT fCHANCE_SON_phone 10.0
CONST_FLOAT fCHANCE_SON_ecstasy 15.0
CONST_FLOAT fCHANCE_FAMILY_allOnline 10.0
CONST_FLOAT fCHANCE_SON_fightSister 15.0
CONST_FLOAT fCHANCE_SON_bedroomPot 40.0
enumFamilyEvents eEventArray[6+3]
FLOAT fPercentArray[6+3]
eEventArray[0] = FE_M_SON_in_room_asks_for_munchies fPercentArray[0] = fCHANCE_SON_munchRoom
eEventArray[1] = FE_M_SON_phone_calls_in_room fPercentArray[1] = fCHANCE_SON_phone
eEventArray[2] = FE_M_SON_on_ecstasy_AND_friendly fPercentArray[2] = fCHANCE_SON_ecstasy
eEventArray[3] = FE_M_SON_smoking_weed_in_a_bong fPercentArray[3] = fCHANCE_SON_bedroomPot
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
eEventArray[4] = FE_M_FAMILY_on_laptops fPercentArray[4] = fCHANCE_FAMILY_allOnline
eEventArray[5] = FE_M_SON_Fighting_with_sister_A fPercentArray[5] = fCHANCE_SON_fightSister / 4.0
eEventArray[6] = FE_M_SON_Fighting_with_sister_B fPercentArray[6] = fCHANCE_SON_fightSister / 4.0
eEventArray[7] = FE_M_SON_Fighting_with_sister_C fPercentArray[7] = fCHANCE_SON_fightSister / 4.0
eEventArray[8] = FE_M_SON_Fighting_with_sister_D fPercentArray[8] = fCHANCE_SON_fightSister / 4.0
ELSE
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = 0.0
eEventArray[5] = NO_FAMILY_EVENTS fPercentArray[5] = 0.0
eEventArray[6] = NO_FAMILY_EVENTS fPercentArray[6] = 0.0
eEventArray[7] = NO_FAMILY_EVENTS fPercentArray[7] = 0.0
eEventArray[8] = NO_FAMILY_EVENTS fPercentArray[8] = 0.0
ENDIF
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_SON_jumping_jacks 15.0
CONST_FLOAT fCHANCE_SON_Gaming 15.0
CONST_FLOAT fCHANCE_SON_going_for_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_coming_back_from_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_on_laptop_looking_for_jobs 15.0
CONST_FLOAT fCHANCE_SON_watching_TV_with_tracey 10.0
CONST_FLOAT fCHANCE_FAMILY_finished_breakfast 15.0
CONST_FLOAT fCHANCE_FAMILY_finished_pizza 15.0
CONST_FLOAT fCHANCE_FAMILY_watching_TV 15.0
enumFamilyEvents eEventArray[9]
FLOAT fPercentArray[9]
eEventArray[0] = FE_M7_SON_jumping_jacks fPercentArray[0] = fCHANCE_SON_jumping_jacks
eEventArray[1] = FE_M7_SON_Gaming fPercentArray[1] = fCHANCE_SON_Gaming
eEventArray[2] = FE_M7_SON_going_for_a_bike_ride fPercentArray[2] = fCHANCE_SON_going_for_a_bike_ride
eEventArray[3] = FE_M7_SON_coming_back_from_a_bike_ride fPercentArray[3] = fCHANCE_SON_coming_back_from_a_bike_ride
eEventArray[4] = FE_M7_SON_on_laptop_looking_for_jobs fPercentArray[4] = fCHANCE_SON_on_laptop_looking_for_jobs
eEventArray[5] = FE_M7_FAMILY_watching_TV fPercentArray[5] = fCHANCE_SON_watching_TV_with_tracey
eEventArray[6] = FE_M7_FAMILY_finished_breakfast fPercentArray[6] = fCHANCE_FAMILY_finished_breakfast
eEventArray[7] = FE_M7_FAMILY_finished_pizza fPercentArray[7] = fCHANCE_FAMILY_finished_pizza
eEventArray[8] = FE_M7_FAMILY_watching_TV fPercentArray[8] = fCHANCE_FAMILY_watching_TV
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Son_Evening_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 00:00 - 05:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Son_Night_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_SON_munchFridge 30.0
CONST_FLOAT fCHANCE_SON_phone 30.0
CONST_FLOAT fCHANCE_SON_out 10.0
CONST_FLOAT fCHANCE_SON_gaming 30.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_M_SON_raids_fridge_for_food fPercentArray[0] = fCHANCE_SON_munchFridge
eEventArray[1] = FE_M_SON_phone_calls_in_room fPercentArray[1] = fCHANCE_SON_phone
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = fCHANCE_SON_out
eEventArray[3] = FE_M2_SON_gaming_loop fPercentArray[3] = fCHANCE_SON_gaming
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_SON_jumping_jacks 15.0
CONST_FLOAT fCHANCE_SON_Gaming 15.0
CONST_FLOAT fCHANCE_SON_going_for_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_coming_back_from_a_bike_ride 15.0
CONST_FLOAT fCHANCE_SON_on_laptop_looking_for_jobs 15.0
CONST_FLOAT fCHANCE_SON_watching_TV_with_tracey 10.0
CONST_FLOAT fCHANCE_FAMILY_finished_breakfast 15.0
CONST_FLOAT fCHANCE_FAMILY_finished_pizza 15.0
CONST_FLOAT fCHANCE_FAMILY_watching_TV 15.0
enumFamilyEvents eEventArray[9]
FLOAT fPercentArray[9]
eEventArray[0] = FE_M7_SON_jumping_jacks fPercentArray[0] = fCHANCE_SON_jumping_jacks
eEventArray[1] = FE_M7_SON_Gaming fPercentArray[1] = fCHANCE_SON_Gaming
eEventArray[2] = FE_M7_SON_going_for_a_bike_ride fPercentArray[2] = fCHANCE_SON_going_for_a_bike_ride
eEventArray[3] = FE_M7_SON_coming_back_from_a_bike_ride fPercentArray[3] = fCHANCE_SON_coming_back_from_a_bike_ride
eEventArray[4] = FE_M7_SON_on_laptop_looking_for_jobs fPercentArray[4] = fCHANCE_SON_on_laptop_looking_for_jobs
eEventArray[5] = FE_M7_FAMILY_watching_TV fPercentArray[5] = fCHANCE_SON_watching_TV_with_tracey
eEventArray[6] = FE_M7_FAMILY_finished_breakfast fPercentArray[6] = fCHANCE_FAMILY_finished_breakfast
eEventArray[7] = FE_M7_FAMILY_finished_pizza fPercentArray[7] = fCHANCE_FAMILY_finished_pizza
eEventArray[8] = FE_M7_FAMILY_watching_TV fPercentArray[8] = fCHANCE_FAMILY_watching_TV
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_SON,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Son_Night_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE DAUGHTER SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Daughter_Morning_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_DAUGHTER_sunbathing 15.0
CONST_FLOAT fCHANCE_DAUGHTER_doing_work_out 15.0
CONST_FLOAT fCHANCE_DAUGHTER_Going_out_in_her_car 15.0
CONST_FLOAT fCHANCE_DAUGHTER_Walking_to_room_ipod 10.0
CONST_FLOAT fCHANCE_DAUGHTER_Out 20.0
CONST_FLOAT fCHANCE_DAUGHTER_dancing_practice 15.0
enumFamilyEvents eEventArray[6]
FLOAT fPercentArray[6]
eEventArray[0] = FE_M2_DAUGHTER_sunbathing fPercentArray[0] = fCHANCE_DAUGHTER_sunbathing
eEventArray[1] = FE_M_DAUGHTER_workout_with_mp3 fPercentArray[1] = fCHANCE_DAUGHTER_doing_work_out
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_ME_TRACEY)
eEventArray[2] = FE_M_DAUGHTER_Going_out_in_her_car fPercentArray[2] = fCHANCE_DAUGHTER_Going_out_in_her_car
ELSE
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = 0.0
ENDIF
eEventArray[3] = FE_M_DAUGHTER_walks_to_room_music fPercentArray[3] = fCHANCE_DAUGHTER_Walking_to_room_ipod
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = fCHANCE_DAUGHTER_Out
eEventArray[5] = FE_M_DAUGHTER_dancing_practice fPercentArray[5] = fCHANCE_DAUGHTER_dancing_practice
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_DAUGHTER_studying_on_phone 33.33333333
CONST_FLOAT fCHANCE_DAUGHTER_studying_does_nails 33.33333333
CONST_FLOAT fCHANCE_DAUGHTER_sunbathing 33.33333333
enumFamilyEvents eEventArray[3]
FLOAT fPercentArray[3]
eEventArray[0] = FE_M7_DAUGHTER_studying_on_phone fPercentArray[0] = fCHANCE_DAUGHTER_studying_on_phone
eEventArray[1] = FE_M7_DAUGHTER_studying_does_nails fPercentArray[1] = fCHANCE_DAUGHTER_studying_does_nails
eEventArray[2] = FE_M7_DAUGHTER_sunbathing fPercentArray[2] = fCHANCE_DAUGHTER_sunbathing
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Daughter_Morning_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 12:00 - 17:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Daughter_Afternoon_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_DAUGHTER_sunbathing 15.0
CONST_FLOAT fCHANCE_DAUGHTER_purging_in_the_bathroom 10.0
CONST_FLOAT fCHANCE_DAUGHTER_on_phone 10.0
CONST_FLOAT fCHANCE_DAUGHTER_Going_out_in_her_car 10.0
CONST_FLOAT fCHANCE_DAUGHTER_shower 10.0
CONST_FLOAT fCHANCE_DAUGHTER_dancing_practice 20.0
CONST_FLOAT fCHANCE_DAUGHTER_watching_TV 10.0
CONST_FLOAT fCHANCE_DAUGHTER_couchsleep 10.0
CONST_FLOAT fCHANCE_DAUGHTER_Out 5.0
enumFamilyEvents eEventArray[10]
FLOAT fPercentArray[10]
eEventArray[0] = FE_M2_DAUGHTER_sunbathing fPercentArray[0] = fCHANCE_DAUGHTER_sunbathing
eEventArray[1] = FE_M_DAUGHTER_purges_in_the_bathroom fPercentArray[1] = fCHANCE_DAUGHTER_purging_in_the_bathroom
eEventArray[2] = FE_M_DAUGHTER_on_phone_to_friends fPercentArray[2] = fCHANCE_DAUGHTER_on_phone
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_ME_TRACEY)
eEventArray[3] = FE_M_DAUGHTER_Going_out_in_her_car fPercentArray[3] = fCHANCE_DAUGHTER_Going_out_in_her_car
ELSE
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
ENDIF
eEventArray[4] = FE_M_DAUGHTER_shower fPercentArray[4] = fCHANCE_DAUGHTER_shower
eEventArray[5] = FE_M_DAUGHTER_dancing_practice fPercentArray[5] = fCHANCE_DAUGHTER_dancing_practice
eEventArray[6] = FE_M_DAUGHTER_watching_TV_sober fPercentArray[6] = fCHANCE_DAUGHTER_watching_TV / 2.0
eEventArray[7] = FE_M_DAUGHTER_watching_TV_drunk fPercentArray[7] = fCHANCE_DAUGHTER_watching_TV / 2.0
eEventArray[8] = FE_M_DAUGHTER_couchsleep fPercentArray[8] = fCHANCE_DAUGHTER_couchsleep
eEventArray[9] = NO_FAMILY_EVENTS fPercentArray[9] = fCHANCE_DAUGHTER_Out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_DAUGHTER_studying_on_phone 33.33333333
CONST_FLOAT fCHANCE_DAUGHTER_studying_does_nails 33.33333333
CONST_FLOAT fCHANCE_DAUGHTER_sunbathing 33.33333333
enumFamilyEvents eEventArray[3]
FLOAT fPercentArray[3]
eEventArray[0] = FE_M7_DAUGHTER_studying_on_phone fPercentArray[0] = fCHANCE_DAUGHTER_studying_on_phone
eEventArray[1] = FE_M7_DAUGHTER_studying_does_nails fPercentArray[1] = fCHANCE_DAUGHTER_studying_does_nails
eEventArray[2] = FE_M7_DAUGHTER_sunbathing fPercentArray[2] = fCHANCE_DAUGHTER_sunbathing
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Daughter_Afternoon_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 18:00 - 23:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Daughter_Evening_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_DAUGHTER_purging_in_the_bathroom 10.0
CONST_FLOAT fCHANCE_DAUGHTER_screaming_to_dad 10.0
CONST_FLOAT fCHANCE_DAUGHTER_sniffing_drugs 10.0
CONST_FLOAT fCHANCE_DAUGHTER_Sex_sounds_from_room 10.0
CONST_FLOAT fCHANCE_DAUGHTER_on_phone_to_friends 10.0
CONST_FLOAT fCHANCE_DAUGHTER_crying_over_a_guy 10.0
CONST_FLOAT fCHANCE_DAUGHTER_Fighting_with_Jimmy 20.0
CONST_FLOAT fCHANCE_DAUGHTER_Going_out_in_her_car 10.0
enumFamilyEvents eEventArray[7]
FLOAT fPercentArray[7]
eEventArray[0] = FE_M_DAUGHTER_purges_in_the_bathroom fPercentArray[0] = fCHANCE_DAUGHTER_purging_in_the_bathroom
eEventArray[1] = FE_M_DAUGHTER_screaming_at_dad fPercentArray[1] = fCHANCE_DAUGHTER_screaming_to_dad
eEventArray[2] = FE_M_DAUGHTER_sniffs_drugs_in_toilet fPercentArray[2] = fCHANCE_DAUGHTER_sniffing_drugs
eEventArray[3] = FE_M_DAUGHTER_sex_sounds_from_room fPercentArray[3] = fCHANCE_DAUGHTER_Sex_sounds_from_room
eEventArray[4] = FE_M_DAUGHTER_on_phone_to_friends fPercentArray[4] = fCHANCE_DAUGHTER_on_phone_to_friends
eEventArray[5] = FE_M_DAUGHTER_crying_over_a_guy fPercentArray[5] = fCHANCE_DAUGHTER_crying_over_a_guy
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_ME_TRACEY)
eEventArray[6] = FE_M_DAUGHTER_Going_out_in_her_car fPercentArray[6] = fCHANCE_DAUGHTER_Going_out_in_her_car
ELSE
eEventArray[6] = NO_FAMILY_EVENTS fPercentArray[6] = 0.0
ENDIF
// eEventArray[7] = FE_M_SON_Fighting_with_sister_A fPercentArray[7] = fCHANCE_DAUGHTER_Fighting_with_Jimmy / 4.0
// eEventArray[8] = FE_M_SON_Fighting_with_sister_B fPercentArray[8] = fCHANCE_DAUGHTER_Fighting_with_Jimmy / 4.0
// eEventArray[9] = FE_M_SON_Fighting_with_sister_C fPercentArray[9] = fCHANCE_DAUGHTER_Fighting_with_Jimmy / 4.0
// eEventArray[10] = FE_M_SON_Fighting_with_sister_D fPercentArray[10] = fCHANCE_DAUGHTER_Fighting_with_Jimmy / 4.0
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_DAUGHTER_studying_on_phone 30.0
CONST_FLOAT fCHANCE_DAUGHTER_studying_does_nails 30.0
CONST_FLOAT fCHANCE_DAUGHTER_on_phone_to_friends 30.0
CONST_FLOAT fCHANCE_DAUGHTER_Out 10.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_M7_DAUGHTER_studying_on_phone fPercentArray[0] = fCHANCE_DAUGHTER_studying_on_phone
eEventArray[1] = FE_M7_DAUGHTER_studying_does_nails fPercentArray[1] = fCHANCE_DAUGHTER_studying_does_nails
eEventArray[2] = FE_M_DAUGHTER_on_phone_to_friends fPercentArray[2] = fCHANCE_DAUGHTER_on_phone_to_friends
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = fCHANCE_DAUGHTER_Out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Daughter_Evening_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 00:00 - 05:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Daughter_Night_Event(enumFamilyEvents &eFamilyEvent)
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_DAUGHTER_Sex_sounds_from_room 10.0
CONST_FLOAT fCHANCE_DAUGHTER_crying_over_a_guy 10.0
CONST_FLOAT fCHANCE_DAUGHTER_Coming_home_drunk 30.0
CONST_FLOAT fCHANCE_DAUGHTER_sleeping 30.0
CONST_FLOAT fCHANCE_DAUGHTER_Out 20.0
enumFamilyEvents eEventArray[5]
FLOAT fPercentArray[5]
eEventArray[0] = FE_M_DAUGHTER_sex_sounds_from_room fPercentArray[0] = fCHANCE_DAUGHTER_Sex_sounds_from_room
eEventArray[1] = FE_M_DAUGHTER_crying_over_a_guy fPercentArray[1] = fCHANCE_DAUGHTER_crying_over_a_guy
eEventArray[2] = FE_M_DAUGHTER_Coming_home_drunk fPercentArray[2] = fCHANCE_DAUGHTER_Coming_home_drunk
eEventArray[3] = FE_M_DAUGHTER_sleeping fPercentArray[3] = fCHANCE_DAUGHTER_sleeping
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = fCHANCE_DAUGHTER_Out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_DAUGHTER_studying_on_phone 30.0
CONST_FLOAT fCHANCE_DAUGHTER_studying_does_nails 30.0
CONST_FLOAT fCHANCE_DAUGHTER_sleeping 30.0
CONST_FLOAT fCHANCE_DAUGHTER_Out 10.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_M7_DAUGHTER_studying_on_phone fPercentArray[0] = fCHANCE_DAUGHTER_studying_on_phone
eEventArray[1] = FE_M7_DAUGHTER_studying_does_nails fPercentArray[1] = fCHANCE_DAUGHTER_studying_does_nails
eEventArray[2] = FE_M_DAUGHTER_sleeping fPercentArray[2] = fCHANCE_DAUGHTER_sleeping
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = fCHANCE_DAUGHTER_Out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_DAUGHTER,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Daughter_Night_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE WIFE SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
FUNC BOOL CanSchedule_FE_M_WIFE_playing_tennis()
//"launcher_tennis"
IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), <<-773.723145,168.832703,65>>, <<-772.290100,136.815643,68>>, 22)
CPRINTLN(DEBUG_FAMILY, "Player is on the tennis court. Not scheduling wife to play...")
RETURN FALSE
ENDIF
CPRINTLN(DEBUG_FAMILY, "Player is NOT on the tennis court. Wife is allowed to play.")
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Wife_Morning_Event(enumFamilyEvents &eFamilyEvent)
IF Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_M7_FAKEYOGA
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_WIFE_screams_at_Mexican_maid 10.0
CONST_FLOAT fCHANCE_WIFE_in_face_mask 20.0
CONST_FLOAT fCHANCE_WIFE_doing_yoga_OR_Tennis 20.0
// CONST_FLOAT fCHANCE_WIFE_getting_nails_done 20.0
CONST_FLOAT fCHANCE_WIFE_Out 10.0
CONST_FLOAT fCHANCE_WIFE_leaving_in_car 10.0
enumFamilyEvents eEventArray[7-1-1]
FLOAT fPercentArray[7-1-1]
eEventArray[0] = FE_M_WIFE_screams_at_mexmaid fPercentArray[0] = fCHANCE_WIFE_screams_at_Mexican_maid
eEventArray[1] = FE_M2_WIFE_in_face_mask fPercentArray[1] = fCHANCE_WIFE_in_face_mask
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_3)
IF CanSchedule_FE_M_WIFE_playing_tennis()
eEventArray[2] = FE_M_WIFE_playing_tennis
fPercentArray[2] = fCHANCE_WIFE_doing_yoga_OR_Tennis
ELSE
eEventArray[2] = NO_FAMILY_EVENTS
fPercentArray[2] = 0.0
ENDIF
ELSE
eEventArray[2] = FE_M2_WIFE_doing_yoga
fPercentArray[2] = fCHANCE_WIFE_doing_yoga_OR_Tennis
ENDIF
// eEventArray[3] = FE_M_WIFE_getting_nails_done fPercentArray[3] = fCHANCE_WIFE_getting_nails_done
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = fCHANCE_WIFE_Out
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_5) //865391
// eEventArray[4] = FE_M_WIFE_leaving_in_car_v2 fPercentArray[4] = fCHANCE_WIFE_leaving_in_car / 2.0
eEventArray[6-1-1] = FE_M_WIFE_leaving_in_car fPercentArray[6-1-1] = fCHANCE_WIFE_leaving_in_car
ELSE
// eEventArray[5-1-1] = NO_FAMILY_EVENTS fPercentArray[5-1-1] = 0.0
eEventArray[6-1-1] = NO_FAMILY_EVENTS fPercentArray[6-1-1] = 0.0
ENDIF
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_WIFE_Making_juice 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_daughter 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_son 25.0
CONST_FLOAT fCHANCE_WIFE_on_phone 25.0
CONST_FLOAT fCHANCE_WIFE_in_face_mask 20.0
CONST_FLOAT fCHANCE_WIFE_doing_yoga_OR_Tennis 20.0
enumFamilyEvents eEventArray[6]
FLOAT fPercentArray[6]
eEventArray[0] = FE_M7_WIFE_Making_juice fPercentArray[0] = fCHANCE_WIFE_Making_juice
eEventArray[1] = FE_M7_WIFE_shopping_with_daughter fPercentArray[1] = fCHANCE_WIFE_shopping_with_daughter
// eEventArray[2] = FE_M7_WIFE_shopping_with_son fPercentArray[2] = fCHANCE_WIFE_shopping_with_son
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = 0.0
// eEventArray[3] = FE_M7_WIFE_on_phone fPercentArray[3] = fCHANCE_WIFE_on_phone
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
eEventArray[4] = FE_M7_WIFE_in_face_mask fPercentArray[4] = fCHANCE_WIFE_in_face_mask
eEventArray[5] = FE_M7_WIFE_doing_yoga fPercentArray[5] = fCHANCE_WIFE_doing_yoga_OR_Tennis
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Wife_Morning_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 12:00 - 17:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Wife_Afternoon_Event(enumFamilyEvents &eFamilyEvent)
IF Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_M7_FAKEYOGA
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_WIFE_screams_at_Mexican_maid 10.0
CONST_FLOAT fCHANCE_WIFE_with_shopping_bags_enter 10.0
CONST_FLOAT fCHANCE_WIFE_gets_drink_in_kitchen 10.0
CONST_FLOAT fCHANCE_WIFE_sunbathing 20.0
CONST_FLOAT fCHANCE_WIFE_doing_yoga_OR_Tennis 10.0
// CONST_FLOAT fCHANCE_WIFE_getting_botox_done 5.0 //20.0
CONST_FLOAT fCHANCE_WIFE_passed_out_SOFA 15.0 //10.0
CONST_FLOAT fCHANCE_WIFE_Out 10.0
enumFamilyEvents eEventArray[7]
FLOAT fPercentArray[7]
eEventArray[0] = FE_M_WIFE_screams_at_mexmaid fPercentArray[0] = fCHANCE_WIFE_screams_at_Mexican_maid
eEventArray[1] = FE_M2_WIFE_with_shopping_bags_enter fPercentArray[1] = fCHANCE_WIFE_with_shopping_bags_enter
eEventArray[2] = FE_M_WIFE_gets_drink_in_kitchen fPercentArray[2] = fCHANCE_WIFE_gets_drink_in_kitchen
eEventArray[3] = FE_M2_WIFE_sunbathing fPercentArray[3] = fCHANCE_WIFE_sunbathing
// eEventArray[4] = FE_M_WIFE_getting_botox_done fPercentArray[4] = fCHANCE_WIFE_getting_botox_done
eEventArray[4] = FE_M2_WIFE_passed_out_SOFA fPercentArray[4] = fCHANCE_WIFE_passed_out_SOFA
eEventArray[6-1] = NO_FAMILY_EVENTS fPercentArray[6-1] = fCHANCE_WIFE_Out
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_3)
IF CanSchedule_FE_M_WIFE_playing_tennis()
eEventArray[7-1] = FE_M_WIFE_playing_tennis
fPercentArray[7-1] = fCHANCE_WIFE_doing_yoga_OR_Tennis
ELSE
eEventArray[7-1] = NO_FAMILY_EVENTS
fPercentArray[7-1] = 0.0
ENDIF
ELSE
eEventArray[7-1] = FE_M2_WIFE_doing_yoga
fPercentArray[7-1] = fCHANCE_WIFE_doing_yoga_OR_Tennis
ENDIF
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_WIFE_Making_juice 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_daughter 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_son 25.0
CONST_FLOAT fCHANCE_WIFE_on_phone 25.0
CONST_FLOAT fCHANCE_WIFE_sunbathing 20.0
CONST_FLOAT fCHANCE_WIFE_doing_yoga_OR_Tennis 10.0
CONST_FLOAT fCHANCE_WIFE_passed_out_SOFA 15.0 //10.0
CONST_FLOAT fCHANCE_WIFE_with_shopping_bags_enter 10.0
enumFamilyEvents eEventArray[8]
FLOAT fPercentArray[8]
eEventArray[0] = FE_M7_WIFE_Making_juice fPercentArray[0] = fCHANCE_WIFE_Making_juice
eEventArray[1] = FE_M7_WIFE_shopping_with_daughter fPercentArray[1] = fCHANCE_WIFE_shopping_with_daughter
// eEventArray[2] = FE_M7_WIFE_shopping_with_son fPercentArray[2] = fCHANCE_WIFE_shopping_with_son
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = 0.0
// eEventArray[3] = FE_M7_WIFE_on_phone fPercentArray[3] = fCHANCE_WIFE_on_phone
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
eEventArray[4] = FE_M7_WIFE_doing_yoga fPercentArray[5] = fCHANCE_WIFE_doing_yoga_OR_Tennis
eEventArray[5] = FE_M7_WIFE_passed_out_SOFA fPercentArray[5] = fCHANCE_WIFE_passed_out_SOFA
eEventArray[6] = FE_M7_WIFE_sunbathing fPercentArray[6] = fCHANCE_WIFE_sunbathing
eEventArray[7] = FE_M7_WIFE_with_shopping_bags_enter fPercentArray[7] = fCHANCE_WIFE_with_shopping_bags_enter
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Wife_Afternoon_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 18:00 - 23:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Wife_Evening_Event(enumFamilyEvents &eFamilyEvent)
IF Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_M7_FAKEYOGA
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_WIFE_in_face_mask 20.0
CONST_FLOAT fCHANCE_WIFE_passed_out_SOFA 20.0
CONST_FLOAT fCHANCE_WIFE_Out 25.0
CONST_FLOAT fCHANCE_WIFE_screaming_at_son 7.5
CONST_FLOAT fCHANCE_WIFE_screaming_at_daughter 7.5
CONST_FLOAT fCHANCE_WIFE_phones_man_OR_therapist 10.0
enumFamilyEvents eEventArray[8]
FLOAT fPercentArray[8]
eEventArray[0] = FE_M2_WIFE_in_face_mask fPercentArray[0] = fCHANCE_WIFE_in_face_mask
eEventArray[1] = FE_M2_WIFE_passed_out_SOFA fPercentArray[1] = fCHANCE_WIFE_passed_out_SOFA
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = fCHANCE_WIFE_Out
// eEventArray[3] = FE_M_WIFE_screaming_at_son_P1 fPercentArray[3] = fCHANCE_WIFE_screaming_at_son / 3.0
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
eEventArray[4] = FE_M_WIFE_screaming_at_son_P2 fPercentArray[4] = fCHANCE_WIFE_screaming_at_son / 3.0
eEventArray[5] = FE_M_WIFE_screaming_at_son_P3 fPercentArray[5] = fCHANCE_WIFE_screaming_at_son / 3.0
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //tracey leaves after fam4
eEventArray[6] = FE_M_WIFE_screaming_at_daughter fPercentArray[6] = fCHANCE_WIFE_screaming_at_daughter
ELSE
eEventArray[6] = NO_FAMILY_EVENTS fPercentArray[6] = 0.0
ENDIF
eEventArray[7] = FE_M2_WIFE_phones_man_OR_therapist fPercentArray[7] = fCHANCE_WIFE_phones_man_OR_therapist
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_WIFE_Making_juice 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_daughter 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_son 25.0
CONST_FLOAT fCHANCE_WIFE_on_phone 25.0
CONST_FLOAT fCHANCE_WIFE_in_face_mask 20.0
CONST_FLOAT fCHANCE_WIFE_passed_out_SOFA 20.0
CONST_FLOAT fCHANCE_WIFE_phones_man_OR_therapist 10.0
enumFamilyEvents eEventArray[7]
FLOAT fPercentArray[7]
eEventArray[0] = FE_M7_WIFE_Making_juice fPercentArray[0] = fCHANCE_WIFE_Making_juice
eEventArray[1] = FE_M7_WIFE_shopping_with_daughter fPercentArray[1] = fCHANCE_WIFE_shopping_with_daughter
// eEventArray[2] = FE_M7_WIFE_shopping_with_son fPercentArray[2] = fCHANCE_WIFE_shopping_with_son
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = 0.0
// eEventArray[3] = FE_M7_WIFE_on_phone fPercentArray[3] = fCHANCE_WIFE_on_phone
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
eEventArray[4] = FE_M7_WIFE_in_face_mask fPercentArray[4] = fCHANCE_WIFE_in_face_mask
eEventArray[5] = FE_M7_WIFE_passed_out_SOFA fPercentArray[5] = fCHANCE_WIFE_passed_out_SOFA
eEventArray[6] = FE_M7_WIFE_phones_man_OR_therapist fPercentArray[6] = fCHANCE_WIFE_phones_man_OR_therapist
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Wife_Evening_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 00:00 - 05:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Wife_Night_Event(enumFamilyEvents &eFamilyEvent)
IF Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_M7_FAKEYOGA
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_WIFE_using_vibrator 10.0
CONST_FLOAT fCHANCE_WIFE_passed_out_BED 10.0
CONST_FLOAT fCHANCE_WIFE_sleeping 70.0
CONST_FLOAT fCHANCE_WIFE_Out 10.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
#IF NOT IS_JAPANESE_BUILD
eEventArray[0] = FE_M2_WIFE_using_vibrator fPercentArray[0] = fCHANCE_WIFE_using_vibrator
#ENDIF
#IF IS_JAPANESE_BUILD
eEventArray[0] = FE_M2_WIFE_sleeping fPercentArray[0] = fCHANCE_WIFE_using_vibrator
#ENDIF
eEventArray[1] = FE_M_WIFE_passed_out_BED fPercentArray[1] = fCHANCE_WIFE_passed_out_BED
eEventArray[2] = FE_M2_WIFE_sleeping fPercentArray[2] = fCHANCE_WIFE_sleeping
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = fCHANCE_WIFE_Out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#1153884
eFamilyEvent = FE_M_FAMILY_MIC4_locked_in_room
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_WIFE_Making_juice 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_daughter 25.0
CONST_FLOAT fCHANCE_WIFE_shopping_with_son 25.0
CONST_FLOAT fCHANCE_WIFE_on_phone 25.0
CONST_FLOAT fCHANCE_WIFE_using_vibrator 10.0
CONST_FLOAT fCHANCE_WIFE_sleeping 20.0
enumFamilyEvents eEventArray[6]
FLOAT fPercentArray[6]
eEventArray[0] = FE_M7_WIFE_Making_juice fPercentArray[0] = fCHANCE_WIFE_Making_juice
eEventArray[1] = FE_M7_WIFE_shopping_with_daughter fPercentArray[1] = fCHANCE_WIFE_shopping_with_daughter
// eEventArray[2] = FE_M7_WIFE_shopping_with_son fPercentArray[2] = fCHANCE_WIFE_shopping_with_son
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = 0.0
// eEventArray[3] = FE_M7_WIFE_on_phone fPercentArray[3] = fCHANCE_WIFE_on_phone
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
#IF NOT IS_JAPANESE_BUILD
eEventArray[4] = FE_M7_WIFE_using_vibrator fPercentArray[4] = fCHANCE_WIFE_using_vibrator
#ENDIF
#IF IS_JAPANESE_BUILD
eEventArray[4] = FE_M7_WIFE_sleeping fPercentArray[4] = fCHANCE_WIFE_using_vibrator
#ENDIF
eEventArray[5] = FE_M7_WIFE_sleeping fPercentArray[5] = fCHANCE_WIFE_sleeping
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Wife_Night_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE MEXMAID SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_MexMaid_Morning_Event(enumFamilyEvents &eFamilyEvent)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#815139
IF NOT HasTimeToWaitPassedFromLastPassedMission(60.0*60.0) //#1167871
eFamilyEvent = FE_M_MEXMAID_MIC4_clean_window
RETURN TRUE
ENDIF
ENDIF
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_MEXMAID_cleaning_up 20.0
CONST_FLOAT fCHANCE_MEXMAID_does_the_dishes 20.0
// CONST_FLOAT fCHANCE_MEXMAID_cooking_for_son 20.0
// CONST_FLOAT fCHANCE_MEXMAID_watching_TV 20.0
CONST_FLOAT fCHANCE_MEXMAID_out 10.0
enumFamilyEvents eEventArray[5-1-1]
FLOAT fPercentArray[5-1-1]
eEventArray[0] = FE_M2_MEXMAID_cleans_booze_pot_other fPercentArray[0] = fCHANCE_MEXMAID_cleaning_up
eEventArray[1] = FE_M_MEXMAID_does_the_dishes fPercentArray[1] = fCHANCE_MEXMAID_does_the_dishes
// eEventArray[2] = FE_M_MEXMAID_cooking_for_son fPercentArray[2] = fCHANCE_MEXMAID_cooking_for_son
// eEventArray[2] = FE_M_MEXMAID_watching_TV fPercentArray[2] = fCHANCE_MEXMAID_watching_TV
eEventArray[4-1-1] = NO_FAMILY_EVENTS fPercentArray[4-1-1] = fCHANCE_MEXMAID_out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_MEXMAID,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
CONST_FLOAT fCHANCE_MEXMAID_cleaning_up 20.0
CONST_FLOAT fCHANCE_MEXMAID_does_the_dishes 20.0
// CONST_FLOAT fCHANCE_MEXMAID_cooking_for_son 20.0
CONST_FLOAT fCHANCE_MEXMAID_watching_TV 20.0
CONST_FLOAT fCHANCE_MEXMAID_out 20.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_M7_MEXMAID_cleans_booze_pot_other fPercentArray[0] = fCHANCE_MEXMAID_cleaning_up
eEventArray[1] = FE_M_MEXMAID_does_the_dishes fPercentArray[1] = fCHANCE_MEXMAID_does_the_dishes
// eEventArray[2] = FE_M_MEXMAID_cooking_for_son fPercentArray[2] = fCHANCE_MEXMAID_cooking_for_son
// eEventArray[2] = FE_M_MEXMAID_watching_TV fPercentArray[2] = fCHANCE_MEXMAID_watching_TV
eEventArray[4-1-1] = NO_FAMILY_EVENTS fPercentArray[4-1-1] = fCHANCE_MEXMAID_out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_MEXMAID,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_MexMaid_Morning_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
/// PURPOSE:
/// 12:00 - 17:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_MexMaid_Afternoon_Event(enumFamilyEvents &eFamilyEvent)
IF (g_eLastMissionPassed = SP_MISSION_MICHAEL_4) //#815139
IF NOT HasTimeToWaitPassedFromLastPassedMission(60.0*60.0) //#1167871
eFamilyEvent = FE_M_MEXMAID_MIC4_clean_window
RETURN TRUE
ENDIF
ENDIF
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_MEXMAID_cleaning_up 25.0 //20.0
// CONST_FLOAT fCHANCE_MEXMAID_watching_TV 25.0 //20.0
CONST_FLOAT fCHANCE_MEXMAID_stealing_stuff 25.0 //20.0
CONST_FLOAT fCHANCE_MEXMAID_out 12.5 //20.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_M2_MEXMAID_cleans_booze_pot_other fPercentArray[0] = fCHANCE_MEXMAID_cleaning_up
// eEventArray[1] = FE_M_MEXMAID_watching_TV fPercentArray[1] = fCHANCE_MEXMAID_watching_TV
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_4) //1416624
eEventArray[2-1] = FE_M_MEXMAID_stealing_stuff fPercentArray[2-1] = fCHANCE_MEXMAID_stealing_stuff
ELSE
eEventArray[2-1] = NO_FAMILY_EVENTS fPercentArray[2-1] = 0.0
ENDIF
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = fCHANCE_MEXMAID_out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_MEXMAID,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
CONST_FLOAT fCHANCE_MEXMAID_cleaning_up 25.0 //20.0
// CONST_FLOAT fCHANCE_MEXMAID_watching_TV 25.0 //20.0
CONST_FLOAT fCHANCE_MEXMAID_stealing_stuff 25.0 //20.0
CONST_FLOAT fCHANCE_MEXMAID_out 12.5 //20.0
enumFamilyEvents eEventArray[3]
FLOAT fPercentArray[3]
eEventArray[0] = FE_M7_MEXMAID_cleans_booze_pot_other fPercentArray[0] = fCHANCE_MEXMAID_cleaning_up
// eEventArray[1] = FE_M_MEXMAID_watching_TV fPercentArray[1] = fCHANCE_MEXMAID_watching_TV
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_4) //1416624
eEventArray[2-1] = FE_M_MEXMAID_stealing_stuff fPercentArray[2-1] = fCHANCE_MEXMAID_stealing_stuff
ELSE
eEventArray[2-1] = NO_FAMILY_EVENTS fPercentArray[2-1] = 0.0
ENDIF
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = fCHANCE_MEXMAID_out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_MEXMAID,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_MexMaid_Afternoon_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE GARDENER SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Michael_Gardener_Morning_Event(enumFamilyEvents &eFamilyEvent)
IF (g_eLastMissionPassed = SP_MISSION_FAMILY_3)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
enumMichaelScheduleStage thisMichaelScheduleStage = GetMichaelScheduleStage()
IF (thisMichaelScheduleStage = MSS_M2_WithFamily)
CONST_FLOAT fCHANCE_GARDENER_with_leaf_blower 12.5
CONST_FLOAT fCHANCE_GARDENER_planting_flowers 12.5
CONST_FLOAT fCHANCE_GARDENER_trimming_hedges 12.5
CONST_FLOAT fCHANCE_GARDENER_mowing_lawn 12.5
CONST_FLOAT fCHANCE_GARDENER_watering_flowers 12.5
CONST_FLOAT fCHANCE_GARDENER_spraying_for_weeds 12.5
CONST_FLOAT fCHANCE_GARDENER_cleaning_pool 12.5
CONST_FLOAT fCHANCE_GARDENER_on_phone 12.5
CONST_FLOAT fCHANCE_GARDENER_smoking_weed 12.0
CONST_FLOAT fCHANCE_GARDENER_out 0.5
enumFamilyEvents eEventArray[8]
FLOAT fPercentArray[8]
eEventArray[0] = FE_M_GARDENER_with_leaf_blower fPercentArray[0] = fCHANCE_GARDENER_with_leaf_blower
eEventArray[1] = FE_M_GARDENER_planting_flowers fPercentArray[1] = fCHANCE_GARDENER_planting_flowers
eEventArray[2] = FE_M_GARDENER_mowing_lawn fPercentArray[2] = fCHANCE_GARDENER_mowing_lawn
eEventArray[3] = FE_M_GARDENER_watering_flowers fPercentArray[3] = fCHANCE_GARDENER_watering_flowers
IF NOT IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_1)
eEventArray[4] = FE_M_GARDENER_cleaning_pool fPercentArray[4] = fCHANCE_GARDENER_cleaning_pool
ELSE
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = 0.0
ENDIF
eEventArray[5] = FE_M_GARDENER_on_phone fPercentArray[6-1] = fCHANCE_GARDENER_on_phone
eEventArray[6] = FE_M_GARDENER_smoking_weed fPercentArray[7-1] = fCHANCE_GARDENER_smoking_weed
eEventArray[7] = NO_FAMILY_EVENTS fPercentArray[7] = fCHANCE_GARDENER_out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_GARDENER,
eEventArray, fPercentArray,
eFamilyEvent)
ELIF (thisMichaelScheduleStage = MSS_M4_WithoutFamily)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF ((thisMichaelScheduleStage = MSS_M6_Exiled) OR (thisMichaelScheduleStage = MSS_M9_killedMichael))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ELIF (thisMichaelScheduleStage = MSS_M7_ReunitedWithFamily)
CONST_FLOAT fCHANCE_GARDENER_with_leaf_blower 12.5
CONST_FLOAT fCHANCE_GARDENER_planting_flowers 12.5
CONST_FLOAT fCHANCE_GARDENER_trimming_hedges 12.5
CONST_FLOAT fCHANCE_GARDENER_mowing_lawn 12.5
CONST_FLOAT fCHANCE_GARDENER_watering_flowers 12.5
CONST_FLOAT fCHANCE_GARDENER_spraying_for_weeds 12.5
CONST_FLOAT fCHANCE_GARDENER_cleaning_pool 12.5
CONST_FLOAT fCHANCE_GARDENER_on_phone 12.5
CONST_FLOAT fCHANCE_GARDENER_smoking_weed 12.0
CONST_FLOAT fCHANCE_GARDENER_out 0.5
enumFamilyEvents eEventArray[8]
FLOAT fPercentArray[8]
eEventArray[0] = FE_M_GARDENER_with_leaf_blower fPercentArray[0] = fCHANCE_GARDENER_with_leaf_blower
eEventArray[1] = FE_M_GARDENER_planting_flowers fPercentArray[1] = fCHANCE_GARDENER_planting_flowers
// eEventArray[2] = FE_M_GARDENER_trimming_hedges fPercentArray[2] = fCHANCE_GARDENER_trimming_hedges
eEventArray[2] = FE_M_GARDENER_mowing_lawn fPercentArray[2] = fCHANCE_GARDENER_mowing_lawn
eEventArray[3] = FE_M_GARDENER_watering_flowers fPercentArray[3] = fCHANCE_GARDENER_watering_flowers
eEventArray[4] = FE_M_GARDENER_cleaning_pool fPercentArray[4] = fCHANCE_GARDENER_cleaning_pool
eEventArray[6-1] = FE_M_GARDENER_on_phone fPercentArray[6-1] = fCHANCE_GARDENER_on_phone
eEventArray[7-1] = FE_M_GARDENER_smoking_weed fPercentArray[7-1] = fCHANCE_GARDENER_smoking_weed
eEventArray[7] = NO_FAMILY_EVENTS fPercentArray[7] = fCHANCE_GARDENER_out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_MICHAEL_GARDENER,
eEventArray, fPercentArray,
eFamilyEvent)
ELSE
SCRIPT_ASSERT("invalid thisMichaelScheduleStage in PRIVATE_Get_Desired_Michael_Gardener_Morning_Event()")
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE AUNT SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Franklin_Aunt_Event(enumFamilyEvents &eFamilyEvent)
IF IS_MISSION_AVAILABLE(SP_MISSION_ARMENIAN_1) //1350535
OR (g_eLastMissionPassed = SP_MISSION_ARMENIAN_1) //555813
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
//#1582147
IF (g_eSelectedPlayerCharScene = PR_SCENE_F0_TANISHAFIGHT)
IF IS_PLAYER_SWITCH_IN_PROGRESS()
OR Is_Player_Timetable_Scene_In_Progress()
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT)
eFamilyEvent = FE_F_AUNT_returned_to_aunts
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_F_AUNT_pelvic_floor_exercises 25.0
CONST_FLOAT fCHANCE_F_AUNT_in_face_mask 25.0
CONST_FLOAT fCHANCE_F_AUNT_watching_TV 25.0
CONST_FLOAT fCHANCE_F_AUNT_listens_to_selfhelp_tapes 25.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_F_AUNT_pelvic_floor_exercises fPercentArray[0] = fCHANCE_F_AUNT_pelvic_floor_exercises
eEventArray[1] = FE_F_AUNT_in_face_mask fPercentArray[1] = fCHANCE_F_AUNT_in_face_mask
eEventArray[2] = FE_F_AUNT_watching_TV fPercentArray[2] = fCHANCE_F_AUNT_watching_TV
eEventArray[3] = FE_F_AUNT_listens_to_selfhelp_tapes_x fPercentArray[3] = fCHANCE_F_AUNT_listens_to_selfhelp_tapes
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_FRANKLIN_AUNT,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
/*
// *******************************************************************************************
// FAMILY PRIVATE LAMAR SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Franklin_Lamar_Event(enumFamilyEvents &eFamilyEvent)
IF g_eCurrentFamilyEvent[FM_FRANKLIN_STRETCH] = FAMILY_MEMBER_BUSY
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN FALSE
ENDIF
IF (g_eLastMissionPassed = SP_MISSION_LAMAR)
eFamilyEvent = FE_F_LAMAR_and_STRETCH_wandering
RETURN TRUE
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT) //1128582
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_chill_outside 25.0
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_bbq_outside 25.0
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_arguing 25.0
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_shout_at_cops 25.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_F_LAMAR_and_STRETCH_chill_outside fPercentArray[0] = fCHANCE_F_LAMAR_and_STRETCH_chill_outside
eEventArray[1] = FE_F_LAMAR_and_STRETCH_bbq_outside fPercentArray[1] = fCHANCE_F_LAMAR_and_STRETCH_bbq_outside
eEventArray[2] = FE_F_LAMAR_and_STRETCH_arguing fPercentArray[2] = fCHANCE_F_LAMAR_and_STRETCH_arguing
// IF NOT IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_1) //#1097888
// eEventArray[3] = FE_F_LAMAR_and_STRETCH_shout_at_cops fPercentArray[3] = fCHANCE_F_LAMAR_and_STRETCH_shout_at_cops
// ELSE
// eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
// ENDIF
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_FRANKLIN_LAMAR,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE STRETCH SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Franklin_Stretch_Event(enumFamilyEvents &eFamilyEvent)
IF g_eCurrentFamilyEvent[FM_FRANKLIN_LAMAR] = FAMILY_MEMBER_BUSY
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN FALSE
ENDIF
IF (g_eLastMissionPassed = SP_MISSION_LAMAR)
eFamilyEvent = FE_F_LAMAR_and_STRETCH_wandering
RETURN TRUE
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT) //1128582
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_chill_outside 25.0
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_bbq_outside 25.0
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_arguing 25.0
CONST_FLOAT fCHANCE_F_LAMAR_and_STRETCH_shout_at_cops 25.0
enumFamilyEvents eEventArray[5]
FLOAT fPercentArray[5]
eEventArray[0] = FE_F_LAMAR_and_STRETCH_chill_outside fPercentArray[0] = fCHANCE_F_LAMAR_and_STRETCH_chill_outside
eEventArray[1] = FE_F_LAMAR_and_STRETCH_bbq_outside fPercentArray[1] = fCHANCE_F_LAMAR_and_STRETCH_bbq_outside
eEventArray[2] = FE_F_LAMAR_and_STRETCH_arguing fPercentArray[2] = fCHANCE_F_LAMAR_and_STRETCH_arguing
// IF NOT IS_MISSION_AVAILABLE(SP_MISSION_FAMILY_1) //#1097888
// eEventArray[3] = FE_F_LAMAR_and_STRETCH_shout_at_cops fPercentArray[3] = fCHANCE_F_LAMAR_and_STRETCH_shout_at_cops
// ELSE
// eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
// ENDIF
eEventArray[4] = FE_F_LAMAR_and_STRETCH_wandering fPercentArray[4] = 1.0
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_FRANKLIN_STRETCH,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
*/
// *******************************************************************************************
// FAMILY PRIVATE RON 0 SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Trevor_0_Ron_Event(enumFamilyEvents &eFamilyEvent)
//#1494189
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))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
CONST_FLOAT fCHANCE_RON_monitoring_police_frequency 16.6
CONST_FLOAT fCHANCE_RON_listens_to_radio_broadcast 16.6
CONST_FLOAT fCHANCE_RON_ranting_about_government 16.6
CONST_FLOAT fCHANCE_RON_smoking_crystal 16.6
CONST_FLOAT fCHANCE_RON_drinks_moonshine_from_a_jar 16.6
CONST_FLOAT fCHANCE_RON_stares_through_binoculars 16.6
CONST_FLOAT fCHANCE_RONEX_outside_looking_lonely 20.0
CONST_FLOAT fCHANCE_RONEX_trying_to_pick_up_signals 20.0
CONST_FLOAT fCHANCE_RONEX_working_a_moonshine_sill 20.0
CONST_FLOAT fCHANCE_RONEX_doing_target_practice 20.0
CONST_FLOAT fCHANCE_RONEX_conspiracies_boring_Michael 20.0
enumFamilyEvents eEventArray[6]
FLOAT fPercentArray[6]
IF g_eLastMissionPassed = SP_MISSION_TREVOR_1 //#1492828
IF HasTimeToWaitPassedFromLastPassedMission(60.0)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
ENDIF
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
IF NOT IS_PED_THE_CURRENT_PLAYER_PED(CHAR_TREVOR)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
eEventArray[0] = FE_T0_RON_monitoring_police_frequency fPercentArray[0] = fCHANCE_RON_monitoring_police_frequency
eEventArray[1] = FE_T0_RON_listens_to_radio_broadcast fPercentArray[1] = fCHANCE_RON_listens_to_radio_broadcast
eEventArray[2] = FE_T0_RON_ranting_about_government_LAYING fPercentArray[2] = fCHANCE_RON_ranting_about_government
eEventArray[3] = FE_T0_RON_smoking_crystal fPercentArray[3] = fCHANCE_RON_smoking_crystal
eEventArray[4] = FE_T0_RON_drinks_moonshine_from_a_jar fPercentArray[4] = fCHANCE_RON_drinks_moonshine_from_a_jar
INT iGET_CLOCK_HOURS = GET_CLOCK_HOURS()
IF (iGET_CLOCK_HOURS > 20 or iGET_CLOCK_HOURS < 6)
eEventArray[5] = FE_T0_RON_stares_through_binoculars fPercentArray[5] = fCHANCE_RON_stares_through_binoculars
ELSE
eEventArray[5] = NO_FAMILY_EVENTS fPercentArray[5] = 0.0
ENDIF
ELSE
IF NOT IS_PED_THE_CURRENT_PLAYER_PED(CHAR_TREVOR)
IF IS_MISSION_AVAILABLE(SP_MISSION_EXILE_2)
eFamilyEvent = FE_T0_RONEX_outside_looking_lonely
RETURN TRUE
ENDIF
eEventArray[0] = FE_T0_RONEX_outside_looking_lonely fPercentArray[0] = fCHANCE_RONEX_outside_looking_lonely
ELSE
INT iGET_CLOCK_HOURS = GET_CLOCK_HOURS()
IF (iGET_CLOCK_HOURS > 20 or iGET_CLOCK_HOURS < 6)
eEventArray[0] = FE_T0_RON_stares_through_binoculars fPercentArray[0] = fCHANCE_RON_stares_through_binoculars
ELSE
eEventArray[0] = NO_FAMILY_EVENTS fPercentArray[0] = 0.0
ENDIF
ENDIF
eEventArray[1] = FE_T0_RONEX_trying_to_pick_up_signals fPercentArray[1] = fCHANCE_RONEX_trying_to_pick_up_signals
eEventArray[2] = FE_T0_RONEX_working_a_moonshine_sill fPercentArray[2] = fCHANCE_RONEX_working_a_moonshine_sill
eEventArray[3] = FE_T0_RONEX_doing_target_practice fPercentArray[3] = fCHANCE_RONEX_doing_target_practice
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = 0.0
eEventArray[5] = NO_FAMILY_EVENTS fPercentArray[5] = 0.0
ENDIF
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_TREVOR_0_RON,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE MICHAEL 1 SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Trevor_0_Michael_Event(enumFamilyEvents &eFamilyEvent)
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))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF NOT ScheduleEventForThisChar(CHAR_MICHAEL)
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN FALSE
ENDIF
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_EXILE_1)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
CONST_FLOAT fCHANCE_MICHAEL_depressed_head_in_hands 25.0
CONST_FLOAT fCHANCE_MICHAEL_sunbathing 25.0
CONST_FLOAT fCHANCE_MICHAEL_drinking_beer 25.0
CONST_FLOAT fCHANCE_MICHAEL_on_phone_to_therapist 25.0
enumFamilyEvents eEventArray[4]
FLOAT fPercentArray[4]
eEventArray[0] = FE_T0_MICHAEL_depressed_head_in_hands fPercentArray[0] = fCHANCE_MICHAEL_depressed_head_in_hands
eEventArray[1] = FE_T0_MICHAEL_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[1] = fCHANCE_MICHAEL_sunbathing * 2.0
ELSE
fPercentArray[1] = fCHANCE_MICHAEL_sunbathing
ENDIF
eEventArray[2] = FE_T0_MICHAEL_drinking_beer fPercentArray[2] = fCHANCE_MICHAEL_drinking_beer
eEventArray[3] = FE_T0_MICHAEL_on_phone_to_therapist fPercentArray[3] = fCHANCE_MICHAEL_on_phone_to_therapist
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_TREVOR_0_MICHAEL,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE TREVOR 1 SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Trevor_0_Trevor_Event(enumFamilyEvents &eFamilyEvent)
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))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF NOT ScheduleEventForThisChar(CHAR_TREVOR)
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN FALSE
ENDIF
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
CONST_FLOAT fCHANCE_TREVOR_and_kidnapped_wife_walk 15.0
CONST_FLOAT fCHANCE_TREVOR_and_kidnapped_wife_stare 12.5
CONST_FLOAT fCHANCE_TREVOR_smoking_crystal 15.0
CONST_FLOAT fCHANCE_TREVOR_doing_a_shit 15.0
CONST_FLOAT fCHANCE_TREVOR_and_kidnapped_wife_laugh 12.5
CONST_FLOAT fCHANCE_TREVOR_blowing_shit_up 15.0
CONST_FLOAT fCHANCE_TREVOR_passed_out_naked_drunk 15.0
enumFamilyEvents eEventArray[7]
FLOAT fPercentArray[7]
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_5)
eEventArray[0] = FE_T0_TREVOR_and_kidnapped_wife_walk fPercentArray[0] = fCHANCE_TREVOR_and_kidnapped_wife_walk
eEventArray[1] = FE_T0_TREVOR_and_kidnapped_wife_stare fPercentArray[1] = fCHANCE_TREVOR_and_kidnapped_wife_stare
//eEventArray[4] = FE_T0_TREVOR_and_kidnapped_wife_laugh fPercentArray[4] = fCHANCE_TREVOR_and_kidnapped_wife_laugh
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = 0.0
ELSE
eEventArray[0] = NO_FAMILY_EVENTS fPercentArray[0] = 0.0
eEventArray[1] = NO_FAMILY_EVENTS fPercentArray[1] = 0.0
eEventArray[4] = NO_FAMILY_EVENTS fPercentArray[4] = 0.0
ENDIF
eEventArray[2] = FE_T0_TREVOR_smoking_crystal fPercentArray[2] = fCHANCE_TREVOR_smoking_crystal
#IF NOT IS_JAPANESE_BUILD
eEventArray[3] = FE_T0_TREVOR_doing_a_shit fPercentArray[3] = fCHANCE_TREVOR_doing_a_shit
#ENDIF
#IF IS_JAPANESE_BUILD
eEventArray[3] = NO_FAMILY_EVENTS fPercentArray[3] = 0.0
#ENDIF
eEventArray[5] = FE_T0_TREVOR_blowing_shit_up fPercentArray[5] = fCHANCE_TREVOR_blowing_shit_up
eEventArray[6] = FE_T0_TREVOR_passed_out_naked_drunk fPercentArray[6] = fCHANCE_TREVOR_passed_out_naked_drunk
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_TREVOR_0_TREVOR,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE WIFE 1 SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Trevor_0_Wife_Event(enumFamilyEvents &eFamilyEvent)
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))
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_STARTED)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FBI_5)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF IS_MISSION_AVAILABLE(SP_MISSION_EXILE_2)
eFamilyEvent = FE_T0_KIDNAPPED_WIFE_cleaning
RETURN TRUE
ENDIF
CONST_FLOAT fCHANCE_kidnapped_wife_cleaning 25.0
CONST_FLOAT fCHANCE_kidnapped_wife_does_garden_work 25.0
CONST_FLOAT fCHANCE_kidnapped_wife_talks_to_Michael 25.0
CONST_FLOAT fCHANCE_kidnapped_wife_cooking_a_meal 25.0
enumFamilyEvents eEventArray[3]
FLOAT fPercentArray[3]
eEventArray[0] = FE_T0_KIDNAPPED_WIFE_cleaning fPercentArray[0] = fCHANCE_kidnapped_wife_cleaning
eEventArray[1] = FE_T0_KIDNAPPED_WIFE_does_garden_work fPercentArray[1] = fCHANCE_kidnapped_wife_does_garden_work
// eEventArray[3] = FE_T0_KIDNAPPED_WIFE_cooking_a_meal fPercentArray[3] = fCHANCE_kidnapped_wife_cooking_a_meal
IF NOT Get_Mission_Flow_Flag_State(FLOWFLAG_MICHAEL_TREVOR_EXILE_FINISHED)
IF ScheduleEventForThisChar(CHAR_MICHAEL)
eEventArray[2] = FE_T0_KIDNAPPED_WIFE_talks_to_Michael fPercentArray[2] = fCHANCE_kidnapped_wife_talks_to_Michael
ELSE
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = 0.0
ENDIF
ELSE
eEventArray[2] = NO_FAMILY_EVENTS fPercentArray[2] = 0.0
ENDIF
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_TREVOR_0_WIFE,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE MOTHER 1 SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Trevor_0_Mother_Event(enumFamilyEvents &eFamilyEvent)
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))
eFamilyEvent = FE_T0_MOTHER_duringRandomChar
RETURN TRUE
ENDIF
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE FLOYD SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_Trevor_1_Floyd_Event(enumFamilyEvents &eFamilyEvent)
#IF IS_DEBUG_BUILD
IF g_savedGlobals.sFlow.isGameflowActive
#ENDIF
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_3) //#1530187
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_TREVOR_4)
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF g_eLastMissionPassed = SP_HEIST_DOCKS_1 //#414673
IF NOT HasTimeToWaitPassedFromLastPassedMission(60.0)
eFamilyEvent = FE_T1_FLOYD_with_wade_post_docks1
RETURN TRUE
ENDIF
ENDIF
IF g_eLastMissionPassed = SP_MISSION_TREVOR_3 //#951026
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN FALSE
ENDIF
IF IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_1) //#1265175
OR IS_MISSION_AVAILABLE(SP_HEIST_DOCKS_2A) //#1265175
OR IS_MISSION_AVAILABLE(SP_MISSION_TREVOR_4) //#1265175
eFamilyEvent = FAMILY_MEMBER_BUSY
RETURN FALSE
ENDIF
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "in flow mode???")
ELSE
CPRINTLN(DEBUG_FAMILY, "NOT in flow mode???")
ENDIF
#ENDIF
CONST_FLOAT fCHANCE_T1_FLOYD_cleaning 20.0
CONST_FLOAT fCHANCE_T1_FLOYD_cries_in_foetal_position 20.0
CONST_FLOAT fCHANCE_T1_FLOYD_on_phone_to_girlfriend 20.0
CONST_FLOAT fCHANCE_T1_FLOYD_hiding_from_Trevor 20.0
CONST_FLOAT fCHANCE_T1_FLOYD_is_sleeping 20.0
CONST_FLOAT fCHANCE_T1_FLOYD_out 20.0
enumFamilyEvents eEventArray[6+2]
FLOAT fPercentArray[6+2]
IF GET_BUILDING_STATE(BUILDINGNAME_ES_FLOYDS_APPARTMENT_MESS_1) != BUILDINGSTATE_DESTROYED
eEventArray[0] = FE_T1_FLOYD_cleaning fPercentArray[0] = fCHANCE_T1_FLOYD_cleaning
ELSE
eEventArray[0] = NO_FAMILY_EVENTS fPercentArray[0] = 0.0
ENDIF
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4) //#1529111
eEventArray[1] = FE_T1_FLOYD_cries_in_foetal_position fPercentArray[1] = fCHANCE_T1_FLOYD_cries_in_foetal_position
ELSE
eEventArray[1] = NO_FAMILY_EVENTS fPercentArray[1] = 0.0
ENDIF
eEventArray[2] = FE_T1_FLOYD_on_phone_to_girlfriend fPercentArray[2] = fCHANCE_T1_FLOYD_on_phone_to_girlfriend
eEventArray[3] = FE_T1_FLOYD_hiding_from_Trevor_a fPercentArray[3] = fCHANCE_T1_FLOYD_hiding_from_Trevor / 3.0
eEventArray[3+1] = FE_T1_FLOYD_hiding_from_Trevor_b fPercentArray[3+1] = fCHANCE_T1_FLOYD_hiding_from_Trevor / 3.0
eEventArray[3+2] = FE_T1_FLOYD_hiding_from_Trevor_c fPercentArray[3+2] = fCHANCE_T1_FLOYD_hiding_from_Trevor / 3.0
eEventArray[4+2] = FE_T1_FLOYD_is_sleeping fPercentArray[4+2] = fCHANCE_T1_FLOYD_is_sleeping
eEventArray[5+2] = NO_FAMILY_EVENTS fPercentArray[5+2] = fCHANCE_T1_FLOYD_out
RETURN PRIVATE_Get_Desired_FamilyEventFromArray(FM_TREVOR_1_FLOYD,
eEventArray, fPercentArray,
eFamilyEvent)
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE SCHEDULED SLOT FUNCTIONS
// *******************************************************************************************
/// PURPOSE:
/// 06:00 - 11:59
/// PARAMS:
/// eFamilyMember -
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_FamilyMember_Morning_Event(enumFamilyMember eFamilyMember, enumFamilyEvents &eFamilyEvent)
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
RETURN PRIVATE_Get_Desired_Michael_Son_Morning_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_DAUGHTER
RETURN PRIVATE_Get_Desired_Michael_Daughter_Morning_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_WIFE
RETURN PRIVATE_Get_Desired_Michael_Wife_Morning_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_MEXMAID
RETURN PRIVATE_Get_Desired_Michael_MexMaid_Morning_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_GARDENER
RETURN PRIVATE_Get_Desired_Michael_Gardener_Morning_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_AUNT
RETURN PRIVATE_Get_Desired_Franklin_Aunt_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_LAMAR
RETURN FALSE //PRIVATE_Get_Desired_Lamar_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_STRETCH
RETURN FALSE //PRIVATE_Get_Desired_Franklin_Stretch_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_RON
RETURN PRIVATE_Get_Desired_Trevor_0_Ron_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MICHAEL
RETURN PRIVATE_Get_Desired_Trevor_0_Michael_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_TREVOR
RETURN PRIVATE_Get_Desired_Trevor_0_Trevor_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_WIFE
RETURN PRIVATE_Get_Desired_Trevor_0_Wife_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MOTHER
RETURN PRIVATE_Get_Desired_Trevor_0_Mother_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_1_FLOYD
RETURN PRIVATE_Get_Desired_Trevor_1_Floyd_Event(eFamilyEvent)
BREAK
ENDSWITCH
eFamilyEvent = NO_FAMILY_EVENTS
SCRIPT_ASSERT("invalid eFamilyMember in PRIVATE_Get_Desired_FamilyMember_Morning_Event()")
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// 12:00 - 17:59
/// PARAMS:
/// eFamilyMember -
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_FamilyMember_Afternoon_Event(enumFamilyMember eFamilyMember, enumFamilyEvents &eFamilyEvent)
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
RETURN PRIVATE_Get_Desired_Michael_Son_Afternoon_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_DAUGHTER
RETURN PRIVATE_Get_Desired_Michael_Daughter_Afternoon_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_WIFE
RETURN PRIVATE_Get_Desired_Michael_Wife_Afternoon_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_MEXMAID
RETURN PRIVATE_Get_Desired_Michael_MexMaid_Afternoon_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_GARDENER
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
BREAK
CASE FM_FRANKLIN_AUNT
RETURN PRIVATE_Get_Desired_Franklin_Aunt_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_LAMAR
RETURN FALSE //PRIVATE_Get_Desired_Lamar_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_STRETCH
RETURN FALSE //PRIVATE_Get_Desired_Stretch_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_RON
RETURN PRIVATE_Get_Desired_Trevor_0_Ron_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MICHAEL
RETURN PRIVATE_Get_Desired_Trevor_0_Michael_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_TREVOR
RETURN PRIVATE_Get_Desired_Trevor_0_Trevor_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_WIFE
RETURN PRIVATE_Get_Desired_Trevor_0_Wife_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MOTHER
RETURN PRIVATE_Get_Desired_Trevor_0_Mother_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_1_FLOYD
RETURN PRIVATE_Get_Desired_Trevor_1_Floyd_Event(eFamilyEvent)
BREAK
ENDSWITCH
eFamilyEvent = NO_FAMILY_EVENTS
SCRIPT_ASSERT("invalid eFamilyMember in PRIVATE_Get_Desired_FamilyMember_Afternoon_Event()")
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// 18:00 - 23:59
/// PARAMS:
/// eFamilyMember -
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_FamilyMember_Evening_Event(enumFamilyMember eFamilyMember, enumFamilyEvents &eFamilyEvent)
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
RETURN PRIVATE_Get_Desired_Michael_Son_Evening_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_DAUGHTER
RETURN PRIVATE_Get_Desired_Michael_Daughter_Evening_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_WIFE
RETURN PRIVATE_Get_Desired_Michael_Wife_Evening_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_MEXMAID
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
BREAK
CASE FM_MICHAEL_GARDENER
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
BREAK
CASE FM_FRANKLIN_AUNT
RETURN PRIVATE_Get_Desired_Franklin_Aunt_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_LAMAR
RETURN FALSE //PRIVATE_Get_Desired_Lamar_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_STRETCH
RETURN FALSE //PRIVATE_Get_Desired_Stretch_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_RON
RETURN PRIVATE_Get_Desired_Trevor_0_Ron_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MICHAEL
RETURN PRIVATE_Get_Desired_Trevor_0_Michael_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_TREVOR
RETURN PRIVATE_Get_Desired_Trevor_0_Trevor_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_WIFE
RETURN PRIVATE_Get_Desired_Trevor_0_Wife_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MOTHER
RETURN PRIVATE_Get_Desired_Trevor_0_Mother_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_1_FLOYD
RETURN PRIVATE_Get_Desired_Trevor_1_Floyd_Event(eFamilyEvent)
BREAK
ENDSWITCH
eFamilyEvent = NO_FAMILY_EVENTS
SCRIPT_ASSERT("invalid eFamilyMember in PRIVATE_Get_Desired_FamilyMember_Evening_Event()")
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// 00:00 - 05:59
/// PARAMS:
/// eFamilyMember -
/// eFamilyEvent -
/// RETURNS:
///
FUNC BOOL PRIVATE_Get_Desired_FamilyMember_Night_Event(enumFamilyMember eFamilyMember, enumFamilyEvents &eFamilyEvent)
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
RETURN PRIVATE_Get_Desired_Michael_Son_Night_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_DAUGHTER
RETURN PRIVATE_Get_Desired_Michael_Daughter_Night_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_WIFE
RETURN PRIVATE_Get_Desired_Michael_Wife_Night_Event(eFamilyEvent)
BREAK
CASE FM_MICHAEL_MEXMAID
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
BREAK
CASE FM_MICHAEL_GARDENER
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
BREAK
CASE FM_FRANKLIN_AUNT
RETURN PRIVATE_Get_Desired_Franklin_Aunt_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_LAMAR
RETURN FALSE //PRIVATE_Get_Desired_Lamar_Event(eFamilyEvent)
BREAK
CASE FM_FRANKLIN_STRETCH
RETURN FALSE //PRIVATE_Get_Desired_Stretch_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_RON
RETURN PRIVATE_Get_Desired_Trevor_0_Ron_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MICHAEL
RETURN PRIVATE_Get_Desired_Trevor_0_Michael_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_TREVOR
RETURN PRIVATE_Get_Desired_Trevor_0_Trevor_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_WIFE
RETURN PRIVATE_Get_Desired_Trevor_0_Wife_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_0_MOTHER
RETURN PRIVATE_Get_Desired_Trevor_0_Mother_Event(eFamilyEvent)
BREAK
CASE FM_TREVOR_1_FLOYD
RETURN PRIVATE_Get_Desired_Trevor_1_Floyd_Event(eFamilyEvent)
BREAK
ENDSWITCH
eFamilyEvent = NO_FAMILY_EVENTS
SCRIPT_ASSERT("invalid eFamilyMember in PRIVATE_Get_Desired_FamilyMember_Night_Event()")
RETURN FALSE
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE SCHEDULE FUNCTIONS
// *******************************************************************************************
FUNC BOOL PRIVATE_Get_Desired_FamilyMember_Event(enumFamilyMember eFamilyMember, enumFamilyEvents &eFamilyEvent, BOOL bIgnoreInvalidReturns = FALSE)
IF g_bMagDemoActive
SWITCH eFamilyMember
CASE FM_MICHAEL_DAUGHTER eFamilyEvent = FE_M_DAUGHTER_workout_with_mp3 RETURN TRUE BREAK
CASE FM_MICHAEL_MEXMAID eFamilyEvent = FE_M2_MEXMAID_clean_window RETURN TRUE BREAK
CASE FM_MICHAEL_WIFE eFamilyEvent = FE_M_WIFE_leaving_in_car RETURN TRUE BREAK
ENDSWITCH
eFamilyEvent = NO_FAMILY_EVENTS
RETURN FALSE
ENDIF
IF NOT bIgnoreInvalidReturns
SP_MISSIONS eReturnedSpMissions
IF PRIVATE_Force_Family_EventAvailableMissions(eFamilyMember, eFamilyEvent, eReturnedSpMissions)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Get_Desired_FamilyMember_Event(", Get_String_From_FamilyMember(eFamilyMember), ") = FALSE, PRIVATE_Force_Family_EventAvailableMissions(", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eReturnedSpMissions, TRUE), ")")
#ENDIF
RETURN TRUE
ELSE
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Get_Desired_FamilyMember_Event(", Get_String_From_FamilyMember(eFamilyMember), "... PRIVATE_Force_Family_EventAvailableMissions(", GET_SP_MISSION_DISPLAY_STRING_FROM_ID(eReturnedSpMissions, TRUE), ")")
#ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Get_Desired_FamilyMember_Event(", Get_String_From_FamilyMember(eFamilyMember), ")... bIgnoreInvalidReturns!!!")
#ENDIF
ENDIF
//#1586404
IF (eFamilyMember = FM_MICHAEL_WIFE)
IF IS_PLAYER_SWITCH_IN_PROGRESS()
AND (g_eSelectedPlayerCharScene = PR_SCENE_M7_FAKEYOGA)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Get_Desired_FamilyMember_Event(", Get_String_From_FamilyMember(eFamilyMember), ") = FALSE, PR_SCENE_M7_FAKEYOGA(switch)")
#ENDIF
RETURN FALSE
ENDIF
IF (Get_Player_Timetable_Scene_In_Progress() = PR_SCENE_M7_FAKEYOGA)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Get_Desired_FamilyMember_Event(", Get_String_From_FamilyMember(eFamilyMember), ") = FALSE, PR_SCENE_M7_FAKEYOGA(scene)")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
IF (eFamilyEvent <> NO_FAMILY_EVENTS)
IF PRIVATE_Is_FamilyEvent_Near_Trigger(eFamilyMember, eFamilyEvent)
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "PRIVATE_Get_Desired_FamilyMember_Event(", Get_String_From_FamilyMember(eFamilyMember), ") = FALSE, PRIVATE_Is_FamilyEvent_Near_Trigger()")
#ENDIF
RETURN FALSE
ENDIF
ENDIF
SWITCH GET_CLOCK_HOURS()
/* 06:00 - 11:59 */
CASE 6 CASE 7 CASE 8
CASE 9 CASE 10 CASE 11
//time window A (morning)
RETURN PRIVATE_Get_Desired_FamilyMember_Morning_Event(eFamilyMember, eFamilyEvent)
BREAK
/* 12:00 - 17:59 */
CASE 12 CASE 13 CASE 14
CASE 15 CASE 16 CASE 17
//time window B (afternoon)
RETURN PRIVATE_Get_Desired_FamilyMember_Afternoon_Event(eFamilyMember, eFamilyEvent)
BREAK
/* 18:00 - 23:59 */
CASE 18 CASE 19 CASE 20
CASE 21 CASE 22 CASE 23
//time window C (evening)
RETURN PRIVATE_Get_Desired_FamilyMember_Evening_Event(eFamilyMember, eFamilyEvent)
BREAK
/* 00:00 - 05:59 */
CASE 0 CASE 1 CASE 2
CASE 3 CASE 4 CASE 5
//time window D (night)
RETURN PRIVATE_Get_Desired_FamilyMember_Night_Event(eFamilyMember, eFamilyEvent)
BREAK
ENDSWITCH
eFamilyEvent = NO_FAMILY_EVENTS
SCRIPT_ASSERT("invalid GET_CLOCK_HOURS() in PRIVATE_Get_Desired_FamilyMember_Event()")
RETURN FALSE
ENDFUNC
// *******************************************************************************************
// FAMILY PRIVATE SCHEDULE FUNCTIONS
// *******************************************************************************************
FUNC BOOL PRIVATE_Is_Valid_Find_FamilyMember_Event(enumFamilyMember eFamilyMember, enumFamilyEvents eFamilyEvent)
SWITCH eFamilyMember
CASE FM_MICHAEL_SON
SWITCH eFamilyEvent
// CASE FE_M_SON_gaming FALLTHRU
// CASE FE_M_SON_rapping_in_the_shower FALLTHRU
// CASE FE_M_SON_Borrows_sisters_car FALLTHRU
// CASE FE_M_SON_watching_porn FALLTHRU
// CASE FE_M_SON_in_room_asks_for_munchies FALLTHRU
// CASE FE_M_SON_phone_calls_in_room FALLTHRU
// CASE FE_M_SON_on_ecstasy_AND_friendly FALLTHRU
// CASE FE_M_SON_Fighting_with_sister FALLTHRU
// CASE FE_M_SON_smoking_weed_in_a_bong FALLTHRU
// CASE FE_M_SON_raids_fridge_for_food FALLTHRU
// CASE FE_M_SON_sleeping FALLTHRU
CASE FE_M7_SON_jumping_jacks
// CASE FE_M7_SON_Gaming FALLTHRU
// CASE FE_M7_SON_going_for_a_bike_ride FALLTHRU
// CASE FE_M7_SON_coming_back_from_a_bike_ride FALLTHRU
// CASE FE_M7_SON_on_laptop_looking_for_jobs
IF GET_CURRENT_PLAYER_PED_ENUM() = CHAR_MICHAEL
RETURN TRUE
ELSE
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ") - player char is not michael")
#ENDIF
RETURN FALSE
ENDIF
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
CASE FM_MICHAEL_DAUGHTER
SWITCH eFamilyEvent
// CASE FE_M_DAUGHTER_sunbathing FALLTHRU
// CASE FE_M_DAUGHTER_Going_out_in_her_car FALLTHRU
// CASE FE_M_DAUGHTER_Coming_home_drunk FALLTHRU
CASE FE_M_DAUGHTER_on_phone_to_friends FALLTHRU
// CASE FE_M_DAUGHTER_shower FALLTHRU
// CASE FE_M_DAUGHTER_workout_with_mp3 FALLTHRU
// CASE FE_M_DAUGHTER_dancing_practice FALLTHRU
// CASE FE_M_DAUGHTER_watching_TV_sober FALLTHRU
// CASE FE_M_DAUGHTER_watching_TV_drunk FALLTHRU
// CASE FE_M_DAUGHTER_crying_over_a_guy FALLTHRU
// CASE FE_M_DAUGHTER_screaming_at_dad FALLTHRU
// CASE FE_M_DAUGHTER_purges_in_the_bathroom FALLTHRU
// CASE FE_M_DAUGHTER_sniffs_drugs_in_toilet FALLTHRU
// CASE FE_M_DAUGHTER_sex_sounds_from_room FALLTHRU
CASE FE_M_DAUGHTER_walks_to_room_music FALLTHRU
// CASE FE_M_DAUGHTER_sleeping FALLTHRU
// CASE FE_M_DAUGHTER_couchsleep FALLTHRU
CASE FE_M7_DAUGHTER_studying_on_phone FALLTHRU
CASE FE_M7_DAUGHTER_studying_does_nails //FALLTHRU
// CASE FE_M7_DAUGHTER_sunbathing
RETURN TRUE
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
CASE FM_MICHAEL_WIFE
SWITCH eFamilyEvent
// CASE FE_M_WIFE_screams_at_mexmaid FALLTHRU
// CASE FE_M_WIFE_in_face_mask FALLTHRU
// CASE FE_M_WIFE_playing_tennis FALLTHRU
// CASE FE_M2_WIFE_doing_yoga FALLTHRU
// CASE FE_M7_WIFE_doing_yoga FALLTHRU
// CASE FE_M_WIFE_getting_nails_done FALLTHRU
// CASE FE_M_WIFE_leaving_in_car FALLTHRU
// CASE FE_M_WIFE_leaving_in_car_v2 FALLTHRU
// CASE FE_M_WIFE_MD_leaving_in_car_v3 FALLTHRU
// CASE FE_M_WIFE_with_shopping_bags_enter FALLTHRU
// CASE FE_M_WIFE_with_shopping_bags_idle FALLTHRU
// CASE FE_M_WIFE_with_shopping_bags_exit FALLTHRU
CASE FE_M_WIFE_gets_drink_in_kitchen
// CASE FE_M2_WIFE_sunbathing FALLTHRU
// CASE FE_M7_WIFE_sunbathing FALLTHRU
// CASE FE_M_WIFE_getting_botox_done FALLTHRU
// CASE FE_M_WIFE_passed_out_SOFA FALLTHRU
// CASE FE_M_WIFE_screaming_at_son_P1 FALLTHRU
// CASE FE_M_WIFE_screaming_at_son_P2 FALLTHRU
// CASE FE_M_WIFE_screaming_at_son_P3 FALLTHRU
// CASE FE_M_WIFE_screaming_at_daughter FALLTHRU
// CASE FE_M2_WIFE_phones_man_OR_therapist FALLTHRU
// CASE FE_M_WIFE_hangs_up_and_wanders FALLTHRU
// CASE FE_M_WIFE_using_vibrator FALLTHRU
// CASE FE_M_WIFE_passed_out_BED FALLTHRU
// CASE FE_M_WIFE_sleeping FALLTHRU
// CASE FE_M7_WIFE_Making_juice FALLTHRU
// CASE FE_M7_WIFE_shopping_with_daughter FALLTHRU
// CASE FE_M7_WIFE_on_phone FALLTHRU
// CASE FE_M7_WIFE_shopping_with_son
RETURN TRUE
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
CASE FM_MICHAEL_MEXMAID
SWITCH eFamilyEvent
CASE FE_M2_MEXMAID_cleans_booze_pot_other
CASE FE_M7_MEXMAID_cleans_booze_pot_other
RETURN TRUE
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
#IF USE_TU_CHANGES
CASE FM_MICHAEL_GARDENER
SWITCH eFamilyEvent
CASE FE_M_GARDENER_on_phone
CASE FE_M_GARDENER_smoking_weed
RETURN TRUE
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
#ENDIF
CASE FM_FRANKLIN_LAMAR
CASE FM_FRANKLIN_STRETCH
SWITCH eFamilyEvent
// CASE FE_F_LAMAR_and_STRETCH_chill_outside FALLTHRU
// CASE FE_F_LAMAR_and_STRETCH_bbq_outside FALLTHRU
// CASE FE_F_LAMAR_and_STRETCH_arguing FALLTHRU
// CASE FE_F_LAMAR_and_STRETCH_shout_at_cops FALLTHRU
CASE FE_F_LAMAR_and_STRETCH_wandering
RETURN TRUE
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
CASE FM_TREVOR_0_RON
SWITCH eFamilyEvent
// CASE FE_T0_RON_monitoring_police_frequency FALLTHRU
// CASE FE_T0_RON_listens_to_radio_broadcast FALLTHRU
// CASE FE_T0_RON_ranting_about_government FALLTHRU
// CASE FE_T0_RON_smoking_crystal FALLTHRU
// CASE FE_T0_RON_drinks_moonshine_from_a_jar FALLTHRU
CASE FE_T0_RON_stares_through_binoculars
RETURN TRUE
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
CASE FM_TREVOR_0_WIFE
RETURN FALSE
BREAK
CASE FM_TREVOR_1_FLOYD
SWITCH eFamilyEvent
CASE FE_T1_FLOYD_cleaning // FALLTHRU
// CASE FE_T1_FLOYD_cries_in_foetal_position FALLTHRU
// CASE FE_T1_FLOYD_pineapple FALLTHRU
// CASE FE_T1_FLOYD_on_phone_to_girlfriend FALLTHRU
// CASE FE_T1_FLOYD_hangs_up_and_wanders FALLTHRU
// CASE FE_T1_FLOYD_hiding_from_Trevor_a FALLTHRU
// CASE FE_T1_FLOYD_hiding_from_Trevor_b FALLTHRU
// CASE FE_T1_FLOYD_hiding_from_Trevor_c
// CASE FE_T1_FLOYD_is_sleeping
RETURN TRUE
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
CPRINTLN(DEBUG_FAMILY, "invalid eFamilyEvent ", Get_String_From_FamilyMember(eFamilyMember), " in PRIVATE_Is_Valid_Find_FamilyMember_Event(", Get_String_From_FamilyEvent(eFamilyEvent), ")")
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
TEXT_LABEL_63 str
str = ("invalid eFamilyMember ")
str += (Get_String_From_FamilyMember(eFamilyMember))
str += (" in Is_Valid_Find_FamEvent")
CPRINTLN(DEBUG_FAMILY, str)
SCRIPT_ASSERT(str)
#ENDIF
RETURN FALSE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC