568 lines
18 KiB
Scheme
Executable File
568 lines
18 KiB
Scheme
Executable File
// Includes
|
|
USING "friendutil_private.sch"
|
|
USING "flow_public_core.sch"
|
|
USING "selector_public.sch"
|
|
USING "pb_prostitute_stats.sch"
|
|
|
|
// Constants
|
|
CONST_INT TOTAL_MONEY_SPENT 1000000 // Money spent or saved
|
|
CONST_INT STRIP_CLUB_DANCES 3 // Strip club - number of lap dances
|
|
CONST_INT STRIP_CLUB_MONEY_SPENT 100 // Strip club - cash spent
|
|
CONST_INT STOCKMARKET_TIME_SPENT 120000 // Stockmarket - time spent
|
|
CONST_INT TOTAL_PEDS_KILLED 100 // Number of innocent peds killed
|
|
CONST_INT TOTAL_VEHICLES_STOLEN 100 // Number of vehicles stolen
|
|
CONST_INT FITNESS_LEVEL_FRANKLIN 50 // Fitness (Stamina, Strength, Lung Capacity)
|
|
CONST_INT FITNESS_LEVEL_MICHAEL 50
|
|
CONST_INT FITNESS_LEVEL_TREVOR 50
|
|
CONST_INT TOTAL_STRANGERS_MET 10 // Number of RC's and RE's completed
|
|
|
|
// Structs
|
|
STRUCT STRUCT_PSYCH_DATA
|
|
INT iIntro
|
|
TEXT_LABEL_3 tl3storychoice
|
|
TEXT_LABEL_3 tl3mostplayedchar
|
|
TEXT_LABEL_7 tl3moneyspent
|
|
TEXT_LABEL_3 tl3stripclubs
|
|
TEXT_LABEL_3 tl3prostitute
|
|
TEXT_LABEL_3 tl3family
|
|
TEXT_LABEL_3 tl3stockmarket
|
|
TEXT_LABEL_3 tl3killpeds
|
|
TEXT_LABEL_3 tl3stolenvehicles
|
|
TEXT_LABEL_3 tl3yoga
|
|
TEXT_LABEL_3 tl3fitness
|
|
TEXT_LABEL_3 tl3strangers
|
|
TEXT_LABEL_3 tl3collectables
|
|
INT iSummary
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE:
|
|
/// Returns randomised introduction line
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_INTRO(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "INTRO_"
|
|
INT randInt = GET_RANDOM_INT_IN_RANGE(1,21)
|
|
|
|
sPsychData.iIntro = randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line dependant on whether the player killed Michael, Trevor or saved both
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_STORY_CHOICE(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "STORY_"
|
|
INT randInt
|
|
|
|
// Gameflow choice
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_MICHAEL_KILLED)
|
|
sPsychData.tl3storychoice = "M"
|
|
returnStr += "M"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,11)
|
|
ELIF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_TREVOR_KILLED)
|
|
sPsychData.tl3storychoice = "T"
|
|
returnStr += "T"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,10)
|
|
ELSE
|
|
sPsychData.tl3storychoice = "B"
|
|
returnStr += "B"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,11)
|
|
ENDIF
|
|
|
|
sPsychData.tl3storychoice += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line associated with most played character
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_MOST_PLAYED_CHAR(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "CHAR_"
|
|
INT randInt
|
|
|
|
// Work out most played character
|
|
enumCharacterList eMostPlayedChar = CHAR_MICHAEL
|
|
INT iTempTime
|
|
INT iMaxTime = 0
|
|
|
|
// Get Michael's playtime...
|
|
STAT_GET_INT(SP0_TOTAL_PLAYING_TIME, iMaxTime, 0)
|
|
|
|
// Get Franklin's play time and check if it's larger...
|
|
STAT_GET_INT(SP1_TOTAL_PLAYING_TIME, iTempTime, 1)
|
|
IF iTempTime > iMaxTime
|
|
iMaxTime = iTempTime
|
|
eMostPlayedChar = CHAR_FRANKLIN
|
|
ENDIF
|
|
|
|
// Check if Trevor's playtime is longest...
|
|
STAT_GET_INT(SP2_TOTAL_PLAYING_TIME, iTempTime, 2)
|
|
IF iTempTime > iMaxTime
|
|
iMaxTime = iTempTime
|
|
eMostPlayedChar = CHAR_TREVOR
|
|
ENDIF
|
|
|
|
// Build text based on most played char
|
|
IF eMostPlayedChar = CHAR_MICHAEL
|
|
sPsychData.tl3mostplayedchar = "M"
|
|
returnStr += "M"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
ELIF eMostPlayedChar = CHAR_FRANKLIN
|
|
sPsychData.tl3mostplayedchar = "F"
|
|
returnStr += "F"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
ELSE
|
|
sPsychData.tl3mostplayedchar = "T"
|
|
returnStr += "T"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,12)
|
|
ENDIF
|
|
|
|
sPsychData.tl3mostplayedchar += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line associated with spending or saving money
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_MONEY_SPENT(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "CASH_"
|
|
INT randInt
|
|
|
|
// Get total amount of cash spent by all characters
|
|
INT iTempCash, iTotalCash
|
|
STAT_GET_INT(SP0_MONEY_TOTAL_SPENT, iTempCash, 0) iTotalCash += iTempCash
|
|
STAT_GET_INT(SP1_MONEY_TOTAL_SPENT, iTempCash, 1) iTotalCash += iTempCash
|
|
STAT_GET_INT(SP2_MONEY_TOTAL_SPENT, iTempCash, 2) iTotalCash += iTempCash
|
|
|
|
// Player has spent over 1 million
|
|
IF iTotalCash >= TOTAL_MONEY_SPENT
|
|
sPsychData.tl3moneyspent = "SP"
|
|
returnStr += "SP"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,14)
|
|
ELSE
|
|
sPsychData.tl3moneyspent = "SA"
|
|
returnStr += "SA"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
ENDIF
|
|
|
|
// Cloud data
|
|
sPsychData.tl3moneyspent += randInt
|
|
|
|
// Return suitable text
|
|
returnStr += randInt
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line associated with whether player frequented strip clubs
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_VISITED_STRIP_CLUBS(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "STRIP_"
|
|
INT randInt
|
|
|
|
// Get total amount of lap dances...
|
|
INT iTempDances, iTotalDances
|
|
STAT_GET_INT(SP0_LAP_DANCED_BOUGHT, iTempDances, 0) iTotalDances += iTempDances
|
|
STAT_GET_INT(SP1_LAP_DANCED_BOUGHT, iTempDances, 1) iTotalDances += iTempDances
|
|
STAT_GET_INT(SP2_LAP_DANCED_BOUGHT, iTempDances, 2) iTotalDances += iTempDances
|
|
|
|
// ...or money spent in strip clubs by all characters
|
|
INT iTempCash, iTotalCash
|
|
STAT_GET_INT(SP0_MONEY_SPENT_IN_STRIP_CLUBS, iTempCash, 0) iTotalCash += iTempCash
|
|
STAT_GET_INT(SP1_MONEY_SPENT_IN_STRIP_CLUBS, iTempCash, 1) iTotalCash += iTempCash
|
|
STAT_GET_INT(SP2_MONEY_SPENT_IN_STRIP_CLUBS, iTempCash, 2) iTotalCash += iTempCash
|
|
|
|
// Player has had 3 or more dances or spent over $100 in a strip club
|
|
IF iTotalDances >= STRIP_CLUB_DANCES
|
|
OR iTotalCash >= STRIP_CLUB_MONEY_SPENT
|
|
sPsychData.tl3stripclubs = "Y"
|
|
returnStr += "Y"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
ELSE
|
|
sPsychData.tl3stripclubs = "N"
|
|
returnStr += "N"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,12)
|
|
ENDIF
|
|
|
|
// Cloud data
|
|
sPsychData.tl3stripclubs += randInt
|
|
|
|
// Return suitable text
|
|
returnStr += randInt
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line associated with whether player used prostitutes
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_USED_PROSTITUTES(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "PROS_"
|
|
INT randInt
|
|
|
|
IF GET_NUM_PROSTITUTE_SERVICES_SOLICITED_BY_PLAYER(CHAR_FRANKLIN) > 0
|
|
OR GET_NUM_PROSTITUTE_SERVICES_SOLICITED_BY_PLAYER(CHAR_MICHAEL) > 0
|
|
OR GET_NUM_PROSTITUTE_SERVICES_SOLICITED_BY_PLAYER(CHAR_TREVOR) > 0
|
|
sPsychData.tl3prostitute = "Y"
|
|
returnStr += "Y"
|
|
ELSE
|
|
sPsychData.tl3prostitute = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
|
|
sPsychData.tl3prostitute += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether Michael has paid any attention to his family
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_FAMILY_ATTENTION(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "FAMILY_"
|
|
INT randInt
|
|
|
|
IF (HAS_CONNECTION_BEEN_PLAYED(FC_MICHAEL_AMANDA)
|
|
AND HAS_CONNECTION_BEEN_PLAYED(FC_MICHAEL_JIMMY))
|
|
CPRINTLN(DEBUG_REPEAT, "GET_SHRINK_FAMILY_ATTENTION: passed friend activity.")
|
|
sPsychData.tl3family = "Y"
|
|
returnStr += "Y"
|
|
|
|
ELIF (g_savedGlobals.sFlow.missionSavedData[SP_MISSION_ME_AMANDA].completed = TRUE
|
|
AND g_savedGlobals.sFlow.missionSavedData[SP_MISSION_ME_JIMMY].completed = TRUE
|
|
AND g_savedGlobals.sFlow.missionSavedData[SP_MISSION_ME_TRACEY].completed = TRUE)
|
|
CPRINTLN(DEBUG_REPEAT, "GET_SHRINK_FAMILY_ATTENTION: passed all ME's.")
|
|
sPsychData.tl3family = "Y"
|
|
returnStr += "Y"
|
|
|
|
ELSE
|
|
CPRINTLN(DEBUG_REPEAT, "GET_SHRINK_FAMILY_ATTENTION: failed.")
|
|
sPsychData.tl3family = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
|
|
sPsychData.tl3family += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether any attention was paid to the stockmarket
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_PLAYED_STOCKMARKET(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "STOCK_"
|
|
INT randInt
|
|
|
|
// Get total amount of time spent on stockmarket
|
|
INT iTime
|
|
STAT_GET_INT(TIME_SPENT_ON_STOCKMARKET, iTime, 0)
|
|
|
|
// Player has spent over x minutes in the stockmarket
|
|
IF iTime >= STOCKMARKET_TIME_SPENT
|
|
sPsychData.tl3stockmarket = "Y"
|
|
returnStr += "Y"
|
|
ELSE
|
|
sPsychData.tl3stockmarket = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
|
|
sPsychData.tl3stockmarket += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether player killed a lot of peds
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_KILLED_PEDS(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "PEDS_"
|
|
INT randInt
|
|
|
|
// Get number of innocent peds killed by all characters
|
|
INT iTempPeds, iTotalPeds
|
|
STAT_GET_INT(SP0_KILLS_INNOCENTS, iTempPeds, 0) iTotalPeds += iTempPeds
|
|
STAT_GET_INT(SP1_KILLS_INNOCENTS, iTempPeds, 1) iTotalPeds += iTempPeds
|
|
STAT_GET_INT(SP2_KILLS_INNOCENTS, iTempPeds, 2) iTotalPeds += iTempPeds
|
|
|
|
// Player has killed over threshold amount of innocent peds
|
|
IF iTotalPeds >= TOTAL_PEDS_KILLED
|
|
sPsychData.tl3killpeds = "Y"
|
|
returnStr += "Y"
|
|
ELSE
|
|
sPsychData.tl3killpeds = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
|
|
sPsychData.tl3killpeds += randInt
|
|
returnStr += randInt
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether player stole a lot of vehicles
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_STOLE_VEHICLES(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "VEHS_"
|
|
INT randInt
|
|
|
|
// Get number of vehicles stolen by all characters
|
|
INT iTempVehicles, iTotalVehicles
|
|
|
|
// Michael
|
|
STAT_GET_INT(SP0_NUMBER_STOLEN_COP_VEHICLE, iTempVehicles, 0) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP0_NUMBER_STOLEN_CARS, iTempVehicles, 0) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP0_NUMBER_STOLEN_BIKES, iTempVehicles, 0) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP0_NUMBER_STOLEN_BOATS, iTempVehicles, 0) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP0_NUMBER_STOLEN_HELIS, iTempVehicles, 0) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP0_NUMBER_STOLEN_QUADBIKES, iTempVehicles, 0) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP0_NUMBER_STOLEN_BICYCLES, iTempVehicles, 0) iTotalVehicles += iTempVehicles
|
|
|
|
// Franklin
|
|
STAT_GET_INT(SP1_NUMBER_STOLEN_COP_VEHICLE, iTempVehicles, 1) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP1_NUMBER_STOLEN_CARS, iTempVehicles, 1) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP1_NUMBER_STOLEN_BIKES, iTempVehicles, 1) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP1_NUMBER_STOLEN_BOATS, iTempVehicles, 1) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP1_NUMBER_STOLEN_HELIS, iTempVehicles, 1) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP1_NUMBER_STOLEN_QUADBIKES, iTempVehicles, 1) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP1_NUMBER_STOLEN_BICYCLES, iTempVehicles, 1) iTotalVehicles += iTempVehicles
|
|
|
|
// Trevor
|
|
STAT_GET_INT(SP2_NUMBER_STOLEN_COP_VEHICLE, iTempVehicles, 2) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP2_NUMBER_STOLEN_CARS, iTempVehicles, 2) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP2_NUMBER_STOLEN_BIKES, iTempVehicles, 2) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP2_NUMBER_STOLEN_BOATS, iTempVehicles, 2) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP2_NUMBER_STOLEN_HELIS, iTempVehicles, 2) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP2_NUMBER_STOLEN_QUADBIKES, iTempVehicles, 2) iTotalVehicles += iTempVehicles
|
|
STAT_GET_INT(SP2_NUMBER_STOLEN_BICYCLES, iTempVehicles, 2) iTotalVehicles += iTempVehicles
|
|
|
|
// Player has stolen over threshold amount of vehicles
|
|
IF iTotalVehicles >= TOTAL_VEHICLES_STOLEN
|
|
sPsychData.tl3stolenvehicles = "Y"
|
|
returnStr += "Y"
|
|
ELSE
|
|
sPsychData.tl3stolenvehicles = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
|
|
sPsychData.tl3stolenvehicles += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether player was active in yoga
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_PERFORMED_YOGA(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "YOGA_"
|
|
INT randInt
|
|
|
|
// Has the player completed the Yoga minigame?
|
|
IF HAS_THIS_SCRIPT_BEEN_REGISTERED_IN_COMPLETION_PERCENTAGE_TOTAL(CP_YOGA)
|
|
sPsychData.tl3yoga = "Y"
|
|
returnStr += "Y"
|
|
ELSE
|
|
sPsychData.tl3yoga = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
|
|
sPsychData.tl3yoga += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether player was generally fit and active
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_FITNESS(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "FIT_"
|
|
INT randInt
|
|
|
|
// All player fitness levels are above set amounts
|
|
IF GET_SP_PLAYER_PED_STAT_VALUE(CHAR_FRANKLIN, PS_STAMINA) > FITNESS_LEVEL_FRANKLIN // Franklin
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_FRANKLIN, PS_STRENGTH) > FITNESS_LEVEL_FRANKLIN
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_FRANKLIN, PS_LUNG_CAPACITY) > FITNESS_LEVEL_FRANKLIN
|
|
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_MICHAEL, PS_STAMINA) > FITNESS_LEVEL_MICHAEL // Michael
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_MICHAEL, PS_STRENGTH) > FITNESS_LEVEL_MICHAEL
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_MICHAEL, PS_LUNG_CAPACITY) > FITNESS_LEVEL_MICHAEL
|
|
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_TREVOR, PS_STAMINA) > FITNESS_LEVEL_TREVOR // Trevor
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_TREVOR, PS_STRENGTH) > FITNESS_LEVEL_TREVOR
|
|
AND GET_SP_PLAYER_PED_STAT_VALUE(CHAR_TREVOR, PS_LUNG_CAPACITY) > FITNESS_LEVEL_TREVOR
|
|
sPsychData.tl3fitness = "Y"
|
|
returnStr += "Y"
|
|
ELSE
|
|
sPsychData.tl3fitness = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,11)
|
|
|
|
sPsychData.tl3fitness += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether player engaged in random chars/events
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_RANDOM_CHARS(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "RAND_"
|
|
INT randInt
|
|
|
|
// Get total number of completed RCM's and RE's
|
|
INT iCompletedRC, iCompletedRE, iTotal
|
|
STAT_GET_INT(NUM_RNDPEOPLE_COMPLETED, iCompletedRC)
|
|
STAT_GET_INT(NUM_RNDEVENTS_COMPLETED, iCompletedRE)
|
|
iTotal = iCompletedRC + iCompletedRE
|
|
|
|
// Player has completed over x Random Events and Random Character missions
|
|
IF (iTotal > TOTAL_STRANGERS_MET)
|
|
sPsychData.tl3strangers = "Y"
|
|
returnStr += "Y"
|
|
ELSE
|
|
sPsychData.tl3strangers = "N"
|
|
returnStr += "N"
|
|
ENDIF
|
|
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,13)
|
|
|
|
sPsychData.tl3strangers += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns line whether player was generally fit and active
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_COLLECTABLES(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "COLLECT_"
|
|
INT randInt
|
|
|
|
// Check collectables
|
|
IF GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_DIVING_SCRAPS_DONE) // Submarine parts
|
|
OR GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_EPSILON_UNLOCKED_TRACT) // Epsilon tract
|
|
OR GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_LETTER_SCRAPS_DONE) // Dreyfuss letter
|
|
OR GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_SPACESHIP_PARTS_DONE) // Omega spaceship
|
|
sPsychData.tl3collectables = "Y"
|
|
returnStr += "Y"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,11)
|
|
ELSE
|
|
sPsychData.tl3collectables = "N"
|
|
returnStr += "N"
|
|
randInt = GET_RANDOM_INT_IN_RANGE(1,12)
|
|
ENDIF
|
|
|
|
sPsychData.tl3collectables += randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns randomised summary
|
|
FUNC TEXT_LABEL_15 GET_SHRINK_SUMMARY(STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
TEXT_LABEL_15 returnStr = "SUMMARY_"
|
|
INT randInt = GET_RANDOM_INT_IN_RANGE(1,24)
|
|
|
|
sPsychData.iSummary = randInt
|
|
returnStr += randInt
|
|
|
|
RETURN returnStr
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Saves psychology report to a given path for the cloud data
|
|
/// PARAMS:
|
|
/// iLoadStage - the switching stage
|
|
/// bSuccess - was it a success
|
|
/// sPsychData - Cloud data
|
|
FUNC BOOL SAVE_OUT_PSYCH_DATA(INT &iLoadStage, BOOL &bSuccess, STRUCT_PSYCH_DATA &sPsychData)
|
|
|
|
// The cloud is down... get out of here!
|
|
IF IS_CLOUD_DOWN_CLOUD_LOADER()
|
|
CPRINTLN(DEBUG_FLOW, "<FIN_ENDGAME> SAVE_OUT_PSYCH_DATA - NOT IS_CLOUD_DOWN_CLOUD_LOADER()")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
//Vars needed
|
|
DATAFILE_DICT dfdMainDict
|
|
|
|
SWITCH iLoadStage
|
|
|
|
// Deal with setup
|
|
CASE 0
|
|
IF IS_SCRIPT_UCG_REQUEST_IN_PROGRESS()
|
|
RETURN FALSE
|
|
ENDIF
|
|
CLEANUP_DATA_FILE()
|
|
iLoadStage++
|
|
BREAK
|
|
|
|
//Initilise the data file
|
|
CASE 1
|
|
|
|
//SET UP THE DATA FILE
|
|
DATAFILE_CREATE()
|
|
|
|
//Get a handel on the top level dictionay
|
|
dfdMainDict = DATAFILE_GET_FILE_DICT()
|
|
|
|
//Add an INT
|
|
DATADICT_SET_INT (dfdMainDict, "in", sPsychData.iIntro)
|
|
DATADICT_SET_STRING (dfdMainDict, "st", sPsychData.tl3storychoice)
|
|
DATADICT_SET_STRING (dfdMainDict, "mp", sPsychData.tl3mostplayedchar)
|
|
DATADICT_SET_STRING (dfdMainDict, "ms", sPsychData.tl3moneyspent)
|
|
DATADICT_SET_STRING (dfdMainDict, "sc", sPsychData.tl3stripclubs)
|
|
DATADICT_SET_STRING (dfdMainDict, "pr", sPsychData.tl3prostitute)
|
|
DATADICT_SET_STRING (dfdMainDict, "fa", sPsychData.tl3family)
|
|
DATADICT_SET_STRING (dfdMainDict, "sm", sPsychData.tl3stockmarket)
|
|
DATADICT_SET_STRING (dfdMainDict, "kp", sPsychData.tl3killpeds)
|
|
DATADICT_SET_STRING (dfdMainDict, "sv", sPsychData.tl3stolenvehicles)
|
|
DATADICT_SET_STRING (dfdMainDict, "yo", sPsychData.tl3yoga)
|
|
DATADICT_SET_STRING (dfdMainDict, "fi", sPsychData.tl3fitness)
|
|
DATADICT_SET_STRING (dfdMainDict, "rc", sPsychData.tl3strangers)
|
|
DATADICT_SET_STRING (dfdMainDict, "co", sPsychData.tl3collectables)
|
|
DATADICT_SET_INT (dfdMainDict, "su", sPsychData.iSummary)
|
|
DATAFILE_START_SAVE_TO_CLOUD("gta5/psych/index.json")
|
|
|
|
iLoadStage++
|
|
BREAK
|
|
|
|
CASE 2
|
|
// Wait for it to finish
|
|
IF PROCESS_SAVE_FILE_TO_CLOUD(bSuccess)
|
|
CPRINTLN(DEBUG_FLOW, "<FIN_ENDGAME> SAVE_OUT_PSYCH_DATA - Success!")
|
|
RETURN TRUE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
// Not done yet pal
|
|
RETURN FALSE
|
|
ENDFUNC
|