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

1008 lines
29 KiB
Python
Executable File

//
// Author: Ben Rollinson Date: 11/03/11
//
//
// Code Controller
//
// DESCRIPTION: A controller script used to launch specific blocks of
// custom script by the communication controller and flow controller.
//
//
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_misc.sch"
USING "family_public.sch"
USING "code_control_data_GTA5.sch"
USING "taxi_functions.sch"
SCRIPT
// This script needs to cleanup only when the game moves from SP to MP
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP|FORCE_CLEANUP_FLAG_MAGDEMO|FORCE_CLEANUP_FLAG_DEBUG_MENU)
CPRINTLN(DEBUG_CODEID, "Code Controller has been forced to clean up.")
TERMINATE_THIS_THREAD()
ENDIF
WHILE TRUE
INT index
IF NOT CAN_MISSION_TYPE_START_AGAINST_CURRENT_TYPE(MISSION_TYPE_STORY)
IF g_iCommsCandidateID = NO_CANDIDATE_ID
CPRINTLN(DEBUG_CODEID, "Code Controller cleaning up as we have gone on mission.")
TERMINATE_THIS_THREAD()
ENDIF
ENDIF
//For each scripted code ID...
REPEAT CID_MAX index
//Has this code ID be flagged to run?
IF g_savedGlobals.sCodeControlData.bRunCodeID[index]
//Wait for this code ID's delay timer.
IF GET_GAME_TIMER() >= g_savedGlobals.sCodeControlData.iExecuteTimeForCodeID[index]
//Execute specific script for this code ID.
SWITCH(INT_TO_ENUM(CC_CodeID, index))
// Activity activation code IDs.
CASE CID_ACTIVATE_ACTIVITY_CINEMA
Execute_Activate_Activity_Cinema()
BREAK
// Minigame activation code IDs.
CASE CID_ACTIVATE_MINIGAME_BASE_JUMP
Execute_Activate_Minigame_Basejumping()
BREAK
CASE CID_ACTIVATE_MINIGAME_DARTS2
Execute_Activate_Minigame_Darts2()
BREAK
CASE CID_ACTIVATE_MINIGAME_TRAFFICKING
Execute_Activate_Minigame_Trafficking()
BREAK
CASE CID_ACTIVATE_MINIGAME_GOLF
Execute_Activate_Minigame_Golf()
BREAK
CASE CID_ACTIVATE_MINIGAME_HUNTING
Execute_Activate_Minigame_Hunting()
BREAK
CASE CID_ACTIVATE_MINIGAME_OFFROAD_RACES
Execute_Activate_Minigame_Offroad_Races()
BREAK
CASE CID_ACTIVATE_MINIGAME_PILOT_SCHOOL
Execute_Activate_Minigame_Pilot_School()
BREAK
CASE CID_ACTIVATE_MINIGAME_SEA_RACES
Execute_Activate_Minigame_Sea_Races()
BREAK
CASE CID_DISPLAYED_SEA_RACE_HELP
Execute_Displayed_Sea_Race_Help()
BREAK
CASE CID_ACTIVATE_MINIGAME_STREET_RACES
Execute_Activate_Minigame_Street_Races()
BREAK
CASE CID_DISPLAY_STREET_RACE_HELP
Execute_Display_Street_Race_Help()
BREAK
CASE CID_ACTIVATE_MINIGAME_STRIPCLUB
Execute_Activate_Minigame_Stripclub()
BREAK
CASE CID_ACTIVATE_MINIGAME_STUNT_PLANES
Execute_Activate_Minigame_Stunt_Planes()
BREAK
CASE CID_ACTIVATE_MINIGAME_TAXI
Execute_Activate_Minigame_Taxi_And_ShopRobberies()
BREAK
CASE CID_ACTIVATE_MINIGAME_TOWING
Execute_Activate_Minigame_Towing()
BREAK
CASE CID_ACTIVATE_MINIGAME_TRIATHLON
Execute_Activate_Minigame_Triathlon()
BREAK
CASE CID_ACTIVATE_MINIGAME_YOGA
Execute_Activate_Minigame_Yoga()
BREAK
CASE CID_ACTIVATE_MINIGAME_COUNTRY_RACE
Execute_Activate_Minigame_Country_Race()
BREAK
CASE CID_COUNTRY_RACE_TEXT_RECEIVED
Execute_Country_Race_Text_Received()
BREAK
CASE CID_ACTIVATE_MINIGAME_POST_ARM3_BLOCK
Execute_Activate_Minigame_Post_Armenian3_Block()
BREAK
// Random event activation code IDs.
CASE CID_ACTIVATE_RE_AND_RC_MISSIONS
Execute_Activate_RE_And_RC_Missions()
BREAK
CASE CID_ACTIVATE_RE_BLOCK_POST_LAMAR1
Execute_Activate_REs_Post_Lamar1()
BREAK
CASE CID_ACTIVATE_RE_BLOCK_POST_TREV1
Execute_Activate_REs_Post_Trevor1()
BREAK
CASE CID_ACTIVATE_RE_BLOCK_POST_TREV2
Execute_Activate_REs_Post_Trevor2()
BREAK
CASE CID_ACTIVATE_RE_BLOCK_POST_TREV3
Execute_Activate_REs_Post_Trevor3()
BREAK
CASE CID_ACTIVATE_RE_SIMEON_YETARIAN
Execute_Activate_RE_Simeon_Yetarian()
BREAK
// Shop activation code IDs.
CASE CID_ACTIVATE_SHOP_BARBERS
Execute_Activate_Shop_Barbers()
BREAK
CASE CID_ACTIVATE_SHOP_CLOTHES_AMB
Execute_Activate_Shop_Clothes_Amb()
BREAK
CASE CID_ACTIVATE_SHOP_CARMOD
Execute_Activate_Shop_Carmod(0)
BREAK
CASE CID_CARMOD_UNLOCK_STAGE_1
Execute_Activate_Shop_Carmod(1)
BREAK
CASE CID_CARMOD_UNLOCK_STAGE_2
Execute_Activate_Shop_Carmod(2)
BREAK
CASE CID_CARMOD_UNLOCK_STAGE_3
Execute_Activate_Shop_Carmod(3)
BREAK
CASE CID_ACTIVATE_GUNSHOP_AND_RANGE
Execute_Activate_Gunshop_And_Range()
BREAK
CASE CID_SHOOTING_RANGE_HELP
Execute_Shooting_Range_Help()
BREAK
// Player reset flow code IDs.
CASE CID_RESET_PLAYER_VARIATION_MICHAEL
Execute_Reset_Player_Variation(CHAR_MICHAEL)
BREAK
CASE CID_RESET_PLAYER_VARIATION_FRANKLIN
Execute_Reset_Player_Variation(CHAR_FRANKLIN)
BREAK
CASE CID_RESET_PLAYER_VARIATION_TREVOR
Execute_Reset_Player_Variation(CHAR_TREVOR)
BREAK
// Misc flow code IDs.
CASE CID_START_EMAILS
Execute_Start_Emails()
BREAK
CASE CID_STRETCH_TEXT_SENT
Execute_Stretch_Text_Sent()
BREAK
CASE CID_QUEUE_BAGGER_TEXT_AND_UNLOCK_YETARIAN
Execute_Queue_Bagger_Unlock_Text()
BREAK
CASE CID_AGENCY_HEIST_CALLS_COMPLETE
Execute_Agency_Heist_Calls_Complete()
BREAK
CASE CID_FRANKLIN_UNLOCK_BAGGER
Execute_Franklin_Unlock_Bagger()
BREAK
CASE CID_FRANKLIN_UNLOCK_HILLS_SAVEHOUSE
Execute_Franklin_Unlock_Hills_Savehouse()
BREAK
CASE CID_FAMILY_SETUP_CARSTEAL4
Set_Current_Event_For_FamilyMember(FM_FRANKLIN_LAMAR, FAMILY_MEMBER_BUSY)
Set_Current_Event_For_FamilyMember(FM_FRANKLIN_STRETCH, FAMILY_MEMBER_BUSY)
BREAK
CASE CID_FAMILY_CLEANUP_CARSTEAL4
Set_Current_Event_For_FamilyMember(FM_FRANKLIN_LAMAR, NO_FAMILY_EVENTS)
Set_Current_Event_For_FamilyMember(FM_FRANKLIN_STRETCH, NO_FAMILY_EVENTS)
BREAK
CASE CID_DOCKS_PRE_HEIST_TEXTS_COMPLETE
Execute_Docks_Pre_Heist_Texts_Complete()
BREAK
CASE CID_FBI_3_CALLS_COMPLETE
Execute_FBI3_Calls_Complete()
BREAK
CASE CID_FBI_4_CALLS_COMPLETE
Execute_FBI4_Calls_Complete()
BREAK
CASE CID_TEXT_ASS1_REMINDER
Execute_text_ass1_reminder()
BREAK
CASE CID_ASS1_REMINDER_DONE
Execute_ASS1_REMINDER_DONE()
BREAK
CASE CID_ASS1_UNLOCKED
Execute_ASS1_UNLOCKED()
BREAK
CASE CID_AGENCY_HEIST_PREP_CALLS_DONE
Execute_Agency_Heist_Prep_Calls_Done()
BREAK
CASE CID_CHOP_CALL_COMPLETE
Execute_Chop_Unlock_Call_Complete()
BREAK
CASE CID_MIC4_COMMS_COMPLETE
Execute_Michael4_Texts_Complete()
BREAK
CASE CID_TAXI_HAILING_DISABLE
DISABLE_TAXI_HAILING(TRUE)
BREAK
CASE CID_TAXI_HAILING_ENABLE
DISABLE_TAXI_HAILING(FALSE)
BREAK
CASE CID_ACTIVATE_HELIPAD_SAVE_GARAGES
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HELIPAD_MICHAEL, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HELIPAD_FRANKLIN, TRUE)
BREAK
CASE CID_ACTIVATE_MARINA_SAVE_GARAGES
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_MARINA_MICHAEL, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_MARINA_FRANKLIN, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_MARINA_TREVOR, TRUE)
BREAK
CASE CID_ACTIVATE_HANGAR_SAVE_GARAGES
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HANGAR_MICHAEL, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HANGAR_FRANKLIN, TRUE)
//SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HANGAR_TREVOR, TRUE) // Trevor no longer buys this one
BREAK
CASE CID_ACTIVATE_CAR_SAVE_GARAGES
ADD_HELP_TO_FLOW_QUEUE("AM_H_GARAGEP", FHP_MEDIUM, 0)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_CAR_MICHAEL, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_CAR_FRANKLIN, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_CAR_TREVOR, TRUE)
BREAK
CASE CID_FLASH_RANDOM_CHAR_BLIPS
Execute_Flash_Random_Char_Blips()
BREAK
CASE CID_FLASH_RANDOM_EVENT_BLIP
Execute_Flash_Random_Event_Blip()
BREAK
CASE CID_FLASH_SEA_RACE_BLIP
Execute_Flash_Sea_Race_Blip()
BREAK
CASE CID_LAMAR_TREVOR_FRIEND_UNLOCK
Execute_Lamar_Trevor_Friend_Unlock()
BREAK
CASE CID_MICHAEL_ADD_MARTIN_CONTACT
Execute_michael_Add_martin_Contact()
BREAK
CASE CID_TREVOR_ADD_MARTIN_CONTACT
Execute_Trevor_Add_martin_Contact()
BREAK
CASE CID_TREVOR_ADD_PATRICIA_CONTACT
Execute_Trevor_Add_Patricia_Contact()
BREAK
CASE CID_UNLOCK_AIR_VEHICLE_PARACHUTE
Execute_Unlock_Air_Vehicle_Parachute()
BREAK
CASE CID_UNLOCK_WATER_VEHICLE_SCUBA_GEAR
Execute_Unlock_Water_Vehicle_Scuba_Gear()
BREAK
CASE CID_UNLOCK_LIFEHACK_CREW
Execute_Unlock_Lifehack_Crew_Member()
BREAK
CASE CID_UNLOCK_CHEF_CREW
Execute_Unlock_Chef_Crew_Member()
BREAK
CASE CID_EMAIL_HEIST_MONEY_JEWEL
Execute_Jewel_heist_email()
BREAK
CASE CID_CREDIT_HEIST_MONEY_JEWEL
Execute_Credit_Heist_Money_Jewel()
BREAK
CASE CID_CREDIT_HEIST_MONEY_RURAL
Execute_Credit_Heist_Money_Rural()
BREAK
CASE CID_FRANK_AGENCY_EMAIL
Execute_Frank_email_agency_heist()
BREAK
CASE CID_CREDIT_HEIST_MONEY_AGENCY
Execute_Credit_Heist_Money_agency()
BREAK
CASE CID_SEND_FINALE_HEIST_EMAIL
execute_CID_SEND_FINALE_HEIST_EMAIL()
BREAK
CASE CID_CREDIT_HEIST_MONEY_FINALE
Execute_Credit_Heist_Money_Finale()
BREAK
CASE CID_FAM5_JIMMYTAKE
Execute_Fam5_JimmyTake()
UNLOCK_RADIO_STATION_TRACK_LIST("RADIO_16_SILVERLAKE", "MIRRORPARK_LOCKED")
SET_BIT(g_savedGlobals.sFlowCustom.spInitBitset, SP_INIT_UNLOCK_SHINE_A_LIGHT)
BREAK
CASE CID_ME_AMANDA_FAIL_MONEY_CHECK
Execute_ME_Amanda_Fail_Money_Check()
BREAK
CASE CID_ME_JIMMY_FAIL_MONEY_CHECK
Execute_ME_Jimmy_Fail_Money_Check()
BREAK
CASE CID_ME_TRACEY_FAIL_MONEY_CHECK
Execute_ME_Tracey_Fail_Money_Check()
BREAK
CASE CID_AUTO_SWITCH_FRANKLIN_AH2
Execute_Auto_Switch_Franklin_AH2()
BREAK
CASE CID_TREV2_OSCAR_PAY_TREVOR
Execute_Trev2_Oscar_Pay_Trevor()
BREAK
CASE CID_UNLOCK_SHOPS_POST_LESTER_1A
Execute_Unlock_Shops_Post_Lester_1A()
Execute_Activate_RE_Simeon_Yetarian()
BREAK
CASE CID_RURAL_HEIST_PREP_CALLS_DONE
Execute_Rural_Heist_Prep_Calls_Done()
BREAK
CASE CID_INITIALISE_BANK_DATA
BANK_INITIALISE_STARTING_BALANCES(TRUE)
BREAK
CASE CID_INITIALISE_STAT_OFFSETS
Execute_Initialise_Player_Stat_Offsets()
BREAK
CASE CID_ACTIVATE_CABLECARS
Execute_Activate_Cablecars()
BREAK
CASE CID_ACTIVATE_CARWASHES
Execute_Activate_Carwashes()
BREAK
CASE CID_ACTIVATE_FAIRGROUND
Execute_Activate_Fairground()
BREAK
CASE CID_UNLOCK_SUBMERSIBLE
Execute_Unlock_Submersible()
BREAK
CASE CID_UNLOCK_CREW_PRE_RURAL_HEIST
Execute_Unlock_Crew_Pre_Rural_Heist()
BREAK
CASE CID_UNLOCK_CREW_PRE_AGENCY_HEIST
Execute_Unlock_Crew_Pre_Agency_Heist()
BREAK
CASE CID_UNLOCK_CREW_PRE_FINALE_HEIST
Execute_Unlock_Crew_Pre_Finale_Heist()
BREAK
CASE CID_UNLOCK_LOST_HANGAR_POST_TREV2
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY, TRUE)
SET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HELIPAD_TREVOR_COUNTRY, VEHGEN_S_FLAG_ACQUIRED, TRUE)
SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WEB_HANGAR_TREVOR, TRUE)
SET_VEHICLE_GEN_SAVED_FLAG_STATE(VEHGEN_WEB_HANGAR_TREVOR, VEHGEN_S_FLAG_ACQUIRED, TRUE)
BREAK
CASE CID_UNLOCK_LOST_HANGAR_TEXT
Execute_highlight_lost_hanger()
BREAK
CASE CID_UNLOCK_JEWEL_HEIST_OUTFITS
Execute_Unlock_Jewel_Heist_Outfits()
BREAK
CASE CID_SEND_BIG_SCORE_PREPC_EMAIL
Execute_Send_Big_Score_PrepC_Email()
BREAK
CASE CID_BIG_SCORE_PREPC_EMAIL_SENT
Execute_Big_Score_PrepC_Email_Sent()
BREAK
CASE CID_BIG_SCORE_PREPA_COMPLETED
Execute_Big_Score_Prep_A_Completed()
BREAK
CASE CID_BIG_SCORE_PREPB_COMPLETED
Execute_Big_Score_Prep_B_Completed()
BREAK
CASE CID_BIG_SCORE_PREPC_COMPLETED
Execute_Big_Score_Prep_C_Completed()
BREAK
CASE CID_BIG_SCORE_PREPD_COMPLETED
Execute_Big_Score_Prep_D_Completed()
BREAK
CASE CID_BIG_SCORE_PREPE_COMPLETED
Execute_Big_Score_Prep_E_Completed()
BREAK
CASE CID_BIG_SCORE_PREP_PART1_CALLS_DONE
Execute_Big_Score_Prep_Part1_Calls_Done()
BREAK
CASE CID_BIG_SCORE_PREP_GAUNT1_CALL_DONE
Execute_BIG_SCORE_PREP_GAUNT1_CALL_DONE()
BREAK
CASE CID_BIG_SCORE_PREP_GAUNT2_CALL_DONE
Execute_BIG_SCORE_PREP_GAUNT2_CALL_DONE()
BREAK
CASE CID_BIG_SCORE_PREP_PART2_CALLS_DONE
Execute_Big_Score_Prep_Part2_Calls_Done()
BREAK
CASE CID_BIG_SCORE_PREP_PART3_CALLS_DONE
Execute_Big_Score_Prep_Part3_Calls_Done()
BREAK
CASE CID_POST_PROLOGUE_FRANKLIN_POS_CHECK
Execute_Post_Prologue_Franklin_Position_Check()
BREAK
CASE CID_UNLOCK_TATTOO_SHOPS_POST_TREV1
Execute_Unlock_Tattoo_Shops_Post_Trevor1()
BREAK
CASE CID_FAST_TRACK_BZ_GAS_PREP_UNLOCK
Execute_Fast_Track_BZ_Gas_Prep_Unlock()
BREAK
CASE CID_UNLOCK_BZ_GAS_PREP
Execute_Unlock_BZ_Gas_Prep()
BREAK
//CASE CID_POST_DOCKS_PREP1
// Execute_Post_Docks_Prep1()
//BREAK
CASE CID_FAST_TRACK_JIMMY_EVENT
Execute_Fast_Track_Jimmy_Event()
BREAK
CASE CID_FAST_TRACK_TRAIN_PREP_UNLOCK
Execute_Fast_Track_Train_Prep_Unlock()
BREAK
CASE CID_FAST_TRACK_DOCKS_HEIST_UNLOCK
Execute_Fast_Track_Docks_Heist_Unlock()
BREAK
CASE CID_FAMILY1_FRANKLIN_GATE_UNLOCK
Execute_Family1_Franklin_Gate_Unlock()
BREAK
CASE CID_UNLOCK_EXILE1_PICKUPS
Execute_Unlock_Exile1_Pickups()
BREAK
CASE CID_UNLOCK_LAMAR_1
Execute_Unlock_Lamar_1()
BREAK
CASE CID_SET_LONG_AMANDA_TIMER
Execute_Set_Long_Amanda_Timer()
BREAK
CASE CID_SET_LONG_JIMMY_TIMER
Execute_Set_Long_Jimmy_Timer()
BREAK
CASE CID_SET_LONG_TRACEY_TIMER
Execute_Set_Long_Tracey_Timer()
BREAK
CASE CID_SET_LONG_LESTER_TIMER
Execute_Set_Long_lester_Timer()
BREAK
CASE CID_QUEUE_MIKE_DEAD_JIMMY_CALL2
Execute_Queue_Mike_Dead_Jimmy_Call2()
BREAK
CASE CID_UNLOCK_END_GAME_OUTFITS
Execute_Unlock_End_Game_Outfits()
BREAK
CASE CID_HEIST_CREW_UNLOCKED_HELP_SEEN
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_HEIST_CREW_UNLOCKED)
BREAK
CASE CID_DEACTIVATE_MICHAEL_TENNIS
Execute_Set_Michael_Tennis_Active(FALSE)
BREAK
CASE CID_REACTIVATE_MICHAEL_TENNIS
Execute_Set_Michael_Tennis_Active(TRUE)
BREAK
CASE CID_DEACTIVATE_EXILE_BLIPS
Execute_Set_Exile_Blips_Active(FALSE)
BREAK
CASE CID_REACTIVATE_EXILE_BLIPS
Execute_Set_Exile_Blips_Active(TRUE)
BREAK
CASE CID_RANDOM_EVENT_HELP_DISPLAYED
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_RE_ENCOUNTER)
BREAK
CASE CID_RE_STAT_BOOST_HELP_DISPLAYED
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_RE_STAT_BOOSTS)
BREAK
CASE CID_AFFECT_STOCKS_HELP_DISPLAYED
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_AFFECT_STOCKS)
BREAK
CASE CID_DISABLE_LOST_SCENARIO_GROUP
Execute_Set_Lost_Scenario_Group_Active(FALSE)
BREAK
CASE CID_ENABLE_LOST_SCENARIO_GROUP
Execute_Set_Lost_Scenario_Group_Active(TRUE)
BREAK
CASE CID_MARTIN1_CALLS_DONE
Execute_Martin1_Calls_Done()
BREAK
CASE CID_QUEUE_SOL1_CALL_TO_UNLOCK_MARTIN1
Execute_Queue_Sol1_Call_To_Unlock_Martin1()
BREAK
CASE CID_QUEUE_CAR2_CALL_TO_UNLOCK_MARTIN1
Execute_Queue_Car2_Call_To_Unlock_Martin1()
BREAK
CASE CID_CANCEL_AMANDA_MICHAEL_EVENT
Execute_Cancel_Amanda_Michael_Event()
BREAK
CASE CID_CAR1TEXT_UNLOCK
Execute_Cid_Car1text_Unlock()
BREAK
CASE CID_EXTEND_PATRICIA_CALL_TIMERS
Execute_Extend_Patricia_Call_Timers()
BREAK
CASE CID_UNLOCK_AGENCY_HEIST_2
SET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_HEIST_AGENCY_2_UNLOCKED, TRUE)
BREAK
CASE CID_MAKE_RE_BURIAL_PAYMENT
Execute_Make_RE_Burail_Payment()
BREAK
CASE CID_EXILE_INCREASE_M_WARN
Execute_exile_increase_m_warn()
BREAK
CASE CID_EXILE_INCREASE_T_WARN
Execute_exile_increase_t_warn()
BREAK
CASE CID_CLEANUP_FRAN_HOUSE_POST_ARM1
Execute_Cleanup_Franklin_House_Post_Arm1()
BREAK
CASE CID_BLOCK_FRANKLIN_MISSIONS_POST_TREV1
Execute_Block_Franklin_Missions_Post_Trev1()
BREAK
CASE CID_GIVE_NG_PREORDER_REWARD
Execute_Give_NG_Preorder_Reward()
BREAK
#IF IS_JAPANESE_BUILD
CASE CID_GIVE_NG_JP_PREORDER_REWARD
Execute_Give_Ng_Jp_Preorder_Reward()
BREAK
#ENDIF
// Random Char activation code IDs
CASE CID_ABIGAIL1_FOUND_SUB_WRECKAGE
Execute_Abigail1_Found_Sub_Wreckage()
BREAK
CASE CID_BARRY3_SEND_TEXT
Execute_Barry3_Send_Text()
BREAK
CASE CID_BARRY3_TEXT_RECEIVED
Execute_Barry3_Text_Received()
BREAK
CASE CID_BARRY4_SEND_TEXT
Execute_Barry4_Send_Text()
BREAK
CASE CID_BARRY4_TEXT_RECEIVED
Execute_Barry4_Text_Received()
BREAK
CASE CID_DREYFUSS1_COMPLETE_LETTER_SCRAPS
Execute_Dreyfuss1_Complete_Letter_Scraps()
BREAK
CASE CID_EPSILON_6_TEXT_RECIEVED
Execute_Epsilon_6_Text_Received()
BREAK
CASE CID_EXTREME2_ACQUIRE_OUTFIT
Execute_Extreme2_Acquire_Outfit()
BREAK
CASE CID_EXTREME2_DOM_TEXT_RECEIVED
Execute_Extreme2_Dom_Text_Received()
BREAK
CASE CID_EXTREME3_SEND_DOM_TEXT
Execute_Extreme3_Send_Dom_Text()
BREAK
CASE CID_EXTREME3_DOM_TEXT_RECEIVED
Execute_Extreme3_Dom_Text_Received()
BREAK
CASE CID_HUNTING1_SEND_TEXT
Execute_Hunting1_Send_Text()
BREAK
CASE CID_HUNTING1_TEXT_RECEIVED
Execute_Hunting1_Text_Received()
BREAK
CASE CID_JOSH1_SIGNS_DESTROYED
Execute_Josh1_Signs_Destroyed()
BREAK
CASE CID_NIGEL1_SEND_EMAIL
Execute_Nigel1_Send_Email()
BREAK
CASE CID_NIGEL1_EMAIL_RECEIVED
Execute_Nigel1_Email_Received()
BREAK
CASE CID_OMEGA1_COMPLETE_SPACESHIP_PARTS
Execute_Omega1_Complete_Spaceship_Parts()
BREAK
CASE CID_PAPARAZZO1_SEND_WILDLIFE_EMAIL
Execute_Paparazzo1_Send_Wildlife_Email()
BREAK
CASE CID_PAPARAZZO1_EMAIL_RECEIVED
Execute_Paparazzo1_Email_Received()
BREAK
CASE CID_PAPARAZZO3_SEND_TEXT
Execute_Paparazzo3_Send_Text()
BREAK
CASE CID_PAPARAZZO3_TEXT_RECEIVED
Execute_Paparazzo3_Text_Received()
BREAK
CASE CID_TONYA3_SEND_TEXT
Execute_Tonya3_Send_Text()
BREAK
CASE CID_TONYA3_TEXT_RECEIVED
Execute_Tonya3_Text_Received()
BREAK
CASE CID_TONYA4_SEND_TEXT
Execute_Tonya4_Send_Text()
BREAK
CASE CID_TONYA4_TEXT_RECEIVED
Execute_Tonya4_Text_Received()
BREAK
CASE CID_UNLOCK_NEXT_STREET_RACE
Execute_Unlock_Next_Street_Race()
BREAK
CASE CID_DEACTIVATE_RANDOM_CHARS_MICHAEL
Execute_Deactivate_Random_Chars_Michael()
BREAK
CASE CID_DEACTIVATE_RANDOM_CHARS_TREVOR
Execute_Deactivate_Random_Chars_Trevor()
BREAK
//stock event CIDs
CASE CID_STOCK_EVENT_LESTER1
Execute_Stock_Event_Lester1()
BREAK
CASE CID_STOCK_EVENT_ASSASSIN1
Execute_Stock_Event_Assassin1()
BREAK
CASE CID_STOCK_EVENT_ASSASSIN2
Execute_Stock_Event_Assassin2()
BREAK
CASE CID_STOCK_EVENT_ASSASSIN3
Execute_Stock_Event_Assassin3()
BREAK
CASE CID_STOCK_EVENT_ASSASSIN4
Execute_Stock_Event_Assassin4()
BREAK
CASE CID_STOCK_EVENT_ASSASSIN5
Execute_Stock_Event_Assassin5()
BREAK
CASE CID_STOCK_EVENT_RCHITCH1
Execute_Stock_Event_RCHitch1()
BREAK
// Random event completion CCIDs
CASE CID_RE_CARSTEAL2_REWARD
Execute_CarSteal2_Reward()
BREAK
CASE CID_RE_RESUCE_HOSTAGE_REWARD
Execute_resuce_hostage_Reward()
BREAK
CASE CID_RE_BIKE_THEFT_REWARD
Execute_bike_theft_Reward()
BREAK
DEFAULT
SWITCH(INT_TO_ENUM(CC_CodeID, index))
CASE CID_HOSPITAL_CHARGE_RH
Execute_Hospital_Charge_RH()
BREAK
CASE CID_HOSPITAL_CHARGE_SC
Execute_Hospital_Charge_SC()
BREAK
CASE CID_HOSPITAL_CHARGE_DT
Execute_Hospital_Charge_DT()
BREAK
CASE CID_HOSPITAL_CHARGE_SS
Execute_Hospital_Charge_SS()
BREAK
CASE CID_HOSPITAL_CHARGE_PB
Execute_Hospital_Charge_PB()
BREAK
CASE CID_TREVOR_UNLOCK_BLAZER3
Execute_Trevor_Unlock_Blazer3()
BREAK
CASE CID_FBI4_P3_DONE_REMINDER
CANCEL_COMMUNICATION(TEXT_FIB4_P3_M_REMINDER)
CANCEL_COMMUNICATION(TEXT_FIB4_P3_FT_REMINDER)
BREAK
CASE CID_CAR3_REM_DONE
CANCEL_COMMUNICATION(TEXT_CAR3_F_REM)
CANCEL_COMMUNICATION(TEXT_CAR3_MT_REM)
BREAK
//Called after Michael 1 to stop Trevor replying
//to Brad's emails now that he knows he's dead
CASE CID_END_BRAD_EMAIL_THREAD
END_EMAIL_THREAD(ENUM_TO_INT(BRAD_EMAIL_TRV1))
END_EMAIL_THREAD(ENUM_TO_INT(BRAD_EMAIL_FIB1))
BREAK
CASE CID_COM_CHECK_VISITED_SITE
Execute_Check_COM_Visited_Site()
BREAK
CASE CID_DIRECTOR_HELP_STORY_SEEN
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_DIRECTOR_MODE_STORY)
BREAK
CASE CID_DIRECTOR_HELP_HEISTS_SEEN
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_DIRECTOR_MODE_HEISTS)
BREAK
CASE CID_DIRECTOR_HELP_SPECIAL_SEEN
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_DIRECTOR_MODE_SPECIAL)
BREAK
CASE CID_DIRECTOR_HELP_ANIMALS_SEEN
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_DIRECTOR_MODE_ANIMALS)
BREAK
//Debug only routines.
#IF IS_DEBUG_BUILD
CASE CID_DEBUG_COMPLETE_TONYA1
Execute_Debug_Complete_Tonya1()
BREAK
CASE CID_DEBUG_UNLOCK_WILDLIFE_PHOTO
Execute_Debug_Unlock_Wildlife_Photo()
BREAK
CASE CID_DEBUG_UNLOCK_MONKEY_PHOTO_RE
Execute_Debug_Unlock_Monkey_Photo_RE()
// unlock all player character garages
SET_VEHICLE_GEN_SAVED_FLAG_STATE( VEHGEN_WEB_CAR_FRANKLIN, VEHGEN_S_FLAG_AVAILABLE, TRUE )
SET_VEHICLE_GEN_SAVED_FLAG_STATE( VEHGEN_WEB_CAR_FRANKLIN, VEHGEN_S_FLAG_ACQUIRED, TRUE )
SET_VEHICLE_GEN_SAVED_FLAG_STATE( VEHGEN_WEB_CAR_MICHAEL, VEHGEN_S_FLAG_AVAILABLE, TRUE )
SET_VEHICLE_GEN_SAVED_FLAG_STATE( VEHGEN_WEB_CAR_MICHAEL, VEHGEN_S_FLAG_ACQUIRED, TRUE )
SET_VEHICLE_GEN_SAVED_FLAG_STATE( VEHGEN_WEB_CAR_TREVOR, VEHGEN_S_FLAG_AVAILABLE, TRUE )
SET_VEHICLE_GEN_SAVED_FLAG_STATE( VEHGEN_WEB_CAR_TREVOR, VEHGEN_S_FLAG_ACQUIRED, TRUE )
BREAK
CASE CID_DEBUG_COMPLETE_MURDER_MYSTERY_PT1 // STAGE_CARVING_2
Execute_Debug_Unlock_Murder_Mystery( 0 )
BREAK
CASE CID_DEBUG_COMPLETE_MURDER_MYSTERY_PT2 // STAGE_CARVING_3
Execute_Debug_Unlock_Murder_Mystery( 1 )
BREAK
CASE CID_DEBUG_COMPLETE_MURDER_MYSTERY_PT3 // STAGE_CARVING_4
Execute_Debug_Unlock_Murder_Mystery( 2 )
BREAK
CASE CID_DEBUG_COMPLETE_MURDER_MYSTERY_PT4 // STAGE_SEA
Execute_Debug_Unlock_Murder_Mystery( 3 )
BREAK
CASE CID_DEBUG_COMPLETE_MURDER_MYSTERY_PT5 // STAGE_LETTER
Execute_Debug_Unlock_Murder_Mystery( 4 )
BREAK
CASE CID_DEBUG_COMPLETE_MURDER_MYSTERY_PT6 // STAGE_MINE
Execute_Debug_Unlock_Murder_Mystery( 5 )
BREAK
CASE CID_DEBUG_UNLOCK_BASEJUMPING
Execute_Debug_Unlock_Basejumping()
BREAK
CASE CID_DEBUG_UNLOCK_TRIATHLON
Execute_Debug_Unlock_Triathlons()
BREAK
CASE CID_DEBUG_UNLOCK_TRAFFICKING
Execute_Debug_Unlock_Trafficking()
BREAK
CASE CID_DEBUG_UNLOCK_HUNTING
Execute_Debug_Unlock_Hunting()
BREAK
CASE CID_DEBUG_GIVE_PREP_BOILER_SUITS
Execute_Debug_Give_Prep_Boiler_Suits()
BREAK
CASE CID_DEBUG_COMPLETE_FBI4_PREP3
Execute_Debug_Complete_FBI4_Prep3()
BREAK
CASE CID_DEBUG_COMPLETE_AGENCY_PREP2
Execute_Debug_Complete_Agency_Prep2()
BREAK
CASE CID_DEBUG_COMPLETE_FINALE_PREPE
Execute_Debug_Complete_Finale_PrepE()
BREAK
CASE CID_DEBUG_CANCEL_BS_HACKER_EMAILS
Execute_Debug_Cancel_Big_Score_Hacker_Emails()
BREAK
CASE CID_DEBUG_JEWEL_BOARD_DISPLAY_GROUPS_ON
Execute_Debug_Jewel_Board_Display_Groups_On()
BREAK
CASE CID_DEBUG_DOCKS_BOARD_DISPLAY_GROUPS_ON
Execute_Debug_Docks_Board_Display_Groups_On()
BREAK
CASE CID_DEBUG_RURAL_BOARD_DISPLAY_GROUPS_ON
Execute_Debug_Rural_Board_Display_Groups_On()
BREAK
CASE CID_DEBUG_AGENCY_BOARD_DISPLAY_GROUPS_ON
Execute_Debug_Agency_Board_Display_Groups_On()
BREAK
CASE CID_DEBUG_FINALE_BOARD_DISPLAY_GROUPS_ON
Execute_Debug_Finale_Board_Display_Groups_On()
BREAK
#ENDIF
ENDSWITCH
BREAK
ENDSWITCH
//Unflag this code ID now that it has been executed.
g_savedGlobals.sCodeControlData.bRunCodeID[index] = FALSE
CPRINTLN(DEBUG_CODEID, "Executed ",Get_Debug_String_For_Communication_Code_ID(INT_TO_ENUM(CC_CodeID, index)), ".")
ENDIF
ENDIF
ENDREPEAT
WAIT(0)
ENDWHILE
ENDSCRIPT