Files
2025-09-29 00:52:08 +02:00

922 lines
27 KiB
XML
Executable File

//╒═════════════════════════════════════════════════════════════════════════════╕
//│ Communication Controller Global Header │
//╞═════════════════════════════════════════════════════════════════════════════╡
//│ │
//│ AUTHOR: Ben Rollinson │
//│ DATE: 13/10/10 │
//│ DESCRIPTION: All global definitions required by the communication │
//│ controller system. │
//│ │
//╘═════════════════════════════════════════════════════════════════════════════╛
USING "rage_builtins.sch"
USING "cellphone_globals.sch"
USING "vector_id_globals.sch"
USING "email_generated_globals.sch"
USING "flow_commands_enums_game.sch"
USING "script_maths.sch"
USING "code_control_globals.sch"
USING "candidate_enums.sch"
//═══════════════════════════════════════════════════════════════════════════════
//════════════════════════════╡ Global Constants ╞═══════════════════════════════
//═══════════════════════════════════════════════════════════════════════════════
CONST_INT CC_MAX_QUEUED_CALLS 9
CONST_INT CC_MAX_QUEUED_TEXTS 8
CONST_INT CC_MAX_QUEUED_EMAILS 10
CONST_INT CC_MAX_MISSED_CALLS 4
CONST_INT CC_MAX_CHAT_CALLS 30
CONST_INT CC_MAX_SENT_TEXTS 3
CONST_INT CC_GLOBAL_DELAY_BETWEEN_COMMS 20000 //Time to wait between communications going to the player.
CONST_INT CC_GLOBAL_DELAY_POST_MISSION 30000 //Time to wait after a mission has been played before allowing communications.
CONST_INT CC_CHARACTER_DELAY_BETWEEN_COMMS 20000 //Time to wait between communications going to the player from the same character.
CONST_INT CC_DELAY_POST_AMBIENT_SWITCH 8000 //Time to wait after an off-mission switch before allowing communications.
CONST_INT CC_END_OF_MISSION_QUEUE_TIME 6000 //Standard delay time for an end of mission call after a mission passes.
//═══════════════════════════════════════════════════════════════════════════════
//══════════════════════════════╡ Global Enums ╞═════════════════════════════════
//═══════════════════════════════════════════════════════════════════════════════
HASH_ENUM CC_CommID
//Normal calls.
CALL_AGENCY_2_TRIGGER,
CALL_AGENCY_P_M_DONE,
CALL_AGENCY_P_F_DONE,
CALL_B_AGENCY_P_M_READY,
CALL_B_AGENCY_P_M_WAIT,
CALL_B_AGENCY_P_F_READY,
CALL_B_AGENCY_P_F_WAIT,
// CALL_AGENCY_3_M_UNLOCK,
// CALL_AGENCY_3_F_UNLOCK,
CALL_AGENCY_3A_DONE,
CALL_AGENCY_3B_DONE,
CALL_ARM2_UNLOCK,
CALL_CARDMG_ARM2_UNLOCK,
CALL_ARM3_DONE,
CALL_ASS1_UNLOCK,
CALL_ASS1_DONE,
CALL_CARS1_UNLOCK,
CALL_CARS4_F_DONE,
CALL_CHIN1_UNLOCK,
CALL_DOCKS_POST_PLAN,
CALL_DOCKS_POST_PLANALT,
CALL_B_DOCKS_POST_PLAN_FLYING,
CALL_DOCKS_PREP1_DONE_SOME,
CALL_DOCKS_PREP1_DONE_ALL,
CALL_DOCKS_2_T_UNLOCK,
CALL_EXILE_1_END,
CALL_EXILE_CALL1,
CALL_EXILE_CALL2,
CALL_EXILE_AMANDA,
CALL_EXILE_STEVE,
CALL_EXILE_M_MARTIN1,
CALL_EXILE_M_MARTIN2,
CALL_EXILE_M_MARTIN3,
CALL_EXILE_M_MARTIN4,
CALL_EXILE_T_MARTIN1,
CALL_EXILE_T_MARTIN2,
CALL_EXILE_T_MARTIN3,
CALL_EXILE_T_MARTIN4,
CALL_EPSILON_DESERT_NEAR,
CALL_EPSILON_DESERT_DONE,
CALL_EPSILON8_STOLE,
CALL_EPSILON8_DONE,
CALL_FAM4_DONE,
CALL_FAM5_DONE,
CALL_FIB3_M_TRIGGER,
CALL_FIB3_T_TRIGGER,
CALL_FIB4I_DONE,
CALL_FIB4_P1_M_DONE,
CALL_FIB4_P1_F_DONE,
CALL_FIB4_P1_T_DONE,
CALL_FIB4_P2_M_DONE,
CALL_FIB4_P2_F_DONE,
CALL_FIB4_P2_T_DONE,
CALL_FIB4_P4_M_DONE,
CALL_FIB4_P4_F_DONE,
CALL_FIB4_P4_T_DONE,
CALL_FIB4_P5_M_DONE,
CALL_FIB4_P5_F_DONE,
CALL_FIB4_P5_T_DONE,
CALL_FIB4_PREPS_DONE,
CALL_FIB4_PREPS_DONE_WAIT,
CALL_FIB4_M_UNLOCK,
CALL_FIB4_F_UNLOCK,
CALL_FIB4_T_UNLOCK,
CALL_FIB4_GO_TIME,
CALL_FIN_CHOICE_1A,
CALL_FIN_CHOICE_1B,
CALL_FIN_CHOICE_2A,
CALL_FIN_CHOICE_2B,
CALL_FIN_CHOICE_3,
CALL_FIN_TANISHA,
CALL_FIN_AMANDA,
CALL_FIN_DAVE,
CALL_FIN_DEVIN,
CALL_FIN_LAMAR,
CALL_FIN_MDEAD1,
CALL_FIN_MDEAD2,
CALL_FIN_MDEAD3,
CALL_FIN_STEVE,
CALL_FIN_TDEAD1,
CALL_FIN_TDEAD2,
CALL_FINH_PA_M_DONE,
CALL_FINH_PA_F_DONE,
CALL_FINH_PA_T_DONE,
CALL_FINH_PB_M_DONE,
CALL_FINH_PB_F_DONE,
CALL_FINH_PB_T_DONE,
CALL_FINH_PC1_M_DONE,
CALL_FINH_PC1_F_DONE,
CALL_FINH_PC1_T_DONE,
CALL_FINH_PC2_M_DONE,
CALL_FINH_PC2_F_DONE,
CALL_FINH_PC2_T_DONE,
CALL_FINH_PC_M_DONE,
CALL_FINH_PC_F_DONE,
CALL_FINH_PC_T_DONE,
CALL_FINH_PD_M_DONE,
CALL_FINH_PD_F_DONE,
CALL_FINH_PD_T_DONE,
CALL_FINH_PE_M_DONE,
CALL_FINH_PE_F_DONE,
CALL_FINH_PE_T_DONE,
CALL_B_FINH_P_READY,
CALL_B_FINH_P_PREPS,
CALL_B_FINH_P_STING,
CALL_B_FINH_P_GETAW,
CALL_B_FINH_P_DRILL,
CALL_B_FINH_P_TRAIN,
CALL_B_FINH_P_GAUNT,
CALL_FRAN_CHOP_UNLOCK,
CALL_JEWEL_SETUP_UNLOCK,
CALL_JEWEL_POST_PLAN,
CALL_JEWEL_PREP1A_DONE_UNLOCK_P2A,
CALL_JEWEL_PREP1A_DONE_NEED_P2A,
CALL_JEWEL_PREP2A_DONE,
CALL_M_JHEIST_PAY,
CALL_F_JHEIST_PAY,
CALL_HACKER_1,
CALL_HACKER_2,
CALL_HACKER_3,
CALL_HACKER_4,
CALL_MIKE_1,
CALL_MIKE_3,
CALL_MICHAEL4_M_UNLOCK,
CALL_MIKE_4,
CALL_PAP3A_DONE,
CALL_PATRICIA_1,
CALL_PATRICIA_2,
CALL_PATRICIA_3,
CALL_RURAL_PREP_DONE1,
CALL_B_RURAL_PREP_DONE1_WAIT,
CALL_RURAL_PREP_DONE2,
CALL_B_RURAL_PREP_DONE2_WAIT,
CALL_RURAL_HEIST_UNLOCK,
CALL_SHRINK1_UNLOCK,
CALL_SOLOMON1_DONE,
CALL_SOLOMON3_DONE,
CALL_DIVING_DONE,
CALL_SONAR_COLLECT_DONE,
CALL_TRV5_LESCALL,
CALL_RE_BURIAL_M_DONE,
CALL_RE_BURIAL_F_DONE,
CALL_RE_BURIAL_T_DONE,
CALL_RACES_DONE,
CALL_PROP_TOWING,
CALL_PROP_GOLF_T,
CALL_PROP_GOLF_M,
CALL_PROP_GOLF_F,
CALL_PROP_CINEMA_M,
CALL_PROP_TAXI_F,
//Chat calls.
CHAT_AMA01,
CHAT_AMA02,
CHAT_AMA03,
CHAT_AMA04,
CHAT_CLE1_1,
CHAT_CLE1_2,
CHAT_CLE2_1,
CHAT_CLE2_2,
CHAT_CLE3_1,
CHAT_DAVE01,
CHAT_DEV03,
CHAT_DEV04,
CHAT_DEV05,
CHAT_DEV06,
CHAT_DEV07,
CHAT_DEV08,
CHAT_JIM05,
CHAT_JIM06,
CHAT_JIM07,
CHAT_JIM08,
CHAT_JIM09,
CHAT_JIM10,
CHAT_JIM11,
CHAT_JIM12,
CHAT_JIM13,
CHAT_JIM14,
CHAT_JIM15,
CHAT_JIM16,
CHAT_JIM17,
CHAT_JIM18,
CHAT_JIM19,
CHAT_JIM20,
CHAT_JIM21,
CHAT_JIM22,
CHAT_JIM23,
CHAT_JIM24,
CHAT_LAM06,
CHAT_LAM08,
CHAT_LAM09,
CHAT_LAM10,
CHAT_LAM11,
CHAT_LAM12,
CHAT_LAM13,
CHAT_LAM14,
CHAT_LAM15,
CHAT_LAM16,
CHAT_LAM17,
CHAT_LAM18,
CHAT_LAM19,
CHAT_LAM20,
CHAT_LAM21,
CHAT_RON01,
CHAT_RON02,
CHAT_RON03,
CHAT_SOL01,
CHAT_SOL02,
CHAT_SOL03,
CHAT_SOL04,
CHAT_STR01,
CHAT_STR02,
CHAT_STR03,
CHAT_STR04,
CHAT_STR05,
CHAT_TEXL1,
CHAT_TEXL2,
CHAT_TEXL3,
CHAT_TEXL4,
CHAT_TEXL5,
CHAT_TEXL6,
CHAT_TEXL7,
CHAT_TNOT,
CHAT_TRA01,
CHAT_TRA02,
CHAT_TRA03,
CHAT_WADE01,
CHAT_WADE02,
CHAT_WADE03,
CHAT_WADE04,
CHAT_MAR01,
CHAT_MAR02,
CHAT_MAR03,
CHAT_CHG1,
CHAT_CHG2,
CHAT_CHG3,
CHAT_HOSP,
//Calls with questions.
QCALL_ME_AMANDA,
QCALL_ME_JIMMY,
QCALL_ME_TRACEY,
QCALL_PROP_TAXI_TAKE_IT_EASY,
QCALL_PROP_TAXI_NEED_EXCITEMENT,
QCALL_PROP_TAXI_DEADLINE,
QCALL_PROP_TAXI_FOLLOW_THAT_CAR,
QCALL_PROP_TAXI_GOT_YOUR_BACK,
QCALL_PROP_TAXI_TAKE_TO_BEST,
QCALL_PROP_TAXI_CUT_YOU_IN,
QCALL_PROP_TAXI_GOT_YOU_NOW,
QCALL_PROP_TAXI_CLOWN_CAR,
//Family griefing calls.
CALL_FAM_M_GRIEF_GENERAL,
CALL_FAM_M_GRIEF_FIRING_ROCKETS,
CALL_FAM_M_GRIEF_STOLE_CAR,
CALL_FAM_M_GRIEF_SHOOTING_HOUSE,
CALL_FAM_F_GRIEF_GENERAL,
CALL_FAM_F_GRIEF_FIRING_ROCKETS,
CALL_FAM_F_GRIEF_STOLE_CAR_c,
CALL_FAM_F_GRIEF_STOLE_CAR_b,
CALL_FAM_F_GRIEF_SHOOTING_HOUSE,
CALL_FAM_T_GRIEF_GENERAL,
CALL_FAM_T_GRIEF_FIRING_ROCKETS,
CALL_FAM_T_GRIEF_STOLE_CAR,
CALL_FAM_T_GRIEF_SHOOTING_HOUSE,
//Text messages.
TEXT_AGENCY_1_UNLOCK,
TEXT_AGENCY_2_UNLOCK,
TEXT_AGENCY_P_UNLOCK,
TEXT_AGENCY_GETA_REMINDER,
TEXT_AGENCY_3B_UNLOCK,
TEXT_ASS1_UNLOCK_MISSED,
TEXT_ASS_FIN_A,
TEXT_ASS_FIN_B,
TEXT_ARM2_END,
TEXT_ARM3_BAGGER_UNLOCK,
TEXT_ARM3_DONE_MISSED,
TEXT_CAR1_UNLOCK,
TEXT_CARS2_DONE,
TEXT_CAR3_F_REM,
TEXT_CAR3_MT_REM,
TEXT_CARS4_T_DONE_MISSED,
TEXT_CHOP_UNLOCK,
TEXT_CITY_RON_CHINESE,
TEXT_CREW_CHEF_UNLOCK,
TEXT_DOCKS_F_SHOOT,
TEXT_DOCKS_P1_UNLOCK,
TEXT_DOCKS_P2B_UNLOCK,
TEXT_DOCKS_P2B_REMINDER,
TEXT_DOCKS_MIKE_FLY,
TEXT_DOCKS_2_MF_UNLOCK,
TEXT_EXILE2_UNLOCK,
TEXT_EXILE2_OSCAR,
TEXT_EXILE_WADE_CHINESE,
TEXT_EXILE_HUNTER_PIE,
TEXT_EXILE_PAT_LOVE,
TEXT_JIM_CAR_BACK,
TEXT_FAMILY1_END,
TEXT_FAMILY_DADDYS_GIRL,
TEXT_FAMILY5_END,
TEXT_FIB4I_UNLOCK,
TEXT_FIB4_P3_M_REMINDER,
TEXT_FIB4_P3_FT_REMINDER,
TEXT_FIB4_M_UNLOCK,
TEXT_FIB4_FT_UNLOCK,
TEXT_FIB4_F_ASS1,
TEXT_FIB4_MT_ASS1,
TEXT_FINH_PA_UNLOCK,
TEXT_FINH_PB_UNLOCK,
TEXT_FINH_PD_UNLOCK,
TEXT_FINH_GETA_REMINDER,
TEXT_FINH_KILLM,
TEXT_FINH_KILLT,
TEXT_FORSALESIGNS_DONE,
TEXT_FRAN0_END,
TEXT_FRAN1_END,
TEXT_JEWEL_P1A_UNLOCK,
TEXT_JEWEL_FRANK_PREP,
TEXT_JEWEL_P2A_UNLOCK,
TEXT_JEWEL_P1B_UNLOCK,
TEXT_JEWEL_P1B_HOSTAGE_END,
TEXT_JEWEL_2_DONE,
TEXT_JOSH_1,
TEXT_MARTIN_1_UNLOCK_MISSED,
TEXT_MARTIN1_TREV_SILENT,
TEXT_ME_AMANDA_FAIL,
TEXT_ME_MANADA_FAIL2,
TEXT_ME_JIMMY_FAIL,
TEXT_ME_TRACEY_FAIL,
TEXT_MICHAEL4_M_UNLOCK,
TEXT_MICHAEL4_F_UNLOCK,
TEXT_PILOTS_UNLOCK,
TEXT_RC_BARRY3_UNLOCK,
TEXT_RC_BARRY4_UNLOCK,
TEXT_RC_EPSILON6_UNLOCK,
TEXT_RC_EXTR2_UNLOCK,
TEXT_RC_EXTR3_UNLOCK,
TEXT_RC_HUNT1_UNLOCK,
TEXT_RC_PAP_3_UNLOCK,
TEXT_RC_TONYA_3_UNLOCK,
TEXT_RC_TONYA_4_UNLOCK,
TEXT_RE_BURIAL_END,
TEXT_RBH_UNLOCK,
TEXT_RBH_PREP_UNLOCK,
TEXT_SOL2_END,
TEXT_SRANGE_UNLOCK,
TEXT_SHRINK3_UNLOCK,
TEXT_SHRINK4_UNLOCK,
TEXT_STREET_RACE_AIRPORT,
TEXT_STREET_RACE_FREEWAY,
TEXT_STREET_RACE_CANALS,
TEXT_TENNIS_UNLOCK,
TEXT_TENNIS_UNLOCK_POST_FAM3,
TEXT_TREV_LOST_HANGER,
TEXT_UFOPARTS_DONE,
TEXT_PROP_UNAV_TOWING,
TEXT_MARTIN_THREAT,
TEXT_MARTIN_CASH_RECIEVED,
TEXT_TREVOR_BLAZER3_UNLOCK,
TEXT_ABIGAIL_MISSED,
TEXT_HAO1,
TEXT_PAP1_WILDLIFE_UNLOCK,
TEXT_MONKEY_CAR_UNLOCK,
TEXT_MONKEY_MOSAIC_LAMAR,
TEXT_COUNTRY_RACE_UNLOCK,
//Composite bases.
TEXT_SEXT,
TEXT_FRIEND,
TEXT_FRIEND_GRIEF_MICHAEL,
TEXT_FRIEND_GRIEF_FRANKLIN,
TEXT_FRIEND_GRIEF_TREVOR,
TEXT_FRIEND_GRIEF_LAMAR,
TEXT_FRIEND_GRIEF_JIMMY,
TEXT_FRIEND_GRIEF_AMANDA,
TEXT_PROPERTY,
TEXT_BS_PREPC,
//Family griefing texts.
TEXT_FAM_GRIEF_MICHAEL,
TEXT_FAM_GRIEF_FRANKLIN,
TEXT_FAM_GRIEF_TREVOR,
TEXT_FAM_HOSPITALBILL,
//Emails.
EMAIL_CARMOD_UNLOCK,
EMAIL_HEIST_PAY,
EMAIL_OFFROAD_UNLOCK,
EMAIL_SEARACE_M_UNLOCK,
EMAIL_SEARACE_F_UNLOCK,
EMAIL_SEARACE_T_UNLOCK,
EMAIL_STOCKMARKET,
EMAIL_WEAPON_STOCK_1,
EMAIL_WEAPON_STOCK_2,
EMAIL_WEAPON_STOCK_3,
EMAIL_WEAPON_STOCK_4,
EMAIL_WEAPON_STOCK_5,
EMAIL_WEAPON_STOCK_6,
EMAIL_WEAPON_STOCK_7,
EMAIL_WEAPON_STOCK_8,
EMAIL_WEAPON_STOCK_9,
EMAIL_FINH_GOOD_HACKER,
EMAIL_FINH_MED_HACKER,
EMAIL_FINH_BAD_HACKER,
EMAIL_RECARTHEFT2_T_PASS,
EMAIL_RECARTHEFT2_M_PASS,
EMAIL_RECARTHEFT2_F_PASS,
EMAIL_EPSILON1_DONATE,
EMAIL_EPSILON2_DONATE,
EMAIL_EPSILON4_DONATE,
EMAIL_DRFRIEDLANDER_EMAIL_A1,
EMAIL_DRFRIEDLANDER_EMAIL_END,
EMAIL_TRACEY_EMAIL_EXILE,
EMAIL_DAVE_EMAIL_FBI1,
EMAIL_DAVE_EMAIL_EG,
EMAIL_DAVE_EMAIL_EGBB,
EMAIL_AMANDA_EMAIL_FAM6,
EMAIL_AMANDA_EMAIL_EGKM,
EMAIL_MERRYWETHER_EMAIL_EG,
EMAIL_RON_EMAIL_EG,
EMAIL_RON_EMAIL_FAM4,
EMAIL_TANISHA_EMAIL_NG,
EMAIL_DENISE_EMAIL_FNH,
EMAIL_LAMAR_EMAIL_FNK0,
EMAIL_LAMAR_EMAIL_EGKT,
EMAIL_LAMAR_EMAIL_EGKM,
EMAIL_LAMAR_EMAIL_EGSB,
EMAIL_TREVOR_EMAIL_EGKM,
EMAIL_MICHAEL_EMAIL_EGKT,
EMAIL_MICHAEL_EMAIL_EGSB,
EMAIL_JIMMY_EMAIL_FAM4,
EMAIL_PATRICIA_EMAIL_MIC4,
EMAIL_REHO_BMS_EMAIL,
EMAIL_BITH_AA_EMAIL_M,
EMAIL_BITH_AA_EMAIL_F,
EMAIL_BITH_AA_EMAIL_T,
EMAIL_RC_NIG_1_UNLOCK,
EMAIL_BRAD_EMAIL_TRV1,
EMAIL_BRAD_EMAIL_FIB1,
EMAIL_BRAD_EMAIL_MIC1,
EMAIL_RON_CULT_TREV,
EMAIL_PRO_TOWING_IMPOUND_F,
EMAIL_PRO_ARMS_TRAFFICKING_T,
EMAIL_PRO_SONAR_COLLECTIONS_M,
EMAIL_PRO_SONAR_COLLECTIONS_T,
EMAIL_PRO_SONAR_COLLECTIONS_F,
EMAIL_PRO_CAR_MOD_SHOP_F,
EMAIL_PRO_CINEMA_VINEWOOD_M,
EMAIL_PRO_CINEMA_DOWNTOWN_M,
EMAIL_PRO_CAR_SCRAP_YARD_M,
EMAIL_PRO_CAR_SCRAP_YARD_T,
EMAIL_PRO_CAR_SCRAP_YARD_F,
EMAIL_PRO_WEED_SHOP_F,
EMAIL_PRO_BAR_TEQUILALA_M,
EMAIL_PRO_BAR_TEQUILALA_T,
EMAIL_PRO_BAR_TEQUILALA_F,
EMAIL_PRO_BAR_PITCHERS_M,
EMAIL_PRO_BAR_PITCHERS_T,
EMAIL_PRO_BAR_PITCHERS_F,
EMAIL_PRO_BAR_HEN_HOUSE_M,
EMAIL_PRO_BAR_HEN_HOUSE_T,
EMAIL_PRO_BAR_HEN_HOUSE_F,
EMAIL_PRO_BAR_HOOKIES_M,
EMAIL_PRO_BAR_HOOKIES_F,
EMAIL_COTM_ADRIAN_1,
EMAIL_COTM_ADRIAN_2,
EMAIL_COTM_ADRIAN_3,
EMAIL_COTM_ADRIAN_4,
EMAIL_WILDLIFE_PHOTOGRAPHY,
//Christmas 2 DLC weapons.
EMAIL_WEAPON_STOCK_10, //Proximity mine
EMAIL_WEAPON_STOCK_11, //Homing launcher
//Luxe DLC weapons.
EMAIL_WEAPON_STOCK_12, //Knuckle duster
EMAIL_WEAPON_STOCK_13, //Combat PDW
EMAIL_WEAPON_STOCK_14, //Marksman pistol
//Lowrider DLC weapons.
EMAIL_WEAPON_STOCK_15, //Machete
EMAIL_WEAPON_STOCK_16, //Machine Pistol
//==== Agent T comms ===
//calls
CALL_CLF_TEST01,
//calls with Q
QCALL_CLF_TEST01,
//texts
TEXT_CLF_TEST01,
//chat
CHAT_CLF_TEST01,
//email
EMAIL_CLF_TEST01,
//==== Agent T comms ===
//calls
CALL_NRM_TEST01,
//calls with Q
QCALL_NRM_TEST01,
//texts
TEXT_NRM_TEST01,
//chat
CHAT_NRM_TEST01,
//email
EMAIL_NRM_TEST01,
COMM_NONE = -1
ENDENUM
ENUM CC_QuestionCallResponse
RESP_ME_AMANDA_YES,
RESP_ME_AMANDA_NO,
RESP_ME_JIMMY_YES,
RESP_ME_JIMMY_NO,
RESP_ME_TRACEY_YES,
RESP_ME_TRACEY_NO,
RESP_PROP_TAXI_M_YES,
RESP_PROP_TAXI_M_NO,
RESP_PROP_TAXI_F_YES,
RESP_PROP_TAXI_F_NO,
RESP_PROP_TAXI_T_YES,
RESP_PROP_TAXI_T_NO,
RESP_PROP_TAXI_TAKE_IT_EASY_YES,
RESP_PROP_TAXI_NEED_EXCITEMENT_YES,
RESP_PROP_TAXI_DEADLINE_YES,
RESP_PROP_TAXI_FOLLOW_THAT_CAR_YES,
RESP_PROP_TAXI_GOT_YOUR_BACK_YES,
RESP_PROP_TAXI_TAKE_TO_BEST_YES,
RESP_PROP_TAXI_CUT_YOU_IN_YES,
RESP_PROP_TAXI_GOT_YOU_NOW_YES,
RESP_PROP_TAXI_CLOWN_CAR_YES,
RESP_MAX,
RESP_NONE
ENDENUM
ENUM CC_TextPart
//Sext character composition parts.
TPART_SEXT_JULIET,
TPART_SEXT_NIKKI,
TPART_SEXT_SAPPHIRE,
TPART_SEXT_INFERNUS,
TPART_SEXT_LIZ,
TPART_SEXT_HITCHER,
//Sext type composition parts.
TPART_SEXT_STUP,
TPART_SEXT_RUDE,
TPART_SEXT_1,
TPART_SEXT_2,
TPART_SEXT_NEED,
//Grief type parts.
TPART_GRIEF_FIRING_ROCKETS,
TPART_GRIEF_CREEP,
TPART_GRIEF_STOLE_CAR_P,
TPART_GRIEF_STOLE_CAR_W,
TPART_GRIEF_STOLE_CAR_D,
TPART_GRIEF_SET_FIRE,
TPART_GRIEF_SHOOTING_HOUSE,
TPART_GRIEF_GRENADE_HOUSE,
//Grief random parts.
TPART_GRIEF_ZERO,
TPART_GRIEF_ONE,
TPART_GRIEF_TWO,
TPART_GRIEF_THREE,
TPART_GRIEF_FOUR,
//Grief family hospital.
TPART_FHOS_M_SON,
TPART_FHOS_M_DAU,
TPART_FHOS_M_WIF,
TPART_FHOS_M_MAI,
TPART_FHOS_M_GAR,
TPART_FHOS_F_AUN,
TPART_FHOS_T_RON,
TPART_FHOS_T_WIF,
TPART_FHOS_T_FLO,
//Property type parts.
TPART_PROP_NOTI1,
TPART_PROP_NOTI2,
TPART_PROP_NOTI3,
TPART_PROP_NOTI4,
TPART_PROP_NOTI5,
TPART_PROP_NOTI6,
TPART_PROP_PASS1,
TPART_PROP_PASS2,
TPART_PROP_PASS3,
TPART_PROP_PASS4,
TPART_PROP_PASS5,
TPART_PROP_PASS6,
TPART_PROP_FAIL1,
TPART_PROP_FAIL2,
TPART_PROP_FAIL3,
TPART_PROP_FAIL4,
TPART_PROP_FAIL5,
TPART_PROP_FAIL6,
TPART_PROP_FAIL7,
TPART_PROP_FAIL8,
//Property mission parts.
TPART_PROP_WEED_DEL,
TPART_PROP_BAR_DEL,
TPART_PROP_BAR_GANG,
TPART_PROP_BAR_STLN,
TPART_PROP_BAR_PAP,
TPART_PROP_SCRAP_DEF,
TPART_PROP_TAXI,
TPART_PROP_CIN_PLANE,
//friends
TPART_FRND_MIKE,
TPART_FRND_FRANK,
TPART_FRND_TREVOR,
TPART_FRND_LAMAR,
TPART_FRND_JIMMY,
TPART_FRND_AMANDA,
//situation for Friends
TPART_FRND_SIT_LOSTA,
TPART_FRND_SIT_LOSTB,
TPART_FRND_SIT_LATEA,
TPART_FRND_SIT_LATEB,
TPART_FRND_SIT_HOSPA,
TPART_FRND_SIT_HOSPB,
TPART_FRND_SIT_DIEDA,
TPART_FRND_SIT_DIEDB,
TPART_FRND_SIT_BUSTA,
TPART_FRND_SIT_BUSTB,
//Big Score Prep C
//Hackers
TPART_BS_GH,
TPART_BS_AH,
TPART_BS_BH,
//Mission variations.
TPART_BS_C1,
TPART_BS_C2,
TPART_BS_C3,
TPART_MAX,
TPART_NONE = -1
ENDENUM
ENUM CC_CommunicationForm
CF_CALL,
CF_QUESTION_CALL,
CF_TEXT,
CF_EMAIL,
CF_NO_COMM_FORMS,
CF_ERROR = -1
ENDENUM
ENUM CC_CommunicationPriority
CPR_VERY_LOW = 0,
CPR_LOW,
CPR_MEDIUM,
CPR_MEDIUM_HIGH,
CPR_HIGH,
CPR_VERY_HIGH,
CPR_NO_PRIORITY_LEVELS,
CPR_ERROR
ENDENUM
ENUM CC_CommunicationType
CT_END_OF_MISSION = 0,
CT_FLOW,
CT_FLOW_URGENT,
CT_FRIEND,
CT_FRIEND_urgent,
CT_MINIGAME,
CT_AMBIENT,
CT_ON_MISSION,
CT_NONE,
CT_ERROR
ENDENUM
ENUM CC_CommunicationStatus
CS_IN_PROGRESS = 0,
CS_INACTIVE,
CS_WAITING_FOR_GLOBAL_DELAY,
CS_WAITING_FOR_CHARACTER_DELAY,
CS_WAITING_FOR_QUEUE_TIMER,
CS_WAITING_FOR_HIGHER_PRIORITY,
CS_ERROR
ENDENUM
ENUM CC_CallMissedResponse
CMR_REQUEUE = 0,
CMR_SEND_TEXT,
CMR_REMOVE
ENDENUM
// Call setting bit indexes.
CONST_INT COMM_FLAG_FROM_CHAR_IS_PLAYER BIT0
CONST_INT COMM_FLAG_HAS_QUESTION BIT1
CONST_INT COMM_FLAG_UNLOCKS_MISSION BIT2
CONST_INT COMM_FLAG_TRIGGERS_MISSION BIT3
CONST_INT COMM_FLAG_TODS_SKIP_TIMER BIT4
CONST_INT COMM_FLAG_ADD_CONTACT BIT5
CONST_INT COMM_FLAG_DONT_SAVE BIT6
CONST_INT COMM_FLAG_CALL_IS_QUICK BIT7
CONST_INT COMM_FLAG_CALL_IS_MISSED BIT8
CONST_INT COMM_FLAG_CALL_IS_CONFERENCE BIT9
CONST_INT COMM_FLAG_CALL_REQUEUE_ON_MISS BIT10
CONST_INT COMM_FLAG_CALL_TEXT_ON_MISS BIT11
CONST_INT COMM_FLAG_CALL_BLOCK_HANGUP BIT12
CONST_INT COMM_FLAG_CALL_BRANCHED BIT13
CONST_INT COMM_FLAG_CALL_ADD_TEMP_CONTACT BIT14
//CONST_INT COMM_FLAG_CALL_REMOVE_TEMP_CONTACT BIT15 //Private system use only.
CONST_INT COMM_FLAG_TXTMSG_NOT_CRITICAL BIT16
CONST_INT COMM_FLAG_TXTMSG_LOCKED BIT17
CONST_INT COMM_FLAG_TXTMSG_NO_SILENT BIT18
CONST_INT COMM_FLAG_TXTMSG_FORCE_SILENT BIT19
CONST_INT COMM_FLAG_TXTMSG_AWAITING_RESP BIT20
CONST_INT COMM_FLAG_INGORE_GLOBAL_DELAY BIT21
CONST_INT COMM_BIT_FROM_CHAR_IS_PLAYER 0
CONST_INT COMM_BIT_HAS_QUESTION 1
CONST_INT COMM_BIT_UNLOCKS_MISSION 2
CONST_INT COMM_BIT_TRIGGERS_MISSION 3
CONST_INT COMM_BIT_TODS_SKIP_TIMER 4
CONST_INT COMM_BIT_ADD_CONTACT 5
CONST_INT COMM_BIT_DONT_SAVE 6
CONST_INT COMM_BIT_CALL_IS_QUICK 7
CONST_INT COMM_BIT_CALL_IS_MISSED 8
CONST_INT COMM_BIT_CALL_IS_CONFERENCE 9
CONST_INT COMM_BIT_CALL_REQUEUE_ON_MISS 10
CONST_INT COMM_BIT_CALL_TEXT_ON_MISS 11
CONST_INT COMM_BIT_CALL_BLOCK_HANGUP 12
CONST_INT COMM_BIT_CALL_BRANCHED 13
CONST_INT COMM_BIT_CALL_ADD_TEMP_CONTACT 14
CONST_INT COMM_BIT_CALL_REMOVE_TEMP_CONTACT 15
CONST_INT COMM_BIT_TXTMSG_NOT_CRITICAL 16
CONST_INT COMM_BIT_TXTMSG_LOCKED 17
CONST_INT COMM_BIT_TXTMSG_NO_SILENT 18
CONST_INT COMM_BIT_TXTMSG_FORCE_SILENT 19
CONST_INT COMM_BIT_TXTMSG_AWAITING_RESP 20
CONST_INT COMM_BIT_INGORE_GLOBAL_DELAY 21
//═══════════════════════════════════════════════════════════════════════════════
//═════════════════════════════╡ Global Structs ╞════════════════════════════════
//═══════════════════════════════════════════════════════════════════════════════
//Shared data struct for phonecalls and text messages.
STRUCT CC_CommData
CC_CommID eID // A unique ID that can be used to reference this communication.
INT iSettings // A bitset contain setting flags for this communication.
INT iPlayerCharBitset // A bitset containing which player characters this communication is for.
CC_CommunicationPriority ePriority // An ENUM that denotes the priority of this communication.
INT iQueueTime // The time at which this communication is allowed to trigger.
INT iRequeueTime // The base time to add when requeuing this communication.
enumCharacterList eNPCCharacter // An ENUM pointing to the NPC character who is involved in this communication.
VectorID eRestrictedAreaID // A vector ID that defines an area in the world that the player must not be in for the communication to trigger.
CC_CodeID eExecuteOnCompleteID // A code ID that defines a block of script that should be executed when the communication is completed sucessfully.
FLOW_CHECK_IDS eSendCheck // A custom check that must pass before this communication is sent.
ENDSTRUCT
//Phonecall specific data struct.
STRUCT CC_CallData
CC_CommData sCommData // The generic communication data for this phonecall.
CC_CommID eCommExtra // The ID of first part of additional data for this call.
CC_CommID eCommExtra2 // The ID of second part of additional data for this call.
CC_QuestionCallResponse eYesResponse
CC_QuestionCallResponse eNoResponse
INT iSpeakerID // The speaker ID for the character in the conversation that is not a main character.
ENDSTRUCT
//Text message specific data struct.
STRUCT CC_TextMessageData
CC_CommData sCommData // The generic communication data for this text message.
CC_TextPart ePart1 // An ID for the first composite part that should make up the text label for this message.
CC_TextPart ePart2 // An ID for the second composite part that should make up the text label for this message.
INT iFailCount // How many times has this text failed to send?
enumTxtMsgCanCallSender WhichCanCallSenderStatus // Can player call back the char texting them
ENDSTRUCT
//Email specific data struct.
STRUCT CC_EmailData
CC_CommData sCommData // The generic communication data for this text message.
ENDSTRUCT
//Global control struct for tracking the state of peds involved in any communcation controller phonecall conversations.
structPedsForConversation g_sPedsForConversation
//═══════════════════════════════════════════════════════════════════════════════
//════════════════════════════╡ Global Variables ╞═══════════════════════════════
//═══════════════════════════════════════════════════════════════════════════════
INT g_iCallInProgress = -1 //The queue index of any call that is currently in progress. -1 if no calls are in progress.
INT g_iCommsCandidateID = NO_CANDIDATE_ID //CandidateID that the comms controller can use to secure the mission flag for a mission
//that triggers off a phonecall.
//Communication timers.
BOOL g_bPauseCommsQueues = FALSE //Should the communication controller queues be halted at the moment?
BOOL g_bPauseCommsQueuesThisFrame = FALSE //Should the communication controller queues be halted for this frame only?
INT g_iGlobalWaitTime //The time at which next communication is allowed to be sent to the player.
INT g_iCharWaitTime[MAX_CHARACTERS_MP] //The time at which the next communication from a specific character can be sent to the player.
//═══════════════════════════════════════════════════════════════════════════════
//═══════════════════════════╡ Globals to be saved ╞═════════════════════════════
//═══════════════════════════════════════════════════════════════════════════════
STRUCT CommsControlSaved
//The queued calls list and counter.
CC_CallData sQueuedCalls[CC_MAX_QUEUED_CALLS]
INT iNoQueuedCalls
//The queued missed calls list and counter.
CC_CallData sMissedCalls[CC_MAX_MISSED_CALLS]
INT iNoMissedCalls
//The registered chat calls list and counter.
CC_CallData sChatCalls[CC_MAX_CHAT_CALLS]
INT iNoChatCalls
//The queued text messages list and counter.
CC_TextMessageData sQueuedTexts[CC_MAX_QUEUED_TEXTS]
INT iNoQueuedTexts
//The queued email list and counter.
CC_EmailData sQueuedEmails[CC_MAX_QUEUED_EMAILS]
INT iNoQueuedEmails
//Sent text queue.
CC_TextMessageData sSentTexts[CC_MAX_SENT_TEXTS]
INT iNoSentTexts
//Last call data.
CC_CommID eLastCompletedCall = COMM_NONE
BOOL bLastCallAnswered
BOOL bLastCallHadResponse
BOOL bLastCallResponse
//Last text data.
CC_CommID eLastCompletedText = COMM_NONE
BOOL bLastTextHadResponse
BOOL bLastTextResponse
//Last email data.
CC_CommID eLastCompletedEmail = COMM_NONE
//Playable Character communication priority levels.
CC_CommunicationPriority eCharacterPriorityLevel[3] //One priority level for each playable character.
INT iExileWarningBitset
INT iCommsGameTime
ENDSTRUCT