2977 lines
112 KiB
Python
Executable File
2977 lines
112 KiB
Python
Executable File
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "net_transition_sessions.sch"
|
|
USING "net_objective_text.sch"
|
|
USING "net_gang_boss_private.sch"
|
|
USING "svm_mission_flow.sch"
|
|
USING "menu_cursor_public.sch"
|
|
|
|
//***********Script CONSTS***********
|
|
|
|
CONST_INT FAA_BS_PRINTED_PAUSE_MENU_ACTIVE 0
|
|
CONST_INT FAA_BS_DISPLAY_ROLLOVER_HELP 1
|
|
CONST_INT FAA_BS_OVERLAY_SCREEN_ACTIVE 2
|
|
CONST_INT FAA_BS_CURSOR_INPUT_PROCESSED 3
|
|
CONST_INT FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE 4
|
|
CONST_INT FAA_BS_WAITING_FOR_ROLLOVER_RETURN_VALUE 5
|
|
CONST_INT FAA_BS_FADE_TO_EXIT 6
|
|
CONST_INT FAA_BS_DIALOGUE_TUTORIAL_COMPLETE 7
|
|
CONST_INT FAA_BS_CURRENTLY_PLAYING_TUTORIAL 8
|
|
CONST_INT FAA_BS_DIALOGUE_TUTORIAL_COMPLETE_THIS_BOOT 9
|
|
CONST_INT FAA_BS_PRINTED_INTRO_PLEASE_WAIT 10
|
|
CONST_INT FAA_BS_PRINTED_DL_PLEASE_WAIT 11
|
|
CONST_INT FAA_BS_PRINTED_CONTINUE_STORY_HELP 12
|
|
CONST_INT FAA_BS_TRIGGER_BONUS_BILLBOARD_DIALOGUE 13
|
|
CONST_INT FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD 14
|
|
CONST_INT FAA_BS_DISPLAYING_LEAK_OVERVIEW 15
|
|
CONST_INT FAA_BS_INTRO_MISSION_LAUNCH_PREPARED 16
|
|
CONST_INT FAA_BS_SETUP_MISSION_LAUNCH_PREPARED 17
|
|
|
|
CONST_INT ciINPUT_KEYBOARD_DOWN 300
|
|
CONST_INT ciINPUT_KEYBOARD_UP 301
|
|
|
|
//Dialogue consts
|
|
CONST_INT F_APP_D_INTRO 0
|
|
CONST_INT F_APP_D_SEC_CON 1
|
|
CONST_INT F_APP_D_SEC_CON2 2
|
|
CONST_INT F_APP_D_SEC_CON3 3
|
|
CONST_INT F_APP_D_SETUP 4
|
|
CONST_INT F_APP_D_SETUP_2 5
|
|
CONST_INT F_APP_D_SELECT_LEAK 6
|
|
CONST_INT F_APP_D_PARTY_P_INT 7
|
|
CONST_INT F_APP_D_BILL_G_INT 8
|
|
CONST_INT F_APP_D_HOOD_P_INT 9
|
|
CONST_INT F_APP_D_PARTY_P_M2 10
|
|
CONST_INT F_APP_D_PARTY_P_F 11
|
|
CONST_INT F_APP_D_HOOD_P_M2 12
|
|
CONST_INT F_APP_D_HOOD_P_F 13
|
|
CONST_INT F_APP_D_BILL_G_M2 14
|
|
CONST_INT F_APP_D_BILL_G_F 15
|
|
|
|
//Enum for the current page ID
|
|
ENUM FAA_PAGE_INDEX
|
|
FAA_PAGE_LOGIN,
|
|
FAA_PAGE_HOME,
|
|
FAA_PAGE_DATA_LEAK_SELECTION,
|
|
FAA_PAGE_SECURITY_CONTRACT_SELECTION,
|
|
FAA_PAGE_DATA_RECOVERY
|
|
ENDENUM
|
|
|
|
//Enum for button indexes returned by SF
|
|
ENUM FAA_BUTTON_INDEXES
|
|
BUTTON_OVERLAY_CANCEL = 201,
|
|
BUTTON_OVERLAY_ACCEPT,
|
|
BUTTON_HOME_SECURITY_CONTRACT,
|
|
BUTTON_HOME_VIP_CONTRACT,
|
|
BUTTON_DATA_LEAK_1,
|
|
BUTTON_DATA_LEAK_2,
|
|
BUTTON_DATA_LEAK_3,
|
|
BUTTON_DATA_LEAK_TAB_1,
|
|
BUTTON_DATA_LEAK_TAB_2,
|
|
BUTTON_DATA_LEAK_TAB_3,
|
|
BUTTON_SECURITY_CONTRACT_1,
|
|
BUTTON_SECURITY_CONTRACT_2,
|
|
BUTTON_SECURITY_CONTRACT_3,
|
|
BUTTON_INTRO_MISSION,
|
|
BUTTON_SETUP_MISSION,
|
|
BUTTON_LOGIN,
|
|
BUTTON_DATA_LEAK_ACCEPT,
|
|
BUTTON_SECURITY_CONTRACT_ACCEPT,
|
|
|
|
BUTTON_SECURITY_PAGE_VIP_CONTRACT, //Security page - VIP contract button
|
|
BUTTON_VIP_PAGE_SEC_CONTRACT, //VIP page - Security contract button
|
|
BUTTON_DREC_PAGE_SEC_CONTRACT, //Data recovery page - Security contract button
|
|
|
|
BUTTON_DATA_RECOVERY,
|
|
BUTTON_DATA_RECOVERY_START
|
|
ENDENUM
|
|
|
|
//Enum for the current state of the script
|
|
ENUM FAA_APP_STAGE_ID
|
|
FAA_STAGE_IDLE = 0,
|
|
FAA_STAGE_SEC_CONTRACT_SELECTED,
|
|
|
|
//Overlay on screen stages
|
|
FAA_STAGE_STRAND_CONFIRM //Overlay asking the player to confirm their choice of strand
|
|
|
|
ENDENUM
|
|
|
|
ENUM SECURITY_CONTRACT_DIFFICULTY
|
|
SCD_NORMAL = 1,
|
|
SCD_HARD = 2,
|
|
SCD_VS = 3
|
|
ENDENUM
|
|
|
|
ENUM FAA_INPUT_SOUNDS
|
|
FAA_IS_NAV_UP_DOWN,
|
|
FAA_IS_NAV_LEFT_RIGHT,
|
|
FAA_IS_NAV_BLOCKED,
|
|
FAA_IS_SELECT,
|
|
FAA_IS_BACK,
|
|
FAA_IS_EXIT,
|
|
FAA_IS_ERROR,
|
|
FAA_IS_LOGIN,
|
|
FAA_IS_LAUNCH_MISSION,
|
|
FAA_IS_BOOT
|
|
ENDENUM
|
|
|
|
//***********Script VARIABLES***********
|
|
|
|
INT iBS
|
|
INT iSelectedSecurityContract
|
|
INT iSelectedDataLeakInStrand
|
|
FIXER_STRANDS eSelectedDataLeakStrand
|
|
//Input cache values
|
|
INT iLeftX, iLeftY, iRightX, iRightY
|
|
|
|
//Dialogue tutorial
|
|
INT iTutorialHelpTime = 0
|
|
INT iDialogueRequestID = -1
|
|
INT iDialoguePlayingID = -1
|
|
STRING sTutTextAfterDialogue = ""
|
|
SCRIPT_TIMER stTutorialTimer
|
|
|
|
STRING sRolloverHelp
|
|
STRING sOverlayMethod
|
|
|
|
FIXER_HQ_ID eThisFixerHQ
|
|
FAA_APP_STAGE_ID eCurrentStage
|
|
FAA_PAGE_INDEX eCurrentPage
|
|
FAA_BUTTON_INDEXES eButtonLastHighlighted
|
|
FIXER_STRANDS eCurrentlyDisplayedStrand = FS_NONE
|
|
|
|
//The Scaleform movie
|
|
SCALEFORM_INDEX mov
|
|
|
|
//Data return indexes
|
|
SCALEFORM_RETURN_INDEX currentSelectionReturnIndex
|
|
SCALEFORM_RETURN_INDEX currentRollOverReturnIndex
|
|
INT iRolloverReturnTimeOut = 0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
BOOL bRender = TRUE
|
|
#ENDIF
|
|
|
|
//***********Debug Helper functions***********
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
FUNC STRING DEBUG_GET_BUTTON_NAME(FAA_BUTTON_INDEXES eButton)
|
|
SWITCH eButton
|
|
CASE BUTTON_OVERLAY_CANCEL RETURN "BUTTON_OVERLAY_CANCEL"
|
|
CASE BUTTON_OVERLAY_ACCEPT RETURN "BUTTON_OVERLAY_ACCEPT"
|
|
CASE BUTTON_HOME_SECURITY_CONTRACT RETURN "BUTTON_HOME_SECURITY_CONTRACT"
|
|
CASE BUTTON_HOME_VIP_CONTRACT RETURN "BUTTON_HOME_VIP_CONTRACT"
|
|
CASE BUTTON_DATA_LEAK_1 RETURN "BUTTON_DATA_LEAK_1"
|
|
CASE BUTTON_DATA_LEAK_2 RETURN "BUTTON_DATA_LEAK_2"
|
|
CASE BUTTON_DATA_LEAK_3 RETURN "BUTTON_DATA_LEAK_3"
|
|
CASE BUTTON_DATA_LEAK_TAB_1 RETURN "BUTTON_DATA_LEAK_TAB_1"
|
|
CASE BUTTON_DATA_LEAK_TAB_2 RETURN "BUTTON_DATA_LEAK_TAB_2"
|
|
CASE BUTTON_DATA_LEAK_TAB_3 RETURN "BUTTON_DATA_LEAK_TAB_3"
|
|
CASE BUTTON_SECURITY_CONTRACT_1 RETURN "BUTTON_SECURITY_CONTRACT_1"
|
|
CASE BUTTON_SECURITY_CONTRACT_2 RETURN "BUTTON_SECURITY_CONTRACT_2"
|
|
CASE BUTTON_SECURITY_CONTRACT_3 RETURN "BUTTON_SECURITY_CONTRACT_3"
|
|
CASE BUTTON_INTRO_MISSION RETURN "BUTTON_INTRO_MISSION"
|
|
CASE BUTTON_SETUP_MISSION RETURN "BUTTON_SETUP_MISSION"
|
|
CASE BUTTON_LOGIN RETURN "BUTTON_LOGIN"
|
|
CASE BUTTON_DATA_LEAK_ACCEPT RETURN "BUTTON_DATA_LEAK_ACCEPT"
|
|
CASE BUTTON_SECURITY_CONTRACT_ACCEPT RETURN "BUTTON_SECURITY_CONTRACT_ACCEPT"
|
|
CASE BUTTON_SECURITY_PAGE_VIP_CONTRACT RETURN "BUTTON_SECURITY_PAGE_VIP_CONTRACT"
|
|
CASE BUTTON_VIP_PAGE_SEC_CONTRACT RETURN "BUTTON_VIP_PAGE_SEC_CONTRACT"
|
|
CASE BUTTON_DREC_PAGE_SEC_CONTRACT RETURN "BUTTON_DREC_PAGE_SEC_CONTRACT"
|
|
CASE BUTTON_DATA_RECOVERY RETURN "BUTTON_DATA_RECOVERY"
|
|
CASE BUTTON_DATA_RECOVERY_START RETURN "BUTTON_DATA_RECOVERY_START"
|
|
ENDSWITCH
|
|
|
|
RETURN "***INVALID***"
|
|
ENDFUNC
|
|
|
|
FUNC STRING FIXER_APP_GET_APP_STAGE_DEBUG_NAME(FAA_APP_STAGE_ID eStage)
|
|
SWITCH eStage
|
|
CASE FAA_STAGE_IDLE RETURN "FAA_STAGE_IDLE"
|
|
CASE FAA_STAGE_SEC_CONTRACT_SELECTED RETURN "FAA_STAGE_SEC_CONTRACT_SELECTED"
|
|
CASE FAA_STAGE_STRAND_CONFIRM RETURN "FAA_STAGE_STRAND_CONFIRM"
|
|
ENDSWITCH
|
|
|
|
RETURN "****Invalid****"
|
|
ENDFUNC
|
|
|
|
FUNC STRING FIXER_APP_GET_APP_PAGE_DEBUG_NAME(FAA_PAGE_INDEX ePage)
|
|
SWITCH ePage
|
|
CASE FAA_PAGE_LOGIN RETURN "FAA_PAGE_LOGIN"
|
|
CASE FAA_PAGE_HOME RETURN "FAA_PAGE_HOME"
|
|
CASE FAA_PAGE_DATA_LEAK_SELECTION RETURN "FAA_PAGE_DATA_LEAK_SELECTION"
|
|
CASE FAA_PAGE_SECURITY_CONTRACT_SELECTION RETURN "FAA_PAGE_SECURITY_CONTRACT_SELECTION"
|
|
CASE FAA_PAGE_DATA_RECOVERY RETURN "FAA_PAGE_DATA_RECOVERY"
|
|
ENDSWITCH
|
|
|
|
RETURN "****Invalid****"
|
|
ENDFUNC
|
|
#ENDIF
|
|
|
|
//***********Core Script functions***********
|
|
|
|
PROC FIXER_APP_PLAY_INPUT_SOUND(FAA_INPUT_SOUNDS eSound)
|
|
|
|
STRING sSoundName
|
|
|
|
SWITCH eSound
|
|
CASE FAA_IS_NAV_UP_DOWN sSoundName = "Nav_Up_Down" BREAK
|
|
CASE FAA_IS_NAV_LEFT_RIGHT sSoundName = "Nav_Left_Right" BREAK
|
|
CASE FAA_IS_NAV_BLOCKED sSoundName = "Nav_Blocked" BREAK
|
|
CASE FAA_IS_SELECT sSoundName = "Select" BREAK
|
|
CASE FAA_IS_BACK sSoundName = "Back" BREAK
|
|
CASE FAA_IS_EXIT sSoundName = "Exit" BREAK
|
|
CASE FAA_IS_ERROR sSoundName = "Error" BREAK
|
|
CASE FAA_IS_LOGIN sSoundName = "Key_Hit" BREAK
|
|
CASE FAA_IS_LAUNCH_MISSION sSoundName = "Launch_Mission" BREAK
|
|
CASE FAA_IS_BOOT sSoundName = "Boot" BREAK
|
|
ENDSWITCH
|
|
|
|
PLAY_SOUND_FRONTEND(-1, sSoundName, "DLC_Fixer_Agency_Computer_Soundset")
|
|
ENDPROC
|
|
|
|
PROC CLEAR_ROLLOVER_HELP()
|
|
IF IS_BIT_SET(iBS, FAA_BS_DISPLAY_ROLLOVER_HELP)
|
|
CLEAR_HELP()
|
|
sRolloverHelp = ""
|
|
CLEAR_BIT(iBS, FAA_BS_DISPLAY_ROLLOVER_HELP)
|
|
PRINTLN("<APP_FIXER_HQ> CLEAR_ROLLOVER_HELP")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SCRIPT_CLEANUP(BOOL bPlayExitSound = TRUE, BOOL bLaunchingMission = FALSE)
|
|
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(mov)
|
|
|
|
IF IS_AUDIO_SCENE_ACTIVE("DLC_Fixer_Office_Room_Use_PC_Scene")
|
|
STOP_AUDIO_SCENE("DLC_Fixer_Office_Room_Use_PC_Scene")
|
|
ENDIF
|
|
|
|
DISABLE_CELLPHONE(FALSE)
|
|
|
|
Unpause_Objective_Text()
|
|
|
|
SET_AUDIO_SCRIPT_CLEANUP_TIME(1000)
|
|
|
|
IF bPlayExitSound
|
|
IF bLaunchingMission
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_LAUNCH_MISSION)
|
|
ELSE
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_EXIT)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_PC_VERSION()
|
|
SET_MULTIHEAD_SAFE(FALSE, TRUE, TRUE, TRUE)
|
|
ENDIF
|
|
|
|
THEFEED_RESUME()
|
|
CLEAR_ROLLOVER_HELP()
|
|
CLEAR_BIT(GlobalplayerBD[NATIVE_TO_INT(PLAYER_ID())].SimpleInteriorBD.iBSTwo, BS_SIMPLE_INTERIOR_GLOBAL_BS_SIX_FIXER_HQ_COMPUTER_IN_USE)
|
|
|
|
g_bFHQAppOpen = FALSE
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
PROC SET_INPUT_EXCLUSIVE_AND_ENABLED(CONTROL_TYPE eType, CONTROL_ACTION eAction, BOOL bEnableRelatedActions = TRUE)
|
|
IF NOT IS_PAUSE_MENU_ACTIVE_EX()
|
|
SET_INPUT_EXCLUSIVE(eType, eAction)
|
|
ENABLE_CONTROL_ACTION(eType, eAction, bEnableRelatedActions)
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_PRINTED_PAUSE_MENU_ACTIVE)
|
|
PRINTLN("<APP_FIXER_HQ>, SET_INPUT_EXCLUSIVE_AND_ACTIVE called but IS_PAUSE_MENU_ACTIVE_EX returned true")
|
|
SET_BIT(iBS, FAA_BS_PRINTED_PAUSE_MENU_ACTIVE)
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Returns if the overlay screen is currently active
|
|
FUNC BOOL FIXER_APP_IS_OVERLAY_OPEN()
|
|
RETURN IS_BIT_SET(iBS, FAA_BS_OVERLAY_SCREEN_ACTIVE)
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the current app stage
|
|
FUNC FAA_APP_STAGE_ID FIXER_APP_GET_APP_STAGE()
|
|
RETURN eCurrentStage
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Sets the current app stage
|
|
PROC FIXER_APP_SET_APP_STAGE(FAA_APP_STAGE_ID eNewStage)
|
|
IF eCurrentStage != eNewStage
|
|
eCurrentStage = eNewStage
|
|
PRINTLN("<APP_FIXER_HQ> FIXER_APP_SET_APP_STAGE Setting new stage to: ", FIXER_APP_GET_APP_STAGE_DEBUG_NAME(eNewStage))
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the current app stage
|
|
FUNC FAA_PAGE_INDEX FIXER_APP_GET_APP_CURRENT_PAGE()
|
|
RETURN eCurrentPage
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Sets the current app page
|
|
PROC FIXER_APP_SET_APP_PAGE(FAA_PAGE_INDEX eNewPage)
|
|
IF eCurrentPage != eNewPage
|
|
eCurrentPage = eNewPage
|
|
PRINTLN("<APP_FIXER_HQ> FIXER_APP_SET_APP_PAGE Setting new stage to: ", FIXER_APP_GET_APP_PAGE_DEBUG_NAME(eNewPage))
|
|
ENDIF
|
|
|
|
IF eNewPage != FAA_PAGE_SECURITY_CONTRACT_SELECTION
|
|
CLEAR_BIT(iBS, FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD)
|
|
PRINTLN("<APP_FIXER_HQ> FIXER_APP_SET_APP_PAGE - Clear FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Checks if the specified dialogue is playing
|
|
FUNC BOOL FIXER_APP_IS_DIALOGUE_PLAYING(INT iDialogueID)
|
|
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
RETURN iDialoguePlayingID = iDialogueID
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC SET_SELECTED_DATA_LEAK_STRAND_MISSION(INT iMission)
|
|
#IF IS_DEBUG_BUILD
|
|
IF iMission != iSelectedDataLeakInStrand
|
|
PRINTLN("<APP_FIXER_HQ> SET_SELECTED_DATA_LEAK_STRAND_MISSION - New selected leak mission: ", iSelectedDataLeakInStrand)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
iSelectedDataLeakInStrand = iMission
|
|
ENDPROC
|
|
|
|
PROC SET_SELECTED_DATA_LEAK_STRAND(FIXER_STRANDS eNewStrand)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF eNewStrand != eSelectedDataLeakStrand
|
|
PRINTLN("<APP_FIXER_HQ> SET_SELECTED_DATA_LEAK_STRAND - New selected strand: ", eSelectedDataLeakStrand)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
eSelectedDataLeakStrand = eNewStrand
|
|
ENDPROC
|
|
|
|
PROC UPDATE_CURRENTLY_DISPLAYED_STRAND(FIXER_STRANDS eStrand)
|
|
eCurrentlyDisplayedStrand = eStrand
|
|
PRINTLN("<APP_FIXER_HQ> UPDATE_CURRENTLY_DISPLAYED_STRAND - Strand: ", eCurrentlyDisplayedStrand)
|
|
ENDPROC
|
|
|
|
PROC SET_DISPLAYING_LEAK_OVERVIEW(BOOL bDisplaying)
|
|
IF bDisplaying
|
|
SET_BIT(iBS, FAA_BS_DISPLAYING_LEAK_OVERVIEW)
|
|
ELSE
|
|
CLEAR_BIT(iBS, FAA_BS_DISPLAYING_LEAK_OVERVIEW)
|
|
ENDIF
|
|
PRINTLN("<APP_FIXER_HQ> SET_DISPLAYING_LEAK_OVERVIEW - bDisplaying: ", bDisplaying)
|
|
ENDPROC
|
|
|
|
PROC CLEAR_REPLAY_MISSION_PREPARED_FLAGS()
|
|
CLEAR_BIT(iBS, FAA_BS_INTRO_MISSION_LAUNCH_PREPARED)
|
|
CLEAR_BIT(iBS, FAA_BS_SETUP_MISSION_LAUNCH_PREPARED)
|
|
PRINTLN("<APP_FIXER_HQ> CLEAR_REPLAY_MISSION_PREPARED_FLAGS - flags cleared")
|
|
ENDPROC
|
|
|
|
PROC SET_REPLAY_INTRO_MISSION_PREPARED_FLAG()
|
|
CLEAR_REPLAY_MISSION_PREPARED_FLAGS()
|
|
SET_BIT(iBS, FAA_BS_INTRO_MISSION_LAUNCH_PREPARED)
|
|
PRINTLN("<APP_FIXER_HQ> SET_REPLAY_INTRO_MISSION_PREPARED_FLAG - flag set")
|
|
ENDPROC
|
|
|
|
PROC SET_REPLAY_SETUP_MISSION_PREPARED_FLAG()
|
|
CLEAR_REPLAY_MISSION_PREPARED_FLAGS()
|
|
SET_BIT(iBS, FAA_BS_SETUP_MISSION_LAUNCH_PREPARED)
|
|
PRINTLN("<APP_FIXER_HQ> SET_REPLAY_SETUP_MISSION_PREPARED_FLAG - flag set")
|
|
ENDPROC
|
|
|
|
//***********Mission information lookups***********
|
|
|
|
FUNC STRING GET_INTRO_MISSION_TITLE()
|
|
RETURN "FIX_APP_DATA_R1_T"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_INTRO_MISSION_DESCRIPTION()
|
|
RETURN "FIX_APP_DATA_R1_D"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_INTRO_MISSION_TEXTURE()
|
|
RETURN "MISSION_ON_COURSE"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_SETUP_MISSION_TITLE()
|
|
RETURN "FIX_APP_DATA_R2_T"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_SETUP_MISSION_DESCRIPTION()
|
|
RETURN "FIX_APP_DATA_R2_D"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_SETUP_MISSION_TEXTURE()
|
|
RETURN "SETUP_DATA_RECOVERY"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_SECURITY_CONTRACT_TITLE(FIXER_SECURITY_CONTRACTS fixerSecurityContracts)
|
|
SWITCH fixerSecurityContracts
|
|
CASE FSC_PACKAGE_RECOVERY RETURN "FXR_STSTART_RP" BREAK
|
|
CASE FSC_VEHICLE_RECOVERY RETURN "FXR_STSTART_RV" BREAK
|
|
CASE FSC_ASSAULT RETURN "FXR_STSTART_AS" BREAK
|
|
CASE FSC_RESCUE RETURN "FXR_STSTART_RE" BREAK
|
|
CASE FSC_PROTECT RETURN "FXR_STSTART_PR" BREAK
|
|
CASE FSC_TAIL_AND_DESTROY RETURN "FXR_STSTART_TD" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_SECURITY_CONTRACT_DESCRIPTION(FIXER_SECURITY_CONTRACTS fixerSecurityContracts)
|
|
|
|
SWITCH fixerSecurityContracts
|
|
CASE FSC_PACKAGE_RECOVERY RETURN "FXR_STSTART_RP_D" BREAK
|
|
CASE FSC_VEHICLE_RECOVERY RETURN "FXR_STSTART_RV_D" BREAK
|
|
CASE FSC_ASSAULT RETURN "FXR_STSTART_AS_D" BREAK
|
|
CASE FSC_RESCUE RETURN "FXR_STSTART_RE_D" BREAK
|
|
CASE FSC_PROTECT RETURN "FXR_STSTART_PR_D" BREAK
|
|
CASE FSC_TAIL_AND_DESTROY RETURN "FXR_STSTART_TD_D" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_SECURITY_CONTRACT_KEY_STAT_LABEL(FIXER_SECURITY_CONTRACTS fixerSecurityContracts)
|
|
SWITCH fixerSecurityContracts
|
|
CASE FSC_PACKAGE_RECOVERY RETURN "FIX_A_STAT_VAR" BREAK
|
|
CASE FSC_VEHICLE_RECOVERY RETURN "FIX_A_STAT_VHR" BREAK
|
|
CASE FSC_ASSAULT RETURN "FIX_A_STAT_GE" BREAK
|
|
CASE FSC_RESCUE RETURN "FIX_A_STAT_VIP" BREAK
|
|
CASE FSC_PROTECT RETURN "FIX_A_STAT_AP" BREAK
|
|
CASE FSC_TAIL_AND_DESTROY RETURN "FIX_A_STAT_AD" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
|
|
ENDFUNC
|
|
|
|
FUNC SECURITY_CONTRACT_DIFFICULTY GET_SECURITY_CONTRACT_DIFFICULTY(INT iSlot)
|
|
|
|
SWITCH GET_PLAYER_FIXER_SECURITY_CONTRACT_DIFFICULTY(PLAYER_ID(), iSlot)
|
|
CASE FSCD_DEFAULT RETURN SCD_NORMAL BREAK
|
|
CASE FSCD_HARD RETURN SCD_HARD BREAK
|
|
CASE FSCD_HARD_WITH_RIVALS RETURN SCD_VS BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN SCD_NORMAL
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL FIXER_APP_IS_DATA_LEAK_LOCKED(FIXER_STRANDS eStrandChecked)
|
|
|
|
IF GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_NONE
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) != eStrandChecked
|
|
SWITCH eStrandChecked
|
|
CASE FS_PARTY_PROMOTER RETURN NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION) BREAK
|
|
CASE FS_BILLIONAIRE_GAMES RETURN NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION) BREAK
|
|
CASE FS_HOOD_PASS RETURN NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_MISSION) BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_STRAND_INVESTIGATION_MISSION_TITLE(FIXER_STRANDS eStrand, INT iMission)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_DATA_L1_T1" BREAK
|
|
CASE 1 RETURN "FIX_APP_DATA_L1_T2" BREAK
|
|
CASE 2 RETURN "FIX_APP_DATA_L1_T3" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_BILLIONAIRE_GAMES
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_DATA_L2_T1" BREAK
|
|
CASE 1 RETURN "FIX_APP_DATA_L2_T2" BREAK
|
|
CASE 2 RETURN "FIX_APP_DATA_L2_T3" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_HOOD_PASS
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_DATA_L3_T1" BREAK
|
|
CASE 1 RETURN "FIX_APP_DATA_L3_T2" BREAK
|
|
CASE 2 RETURN "FIX_APP_DATA_L3_T3" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "UNKNOWN"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_STRAND_INVESTIGATION_MISSION_TEXTURE(FIXER_STRANDS eStrand, INT iMission)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER
|
|
SWITCH iMission
|
|
CASE 0 RETURN "DATA_LEAK_1_NIGHTCLUB" BREAK
|
|
CASE 1 RETURN "DATA_LEAK_1_MARINA" BREAK
|
|
CASE 2 RETURN "MISSION_VINEWOOD" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_BILLIONAIRE_GAMES
|
|
SWITCH iMission
|
|
CASE 0 RETURN "DATA_LEAK_2_COUNTRY" BREAK
|
|
CASE 1 RETURN "DATA_LEAK_2_GUEST_LIST" BREAK
|
|
CASE 2 RETURN "MISSION_RICHMAN_LEAK" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_HOOD_PASS
|
|
SWITCH iMission
|
|
CASE 0 RETURN "DATA_LEAK_3_DAVIS" BREAK
|
|
CASE 1 RETURN "DATA_LEAK_3_BALLAS" BREAK
|
|
CASE 2 RETURN "MISSION_SOUTH_CENTRAL" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "UNKNOWN"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_STRAND_OVERVIEW_DESCRIPTION(FIXER_STRANDS eStrand)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER RETURN "FIX_APP_DL1_D_B" BREAK
|
|
CASE FS_BILLIONAIRE_GAMES RETURN "FIX_APP_DL2_D_B" BREAK
|
|
CASE FS_HOOD_PASS RETURN "FIX_APP_DL3_D_B" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_STRAND_INVESTIGATION_MISSION_DESCRIPTION(FIXER_STRANDS eStrand, INT iMission)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_DATA_L1_D1" BREAK
|
|
CASE 1 RETURN "FIX_APP_DATA_L1_D2" BREAK
|
|
CASE 2 RETURN "FIX_APP_DATA_L1_D3" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_BILLIONAIRE_GAMES
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_DATA_L2_D1" BREAK
|
|
CASE 1 RETURN "FIX_APP_DATA_L2_D2" BREAK
|
|
CASE 2 RETURN "FIX_APP_DATA_L2_D3" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_HOOD_PASS
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_DATA_L3_D1" BREAK
|
|
CASE 1 RETURN "FIX_APP_DATA_L3_D2" BREAK
|
|
CASE 2 RETURN "FIX_APP_DATA_L3_D3" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "UNKNOWN"
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the lable to be used for a given mission in a strand to indicate the objective e.g. Investigated
|
|
FUNC STRING GET_STRAND_INVESTIGATION_OBJECTIVE(FIXER_STRANDS eStrand, INT iMission)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_INVEST" BREAK
|
|
CASE 1 RETURN "FIX_APP_INVEST" BREAK
|
|
CASE 2 RETURN "FIX_APP_RECOVR" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_BILLIONAIRE_GAMES
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_INVEST" BREAK
|
|
CASE 1 RETURN "FIX_APP_INVEST" BREAK
|
|
CASE 2 RETURN "FIX_APP_RECOVR" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_HOOD_PASS
|
|
SWITCH iMission
|
|
CASE 0 RETURN "FIX_APP_INVEST" BREAK
|
|
CASE 1 RETURN "FIX_APP_INVEST" BREAK
|
|
CASE 2 RETURN "FIX_APP_RECOVR" BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN "UNKNOWN"
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_STRAND_SELECTION_PROMPT_MESSAGE(FIXER_STRANDS eStrand)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER RETURN "FIX_APP_DL1_D" BREAK
|
|
CASE FS_BILLIONAIRE_GAMES RETURN "FIX_APP_DL2_D" BREAK
|
|
CASE FS_HOOD_PASS RETURN "FIX_APP_DL3_D" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_STRAND_SELECTION_PROMPT_TITLE(FIXER_STRANDS eStrand)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER RETURN "FIX_APP_DL1_T" BREAK
|
|
CASE FS_BILLIONAIRE_GAMES RETURN "FIX_APP_DL2_T" BREAK
|
|
CASE FS_HOOD_PASS RETURN "FIX_APP_DL3_T" BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_STRAND_INVESTIGATION_MISSION_LOCKED(FIXER_STRANDS eStrand, INT iMission)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER
|
|
SWITCH iMission
|
|
CASE 0 RETURN FALSE BREAK
|
|
CASE 1
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_1)
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_PP1_COMPLETED_TEXT
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_PP2_UNLOCKED_CALL
|
|
RETURN FALSE
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_2)
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_PP2_COMPLETED_TEXT
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_PPF_UNLOCKED_CALL
|
|
RETURN FALSE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_BILLIONAIRE_GAMES
|
|
SWITCH iMission
|
|
CASE 0 RETURN FALSE BREAK
|
|
CASE 1
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_1)
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_BG1_COMPLETED_TEXT
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_BG2_UNLOCKED_CALL
|
|
RETURN FALSE
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_2)
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_BG2_COMPLETED_TEXT
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_BGF_UNLOCKED_CALL
|
|
RETURN FALSE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_HOOD_PASS
|
|
SWITCH iMission
|
|
CASE 0 RETURN FALSE BREAK
|
|
CASE 1
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_1)
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_HP1_COMPLETED_TEXT
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_HP2_UNLOCKED_CALL
|
|
RETURN FALSE
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_2)
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_HP2_COMPLETED_TEXT
|
|
AND g_eFixerDisableMissionLaunchReason != FMLDR_HPF_UNLOCKED_CALL
|
|
RETURN FALSE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_STRAND_INVESTIGATION_MISSION_COMPLETE(FIXER_STRANDS eStrand, INT iMission)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER
|
|
SWITCH iMission
|
|
CASE 0 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_1) BREAK
|
|
CASE 1 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_2) BREAK
|
|
CASE 2 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION) BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_BILLIONAIRE_GAMES
|
|
SWITCH iMission
|
|
CASE 0 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_1) BREAK
|
|
CASE 1 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_2) BREAK
|
|
CASE 2 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION) BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_HOOD_PASS
|
|
SWITCH iMission
|
|
CASE 0 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_1) BREAK
|
|
CASE 1 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_2) BREAK
|
|
CASE 2 RETURN HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_MISSION) BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_DATA_LEAK_COPIES_FOUND()
|
|
|
|
INT i = 0
|
|
|
|
i += BOOL_TO_INT(HAS_PLAYER_COMPLETED_FIXER_STORY_MISSION(PLAYER_ID(), FSM_BILLIONAIRE_GAMES_MISSION))
|
|
i += BOOL_TO_INT(HAS_PLAYER_COMPLETED_FIXER_STORY_MISSION(PLAYER_ID(), FSM_HOOD_PASS_MISSION))
|
|
i += BOOL_TO_INT(HAS_PLAYER_COMPLETED_FIXER_STORY_MISSION(PLAYER_ID(), FSM_PARTY_PROMOTER_MISSION))
|
|
|
|
RETURN i
|
|
|
|
ENDFUNC
|
|
|
|
//***********Scaleform wrappers***********
|
|
|
|
PROC SHOW_LOGIN_SCREEN()
|
|
FIXER_APP_SET_APP_PAGE(FAA_PAGE_LOGIN)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_LOGIN_SCREEN")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(GET_PLAYER_NAME(PLAYER_ID()))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
FUNC BOOL HAS_PLAYER_STARTED_A_STRAND_OR_COMPLETED_FIXER_STORY()
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION()
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_SETUP_MISSION()
|
|
IF g_eFixerDisableMissionLaunchReason = FMLDR_POST_SETUP_MISSION_CALL
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
IF GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) != FS_NONE
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_PLAYER_COMPLETED_FIXER_STORY_AS_LEADER(PLAYER_ID())
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_MISSION)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_PLAYER_NEED_TO_MEET_FRANKLIN_AT_GOLF_COURSE()
|
|
IF HAS_LOCAL_PLAYER_UNLOCKED_FIXER_STORY()
|
|
AND NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION()
|
|
RETURN IS_BIT_SET(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__FRANKLIN_GOLF_COURSE_CALL_DONE)
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_PLAYER_NEED_TO_MEET_IMANI_AFTER_INTRO()
|
|
IF HAS_LOCAL_PLAYER_UNLOCKED_FIXER_STORY()
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION()
|
|
RETURN NOT HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_POST_SETUP_CUTSCENE()
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DOES_PLAYER_NEED_TO_WAIT_FOR_IMANI_TO_ANALYSE_FIB_DATA()
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_SETUP_MISSION()
|
|
AND NOT HAS_PLAYER_STARTED_FIXER_STORY_INVESTIGATIONS(PLAYER_ID())
|
|
RETURN NOT IS_BIT_SET(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__INVESTIGATIONS_CALL_DONE)
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC STRING FIXER_APP_GET_VIP_BUTTON_LOCKED_REASON(BOOL &bContractLocked)
|
|
STRING sLockedVipLabel
|
|
bContractLocked = FALSE
|
|
|
|
IF IS_FIXER_STORY_ON_COOLDOWN(TRUE)
|
|
sLockedVipLabel = "FIX_VIP_LOCK3"
|
|
bContractLocked = TRUE
|
|
ELIF NOT HAS_PLAYER_STARTED_A_STRAND_OR_COMPLETED_FIXER_STORY()
|
|
IF DOES_PLAYER_NEED_TO_MEET_FRANKLIN_AT_GOLF_COURSE()
|
|
sLockedVipLabel = "FIX_VIP_LOCK"
|
|
bContractLocked = TRUE
|
|
ELIF DOES_PLAYER_NEED_TO_MEET_IMANI_AFTER_INTRO()
|
|
sLockedVipLabel = "FIX_VIP_LOCK1"
|
|
bContractLocked = TRUE
|
|
ELIF NOT HAS_LOCAL_PLAYER_UNLOCKED_FIXER_STORY()
|
|
OR NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION()
|
|
sLockedVipLabel = "FIX_VIP_INTRO"
|
|
bContractLocked = TRUE
|
|
ELIF DOES_PLAYER_NEED_TO_WAIT_FOR_IMANI_TO_ANALYSE_FIB_DATA()
|
|
sLockedVipLabel = "FIX_VIP_LOCK2"
|
|
bContractLocked = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN sLockedVipLabel
|
|
ENDFUNC
|
|
|
|
PROC SHOW_HOME_SCREEN()
|
|
FIXER_APP_SET_APP_PAGE(FAA_PAGE_HOME)
|
|
FIXER_APP_SET_APP_STAGE(FAA_STAGE_IDLE)
|
|
|
|
BOOL bvipContractLocked
|
|
STRING sLockedVipLabel = FIXER_APP_GET_VIP_BUTTON_LOCKED_REASON(bvipContractLocked)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_HOME_SCREEN")
|
|
//Security Contract title
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FIX_APP_SECU_T")
|
|
//Vip Contract title
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FIX_APP_VIP_T")
|
|
//VIP Contract Locked
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bvipContractLocked)
|
|
//VIP contract locked messaging
|
|
IF bvipContractLocked
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sLockedVipLabel)
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")
|
|
ENDIF
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC SCALEFORM_MOVIE_METHOD_ADD_PARAM_ENUM(ENUM_TO_INT enumValue)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(enumValue))
|
|
ENDPROC
|
|
|
|
PROC MOVE_CURSOR_TO_BUTTON(FAA_BUTTON_INDEXES eButton)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_CURRENT_SELECTION")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_ENUM(eButton)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC SHOW_SPEAKER_ICON(BOOL bShow)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_SPEAKER")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bShow)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Updates the security contract selection screen with the top stat information. UPDATE_SECURITY_CONTRACT_SCREEN should be called immediately after SHOW_SECURITY_CONTRACT_SCREEN to populate the top stat.
|
|
PROC UPDATE_SECURITY_CONTRACTS_SELECTION_SCREEN_STATS(BOOL bTopStatVisible = FALSE, INT iSelectedContract = 0)
|
|
|
|
FIXER_SECURITY_CONTRACTS fixerSecurityContract = GET_PLAYER_FIXER_SECURITY_CONTRACT_IN_SLOT(PLAYER_ID(), iSelectedContract)
|
|
|
|
STRING sStatOneLabel = GET_SECURITY_CONTRACT_KEY_STAT_LABEL(fixerSecurityContract)
|
|
INT iStatOneValue = GET_LOCAL_PLAYER_NUM_COMPLETIONS_OF_FIXER_SECURITY_CONTRACT(fixerSecurityContract)
|
|
BOOL bStatOneVisible = bTopStatVisible
|
|
|
|
STRING sStatTwoLabel = "FAPP_CONTRACTS_COMPLETE"
|
|
INT iStatTwoValue = GET_LOCAL_PLAYER_NUM_FIXER_SECURITY_CONTRACTS_COMPLETED()
|
|
BOOL bStatTwoVisible = TRUE
|
|
|
|
STRING sStatThreeLabel = "FAPP_EARNINGS"
|
|
INT iStatThreeValue = GET_PLAYER_TOTAL_FIXER_SECURITY_CONTRACT_EARNINGS(PLAYER_ID())
|
|
BOOL bStatThreeVisible = TRUE
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_SECURITY_CONTRACT_SELECTION_SCREEN")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sStatOneLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iStatOneValue)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bStatOneVisible)
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sStatTwoLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iStatTwoValue)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bStatTwoVisible)
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sStatThreeLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iStatThreeValue)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bStatThreeVisible)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Shows the security contract selection screen. UPDATE_SECURITY_CONTRACT_SCREEN should be called immediately after SHOW_SECURITY_CONTRACT_SCREEN to populate the top stat.
|
|
PROC SHOW_SECURITY_CONTRACTS_SELECTION_SCREEN()
|
|
FIXER_APP_SET_APP_PAGE(FAA_PAGE_SECURITY_CONTRACT_SELECTION)
|
|
|
|
INT iSecContractsCompleted = GET_LOCAL_PLAYER_NUM_FIXER_SECURITY_CONTRACTS_COMPLETED()
|
|
INT iSecContractsEarnings = GET_PLAYER_TOTAL_FIXER_SECURITY_CONTRACT_EARNINGS(PLAYER_ID())
|
|
INT ivaluablesRecovered = GET_PLAYER_NUM_COMPLETIONS_OF_FIXER_SECURITY_CONTRACT(PLAYER_ID(), FSC_PACKAGE_RECOVERY)
|
|
BOOL bVipContractLocked = FALSE
|
|
|
|
STRING sLockedVipLabel = FIXER_APP_GET_VIP_BUTTON_LOCKED_REASON(bvipContractLocked)
|
|
|
|
//Security contract one
|
|
FIXER_SECURITY_CONTRACTS fixerSecurityContracts = GET_PLAYER_FIXER_SECURITY_CONTRACT_IN_SLOT(PLAYER_ID(), 0)
|
|
|
|
STRING sContractOneTitle = GET_SECURITY_CONTRACT_TITLE(fixerSecurityContracts)
|
|
STRING sContractOneDesc = GET_SECURITY_CONTRACT_DESCRIPTION(fixerSecurityContracts)
|
|
STRING sContractOneTexture = "SEC_VIP_LANDING_IMAGE"
|
|
INT iContractOnePayment = GET_FIXER_SECURITY_CONTRACT_REWARD(0)
|
|
SECURITY_CONTRACT_DIFFICULTY eContractOneDifficulty = GET_SECURITY_CONTRACT_DIFFICULTY(0)
|
|
|
|
//Security contract two
|
|
fixerSecurityContracts = GET_PLAYER_FIXER_SECURITY_CONTRACT_IN_SLOT(PLAYER_ID(), 1)
|
|
|
|
STRING sContractTwoTitle = GET_SECURITY_CONTRACT_TITLE(fixerSecurityContracts)
|
|
STRING sContractTwoDesc = GET_SECURITY_CONTRACT_DESCRIPTION(fixerSecurityContracts)
|
|
STRING sContractTwoTexture = "SEC_VIP_LANDING_IMAGE"
|
|
INT iContractTwoPayment = GET_FIXER_SECURITY_CONTRACT_REWARD(1)
|
|
SECURITY_CONTRACT_DIFFICULTY eContractTwodifficulty = GET_SECURITY_CONTRACT_DIFFICULTY(1)
|
|
|
|
//Security Contract three
|
|
fixerSecurityContracts = GET_PLAYER_FIXER_SECURITY_CONTRACT_IN_SLOT(PLAYER_ID(), 2)
|
|
|
|
STRING sContractThreeTitle = GET_SECURITY_CONTRACT_TITLE(fixerSecurityContracts)
|
|
STRING sContractThreeDesc = GET_SECURITY_CONTRACT_DESCRIPTION(fixerSecurityContracts)
|
|
STRING sContractThreeTexture = "SEC_VIP_LANDING_IMAGE"
|
|
INT iContractThreePayment = GET_FIXER_SECURITY_CONTRACT_REWARD(2)
|
|
SECURITY_CONTRACT_DIFFICULTY eContractThreeDifficulty = GET_SECURITY_CONTRACT_DIFFICULTY(2)
|
|
|
|
UNUSED_PARAMETER(sLockedVipLabel)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_SECURITY_CONTRACT_SELECTION_SCREEN")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSecContractsCompleted)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSecContractsEarnings)
|
|
|
|
//Security contract one
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sContractOneTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sContractOneDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_ENUM(eContractOneDifficulty)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sContractOneTexture)
|
|
|
|
//Security contract two
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sContractTwoTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sContractTwoDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_ENUM(eContractTwodifficulty)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sContractTwoTexture)
|
|
|
|
//Security contract three
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sContractThreeTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sContractThreeDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_ENUM(eContractThreeDifficulty)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sContractThreeTexture)
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ivaluablesRecovered)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iContractOnePayment)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iContractTwoPayment)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iContractThreePayment)
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bVipContractLocked)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
UPDATE_SECURITY_CONTRACTS_SELECTION_SCREEN_STATS()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Toggles the button functionality between the menu items on the left and the tabs on the right. Automatically moves the cursor to the first unlocked item and highlights it.
|
|
PROC SET_MISSION_SCREEN_TABS_ENABLED(BOOL bEnabled)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "ENABLE_TABS")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bEnabled)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Updates the enabled state of start button and its text. By default the start button will start disabled and with the text "START"
|
|
PROC UPDATE_MISSION_SCREEN_START_BUTTON(STRING sButtonLabel, BOOL bEnabled)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_START_BUTTON")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sButtonLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bEnabled)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC SETUP_START_MISSION_BUTTON_SECURITY_CONTRACTS(BOOL bEnabled)
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FIX_APP_ACC_CON", bEnabled)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Update the tab information and stats. this is intended to be called when a security contract is clicked.
|
|
/// PARAMS:
|
|
/// iMission - The index of the mission selected in the menu
|
|
PROC SCALEFORM_SELECT_SECURITY_CONTRACT(INT iMission)
|
|
|
|
FIXER_APP_SET_APP_STAGE(FAA_STAGE_SEC_CONTRACT_SELECTED)
|
|
|
|
FIXER_SECURITY_CONTRACTS fixerSecurityContracts = GET_PLAYER_FIXER_SECURITY_CONTRACT_IN_SLOT(PLAYER_ID(), iMission)
|
|
|
|
STRING sTitle = GET_SECURITY_CONTRACT_TITLE(fixerSecurityContracts)
|
|
STRING sDescription = GET_SECURITY_CONTRACT_DESCRIPTION(fixerSecurityContracts)
|
|
STRING sImage = "SEC_VIP_LANDING_IMAGE"
|
|
INT iPayment = GET_FIXER_SECURITY_CONTRACT_REWARD(iMission)
|
|
|
|
SECURITY_CONTRACT_DIFFICULTY eDifficulty = GET_SECURITY_CONTRACT_DIFFICULTY(iMission)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_SECURITY_CONTRACT_SELECTION_TAB")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDescription)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_ENUM(eDifficulty)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sImage)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iPayment)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
IF ARE_FIXER_SECURITY_CONTRACTS_ON_COOLDOWN()
|
|
PRINTLN("<APP_FIXER_HQ> SCALEFORM_SELECT_SECURITY_CONTRACT - Set FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD")
|
|
SET_BIT(iBS, FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD)
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("FXR_NX_SEC_WAIT")
|
|
PRINT_HELP("FXR_NX_SEC_WAIT")
|
|
ENDIF
|
|
SETUP_START_MISSION_BUTTON_SECURITY_CONTRACTS(FALSE)
|
|
ELSE
|
|
SETUP_START_MISSION_BUTTON_SECURITY_CONTRACTS(TRUE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SF_UPDATE_TAB_DATA(STRING sTabDescription, STRING sTabImage, STRING sObjectiveFoundLabel, BOOL bShowObjective, BOOL bMissionComplete, BOOL bCheckboxVisible, STRING sStatusLabel)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_TAB_DATA")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTabDescription)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sTabImage)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sObjectiveFoundLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bShowObjective)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bMissionComplete)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bCheckboxVisible)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sStatusLabel)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Updates the description, images, the copy found label, and the copy found tick mark. This should be called when a tab is selected.
|
|
PROC UPDATE_DATA_LEAK_TAB_DATA(FIXER_STRANDS eStrand, INT iMission, INT iOverrideForLeakOverview = -1)
|
|
|
|
STRING sTabDescription = GET_STRAND_INVESTIGATION_MISSION_DESCRIPTION(eStrand, iMission)
|
|
STRING sTabImage = GET_STRAND_INVESTIGATION_MISSION_TEXTURE(eStrand, iMission)
|
|
STRING sObjectiveFoundLabel = GET_STRAND_INVESTIGATION_OBJECTIVE(eStrand, iMission)
|
|
BOOL bObjectiveComplete = IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eStrand, iMission)
|
|
STRING sStatusLabel = ""
|
|
|
|
IF iOverrideForLeakOverview != -1
|
|
sTabImage = GET_STRAND_INVESTIGATION_MISSION_TEXTURE(eStrand, iOverrideForLeakOverview)
|
|
sTabDescription = GET_STRAND_OVERVIEW_DESCRIPTION(eStrand)
|
|
ENDIF
|
|
|
|
CLEAR_REPLAY_MISSION_PREPARED_FLAGS()
|
|
SF_UPDATE_TAB_DATA(sTabDescription, sTabImage, sObjectiveFoundLabel, bObjectiveComplete, bObjectiveComplete, TRUE, sStatusLabel)
|
|
ENDPROC
|
|
|
|
PROC UPDATE_REPLAY_MISSION_TAB_DATA(FAA_BUTTON_INDEXES eButton)
|
|
|
|
//Intro mission
|
|
STRING sMissionDescription = GET_INTRO_MISSION_DESCRIPTION()
|
|
STRING sMissionTexture = GET_INTRO_MISSION_TEXTURE()
|
|
|
|
IF eButton = BUTTON_SETUP_MISSION
|
|
//Setup mission
|
|
sMissionDescription = GET_SETUP_MISSION_DESCRIPTION()
|
|
sMissionTexture = GET_SETUP_MISSION_TEXTURE()
|
|
|
|
SET_REPLAY_SETUP_MISSION_PREPARED_FLAG()
|
|
ELSE
|
|
SET_REPLAY_INTRO_MISSION_PREPARED_FLAG()
|
|
ENDIF
|
|
|
|
SF_UPDATE_TAB_DATA(sMissionDescription, sMissionTexture, "FIX_APP_INVEST", FALSE, TRUE, FALSE, "")
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Updates the locked state of the menu items.
|
|
PROC UPDATE_DATA_LEAK_STRAND_LOCK_STATE()
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_MENU_LOCKED_STATES")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FIXER_APP_IS_DATA_LEAK_LOCKED(FS_PARTY_PROMOTER))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FIXER_APP_IS_DATA_LEAK_LOCKED(FS_BILLIONAIRE_GAMES))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FIXER_APP_IS_DATA_LEAK_LOCKED(FS_HOOD_PASS))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Updates the data leak screen. Updates the tabs and related data. UPDATE_DATA_LEAK_SCREEN should be called immediately after SHOW_DATA_LEAK_SCREEN to populate the tabs.
|
|
PROC UPDATE_DATA_LEAK(STRING sTabOneTitle, BOOL bTabOneLocked, BOOL bTabOneComplete, STRING sTabTwoTitle, BOOL bTabTwoLocked, BOOL bTabTwoComplete, STRING sTabThreeTitle, BOOL bTabThreeLocked, BOOL bTabThreeComplete, INT iStrandTotalPayment, INT iMissionItemsFound)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "UPDATE_DATA_LEAK_SCREEN")
|
|
//First Tab
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTabOneTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bTabOneLocked)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bTabOneComplete)
|
|
|
|
//Second Tab
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTabTwoTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bTabTwoLocked)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bTabTwoComplete)
|
|
|
|
//Third Tab
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTabThreeTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bTabThreeLocked)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bTabThreeComplete)
|
|
|
|
//Strand general data
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iStrandTotalPayment)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iMissionItemsFound)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC UPDATE_DATA_LEAK_SCREEN_WITH_STRAND(FIXER_STRANDS eStrand)
|
|
|
|
STRING sTabOneTitle = GET_STRAND_INVESTIGATION_MISSION_TITLE(eStrand, 0)
|
|
BOOL bTabOneLocked = IS_STRAND_INVESTIGATION_MISSION_LOCKED(eStrand, 0)
|
|
BOOL bTabOneComplete = IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eStrand, 0)
|
|
|
|
STRING sTabTwoTitle = GET_STRAND_INVESTIGATION_MISSION_TITLE(eStrand, 1)
|
|
BOOL bTabTwoLocked = IS_STRAND_INVESTIGATION_MISSION_LOCKED(eStrand, 1)
|
|
BOOL bTabTwoComplete = IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eStrand, 1)
|
|
|
|
STRING sTabThreeTitle = GET_STRAND_INVESTIGATION_MISSION_TITLE(eStrand, 2)
|
|
BOOL bTabThreeLocked = IS_STRAND_INVESTIGATION_MISSION_LOCKED(eStrand, 2)
|
|
BOOL bTabThreeComplete = IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eStrand, 2)
|
|
|
|
INT iStrandTotalPayment = GET_FIXER_FINALE_CASH_REWARD()
|
|
INT iMissionItemsFound = GET_DATA_LEAK_COPIES_FOUND()
|
|
|
|
UPDATE_DATA_LEAK(sTabOneTitle, bTabOneLocked, bTabOneComplete, sTabTwoTitle, bTabTwoLocked, bTabTwoComplete, sTabThreeTitle, bTabThreeLocked, bTabThreeComplete, iStrandTotalPayment, iMissionItemsFound)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:.
|
|
/// If one is active then the next mission up will be returned
|
|
/// If there are no more missions or we are waiting for a flow call before the next mission can launch then -1 is returned
|
|
FUNC INT GET_NEXT_MISISON_IN_STRAND(FIXER_STRANDS eStrand)
|
|
|
|
IF eStrand != FS_NONE
|
|
IF IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eStrand, 2)
|
|
RETURN -1
|
|
ELIF IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eStrand, 1)
|
|
IF NOT IS_STRAND_INVESTIGATION_MISSION_LOCKED(eStrand, 2)
|
|
RETURN 2
|
|
ENDIF
|
|
ELIF IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eStrand, 0)
|
|
IF NOT IS_STRAND_INVESTIGATION_MISSION_LOCKED(eStrand, 1)
|
|
RETURN 1
|
|
ENDIF
|
|
ELSE
|
|
RETURN 0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN -1
|
|
ENDFUNC
|
|
|
|
FUNC FAA_BUTTON_INDEXES FIXER_APP_GET_BUTTON_FOR_DATA_LEAK(FIXER_STRANDS eStrand)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER RETURN BUTTON_DATA_LEAK_1 BREAK
|
|
CASE FS_BILLIONAIRE_GAMES RETURN BUTTON_DATA_LEAK_2 BREAK
|
|
CASE FS_HOOD_PASS RETURN BUTTON_DATA_LEAK_3 BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN BUTTON_LOGIN
|
|
ENDFUNC
|
|
|
|
FUNC FIXER_STORY_MISSIONS FIXER_APP_GET_FINAL_MISSION_ID_FOR_DATA_LEAK_STRAND(FIXER_STRANDS eStrand)
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER RETURN FSM_PARTY_PROMOTER_MISSION BREAK
|
|
CASE FS_BILLIONAIRE_GAMES RETURN FSM_BILLIONAIRE_GAMES_MISSION BREAK
|
|
CASE FS_HOOD_PASS RETURN FSM_HOOD_PASS_MISSION BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FSM_NONE
|
|
ENDFUNC
|
|
|
|
FUNC FIXER_STRANDS FIXER_APP_GET_DATA_LEAK_FROM_BUTTON(FAA_BUTTON_INDEXES eButton)
|
|
SWITCH eButton
|
|
CASE BUTTON_DATA_LEAK_1 RETURN FS_PARTY_PROMOTER BREAK
|
|
CASE BUTTON_DATA_LEAK_2 RETURN FS_BILLIONAIRE_GAMES BREAK
|
|
CASE BUTTON_DATA_LEAK_3 RETURN FS_HOOD_PASS BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FS_NONE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// When on the data leak screen this will move the cursor to the appropriate mission tab
|
|
PROC MOVE_CURSOR_TO_MISSION_TAB(INT iMission)
|
|
|
|
FAA_BUTTON_INDEXES eButton
|
|
|
|
SWITCH iMission
|
|
CASE 0 eButton = BUTTON_DATA_LEAK_TAB_1 BREAK
|
|
CASE 1 eButton = BUTTON_DATA_LEAK_TAB_2 BREAK
|
|
CASE 2 eButton = BUTTON_DATA_LEAK_TAB_3 BREAK
|
|
ENDSWITCH
|
|
|
|
MOVE_CURSOR_TO_BUTTON(eButton)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Sets up the data leak screen with default data
|
|
PROC SETUP_DEFAULT_MISSION_TAB_DATA()
|
|
INT iStrandTotalPayment = GET_FIXER_FINALE_CASH_REWARD()
|
|
INT iMissionItemsFound = GET_DATA_LEAK_COPIES_FOUND()
|
|
|
|
UPDATE_DATA_LEAK("", TRUE, FALSE, "", TRUE, FALSE, "", TRUE, FALSE, iStrandTotalPayment, iMissionItemsFound)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Shows the data leak screen. Setups all the menu items and labels. UPDATE_DATA_LEAK_SCREEN should be called immediately after SHOW_DATA_LEAK_SCREEN to populate the tabs.
|
|
PROC SHOW_DATA_LEAK_SCREEN()
|
|
FIXER_APP_SET_APP_PAGE(FAA_PAGE_DATA_LEAK_SELECTION)
|
|
|
|
//Intro mission
|
|
STRING sIntroTitle = GET_INTRO_MISSION_TITLE()
|
|
STRING sIntroDesc = GET_INTRO_MISSION_DESCRIPTION()
|
|
STRING sIntroTexture = GET_INTRO_MISSION_TEXTURE()
|
|
|
|
//Setup mission
|
|
STRING sSetupTitle = GET_SETUP_MISSION_TITLE()
|
|
STRING sSetupDesc = GET_SETUP_MISSION_DESCRIPTION()
|
|
STRING sSetupTexture = GET_SETUP_MISSION_TEXTURE()
|
|
|
|
//Data Leak One
|
|
STRING sDataleakOneTitle = "FIX_APP_DL1_T"
|
|
STRING sDataleakOneDesc = GET_STRAND_OVERVIEW_DESCRIPTION(FS_PARTY_PROMOTER)
|
|
STRING sDataLeakOneTexture = "MISSION_VINEWOOD"
|
|
BOOL bDataLeakOneLocked = FIXER_APP_IS_DATA_LEAK_LOCKED(FS_PARTY_PROMOTER)
|
|
BOOL bDataLeakOneComplete = HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION)
|
|
|
|
//Data Leak Two
|
|
STRING sDataleakTwoTitle = "FIX_APP_DL2_T"
|
|
STRING sDataleakTwoDesc = GET_STRAND_OVERVIEW_DESCRIPTION(FS_BILLIONAIRE_GAMES)
|
|
STRING sDataLeakTwoTexture = "MISSION_RICHMAN_LEAK"
|
|
BOOL bDataLeakTwoLocked = FIXER_APP_IS_DATA_LEAK_LOCKED(FS_BILLIONAIRE_GAMES)
|
|
BOOL bDataLeakTwoComplete = HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION)
|
|
|
|
//Data Leak Three
|
|
STRING sDataleakThreeTitle = "FIX_APP_DL3_T"
|
|
STRING sDataleakThreeDesc = GET_STRAND_OVERVIEW_DESCRIPTION(FS_HOOD_PASS)
|
|
STRING sDataLeakThreeTexture = "MISSION_SOUTH_CENTRAL"
|
|
BOOL bDataLeakThreeLocked = FIXER_APP_IS_DATA_LEAK_LOCKED(FS_HOOD_PASS)
|
|
BOOL bDataLeakThreeComplete = HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_MISSION)
|
|
|
|
BOOL bReplayAvailable = HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_AS_LEADER()
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_DATA_LEAK_SCREEN")
|
|
//Data leak one
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDataleakOneTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDataleakOneDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bDataLeakOneLocked)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bDataLeakOneComplete)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sDataLeakOneTexture)
|
|
|
|
//Data leak two
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDataleakTwoTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDataleakTwoDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bDataLeakTwoLocked)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bDataLeakTwoComplete)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sDataLeakTwoTexture)
|
|
|
|
//Data leak three
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDataleakThreeTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDataleakThreeDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bDataLeakThreeLocked)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bDataLeakThreeComplete)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sDataLeakThreeTexture)
|
|
|
|
//Replay
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bReplayAvailable)
|
|
|
|
//Intro mission
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sIntroTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sIntroDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sIntroTexture)
|
|
|
|
//Setup mission
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sSetupTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sSetupDesc)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sSetupTexture)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
//should be called immediately after SHOW_DATA_LEAK_SCREEN to populate the tabs
|
|
FIXER_STRANDS eActiveStrand = GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE)
|
|
INT iActiveMission = GET_NEXT_MISISON_IN_STRAND(eActiveStrand)
|
|
|
|
//Setup the page as appropriate
|
|
SWITCH eActiveStrand
|
|
CASE FS_NONE
|
|
//Default data to have the screen display correctly
|
|
SETUP_DEFAULT_MISSION_TAB_DATA()
|
|
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION)
|
|
UPDATE_DATA_LEAK_TAB_DATA(FS_PARTY_PROMOTER, 2, 0)
|
|
UPDATE_CURRENTLY_DISPLAYED_STRAND(FS_PARTY_PROMOTER)
|
|
MOVE_CURSOR_TO_BUTTON(BUTTON_DATA_LEAK_1)
|
|
ELIF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION)
|
|
UPDATE_DATA_LEAK_TAB_DATA(FS_BILLIONAIRE_GAMES, 2, 0)
|
|
UPDATE_CURRENTLY_DISPLAYED_STRAND(FS_BILLIONAIRE_GAMES)
|
|
MOVE_CURSOR_TO_BUTTON(BUTTON_DATA_LEAK_2)
|
|
ELSE
|
|
UPDATE_DATA_LEAK_TAB_DATA(FS_HOOD_PASS, 2, 0)
|
|
UPDATE_CURRENTLY_DISPLAYED_STRAND(FS_HOOD_PASS)
|
|
MOVE_CURSOR_TO_BUTTON(BUTTON_DATA_LEAK_3)
|
|
ENDIF
|
|
|
|
SET_DISPLAYING_LEAK_OVERVIEW(TRUE)
|
|
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", FALSE)
|
|
BREAK
|
|
DEFAULT
|
|
//Set the primary screen with the current data
|
|
UPDATE_DATA_LEAK_SCREEN_WITH_STRAND(eActiveStrand)
|
|
//Enable tab selection
|
|
SET_MISSION_SCREEN_TABS_ENABLED(TRUE)
|
|
|
|
IF iActiveMission != -1
|
|
//Auto setup the mission information for the relevant mission
|
|
UPDATE_DATA_LEAK_TAB_DATA(eActiveStrand, iActiveMission)
|
|
SET_SELECTED_DATA_LEAK_STRAND_MISSION(iActiveMission)
|
|
SET_DISPLAYING_LEAK_OVERVIEW(FALSE)
|
|
UPDATE_CURRENTLY_DISPLAYED_STRAND(eActiveStrand)
|
|
MOVE_CURSOR_TO_MISSION_TAB(iActiveMission)
|
|
ELSE
|
|
//If no active or available misison then default to strand overview
|
|
UPDATE_DATA_LEAK_TAB_DATA(eActiveStrand, 2, 0)
|
|
//Default cursor placement
|
|
MOVE_CURSOR_TO_BUTTON(FIXER_APP_GET_BUTTON_FOR_DATA_LEAK(eActiveStrand))
|
|
//Keep script data up to date
|
|
SET_DISPLAYING_LEAK_OVERVIEW(TRUE)
|
|
UPDATE_CURRENTLY_DISPLAYED_STRAND(eActiveStrand)
|
|
//Disable the start button
|
|
IF IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eActiveStrand, 2)
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FIX_APP_MIS_COM", FALSE)
|
|
ELSE
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//Set the strand to make sure we are launching from the appropriate strand
|
|
SET_SELECTED_DATA_LEAK_STRAND(eActiveStrand)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Show the data recovery screen for launching the setup mission
|
|
PROC SHOW_DATA_RECOVERY_SCREEN()
|
|
|
|
STRING sMissionTitle = "FIX_APP_VIP_SETUP_T"
|
|
STRING sMissionDescription = "FIX_APP_VIP_SETUP_D"
|
|
STRING sMissionTexture = "SETUP_DATA_RECOVERY"
|
|
STRING sInvestigateLabel = ""
|
|
STRING sMissionStartLabel = "FAPP_ACCEPT"
|
|
INT iEarnings = 0
|
|
BOOL bComplete = FALSE //Should always be false - we will only show this screen once
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SHOW_DATA_RECOVERY_SCREEN")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sMissionTitle)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sMissionDescription)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bComplete)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING(sMissionTexture)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iEarnings)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sInvestigateLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sMissionStartLabel)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
FIXER_APP_SET_APP_PAGE(FAA_PAGE_DATA_RECOVERY)
|
|
MOVE_CURSOR_TO_BUTTON(BUTTON_DATA_RECOVERY)
|
|
ENDPROC
|
|
|
|
//***********Mission Launching***********
|
|
FUNC BOOL LAUNCH_FIXER_STORY_NSTANCED_MISSION(FIXER_STORY_MISSIONS eMission)
|
|
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_LAUNCH_MISSION)
|
|
|
|
INT iArrayPos = GET_FIXER_STORY_MISSION_ARRAY_POS(eMission)
|
|
|
|
IF iArrayPos = -1
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - iArrayPos = -1. Candidate args present? ", GET_STRING_FROM_BOOL(GET_COMMANDLINE_PARAM_EXISTS("sc_UseRockstarCandidateMissions")))
|
|
#ENDIF
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
TEXT_LABEL_23 tlName = g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArrayPos].tlName
|
|
INT iType = g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArrayPos].iType
|
|
INT iMaxPlayers = g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArrayPos].iMaxPlayers
|
|
|
|
PRINTLN("[TS] ****************************************************")
|
|
PRINTLN("[TS] * [FIXER] * LAUNCH_FIXER_STORY_NSTANCED_MISSION tlName = ", tlName, "- ", GET_CLOUD_TIME_AS_INT(), ", F - ", GET_FRAME_COUNT(), " *")
|
|
PRINTLN("[TS] ****************************************************")
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - eMission = ", FIXER_STORY_MISSIONS_TO_STRING(eMission))
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - iArrayPos = ", iArrayPos)
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - tlName = ", tlName)
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - iType = ", iType)
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - iMaxPlayers = ", iMaxPlayers)
|
|
|
|
SET_PLAYER_LEAVING_CORONA_VECTOR(GET_PLAYER_PERCEIVED_COORDS(PLAYER_ID()))
|
|
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_NO_COLLISION | NSPC_CAN_BE_TARGETTED | NSPC_FREEZE_POSITION | NSPC_USE_PLAYER_FADE_OUT)
|
|
g_TransitionSessionNonResetVars.bSaveBeforeCoronaVehicle = TRUE
|
|
|
|
SET_MP_DECORATOR_BIT(PLAYER_ID(), MP_DECORATOR_BS_INVALID_TO_SPECTATE)
|
|
|
|
CLEAR_PAUSE_MENU_IS_USING_UGC()
|
|
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
|
|
|
|
iType = FMMC_TYPE_FIXER_STORY_MISSION
|
|
SET_FM_JOB_ENTERY_TYPE(ciMISSION_ENTERY_TYPE_FIXER_APP)
|
|
SET_TRANSITION_SESSIONS_LAUNCHING_FIXER_STORY_MISSION_FROM_APP()
|
|
SET_PLAYER_LAUNCHING_FIXER_STORY_MISSION_IN_AGENCY()
|
|
|
|
IF (AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
|
|
OR SHOULD_TRANSITION_SESSIONS_CLEAN_UP_ON_CALL_NOW())
|
|
SET_TRANSITION_SESSIONS_CLEAN_UP_ON_CALL_NOW()
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - On call, setting to clean up on call")
|
|
|
|
//If we are
|
|
ELSE
|
|
g_SimpleInteriorData.bAcceptedSimpleIntSameSessionHeistInv = TRUE
|
|
SET_TRANSITION_SESSIONS_QUICK_MATCH_TYPE(iType)
|
|
IF GB_GET_NUM_GOONS_IN_LOCAL_GANG() <= 3
|
|
SMV_FLOW_SET_LAUNCHING_SMV_IN_OFFICE()
|
|
ENDIF
|
|
SET_GAMER_HANDLE_OF_PLAYER_LAUNCHING_SMPL_INT_HEIST(GET_GAMER_HANDLE_PLAYER(PLAYER_ID()))
|
|
SET_MY_TRANSITION_SESSION_CONTENT_ID(tlName)
|
|
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(iMaxPlayers)
|
|
CLEAR_TRANSITION_SESSIONS_NEED_TO_SKYCAM_UP_NOT_WARP()
|
|
SET_TRANSITION_SESSIONS_STARTING_QUICK_MATCH()
|
|
CLEAR_TRANSITION_SESSIONS_NEED_TO_WARP_TO_START_SKYCAM()
|
|
CLEAR_TRANSITION_SESSIONS_CORONA_CONTROLLER_MAINTAIN_CAMERA()
|
|
SET_TRANSITION_SESSIONS_FORCE_ME_HOST_QUICK_MATCH()
|
|
|
|
VECTOR vCamPosTemp
|
|
BOOL bTemp
|
|
VECTOR vZero = << 0.0, 0.0, 0.0 >>
|
|
INT iSetupBS
|
|
SET_BIT(iSetupBS, ciCORONA_CAMERA_SETUP_BS_FIXER_STORY)
|
|
SETUP_CORONA_CAMERA(g_sTransitionSessionData.ciCam, FMMC_TYPE_MISSION, 0, vZero, vCamPosTemp, vZero, TRUE, FALSE, vCamPosTemp, bTemp, bTemp, FALSE, iSetupBS)
|
|
TOGGLE_RENDERPHASES(FALSE)
|
|
|
|
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].iFmLauncherGameState = FMMC_LAUNCHER_STATE_LOAD_MISSION_FOR_TRANSITION_SESSION
|
|
|
|
PRINTLN("[TS][FIXER] LAUNCH_FIXER_STORY_NSTANCED_MISSION - Found mission at set vars, good to go!")
|
|
|
|
SCRIPT_CLEANUP(FALSE, FALSE)
|
|
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC FIXER_LAUNCH_VIP_SETUP_MISSION()
|
|
|
|
g_bLaunchedMissionFrmLaptop = TRUE
|
|
|
|
// NeilF: commented out due to url:bugstar:7428366. The missio script will need to call TRIGGER_EXIT_FROM_SIMPLE_INTERIOR_NOW() on players that
|
|
// dont' get warped into the heli, or just let them leave the agency on their own.
|
|
//TRIGGER_EXIT_FROM_SIMPLE_INTERIOR_NOW()
|
|
|
|
REQUEST_LAUNCH_GB_MISSION(FMMC_TYPE_FIXER_VIP, ENUM_TO_INT(FVV_SETUP))
|
|
|
|
SCRIPT_CLEANUP(TRUE, TRUE)
|
|
ENDPROC
|
|
|
|
PROC FIXER_LAUNCH_SECURITY_CONTRACT(INT iSlot)
|
|
g_bSecuroQuickExitOfficeChair = TRUE
|
|
g_bLaunchedMissionFrmLaptop = TRUE
|
|
|
|
REQUEST_LAUNCH_GB_MISSION(FMMC_TYPE_FIXER_SECURITY, ENUM_TO_INT(GET_PLAYER_FIXER_SECURITY_CONTRACT_IN_SLOT(PLAYER_ID(), iSlot)))
|
|
|
|
SCRIPT_CLEANUP(TRUE, TRUE)
|
|
ENDPROC
|
|
|
|
PROC FIXER_LAUNCH_DATA_LEAK_INVESTIGATION(FIXER_VIP_VARIATION fixVipVar)
|
|
|
|
g_bLaunchedMissionFrmLaptop = TRUE
|
|
g_bSecuroQuickExitOfficeChair = TRUE
|
|
|
|
REQUEST_LAUNCH_GB_MISSION(FMMC_TYPE_FIXER_VIP, ENUM_TO_INT(fixVipVar))
|
|
|
|
SCRIPT_CLEANUP(TRUE, TRUE)
|
|
ENDPROC
|
|
|
|
PROC FIXER_CHECK_AND_LAUNCH_SELECTED_DATA_LEAK(FIXER_STRANDS eStrand, INT iMission)
|
|
|
|
IF IS_FIXER_MISSION_LAUNCH_DISABLED()
|
|
PRINTLN("<APP_FIXER_HQ> FIXER_CHECK_AND_LAUNCH_SELECTED_DATA_LEAK Launch blocked for IS_FIXER_MISSION_LAUNCH_DISABLED")
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
EXIT
|
|
ENDIF
|
|
|
|
SWITCH eStrand
|
|
CASE FS_PARTY_PROMOTER
|
|
SWITCH iMission
|
|
CASE 0
|
|
// Launch investigation 1
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_1)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
FIXER_LAUNCH_DATA_LEAK_INVESTIGATION(FVV_NIGHTCLUB)
|
|
ENDIF
|
|
BREAK
|
|
CASE 1
|
|
// Launch investigation 2
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_1)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_2)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
FIXER_LAUNCH_DATA_LEAK_INVESTIGATION(FVV_YACHT)
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
// Launch investigation finale
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_1)
|
|
OR NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_2)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
LAUNCH_FIXER_STORY_NSTANCED_MISSION(FSM_PARTY_PROMOTER_MISSION)
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_BILLIONAIRE_GAMES
|
|
SWITCH iMission
|
|
CASE 0
|
|
// Launch investigation 1
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_1)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
FIXER_LAUNCH_DATA_LEAK_INVESTIGATION(FVV_LIMO)
|
|
ENDIF
|
|
BREAK
|
|
CASE 1
|
|
// Launch investigation 2
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_1)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_2)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
FIXER_LAUNCH_DATA_LEAK_INVESTIGATION(FVV_WAY_IN)
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
// Launch investigation finale
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_1)
|
|
OR NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_2)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
LAUNCH_FIXER_STORY_NSTANCED_MISSION(FSM_BILLIONAIRE_GAMES_MISSION)
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE FS_HOOD_PASS
|
|
SWITCH iMission
|
|
CASE 0
|
|
// Launch investigation 1
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_1)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
FIXER_LAUNCH_DATA_LEAK_INVESTIGATION(FVV_FAMILIES)
|
|
ENDIF
|
|
BREAK
|
|
CASE 1
|
|
// Launch investigation 2
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_1)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_2)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
FIXER_LAUNCH_DATA_LEAK_INVESTIGATION(FVV_BALLAS)
|
|
ENDIF
|
|
BREAK
|
|
CASE 2
|
|
// Launch investigation finale
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_1)
|
|
OR NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_2)
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_MISSION)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
LAUNCH_FIXER_STORY_NSTANCED_MISSION(FSM_HOOD_PASS_MISSION)
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
//***********Script functions***********
|
|
|
|
PROC SHOW_OVERLAY(STRING sTitle, STRING sMessage, STRING sAcceptButtonLabel, STRING sCancelButtonLabel, BOOL bPlayFailSound, BOOL bPlayClickSound, FAA_APP_STAGE_ID eNewAppStage = FAA_STAGE_IDLE, INT iAdditionalINT = -1, INT iSecondAdditionalINT = -1, STRING sAdditionalString = NULL, STRING sAdditionalString2 = NULL)
|
|
sOverlayMethod = "SHOW_OVERLAY_TWO_BUTTON"
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY(sCancelButtonLabel)
|
|
sOverlayMethod = "SHOW_OVERLAY_ONE_BUTTON"
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, sOverlayMethod)
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sTitle)
|
|
|
|
//Build the string we need to display
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sMessage)
|
|
//These parameters need to be given in the correct order(May need a new function if more are added)
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sAdditionalString)
|
|
|
|
//Add the first int if needed
|
|
IF iadditionalINT != -1
|
|
ADD_TEXT_COMPONENT_INTEGER(iadditionalINT)
|
|
ENDIF
|
|
|
|
//Add the string
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sAdditionalString)
|
|
|
|
//Add the extra int if needed
|
|
IF iSecondAdditionalINT != -1
|
|
//For messages that use all available parameters: Int-String-Int
|
|
ADD_TEXT_COMPONENT_INTEGER(iSecondAdditionalINT)
|
|
ENDIF
|
|
|
|
//Add the extra string if needed
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sAdditionalString2)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sAdditionalString2)
|
|
ENDIF
|
|
ELSE
|
|
IF iadditionalINT != -1
|
|
ADD_TEXT_COMPONENT_INTEGER(iadditionalINT)
|
|
ENDIF
|
|
ENDIF
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sAcceptButtonLabel)
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sCancelButtonLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sCancelButtonLabel)
|
|
ENDIF
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
IF bPlayClickSound
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
ELIF bPlayFailSound
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_ERROR)
|
|
ENDIF
|
|
|
|
SET_BIT(iBS, FAA_BS_OVERLAY_SCREEN_ACTIVE)
|
|
FIXER_APP_SET_APP_STAGE(eNewAppStage)
|
|
CLEAR_ROLLOVER_HELP()
|
|
|
|
PRINTLN("<APP_FIXER_HQ> SHOW_OVERLAY with method: ", sOverlayMethod, " title: ", sTitle, " message: ", sMessage, " Accept button: ", sAcceptButtonLabel, " Cancel button: ", sCancelButtonLabel)
|
|
ENDPROC
|
|
|
|
PROC HIDE_OVERLAY()
|
|
|
|
STRING sCloseOverlayMethod = "HIDE_OVERLAY_ONE_BUTTON"
|
|
|
|
IF GET_HASH_KEY(sOverlayMethod) = HASH("SHOW_OVERLAY_TWO_BUTTON")
|
|
sCloseOverlayMethod = "HIDE_OVERLAY_TWO_BUTTON"
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, sCloseOverlayMethod)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
FIXER_APP_SET_APP_STAGE(FAA_STAGE_IDLE)
|
|
|
|
CLEAR_BIT(iBS, FAA_BS_OVERLAY_SCREEN_ACTIVE)
|
|
|
|
PRINTLN("<APP_FIXER_HQ> HIDE_OVERLAY")
|
|
ENDPROC
|
|
|
|
PROC HANDLE_CANCEL_BUTTON_PRESS()
|
|
|
|
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
EXIT
|
|
ELIF IS_BIT_SET(iBS, FAA_BS_FADE_TO_EXIT)
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF FIXER_APP_IS_OVERLAY_OPEN()
|
|
//Hide any overlay
|
|
HIDE_OVERLAY()
|
|
ELIF FIXER_APP_GET_APP_STAGE() = FAA_STAGE_SEC_CONTRACT_SELECTED
|
|
//Go home for now, but could do something different here if asked
|
|
SHOW_HOME_SCREEN()
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() != FAA_PAGE_HOME
|
|
AND FIXER_APP_GET_APP_CURRENT_PAGE() != FAA_PAGE_LOGIN
|
|
//Go back to the home page
|
|
SHOW_HOME_SCREEN()
|
|
ELSE
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_CANCEL)))
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_BACK)
|
|
ENDPROC
|
|
|
|
PROC PASS_INPUTS_TO_SCALEFORM()
|
|
|
|
CLEAR_BIT(iBS, FAA_BS_CURSOR_INPUT_PROCESSED)
|
|
#IF IS_DEBUG_BUILD
|
|
CLEAR_BIT(iBS, FAA_BS_PRINTED_PAUSE_MENU_ACTIVE)
|
|
#ENDIF
|
|
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_LB)))
|
|
ENDIF
|
|
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_RB)))
|
|
ENDIF
|
|
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_UP)))
|
|
SET_BIT(iBS, FAA_BS_CURSOR_INPUT_PROCESSED)
|
|
ENDIF
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_DOWN)))
|
|
SET_BIT(iBS, FAA_BS_CURSOR_INPUT_PROCESSED)
|
|
ENDIF
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_LEFT)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_LEFT)))
|
|
ENDIF
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_RIGHT)))
|
|
ENDIF
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_ACCEPT)))
|
|
ENDIF
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
AND NOT IS_BIT_SET(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
HANDLE_CANCEL_BUTTON_PRESS()
|
|
ENDIF
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_X)))
|
|
ENDIF
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_Y)))
|
|
ENDIF
|
|
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
|
|
UPDATE_MENU_CURSOR_GLOBALS()
|
|
|
|
// Only set the mouse position if it's moved - this fixes a conflict between the mouse and navigating using keyboard.
|
|
IF g_fMenuCursorXMoveDistance !=0
|
|
OR g_fMenuCursoryMoveDistance !=0
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_MOUSE_INPUT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_CURSOR_X))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_CURSOR_Y))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
SET_BIT(iBS, FAA_BS_CURSOR_INPUT_PROCESSED)
|
|
ENDIF
|
|
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
|
CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(mov, "SET_INPUT_EVENT", TO_FLOAT(ENUM_TO_INT(INPUT_FRONTEND_ACCEPT)))
|
|
ENDIF
|
|
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
|
|
AND NOT IS_BIT_SET(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
HANDLE_CANCEL_BUTTON_PRESS()
|
|
ENDIF
|
|
|
|
ELSE
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
|
|
INT iLeftXNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_X)
|
|
INT iLeftYNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_AXIS_Y)
|
|
IF (iLeftXNew != 127) OR (iLeftX != 127) OR (iLeftYNew != 127) OR (iLeftY != 127)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
|
|
iLeftX = iLeftXNew
|
|
iLeftY = iLeftYNew
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iLeftX)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iLeftY)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
SET_BIT(iBS, FAA_BS_CURSOR_INPUT_PROCESSED)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
|
|
INT iRightXNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_X)
|
|
INT iRightYNew = GET_CONTROL_VALUE(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT_AXIS_Y)
|
|
IF (iRightXNew != 127) OR (iRightX != 127) OR (iRightYNew != 127) OR (iRightY != 127)
|
|
BOOL bUsingScrollWheel = (IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN))
|
|
|
|
IF NOT bUsingScrollWheel
|
|
bUsingScrollWheel = (IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP) OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP))
|
|
|
|
SET_BIT(iBS, FAA_BS_CURSOR_INPUT_PROCESSED)
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_ANALOG_STICK_INPUT")
|
|
iRightX = iRightXNew
|
|
iRightY = iRightYNew
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iRightX)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iRightY)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bUsingScrollWheel)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDIF
|
|
|
|
IF (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
|
|
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y))
|
|
AND NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELIF NOT IS_BIT_SET(iBS, FAA_BS_FADE_TO_EXIT)
|
|
CPRINTLN(DEBUG_INTERNET,"<APP_FIXER_HQ> EXITING WEBSITE for Triangle press")
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF (IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F))
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Check for any flags that mean this script should terminate
|
|
PROC RUN_CLEANUP_CHECKS()
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
PRINTLN("<APP_FIXER_HQ> Shutting down! No network game is currently active")
|
|
SCRIPT_CLEANUP()
|
|
ELIF IS_PAUSE_MENU_ACTIVE_EX()
|
|
PRINTLN("<APP_FIXER_HQ> Shutting down! Player opend the pause menu")
|
|
SCRIPT_CLEANUP()
|
|
ELIF IS_ENTITY_DEAD(PLAYER_PED_ID())
|
|
PRINTLN("<APP_FIXER_HQ> Shutting down! Player is injured or dead")
|
|
SCRIPT_CLEANUP()
|
|
ELIF IS_PLAYER_WALKING_IN_OR_OUT_OF_SIMPLE_INTERIOR(PLAYER_ID())
|
|
g_SimpleInteriorData.eInteriorToPauseBlockedEntryHelp = GET_SIMPLE_INTERIOR_PLAYER_IS_WALKING_IN_OR_OUT_FROM(PLAYER_ID())
|
|
PRINTLN("<APP_FIXER_HQ> Shutting down! Player is walking out. MAINTAIN_HELP_FOR_REASON_FOR_BLOCKED_ENTRY - Set blocker for interior: ", g_SimpleInteriorData.eInteriorToPauseBlockedEntryHelp)
|
|
SCRIPT_CLEANUP()
|
|
ELIF SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE()
|
|
PRINTLN("<APP_FIXER_HQ> Shutting down! SHOULD_THIS_MULTIPLAYER_THREAD_TERMINATE")
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_APP_ROLLOVER_HELP(STRING sHelp)
|
|
IF IS_BIT_SET(iBS, FAA_BS_DISPLAY_ROLLOVER_HELP)
|
|
IF GET_HASH_KEY(sRolloverHelp) != GET_HASH_KEY(sHelp)
|
|
PRINTLN("<APP_FIXER_HQ> DISPLAY_APP_ROLLOVER_HELP - Switching help message to: ", sHelp)
|
|
PRINT_HELP_FOREVER(sHelp)
|
|
sRolloverHelp = sHelp
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("<APP_FIXER_HQ> DISPLAY_APP_ROLLOVER_HELP - New help message: ", sHelp)
|
|
PRINT_HELP_FOREVER(sHelp)
|
|
sRolloverHelp = sHelp
|
|
SET_BIT(iBS, FAA_BS_DISPLAY_ROLLOVER_HELP)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_ACCEPT_BUTTON_INPUT_JUST_PRESSED()
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC MAINTAIN_CHECKS_FOR_CURRENT_SELECTION_ID()
|
|
IF IS_ACCEPT_BUTTON_INPUT_JUST_PRESSED()
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_SELECTION")
|
|
currentSelectionReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
SET_BIT(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_SELECTED_SECUITY_CONTRACT(FAA_BUTTON_INDEXES eHighlightedButton)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
INT iCurrentValue = iSelectedSecurityContract
|
|
#ENDIF
|
|
|
|
SWITCH eHighlightedButton
|
|
CASE BUTTON_SECURITY_CONTRACT_1 iSelectedSecurityContract = 0 BREAK
|
|
CASE BUTTON_SECURITY_CONTRACT_2 iSelectedSecurityContract = 1 BREAK
|
|
CASE BUTTON_SECURITY_CONTRACT_3 iSelectedSecurityContract = 2 BREAK
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF iCurrentValue != iSelectedSecurityContract
|
|
PRINTLN("<APP_FIXER_HQ> SET_SELECTED_SECUITY_CONTRACT - New selected contract: ", iSelectedSecurityContract)
|
|
ENDIF
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_CHECKS_FOR_CURRENT_ROLLOVER_ID()
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
AND NOT FIXER_APP_IS_OVERLAY_OPEN()
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_WAITING_FOR_ROLLOVER_RETURN_VALUE)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "GET_CURRENT_ROLLOVER")
|
|
currentRollOverReturnIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
//Add a safety timeout of 20 frames
|
|
iRolloverReturnTimeOut = 20
|
|
SET_BIT(iBS, FAA_BS_WAITING_FOR_ROLLOVER_RETURN_VALUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Handles the player input when the accept input is pressed
|
|
PROC HANDLE_OVERLAY_ACCEPT_PRESSED()
|
|
SWITCH FIXER_APP_GET_APP_STAGE()
|
|
CASE FAA_STAGE_STRAND_CONFIRM
|
|
|
|
//Set & save the selected strand
|
|
SET_CURRENT_FIXER_STRAND(eSelectedDataLeakStrand, TRUE)
|
|
//Tell the app which strand we have selected
|
|
UPDATE_DATA_LEAK_SCREEN_WITH_STRAND(eSelectedDataLeakStrand)
|
|
//Lock the other options
|
|
UPDATE_DATA_LEAK_STRAND_LOCK_STATE()
|
|
//Fill out the scren with information for the first mission in the strand
|
|
UPDATE_DATA_LEAK_TAB_DATA(eSelectedDataLeakStrand, 0)
|
|
//Enable the tab buttons
|
|
SET_MISSION_SCREEN_TABS_ENABLED(TRUE)
|
|
//Enable the start button for mission selection
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", TRUE)
|
|
//Move the cursor
|
|
MOVE_CURSOR_TO_BUTTON(BUTTON_DATA_LEAK_ACCEPT)
|
|
|
|
IF HAS_PLAYER_COMPLETED_FIXER_STORY_AS_LEADER(PLAYER_ID())
|
|
AND NOT GET_FIXER_MATCH_HISTORY_PLAYSTATS_HAVE_BEEN_GENERATED()
|
|
SET_BIT(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__GENERATE_PLAYSTATS)
|
|
PRINTLN("<APP_FIXER_HQ>[FIXER_TELEM] ciFIXER_FLOW_BITSET2__GENERATE_PLAYSTATS set.")
|
|
ENDIF
|
|
|
|
HIDE_OVERLAY()
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Handles selection of a mission from the currently selected data leak
|
|
PROC HANDLE_DATA_LEAK_BUTTON_SELECTION(FAA_BUTTON_INDEXES eButtonPressed)
|
|
|
|
FIXER_STRANDS eStrand = FIXER_APP_GET_DATA_LEAK_FROM_BUTTON(eButtonPressed)
|
|
FIXER_STORY_MISSIONS eFinalStrandMission = FIXER_APP_GET_FINAL_MISSION_ID_FOR_DATA_LEAK_STRAND(eStrand)
|
|
|
|
UPDATE_CURRENTLY_DISPLAYED_STRAND(eStrand)
|
|
|
|
IF GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = eStrand
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(eFinalStrandMission)
|
|
//Update script leak cache
|
|
SET_SELECTED_DATA_LEAK_STRAND(eStrand)
|
|
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(eFinalStrandMission)
|
|
//If we have already done the final mission in this strand then enable all tabs for selection as an overview
|
|
//Update scaleform with leak info
|
|
UPDATE_DATA_LEAK_SCREEN_WITH_STRAND(eStrand)
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FIX_APP_MIS_COM", FALSE)
|
|
SET_MISSION_SCREEN_TABS_ENABLED(TRUE)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
ELSE
|
|
//We are on this strand so highlight the active mission
|
|
INT iActiveMission = GET_NEXT_MISISON_IN_STRAND(eStrand)
|
|
|
|
IF iActiveMission = -1
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ELSE
|
|
UPDATE_DATA_LEAK_TAB_DATA(eStrand, iActiveMission)
|
|
SET_SELECTED_DATA_LEAK_STRAND_MISSION(iActiveMission)
|
|
SET_DISPLAYING_LEAK_OVERVIEW(FALSE)
|
|
MOVE_CURSOR_TO_MISSION_TAB(iActiveMission)
|
|
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", TRUE)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELIF GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_NONE
|
|
//Show select strand confirm
|
|
STRING sOverlayTitle = GET_STRAND_SELECTION_PROMPT_TITLE(eStrand)
|
|
STRING sOverlayMessage = GET_STRAND_SELECTION_PROMPT_MESSAGE(eStrand)
|
|
|
|
SHOW_OVERLAY(sOverlayTitle,sOverlayMessage, "WHOUSE_CONF", "WHOUSE_CANC", FALSE, TRUE, FAA_STAGE_STRAND_CONFIRM)
|
|
|
|
MOVE_CURSOR_TO_BUTTON(BUTTON_OVERLAY_ACCEPT)
|
|
SET_SELECTED_DATA_LEAK_STRAND(eStrand)
|
|
ELSE
|
|
//This strand is currently unavailable while another strand is active
|
|
PRINT_HELP("FXR_VIP_STRAND2")
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Handles selection of one of the data leak options
|
|
/// Sets up the movie to display the appropriate information
|
|
/// Sets up script to launch a mission from this leak
|
|
PROC HANDLE_DATA_LEAK_MISSION_BUTTON_SELECTION(FAA_BUTTON_INDEXES eButtonPressed)
|
|
INT iMissionID = 0
|
|
|
|
IF eButtonPressed = BUTTON_DATA_LEAK_TAB_2
|
|
iMissionID = 1
|
|
ELIF eButtonPressed = BUTTON_DATA_LEAK_TAB_3
|
|
iMissionID = 2
|
|
ENDIF
|
|
|
|
SET_DISPLAYING_LEAK_OVERVIEW(FALSE)
|
|
|
|
UPDATE_DATA_LEAK_TAB_DATA(eSelectedDataLeakStrand, iMissionID)
|
|
SET_SELECTED_DATA_LEAK_STRAND_MISSION(iMissionID)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
|
|
IF IS_STRAND_INVESTIGATION_MISSION_COMPLETE(eSelectedDataLeakStrand, iMissionID)
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FIX_APP_MIS_COM", FALSE)
|
|
ELSE
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", TRUE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Handles selection of a security contract
|
|
/// Asks the movie to display the appropriate contract
|
|
/// Sets the script up for launching this mission
|
|
PROC HANDLE_SECURITY_CONTRACT_BUTTON_SELECTION(FAA_BUTTON_INDEXES eButtonPressed)
|
|
|
|
INT iContractID = 0
|
|
|
|
IF eButtonPressed = BUTTON_SECURITY_CONTRACT_2
|
|
iContractID = 1
|
|
ELIF eButtonPressed = BUTTON_SECURITY_CONTRACT_3
|
|
iContractID = 2
|
|
ENDIF
|
|
|
|
SET_SELECTED_SECUITY_CONTRACT(eButtonPressed)
|
|
SCALEFORM_SELECT_SECURITY_CONTRACT(iContractID)
|
|
UPDATE_SECURITY_CONTRACTS_SELECTION_SCREEN_STATS(TRUE, iContractID)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_BUTTON_INPUT_ALLOWED_DURING_DIALOGUE(FAA_BUTTON_INDEXES eButtonPressed)
|
|
|
|
SWITCH eButtonPressed
|
|
CASE BUTTON_SECURITY_CONTRACT_1
|
|
CASE BUTTON_SECURITY_CONTRACT_2
|
|
CASE BUTTON_SECURITY_CONTRACT_3
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC CHECK_BUTTON_PRESS()
|
|
MAINTAIN_CHECKS_FOR_CURRENT_SELECTION_ID()
|
|
MAINTAIN_CHECKS_FOR_CURRENT_ROLLOVER_ID()
|
|
|
|
//Check if we clicked a button
|
|
IF IS_BIT_SET(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
IF IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentSelectionReturnIndex)
|
|
FAA_BUTTON_INDEXES eButtonPressed = INT_TO_ENUM(FAA_BUTTON_INDEXES, GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentSelectionReturnIndex))
|
|
|
|
IF NOT IS_SCREEN_FADED_IN()
|
|
PRINTLN("<APP_FIXER_HQ> CHECK_BUTTON_PRESS button press returned a value but the screen is not faded in")
|
|
CLEAR_BIT(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
EXIT
|
|
ELIF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
AND NOT IS_BUTTON_INPUT_ALLOWED_DURING_DIALOGUE(eButtonPressed)
|
|
PRINTLN("<APP_FIXER_HQ> CHECK_BUTTON_PRESS button press returned = ", DEBUG_GET_BUTTON_NAME(eButtonPressed), " ID: ", eButtonPressed, " ignore input for dialogue.")
|
|
|
|
//Do not allow input while we are running the tutorial
|
|
IF FIXER_APP_IS_DIALOGUE_PLAYING(F_APP_D_INTRO)
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_PRINTED_INTRO_PLEASE_WAIT)
|
|
//Please wait until dialogue is complete
|
|
PRINT_HELP("FIX_HQ_APP_WAIT")
|
|
SET_BIT(iBS, FAA_BS_PRINTED_INTRO_PLEASE_WAIT)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
CLEAR_BIT(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
EXIT
|
|
ELSE
|
|
PRINTLN("<APP_FIXER_HQ> CHECK_BUTTON_PRESS button press returned = ", DEBUG_GET_BUTTON_NAME(eButtonPressed), " ID: ", eButtonPressed)
|
|
ENDIF
|
|
|
|
SWITCH eButtonPressed
|
|
CASE BUTTON_OVERLAY_ACCEPT
|
|
HANDLE_OVERLAY_ACCEPT_PRESSED()
|
|
BREAK
|
|
CASE BUTTON_OVERLAY_CANCEL
|
|
HIDE_OVERLAY()
|
|
BREAK
|
|
CASE BUTTON_LOGIN
|
|
SHOW_HOME_SCREEN()
|
|
SET_BIT(GlobalplayerBD[NATIVE_TO_INT(PLAYER_ID())].SimpleInteriorBD.iBSTwo, BS_SIMPLE_INTERIOR_GLOBAL_BS_SIX_FIXER_HQ_COMPUTER_IN_USE)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
BREAK
|
|
|
|
//Setup
|
|
CASE BUTTON_DATA_RECOVERY
|
|
//Do nothing for now
|
|
BREAK
|
|
CASE BUTTON_DATA_RECOVERY_START
|
|
PRINTLN("<APP_FIXER_HQ> HANDLE_OVERLAY_ACCEPT_PRESSED - Launching setup mission")
|
|
SET_BIT(iBS, FAA_BS_FADE_TO_EXIT)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_LAUNCH_MISSION)
|
|
BREAK
|
|
|
|
//Security contracts
|
|
CASE BUTTON_HOME_SECURITY_CONTRACT
|
|
CASE BUTTON_VIP_PAGE_SEC_CONTRACT
|
|
CASE BUTTON_DREC_PAGE_SEC_CONTRACT
|
|
SHOW_SECURITY_CONTRACTS_SELECTION_SCREEN()
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
SCALEFORM_SELECT_SECURITY_CONTRACT(0)
|
|
UPDATE_SECURITY_CONTRACTS_SELECTION_SCREEN_STATS(TRUE, 0)
|
|
BREAK
|
|
CASE BUTTON_SECURITY_CONTRACT_ACCEPT
|
|
//Start the mission
|
|
FIXER_LAUNCH_SECURITY_CONTRACT(iSelectedSecurityContract)
|
|
BREAK
|
|
CASE BUTTON_SECURITY_CONTRACT_1
|
|
CASE BUTTON_SECURITY_CONTRACT_2
|
|
CASE BUTTON_SECURITY_CONTRACT_3
|
|
HANDLE_SECURITY_CONTRACT_BUTTON_SELECTION(eButtonPressed)
|
|
BREAK
|
|
|
|
//VIP
|
|
CASE BUTTON_HOME_VIP_CONTRACT
|
|
CASE BUTTON_SECURITY_PAGE_VIP_CONTRACT
|
|
IF HAS_LOCAL_PLAYER_UNLOCKED_FIXER_STORY()
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION()
|
|
AND HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_POST_SETUP_CUTSCENE()
|
|
AND NOT IS_FIXER_STORY_ON_COOLDOWN(TRUE)
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_SETUP_MISSION()
|
|
|
|
//Offer up the setup mission
|
|
SHOW_DATA_RECOVERY_SCREEN()
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
|
|
ELIF NOT HAS_PLAYER_STARTED_FIXER_STORY_INVESTIGATIONS(PLAYER_ID())
|
|
AND NOT IS_BIT_SET(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__INVESTIGATIONS_CALL_DONE)
|
|
|
|
//Wait for the flow call following setup first
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
|
|
ELSE
|
|
SHOW_DATA_LEAK_SCREEN()
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_SELECT)
|
|
ENDIF
|
|
ELSE
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_NAV_BLOCKED)
|
|
ENDIF
|
|
BREAK
|
|
|
|
//Data leaks
|
|
CASE BUTTON_DATA_LEAK_1
|
|
CASE BUTTON_DATA_LEAK_2
|
|
CASE BUTTON_DATA_LEAK_3
|
|
HANDLE_DATA_LEAK_BUTTON_SELECTION(eButtonPressed)
|
|
BREAK
|
|
|
|
//Data leak missions
|
|
CASE BUTTON_DATA_LEAK_TAB_1
|
|
CASE BUTTON_DATA_LEAK_TAB_2
|
|
CASE BUTTON_DATA_LEAK_TAB_3
|
|
HANDLE_DATA_LEAK_MISSION_BUTTON_SELECTION(eButtonPressed)
|
|
BREAK
|
|
|
|
//Mission start button - Data leak page
|
|
CASE BUTTON_DATA_LEAK_ACCEPT
|
|
IF IS_BIT_SET(iBS, FAA_BS_INTRO_MISSION_LAUNCH_PREPARED)
|
|
IF NOT LAUNCH_FIXER_STORY_NSTANCED_MISSION(FSM_INTRO)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_ERROR)
|
|
ENDIF
|
|
ELIF IS_BIT_SET(iBS, FAA_BS_SETUP_MISSION_LAUNCH_PREPARED)
|
|
PRINTLN("<APP_FIXER_HQ> CHECK_BUTTON_PRESS - BUTTON_DATA_LEAK_ACCEPT - Launching setup mission")
|
|
SET_BIT(iBS, FAA_BS_FADE_TO_EXIT)
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_LAUNCH_MISSION)
|
|
ELSE
|
|
FIXER_CHECK_AND_LAUNCH_SELECTED_DATA_LEAK(eSelectedDataLeakStrand, iSelectedDataLeakInStrand)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE BUTTON_INTRO_MISSION
|
|
CASE BUTTON_SETUP_MISSION
|
|
MOVE_CURSOR_TO_BUTTON(BUTTON_DATA_LEAK_ACCEPT)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
CLEAR_BIT(iBS, FAA_BS_WAITING_FOR_BUTTON_RETURN_VALUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Handles selection of a mission from the currently selected data leak
|
|
PROC HANDLE_DATA_LEAK_BUTTON_ROLLOVER(FAA_BUTTON_INDEXES eButtonHighlighted)
|
|
|
|
FIXER_STRANDS eStrand = FIXER_APP_GET_DATA_LEAK_FROM_BUTTON(eButtonHighlighted)
|
|
FIXER_STORY_MISSIONS eFinalStrandMission = FIXER_APP_GET_FINAL_MISSION_ID_FOR_DATA_LEAK_STRAND(eStrand)
|
|
|
|
IF eCurrentlyDisplayedStrand = eStrand
|
|
AND IS_BIT_SET(iBS, FAA_BS_DISPLAYING_LEAK_OVERVIEW)
|
|
EXIT
|
|
ELSE
|
|
UPDATE_CURRENTLY_DISPLAYED_STRAND(eStrand)
|
|
ENDIF
|
|
|
|
SET_DISPLAYING_LEAK_OVERVIEW(TRUE)
|
|
|
|
//Update script leak cache
|
|
IF g_bUpdateLeakStrandOnRollover
|
|
SET_SELECTED_DATA_LEAK_STRAND(eStrand)
|
|
ENDIF
|
|
|
|
IF GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(FALSE) = eStrand
|
|
OR HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(eFinalStrandMission)
|
|
|
|
//Update scaleform with leak info
|
|
UPDATE_DATA_LEAK_SCREEN_WITH_STRAND(eStrand)
|
|
SET_MISSION_SCREEN_TABS_ENABLED(TRUE)
|
|
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(eFinalStrandMission)
|
|
//If we have already doen the final mission in this strand then enable all tabs for selection as an overview
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FIX_APP_MIS_COM", FALSE)
|
|
SET_MISSION_SCREEN_TABS_ENABLED(TRUE)
|
|
UPDATE_DATA_LEAK_TAB_DATA(eStrand, 2, 2)
|
|
ELSE
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", FALSE)
|
|
UPDATE_DATA_LEAK_TAB_DATA(eStrand, 2, 0)
|
|
ENDIF
|
|
ELSE
|
|
SETUP_DEFAULT_MISSION_TAB_DATA()
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", FALSE)
|
|
SET_MISSION_SCREEN_TABS_ENABLED(FALSE)
|
|
UPDATE_DATA_LEAK_TAB_DATA(eStrand, 2, 0)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_ROLLOVER_FUNCTIONALITY()
|
|
IF IS_BIT_SET(iBS, FAA_BS_WAITING_FOR_ROLLOVER_RETURN_VALUE)
|
|
IF IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(currentRollOverReturnIndex)
|
|
FAA_BUTTON_INDEXES eButtonHighlighted = INT_TO_ENUM(FAA_BUTTON_INDEXES, GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(currentRollOverReturnIndex))
|
|
|
|
IF eButtonHighlighted != eButtonLastHighlighted
|
|
PRINTLN("<APP_FIXER_HQ> MAINTAIN_ROLLOVER_FUNCTIONALITY - New highlighted button: ", DEBUG_GET_BUTTON_NAME(eButtonHighlighted), " ID: ", eButtonHighlighted)
|
|
|
|
IF NOT FIXER_APP_IS_OVERLAY_OPEN()
|
|
SWITCH eButtonHighlighted
|
|
CASE BUTTON_INTRO_MISSION
|
|
CASE BUTTON_SETUP_MISSION
|
|
SET_DISPLAYING_LEAK_OVERVIEW(FALSE)
|
|
UPDATE_REPLAY_MISSION_TAB_DATA(eButtonHighlighted)
|
|
UPDATE_MISSION_SCREEN_START_BUTTON("FAPP_ACCEPT", TRUE)
|
|
BREAK
|
|
CASE BUTTON_DATA_LEAK_1
|
|
CASE BUTTON_DATA_LEAK_2
|
|
CASE BUTTON_DATA_LEAK_3
|
|
HANDLE_DATA_LEAK_BUTTON_ROLLOVER(eButtonHighlighted)
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
PRINTLN("<APP_FIXER_HQ> MAINTAIN_ROLLOVER_FUNCTIONALITY - Ignore rollover return value - FIXER_APP_IS_OVERLAY_OPEN")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
eButtonLastHighlighted = eButtonHighlighted
|
|
iRolloverReturnTimeOut = 0
|
|
CLEAR_BIT(iBS, FAA_BS_WAITING_FOR_ROLLOVER_RETURN_VALUE)
|
|
ELSE
|
|
//Have a timeout because there are instances where we can get stuck with this command and IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY
|
|
//will no longer return true because it has thrown out currentRollOverReturnIndex
|
|
//Found when using the debug pause
|
|
iRolloverReturnTimeOut --
|
|
|
|
IF iRolloverReturnTimeOut = 0
|
|
PRINTLN("MAINTAIN_ROLLOVER_FUNCTIONALITY - waiting for return value timed out. Clear")
|
|
CLEAR_BIT(iBS, FAA_BS_WAITING_FOR_ROLLOVER_RETURN_VALUE)
|
|
ELSE
|
|
PRINTLN("MAINTAIN_ROLLOVER_FUNCTIONALITY - waiting for return value")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC APP_CONTROL_DISABLE()
|
|
SET_CLEAR_ON_CALL_HUD_THIS_FRAME()
|
|
|
|
IF (NOT IS_SYSTEM_UI_BEING_DISPLAYED())
|
|
AND (NOT IS_PAUSE_MENU_ACTIVE())
|
|
DISABLE_ALL_CONTROL_ACTIONS(PLAYER_CONTROL)
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC HIDE_CASH_HUD_IN_APP()
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_MP_CASH)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH_CHANGE)
|
|
ENDPROC
|
|
|
|
PROC RENDER_FIXER_APP()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_1)
|
|
bRender = !bRender
|
|
PRINTLN("<APP_FIXER_HQ> bRender toggled to ", bRender)
|
|
ENDIF
|
|
|
|
IF !bRender
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
HIDE_HUD_AND_RADAR_THIS_FRAME()
|
|
HIDE_SCRIPTED_HUD_COMPONENT_THIS_FRAME(HUD_MP_RANK_BAR)
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH(0.0)
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(0.0)
|
|
APP_CONTROL_DISABLE()
|
|
HIDE_CASH_HUD_IN_APP()
|
|
|
|
THEFEED_HIDE_THIS_FRAME()
|
|
|
|
SET_INPUT_EXCLUSIVE_AND_ENABLED(FRONTEND_CONTROL,INPUT_FRONTEND_PAUSE)
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
|
|
DRAW_RECT_FROM_CORNER(0.0, 0.0, 1.0, 1.0, 0, 0, 0, 255)
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov,255,255,255,255)
|
|
|
|
REPLAY_PREVENT_RECORDING_AND_UI_THIS_FRAME()
|
|
|
|
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
|
|
DISABLE_ALL_MP_HUD_THIS_FRAME()
|
|
ENDPROC
|
|
|
|
PROC SEND_ALL_DATA_TO_SCALEFORM()
|
|
SHOW_LOGIN_SCREEN()
|
|
ENDPROC
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
/// Dialogue tutorial
|
|
|
|
FUNC BOOL FIXER_APP_TUT_IS_ROOT_FOR_FRANKLIN(INT iTutorialID)
|
|
SWITCH iTutorialID
|
|
CASE F_APP_D_INTRO //Intro - Home - Franklin
|
|
CASE F_APP_D_SEC_CON //Intro - Security Contracts - Franklin
|
|
CASE F_APP_D_SEC_CON2 //Intro - Security Contracts pt2 - Franklin
|
|
CASE F_APP_D_SEC_CON3 //Intro - Security Contracts pt3 - Franklin
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL FIXER_APP_TUT_IS_ROOT_FOR_FRANKLIN_AND_IMANI(INT iTutorialID)
|
|
SWITCH iTutorialID
|
|
CASE F_APP_D_PARTY_P_M2 //VIP - Party promoter mission 2 intro - Imani & Franklin
|
|
CASE F_APP_D_BILL_G_M2 //VIP - Billionaire games mission 2 intro - Imani & Franklin
|
|
RETURN TRUE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC STRING FIXER_APP_TUT_GET_ROOT_LABEL(INT iTutorialID)
|
|
SWITCH iTutorialID
|
|
CASE F_APP_D_INTRO RETURN "FXFR_FOC_1" BREAK //Intro - Home - Franklin
|
|
CASE F_APP_D_SEC_CON RETURN "FXFR_FOC_2" BREAK //Intro - Security Contracts - Franklin
|
|
CASE F_APP_D_SEC_CON2 RETURN "FXFR_FOC_3" BREAK //Intro - Security Contracts pt2 - Franklin
|
|
CASE F_APP_D_SEC_CON3 RETURN "FXFR_FOC_4" BREAK //Intro - Security Contracts pt3 - Franklin
|
|
|
|
CASE F_APP_D_SETUP RETURN "FXIM_FL_1" BREAK //Home - Setup description - Imani
|
|
CASE F_APP_D_SETUP_2 RETURN "FXIM_FL_2" BREAK //Home - Setup description part 2 - Imani
|
|
CASE F_APP_D_SELECT_LEAK RETURN "FXIM_FL_4" BREAK //VIP - Select leak intro - Imani
|
|
CASE F_APP_D_PARTY_P_INT RETURN "FXIM_FL_5" BREAK //VIP - Party promoter strand intro - Imani
|
|
CASE F_APP_D_BILL_G_INT RETURN "FXIM_FL_6" BREAK //VIP - Billionaire games strand intro - Imani
|
|
CASE F_APP_D_HOOD_P_INT RETURN "FXIM_FL_7" BREAK //VIP - Hood pass strand intro - Imani
|
|
CASE F_APP_D_PARTY_P_M2 RETURN "FXIM_FL_8" BREAK //VIP - Party promoter mission 2 intro - Imani & Franklin
|
|
CASE F_APP_D_PARTY_P_F RETURN "FXIM_FL_9" BREAK //VIP - Party promoter finale intro - Imani
|
|
CASE F_APP_D_HOOD_P_M2 RETURN "FXIM_FL_10" BREAK //VIP - Hood pass mission 2 intro - Imani
|
|
CASE F_APP_D_HOOD_P_F RETURN "FXIM_FL_11" BREAK //VIP - Hood pass finale intro - Imani
|
|
CASE F_APP_D_BILL_G_M2 RETURN "FXIM_FL_12" BREAK //VIP - Billionaire games mission 2 intro - Imani & Franklin
|
|
CASE F_APP_D_BILL_G_F RETURN "FXIM_FL_13" BREAK //VIP - Billionaire games finale intro - Imani
|
|
ENDSWITCH
|
|
|
|
CASSERTLN(DEBUG_INTERNET, "FIXER_APP_TUT_GET_ROOT_LABEL: Invalid tutorial ID: ", iTutorialID)
|
|
RETURN "FXFR_FOC_1"
|
|
ENDFUNC
|
|
|
|
PROC SET_ACTIVE_APP_DIALOGUE()
|
|
iDialoguePlayingID = iDialogueRequestID
|
|
iDialogueRequestID = -1
|
|
SHOW_SPEAKER_ICON(TRUE)
|
|
ENDPROC
|
|
|
|
PROC FIXER_APP_START_TUTORIAL_DIALOGUE(INT iTutorialID)
|
|
|
|
structPedsForConversation sDialogue
|
|
|
|
IF FIXER_APP_TUT_IS_ROOT_FOR_FRANKLIN_AND_IMANI(iTutorialID)
|
|
ADD_PED_FOR_DIALOGUE(sDialogue, 2, NULL, "FIX_IMANI")
|
|
ADD_PED_FOR_DIALOGUE(sDialogue, 3, NULL, "FIX_FRANKLIN")
|
|
|
|
IF CREATE_CONVERSATION(sDialogue, "FXIMAUD", FIXER_APP_TUT_GET_ROOT_LABEL(iTutorialID), CONV_PRIORITY_HIGH)
|
|
CPRINTLN(DEBUG_INTERNET, "<APP_FIXER_HQ> Created Franklin & Imani tutorial converstion: ", iTutorialID, " Root: ", FIXER_APP_TUT_GET_ROOT_LABEL(iTutorialID))
|
|
SET_ACTIVE_APP_DIALOGUE()
|
|
ENDIF
|
|
|
|
ELIF FIXER_APP_TUT_IS_ROOT_FOR_FRANKLIN(iTutorialID)
|
|
ADD_PED_FOR_DIALOGUE(sDialogue, 2, NULL, "FIX_FRANKLIN")
|
|
|
|
IF CREATE_CONVERSATION(sDialogue, "FXFRAUD", FIXER_APP_TUT_GET_ROOT_LABEL(iTutorialID), CONV_PRIORITY_HIGH)
|
|
CPRINTLN(DEBUG_INTERNET, "<APP_FIXER_HQ> Created Franklin tutorial converstion: ", iTutorialID, " Root: ", FIXER_APP_TUT_GET_ROOT_LABEL(iTutorialID))
|
|
SET_ACTIVE_APP_DIALOGUE()
|
|
ENDIF
|
|
ELSE
|
|
ADD_PED_FOR_DIALOGUE(sDialogue, 2, NULL, "FIX_IMANI")
|
|
|
|
IF CREATE_CONVERSATION(sDialogue, "FXIMAUD", FIXER_APP_TUT_GET_ROOT_LABEL(iTutorialID), CONV_PRIORITY_HIGH)
|
|
CPRINTLN(DEBUG_INTERNET, "<APP_FIXER_HQ> Created Imani tutorial converstion: ", iTutorialID, " Root: ", FIXER_APP_TUT_GET_ROOT_LABEL(iTutorialID))
|
|
SET_ACTIVE_APP_DIALOGUE()
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC FIXER_APP_RUN_TUTORIAL_DIALOGUE()
|
|
//Start the dialogue
|
|
IF iDialogueRequestID != -1
|
|
FIXER_APP_START_TUTORIAL_DIALOGUE(iDialogueRequestID)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_SECURITY_CONTRACT_COOLDOWN_EXPIRATION()
|
|
IF IS_BIT_SET(iBS, FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD)
|
|
IF NOT ARE_FIXER_SECURITY_CONTRACTS_ON_COOLDOWN()
|
|
PRINTLN("<APP_FIXER_HQ> MAINTAIN_SECURITY_CONTRACT_COOLDOWN_EXPIRATION - timer expired - Clear FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD")
|
|
CLEAR_BIT(iBS, FAA_BS_OPENED_SEC_CONTRACT_PAGE_W_ACTIVE_CD)
|
|
|
|
IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("FXR_NX_SEC_WAIT")
|
|
CLEAR_HELP()
|
|
ENDIF
|
|
|
|
IF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_SECURITY_CONTRACT_SELECTION
|
|
SETUP_START_MISSION_BUTTON_SECURITY_CONTRACTS(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC FIXER_APP_RUN_HELP_TUTORIAL()
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_CURRENTLY_PLAYING_TUTORIAL)
|
|
AND NOT IS_STRING_NULL_OR_EMPTY(sTutTextAfterDialogue)
|
|
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
PRINT_HELP(sTutTextAfterDialogue)
|
|
sTutTextAfterDialogue = ""
|
|
ENDIF
|
|
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_PRINTED_DL_PLEASE_WAIT)
|
|
AND IS_FIXER_MISSION_LAUNCH_DISABLED()
|
|
IF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
SWITCH g_eFixerDisableMissionLaunchReason
|
|
CASE FMLDR_PP2_UNLOCKED_CALL
|
|
CASE FMLDR_PPF_UNLOCKED_CALL
|
|
CASE FMLDR_BG2_UNLOCKED_CALL
|
|
CASE FMLDR_BGF_UNLOCKED_CALL
|
|
CASE FMLDR_HP2_UNLOCKED_CALL
|
|
CASE FMLDR_HPF_UNLOCKED_CALL
|
|
PRINT_HELP("FXR_NX_MIS_WAIT")
|
|
SET_BIT(iBS, FAA_BS_PRINTED_DL_PLEASE_WAIT)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_PRINTED_CONTINUE_STORY_HELP)
|
|
|
|
IF NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION)
|
|
OR NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION)
|
|
OR NOT HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_MISSION)
|
|
OR IS_FIXER_STORY_ON_COOLDOWN(TRUE)
|
|
SET_BIT(iBS, FAA_BS_PRINTED_CONTINUE_STORY_HELP)
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
|
|
IF HAS_PLAYER_COMPLETED_FIXER_STORY_AS_LEADER(PLAYER_ID())
|
|
//We have finished the story.
|
|
IF NOT HAS_PLAYER_COMPLETED_FIXER_STRAND(PLAYER_ID(), FS_FIRE_IN_THE_BOOTH)
|
|
PRINT_HELP("FXRAP_FIN_WAIT3")
|
|
ELIF NOT HAS_PLAYER_COMPLETED_FIXER_STRAND(PLAYER_ID(), FS_FINALE)
|
|
PRINT_HELP("FXRAP_FIN_WAIT5")
|
|
ENDIF
|
|
|
|
SET_BIT(iBS, FAA_BS_PRINTED_CONTINUE_STORY_HELP)
|
|
ELSE
|
|
//We have finished the three data leaks. Show appropriate help
|
|
IF NOT HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_POST_DATALEAK_CUTSCENE()
|
|
PRINT_HELP("FXR_AP_FIN_WAIT")
|
|
ELIF NOT HAS_PLAYER_COMPLETED_FIXER_STRAND(PLAYER_ID(), FS_FIRE_IN_THE_BOOTH)
|
|
IF IS_BIT_SET(g_sFixerFlow.Bitset, ciFIXER_FLOW_BITSET__FIRE_IN_BOOTH_READY_CALL_DONE)
|
|
PRINT_HELP("FXRAP_FIN_WAIT3")
|
|
ELSE
|
|
PRINT_HELP("FXRAP_FIN_WAIT2")
|
|
ENDIF
|
|
ELIF NOT HAS_PLAYER_COMPLETED_FIXER_STRAND(PLAYER_ID(), FS_FINALE)
|
|
IF IS_BIT_SET(g_sFixerFlow.Bitset, ciFIXER_FLOW_BITSET__FINALE_READY_CALL_DONE)
|
|
PRINT_HELP("FXRAP_FIN_WAIT5")
|
|
ELSE
|
|
PRINT_HELP("FXRAP_FIN_WAIT4")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
SET_BIT(iBS, FAA_BS_PRINTED_CONTINUE_STORY_HELP)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_HELP_TO_DISPLAY_AFTER_DIALOGUE(STRING sHelp)
|
|
sTutTextAfterDialogue = sHelp
|
|
PRINTLN(DEBUG_INTERNET, "<APP_FIXER_HQ> SET_HELP_TO_DISPLAY_AFTER_DIALOGUE - Text label: ", sTutTextAfterDialogue)
|
|
ENDPROC
|
|
|
|
FUNC BOOL HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
|
IF GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_0)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_1)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_2)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_SETUP)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_STRAND)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY_2)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY_F)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL_2)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL_F)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD_2)
|
|
AND GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD_F)
|
|
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_BS_IMANI_D_APP_SETUP_2)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC FIXER_APP_SELECT_DIALOGUE_TUTORIAL()
|
|
|
|
BOOL bStartNewDialogue
|
|
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_CURRENTLY_PLAYING_TUTORIAL)
|
|
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
IF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_HOME
|
|
AND NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_0)
|
|
//Main intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 28500
|
|
iDialogueRequestID = F_APP_D_INTRO
|
|
|
|
SET_HELP_TO_DISPLAY_AFTER_DIALOGUE("FIX_VIP_TUT1")
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_0, TRUE)
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_SECURITY_CONTRACT_SELECTION
|
|
AND NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_1)
|
|
//Security contracts explanation
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 30000
|
|
iDialogueRequestID = F_APP_D_SEC_CON
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_1, TRUE)
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_SECURITY_CONTRACT_SELECTION
|
|
AND NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_2)
|
|
//Security contracts explanation part 2
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 18500
|
|
iDialogueRequestID = F_APP_D_SEC_CON2
|
|
|
|
IF g_sMPTunables.bFIXER_ENABLE_SF_BILLBOARDS
|
|
SET_BIT(iBS, FAA_BS_TRIGGER_BONUS_BILLBOARD_DIALOGUE)
|
|
ELSE
|
|
SET_HELP_TO_DISPLAY_AFTER_DIALOGUE("FIX_VIP_TUT2")
|
|
ENDIF
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_FRANKLIN_DIALOGUE_2, TRUE)
|
|
|
|
ELIF IS_BIT_SET(iBS, FAA_BS_TRIGGER_BONUS_BILLBOARD_DIALOGUE)
|
|
//Security contracts explanation part 3
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 12000
|
|
iDialogueRequestID = F_APP_D_SEC_CON3
|
|
|
|
SET_HELP_TO_DISPLAY_AFTER_DIALOGUE("FIX_VIP_TUT2")
|
|
CLEAR_BIT(iBS, FAA_BS_TRIGGER_BONUS_BILLBOARD_DIALOGUE)
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_HOME
|
|
AND HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_POST_SETUP_CUTSCENE()
|
|
AND NOT (GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_SETUP)
|
|
AND GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_BS_IMANI_D_APP_SETUP_2))
|
|
IF HAS_LOCAL_PLAYER_UNLOCKED_FIXER_STORY()
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION()
|
|
IF HAS_LOCAL_PLAYER_COMPLETED_FIXER_SETUP_MISSION()
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_SETUP, TRUE)
|
|
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_BS_IMANI_D_APP_SETUP_2, TRUE)
|
|
ELSE
|
|
IF NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_SETUP)
|
|
|
|
//Imani - Setup mision description
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 25000
|
|
iDialogueRequestID = F_APP_D_SETUP
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_SETUP, TRUE)
|
|
|
|
ELIF NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_BS_IMANI_D_APP_SETUP_2)
|
|
|
|
//Imani - Setup mision description part 2
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 11300
|
|
iDialogueRequestID = F_APP_D_SETUP_2
|
|
SET_HELP_TO_DISPLAY_AFTER_DIALOGUE("FIX_VIP_TUT3")
|
|
|
|
SET_PACKED_STAT_BOOL(PACKED_MP_BOOL_BS_IMANI_D_APP_SETUP_2, TRUE)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
AND NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_STRAND)
|
|
//Imani - Select strand first intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 17250
|
|
iDialogueRequestID = F_APP_D_SELECT_LEAK
|
|
|
|
SET_HELP_TO_DISPLAY_AFTER_DIALOGUE("FIX_VIP_TUT4")
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_STRAND, TRUE)
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
AND GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_PARTY_PROMOTER
|
|
AND NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY)
|
|
//Imani - Party promoter strand intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 11000
|
|
iDialogueRequestID = F_APP_D_PARTY_P_INT
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY, TRUE)
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
AND GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_BILLIONAIRE_GAMES
|
|
AND NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL)
|
|
// Billionaire games strand intro - Imani
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 13000
|
|
iDialogueRequestID = F_APP_D_BILL_G_INT
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL, TRUE)
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
AND GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_HOOD_PASS
|
|
AND NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD)
|
|
// Hood pass strand intro - Imani
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 11000
|
|
iDialogueRequestID = F_APP_D_HOOD_P_INT
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD, TRUE)
|
|
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
AND GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_PARTY_PROMOTER
|
|
AND eSelectedDataLeakStrand = FS_PARTY_PROMOTER
|
|
IF iSelectedDataLeakInStrand = 1
|
|
IF NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY_2)
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_1)
|
|
|
|
//Imani - Party promoter mission 2 intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 29600
|
|
iDialogueRequestID = F_APP_D_PARTY_P_M2
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY_2, TRUE)
|
|
ENDIF
|
|
ELIF iSelectedDataLeakInStrand = 2
|
|
IF NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY_F)
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_2)
|
|
|
|
//Imani - Party promoter finale intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 6000
|
|
iDialogueRequestID = F_APP_D_PARTY_P_F
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_PARTY_F, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
AND GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_HOOD_PASS
|
|
AND eSelectedDataLeakStrand = FS_HOOD_PASS
|
|
IF iSelectedDataLeakInStrand = 1
|
|
IF NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD_2)
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_1)
|
|
|
|
//Imani - Hood pass mission 2 intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 9500
|
|
iDialogueRequestID = F_APP_D_HOOD_P_M2
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD_2, TRUE)
|
|
ENDIF
|
|
ELIF iSelectedDataLeakInStrand = 2
|
|
IF NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD_F)
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_2)
|
|
|
|
//Imani - Hood Pass finale intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 7250
|
|
iDialogueRequestID = F_APP_D_HOOD_P_F
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_HOOD_F, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ELIF FIXER_APP_GET_APP_CURRENT_PAGE() = FAA_PAGE_DATA_LEAK_SELECTION
|
|
AND GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = FS_BILLIONAIRE_GAMES
|
|
AND eSelectedDataLeakStrand = FS_BILLIONAIRE_GAMES
|
|
IF iSelectedDataLeakInStrand = 1
|
|
IF NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL_2)
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_1)
|
|
|
|
//Imani - Billionaire games mission 2 intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 29000
|
|
iDialogueRequestID = F_APP_D_BILL_G_M2
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL_2, TRUE)
|
|
ENDIF
|
|
ELIF iSelectedDataLeakInStrand = 2
|
|
IF NOT GET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL_F)
|
|
AND HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_2)
|
|
|
|
//Imani - Billionaire games finale intro
|
|
bStartNewDialogue = TRUE
|
|
iTutorialHelpTime = 4250
|
|
iDialogueRequestID = F_APP_D_BILL_G_F
|
|
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_BS_IMANI_D_APP_BILL_F, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bStartNewDialogue
|
|
SET_BIT(iBS, FAA_BS_CURRENTLY_PLAYING_TUTORIAL)
|
|
PRINTLN("<APP_FIXER_HQ><APP_TUT> FIXER_APP_SELECT_DIALOGUE_TUTORIAL Running tutorial for: ", iTutorialHelpTime, " seconds. Tutorial ID: ", iDialogueRequestID)
|
|
ELIF IS_BIT_SET(iBS, FAA_BS_CURRENTLY_PLAYING_TUTORIAL)
|
|
IF NOT HAS_NET_TIMER_STARTED(stTutorialTimer)
|
|
START_NET_TIMER(stTutorialTimer)
|
|
PRINTLN("<APP_FIXER_HQ><APP_TUT> FIXER_APP_SELECT_DIALOGUE_TUTORIAL Starting timer time: ", iTutorialHelpTime, " Tutorial ID: ", iDialogueRequestID)
|
|
ELIF HAS_NET_TIMER_EXPIRED(stTutorialTimer, iTutorialHelpTime)
|
|
AND NOT IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
CLEAR_BIT(iBS, FAA_BS_CURRENTLY_PLAYING_TUTORIAL)
|
|
iDialoguePlayingID = -1
|
|
iTutorialHelpTime = 0
|
|
RESET_NET_TIMER(stTutorialTimer)
|
|
SHOW_SPEAKER_ICON(FALSE)
|
|
PRINTLN("<APP_FIXER_HQ><APP_TUT> FIXER_APP_SELECT_DIALOGUE_TUTORIAL Starting timer expired time: ", iTutorialHelpTime, " Tutorial ID: ", iDialogueRequestID)
|
|
|
|
//Once all the tutorial are complete we no longer need this function
|
|
IF HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
|
SET_BIT(iBS, FAA_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
|
SET_BIT(iBS, FAA_BS_DIALOGUE_TUTORIAL_COMPLETE_THIS_BOOT)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC FIXER_APP_SETUP_TUTORIAL_DIALOGUE()
|
|
IF HAVE_ALL_DIALOGUE_TUTORIALS_BEEN_COMPLETED()
|
|
SET_BIT(iBS, FAA_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
|
ELSE
|
|
SET_USE_DLC_DIALOGUE(TRUE)
|
|
PRINTLN("<APP_FIXER_HQ> FIXER_APP_SETUP_TUTORIAL_DIALOGUE peds added for dialogue")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PROC DEBUG_PRINT_FIXER_FLOW_STATE()
|
|
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_UNLOCKED_FIXER_STORY = ", HAS_LOCAL_PLAYER_UNLOCKED_FIXER_STORY())
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_INTRO_MISSION())
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_SETUP_MISSION = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_SETUP_MISSION())
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_PLAYER_STARTED_FIXER_STORY_INVESTIGATIONS = ", HAS_PLAYER_STARTED_FIXER_STORY_INVESTIGATIONS(PLAYER_ID()))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_POST_SETUP_CUTSCENE = ", HAS_LOCAL_PLAYER_VIEWED_FIXER_HQ_POST_SETUP_CUTSCENE())
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_PLAYER_STARTED_A_STRAND_OR_COMPLETED_FIXER_STORY = ", HAS_PLAYER_STARTED_A_STRAND_OR_COMPLETED_FIXER_STORY())
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - ciFIXER_FLOW_BITSET2__INVESTIGATIONS_CALL_DONE = ", IS_BIT_SET(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__INVESTIGATIONS_CALL_DONE))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - ciFIXER_FLOW_BITSET2__FRANKLIN_GOLF_COURSE_CALL_DONE = ", IS_BIT_SET(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__FRANKLIN_GOLF_COURSE_CALL_DONE))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - ciFIXER_FLOW_BITSET2__FRANKLIN_MEET_IMANI_CALL_DONE = ", IS_BIT_SET(g_sFixerFlow.Bitset2, ciFIXER_FLOW_BITSET2__FRANKLIN_MEET_IMANI_CALL_DONE))
|
|
|
|
PRINTLN("")
|
|
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE) = ", GET_LOCAL_PLAYER_CURRENT_FIXER_STRAND(TRUE))
|
|
IF IS_FIXER_MISSION_LAUNCH_DISABLED()
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - IS_FIXER_MISSION_LAUNCH_DISABLED() ", FIXER_MISSION_LAUNCH_DISABLE_REASON_TO_STRING(g_eFixerDisableMissionLaunchReason))
|
|
ELSE
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - IS_FIXER_MISSION_LAUNCH_DISABLED() = FALSE")
|
|
ENDIF
|
|
|
|
PRINTLN("")
|
|
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_PARTY_PROMOTER_INVESTIGATION_1 = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_1))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_PARTY_PROMOTER_INVESTIGATION_2 = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_INVESTIGATION_2))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_PARTY_PROMOTER_MISSION = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_PARTY_PROMOTER_MISSION))
|
|
|
|
PRINTLN("")
|
|
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_BILLIONAIRE_GAMES_INVESTIGATION_1 = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_1))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_BILLIONAIRE_GAMES_INVESTIGATION_2 = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_INVESTIGATION_2))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_BILLIONAIRE_GAMES_MISSION = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_BILLIONAIRE_GAMES_MISSION))
|
|
|
|
PRINTLN("")
|
|
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_HOOD_PASS_INVESTIGATION_1 = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_1))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_HOOD_PASS_INVESTIGATION_2 = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_INVESTIGATION_2))
|
|
PRINTLN("<APP_FIXER_HQ> DEBUG_PRINT_FIXER_FLOW_STATE - HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION - FSM_HOOD_PASS_MISSION = ", HAS_LOCAL_PLAYER_COMPLETED_FIXER_STORY_MISSION(FSM_HOOD_PASS_MISSION))
|
|
|
|
PRINTLN("")
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
PROC SCRIPT_INITALISE()
|
|
// pregame cleanup
|
|
RUN_CLEANUP_CHECKS()
|
|
|
|
IF HAS_FORCE_CLEANUP_OCCURRED()
|
|
OR MPGlobalsAmbience.bRunningFmIntroCut
|
|
IF MPGlobalsAmbience.bRunningFmIntroCut
|
|
PRINTLN("<APP_FIXER_HQ> bRunningFmIntroCut is true so cleaning up!")
|
|
ENDIF
|
|
|
|
PRINTLN("<APP_FIXER_HQ> DEFAULT CLEANUP")
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
mov = REQUEST_SCALEFORM_MOVIE("FIXER_APP")
|
|
|
|
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(mov))
|
|
HIDE_CASH_HUD_IN_APP()
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
|
|
DISABLE_CELLPHONE(TRUE)
|
|
HIDE_CASH_HUD_IN_APP()
|
|
|
|
Pause_Objective_Text()
|
|
THEFEED_PAUSE()
|
|
|
|
//Grab the current property
|
|
eThisFixerHQ = eThisFixerHQ // Fixing release compiler error
|
|
eThisFixerHQ = GET_FIXER_HQ_ID_FROM_SIMPLE_INTERIOR_ID(GET_SIMPLE_INTERIOR_PLAYER_IS_IN(PLAYER_ID()))
|
|
|
|
SEND_ALL_DATA_TO_SCALEFORM()
|
|
FIXER_APP_PLAY_INPUT_SOUND(FAA_IS_BOOT)
|
|
FIXER_APP_SETUP_TUTORIAL_DIALOGUE()
|
|
|
|
IF IS_PC_VERSION()
|
|
SET_MULTIHEAD_SAFE(TRUE, TRUE, TRUE, TRUE)
|
|
ENDIF
|
|
|
|
IF NOT IS_AUDIO_SCENE_ACTIVE("DLC_Fixer_Office_Room_Use_PC_Scene")
|
|
START_AUDIO_SCENE("DLC_Fixer_Office_Room_Use_PC_Scene")
|
|
ENDIF
|
|
|
|
g_bFHQAppOpen = TRUE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
DEBUG_PRINT_FIXER_FLOW_STATE()
|
|
#ENDIF
|
|
|
|
#IF FEATURE_GEN9_EXCLUSIVE
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_DARKNETACCESSED, TRUE)
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PROC CREATE_WIDGETS()
|
|
START_WIDGET_GROUP("appFixerSecurity")
|
|
ADD_BIT_FIELD_WIDGET("iBS", iBS)
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|
|
//***********SCRIPT***********
|
|
SCRIPT
|
|
PRINTLN("<APP_FIXER_HQ> started \"", GET_THIS_SCRIPT_NAME(), "\"")
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(GET_HASH_KEY("appFixerSecurity")) > 1
|
|
PRINTLN("<APP_FIXER_HQ> Fixer HQ app script already running! cleaning up.")
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
|
|
SCRIPT_INITALISE()
|
|
PRINTLN("<APP_FIXER_HQ> Initalisation complete. Fixer HQ = ", eThisFixerHQ)
|
|
WAIT(0)
|
|
CLEAR_HELP()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CREATE_WIDGETS()
|
|
#ENDIF
|
|
|
|
/// main update loop
|
|
WHILE g_bFHQAppOpen
|
|
|
|
RUN_CLEANUP_CHECKS()
|
|
|
|
RENDER_FIXER_APP()
|
|
PASS_INPUTS_TO_SCALEFORM()
|
|
FIXER_APP_RUN_HELP_TUTORIAL()
|
|
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_DIALOGUE_TUTORIAL_COMPLETE)
|
|
FIXER_APP_SELECT_DIALOGUE_TUTORIAL()
|
|
FIXER_APP_RUN_TUTORIAL_DIALOGUE()
|
|
ENDIF
|
|
|
|
IF NOT IS_BIT_SET(iBS, FAA_BS_FADE_TO_EXIT)
|
|
CHECK_BUTTON_PRESS()
|
|
MAINTAIN_ROLLOVER_FUNCTIONALITY()
|
|
MAINTAIN_SECURITY_CONTRACT_COOLDOWN_EXPIRATION()
|
|
ELIF IS_BIT_SET(iBS, FAA_BS_FADE_TO_EXIT)
|
|
IF IS_SCREEN_FADED_OUT()
|
|
FIXER_LAUNCH_VIP_SETUP_MISSION()
|
|
ELIF NOT IS_SCREEN_FADING_OUT()
|
|
DO_SCREEN_FADE_OUT(500)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
// Script should never reach here. Always terminate with cleanup function.
|
|
CASSERTLN(DEBUG_INTERNET, "<APP_FIXER_HQ> \"", GET_THIS_SCRIPT_NAME(), "\" should never reach here. Always terminate with cleanup function.")
|
|
#ENDIF
|
|
ENDSCRIPT
|