Skip to content

Instantly share code, notes, and snippets.

@jishanshaikh4
Last active August 21, 2022 18:50
Show Gist options
  • Save jishanshaikh4/d8613af911c755970ef255f22d0f4a49 to your computer and use it in GitHub Desktop.
Save jishanshaikh4/d8613af911c755970ef255f22d0f4a49 to your computer and use it in GitHub Desktop.
fakeMainOutput.sc
This file has been truncated, but you can view the full file.
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
// ****************************************PC SA Main Script********************************
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
SCRIPT_NAME MAIN //NEW MAIN
// ***************************************SETUP*********************************************
// *****************************************************************************************
DO_FADE 0 FADE_OUT
SHOW_UPDATE_STATS FALSE // Don't want to see updates at the beginning of a new game.
SET_TOTAL_NUMBER_OF_MISSIONS 0
SET_PROGRESS_TOTAL 0
SET_MISSION_RESPECT_TOTAL 0
SET_MAX_WANTED_LEVEL 6
SET_DEATHARREST_STATE OFF
SET_TIME_OF_DAY 08 00
// *****************************************CREATE PLAYER***********************************
VAR_INT player1 scplayer
REQUEST_COLLISION 2488.5623 -1666.8645
LOAD_SCENE 2488.5623 -1666.8645 13.3757 //LA
//LOAD_SCENE 2369.60 -1265.10 23.88
//CREATE_PLAYER 0 1500.02 -1656.27 14.10 player1 //LA Downtown square
//CREATE_PLAYER 0 -2030.9 161.5 27.8 player1 //SF
//CREATE_PLAYER 0 2198.7 1679.2 10.4 player1 //Vegas
// *****************************************SET UP STATS************************************
SET_FLOAT_STAT ENERGY 800.0
SET_FLOAT_STAT BODY_MUSCLE 50.0
SET_FLOAT_STAT FAT 200.0
SET_FLOAT_STAT DRIVING_SKILL 0.0
SET_INT_STAT CITIES_PASSED 0
SET_INT_STAT RESPECT 0
CREATE_PLAYER 0 2488.5623 -1666.8645 12.8757 player1 //LA hub
GOTO skip_create_player2
CREATE_PLAYER 1 2488.5623 -1666.8645 12.8757 player2
skip_create_player2:
DISPLAY_TIMER_BARS FALSE
//LA Gym
VAR_FLOAT statbikestamina_ctr
VAR_FLOAT statbikelowmuscle_ctr
VAR_FLOAT statbike_temp
VAR_FLOAT stattreadstamina_ctr
VAR_FLOAT stattreadlowmuscle_ctr
VAR_FLOAT stattread_temp
// ***************************************SET UP GANG THREATS*******************************
//VAR_INT grove_threatlist //grove gang (players gang in la1)
//VAR_INT flat_threatlist //flat gang
//VAR_INT nmex_threatlist //northside mex
//VAR_INT smex_threatlist //southside mex
//VAR_INT grove_decisions grove_group_decisions
//VAR_INT flat_decisions
//VAR_INT smex_decisions
//VAR_INT nmex_decisions
VAR_INT gf_game_timer Players_Group
//grove (player's gang for LA1 then enemy)
//GROVE STREET
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_LIKE PEDTYPE_GANG_GROVE PEDTYPE_PLAYER1
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_GROVE PEDTYPE_GANG_FLAT
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_GROVE PEDTYPE_GANG_NMEX
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_GROVE PEDTYPE_GANG_SMEX
//FLATS
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER1
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_GANG_GROVE
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_FLAT PEDTYPE_GANG_NMEX
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_FLAT PEDTYPE_GANG_SMEX
//NORTH MEXICANS
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_NMEX PEDTYPE_PLAYER1
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_NMEX PEDTYPE_GANG_GROVE
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_NMEX PEDTYPE_GANG_FLAT
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_NMEX PEDTYPE_GANG_SMEX
//SOUTH MEXICANS
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_SMEX PEDTYPE_PLAYER1
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_SMEX PEDTYPE_GANG_GROVE
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_SMEX PEDTYPE_GANG_FLAT
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_SMEX PEDTYPE_GANG_NMEX
//SAN FRAN
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_SFMEX PEDTYPE_GANG_VIET
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_SFMEX PEDTYPE_GANG_TRIAD
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_VIET PEDTYPE_GANG_SFMEX
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_DISLIKE PEDTYPE_GANG_TRIAD PEDTYPE_GANG_SFMEX
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_TRIAD PEDTYPE_GANG_VIET
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_VIET PEDTYPE_GANG_TRIAD
GET_PLAYER_GROUP Player1 Players_Group
//SET_GROUP_SEPARATION_RANGE Players_Group 30.0
// *****************************************************************************************
GET_PLAYER_CHAR player1 scplayer
SET_CAMERA_BEHIND_PLAYER
SET_CHAR_HEADING scplayer 262.0
//ADD_SCORE Player1 350 //TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LOAD_AND_LAUNCH_MISSION initial.sc
wait 0
LOAD_AND_LAUNCH_MISSION initial2.sc
// *************************************CONSTANTS*******************************************
//--- GF CONSTANTS
CONST_INT COOCHIE 0
CONST_INT MICHELLE 1
CONST_INT KYLIE 2
CONST_INT BARBARA 3
CONST_INT SUZIE 4
CONST_INT MILLIE 5
CONST_INT COOCHIE_NOT_AT_HOME 10
CONST_INT MICHELLE_NOT_AT_HOME 11
CONST_INT KYLIE_NOT_AT_HOME 12
CONST_INT BARBARA_NOT_AT_HOME 13
CONST_INT SUZIE_NOT_AT_HOME 14
CONST_INT MILLIE_NOT_AT_HOME 15
CONST_INT MICHELLE_BONUS_ACTIVE 21
CONST_INT KYLIE_BONUS_ACTIVE 22
CONST_INT BARBARA_BONUS_ACTIVE 23
CONST_INT SUZIE_BONUS_ACTIVE 24
CONST_INT GF_CHEAT_MODE_ON 31
//--- DATE REPORT CONSTS
CONST_INT DATE_IN_PROGRESS 1
CONST_INT DATE_WAS_SUCCESS 2
CONST_INT PLAYER_AGREES_TO_SEX 3
CONST_INT SEX_WAS_GOOD 4
CONST_INT SEX_IN_PROGRESS 5
CONST_INT GIRL_IS_BACK_AT_HOME 6
CONST_INT EAT_OUT 11
CONST_INT DRIVE 12
CONST_INT DANCE 13
CONST_INT KINKY_SEX 14
CONST_INT GIRL_DRIVE 15
CONST_INT MEETING_IN_PROGRESS 20
CONST_INT MEET_TOMORROW 21
CONST_INT FASTDATE_ON 26
CONST_INT CHEAT_EAT_OUT 27
CONST_INT CHEAT_DRIVE 28
CONST_INT CHEAT_DANCE 29
CONST_INT CHEAT_KINKY_SEX 30
CONST_INT CHEAT_GIRL_DRIVE 31
//--- AGENT CONSTS
CONST_INT APPOINTMENT_ON_FOR_COOCHIE 0
CONST_INT APPOINTMENT_ON_FOR_MICHELLE 1
CONST_INT APPOINTMENT_ON_FOR_KYLIE 2
CONST_INT APPOINTMENT_ON_FOR_BARBARA 3
CONST_INT APPOINTMENT_ON_FOR_SZUIE 4
CONST_INT APPOINTMENT_ON_FOR_MILLIE 5
CONST_INT MOBILE_CALL_ANSWERED 10
CONST_INT MOBILE_CALL_SCRIPT_RUNNING 11
CONST_INT MOBILE_INACTIVE 20
CONST_INT TIME_FOR_CALL 21
CONST_INT TIME_FOR_ANSWER 22
CONST_INT TIME_FOR_DATE 23
CONST_INT MOBILE_DUMPED 24
CONST_INT KEEP_THIS_IDX 25
CONST_INT MISSION_CLEANUP_DONE 31
//--- LIKES ON DATE CONSTS
// FOOD & DRINK
CONST_INT LIKES_JUNK_FOOD 1
CONST_INT LIKES_DINERS 2
CONST_INT LIKES_BARS 3
CONST_INT LIKES_DONUTS 4
CONST_INT LIKES_SWANK_PLACES 5
// DRIVING
CONST_INT LIKES_STUNTS 11
CONST_INT LIKES_TO_GO_FAST 12
CONST_INT LIKES_TO_CRUISE 13
CONST_INT LIKES_PARKING_ROMANTIC 14
CONST_INT LIKES_RICH_ZONES 15
CONST_INT LIKES_GANG_ZONES 16
CONST_INT LIKES_PARK_BEACH_ZONES 17
CONST_INT LIKES_DESERT_COUNTRY_ZONES 18
CONST_INT LIKES_SHOPPING_ZONES 19
CONST_INT LIKES_ENTERTAINMENT_ZONES 20
// UNIQUE
CONST_INT LIKES_GANG_FIGHTS 21
CONST_INT LIKES_TO_DRIVE 22
CONST_INT LIKES_KINKY_SEX 23
CONST_INT LIKES_TO_CAUSE_ACCIDENTS_KILL_PEDS 24
// MISC.
CONST_INT SINGS_ALONG_RADIO 26
CONST_INT LIKES_SNOGGING_IN_PUBLIC 27
CONST_INT LIKES_SEX_IN_PUBLIC 28
CONST_INT LIKES_TO_BE_HIT_BY_PLAYER 29
CONST_INT LIKES_FLYING 30
CONST_INT LIKES_BOATING 31
//--- LIKES PLAYER TRAITS CONSTS
// PHYSIQUE
CONST_INT FIT 1
CONST_INT OBESE 2
CONST_INT NORMAL 3
// CAR
CONST_INT CAR_NORMAL_POORFAMILY 11
CONST_INT CAR_EXECUTIVE_RICHFAMILY 12
CONST_INT CAR_UNIQUE_CAR 13
CONST_INT CAR_MOD_CAR 14
CONST_INT CAR_MOTORBIKE 15
CONST_INT CAR_COPCAR 16
CONST_INT CAR_AMBULANCE 17
CONST_INT CAR_CABBIE_TAXI 18
//--- DIARY OF BUSY HOURS
CONST_INT H_MIDNIGHT 0
CONST_INT H_2AM 2
CONST_INT H_4AM 4
CONST_INT H_6AM 6
CONST_INT H_8AM 8
CONST_INT H_10AM 10
CONST_INT H_NOON 12
CONST_INT H_2PM 14
CONST_INT H_4PM 16
CONST_INT H_6PM 18
CONST_INT H_8PM 20
CONST_INT H_10PM 22
CONST_INT D_SUN 23
CONST_INT D_MON 24
CONST_INT D_TUE 25
CONST_INT D_WED 26
CONST_INT D_THU 27
CONST_INT D_FRI 28
CONST_INT D_SAT 29
CONST_INT NEXT_FREE_DAY 31
//--- MOBILE PHONE PARAMETERS
CONST_INT CALL_DATE 1
CONST_INT CALL_DUMP 2
//--- MISSION SPECIFIC GF CONSTS
CONST_INT MILLIE_LIKES_PLAYER_REQUIRED_FOR_KEYCARD 35
// For wager UIs.
CONST_INT WAGER_WHITE 0
CONST_INT WAGER_GREEN 1
CONST_INT WAGER_BLUE 2
// *************************************VARIABLES*******************************************
//GENERAL
VAR_INT button_pressed mission_trigger_wait_time flag_cell_nation game_timer
VAR_INT LStickX LStickY RStickX RStickY been_in_a_bmx tucking_contact_blip launch_shit_for_debug_build
VAR_INT game_starts_from_scratch Return_cities_passed flag_dont_start_shooting_range
VAR_INT tag_percentage cj_vomits_for_menace trigger_phonecall_failed
VAR_INT recording emmets_shop_blip emmets_gun swim_stamina_check_main
VAR_INT hours minutes LA_hub_activity keycard_aquired_from_millie player_is_completely_safe player_is_completely_safe_for_mobile
VAR_INT weekday activate_mobile_phone played_scipted_airscript_cut
VAR_INT main_visible_area trigger_final_synd_mission
VAR_INT model_index trigger_scrash2_mission returned_respect
VAR_INT car car_class oddjob_help_flag girlfried_help_flag stealth_help_flag
VAR_INT f1_which_missions_are_open_flag voice_over_at_hub airstrip_contact_blip
VAR_INT stop_gargae_for_neil trigger_final_LA1_missions trigger_final_LA2_missions trigger_ice_cold_mission
VAR_INT intro_bmx intro_bmx_blip trucking_help_flag R3_player_car
VAR_INT cat_counter funeral_mission_finished showroom_contact_blip
VAR_INT add_all_ammu_blips
VAR_FLOAT distance player_x player_y player_z
VAR_FLOAT heading
VAR_FLOAT x y z
VAR_FLOAT on_footX on_footY on_footZ
VAR_FLOAT in_carX in_carY in_carZ
VAR_INT time_spent_roaming_countryside
time_spent_roaming_countryside = 0
VAR_INT time_player_spent_crime_free
time_player_spent_crime_free = 0
//HELP MESSAGE VARS
VAR_INT bike_help drive_by_help
VAR_INT print_first_help car_help_played
VAR_INT driving_test_passed pilot_test_passed
//ODDJOB VARS
VAR_INT flag_menace_buyfood courier_timer
VAR_INT flag_kickstart_passed_1stime
VAR_INT f1_the90_best_score f1_spinrightgo_best_score f1_spinleftgo_best_score f1_burnlapright_best_score f1_burnlapleft_best_score
VAR_INT f1_popcontrol_best_score f1_cityslicking_best_score f1_whiprightterminate_best_score f1_whipleftterminate_best_score f1_alleyoop_best_score
VAR_INT f1_wheelieweave_best_score f1_pittechnique_best_score f1_conecoilright_best_score f1_conecoilleft_best_score
VAR_INT f1_the180_best_score camera_secret_help
VAR_INT f1_the360_best_score
VAR_FLOAT one_sixteenth one_thirtysecond one_sixtyfourth //stuck_x stuck_y stuck_z
VAR_FLOAT coord_1_x coord_1_y coord_1_z coord_2_x coord_2_y coord_c1_x coord_c1_y coord_c1_z
VAR_INT wasted_help wanted_star_help // flag names
VAR_INT show_race_selection gym_contact_blip
VAR_INT stat_read_skill_temp chat_help1 chat_help1_flag
show_race_selection = FALSE
VAR_INT busted_help
CREATE_PICKUP INFO PICKUP_ONCE 2027.77 -1420.52 16.49 wasted_help1
CREATE_PICKUP INFO PICKUP_ONCE 1180.85 -1325.57 13.08 wasted_help2
CREATE_PICKUP INFO PICKUP_ONCE 1550.68 -1675.49 15.01 busted_help1
CREATE_PICKUP INFO PICKUP_ONCE 2431.17 -1668.75 13.04 chat_help1
// *************************************LOCATE BLOB VARIABLE STUFF****************************
VAR_INT blob_flag blob_flag_shop
// zero = false no blob displayed
// one = true blob is displayed
// before the loop set this flag tSo the way you want it displayed or nothing will happen
// *****************************************SPECIAL CHARACTERS********************************
// Cutscene stuff
VAR_INT cs_time // timer for cutscenes
VAR_INT big_smoke
VAR_INT sweet
VAR_INT ryder
VAR_INT cesar
VAR_INT mc_strap
VAR_INT big_smoke_car
VAR_INT sweet_car
VAR_INT ryder_car
VAR_FLOAT sweet_carX sweet_carY sweet_carZ sweet_carH
VAR_FLOAT ryder_carX ryder_carY ryder_carZ ryder_carH
VAR_INT truth
VAR_INT catalina
// ODD JOB VARIABLES**************************************************************************
VAR_INT flag_player_on_ambulance_mission // Ambulance Missions
VAR_INT flag_player_on_fire_mission // Fire Truck Missions
VAR_INT got_siren_help_before finaleB_played_first_time_round
VAR_INT flag_bmx_trigger flag_nrg500_trigger
VAR_INT current_Language
VAR_INT player2 p2 gym_at_beach
VAR_INT flag_hhiker_trigger flag_pimping_trigger
VAR_INT been_in_freight_before flag_player_on_freight_mission flag_player_on_pimp_mission// Freight Missions
VAR_INT ft_train_level race_debug
VAR_INT flag_player_on_burglary_mission // burglary mission
VAR_FLOAT LA_ShootX LA_ShootY LA_ShootZ
LA_ShootX = 292.33
LA_ShootY = -35.39
LA_ShootZ = 1000.50
race_debug = 0
// 4x4/carpark Missions
VAR_INT flag_player_on_menace_mission
VAR_INT opened_badlands_up opened_sanfran_up opened_vegas_up opened_desert_up opened_la2_up
VAR_INT flag_mtbike_trigger
// Kickstart
VAR_INT flag_kickstart_mission1_passed
// BMX variables
VAR_FLOAT bmx_1_x bmx_1_y bmx_1_z
// Taxi mission
VAR_INT taxi_passed, R3_mission_help, flag_taxiodd_mission_launched
VAR_INT done_taxi_help
//MOBILE PHONE
VAR_INT timer_mobile_start timer_mobile_now timer_mobile_diff
//RC HELI MISSION
VAR_INT stat_stamina_temp
//Courier
VAR_INT flag_courier_mission_passed
VAR_INT flag_courier_trigger
//Airrace
VAR_INT flag_airrace_mission_passed
//COASTGUARD MISSION
VAR_INT been_in_a_coastguard_before
// coastguard
VAR_INT flag_player_on_coastguard_mission
//coke cash courier
VAR_INT courier_type
// Cash Courier
courier_type = 1
// Coke Courier
courier_type = 2
// lowrider minigame
VAR_INT lowrider_mission_flag
VAR_INT lowrider_minigame_unlocked
lowrider_mission_flag = 0
lowrider_minigame_unlocked = 0 // gets unlocked after sweet 6
// *******************************************school variables*****************************************************
//people
VAR_INT dummy_car1 dummy_car2
VAR_INT instructor_car croupier_help
VAR_INT trafficcone_counter trafficcones[46]
//flags
VAR_INT mission_selection swimming_help
VAR_INT car_started
VAR_FLOAT instructor_car_speed instructor_car_heading
VAR_INT instructor_car_heading_int
VAR_INT car_timer lap_counter
VAR_FLOAT perfect_positionx perfect_positiony perfect_positionz perfect_heading players_distance_from_perfectpos
VAR_INT instructor_car_health dummy_car1_health dummy_car2_health total_instructor_car_health total_dummy_car1_health total_dummy_car2_health
VAR_INT heading_score position_score player_car_damage other_car_damage time_score overall_score total_car_damage
VAR_INT variablea variablec variabled
VAR_FLOAT variableb
VAR_FLOAT car_posx car_posy
VAR_FLOAT where_to_place_cones circle_start_x circle_start_y cone_coords_x cone_coords_y cone_coords_z cone_circle_radius
VAR_INT lap1_secs lap1_millisecs overall_lap1 lap2_secs lap2_millisecs overall_lap2 lap3_secs lap3_millisecs overall_lap3
VAR_INT lap4_secs lap4_millisecs overall_lap4 lap5_secs lap5_millisecs overall_lap5 overall_secs overall_millisecs
VAR_FLOAT finish_leftx finish_lefty finish_rightx finish_righty
VAR_FLOAT start_coordsx start_coordsy
VAR_FLOAT area_check1ax area_check1ay area_check1bx area_check1by area_check2ax area_check2ay area_check2bx area_check2by
VAR_FLOAT area_check3ax area_check3ay area_check3bx area_check3by area_check4ax area_check4ay area_check4bx area_check4by
VAR_INT instructor_car_dead_flag finished_watching_scores
VAR_FLOAT noticeboard_x noticeboard_y noticeboard_z
VAR_FLOAT camera_positionx camera_positiony camera_positionz
VAR_INT camera_position_int
// *******************************************RACES variables******************************************************
// AIR RACE VARIABLES
VAR_INT race1_best_position_airrace
VAR_INT race1_best_time_airrace
VAR_INT race2_best_position_airrace
VAR_INT race2_best_time_airrace
VAR_INT race3_best_position_airrace
VAR_INT race3_best_time_airrace
VAR_INT race4_best_position_airrace
VAR_INT race4_best_time_airrace
VAR_INT race5_best_position_airrace
VAR_INT race5_best_time_airrace
VAR_INT race6_best_position_airrace
VAR_INT race6_best_time_airrace
VAR_INT done_race1_progress_airrace done_race2_progress_airrace done_race3_progress_airrace
VAR_INT done_race4_progress_airrace done_race5_progress_airrace done_race6_progress_airrace
VAR_INT race_selection
race_selection = 0
// *******************************************GIRLS variables******************************************************
VAR_INT iGFSelfRespect[6] iGFLikesPlayer[6] iGFDesiredSexAppeal[6] iGFLikesPlayerTraits[6] // GF STATS
VAR_INT iGFLikesOnDate[6] iGFDiaryOfBusyHours[6] // MORE GF STATS
VAR_INT iGFidx //GF index for the arrays above, obviously no greater than 5
VAR_INT iDateReport iAgentFlags iPhoneState iCaller
VAR_INT iGFBonusPickupID[4] iGFHomeBlips[6]
VAR_TEXT_LABEL txtCurrZone // Zone string used a bit everywhere
VAR_INT iActiveGF // Public Bitfield to record active GFs.
//STATS*****************************************************************************************
VAR_FLOAT fatstat_gym
//BEACH
//CREATE_PICKUP bribe PICKUP_ON_STREET_SLOW 393.9 -60.2 11.5 beach_bribe1 //Not far from Construction Site behind some houses
// ***************************************MISSION VARS**********************************************
// Global variables for missions
DECLARE_MISSION_FLAG flag_player_on_mission
VAR_INT mod_garage1
VAR_INT flag_player_on_mission spray_help
VAR_INT flag_player_on_oddjob
VAR_INT total_saved_peds
VAR_INT weapon_shop1_blip
VAR_INT mod_garage_blip
VAR_INT wuzi
VAR_INT task_status
VAR_INT bcesar2_mission_flag
VAR_INT bcesar3_mission_flag
VAR_FLOAT chickX chickY chickZ
VAR_FLOAT shooter1X shooter1Y shooter1Z
VAR_FLOAT gravX gravY gravZ
VAR_FLOAT wheeloX wheeloY wheeloZ
VAR_FLOAT spaceX spaceY spaceZ
// LA1*************************************************
VAR_INT smoke_contact_blip sweet_contact_blip ryder_contact_blip strap_contact_blip
VAR_INT crash_contact_blip intro_contact_blip cesar_contact_blip intro_coords_blip
VAR_INT intro_blip_icon sweet_blip_icon ryder_blip_icon
VAR_INT crash_blip_icon smoke_blip_icon strap_blip_icon cesar_blip_icon
VAR_INT flag_intro_mission_counter spray_shop1 spray_shop2 spray_shop4
VAR_INT flag_sweet_mission_counter
VAR_INT flag_ryder_mission_counter
VAR_INT flag_smoke_mission_counter
VAR_INT flag_strap_mission_counter
VAR_INT flag_crash_mission_counter
VAR_INT flag_cesar_mission_counter
VAR_INT flag_la1fin1_mission_counter
VAR_FLOAT introX introY introZ
VAR_FLOAT sweetX sweetY sweetZ
VAR_FLOAT ryderX ryderY ryderZ
VAR_FLOAT smokeX smokeY smokeZ
VAR_FLOAT strapX strapY strapZ
VAR_FLOAT strap2X strap2Y strap2Z
VAR_FLOAT crashX crashY crashZ
VAR_FLOAT cesarX cesarY cesarZ
//BADLANDS*********************************************
VAR_INT cat_contact_blip bcrash_contact_blip bcesar_contact_blip truth_contact_blip
VAR_INT cat_blip_icon truth_blip_icon
VAR_INT flag_cat_mission_counter flag_catcutscene_counter
VAR_INT flag_truth_mission_counter
VAR_INT flag_bcesar_mission_counter
VAR_INT flag_bcrash_mission_counter
VAR_FLOAT bcrashX bcrashY bcrashZ
VAR_FLOAT truthX truthY truthZ
VAR_FLOAT truth2X truth2Y truth2Z
VAR_FLOAT bcesarX bcesarY bcesarZ
VAR_FLOAT catX[6] catY[6] catZ[6]
//SAN FRAN*********************************************
VAR_INT wuzi_contact_blip steal_contact_blip synd_contact_blip
VAR_INT zero_contact_blip trace_contact_blip[4] scrash_contact_blip garage_contact_blip
VAR_INT wuzi_blip_icon synd_blip_icon steal_blip_icon garage_blip_icon
VAR_INT trace_blip_icon zero_blip_icon trace_contact_blip2
VAR_INT flag_garage_mission_counter
VAR_INT flag_zero_mission_counter
VAR_INT flag_wuzi_mission_counter
VAR_INT flag_steal_mission_counter
VAR_INT flag_synd_mission_counter
VAR_INT flag_scrash_mission_counter
VAR_FLOAT garageX garageY garageZ
VAR_FLOAT zeroX zeroY zeroZ
VAR_FLOAT wuziX wuziY wuziZ
VAR_FLOAT stealX stealY stealZ
VAR_FLOAT syndX syndY syndZ
VAR_FLOAT traceX[4] traceY[4] traceZ[4]
VAR_FLOAT scrashX scrashY scrashZ
VAR_FLOAT testsX testsY testsZ
//VEGAS************************************************
VAR_INT desert_contact_blip desert2_contact_blip casino_contact_blip vcrash_contact_blip doc_contact_blip heist_contact_blip
VAR_INT desert_blip_icon desert2_blip_icon casino_blip_icon doc_blip_icon heist_blip_icon pilot_blip_icon pilot_contact_blip
VAR_INT flag_desert_mission_counter Theheist_blip_icon Theheist_contact_blip
VAR_INT dschool_contact_blip
VAR_INT flag_casino_mission_counter
VAR_INT flag_vcrash_mission_counter
VAR_INT flag_doc_mission_counter
VAR_INT flag_heist_mission_counter
VAR_FLOAT desertX desertY desertZ
VAR_FLOAT desert2X desert2Y desert2Z
VAR_FLOAT casinoX casinoY casinoZ
VAR_FLOAT TheheistX TheheistY TheheistZ
VAR_FLOAT vcrashX vcrashY vcrashZ
VAR_FLOAT docX docY docZ
VAR_FLOAT heistX heistY heistZ
//LA2**************************************************
VAR_INT mansion_contact_blip grove_contact_blip
VAR_INT mansion_blip_icon grove_blip_icon
VAR_INT flag_mansion_mission_counter
VAR_INT flag_grove_mission_counter quarry_contact_blip
VAR_INT flag_riot_mission_counter
VAR_INT boat_school_blip got_gimp_suit
VAR_INT bike_school_blip
VAR_FLOAT mansionX mansionY mansionZ
VAR_FLOAT groveX groveY groveZ
//ODDJOBS
VAR_FLOAT RouletteX RouletteY RouletteZ
VAR_FLOAT otbX otbY otbZ
VAR_FLOAT blackjackX blackjackY blackjackZ
VAR_FLOAT driving_schoolx driving_schooly driving_schoolz
VAR_FLOAT basketballx basketbally basketballz
VAR_FLOAT limox limoy limoz
VAR_FLOAT directorx directory directorz
VAR_FLOAT valetx valety valetz
VAR_FLOAT banditx bandity banditz
VAR_FLOAT pilotx piloty pilotz // Pilot School Stuff
intro_blip_icon = RADAR_SPRITE_CJ
sweet_blip_icon = RADAR_SPRITE_SWEET
ryder_blip_icon = RADAR_SPRITE_RYDER
smoke_blip_icon = RADAR_SPRITE_BIG_SMOKE
strap_blip_icon = RADAR_SPRITE_OGLOC
crash_blip_icon = RADAR_SPRITE_CRASH1 //This 1s the same for scrash, bcrash and vcrash
cesar_blip_icon = RADAR_SPRITE_CESAR //Same for bcesar
cat_blip_icon = RADAR_SPRITE_CAT_PINK
truth_blip_icon = RADAR_SPRITE_TRUTH
wuzi_blip_icon = RADAR_SPRITE_WOOZIE
synd_blip_icon = RADAR_SPRITE_LOCO
garage_blip_icon = RADAR_SPRITE_TRIADS
steal_blip_icon = RADAR_SPRITE_CESAR
trace_blip_icon = RADAR_SPRITE_RACE
zero_blip_icon = RADAR_SPRITE_ZERO
casino_blip_icon = RADAR_SPRITE_TRIADS_CASINO
heist_blip_icon = RADAR_SPRITE_MAFIA
Theheist_blip_icon = RADAR_SPRITE_CASH
doc_blip_icon = RADAR_SPRITE_MADDOG
desert_blip_icon = RADAR_SPRITE_TORENO_RANCH
desert2_blip_icon = RADAR_SPRITE_AIRYARD
mansion_blip_icon = RADAR_SPRITE_CJ
pilot_blip_icon = RADAR_SPRITE_SCHOOL
grove_blip_icon = RADAR_SPRITE_SWEET //GET NEW BLIP FOR THIS
GOTO dont_run_the_blips
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2447.3643 -1974.4963 12.5469 RADAR_SPRITE_EMMETGUN emmets_shop_blip //Clothes
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2070.2703 -1791.0918 17.1484 RADAR_SPRITE_BARBERS barber_shop1 //Barbers
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2107.6243 -1807.5155 21.2114 RADAR_SPRITE_PIZZA food_shop1 //Pizza
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2243.8069 -1668.5667 20.0313 RADAR_SPRITE_TSHIRT clothes_shop1 //Clothes
ADD_SPRITE_BLIP_FOR_CONTACT_POINT introX introY introZ intro_blip_icon intro_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon ryder_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT smokeX smokeY smokeZ smoke_blip_icon smoke_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT strapX strapY strapZ strap_blip_icon strap_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT crashX crashY crashZ crash_blip_icon crash_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT cesarX cesarY cesarZ cesar_blip_icon cesar_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT bcrashX bcrashY bcrashZ crash_blip_icon bcrash_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT catX[0] catY[0] catZ[0] cat_blip_icon cat_contact_blip //cat lodge
//ADD_SPRITE_BLIP_FOR_CONTACT_POINT catX[5] catY[5] catZ[5] cat_blip_icon cat_contact_blip //Cat Truck Stop
ADD_SPRITE_BLIP_FOR_CONTACT_POINT truthX truthY truthZ truth_blip_icon truth_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT bcesarX bcesarY bcesarZ cesar_blip_icon bcesar_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ crash_blip_icon scrash_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT wuziX wuziY wuziZ wuzi_blip_icon wuzi_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT zeroX zeroY zeroZ zero_blip_icon zero_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT stealX stealY stealZ steal_blip_icon steal_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT syndX syndY syndZ crash_blip_icon synd_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT testsX testsY testsZ trace_blip_icon trace_contact_blip[0]
ADD_SPRITE_BLIP_FOR_CONTACT_POINT testsX testsY testsZ trace_blip_icon trace_contact_blip2
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ desert_blip_icon desert_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desert2X desert2Y desert2Z desert2_blip_icon desert2_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip //TRIAD CASINO
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip //ROB MAFIA CASINO
ADD_SPRITE_BLIP_FOR_CONTACT_POINT docX docY docZ doc_blip_icon doc_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT vcrashX vcrashY vcrashZ crash_blip_icon vcrash_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon heist_contact_blip //MAFIA CASINO
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon mansion_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon grove_contact_blip //REMOVE
ADD_SPRITE_BLIP_FOR_CONTACT_POINT pilotx piloty pilotz pilot_blip_icon pilot_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT -2031.2 -118.0 34.3 RADAR_SPRITE_SCHOOL dschool_contact_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT boatsX boatsY boatsZ RADAR_SPRITE_SCHOOL boat_school_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT boatsX boatsY boatsZ RADAR_SPRITE_SCHOOL bike_school_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2228.0002 -1722.8113 12.5543 sweet_blip_icon gym_contact_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[5] save_pickupY[5] save_pickupZ[5] RADAR_SPRITE_SAVEHOUSE save_house_blip[5]
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT quarryX quarryY quarryZ RADAR_SPRITE_BULLDOZER quarry_contact_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2728.5, 212.2, 3.4 RADAR_SPRITE_MOD_GARAGE mod_garage_blips[0]
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2728.5, 212.2, 3.4 RADAR_SPRITE_MOD_GARAGE mod_garage_blips[1]
ADD_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[0] propertyY[0] propertyZ[0] RADAR_SPRITE_PROPERTY_GREEN showroom_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[1] propertyY[1] propertyZ[1] RADAR_SPRITE_PROPERTY_GREEN zero_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[2] propertyY[2] propertyZ[2] RADAR_SPRITE_PROPERTY_GREEN airstrip_contact_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD truckX truckY truckZ RADAR_SPRITE_TRUCK tucking_contact_blip
CREATE_PROTECTION_PICKUP 2508.359 -1676.538 12.579 10000 territory_cash territory_pickup
CREATE_PICKUP KEYCARD PICKUP_ONCE 0.0 0.0 0.0 millies_keycard_pickup
ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2035.7241 2727.9604 9.8281 Theheist_blip_icon Thekeycard_contact_blip
CREATE_LOCKED_PROPERTY_PICKUP propertyX[0] propertyY[0] propertyZ[0] PROP_4 save_housepickup[0] //SHOWROM
CREATE_LOCKED_PROPERTY_PICKUP propertyX[1] propertyY[1] propertyZ[1] PROP_4 save_housepickup[1] //ZEROS
CREATE_LOCKED_PROPERTY_PICKUP propertyX[2] propertyY[2] propertyZ[2] PROP_4 save_housepickup[2] //AIRSTRIP
CREATE_OBJECT ad_flatdoor 1833.36 -1995.45 12.5 riot2_door[0]
CREATE_OBJECT ad_flatdoor 1819.81 -1994.66 12.5 riot2_door[1]
CREATE_OBJECT ad_flatdoor 1827.68 -1980.0 12.5 riot2_door[2]
CREATE_OBJECT ad_flatdoor 1851.84 -1990.67 12.5 riot2_door[3]
CREATE_OBJECT ad_flatdoor 1867.29 -1984.96 12.5 riot2_door[4]
CREATE_OBJECT ad_flatdoor 1866.52 -1998.53 12.5 riot2_door[5]
CREATE_OBJECT ad_flatdoor 1899.75 -1984.95 12.5 riot2_door[6]
CREATE_OBJECT ad_flatdoor 1914.39 -1992.82 12.5 riot2_door[7]
CREATE_OBJECT ad_flatdoor 1899.01 -1998.5 12.5 riot2_door[8]
CREATE_OBJECT ad_flatdoor 1900.89 -2020.11 12.5 riot2_door[9]
CREATE_OBJECT ad_flatdoor 1914.4 -2020.91 12.5 riot2_door[10]
CREATE_OBJECT ad_flatdoor 1906.54 -2035.52 12.5 riot2_door[11]
//CREATE_OBJECT ad_flatdoor 1851.86 -2020.14 12.5 riot2_door[12]
//CREATE_OBJECT ad_flatdoor 1865.42 -2020.89 12.5 riot2_door[13]
//CREATE_OBJECT ad_flatdoor 1857.55 -2035.52 12.5 riot2_door[14]
dont_run_the_blips:
// ************************************HELP PICKUPS VARIABLES************************************
// WASTED HELP ICONS
VAR_INT wasted_help1
VAR_INT wasted_help2
//CREATE_PICKUP INFO PICKUP_ONCE 493.5 703.1 12.1 wasted_help1
//CREATE_PICKUP INFO PICKUP_ONCE -108.3 -974.4 10.4 wasted_help2
// BUSTED HELP ICONS
VAR_INT busted_help1
//CREATE_PICKUP INFO PICKUP_ONCE 508.9 506.8 11.3 busted_help1
//CREATE_PICKUP INFO PICKUP_ONCE 398.8 -469.7 11.7 busted_help2
// ************************************PICKUPVAN************************************
//VAR_INT collectable1_van
//VAR_FLOAT collectable1_van_x collectable1_van_y collectable1_van_z collectable1_van_h
// Zone Locate needed for each van/radio station collectable1_van_x = 2520.56 collectable1_van_y = -1461.98 collectable1_van_z = 23.79 collectable1_van_h = 270.37
//CREATE_CAR_GENERATOR collectable1_van_x collectable1_van_y collectable1_van_z collectable1_van_h NEWSVAN -1 -1 TRUE 0 0 0 10000 gen_car41 // Package Van LA
// *****************************************SWITCH ROADS OFF****************************************
SWITCH_ROADS_OFF 2500.0 -1677.0 20.0 2430.0 -1653.0 0.0 //REMOVE (SPEAK TO JOHN)
// *****************************************SHOPS******************************************************
VAR_INT flag_store_day_food hyfra_gen1 // TEST STUFF TO COME OUT!!!!!!!!!!!!!
flag_store_day_food = 0
VAR_INT total_food_bought_per_day_shops
total_food_bought_per_day_shops = 0
// Generic for all shops
VAR_INT skip_shopping_wait flag_changed_hair_intro2
// TO MAKE PEDS IN PIZZA SHOP PANIC
VAR_INT iSetPizzaPanic
iSetPizzaPanic = 0 // 0 = DEFAULT / 1 = Peds Cower
VAR_FLOAT keep_offX keep_offY keep_offZ
VAR_FLOAT tray_offX tray_offY tray_offZ keep_off_dirX keep_off_dirY
VAR_FLOAT cam_offx cam_offy cam_offz // camera position
VAR_FLOAT ammuX ammuY ammuZ
VAR_FLOAT SHOPS_TEXT_SCALEX SHOPS_TEXT_SCALEY
VAR_INT TEXT_COL_SELECT_R TEXT_COL_SELECT_G TEXT_COL_SELECT_B TEXT_COL_SELECT_A
VAR_INT TEXT_COL_DULL_R TEXT_COL_DULL_G TEXT_COL_DULL_B TEXT_COL_DULL_A
VAR_INT TEXT_COL_NA_R TEXT_COL_NA_G TEXT_COL_NA_B TEXT_COL_NA_A
SHOPS_TEXT_SCALEX = 1.0
SHOPS_TEXT_SCALEY = 1.6
TEXT_COL_SELECT_R = 200
TEXT_COL_SELECT_G = 200
TEXT_COL_SELECT_B = 200
TEXT_COL_SELECT_A = 255
TEXT_COL_DULL_R = 100
TEXT_COL_DULL_G = 100
TEXT_COL_DULL_B = 100
TEXT_COL_DULL_A = 255
TEXT_COL_NA_R = 20
TEXT_COL_NA_G = 20
TEXT_COL_NA_B = 20
TEXT_COL_NA_A = 255
VAR_TEXT_LABEL shop_name
// REWARD CARS
CREATE_CAR_GENERATOR 2435.3018 -1671.8483 12.8007 90.0 rhino -1 -1 TRUE 0 0 0 10000 tank_gen1 // Farm car //HUB
SWITCH_CAR_GENERATOR tank_gen1 0
CREATE_CAR_GENERATOR 2527.2 -1677.1 19.2 90.0 hydra -1 -1 TRUE 0 0 0 10000 hyfra_gen1 // Farm car //HUB
SWITCH_CAR_GENERATOR hyfra_gen1 0
// **************************************** OBJECT SCRIPTS ********************************************
CONST_INT NONE_SC 0
CONST_INT DUAL_SC 1
CONST_INT SHTR_SC 2
CONST_INT GRAV_SC 3
CONST_INT OTB_SCRIPT 4
CONST_INT POOL_SCRIPT 5
CONST_INT LOWR_SCRIPT 6
CONST_INT ZERO5 7
VAR_INT load_and_launch_mission_if_poss
load_and_launch_mission_if_poss = -1
REGISTER_STREAMED_SCRIPT player_parachute.sc
REGISTER_STREAMED_SCRIPT parachute.sc
REGISTER_STREAMED_SCRIPT bcesar2.sc
REGISTER_STREAMED_SCRIPT bcesar3.sc
REGISTER_STREAMED_SCRIPT slot_machine.sc
REGISTER_STREAMED_SCRIPT roulette.sc
REGISTER_STREAMED_SCRIPT otb_script.sc
REGISTER_STREAMED_SCRIPT arcade.sc
REGISTER_STREAMED_SCRIPT vending_machine.sc
REGISTER_STREAMED_SCRIPT food_vendor.sc
REGISTER_STREAMED_SCRIPT gates_script.sc
REGISTER_STREAMED_SCRIPT gymbike.sc
REGISTER_STREAMED_SCRIPT gymbench.sc
REGISTER_STREAMED_SCRIPT gymtread.sc
REGISTER_STREAMED_SCRIPT gymdumb.sc
REGISTER_STREAMED_SCRIPT basketb.sc
REGISTER_STREAMED_SCRIPT vidpok.sc
REGISTER_STREAMED_SCRIPT blackj.sc
REGISTER_STREAMED_SCRIPT wheelo.sc
REGISTER_STREAMED_SCRIPT Dealer.sc
REGISTER_STREAMED_SCRIPT home_brains.sc
//REGISTER_STREAMED_SCRIPT pros_brains.sc
REGISTER_STREAMED_SCRIPT pool_script.sc
REGISTER_STREAMED_SCRIPT lowr_cont.sc
REGISTER_STREAMED_SCRIPT burg_brains.sc
REGISTER_STREAMED_SCRIPT GF_Meeting.sc
REGISTER_STREAMED_SCRIPT GF_Date.sc
REGISTER_STREAMED_SCRIPT GF_Sex.sc
REGISTER_STREAMED_SCRIPT Casino_ambience.sc
REGISTER_STREAMED_SCRIPT Bar_ambience.sc
REGISTER_STREAMED_SCRIPT FoodBrains.sc
REGISTER_STREAMED_SCRIPT OTB_ambience.sc
REGISTER_STREAMED_SCRIPT Strip_ambience.sc
REGISTER_STREAMED_SCRIPT planes.sc
REGISTER_STREAMED_SCRIPT trains.sc
REGISTER_STREAMED_SCRIPT Zero_ambience.sc
REGISTER_STREAMED_SCRIPT Dance.sc
//PEOPLE
REGISTER_STREAMED_SCRIPT ShopKeeper.sc
REGISTER_STREAMED_SCRIPT Customer_Panic.sc
REGISTER_STREAMED_SCRIPT Bar_Staff.sc
REGISTER_STREAMED_SCRIPT Bouncer.sc
REGISTER_STREAMED_SCRIPT OTB_Staff.sc
//ATTRACTOR BRAINS
REGISTER_STREAMED_SCRIPT PCHAIR.sc
REGISTER_STREAMED_SCRIPT PCUSTOM.sc
REGISTER_STREAMED_SCRIPT OTBWTCH.sc
REGISTER_STREAMED_SCRIPT OTBSLP.sc
REGISTER_STREAMED_SCRIPT OTBTILL.sc
REGISTER_STREAMED_SCRIPT FBOOTHR.sc
REGISTER_STREAMED_SCRIPT FBOOTHL.sc
REGISTER_STREAMED_SCRIPT BARGUY.sc
REGISTER_STREAMED_SCRIPT PEDROUL.sc
REGISTER_STREAMED_SCRIPT PEDCARD.sc
REGISTER_STREAMED_SCRIPT PEDSLOT.sc
REGISTER_STREAMED_SCRIPT DANCER.sc
REGISTER_STREAMED_SCRIPT STRIPW.sc
REGISTER_STREAMED_SCRIPT STRIPM.sc
// SHOPS
REGISTER_STREAMED_SCRIPT BROWSE.sc
REGISTER_STREAMED_SCRIPT COPSIT.sc
REGISTER_STREAMED_SCRIPT COPLOOK.sc
REGISTER_STREAMED_SCRIPT TICKET.sc
REGISTER_STREAMED_SCRIPT SHOPPER.sc
REGISTER_STREAMED_SCRIPT ammu.sc
REGISTER_STREAMED_SCRIPT tattoo.sc
REGISTER_STREAMED_SCRIPT barber.sc
REGISTER_STREAMED_SCRIPT wardrobe.sc
REGISTER_STREAMED_SCRIPT clothes.sc
REGISTER_STREAMED_SCRIPT junkfud.sc
REGISTER_STREAMED_SCRIPT carmod1.sc
REGISTER_STREAMED_SCRIPT crane1.sc
REGISTER_STREAMED_SCRIPT crane2.sc
REGISTER_STREAMED_SCRIPT crane3.sc
REGISTER_STREAMED_SCRIPT carpark1.sc
REGISTER_STREAMED_SCRIPT impound.sc
REGISTER_STREAMED_SCRIPT valet.sc
REGISTER_STREAMED_SCRIPT PHOTO.sc
REGISTER_STREAMED_SCRIPT PRISONR.sc
REGISTER_STREAMED_SCRIPT camera.sc
REGISTER_STREAMED_SCRIPT debt.sc
REGISTER_STREAMED_SCRIPT hotdog.sc
CONST_INT CASINO_OBJECT_BRAIN 1
//CHRIS R's OBJECT SCRIPTS vv
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT slot_machine.sc KB_BANDIT_U 100 6.0 CASINO_OBJECT_BRAIN
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT roulette.sc ROULETTE_TBL 60 50.0 CASINO_OBJECT_BRAIN
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT otb_script.sc OTB_MACHINE 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT arcade.sc CJ_COIN_OP_3 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT arcade.sc CJ_COIN_OP_2 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT arcade.sc CJ_COIN_OP_1 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT arcade.sc CJ_COIN_OP 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT arcade.sc SWANK_CONSOLE 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT arcade.sc SNESISH 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT arcade.sc LOW_CONSOLE 100 4.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vending_machine.sc VENDMACHFD 100 6.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vending_machine.sc VENDMACH 100 6.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vending_machine.sc VENDIN3 100 6.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vending_machine.sc CJ_SPRUNK1 100 6.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vending_machine.sc CJ_CANDYVENDOR 100 6.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vending_machine.sc CJ_EXT_CANDY 100 6.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vending_machine.sc CJ_EXT_SPRUNK 100 6.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT food_vendor.sc ICESCART_PROP 100 42.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT food_vendor.sc CHILLIDOGCART 100 42.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT food_vendor.sc NOODLECART_PROP 100 42.0 -1
VAR_INT open_gate_now_flag
open_gate_now_flag = 0
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT gates_script.sc GATE_AUTOL 100 80.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT gates_script.sc GATE_AUTOR 100 80.0 -1
//CHRIS R's OBJECT SCRIPTS ^^
//PAUL's OBJECT SCRIPTS vv
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT gymbike.sc gym_bike 100 20.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT gymbench.sc gym_bench1 100 20.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT gymtread.sc gym_treadmill 100 20.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT gymdumb.sc gym_mat1 100 20.0 -1
//PAULS's OBJECT SCRIPTS ^^
//NEILS's OBJECT SCRIPTS vv
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT basketb.sc BSKBALL_LAX 100 70.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT basketb.sc BSKBALLHUB_LAX01 100 70.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT basketb.sc VGSXREFBBALLNET 100 70.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT basketb.sc VGSXREFBBALLNET2 100 70.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT pool_script.sc K_POOLTABLESM 100 70.0 -1
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vidpok.sc NEIL_SLOT 100 4.0 CASINO_OBJECT_BRAIN
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT vidpok.sc CJ_SLOT_BANK 100 4.0 CASINO_OBJECT_BRAIN
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT blackj.sc BLCK_JACK 50 70.0 CASINO_OBJECT_BRAIN
ALLOCATE_STREAMED_SCRIPT_TO_OBJECT wheelo.sc WHEEL_O_FORTUNE 50 70.0 CASINO_OBJECT_BRAIN
//NEIL's OBJECT SCRIPTS ^^
// ADD IN SECTION TO CREATE THE TERRITORY PICKUP GENERATING CASH*************************************
VAR_INT territory_pickup
VAR_INT player_territory_owned
VAR_INT territory_cash
territory_cash = 1
// **********************************************BRAINS**********************************************
// ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED test_brain goon1 100 //TEST SCRIPT
REGISTER_SCRIPT_BRAIN_FOR_CODE_USE burg_brains.sc HOUSE
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE DANCER.sc DANCER
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE PCHAIR.sc PCHAIR
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE PCUSTOM.sc PCUSTOM
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE OTBWTCH.sc OTBWTCH
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE OTBSLP.sc OTBSLP
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE OTBTILL.sc OTBTILL
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE FBOOTHR.sc FBOOTHR
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE FBOOTHL.sc FBOOTHL
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE BARGUY.sc BARGUY
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE PEDROUL.sc PEDROUL
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE PEDCARD.sc PEDCARD
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE PEDSLOT.sc PEDSLOT
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE STRIPW.sc STRIPW
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE STRIPM.sc STRIPM
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE BROWSE.sc BROWSE
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE COPSIT.sc COPSIT
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE COPLOOK.sc COPLOOK
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE TICKET.sc TICKET
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE SHOPPER.sc SHOPPER
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE PHOTO.sc PHOTO
REGISTER_ATTRACTOR_SCRIPT_BRAIN_FOR_CODE_USE PRISONR.sc PRISONR
// ****************************************PED BRAINS********************************************
ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED Dealer.sc BMYDRUG 100
ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED Dealer.sc WMYDRUG 100
ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED Dealer.sc HMYDRUG 100
ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED Dealer.sc BIKDRUG 100
ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED hotdog.sc BMOCHIL 100
ATTACH_ANIMS_TO_MODEL BMYDRUG DEALER
ATTACH_ANIMS_TO_MODEL WMYDRUG DEALER
ATTACH_ANIMS_TO_MODEL HMYDRUG DEALER
ATTACH_ANIMS_TO_MODEL BIKDRUG DEALER
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED home_brains.sc WMOTR1 20
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED home_brains.sc SWMOTR1 20
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED home_brains.sc BMOTR1 20
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED home_brains.sc SBMOTR2 20
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED home_brains.sc SWMOTR2 20
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED home_brains.sc SBMYTR3 20
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED home_brains.sc SWMOTR3 20
//LA
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc WFYPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc BFYPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc HFYPRO 30
//SAN FRAN
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc SWFOPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc SHFYPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc SBFYPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc SFYPRO 30
//VEGAS
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc VWFYPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc VHFYPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc VBFYPRO 30
//ALLOCATE_STREAMED_SCRIPT_TO_RANDOM_PED pros_brains.sc VBFYPR2 30
REQUEST_IPL CRACK //REQUEST THE CRACK LAB
SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE -2166.86 -236.50 40.86 40.0 crackfact_SFS FALSE // Set it up as undamaged. The model is switched in BP now in SetDamaged().
SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE -2185.49 -215.55 34.31 40.0 CF_ext_dem_SFS FALSE // These commands no longer do anything but break the saves to remove...
SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE -2166.86 -236.50 40.86 40.0 LODcrackfact_SFS TRUE // These commands no longer do anything but break the saves to remove...
SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE -2185.49 -215.55 34.31 40.0 LODext_dem_SFS FALSE // These commands no longer do anything but break the saves to remove...
// ****************************************START_NEW_SCRIPTS******************************************
//START_NEW_SCRIPT police_impound_script
//START_NEW_SCRIPT Tplay_mission_loop
START_NEW_SCRIPT vehicle_oddjob_loop
START_NEW_SCRIPT R3missions_loop
START_NEW_SCRIPT gym_loop
START_NEW_SCRIPT shoot_range_loop
START_NEW_SCRIPT blood_loop
START_NEW_SCRIPT hot_loop
START_NEW_SCRIPT kick_loop
START_NEW_SCRIPT grove_save_loop //SAVE GAME
START_NEW_SCRIPT game_flow_loop
START_NEW_SCRIPT game_help_loop
START_NEW_SCRIPT collectibes_loop
START_NEW_SCRIPT crane_manager
START_NEW_SCRIPT buy_pro_loop
START_NEW_SCRIPT valet_loop
START_NEW_SCRIPT planes_loop
START_NEW_SCRIPT trains_loop
START_NEW_SCRIPT impound_loop
START_NEW_SCRIPT open_the_map
START_NEW_SCRIPT tri_loop
//LAUNCH_MISSION parachute.sc //KB
LAUNCH_MISSION bbthrow.sc //NF
LAUNCH_MISSION bball_chal.sc //NF
LAUNCH_MISSION lowrider_game.sc //NF
LAUNCH_MISSION audio_singleline.sc //NF
LAUNCH_MISSION beatdisplay.sc //NF
LAUNCH_MISSION impexp.sc //NF
LAUNCH_MISSION airports.sc //CC
LAUNCH_MISSION girls.sc //CC
LAUNCH_MISSION Int_Manager.sc //CC
LAUNCH_MISSION audio_controller.sc //SL
LAUNCH_MISSION hj.sc //CR
LAUNCH_MISSION mobile.sc //CF
DO_FADE 0 FADE_OUT
DISPLAY_ZONE_NAMES FALSE
WAIT 0
WAIT 0
SWITCH_WORLD_PROCESSING OFF //TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SET_FADING_COLOUR 0 0 0
WAIT 2000 //Wait until keys are initialised //TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SWITCH_WORLD_PROCESSING ON //TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SET_MAX_WANTED_LEVEL 4
IF IS_PLAYER_PLAYING player1
FORCE_WEATHER_NOW WEATHER_SUNNY_LA
GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP player1 vest vest 0
GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP player1 jeansdenim jeans 2
GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP player1 sneakerbincblk sneaker 3
GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP player1 player_face head 1
flag_bought_from_binco = 1
BUILD_PLAYER_MODEL player1
STORE_CLOTHES_STATE
IF NOT IS_BUTTON_PRESSED PAD1 CROSS // Load Normal Game
SET_FADING_COLOUR 0 0 0
DO_FADE 0 FADE_OUT
game_starts_from_scratch = 0
SET_INT_STAT CITIES_PASSED 0
LAUNCH_MISSION ms_skip.sc
DISPLAY_ZONE_NAMES FALSE
//we only load this in final_build and if holding shift when pressing newgame
//LOAD_AND_LAUNCH_MISSION intro.sc
DO_FADE 1000 FADE_IN
ELSE // Load Debug Game
game_starts_from_scratch = 0
SET_INT_STAT CITIES_PASSED 3
//LAUNCH_MISSION debug.sc //FOR DEBUG BUILD!!!!!!
//LAUNCH_MISSION designtools.sc //FOR DEBUG BUILD!!!!!!!!
LAUNCH_MISSION ms_skip.sc
SWITCH_ENTRY_EXIT gym1 FALSE
SWITCH_ENTRY_EXIT gym2 FALSE
SWITCH_ENTRY_EXIT gym3 FALSE
SWITCH_ENTRY_EXIT PDOMES FALSE
SWITCH_ENTRY_EXIT PDOMES2 FALSE
SWITCH_ENTRY_EXIT RCPLAY FALSE
REMOVE_IPL Barriers1
REMOVE_IPL Barriers2
SWITCH_ENTRY_EXIT cschp TRUE //BINCO //LA
SWITCH_ENTRY_EXIT cssprt TRUE //PROLAPS //LA
SWITCH_ENTRY_EXIT lacs1 TRUE //SUBURBAN //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2070.2703 -1791.0918 17.1484 RADAR_SPRITE_BARBERS barber_shop1 //Barbers
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2107.6243 -1807.5155 21.2114 RADAR_SPRITE_PIZZA food_shop1 //Pizza
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2243.8069 -1668.5667 20.0313 RADAR_SPRITE_TSHIRT clothes_shop1 //Clothes
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2376.4, 909.2, 45.4 RADAR_SPRITE_TSHIRT clothes_blips[6] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1654.0, 1733.4, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[7] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2105.7, 2257.4, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[8] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2371.1, 910.2, 47.2 RADAR_SPRITE_TSHIRT clothes_blips[14] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 501.7, -1358.5, 16.4 RADAR_SPRITE_TSHIRT clothes_blips[9] //CSSPRT //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2818.6, 2401.5, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[10] //CSSPRT //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2112.8, -1214.7, 23.9 RADAR_SPRITE_TSHIRT clothes_blips[4] //LACS1 //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2772.0, 2447.6, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[5] //LACS1 //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2489.0, -26.9, 32.6 RADAR_SPRITE_TSHIRT clothes_blips[16] //LACS1 //LA
added_all_clothes_blips_before = 1
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 822.6, -1590.3, 13.5 RADAR_SPRITE_BARBERS barbers_blips[0] //BARBER2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2570.1, 245.4, 10.3 RADAR_SPRITE_BARBERS barbers_blips[1] //BARBERS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2726.6, -2026.4, 17.5 RADAR_SPRITE_BARBERS barbers_blips[2] //BARBERS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2080.3, 2119.0, 10.8 RADAR_SPRITE_BARBERS barbers_blips[3] //BARBER2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 675.7, -496.6, 16.8 RADAR_SPRITE_BARBERS barbers_blips[4] //BARBERS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1805.7, 943.2, 24.8 RADAR_SPRITE_PIZZA pizza_blips[0] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2750.9, 2470.9, 11.0 RADAR_SPRITE_PIZZA pizza_blips[1] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2351.8, 2529.0, 10.8 RADAR_SPRITE_PIZZA pizza_blips[2] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2635.5, 1847.4, 11.0 RADAR_SPRITE_PIZZA pizza_blips[3] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2083.4, 2221.0, 11.0 RADAR_SPRITE_PIZZA pizza_blips[4] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1719.1, 1359.4, 8.6 RADAR_SPRITE_PIZZA pizza_blips[5] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2330.2, 75.2, 31.0 RADAR_SPRITE_PIZZA pizza_blips[6] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 203.2, -200.4, 6.5 RADAR_SPRITE_PIZZA pizza_blips[7] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 812.9, -1616.1, 13.6 RADAR_SPRITE_BURGERSHOT burger_blips[0] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1199.1, -924.0, 43.3 RADAR_SPRITE_BURGERSHOT burger_blips[1] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2362.2, 2069.9, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[2] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2469.5, 2033.8, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[3] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2172.9, 2795.7, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[4] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1875.3, 2072.0, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[5] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1161.5, 2072.0, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[6] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2356.0, 1009.0, 49.0 RADAR_SPRITE_BURGERSHOT burger_blips[7] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1913.3, 826.2, 36.9 RADAR_SPRITE_BURGERSHOT burger_blips[8] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2335.6, -165.6, 39.5 RADAR_SPRITE_BURGERSHOT burger_blips[9] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2397.8, -1895.6, 13.7 RADAR_SPRITE_CHICKEN chicken_blips[0] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2421.6, -1509.6, 24.1 RADAR_SPRITE_CHICKEN chicken_blips[1] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2671.6, 257.4, 4.6 RADAR_SPRITE_CHICKEN chicken_blips[2] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2392.4, 2046.5, 10.8 RADAR_SPRITE_CHICKEN chicken_blips[3] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2844.5, 2401.1, 11.0 RADAR_SPRITE_CHICKEN chicken_blips[4] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2635.5, 1674.3, 11.0 RADAR_SPRITE_CHICKEN chicken_blips[5] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2105.7, 2228.7, 11.0 RADAR_SPRITE_CHICKEN chicken_blips[6] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2154.0, -2461.2, 30.8 RADAR_SPRITE_CHICKEN chicken_blips[7] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1816.2 620.8 37.5 RADAR_SPRITE_CHICKEN chicken_blips[8] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1216.0, 1831.4, 45.3 RADAR_SPRITE_CHICKEN chicken_blips[9] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 172.73, 1176.76, 13.7 RADAR_SPRITE_CHICKEN chicken_blips[10] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 932.0, -1353.0, 14.0 RADAR_SPRITE_CHICKEN chicken_blips[11] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1971.7, -2036.6, 13.5 RADAR_SPRITE_TATTOO tattoo_blips[0] //TATTOO
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2071.6, -1779.9, 13.5 RADAR_SPRITE_TATTOO tattoo_blips[1] //TATTOO
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2094.6, 2119.0, 10.8 RADAR_SPRITE_TATTOO tattoo_blips[2] //TATTOO
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2490.5, -40.1, 39.3 RADAR_SPRITE_TATTOO tattoo_blips[3] //TATTOO
added_all_food_blips_before = 1
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1372.9 -1278.8 12.5 RADAR_SPRITE_GUN weapon_shop1_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2400.5 -1978.4 13.5 RADAR_SPRITE_GUN ammu_shop_blip[0] //AMMUN3
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2626.6 209.4 4.9 RADAR_SPRITE_GUN ammu_shop_blip[1] //AMMUN1
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2535.9 2083.5 10.8 RADAR_SPRITE_GUN ammu_shop_blip[2] //AMMUN2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2156.5 943.2 10.8 RADAR_SPRITE_GUN ammu_shop_blip[3] //AMMUN2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 779.7 1874.3 4.9 RADAR_SPRITE_GUN ammu_shop_blip[4] //AMMUN3
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2092.7 -2463.8 30.6 RADAR_SPRITE_GUN ammu_shop_blip[5] //AMMUN3
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 240.0 -178.2 2.0 RADAR_SPRITE_GUN ammu_shop_blip[6] //AMMUN2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1509.4, 2611.8, 58.5 RADAR_SPRITE_GUN ammu_shop_blip[7] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -315.67, 829.87, 13.43 RADAR_SPRITE_GUN ammu_shop_blip[8] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2332.9, 63.6, 31.0, RADAR_SPRITE_GUN ammu_shop_blip[9] //NEW!!!!!!!!!
SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[2] propertyY[2] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE
ACTIVATE_GARAGE dhangar //Hanger
add_all_ammu_blips = 1
DISPLAY_ZONE_NAMES TRUE
launch_shit_for_debug_build = 1
DO_FADE 1000 FADE_IN
ENDIF
// Final Build
IF IS_FINALBUILD
SET_FADING_COLOUR 0 0 0 //FOR FINAL BUILD!!!!!!!!!!!!!!!!!
DO_FADE 0 FADE_OUT
game_starts_from_scratch = 0
LOAD_AND_LAUNCH_MISSION intro.sc
ENDIF
// End Final Build
activate_mobile_phone = 1 //SET TO 0 TO SWITCH OFF MOBILE CALLS
//SET_CLOSEST_ENTRY_EXIT_FLAG 2137.9055 1600.5658 10.0 ENTRYEXITS_FLAG_ENABLED FALSE //MAFIA CASINO
IF IS_PLAYER_PLAYING player1
SET_AREA_VISIBLE 0
SET_PLAYER_CONTROL player1 on
ENDIF
RELEASE_WEATHER
SHOW_UPDATE_STATS TRUE // Don't want to see updates at the beginning of a new game.
GOTO mission_start
ENDIF
{
//MAIN LOOP**************************************************************************************************
VAR_INT number_of_instances_of_streamed_script
number_of_instances_of_streamed_script = 0
VAR_INT roaming_countryside_time
VAR_INT years_too_late_achievement
years_too_late_achievement = 0
roaming_countryside_time = 0
mission_start:
WAIT 0
IF IS_PLAYER_PLAYING player1
GET_AREA_VISIBLE main_visible_area
GET_INT_STAT CITIES_PASSED Return_cities_passed
GET_CURRENT_DAY_OF_WEEK weekday
GET_CURRENT_LANGUAGE current_Language
GET_CITY_PLAYER_IS_IN Player1 im_players_city
GET_GAME_TIMER game_timer_wil
// some achievement processing
// delta time
IF roaming_countryside_time = 0
GET_GAME_TIMER roaming_countryside_time
ENDIF
timer_wil = game_timer_wil - roaming_countryside_time
// _81_YEARS_TOO_LATE
// record how long the player is roaming around the countryside on foot
LVAR_INT tmp_popcycle_zone
GET_CURRENT_POPULATION_ZONE_TYPE tmp_popcycle_zone
IF tmp_popcycle_zone = POPCYCLE_ZONE_COUNTRYSIDE
AND IS_CHAR_ON_FOOT scplayer
time_spent_roaming_countryside += timer_wil
ENDIF
// TODAY_WAS_A_GOOD_DAY
// record if the player doesn't break any laws in 24 hours
IF NOT IS_PLAYER_CONTROL_ON -1 // hacked check for breaking any laws
time_player_spent_crime_free = 0 // reset if breaking laws
ELSE
time_player_spent_crime_free += timer_wil
ENDIF
roaming_countryside_time = game_timer_wil
IF time_spent_roaming_countryside > 86400000 // 24 hours in milliseconds
WRITE_LOG "UNLOCK_ACHIEVEMENT _81_YEARS_TOO_LATE"
ENDIF
IF time_player_spent_crime_free > 86400000 // 24 hours in milliseconds
WRITE_LOG "UNLOCK_ACHIEVEMENT TODAY_WAS_A_GOOD_DAY"
ENDIF
IF flag_store_day_food = 1
timer_wil = game_timer_wil - stored_shop_time
IF timer_wil >= 180000
flag_store_day_food = 0
total_food_bought_per_day_shops = 0
timer_wil = 0
flag_ate_too_much_food = 0
ENDIF
ENDIF
// CAR MOD GARAGES
IF IS_GARAGE_OPEN bodLAwN
OR IS_GARAGE_OPEN modlast
OR IS_GARAGE_OPEN mdsSFSe
OR IS_GARAGE_OPEN mds1SFS
OR IS_GARAGE_OPEN vEcmod
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT carmod1.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
STREAM_SCRIPT carmod1.sc
IF HAS_STREAMED_SCRIPT_LOADED carmod1.sc
START_NEW_STREAMED_SCRIPT carmod1.sc
ENDIF
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED carmod1.sc
ENDIF
// PARACHUTE
IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_PARACHUTE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT player_parachute.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
STREAM_SCRIPT player_parachute.sc
IF HAS_STREAMED_SCRIPT_LOADED player_parachute.sc
START_NEW_STREAMED_SCRIPT player_parachute.sc
ENDIF
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED player_parachute.sc
ENDIF
// CAMERA
IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CAMERA
AND flag_player_on_mission = 0
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT camera.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
STREAM_SCRIPT camera.sc
IF HAS_STREAMED_SCRIPT_LOADED camera.sc
START_NEW_STREAMED_SCRIPT camera.sc
ENDIF
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED camera.sc
ENDIF
//LOAD AND LAUNCHED STREAMED SCRIPTS
IF flag_player_on_mission = 0
// --- HANDLES THE COKE COURIER SCRIPT
IF flag_Synd_mission_counter < 10
IF cat_counter > 2
IF courier_timer > 400
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT bcesar2.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF bcesar3_mission_flag = 0
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT bcesar3.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
GET_CURRENT_DAY_OF_WEEK weekday
GET_TIME_OF_DAY hours minutes
IF weekday = 4 // Wednesday
OR weekday = 7 // Saturday
IF hours >= 19
OR hours < 7
STREAM_SCRIPT bcesar3.sc
IF HAS_STREAMED_SCRIPT_LOADED bcesar3.sc
START_NEW_STREAMED_SCRIPT bcesar3.sc
bcesar3_mission_flag = 1 // stops script getting started twice in one day.
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT bcesar3.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF bcesar2_mission_flag = 0
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT bcesar2.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
GET_CURRENT_DAY_OF_WEEK weekday
GET_TIME_OF_DAY hours minutes
IF weekday = 2 // monday
OR weekday = 6 // friday
IF hours >= 5
AND hours < 17
STREAM_SCRIPT bcesar2.sc
IF HAS_STREAMED_SCRIPT_LOADED bcesar2.sc
START_NEW_STREAMED_SCRIPT bcesar2.sc
bcesar2_mission_flag = 1 // stops script getting started twice in one day.
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GET_CURRENT_DAY_OF_WEEK weekday
IF weekday = 1 // Sunday
OR weekday = 3 // Tuesday
OR weekday = 5 // Thursday
bcesar2_mission_flag = 0
bcesar3_mission_flag = 0
courier_timer = 0
ELSE
courier_timer ++
ENDIF
ENDIF
ENDIF
// --- HANDLES THE LOWRIDER MINI GAME
IF lowrider_minigame_unlocked = 1
AND flag_player_on_mission = 0
IF lowrider_mission_flag = 0
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT lowr_cont.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_2D scplayer 1812.3690 -1929.9215 80.0 80.0 FALSE
STREAM_SCRIPT lowr_cont.sc
IF HAS_STREAMED_SCRIPT_LOADED lowr_cont.sc
START_NEW_STREAMED_SCRIPT lowr_cont.sc
lowrider_mission_flag = 1
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF IS_PLAYER_PLAYING player1
IF NOT LOCATE_CHAR_ANY_MEANS_2D scplayer 1812.3690 -1929.9215 500.0 500.0 FALSE
lowrider_mission_flag = 0
ENDIF
ENDIF
ENDIF
ENDIF
SWITCH load_and_launch_mission_if_poss
CASE NONE_SC
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION none.sc
BREAK
CASE DUAL_SC
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION dual.sc
BREAK
CASE SHTR_SC
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION shtr.sc
BREAK
CASE GRAV_SC
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION grav.sc
BREAK
CASE OTB_SCRIPT
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION otb.sc
BREAK
CASE POOL_SCRIPT
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION pool.sc
BREAK
CASE LOWR_SCRIPT
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION lowr.sc
BREAK
CASE ZERO5
flag_player_on_mission = 1
PRINT_BIG ( BEEFY ) 1000 2
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION zero5.sc
BREAK
ENDSWITCH
ELSE
IF bcesar2_mission_flag = 1
OR bcesar3_mission_flag = 1
courier_timer = 0
ENDIF
load_and_launch_mission_if_poss = -1
ENDIF
IF IS_PLAYER_PLAYING player1
// CAR park vegas (emerald isle)
IF IS_CHAR_IN_AREA_2D scplayer 2037.5359 2340.3726 2117.1765 2483.9216 0
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT carpark1.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
STREAM_SCRIPT carpark1.sc
IF HAS_STREAMED_SCRIPT_LOADED carpark1.sc
START_NEW_STREAMED_SCRIPT carpark1.sc
ENDIF
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED carpark1.sc
ENDIF
IF im_players_city = LEVEL_LOSANGELES
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 658.0068 -1866.3127 4.4537 15.0 15.0 15.0 FALSE
IF gym_at_beach = 0
IF gym_day > gym_final_day
OR gym_month > gym_final_month
gym_day_fitness = 0.0
ENDIF
gym_at_beach = 1
ENDIF
ELSE
IF gym_at_beach = 1
gym_at_beach = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF //IF IS_PLAYER_PLAYING player1
GOTO mission_start
}
// **********************************************************************************************************
// ********************************************LA MISSIONS***************************************************
// **********************************************************************************************************
// **********************************************************************************************************
// ****************************************** INTRO MISSIONS ************************************************
intro_mission_loop:
{
SCRIPT_NAME INT
intro_loop_inner:
WAIT mission_trigger_wait_time
IF flag_intro_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer introX introY introZ 1.0 1.0 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_intro_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( INTRO_1 ) 1000 2 //"INTRO mission 1" //CRAIGF //BMX Bandits
GOSUB mother_script_cut
CLEAR_HELP
LOAD_AND_LAUNCH_MISSION intro1.sc
ENDIF
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer ryderX ryderY ryderZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_intro_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( INTRO_2 ) 1000 2 //"INTRO mission 2" //CRAIGF //Haircut, Gym + robbery
GOSUB ryder_script_cut1
LOAD_AND_LAUNCH_MISSION intro2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO intro_loop_inner
}
// **********************************************************************************************************
// **********************************************SWEET MISSIONS**********************************************
sweet_mission_loop:
{
SCRIPT_NAME SWEET
sweet_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_sweet_mission_counter = 9
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer sweetX sweetY sweetZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_sweet_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( SWEET_1 ) 1000 2 //"Sweet mission 1" //CRAIGF //Tagging
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet1.sc
ENDIF
IF flag_sweet_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( SWEET1B ) 1000 2 //"Sweet mission 1B" //CRAIGF //Clean
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet1b.sc
ENDIF
IF flag_sweet_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( SWEET_3 ) 1000 2 //"Sweet mission 2" //CRAIG F //Chicken Wings
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet3.sc
ENDIF
IF flag_sweet_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( SWEET_2 ) 1000 2 //"Sweet mission 3" //CRAIGF //Guns Guns Guns
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet2.sc
ENDIF
IF flag_sweet_mission_counter = 4
flag_player_on_mission = 1
PRINT_BIG ( SWEET_4 ) 1000 2 //"Sweet mission 4" //CHRIS M //Getto Drive by
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet4.sc
ENDIF
IF flag_sweet_mission_counter = 5
flag_player_on_mission = 1
PRINT_BIG ( SWEET_5 ) 1000 2 //"Sweet mission 5" //KEV B //Rescue
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet5.sc
ENDIF
IF flag_sweet_mission_counter = 6
flag_player_on_mission = 1
PRINT_BIG ( SWEET_6 ) 1000 2 //"Sweet mission 6" //NEIL //Lowrider comp part 1
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet6.sc
ENDIF
IF flag_sweet_mission_counter = 8
FIND_MAX_NUMBER_OF_GROUP_MEMBERS returned_respect
IF returned_respect > 1
GET_TIME_OF_DAY hours minutes
IF hours >= 9
AND hours < 17
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( SWEET_7 ) 1000 2 //"Sweet mission 8" //STEVE T //Grave Misfortune
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION sweet7.sc
ELSE
PRINT_NOW MTIME3 1000 1 //Come back between 9:00 17:00
ENDIF
ELSE
PRINT_NOW MOREREP 1000 1 //You need more respect
IF respect_help_played = 0
PRINT_HELP HELP101
respect_help_played = 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer 1365.2507 -1280.1200 12.5469 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_sweet_mission_counter = 7
AND flag_mob_la1[4] = 1
flag_player_on_mission = 1
PRINT_BIG ( CRASH_2 ) 1000 2 //"Sweet mission 7" //WILLIE //Doberman
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION crash4.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO sweet_mission_loop_inner
}
// **********************************************************************************************************
// *******************************************LA 1 CRASH MISSIONS********************************************
crash_mission_loop:
{
SCRIPT_NAME CRASH
crash_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_crash_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer crashX crashY crashZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_crash_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( CRASH_1 ) 1000 2 //"Crash mission 1" //KEITH //Burning Desire
GOSUB crash_script_cut1
LOAD_AND_LAUNCH_MISSION crash1.sc
ENDIF
IF flag_crash_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( CRASH_3 ) 1000 2 //"Crash mission 3" //IMRAN //Docks shootout
GOSUB crash_script_cut1
LOAD_AND_LAUNCH_MISSION crash3.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO crash_mission_loop_inner
}
// ****************************************************************************************************
// *******************************************RYDER MISSIONS ******************************************
ryder_mission_loop:
{
SCRIPT_NAME RYDER
ryder_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_ryder_mission_counter = 3
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer ryderX ryderY ryderZ 1.6 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_ryder_mission_counter = 0
GET_TIME_OF_DAY hours minutes
IF hours >= 12
AND hours < 20
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( RYDER_1 ) 1000 2 //"Ryder mission 1" //DAVE //Burglary
GOSUB ryder_script_cut1
LOAD_AND_LAUNCH_MISSION ryder1.sc
ELSE
PRINT_NOW MTIME6 1000 1 //Come back between 20:00 6:00
ENDIF
ENDIF
IF flag_ryder_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( RYDER_3 ) 1000 2 //"Ryder mission 3" //PAUL //Ammo Train Truck
GOSUB ryder_script_cut1
LOAD_AND_LAUNCH_MISSION ryder3.sc
ENDIF
IF flag_ryder_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( RYDER_2 ) 1000 2 //"Ryder mission 2" //NEIL //National Guard
GOSUB ryder_script_cut1
LOAD_AND_LAUNCH_MISSION ryder2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO ryder_mission_loop_inner
}
// ***********************************************************************************************************
// *********************************************SMOKE MISSIONS************************************************
smoke_mission_loop:
{
SCRIPT_NAME SMOKE
smoke_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_smoke_mission_counter = 4
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer smokeX smokeY smokeZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_smoke_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( SMOKE_1 ) 1000 2 //"Smoke mission 1" //ANDY //Payback
GOSUB smoke_script_cut1
LOAD_AND_LAUNCH_MISSION smoke1.sc
ENDIF
IF flag_smoke_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( SMOKE_2 ) 1000 2 //"Smoke mission 2" //JUDITH //Northen Mexican chase
GOSUB smoke_script_cut1
LOAD_AND_LAUNCH_MISSION smoke2.sc
ENDIF
IF flag_smoke_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( SMOKE_3 ) 1000 2 //"Smoke mission 3" //IMRAN //Train chase
GOSUB smoke_script_cut1
LOAD_AND_LAUNCH_MISSION smoke3.sc
ENDIF
IF flag_smoke_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( SMOKE_4 ) 1000 2 //"Smoke mission 4" //IMRAN //Dodgy dealings
GOSUB smoke_script_cut1
LOAD_AND_LAUNCH_MISSION smoke4.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO smoke_mission_loop_inner
}
// ***********************************************************************************************************
// *******************************************MC SRAP MISSIONS************************************************
strap_mission_loop:
{
SCRIPT_NAME STRAP
strap_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_strap_mission_counter = 5
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer strapX strapY strapZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_strap_mission_counter = 0
GET_TIME_OF_DAY hours minutes
IF hours >= 22
OR hours < 6
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( STRAP_1 ) 1000 2 //"Strap mission 1" //JUDITH //GTS
GOSUB strap_script_cut1
LOAD_AND_LAUNCH_MISSION strap1.sc
ELSE
PRINT_NOW MTIME5 1000 1 //Come back between 22:00 6:00
ENDIF
ENDIF
IF flag_strap_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( STRAP_2 ) 1000 2 //"Strap mission 2" //IMRAN //Steal from DocG
GOSUB strap_script_cut1
LOAD_AND_LAUNCH_MISSION strap2.sc
ENDIF
IF flag_strap_mission_counter = 2
GET_TIME_OF_DAY hours minutes
IF hours >= 12
OR hours < 5
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( STRAP_3 ) 1000 2 //"Strap mission 3" //ANDY //Kill G's manager
GOSUB strap_script_cut1
LOAD_AND_LAUNCH_MISSION strap3.sc
ELSE
PRINT_NOW MTIME2 1000 1 //Come back between 12:00 6:00
ENDIF
ENDIF
IF flag_strap_mission_counter = 3
flag_player_on_mission = 1
GOSUB strap_script_cut1
PRINT_BIG ( STRAP_4 ) 1000 2 //"Strap mission 4" //ANDY //House party
LOAD_AND_LAUNCH_MISSION strap4.sc
ENDIF
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer strap2X strap2Y strap2Z 1.2 1.2 2.0 FALSE //housepX housepY housepZ
IF CAN_PLAYER_START_MISSION player1
IF flag_strap_mission_counter = 4
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( STRAP_4 ) 1000 2 //"Strap mission 4" //ANDY //House party
GOSUB strap_script_cut2
LOAD_AND_LAUNCH_MISSION strap4.sc
ELSE
PRINT_NOW MTIME1 1000 1 //Come back between 20:00 6:00
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO strap_mission_loop_inner
}
// **********************************************************************************************************
// ********************************************** CESAR MISSIONS ********************************************
cesar_mission_loop:
{
SCRIPT_NAME CESAR
cesar_mission_loop_inner:
WAIT 0
IF flag_cesar_mission_counter = 1
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF flag_cesar_mission_counter = 0
IF cs1_race_is_go = 1
race_selection = CESAR_RACE
show_race_selection = FALSE
LOAD_AND_LAUNCH_MISSION racetour.sc
cs1_race_is_go = 2
ENDIF
ENDIF
ENDIF
IF flag_player_on_mission = 0
IF flag_cesar_mission_counter = 0
IF LOCATE_CHAR_ANY_MEANS_3D scplayer cesarX cesarY cesarZ 4.0 4.0 3.0 TRUE
IF IS_CHAR_IN_ANY_CAR scplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer cs1_player_car
IF IS_CAR_LOW_RIDER cs1_player_car
IF CAN_PLAYER_START_MISSION player1
flag_player_on_mission = 1
PRINT_BIG ( CESAR_1 ) 1000 2 //"Cesar mission 1" //CHRIS M //Race
GOSUB cesar_script_cut1
LOAD_AND_LAUNCH_MISSION cesar1.sc
ENDIF
ELSE
PRINT_NOW CES_CK1 1000 1 //grab yourself a lowrider
ENDIF
ELSE
PRINT_NOW CES_CK1 1000 1 //grab yourself a car
ENDIF
ENDIF
ENDIF
/*
IF flag_mob_la1[3] = 1
IF flag_cesar_mission_counter = 1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer cesarX cesarY cesarZ 4.0 4.0 3.0 TRUE
IF IS_CHAR_IN_ANY_CAR scplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer cs2_player_car
GET_VEHICLE_CLASS cs2_player_car cs2_player_car_model
IF cs2_player_car_model = NORMAL_CAR
OR cs2_player_car_model = POOR_FAMILY_CAR
OR cs2_player_car_model = RICH_FAMILY_CAR
OR cs2_player_car_model = EXECUTIVE_CAR
IF CAN_PLAYER_START_MISSION player1
flag_player_on_mission = 1
GOSUB cesar_script_cut1
PRINT_BIG ( CESAR_2 ) 1000 2 //"Cesar mission 2" //KEV B //Impound
LOAD_AND_LAUNCH_MISSION cesar2.sc
ENDIF
ELSE
PRINT_NOW CES_CK2 1000 1 //not a car
ENDIF
ELSE
PRINT_NOW CES_CK3 1000 1 //grab yourself a car
ENDIF
ENDIF
ENDIF
ENDIF
*/
ENDIF
ENDIF
GOTO cesar_mission_loop_inner
}
// **********************************************************************************************************
// ************************************************ LA1 FINALE **********************************************
la1fin1_mission_loop:
{
SCRIPT_NAME LA1FIN
la1fin1_loop_inner:
WAIT mission_trigger_wait_time
IF flag_la1fin1_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer sweetX sweetY sweetZ 1.0 1.0 2.0 FALSE
IF flag_sweet_mission_counter = 9
IF flag_smoke_mission_counter = 4
IF flag_strap_mission_counter = 5
IF flag_ryder_mission_counter = 3
IF flag_crash_mission_counter = 2
IF flag_cesar_mission_counter = 1
IF CAN_PLAYER_START_MISSION player1
IF flag_la1fin1_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( LA1FIN1 ) 1000 2 //"LA final mission 1" //IMRAN //Motel deal
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION la1fin1.sc
ENDIF
IF flag_la1fin1_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( LA1FIN2 ) 1000 2 //"LA final mission 2" //KEV B //Killers cutlass
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION la1fin2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO la1fin1_loop_inner
}
// **********************************************************************************************************
// ************************************************COUNTRY MISSIONS******************************************
// **********************************************************************************************************
// **********************************************************************************************************
// ********************************************BADLANDS CRASH MISSIONS***************************************
bcrash_mission_loop:
{
SCRIPT_NAME BCRASH
bcrash_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_bcrash_mission_counter = 1
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer bcrashX bcrashY bcrashZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_bcrash_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( BCRASH1 ) 1000 2 //"crash mission 1" //CHRIS M //Witness protection
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION bcrash1.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO bcrash_mission_loop_inner
}
// **********************************************************************************************************
// *******************************************CATALINA MISSIONS**********************************************
cat_mission_loop:
{
VAR_INT flag_cat_mission1_passed flag_cat_mission2_passed flag_cat_mission3_passed flag_cat_mission4_passed
VAR_INT load_and_launch_catalina_mission flag_trigger_trailor_cut
load_and_launch_catalina_mission = -1
SCRIPT_NAME CAT
cat_mission_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF CAN_PLAYER_START_MISSION player1
IF cat_counter = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer catX[5] catY[5] catZ[5] 1.2 1.2 2.0 FALSE //TRUCK STOP
flag_player_on_mission = 1
GOSUB print_cat_text
GOSUB cat_a_script_cut
LOAD_AND_LAUNCH_MISSION catalina.sc
ENDIF
ELSE
IF flag_trailor_cutscene = 1
IF LOCATE_CHAR_ON_FOOT_3D scplayer catX[0] catY[0] catZ[0] 1.2 1.2 2.0 FALSE //LODGE
flag_player_on_mission = 1
GOSUB print_cat_text
GOSUB cat_b_script_cut
LOAD_AND_LAUNCH_MISSION catalina.sc
ENDIF
ENDIF
ENDIF
SWITCH load_and_launch_catalina_mission
CASE 0
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION cat1.sc //ROb liquor
GOTO cat_mission_loop_inner
BREAK
CASE 1
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION cat2.sc //Rob bank
GOTO cat_mission_loop_inner
BREAK
CASE 2
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION cat3.sc //Rob gas
GOTO cat_mission_loop_inner
BREAK
CASE 3
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION cat4.sc //Rob OTB
GOTO cat_mission_loop_inner
BREAK
ENDSWITCH
ENDIF
ELSE
load_and_launch_catalina_mission = -1
ENDIF
IF flag_trigger_trailor_cut = 0
IF cat_counter = 1
REMOVE_BLIP cat_contact_blip
flag_trigger_trailor_cut = 1
ENDIF
ENDIF
IF flag_trigger_trailor_cut = 1
IF flag_truth_mission_counter = 1
IF LOCATE_CHAR_ON_FOOT_3D scplayer bcrashX bcrashY bcrashZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
flag_player_on_mission = 1
PRINT_BIG (TRAILER) 1000 2
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION cat_cuts.sc
flag_trigger_trailor_cut = 2
ENDIF
ENDIF
ENDIF
ENDIF
IF cat_counter > 3
REMOVE_BLIP cat_contact_blip
TERMINATE_THIS_SCRIPT
ENDIF
ENDIF
GOTO cat_mission_loop_inner
}
print_cat_text:
IF cat_counter = 0
PRINT_BIG CATCUT1 1000 2 //"Catalina" //CHRIS R
ENDIF
IF cat_counter = 1
PRINT_BIG CATCUT2 1000 2 //"Catalina" //CHRIS R
ENDIF
IF cat_counter = 2
PRINT_BIG CATCUT3 1000 2 //"Catalina" //CHRIS R
ENDIF
IF cat_counter = 3
PRINT_BIG CATCUT4 1000 2 //"Catalina" //CHRIS R
ENDIF
RETURN
cat_a_script_cut:
IF IS_PLAYER_PLAYING player1
flag_player_on_mission = 1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 664.9277 -479.6112 16.1668 0.0 0.0 0.0 //LODGE
POINT_CAMERA_AT_POINT 665.8948 -479.5685 16.4175 JUMP_CUT
CLEAR_AREA 681.8004 -474.1063 15.5363 3.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 681.8004 -474.1063 15.5363 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
cat_b_script_cut:
IF IS_PLAYER_PLAYING player1
flag_player_on_mission = 1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 856.9968 -27.9584 63.7393 0.0 0.0 0.0 //LODGE
POINT_CAMERA_AT_POINT 857.9943 -28.0286 63.7295 JUMP_CUT
CLEAR_AREA 870.1503 -25.3395 62.9589 3.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 870.1503 -25.3395 62.9589 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
// ************************************************************************************************************
// *******************************************TRUTH MISSIONS***************************************************
truth_mission_loop:
{
SCRIPT_NAME TRU
truth_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_truth_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF CAN_PLAYER_START_MISSION player1
IF flag_truth_mission_counter = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer truth2X truth2Y truth2Z 1.2 1.2 2.0 FALSE
flag_player_on_mission = 1
PRINT_BIG ( TRUTH_1 ) 1000 2 //"truth mission 1" //IMRAN //Body Harvest
GOSUB motel_script_cut1
LOAD_AND_LAUNCH_MISSION truth1.sc
ENDIF
ENDIF
IF flag_truth_mission_counter = 1
AND flag_bcesar_mission_counter > 9
IF LOCATE_CHAR_ON_FOOT_3D scplayer truthX truthY truthZ 1.2 1.2 2.0 FALSE
flag_player_on_mission = 1
PRINT_BIG ( TRUTH_2 ) 1000 2 //"truth mission 2" //ANDY //Full head of green
GOSUB truthfarm_script_cut1
LOAD_AND_LAUNCH_MISSION truth2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO truth_mission_loop_inner
}
// ************************************************************************************************************
// ****************************************** BADLANDS CESAR MISSIONS *****************************************
bcesar_mission_loop:
{
SCRIPT_NAME BCESAR
bcesar_mission_loop_inner:
WAIT 0
IF flag_bcesar_mission_counter = 10
SET_INT_STAT PASSED_BCESAR4 1
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF flag_bcesar_mission_counter = 2 //triggers fail cutscene to clear race cars.
IF start_the_bcesar_race = 0
LOAD_AND_LAUNCH_MISSION bcesar4.sc
ENDIF
ENDIF
IF flag_bcesar_mission_counter = 0
//OR flag_bcesar_mission_counter = 1
//OR flag_bcesar_mission_counter = 2
IF start_the_bcesar_race = 0
IF LOCATE_CHAR_ANY_MEANS_3D scplayer bcesarX bcesarY bcesarZ 4.0 4.0 4.0 TRUE
IF IS_CHAR_IN_ANY_CAR scplayer
IF CAN_PLAYER_START_MISSION player1
GET_CAR_CHAR_IS_USING scplayer car
GET_VEHICLE_CLASS car car_class
IF car_class = NORMAL_CAR
OR car_class = POOR_FAMILY_CAR
OR car_class = RICH_FAMILY_CAR
OR car_class = EXECUTIVE_CAR
OR car_class = WORKER_CAR
OR car_class = TAXI_CAR
flag_bcesar_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( BCESAR4 ) 1000 2 //"bcesar mission 4" //KEV B //Badlands Race1
GOSUB mini_fade
//IF cat_counter < 4
// GOSUB setup_catalina_mission
//ENDIF
LOAD_AND_LAUNCH_MISSION bcesar4.sc
ELSE
PRINT_NOW BC4_7 1000 1
ENDIF
ENDIF
ELSE
PRINT_NOW BC4_2 1000 1
ENDIF
ENDIF
ENDIF
ENDIF
IF flag_bcesar_mission_counter = 3
flag_bcesar_mission_counter = 4
flag_player_on_mission = 1
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION bcesar4.sc
ENDIF
IF flag_stage_of_bcesar_race = 1
AND cat_counter < 4
REMOVE_BLIP cat_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT catX[0] catY[0] catZ[0] cat_blip_icon cat_contact_blip //Cats lodge
flag_stage_of_bcesar_race = 0
ENDIF
IF cat_counter > 3
IF start_the_bcesar_race = 0
IF flag_bcesar_mission_counter = 5
OR flag_bcesar_mission_counter = 6
OR flag_bcesar_mission_counter = 7
IF LOCATE_CHAR_ANY_MEANS_3D scplayer -513.9356 -188.3140 77.4599 1.2 1.2 2.0 FALSE //Sort this out with KEV
IF CAN_PLAYER_START_MISSION player1
flag_bcesar_mission_counter = 5
flag_player_on_mission = 1
PRINT_BIG ( BCES4_2 ) 1000 2 //"bcesar mission 4" //KEV B //Badlands Race2
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION bcesar4.sc
ENDIF
ENDIF
ENDIF
ENDIF
IF flag_bcesar_mission_counter = 8
flag_bcesar_mission_counter = 9
flag_player_on_mission = 1
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION bcesar4.sc
ENDIF
ENDIF
IF cat_counter = 4
AND flag_bcesar_mission_counter > 4
REMOVE_BLIP bcesar_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT -513.9356 -188.3140 77.4599 cesar_blip_icon bcesar_contact_blip
cat_counter = 5
ENDIF
IF start_the_bcesar_race = 1
IF flag_bcesar_mission_counter = 1
flag_bcesar_mission_counter = 2
race_selection = BADLAND_RACE1
show_race_selection = FALSE
LOAD_AND_LAUNCH_MISSION racetour.sc
start_the_bcesar_race = 0
ENDIF
IF flag_bcesar_mission_counter = 6
flag_bcesar_mission_counter = 7
race_selection = BADLAND_RACE2
show_race_selection = FALSE
SET_INT_STAT STARTED_CRASH1 1
LOAD_AND_LAUNCH_MISSION racetour.sc
start_the_bcesar_race = 0
ENDIF
ENDIF
ENDIF
ENDIF
GOTO bcesar_mission_loop_inner
}
// **********************************************************************************************************
// ********************************************SAN FRAN MISSIONS*********************************************
// **********************************************************************************************************
// **********************************************************************************************************
// *********************************************GARAGE MISSIONS**********************************************
garage_mission_loop:
{
SCRIPT_NAME GARAGE
garage_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_garage_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer garageX garageY garageZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_garage_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( GAR_1 ) 1000 2 //"Garage mission 1" //KEV W //Welcome to San Fran
GOSUB garage_script_cut1
LOAD_AND_LAUNCH_MISSION garage1.sc
ENDIF
IF flag_scrash_mission_counter = 1
IF flag_garage_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( GAR_2 ) 1000 2 //"Garage mission 2" //NEIL //Demolition
GOSUB garage_script_cut1
LOAD_AND_LAUNCH_MISSION garage2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO garage_mission_loop_inner
}
// **********************************************************************************************************
// ****************************************SAN FRAN CRASH MISSIONS*******************************************
scrash_mission_loop:
{
SCRIPT_NAME SCRASH
scrash_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_scrash_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer scrashX scrashY scrashZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_scrash_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( SCRA_1 ) 1000 2 //"Scrash mission 1" //KEV B //Plant The Drugs
GOSUB garage_script_cut1
LOAD_AND_LAUNCH_MISSION scrash1.sc
ENDIF
IF flag_scrash_mission_counter = 1
AND flag_Synd_mission_counter = 6
flag_player_on_mission = 1
PRINT_BIG ( SCRA_2 ) 1000 2 //"Scrash mission 2" //Keith //Follow the ped
GOSUB garage_script_cut1
LOAD_AND_LAUNCH_MISSION scrash2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO scrash_mission_loop_inner
}
// ***********************************************************************************************************
// ********************************************WUZI MISSIONS**************************************************
wuzi_mission_loop:
{
SCRIPT_NAME WUZI
wuzi_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_wuzi_mission_counter = 5
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer wuziX wuziY wuziZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_wuzi_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( WUZI_1 ) 1000 2 //"Wuzi mission 1" //KEV B //Meet the People //Mountain Cloud Boy
GOSUB wuzi_script_cut1
LOAD_AND_LAUNCH_MISSION wuzi1.sc
ENDIF
IF flag_wuzi_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( FAR_4 ) 1000 2 //"farlie mission 4" PAUL D //Airport Pickup
GOSUB wuzi_script_cut1
LOAD_AND_LAUNCH_MISSION farlie4.sc
ENDIF
IF flag_wuzi_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( FAR_5 ) 1000 2 //"farlie mission 5" JUDITH //Cross Country Decoy
GOSUB wuzi_script_cut1
LOAD_AND_LAUNCH_MISSION farlie5.sc
ENDIF
IF flag_wuzi_mission_counter = 3
GET_INT_STAT UNDERWATER_BREATH_STAMINA swim_stamina_check_main
IF swim_stamina_check_main > 50
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( WUZI_2 ) 1000 2 //"Wuzi mission 2" //SIMON //Swimming with the Sharks
GOSUB wuzi_script_cut1
LOAD_AND_LAUNCH_MISSION wuzi2.sc
ELSE
PRINT_NOW MTIME1 1000 1 //Come back between 20:00 6:00
ENDIF
ELSE
// run alternate cutscene no matter what the time of day is
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( WUZI_2 ) 1000 2 //"Wuzi mission 2" //SIMON //Swimming with the Sharks
GOSUB wuzi_script_cut1
LOAD_AND_LAUNCH_MISSION wuzi2.sc
//PRINT_NOW WZI2_60 1000 1
ENDIF
ENDIF
IF flag_wuzi_mission_counter = 4
flag_player_on_mission = 1
PRINT_BIG ( WUZI_4 ) 1000 2 //"Wuzi mission 4" //ANDY //Storm Freighter
GOSUB wuzi_script_cut1
LOAD_AND_LAUNCH_MISSION wuzi4.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO wuzi_mission_loop_inner
}
// ****************************************************************************************************************
// ********************************************SYNDICATE MISSIONS**************************************************
Synd_mission_loop:
{
SCRIPT_NAME SYND
Synd_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_Synd_mission_counter = 10
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer garageX garageY garageZ 1.2 1.2 2.0 FALSE //garage
IF CAN_PLAYER_START_MISSION player1
IF flag_synd_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( SYND_1 ) 1000 2 //"Syndicate mission 1" //CHRIS M //Recon
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION Syn1.sc
ENDIF
IF flag_Synd_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( SYND_2 ) 1000 2 //"Syndicate mission 2" //NEIL //Blonde Ambition PART1
GOSUB garage_script_cut1
LOAD_AND_LAUNCH_MISSION Syn2.sc
ENDIF
IF flag_Synd_mission_counter = 5
//GOSUB garage_script_cut1
flag_player_on_mission = 1
PRINT_BIG ( SYND_3 ) 1000 2 //"Syndicate mission 3" //JUDITH //Outrider
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION Syn3.sc
ENDIF
IF flag_Synd_mission_counter = 6
AND flag_scrash_mission_counter = 2
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
flag_player_on_mission = 1
CLEAR_PRINTS
PRINT_BIG ( SYND_4 ) 1000 2 //"Syndicate mission 4" //PAUL //Call to arms
GOSUB garage_script_cut1
LOAD_AND_LAUNCH_MISSION Syn4.sc
ELSE
PRINT_NOW MTIME1 1000 1 //Come back between 20:00 6:00
ENDIF
ENDIF
IF flag_Synd_mission_counter = 8
flag_player_on_mission = 1
PRINT_BIG ( SYND_6 ) 1000 2 //"Syndicate mission 6" //Steve T //Toreno's Plane
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION Syn6.sc
ENDIF
IF flag_Synd_mission_counter = 9
AND flag_wuzi_mission_counter = 5
flag_player_on_mission = 1
PRINT_BIG ( SYND_7 ) 1000 2 //"Syndicate mission 7" //Paul D//Los Cabras Crack Lab
GOSUB garage_script_cut1
LOAD_AND_LAUNCH_MISSION Syn7.sc
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_Synd_mission_counter = 7
IF LOCATE_CHAR_ON_FOOT_3D scplayer -1717.05 1280.91 6.23 1.2 1.2 2.5 FALSE //Pier69
IF CAN_PLAYER_START_MISSION player1
flag_player_on_mission = 1
PRINT_BIG ( SYND_5 ) 1000 2 //"Syndicate mission 5" //ANDY //Pier69
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION Syn5.sc
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer SyndX SyndY SyndZ 1.2 1.2 2.5 FALSE //Pleasure domes
IF CAN_PLAYER_START_MISSION player1
IF flag_Synd_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( SYND_2 ) 1000 2 //"Syndicate mission 2" //NEIL //Blonde Ambition PART2
GOSUB pleasure_domes_script_cut1
LOAD_AND_LAUNCH_MISSION Syn2.sc
ENDIF
IF flag_Synd_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( FAR_2 ) 1000 2 //"farlie mission 2" JUDITH //Bike Bust Up
GOSUB pleasure_domes_script_cut1
LOAD_AND_LAUNCH_MISSION farlie2.sc
ENDIF
IF flag_Synd_mission_counter = 4
flag_player_on_mission = 1
PRINT_BIG ( FAR_3 ) 1000 2 //"farlie mission 3" KEV W //Hostage
GOSUB pleasure_domes_script_cut1
LOAD_AND_LAUNCH_MISSION farlie3.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO Synd_mission_loop_inner
}
// ***********************************************************************************************************
// ********************************************STEAL MISSIONS*************************************************
steal_mission_loop:
{
SCRIPT_NAME STEAL
steal_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_steal_mission_counter = 4
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer stealX stealY stealZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_steal_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( STEAL_1 ) 1000 2 //"steal mission 1" //CHRIS M //Follow
GOSUB steal_script_cut1
LOAD_AND_LAUNCH_MISSION steal1.sc
ENDIF
IF flag_steal_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( STEAL_2 ) 1000 2 //"steal mission 2" //ANDY //Steal from Car Showroom
GOSUB steal_script_cut1
LOAD_AND_LAUNCH_MISSION steal2.sc
ENDIF
IF flag_steal_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( STEAL_4 ) 1000 2 //"steal mission 4" //NEIL //Car Crane
GOSUB steal_script_cut1
LOAD_AND_LAUNCH_MISSION steal4.sc
ENDIF
IF flag_steal_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( STEAL_5 ) 1000 2 //"steal mission 5" //ANDY //Stinger Trap
GOSUB steal_script_cut1
LOAD_AND_LAUNCH_MISSION steal5.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO steal_mission_loop_inner
}
// ***********************************************************************************************************
// ********************************************TOURNAMENT RACE MISSIONS***************************************
trace_mission_loop:
{
SCRIPT_NAME TRACE
trace_mission_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer testsX testsY testsZ 20.0 20.0 10.0 FALSE
GET_AREA_VISIBLE main_visible_area
IF NOT main_visible_area = 0
IF f1_scripted_cut = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer -2031.4 -116.5 1034.1 1.0 1.0 1.5 TRUE
IF CAN_PLAYER_START_MISSION player1
IF flag_garage_mission_counter > 0
flag_player_on_mission = 1
SET_FADING_COLOUR 0 0 0
PRINT_BIG ( FAR_1 ) 1000 2 //"farlie mission 1" ANDY //The Tests
SET_PLAYER_CONTROL player1 OFF
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION farlie1.sc
ENDIF
ENDIF
ENDIF
ELSE
IF LOCATE_CHAR_ON_FOOT_3D scplayer testsX testsY testsZ 1.0 1.0 1.5 TRUE
IF CAN_PLAYER_START_MISSION player1
IF flag_garage_mission_counter > 0
flag_player_on_mission = 1
SET_FADING_COLOUR 0 0 0
PRINT_BIG ( FAR_1 ) 1000 2 //"farlie mission 1" ANDY //The Tests
SET_PLAYER_CONTROL player1 OFF
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION farlie1.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF CAN_PLAYER_START_MISSION player1
IF flag_mob_sanfran[3] = 1
IF LOCATE_CHAR_ON_FOOT_3D scplayer traceX[0] traceY[0] traceZ[0] 1.2 1.2 2.0 FALSE
flag_player_on_mission = 1
SET_PLAYER_CONTROL player1 OFF
PRINT_BIG TRACE_1 1000 2 //"trace mission 1" //CHRIS R //Race Tournament
show_race_selection = TRUE
menu_mode = LA_RACES
LOAD_AND_LAUNCH_MISSION racetour.sc
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer traceX[1] traceY[1] traceZ[1] 1.2 1.2 2.0 FALSE
flag_player_on_mission = 1
SET_PLAYER_CONTROL player1 OFF
PRINT_BIG TRACE_1 1000 2 //"trace mission 1" //CHRIS R //Race Tournament
show_race_selection = TRUE
menu_mode = SF_RACES
LOAD_AND_LAUNCH_MISSION racetour.sc
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer traceX[2] traceY[2] traceZ[2] 1.2 1.2 2.0 FALSE
flag_player_on_mission = 1
SET_PLAYER_CONTROL player1 OFF
PRINT_BIG TRACE_1 1000 2 //"trace mission 1" //CHRIS R //Race Tournament
show_race_selection = TRUE
menu_mode = LV_RACES
LOAD_AND_LAUNCH_MISSION racetour.sc
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer traceX[3] traceY[3] traceZ[3] 1.2 1.2 2.0 FALSE
flag_player_on_mission = 1
SET_PLAYER_CONTROL player1 OFF
PRINT_BIG TRACE_1 1000 2 //"trace mission 1" //CHRIS R //Race Tournament
show_race_selection = TRUE
menu_mode = AIR_RACES
LOAD_AND_LAUNCH_MISSION racetour.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO trace_mission_loop_inner
}
// ***********************************************************************************************************
// ****************************************ZERO RC MISSIONS***************************************************
zero_mission_loop:
{
SCRIPT_NAME zero
zero_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_zero_mission_counter = 3
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer zeroX zeroY zeroZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_zero_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( ZERO_1 ) 1000 2 //"zero mission 1" //KEV W //Scramble
GOSUB zero_script_cut1
LOAD_AND_LAUNCH_MISSION zero1.sc
ENDIF
IF flag_zero_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( zero_2 ) 1000 2 //"zero mission 2" //KEV W //Rolling Thunder
GOSUB zero_script_cut1
LOAD_AND_LAUNCH_MISSION zero2.sc
ENDIF
IF flag_zero_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( ZERO_4 ) 1000 2 //"zero mission 4" //NEIL //Return Fire
GOSUB zero_script_cut1
LOAD_AND_LAUNCH_MISSION zero4.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO zero_mission_loop_inner
}
// **********************************************************************************************************
// ********************************************DESERT MISSIONS***********************************************
// **********************************************************************************************************
// **********************************************************************************************************
// *********************************************DESERT MISSIONS**********************************************
desert_mission_loop:
{
SCRIPT_NAME DESERT
desert_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_desert_mission_counter = 9
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer desertX desertY desertZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_desert_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( DESERT1 ) 1000 2 //"desert mission 1" //DAVE B //Monster Mash
GOSUB ranch_script_cut1
LOAD_AND_LAUNCH_MISSION desert1.sc
ENDIF
IF flag_mob_sanfran[5] = 1
IF flag_desert_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( DESERT2 ) 1000 2 //"desert mission 2" //ANDY //Jump linerunner //HighJack
GOSUB ranch_script_cut1
LOAD_AND_LAUNCH_MISSION desert2.sc
ENDIF
ENDIF
IF flag_mob_sanfran[7] = 1
IF flag_desert_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( DESERT3 ) 1000 2 //"desert mission 3" //NEIL //Contraband
GOSUB ranch_script_cut1
LOAD_AND_LAUNCH_MISSION desert3.sc
ENDIF
ENDIF
IF flag_desert_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( DESERT4 ) 1000 2 //"desert mission 4" //CRAIG //Verdant Meadows
GOSUB ranch_script_cut1
LOAD_AND_LAUNCH_MISSION desert4.sc
ENDIF
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer desert2X desert2Y desert2Z 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF pilot_test_passed = 1
IF flag_desert_mission_counter = 5
flag_player_on_mission = 1
PRINT_BIG ( DESERT6 ) 1000 2 //"desert mission 6" //Keith //N.O.E.
GOSUB airstrip_script_cut2
LOAD_AND_LAUNCH_MISSION desert6.sc
ENDIF
ENDIF
IF flag_desert_mission_counter = 6
flag_player_on_mission = 1
PRINT_BIG ( DESERT9 ) 1000 2 //"desert mission 9" //KEV B //C3 Shootout
GOSUB airstrip_script_cut2
LOAD_AND_LAUNCH_MISSION desert9.sc
ENDIF
IF flag_desert_mission_counter = 7
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
CLEAR_PRINTS
flag_player_on_mission = 1
PRINT_BIG ( DESERT8 ) 1000 2 //"desert mission 8" //IMRAN //Steal Jetpack
GOSUB airstrip_script_cut2
LOAD_AND_LAUNCH_MISSION desert8.sc
ELSE
PRINT_NOW MTIME1 1000 1 //Come back between 20:00 6:00
ENDIF
ENDIF
IF flag_desert_mission_counter = 8
AND flag_mob_vegas[11] = 1
flag_player_on_mission = 1
PRINT_BIG ( DESER10 ) 1000 2 //"desert mission 10" //CHRIS R //Train Heist
GOSUB airstrip_script_cut2
LOAD_AND_LAUNCH_MISSION desert10.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO desert_mission_loop_inner
}
// ************************************************************************************************************
// ************************************* Pilot School Missions ************************************************
// pilot school
pilot_school_loop:
{
SCRIPT_NAME PSCH
pilot_school_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer pilotX pilotY pilotZ 1.0 1.0 1.0 TRUE
IF CAN_PLAYER_START_MISSION player1
IF flag_desert_mission_counter > 3
SET_FADING_COLOUR 0 0 0
flag_player_on_mission = 1
IF played_scipted_airscript_cut = 0
GOSUB airstrip_script_cut1
played_scipted_airscript_cut = 1
ELSE
SET_FADING_COLOUR 0 0 0
IF pilot_test_passed = 0
PRINT_BIG ( DESERT5 ) 1000 2 //"Pilot School"
ENDIF
SET_PLAYER_CONTROL player1 OFF
GOSUB mini_fade
ENDIF
LOAD_AND_LAUNCH_MISSION desert5.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO pilot_school_loop_inner
}
// **********************************************************************************************************
// ********************************************VEGAS MISSIONS************************************************
// **********************************************************************************************************
// ***********************************************************************************************************
// ********************************************Casino Missions************************************************
casino_mission_loop:
{
SCRIPT_NAME CASINO
casino_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_casino_mission_counter = 9
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer casinoX casinoY casinoZ 1.2 1.2 2.0 FALSE
IF flag_casino_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( CASINO1 ) 1000 2 //"casino mission 1" //CHRIS M //Wind up
GOSUB triad_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino1.sc
ENDIF
IF flag_casino_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( CASEEN2 ) 1000 2 //"casino mission 2" //PAUL //Kickstart Quarry //Explosive situation
GOSUB triad_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino2.sc
ENDIF
IF flag_casino_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( CASINO3 ) 1000 2 //"casino mission 3" //STEVE //Fake Chips
GOSUB triad_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino3.sc
ENDIF
IF flag_casino_mission_counter = 6
flag_player_on_mission = 1
PRINT_BIG ( CASINO7 ) 1000 2 //"casino mission 7" //CRAIG //Clear & Present Danger
GOSUB triad_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino7_cut.sc
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer 2026.6028 1007.7353 9.8127 1.2 1.2 2.0 FALSE
IF flag_casino_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( CASINO4 ) 1000 2 //"casino mission 4" //DAVE //Paul & Maccer
GOSUB triad_casino_script_cut3
LOAD_AND_LAUNCH_MISSION casino4.sc
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer heistX heistY heistZ 1.2 1.2 2.0 FALSE
IF flag_casino_mission_counter = 4
AND flag_mob_vegas[2] = 1
flag_player_on_mission = 1
PRINT_BIG ( CASINO5 ) 1000 2 //"casino mission 5" //SIMON //Hospital Hi Jinx
GOSUB mafia_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino5.sc
ENDIF
IF flag_casino_mission_counter = 5
flag_player_on_mission = 1
PRINT_BIG ( CASINO6 ) 1000 2 //"casino mission 6" //SIMON //Abattoir //Meat business
GOSUB mafia_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino6.sc
ENDIF
IF flag_casino_mission_counter = 7
AND flag_mob_vegas[3] = 1
flag_player_on_mission = 1
PRINT_BIG ( CASINO9 ) 1000 2 //"casino mission 9" //SIMON //Freefall
GOSUB mafia_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino9.sc
ENDIF
IF flag_casino_mission_counter = 8
AND flag_mob_vegas[4] = 1
flag_player_on_mission = 1
PRINT_BIG ( CASIN10 ) 1000 2 //"casino mission 10" //WILLIE //St Marks Bistro
GOSUB mafia_casino_script_cut1
LOAD_AND_LAUNCH_MISSION casino10.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO casino_mission_loop_inner
}
// ***********************************************************************************************************
// ********************************************Vcrash Missions**************************************************
vcrash_mission_loop:
{
SCRIPT_NAME VCRASH
vcrash_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_vcrash_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer vcrashX vcrashY vcrashZ 1.2 1.2 2.0 FALSE
IF flag_vcrash_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( VCRASH1 ) 1000 2 //"vcrash mission 1" //CHRIS R //Uber Chase
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION vcrash1.sc
ENDIF
ENDIF
IF flag_vcrash_mission_counter = 1
AND flag_mob_vegas[0] = 1
IF LOCATE_CHAR_ON_FOOT_3D scplayer -378.75 2235.85 41.42 1.2 1.2 2.0 FALSE //Triggered from mobile (need coords for desert town)
flag_player_on_mission = 1
PRINT_BIG ( VCRASH2 ) 1000 2 //"vcrash mission 2" //CHRIS R //High Noon
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION vcrash2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO vcrash_mission_loop_inner
}
// ***********************************************************************************************************
// ********************************************Doc G Missions*************************************************
doc_mission_loop:
{
SCRIPT_NAME DOC
doc_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_doc_mission_counter = 1
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer docX docY docZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_doc_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( DOC_2 ) 1000 2 //"doc mission 2" //PAUL //Jumper
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION doc2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO doc_mission_loop_inner
}
// ***********************************************************************************************************
// ********************************************Heist Missions*************************************************
heist_mission_loop:
{
SCRIPT_NAME HEIST
//VIEW_INTEGER_VARIABLE flag_heist_mission_counter flag_heist_mission_counter
heist_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_heist_mission_counter = 6
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer TheheistX TheheistY TheheistZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_heist_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( HEIST_1 ) 1000 2 //"heist mission 1" //STEVE //Photo Plans
GOSUB triad_casino_script_cut2
LOAD_AND_LAUNCH_MISSION heist1.sc
ENDIF
IF flag_heist_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( HEIST_3 ) 1000 2 //"heist mission 2" //DAVE //Girlfriend
GOSUB triad_casino_script_cut2
LOAD_AND_LAUNCH_MISSION heist3.sc
ENDIF
IF flag_heist_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( HEIST_2 ) 1000 2 //"heist mission 2" //DAVE //Dam charges
GOSUB triad_casino_script_cut2
LOAD_AND_LAUNCH_MISSION heist2.sc
ENDIF
IF flag_heist_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( HEIST_4 ) 1000 2 //"heist mission 4" //STEVE T //Street Hawk
GOSUB triad_casino_script_cut2
LOAD_AND_LAUNCH_MISSION heist4.sc
ENDIF
IF flag_heist_mission_counter = 4
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
flag_player_on_mission = 1
CLEAR_PRINTS
PRINT_BIG ( HEIST_5 ) 1000 2 //"heist mission 5" //WILLIE //Steal Heli Magnate
GOSUB triad_casino_script_cut2
LOAD_AND_LAUNCH_MISSION heist5.sc
ELSE
PRINT_NOW MTIME1 1000 1 //Come back between 20:00 6:00
ENDIF
ENDIF
IF flag_heist_mission_counter = 5
AND flag_mob_vegas[6] = 1
IF keycard_aquired_from_millie = 1
flag_player_on_mission = 1
PRINT_BIG ( HEIST_9 ) 1000 2 //"heist mission 9" //PAUL D //The Heist
GOSUB triad_casino_script_cut2
LOAD_AND_LAUNCH_MISSION heist9.sc
ELSE
PRINT_NOW NEEDKEY 1000 1 //Need Key card
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO heist_mission_loop_inner
}
// **********************************************************************************************************
// *******************************************(LA2) MISSIONS*************************************************
// **********************************************************************************************************
// **********************************************************************************************************
// ******************************************Mansion Missions************************************************
mansion_mission_loop:
{
SCRIPT_NAME MANSION
mansion_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_mansion_mission_counter = 4
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer casinoX casinoY casinoZ 1.2 1.2 2.0 FALSE
IF flag_mansion_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( MAN_1 ) 1000 2 //"mansion mission 1" //SIMON //Take Back G's Mansion
GOSUB triad_casino_script_cut1
LOAD_AND_LAUNCH_MISSION mansion1.sc
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer mansionX mansionY mansionZ 1.2 1.2 2.0 FALSE
IF flag_mansion_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( MAN_2 ) 1000 2 //"mansion mission 2" //CRAIG //Steal Harrier
GOSUB LA_mansion_script_cut1
LOAD_AND_LAUNCH_MISSION mansion2.sc
ENDIF
IF flag_mansion_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( MAN_3 ) 1000 2 //"mansion mission 3" //PAUL //Pick up sweet
GOSUB LA_mansion_script_cut1
LOAD_AND_LAUNCH_MISSION mansion3.sc
ENDIF
IF flag_mansion_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( MAN_5 ) 1000 2 //"mansion mission 5" //SIMON //Take down MC Strap
GOSUB LA_mansion_script_cut1
LOAD_AND_LAUNCH_MISSION mansion5.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO mansion_mission_loop_inner
}
// ***********************************************************************************************************
// ******************************************Grove Missions***************************************************
grove_mission_loop:
{
SCRIPT_NAME GROVE
grove_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_grove_mission_counter = 2
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer introX introY introZ 1.2 1.2 2.0 FALSE
IF flag_grove_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( GROVE_1 ) 1000 2 //"grove mission 1" //WILLIE //Beat Down on b Dup
GOSUB mother_script_cut
LOAD_AND_LAUNCH_MISSION grove1.sc
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer sweetX sweetY sweetZ 1.2 1.2 2.0 FALSE
IF flag_grove_mission_counter = 1
flag_player_on_mission = 1
PRINT_BIG ( GROVE_2 ) 1000 2 //"grove mission 2" //PAUL //Grove 4 life
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION grove2.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO grove_mission_loop_inner
}
// ***********************************************************************************************************
// ******************************************Riot Missions****************************************************
riot_mission_loop:
{
SCRIPT_NAME RIOT
riot_mission_loop_inner:
WAIT mission_trigger_wait_time
IF flag_riot_mission_counter = 5
TERMINATE_THIS_SCRIPT
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer mansionX mansionY mansionZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_riot_mission_counter = 0
flag_player_on_mission = 1
PRINT_BIG ( RIOT_1 ) 1000 2 //"riot mission 1" //ANDY //RIOT!
GOSUB LA_mansion_script_cut1
LOAD_AND_LAUNCH_MISSION riot1.sc //andy
ENDIF
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer sweetX sweetY sweetZ 1.2 1.2 2.0 FALSE
IF CAN_PLAYER_START_MISSION player1
IF flag_riot_mission_counter = 1
FIND_MAX_NUMBER_OF_GROUP_MEMBERS returned_respect
IF returned_respect > 1
flag_player_on_mission = 1
PRINT_BIG ( RIOT_2 ) 1000 2 //"riot mission 2" //ANDY //DESPERADOS
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION riot2.sc
ELSE
PRINT_NOW MOREREP 1000 1 //You need more respect
IF respect_help_played = 0
PRINT_HELP HELP101
respect_help_played = 1
ENDIF
ENDIF
ENDIF
IF flag_mob_LA2[3] = 1
IF flag_mob_LA2[2] = 1
IF flag_riot_mission_counter = 2
flag_player_on_mission = 1
PRINT_BIG ( RIOT_4 ) 1000 2 //"riot mission 4" //IMRAN //CARTER BLOCK
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION finaleA.sc
ENDIF
ELSE
PRINT_NOW MORTURF 2000 1 //Take over gang territories
ENDIF
ENDIF
IF flag_riot_mission_counter = 3
flag_player_on_mission = 1
PRINT_BIG ( RIOT_4 ) 1000 2 //"riot mission 4" //IMRAN //CARTER BLOCK
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION finaleB.sc
ENDIF
IF flag_riot_mission_counter = 4
flag_player_on_mission = 1
PRINT_BIG ( RIOT_4 ) 1000 2 //"riot mission 4" //IMRAN //CARTER BLOCK
GOSUB sweet_script_cut1
LOAD_AND_LAUNCH_MISSION finaleC.sc
ENDIF
ENDIF
ENDIF
IF flag_riot_mission_counter = 3
AND finaleB_played_first_time_round = 0
finaleB_played_first_time_round = 1
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION finaleB.sc
ENDIF
IF flag_riot_mission_counter = 4
AND finaleB_played_first_time_round = 1
finaleB_played_first_time_round = 2
flag_player_on_mission = 1
LOAD_AND_LAUNCH_MISSION finaleC.sc
ENDIF
ENDIF
ENDIF
GOTO riot_mission_loop_inner
}
// *********************************************AMBIENT STUFF**************************************************
// ************************************************************************************************************
// ********************************************ODD JOBS********************************************************
// ************************************************************************************************************
// *******************************************Shooting Range Missions******************************************
// Shoot Mission 1
shoot_range_loop:
{
SCRIPT_NAME SHOOT
shoot_range_loop_inner:
WAIT 125
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF NOT main_visible_area = 0
IF flag_shooting_range_mission = 0
//find which range the player is in
IF flag_dont_start_shooting_range = 0
sr_i = 0
WHILE sr_i < 4
IF LOCATE_CHAR_ON_FOOT_3D scplayer Srange_X[sr_i] Srange_Y[sr_i] Srange_Z[sr_i] 20.0 20.0 10.0 FALSE
IF CAN_PLAYER_START_MISSION player1
flag_player_on_mission = 1
SR_range_id = sr_i
LOAD_AND_LAUNCH_MISSION sh_range.sc
ENDIF
ENDIF
sr_i ++
ENDWHILE
ENDIF
ENDIF
ENDIF
ELSE
IF NOT main_visible_area = 0
IF flag_dont_start_shooting_range = 0
flag_dont_start_shooting_range = 1
ENDIF
ENDIF
ENDIF
IF flag_dont_start_shooting_range = 1
IF main_visible_area = 0
flag_dont_start_shooting_range = 0
ENDIF
ENDIF
ENDIF
GOTO shoot_range_loop_inner
}
// ************************************************************************************************************
// *******************************************gym**************************************************************
VAR_INT main_visible_area_char
gym_loop:
{
SCRIPT_NAME gym
gym_loop_inner:
WAIT 70
IF flag_player_on_mission = 0
IF flag_mob_la1[6] = 1 // WD_SCRIPT_BYPASS // now activates when you mission jump
IF switch_the_gym_interiors_off = 0
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
switch_the_gym_interiors_off = 1
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer 767.1537 4.8323 999.7185 50.0 50.0 10.0 FALSE
GET_CHAR_AREA_VISIBLE scplayer main_visible_area_char
IF main_visible_area_char = 5
LOAD_AND_LAUNCH_MISSION gymLS.sc // PAUL D
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer 768.4777 -37.1737 999.6865 50.0 50.0 10.0 FALSE
GET_CHAR_AREA_VISIBLE scplayer main_visible_area_char
IF main_visible_area_char = 6
LOAD_AND_LAUNCH_MISSION gymSF.sc // PAUL D
ENDIF
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer 766.5975 -65.2930 999.6562 50.0 50.0 10.0 FALSE
GET_CHAR_AREA_VISIBLE scplayer main_visible_area_char
IF main_visible_area_char = 7
LOAD_AND_LAUNCH_MISSION gymLV.sc // PAUL D
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF flag_mob_la1[6] = 1
IF main_visible_area = 0
IF switch_the_gym_interiors_off = 1
SWITCH_ENTRY_EXIT gym1 FALSE
SWITCH_ENTRY_EXIT gym2 FALSE
SWITCH_ENTRY_EXIT gym3 FALSE
switch_the_gym_interiors_off = 0
ENDIF
ENDIF
ENDIF
ENDIF
GOTO gym_loop_inner
}
// ************************************************************************************************************
// *******************************************trucking*********************************************************
trucking_loop:
{
SCRIPT_NAME TRUCKS
trucking_loop_inner:
WAIT 0
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
LVAR_INT nAtLocation
nAtLocation = 0
//if we have passed [Tanker Commander] another corona appears at the trucking location that I cannot find, therefore
//to accomadate the corona not rendering but being functional on mission skip
IF flag_cat_mission3_passed = 1
IF LOCATE_CHAR_ON_FOOT_3D scplayer truckX truckY truckZ 1.2 1.2 1.5 FALSE
nAtLocation = 1
ENDIF
ELSE
IF LOCATE_CHAR_ON_FOOT_3D scplayer truckX truckY truckZ 1.2 1.2 1.5 TRUE
nAtLocation = 1
ENDIF
ENDIf
IF nAtLocation = 1
IF CAN_PLAYER_START_MISSION player1
SET_PLAYER_CONTROL player1 OFF
DRAW_ODDJOB_TITLE_BEFORE_FADE FALSE
PRINT_BIG ( TRUCK ) 3000 5 //Trucking
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION truck.sc
ENDIF
ENDIF
ENDIF
ENDIF
GOTO trucking_loop_inner
}
// ************************************************************************************************************
// *********************************************quarry*********************************************************
quarry_loop:
{
SCRIPT_NAME QUARRYS
quarry_loop_inner:
WAIT 0
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer quarryX quarryY quarryZ 1.5 1.8 1.5 TRUE
IF CAN_PLAYER_START_MISSION player1
SET_PLAYER_CONTROL player1 OFF
DRAW_ODDJOB_TITLE_BEFORE_FADE FALSE
PRINT_BIG ( QUARRY ) 3000 5 //Quarry
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION quarry.sc
ENDIF
ENDIF
ENDIF
ENDIF
GOTO quarry_loop_inner
}
// ************************************************************************************************************
// ********************************************Boat School**************************************************
boats_school_loop:
{
SCRIPT_NAME BSCHOO
boats_school_loop_inner:
WAIT 0
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer boatsX boatsY boatsZ 1.0 1.0 1.5 TRUE
IF CAN_PLAYER_START_MISSION player1
SET_PLAYER_CONTROL player1 OFF
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION boat.sc
ENDIF
ENDIF
ENDIF
ENDIF
GOTO boats_school_loop_inner
}
// ************************************************************************************************************
// ********************************************Bike School**************************************************
bikes_school_loop:
{
SCRIPT_NAME BIKES
bikes_school_loop_inner:
WAIT 0
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer bikesX bikesY bikesZ 1.0 1.0 1.5 TRUE
IF CAN_PLAYER_START_MISSION player1
SET_PLAYER_CONTROL player1 OFF
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION bikesch.sc
ENDIF
ENDIF
ENDIF
ENDIF
GOTO bikes_school_loop_inner
}
// *********************************************R3 MISSIONS****************************************************
// ************************************************************************************************************
// ************************************************************************************************************
// ********************************************R3 Missions*****************************************************
// Taxi Mission 1
R3missions_loop:
{
SCRIPT_NAME R3
R3missions_loop_inner:
WAIT 0 // A long wait here (70) was messing up detection of the "Mission Accept" button being tap-released.
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_ANY_CAR scplayer
IF NOT IS_MINIGAME_IN_PROGRESS
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_date
ELSE
IF IS_CHAR_IN_TAXI scplayer
OR IS_CHAR_IN_MODEL scplayer AMBULAN
OR IS_CHAR_IN_MODEL scplayer firetruk
OR IS_CHAR_IN_MODEL scplayer HUNTER
OR IS_CHAR_IN_MODEL scplayer BOXBURG
OR IS_CHAR_IN_ANY_POLICE_VEHICLE scplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer R3_player_car
IF NOT IS_CAR_IN_WATER R3_player_car
IF IS_CHAR_IN_TAXI scplayer
IF NOT IS_PLAYER_IN_SHORTCUT_TAXI Player1 //TAXI Mission*************************************************************************
IF flag_taxiodd_mission_launched = 0
IF R3_mission_help = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP ( TTUTOR ) // Tap ~m~~widget_mission_start_vigilante~ to toggle taxi missions on.
R3_mission_help = 1
ENDIF
ENDIF
IF IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WHILE IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WAIT 0
IF flag_player_on_mission = 1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_PLAYER_PLAYING player1
OR NOT IS_CHAR_IN_TAXI scplayer
GOTO R3missions_loop_inner
ENDIF
IF IS_MINIGAME_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
ENDWHILE
PRINT_BIG ( TAXI_M ) 6000 5
WAIT 0
LOAD_AND_LAUNCH_MISSION taxiodd.sc
flag_taxiodd_mission_launched = 1
GOTO R3missions_loop_inner
ENDIF
ENDIF
ENDIF //IS_PLAYER_IN_SHORTCUT_TAXI Player1F
ENDIF // IF IS_CHAR_IN_TAXI scplayer
IF IS_CHAR_IN_MODEL scplayer AMBULAN //AMBULANCE MISSION**************************************************************************
IF flag_player_on_ambulance_mission = 0
IF R3_mission_help = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP ( ATUTOR ) //Press RIGHTSHOCK to start
R3_mission_help = 1
ENDIF
ENDIF
IF IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WHILE IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WAIT 0
IF flag_player_on_mission = 1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_PLAYER_PLAYING player1
OR NOT IS_CHAR_IN_MODEL scplayer ambulan
GOTO R3missions_loop_inner
ENDIF
IF IS_MINIGAME_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
ENDWHILE
PRINT_BIG ( AMBUL_M ) 6000 5
WAIT 0
LOAD_AND_LAUNCH_MISSION ambulance.sc
//been_in_ambulance_before = 1
GOTO R3missions_loop_inner
ENDIF
ENDIF
ENDIF // IF IS_CHAR_IN_MODEL scplayer ambula
IF IS_CHAR_IN_MODEL scplayer FIRETRUK //FIRETRUCK MISSION*************************************************************************
IF flag_player_on_fire_mission = 0
IF R3_mission_help = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP ( FTUTOR ) //Press RIGHTSHOCK to start
R3_mission_help = 1
ENDIF
ENDIF
IF IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WHILE IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WAIT 0
IF flag_player_on_mission = 1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_PLAYER_PLAYING player1
OR NOT IS_CHAR_IN_MODEL scplayer firetruk
GOTO R3missions_loop_inner
ENDIF
IF IS_MINIGAME_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
ENDWHILE
PRINT_BIG ( FIRE_M ) 6000 5
WAIT 0
LOAD_AND_LAUNCH_MISSION firetruck.sc
//been_in_a_firetruk_before = 1
GOTO R3missions_loop_inner
ENDIF
ENDIF
ENDIF // IF IS_CHAR_IN_MODEL scplayer firetruk
IF IS_CHAR_IN_ANY_POLICE_VEHICLE scplayer //COP MISSION***************************************************************************
OR IS_CHAR_IN_MODEL scplayer HUNTER
IF R3_mission_help = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP ( CTUTOR ) //Press RIGHTSHOCK to start
R3_mission_help = 1
ENDIF
ENDIF
IF IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WHILE IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WAIT 0
IF flag_player_on_mission = 1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_PLAYER_PLAYING player1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_CHAR_IN_ANY_POLICE_VEHICLE scplayer
AND NOT IS_CHAR_IN_MODEL scplayer HUNTER
GOTO R3missions_loop_inner
ENDIF
IF IS_MINIGAME_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
ENDWHILE
IF IS_CHAR_IN_MODEL scplayer HUNTER
PRINT_BIG COP_M3 6000 5
ELSE
IF IS_CHAR_IN_MODEL scplayer CHEETAH
PRINT_BIG COP_M2 6000 5
ELSE
PRINT_BIG COP_M 6000 5
ENDIF
ENDIF
WAIT 0
LOAD_AND_LAUNCH_MISSION copcar.sc//CHRIS R
//been_in_a_copcar_before = 1
GOTO R3missions_loop_inner
ENDIF
ENDIF // If in some kind of cop car
IF IS_CHAR_IN_MODEL scplayer BOXBURG //BURGLARY MISSION**************************************************************************
IF flag_player_on_burglary_mission = 0
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
IF R3_mission_help = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP ( BTUTOR2 ) //Press RIGHTSHOCK to start
R3_mission_help = 1
ENDIF
ENDIF
ENDIF
IF IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
WHILE IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WAIT 0
IF flag_player_on_mission = 1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_PLAYER_PLAYING player1
OR NOT IS_CHAR_IN_MODEL scplayer BOXBURG
GOTO R3missions_loop_inner
ENDIF
IF IS_MINIGAME_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
ENDWHILE
DRAW_ODDJOB_TITLE_BEFORE_FADE FALSE
PRINT_BIG ( BURGLAR ) 6000 5
WAIT 0
LOAD_AND_LAUNCH_MISSION burglary.sc
flag_player_on_burglary_mission = 1
GOTO R3missions_loop_inner
ELSE
PRINT_NOW BURGHEL 4000 1 // ~s~You can only trigger the burglary missions between 20:00 and 6:00.
ENDIF
ENDIF
ENDIF
ENDIF // IF IS_CHAR_IN_MODEL scplayer boxville
ENDIF
ENDIF
IF Return_cities_passed > 1
IF IS_CHAR_IN_MODEL scplayer freight
OR IS_CHAR_IN_MODEL scplayer streak
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer R3_player_car
IF NOT IS_CAR_IN_WATER R3_player_car
AND NOT HAS_TRAIN_DERAILED R3_player_car
IF flag_player_on_freight_mission = 0
IF R3_mission_help = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP ( FTUTORA ) //Press RIGHTSHOCK to start
R3_mission_help = 1
ENDIF
ENDIF
IF IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WHILE IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WAIT 0
IF flag_player_on_mission = 1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_PLAYER_PLAYING player1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_CHAR_IN_MODEL scplayer freight
AND NOT IS_CHAR_IN_MODEL scplayer streak
GOTO R3missions_loop_inner
ENDIF
IF IS_MINIGAME_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
ENDWHILE
//PRINT_BIG ( FREIGH ) 6000 5
WAIT 0
LOAD_AND_LAUNCH_MISSION freight.sc
been_in_freight_before = 1
GOTO R3missions_loop_inner
ENDIF
ENDIF
ENDIF
ENDIF // IF IS_CHAR_IN_MODEL scplayer freight train
ENDIF
// ************************************PIMPING*************************************************************
IF IS_CHAR_IN_MODEL scplayer BROADWAY
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer R3_player_car
IF NOT IS_CAR_IN_WATER R3_player_car
IF flag_player_on_pimp_mission = 0
IF R3_mission_help = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP ( PTUTORA ) //Press RIGHTSHOCK to start
R3_mission_help = 1
ENDIF
ENDIF
IF IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WHILE IS_WIDGET_RELEASED WIDGET_MISSION_START_VIGILANTE
WAIT 0
IF flag_player_on_mission = 1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_PLAYER_PLAYING player1
GOTO R3missions_loop_inner
ENDIF
IF NOT IS_CHAR_IN_MODEL scplayer BROADWAY
GOTO R3missions_loop_inner
ENDIF
IF IS_MINIGAME_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
IF IS_BIT_SET iDateReport DATE_IN_PROGRESS
GOTO R3missions_loop_inner
ENDIF
ENDWHILE
PRINT_BIG ( PIMP ) 6000 5
WAIT 0
LOAD_AND_LAUNCH_MISSION pimp.sc
flag_pimping_trigger = 1
GOTO R3missions_loop_inner
ENDIF
ENDIF
ENDIF
ENDIF // IF IS_CHAR_IN_MODEL scplayer freight train
ENDIF
ENDIF
ELSE
IF R3_mission_help = 1
CLEAR_THIS_PRINT TTUTOR
CLEAR_THIS_PRINT ATUTOR
CLEAR_THIS_PRINT FTUTOR
CLEAR_THIS_PRINT CTUTOR
CLEAR_THIS_PRINT BTUTOR2
CLEAR_THIS_PRINT FTUTORA
CLEAR_THIS_PRINT PTUTORA
R3_mission_help = 0
ENDIF
ENDIF
ENDIF
ENDIF //flag_player_on_mission
GOTO R3missions_loop_inner
R3missions_loop_date:
WAIT 10
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
WAIT 5000
GOTO R3missions_loop_inner
ENDIF
GOTO R3missions_loop_date
}
text_after_freight:
{
SCRIPT_NAME FRTEXT
WAIT 5000
CLEAR_HELP
PRINT_HELP ( FREI_16 ) // The freight oddjob has been passed, you can replay it to make extra cash
TERMINATE_THIS_SCRIPT
}
// ************************************************************************************************************
// ***************************************** STADIUM SCRIPTS ************************************************
// ************************************************************************************************************
// **************************************BLOOD RING (Destruction Derby)****************************************
blood_loop:
{
SCRIPT_NAME BLOODR
blood_loop_inner:
WAIT mission_trigger_wait_time
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer bloodX bloodY bloodZ 1.4 1.8 1.5 FALSE
VAR_INT stat
GET_INT_STAT DRIVING_SKILL stat
IF stat > 199
IF CAN_PLAYER_START_MISSION player1
CHECKPOINT_SAVE 1
GOSUB mini_fade
PRINT_BIG ( STAD_04 ) 1000 2 //Blood ring
LOAD_AND_LAUNCH_MISSION blood.sc //ANDY
ENDIF
ELSE
print_now STATCAR 500 1 // Your driving skill is not high enough to enter this race.
ENDIF
ENDIF
ENDIF
ENDIF
GOTO blood_loop_inner
}
// ************************************************************************************************************
// ********************************************HOT RING (RACE)*************************************************
hot_loop:
{
SCRIPT_NAME HOTR
hot_loop_inner:
WAIT mission_trigger_wait_time
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer hotringX hotringY hotringZ 1.4 1.8 1.5 FALSE
GET_INT_STAT DRIVING_SKILL stat
IF stat > 199
IF CAN_PLAYER_START_MISSION player1
CHECKPOINT_SAVE 1
PRINT_BIG ( STAD_03 ) 1000 2//8-Track
GOSUB mini_fade
race_selection = NASCAR_RACE
show_race_selection = FALSE
LOAD_AND_LAUNCH_MISSION racetour.sc //CHRIS R
ENDIF
ELSE
print_now STATCAR 500 1 // Your driving skill is not high enough to enter this race.
ENDIF
ENDIF
ENDIF
ENDIF
GOTO hot_loop_inner
}
// ************************************************************************************************************
// ***********************************DIRT RING (KICKSTART)****************************************************
kick_loop:
{
SCRIPT_NAME KICKS
kick_loop_inner:
WAIT mission_trigger_wait_time
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer kickX kickY kickZ 1.4 1.8 1.5 FALSE
IF CAN_PLAYER_START_MISSION player1
GET_CURRENT_DAY_OF_WEEK weekday
IF weekday = 0
OR weekday = 2
OR weekday = 4
get_int_stat BIKE_SKILL stat
IF stat > 199
CHECKPOINT_SAVE 1
PRINT_BIG ( STAD_01 ) 1000 2//Dirt Track
GOSUB mini_fade
race_selection = DIRTBIKE_STADIUM
show_race_selection = FALSE
LOAD_AND_LAUNCH_MISSION racetour.sc
ELSE
print_now STATBIK 500 1 // Your bike skill is not high enough to enter this race.
ENDIF
ELSE
CHECKPOINT_SAVE 1
PRINT_BIG ( STAD_02 ) 1000 2//Kickstart
GOSUB mini_fade
LOAD_AND_LAUNCH_MISSION kickstart.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO kick_loop_inner
}
// ************************************************************************************************************
// ***********************************TRIALTHALON RACE****************************************************
VAR_INT flag_cycling_skill_help_tri flag_stamina_skill_help_tri flag_cycling_skill_help2 map_opened_tri
tri_loop:
{
SCRIPT_NAME TRI
tri_loop_inner:
WAIT 0
IF flag_player_on_mission = 0
IF IS_PLAYER_PLAYING player1
IF weekday = 1
OR weekday = 7
IF LOCATE_CHAR_ON_FOOT_3D scplayer 181.0 -1878.0 2.0 1.4 1.8 1.5 TRUE // the small one on LS Beach
OR LOCATE_CHAR_ON_FOOT_3D scplayer 2135.4319 -67.9555 1.8 1.4 1.8 1.5 TRUE // the big one in Fishers Lagoon
GET_INT_STAT CITIES_PASSED Return_cities_passed
IF Return_cities_passed > 1
GET_INT_STAT CYCLE_SKILL stat_read_skill_temp
IF stat_read_skill_temp >= 500 // skill has to be over 200
GET_INT_STAT STAMINA stat_stamina_temp
IF stat_stamina_temp >=500
IF CAN_PLAYER_START_MISSION player1
PRINT_BIG ( BOTTY ) 1000 2
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer 181.0 -1878.0 2.0 20.4 20.8 20.5 FALSE // the small one on LS Beach
triathalon_selection = 1
ENDIF
IF LOCATE_CHAR_ON_FOOT_3D scplayer 2135.4319 -67.9555 20.8 20.4 20.8 20.5 FALSE // the big one in Fishers Lagoon
triathalon_selection = 2
ENDIF
ENDIF
LOAD_AND_LAUNCH_MISSION triathalon.sc
ENDIF
ELSE
IF flag_stamina_skill_help_tri = 0
PRINT_HELP STASKIL //Stamina has to be over 500
flag_stamina_skill_help_tri = 1
ENDIF
ENDIF
ELSE
IF flag_cycling_skill_help_tri = 0
PRINT_HELP MTBSKIL //Skill has to be over 500
flag_cycling_skill_help_tri = 1
ENDIF
ENDIF
ELSE
IF map_opened_tri = 0
PRINT_HELP NOCOCK //Maps not opened
map_opened_tri = 1
ENDIF
ENDIF
ELSE
IF flag_cycling_skill_help_tri = 1
flag_cycling_skill_help_tri = 0
ENDIF
IF flag_stamina_skill_help_tri = 1
flag_stamina_skill_help_tri = 0
ENDIF
IF map_opened_tri = 1
map_opened_tri = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO tri_loop_inner
}
// ************************************************************************************************************
// *********************************** Vehicle location Oddjob Mission ****************************************
vehicle_oddjob_loop:
VAR_INT stunt_course
{
SCRIPT_NAME ODDVEH
vehicle_oddjob_loop_inner:
WAIT mission_trigger_wait_time
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF IS_CHAR_IN_ANY_CAR scplayer
// ************************************COURIER*************************************************************************
IF IS_CHAR_IN_MODEL scplayer BMX
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer cour1X cour1Y cour1Z 3.0 3.0 3.0 FALSE //LA
flag_courier_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer FREEWAY
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer cour2X cour2Y cour2Z 3.0 3.0 3.0 FALSE //SF
flag_courier_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer FAGGIO
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer cour3X cour3Y cour3Z 3.0 3.0 3.0 FALSE //LV
flag_courier_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer BMX
IF flag_courier_trigger = 0
PRINT_BIG ( COUR1 ) 1000 2 //COURIER MISSION LA
LOAD_AND_LAUNCH_MISSION courier.sc
flag_courier_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer FREEWAY
IF flag_courier_trigger = 0
PRINT_BIG ( COUR1 ) 1000 2 //COURIER MISSION SF
LOAD_AND_LAUNCH_MISSION courier.sc
flag_courier_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer FAGGIO
IF flag_courier_trigger = 0
PRINT_BIG ( COUR1 ) 1000 2 //COURIER MISSION LV
LOAD_AND_LAUNCH_MISSION courier.sc
flag_courier_trigger = 1
ENDIF
ENDIF
// ************************************MOUNTAIN BIKE*******************************************************************
IF IS_CHAR_IN_MODEL scplayer MTBIKE
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer mountbX mountbY mountbZ 10.5 10.5 10.5 FALSE //
flag_mtbike_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer MTBIKE
AND flag_mtbike_trigger = 0
CLEAR_PRINTS
GET_INT_STAT CYCLE_SKILL stat_read_skill_temp
IF stat_read_skill_temp >= 400 // skill has to be over 400
GET_TIME_OF_DAY hours minutes
IF hours >= 7 // from 7am to 6pm
AND hours < 18
PRINT_BIG ( MOUNTN ) 1000 2 //mtbike MISSION
LOAD_AND_LAUNCH_MISSION mtbikerace.sc
flag_mtbike_trigger = 1
ELSE
PRINT_NOW MTIME4 1000 1 //Come back between 9:00 17:00
ENDIF
ELSE
IF flag_cycling_skill_help = 0
PRINT_HELP MTBSKIL //Skill has to be over 200
flag_cycling_skill_help = 1
ENDIF
ENDIF
ELSE
IF flag_cycling_skill_help = 1
flag_cycling_skill_help = 0
ENDIF
ENDIF
// *********************************BMX*************************************************************************
IF IS_CHAR_IN_MODEL scplayer BMX
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer stunt_bmx1_x stunt_bmx1_y stunt_bmx1_z 4.0 4.0 3.0 FALSE //
flag_bmx_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer BMX
AND flag_bmx_trigger = 0
GET_INT_STAT CYCLE_SKILL stat_read_skill_temp
IF stat_read_skill_temp >= 200 // skill has to be over 200
PRINT_BIG ( BMX ) 1000 2 //BMX MISSION
stunt_course = 0
LOAD_AND_LAUNCH_MISSION stunt.sc
flag_bmx_trigger = 1
ELSE
IF flag_cycling_skill_help2 = 0
PRINT_HELP MTBSKI2 //Skill has to be over 200
flag_cycling_skill_help2 = 1
ENDIF
ENDIF
ELSE
IF flag_cycling_skill_help2 = 1
flag_cycling_skill_help2 = 0
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer nrg500
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer stunt_nrg500_x stunt_nrg500_y stunt_nrg500_z 4.0 4.0 3.0 FALSE
flag_nrg500_trigger = 1
ENDIF
ENDIF
IF IS_CHAR_IN_MODEL scplayer nrg500
AND flag_nrg500_trigger = 0
PRINT_BIG ( NRG500 ) 1000 2 //NRG500 MISSION
stunt_course = 1
LOAD_AND_LAUNCH_MISSION stunt.sc
flag_nrg500_trigger = 1
ENDIF
ELSE
flag_hhiker_trigger = 0
flag_courier_trigger = 0
flag_mtbike_trigger = 0
flag_bmx_trigger = 0
flag_nrg500_trigger = 0
ENDIF
ENDIF
ENDIF
GOTO vehicle_oddjob_loop_inner
}
// ************************************************************************************************************
// ************************************************************************************************************
// *******************************************END OF MISSIONS**************************************************
// ************************************************************************************************************
// ************************************************************************************************************
// ************************************************************************************************************
// ************************************** SHOWROOM BUYING *****************************************************
// CAR SHOWROOM PURCHASING SCRIPT
showroom_buy_loop:
{
SCRIPT_NAME BUY1
save_houseprice[0] = 50000
REMOVE_PICKUP save_housepickup[0]
CREATE_FORSALE_PROPERTY_PICKUP propertyX[0] propertyY[0] propertyZ[0] save_houseprice[0] PROP_3 save_housepickup[0]
showroom_buy_loop_inner:
WAIT mission_trigger_wait_time
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
//IF CAN_PLAYER_START_MISSION player1
IF HAS_PICKUP_BEEN_COLLECTED save_housepickup[0]
buying_property_switch = PROP_BUY0
REPORT_MISSION_AUDIO_EVENT_AT_POSITION propertyX[0] propertyY[0] propertyZ[0] SOUND_PROPERTY_PURCHASED
LOAD_AND_LAUNCH_MISSION buypro.sc
TERMINATE_THIS_SCRIPT
ENDIF
//ENDIF
ENDIF
ENDIF
GOTO showroom_buy_loop_inner
}
// ************************************************************************************************************
// ************************************* ZERO SHOP BUYING *****************************************************
// ZERO PURCHASING SCRIPT
zero_buy_loop:
{
SCRIPT_NAME BUY2
save_houseprice[1] = 30000
REMOVE_PICKUP save_housepickup[1]
CREATE_FORSALE_PROPERTY_PICKUP propertyX[1] propertyY[1] propertyZ[1] save_houseprice[1] PROP_3 save_housepickup[1]
zero_buy_loop_inner:
WAIT mission_trigger_wait_time
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
//IF CAN_PLAYER_START_MISSION player1
IF HAS_PICKUP_BEEN_COLLECTED save_housepickup[1]
buying_property_switch = PROP_BUY1
REPORT_MISSION_AUDIO_EVENT_AT_POSITION propertyX[1] propertyY[1] propertyZ[1] SOUND_PROPERTY_PURCHASED
LOAD_AND_LAUNCH_MISSION buypro.sc
TERMINATE_THIS_SCRIPT
ENDIF
//ENDIF
ENDIF
ENDIF
GOTO zero_buy_loop_inner
}
// ************************************************************************************************************
// ************************************** AIRSTRIP BUYING *****************************************************
// AIRSTRIP PURCHASING SCRIPT
airstrip_buy_loop:
{
SCRIPT_NAME BUY3
save_houseprice[2] = 80000
REMOVE_PICKUP save_housepickup[2]
CREATE_FORSALE_PROPERTY_PICKUP propertyX[2] propertyY[2] propertyZ[2] save_houseprice[2] PROP_3 save_housepickup[2]
airstrip_buy_loop_inner:
WAIT mission_trigger_wait_time
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
//IF CAN_PLAYER_START_MISSION player1
IF HAS_PICKUP_BEEN_COLLECTED save_housepickup[2]
buying_property_switch = PROP_BUY2
REPORT_MISSION_AUDIO_EVENT_AT_POSITION propertyX[2] propertyY[2] propertyZ[2] SOUND_PROPERTY_PURCHASED
LOAD_AND_LAUNCH_MISSION buypro.sc
TERMINATE_THIS_SCRIPT
ENDIF
//ENDIF
ENDIF
ENDIF
GOTO airstrip_buy_loop_inner
}
// ************************************************************************************************************
// ************************************** PROPERTY BUYING *****************************************************
VAR_INT save_house_index already_bought_house[32] prorerty_switch[32]
buy_pro_loop:
{
SCRIPT_NAME BUY_PRO
buy_pro_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
//IF CAN_PLAYER_START_MISSION player1
IF already_bought_house[save_house_index] = 0
IF HAS_PICKUP_BEEN_COLLECTED save_housepickup[save_house_index]
buying_property_switch = prorerty_switch[save_house_index]
REPORT_MISSION_AUDIO_EVENT_AT_POSITION propertyX[save_house_index] propertyY[save_house_index] propertyZ[save_house_index] SOUND_PROPERTY_PURCHASED
LOAD_AND_LAUNCH_MISSION buypro.sc
already_bought_house[save_house_index] = 1
WRITE_LOG "UNLOCK_ACHIEVEMENT THE_AMERICAN_DREAM"
ENDIF
ENDIF
//ENDIF
ENDIF
ENDIF
save_house_index ++
IF save_house_index >= 32
save_house_index = 3
ENDIF
GOTO buy_pro_loop_inner
}
// **********************************************************************************************************
// ************************************** IMPOUND SCRIPT ****************************************************
impound_loop:
{
SCRIPT_NAME IMPND_L
impound_loop_inner:
WAIT 100
IF IS_PLAYER_PLAYING player1
IF im_players_city = LEVEL_LOSANGELES
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT impound.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1579.4248 -1636.4630 14.5812 120.0 120.0 80.0 FALSE
impound_area = 1
STREAM_SCRIPT impound.sc
IF HAS_STREAMED_SCRIPT_LOADED impound.sc
START_NEW_STREAMED_SCRIPT impound.sc
ENDIF
ELSE
IF impound_Area = 1
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED impound.sc
impound_Area = 0
ENDIF
ENDIF
ENDIF
ENDIF
IF im_players_city = LEVEL_SANFRANCISCO
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT impound.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1624.7710 679.6637 8.5690 120.0 120.0 80.0 FALSE
IF tlf_underway = 0
impound_area = 2
STREAM_SCRIPT impound.sc
IF HAS_STREAMED_SCRIPT_LOADED impound.sc
START_NEW_STREAMED_SCRIPT impound.sc
ENDIF
ENDIF
ELSE
IF tlf_underway = 2 //set in Steve’s mission cleanup
tlf_underway = 0
ENDIF
IF impound_Area = 2
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED impound.sc
impound_Area = 0
ENDIF
ENDIF
ENDIF
ENDIF
IF im_players_city = LEVEL_SANFRANCISCO
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT impound.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1624.7710 679.6637 8.5690 120.0 120.0 80.0 FALSE
impound_area = 2
STREAM_SCRIPT impound.sc
IF HAS_STREAMED_SCRIPT_LOADED impound.sc
START_NEW_STREAMED_SCRIPT impound.sc
ENDIF
ELSE
IF impound_Area = 2
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED impound.sc
impound_Area = 0
ENDIF
ENDIF
ENDIF
ENDIF
IF im_players_city = LEVEL_LASVEGAS
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT impound.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2284.5920 2466.8379 12.2306 120.0 120.0 80.0 FALSE
impound_area = 3
STREAM_SCRIPT impound.sc
IF HAS_STREAMED_SCRIPT_LOADED impound.sc
START_NEW_STREAMED_SCRIPT impound.sc
ENDIF
ELSE
IF impound_Area = 3
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED impound.sc
impound_Area = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO impound_loop_inner
}
// **********************************************************************************************************
// ************************************** VALET PARKING *******************************************************
valet_loop:
{
SCRIPT_NAME VALET_L
valet_loop_inner:
WAIT 0
IF valet_unlocked = 1
IF im_players_city = LEVEL_SANFRANCISCO
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT valet.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer -1893.4186 1119.2267 -1617.9149 828.850 FALSE
val_Area = 2
STREAM_SCRIPT valet.sc
IF HAS_STREAMED_SCRIPT_LOADED valet.sc
START_NEW_STREAMED_SCRIPT valet.sc
ENDIF
ELSE
IF val_Area = 2
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED valet.sc
val_Area = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO valet_loop_inner
}
// **********************************************************************************************************
// ************************************** TRAINS ************************************************************
trains_loop:
{
SCRIPT_NAME TRAINSL
trains_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_ANY_CAR scplayer
IF IS_CHAR_IN_MODEL scplayer streakc
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT trains.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
STREAM_SCRIPT trains.sc
IF HAS_STREAMED_SCRIPT_LOADED trains.sc
START_NEW_STREAMED_SCRIPT trains.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO trains_loop_inner
}
// ************************************************************************************************************
// ******************************************* PLANES TICKET MACHINE ******************************************
VAR_INT created_marker[3] airport_marker[3]
planes_loop:
{
SCRIPT_NAME ADPLANE
planes_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF im_players_city = LEVEL_LOSANGELES
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT planes.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF created_marker[0] = 0
CREATE_USER_3D_MARKER 1685.7 -2238.9 14.0 HUD_COLOUR_WHITE airport_marker[0] //LEVEL_LOSANGELES
created_marker[0] = 1
ENDIF
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer 1685.7 -2238.9 12.5 1.2 1.2 1.2 FALSE
SET_PLAYER_CONTROL player1 Off
GOSUB mini_fade
STREAM_SCRIPT planes.sc
flag_dozer_passed_1stime = 1
//ELSE
//MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED planes.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED planes.sc
AND flag_dozer_passed_1stime = 1
START_NEW_STREAMED_SCRIPT planes.sc
flag_dozer_passed_1stime = 0
ENDIF
ENDIF
ENDIF
ELSE
IF created_marker[0] = 1
REMOVE_USER_3D_MARKER airport_marker[0]
created_marker[0] = 0
ENDIF
ENDIF
ELSE
IF created_marker[0] = 1
REMOVE_USER_3D_MARKER airport_marker[0]
created_marker[0] = 0
ENDIF
ENDIF
IF im_players_city = LEVEL_SANFRANCISCO
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT planes.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF created_marker[1] = 0
CREATE_USER_3D_MARKER -1421.5 -287.2 14.6 HUD_COLOUR_WHITE airport_marker[1] //LEVEL_SANFRANCISCO
created_marker[1] = 1
ENDIF
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer -1421.5 -287.2 14.6 1.2 1.2 1.2 FALSE
SET_PLAYER_CONTROL player1 Off
GOSUB mini_fade
STREAM_SCRIPT planes.sc
flag_dozer_passed_1stime = 1
//ELSE
//MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED planes.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED planes.sc
AND flag_dozer_passed_1stime = 1
START_NEW_STREAMED_SCRIPT planes.sc
flag_dozer_passed_1stime = 0
ENDIF
ENDIF
ENDIF
ELSE
IF created_marker[1] = 1
REMOVE_USER_3D_MARKER airport_marker[1]
created_marker[1] = 0
ENDIF
ENDIF
ELSE
IF created_marker[1] = 1
REMOVE_USER_3D_MARKER airport_marker[1]
created_marker[1] = 0
ENDIF
ENDIF
IF im_players_city = LEVEL_LASVEGAS
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT planes.sc number_of_instances_of_streamed_script
IF number_of_instances_of_streamed_script = 0
IF created_marker[2] = 0
CREATE_USER_3D_MARKER 1663.0 1423.6 11.2 HUD_COLOUR_WHITE airport_marker[2] //LEVEL_LASVEGAS
created_marker[2] = 1
ENDIF
IF CAN_PLAYER_START_MISSION player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer 1663.0 1423.6 11.2 1.2 1.2 1.2 FALSE
SET_PLAYER_CONTROL player1 Off
GOSUB mini_fade
STREAM_SCRIPT planes.sc
flag_dozer_passed_1stime = 1
//ELSE
//MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED planes.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED planes.sc
AND flag_dozer_passed_1stime = 1
START_NEW_STREAMED_SCRIPT planes.sc
flag_dozer_passed_1stime = 0
ENDIF
ENDIF
ENDIF
ELSE
IF created_marker[2] = 1
REMOVE_USER_3D_MARKER airport_marker[2]
created_marker[2] = 0
ENDIF
ENDIF
ELSE
IF created_marker[2] = 1
REMOVE_USER_3D_MARKER airport_marker[2]
created_marker[2] = 0
ENDIF
ENDIF
ENDIF
ENDIF
GOTO planes_loop_inner
//MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED planes.sc
//MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED planes.sc
//MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED planes.sc
}
// ******************************COLLECTIBLES******************************************************************************
VAR_INT Returned_oysters Returned_shoehorses Returned_snapshots Returned_tags game_complete
VAR_INT all_tags_pickup1 all_tags_pickup2 all_tags_pickup3 all_tags_pickup4
VAR_INT all_photos_pickup1 all_photos_pickup2 all_photos_pickup3 all_photos_pickup4
VAR_INT all_horse_pickup1 all_horse_pickup2 all_horse_pickup3 all_horse_pickup4
VAR_FLOAT Return_progress_Percentage
collectibes_loop:
{
SCRIPT_NAME COLLS
collectibes_loop_inner:
WAIT 3000
GET_PROGRESS_PERCENTAGE Return_progress_Percentage
IF returned_oysters_flag = 0
GET_INT_STAT OYSTERS_COLLECTED Returned_oysters
IF returned_oysters = 50
PLAY_MISSION_PASSED_TUNE 2
PLAYER_MADE_PROGRESS 1
SET_INT_STAT UNDERWATER_BREATH_STAMINA 1000
//--- Girlfriends bonus: all dead or dumped girls come back on the map
IF iGFLikesPlayer[SUZIE] <= 0
iGFLikesPlayer[SUZIE] = 45
ENDIF
IF iGFLikesPlayer[MICHELLE] <= 0
iGFLikesPlayer[MICHELLE] = 45
ENDIF
IF iGFLikesPlayer[BARBARA] <= 0
iGFLikesPlayer[BARBARA] = 45
ENDIF
IF iGFLikesPlayer[KYLIE] <= 0
iGFLikesPlayer[KYLIE] = 45
ENDIF
//--- All girls love the player even if he smells
iGFDesiredSexAppeal[COOCHIE] = -100
iGFDesiredSexAppeal[MICHELLE] = -100
iGFDesiredSexAppeal[BARBARA] = -100
iGFDesiredSexAppeal[KYLIE] = -100
iGFDesiredSexAppeal[SUZIE] = -100
iGFDesiredSexAppeal[MILLIE] = -100
//--- All girls are his bitches now
iGFSelfRespect[COOCHIE] = 1
iGFSelfRespect[MICHELLE] = 1
iGFSelfRespect[BARBARA] = 1
iGFSelfRespect[KYLIE] = 1
iGFSelfRespect[SUZIE] = 1
iGFSelfRespect[MILLIE] = 1
CLEAR_HELP
PRINT_HELP OYST100
returned_oysters_flag = 1
ENDIF
ENDIF
IF flag_returned_shoehorses = 0
GET_INT_STAT HORSESHOES_COLLECTED Returned_shoehorses
IF Returned_shoehorses = 50
PLAY_MISSION_PASSED_TUNE 2
PLAYER_MADE_PROGRESS 1
CREATE_PICKUP_WITH_AMMO M4 PICKUP_ON_STREET_SLOW 60 2021.8792 1001.4669 10.3203 all_horse_pickup1
CREATE_PICKUP_WITH_AMMO MP5LNG PICKUP_ON_STREET_SLOW 120 2025.2858 1001.4957 10.3203 all_horse_pickup2
CREATE_PICKUP_WITH_AMMO SHOTGSPA PICKUP_ON_STREET_SLOW 120 2021.3268 1013.3495 10.3203 all_horse_pickup3
CREATE_PICKUP_WITH_AMMO SATCHEL PICKUP_ON_STREET_SLOW 20 2023.7754 1013.5269 10.5203 all_horse_pickup4
CLEAR_HELP
PRINT_HELP LUCK100
flag_returned_shoehorses = 1
ENDIF
ENDIF
IF flag_returned_snapshots = 0
GET_INT_STAT SNAPSHOTS_TAKEN Returned_snapshots
IF Returned_snapshots = 50
PLAY_MISSION_PASSED_TUNE 2
PLAYER_MADE_PROGRESS 1
CREATE_PICKUP_WITH_AMMO SNIPER PICKUP_ON_STREET_SLOW 60 -2035.7729 139.4337 28.3359 all_photos_pickup1
CREATE_PICKUP_WITH_AMMO MICRO_UZI PICKUP_ON_STREET_SLOW 120 -2038.4298 139.6281 28.3359 all_photos_pickup2
CREATE_PICKUP_WITH_AMMO CHROMEGUN PICKUP_ON_STREET_SLOW 120 -2038.6641 137.4694 28.3359 all_photos_pickup3
CREATE_PICKUP_WITH_AMMO GRENADE PICKUP_ON_STREET_SLOW 20 -2035.4735 137.2511 28.3359 all_photos_pickup4
CLEAR_HELP
PRINT_HELP FOTO100
flag_returned_snapshots = 1
ENDIF
ENDIF
IF flag_returned_tags = 0
FIND_NUMBER_TAGS_TAGGED Returned_tags
IF Returned_tags = 100
PLAY_MISSION_PASSED_TUNE 2
PLAYER_MADE_PROGRESS 1
SET_GANG_WEAPONS GANG_GROVE WEAPONTYPE_DESERT_EAGLE WEAPONTYPE_MP5 WEAPONTYPE_KNIFE
CREATE_PICKUP_WITH_AMMO AK47 PICKUP_ON_STREET_SLOW 120 2499.3901 -1707.4629 1014.2496 all_tags_pickup1
CREATE_PICKUP_WITH_AMMO TEC9 PICKUP_ON_STREET_SLOW 120 2499.5139 -1709.6403 1014.2496 all_tags_pickup2
CREATE_PICKUP_WITH_AMMO SAWNOFF PICKUP_ON_STREET_SLOW 60 2493.4911 -1708.2368 1014.9316 all_tags_pickup3
CREATE_PICKUP_WITH_AMMO MOLOTOV PICKUP_ON_STREET_SLOW 20 2493.5529 -1706.8634 1015.1316 all_tags_pickup4
CLEAR_HELP
PRINT_HELP TAG_100
flag_returned_tags = 1
ENDIF
ENDIF
IF game_complete = 0
IF Return_progress_Percentage >= 100.0
IF IS_PLAYER_PLAYING player1
SWITCH_CAR_GENERATOR tank_gen1 101
SWITCH_CAR_GENERATOR hyfra_gen1 101
ADD_SCORE player1 1000000
SET_INT_STAT UNDERWATER_BREATH_STAMINA 1000
SET_INT_STAT STAMINA 1000
SET_INT_STAT SEX_APPEAL 1000
SET_INT_STAT SEX_APPEAL_CLOTHES 1000
SET_INT_STAT RESPECT 1000
SET_INT_STAT RESPECT_GIRLFRIEND 1000
SET_INT_STAT RESPECT_CLOTHES 1000
SET_INT_STAT CYCLE_SKILL 1000
WAIT 2000
CLEAR_HELP
PRINT_HELP GAME100
game_complete = 1
ENDIF
ENDIF
ENDIF
GOTO collectibes_loop_inner
}
// ******************************TERITORY PICKUP******************************************************************************
VAR_INT terminted_territory_pickup
territory_cash_loop:
{
// Should be called before main loop
SCRIPT_NAME TCASH
territory_cash_loop_inner:
WAIT 20000
IF terminted_territory_pickup = 1
REMOVE_PICKUP territory_pickup
terminted_territory_pickup = 0
TERMINATE_THIS_SCRIPT
ENDIF
GET_TERRITORY_UNDER_CONTROL_PERCENTAGE player_territory_owned
IF Return_cities_passed > 1
territory_cash = player_territory_owned * 100
ELSE
territory_cash = player_territory_owned * 50
ENDIF
UPDATE_PICKUP_MONEY_PER_DAY territory_pickup territory_cash
GOTO territory_cash_loop_inner
}
// ******************************GIRLFRIEND PICKUP******************************************************************************
VAR_INT millies_keycard_pickup millies_keycard_pickup_flag not_entered_millies_house millies_double_ender millie_marker[2] created_millie_marker
millies_keycard_loop:
{
GET_INT_STAT GIRLFRIEND_MILLIE millies_like_stat
IF millies_like_stat >= MILLIE_LIKES_PLAYER_REQUIRED_FOR_KEYCARD
CREATE_PICKUP Gun_dildo1 PICKUP_ONCE 345.2063 308.9788 998.6484 millies_double_ender //DILDO
ENDIF
SET_CLOSEST_ENTRY_EXIT_FLAG 345.5621 306.2212 10.0 ENTRYEXITS_FLAG_ENABLED FALSE
CREATE_USER_3D_MARKER 2037.3492 2722.0714 12.0281 HUD_COLOUR_ENTRYEXIT_YELLOW millie_marker[0]
CREATE_USER_3D_MARKER 343.9969 305.1040 999.6557 HUD_COLOUR_ENTRYEXIT_YELLOW millie_marker[1]
// Should be called before main loop
SCRIPT_NAME KEYCARD
millies_keycard_loop_inner:
WAIT 0
GET_AREA_VISIBLE main_visible_area
IF main_visible_area = 0
not_entered_millies_house = 0
ELSE
not_entered_millies_house = 1
ENDIF
IF IS_PLAYER_PLAYING player1
IF not_entered_millies_house = 0
IF LOCATE_CHAR_ON_FOOT_3D scplayer 2037.3492 2722.0714 9.8281 1.2 1.2 2.0 FALSE
SET_PLAYER_CONTROL player1 OFF
GOSUB mini_fade
SET_AREA_VISIBLE 6
REQUEST_COLLISION 345.5621 306.2212
LOAD_SCENE 345.5621 306.2212 998.1484
SET_EXTRA_COLOURS 1 FALSE
SET_PLAYER_IS_IN_STADIUM TRUE
IF IS_PLAYER_PLAYING player1
SET_CHAR_AREA_VISIBLE scplayer 6
SET_CHAR_COORDINATES scplayer 345.5621 306.2212 998.4484
SET_CHAR_HEADING scplayer 260.0
SET_CAMERA_BEHIND_PLAYER
RESTORE_CAMERA_JUMPCUT
ENDIF
WAIT 1000
DO_FADE 500 FADE_IN
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
ENDIF
not_entered_millies_house = 1
ENDIF
ELSE
IF LOCATE_CHAR_ON_FOOT_3D scplayer 343.9969 305.1040 998.1557 1.2 1.2 2.0 FALSE
SET_PLAYER_CONTROL player1 OFF
GOSUB mini_fade
SET_AREA_VISIBLE 0
REQUEST_COLLISION 2037.5408 2727.6865
LOAD_SCENE 2037.5408 2727.6865 9.8281
CLEAR_EXTRA_COLOURS FALSE
SET_PLAYER_IS_IN_STADIUM FALSE
IF IS_PLAYER_PLAYING player1
SET_CHAR_AREA_VISIBLE scplayer 0
SET_CHAR_COORDINATES scplayer 2037.5408 2727.6865 9.8281
SET_CHAR_HEADING scplayer 0.0
SET_CAMERA_BEHIND_PLAYER
RESTORE_CAMERA_JUMPCUT
ENDIF
WAIT 1000
DO_FADE 500 FADE_IN
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
ENDIF
not_entered_millies_house = 0
ENDIF
ENDIF
ELSE
SET_PLAYER_IS_IN_STADIUM FALSE
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED millies_keycard_pickup
IF millies_keycard_pickup_flag = 0
PRINT_NOW (GOTKEY) 6000 1 //You have acquired the keycard for the casino heist
REMOVE_BLIP Thekeycard_contact_blip
keycard_aquired_from_millie = 1
millies_keycard_pickup_flag = 1
ENDIF
ENDIF
GET_AREA_VISIBLE main_visible_area
IF millies_keycard_pickup_flag = 1
AND main_visible_area = 0
REMOVE_USER_3D_MARKER millie_marker[0]
REMOVE_USER_3D_MARKER millie_marker[1]
TERMINATE_THIS_SCRIPT
ENDIF
GOTO millies_keycard_loop_inner
}
// ***********************************************************************************************************
// **********************************************2player minigames********************************************
VAR_INT Tplayer_pickup[16] recreate_tplay_pickup recreate_gfriend_pickup[6]
Tplay_mission_loop:
{
SCRIPT_NAME TPLAYER
Tplay_mission_loop_inner:
WAIT 75
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF recreate_tplay_pickup = 0
GOSUB remove_2player_pickups
CREATE_PICKUP killfrenzy2plyr PICKUP_2P 1481.9551 -1656.1458 13.5469 Tplayer_pickup[0] //2player Ram
CREATE_PICKUP killfrenzy2plyr PICKUP_2P 1196.4912 249.3210 19.0618 Tplayer_pickup[1] //2player bike
CREATE_PICKUP killfrenzy2plyr PICKUP_2P -2102.8484 653.8868 51.8671 Tplayer_pickup[2] //2player cars
CREATE_PICKUP killfrenzy2plyr PICKUP_2P -252.9156 2583.7788 63.0703 Tplayer_pickup[3] //2player heli
CREATE_PICKUP killfrenzy2plyr PICKUP_2P 2510.6331 1207.9175 10.3281 Tplayer_pickup[4] //2player peds
CREATE_PICKUP twoplayer PICKUP_2P 2069.3376 -1556.9296 12.9243 Tplayer_pickup[5] //Run-around LS
CREATE_PICKUP twoplayer PICKUP_2P 2138.1689 1483.5952 10.3203 Tplayer_pickup[6] //Run-around LV
CREATE_PICKUP twoplayer PICKUP_2P -2197.6665 292.0621 34.6230 Tplayer_pickup[7] //Run-around SF
CREATE_PICKUP twoplayer PICKUP_2P -1520.8643 2608.2073 55.3437 Tplayer_pickup[8] //Run-around DE
CREATE_PICKUP twoplayer PICKUP_2P 711.0688 -569.3774 15.8359 Tplayer_pickup[9] //Run-around CO
recreate_tplay_pickup = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[0] //2player Ram
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY1 ) 1000 2
LOAD_AND_LAUNCH_MISSION ram_2p.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[1] //2player bike
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY2 ) 1000 2
LOAD_AND_LAUNCH_MISSION bike_2p.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[2] //2player cars
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY3 ) 1000 2
LOAD_AND_LAUNCH_MISSION cars_2p.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[3] //2player heli
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY4 ) 1000 2
LOAD_AND_LAUNCH_MISSION heli_2p.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[4] //2player peds
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY5 ) 1000 2
LOAD_AND_LAUNCH_MISSION peds_2p.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[5] //Run-around LS
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY6 ) 1000 2
LOAD_AND_LAUNCH_MISSION run_LS.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[6] //Run-around LV
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY7 ) 1000 2
LOAD_AND_LAUNCH_MISSION run_LV.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[7] //Run-around SF
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY8 ) 1000 2
LOAD_AND_LAUNCH_MISSION run_SF.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[8] //Run-around DE
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY9 ) 1000 2
LOAD_AND_LAUNCH_MISSION run_DE.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[9] //Run-around CO
flag_player_on_mission = 1
GOSUB mini_fade
PRINT_BIG ( TPLAY10 ) 1000 2
LOAD_AND_LAUNCH_MISSION run_CO.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
IF IS_BIT_SET iGFAvailableFor2Player MILLIE
IF recreate_gfriend_pickup[0] = 0
CREATE_PICKUP twoplayer PICKUP_2P 2024.5217 2731.1960 10.3281 Tplayer_pickup[10]
recreate_gfriend_pickup[0] = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[10]
flag_player_on_mission = 1
GOSUB mini_fade
//PRINT_BIG ( TPLAY10 ) 1000 2
LOAD_AND_LAUNCH_MISSION r_mily.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
ELSE
IF recreate_gfriend_pickup[0] = 1
REMOVE_PICKUP Tplayer_pickup[10]
recreate_gfriend_pickup[0] = 0
ENDIF
ENDIF
IF IS_BIT_SET iGFAvailableFor2Player SUZIE
IF recreate_gfriend_pickup[1] = 0
CREATE_PICKUP twoplayer PICKUP_2P -2576.7827 1151.9084 55.2333 Tplayer_pickup[11]
recreate_gfriend_pickup[1] = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[11]
flag_player_on_mission = 1
GOSUB mini_fade
//PRINT_BIG ( TPLAY10 ) 1000 2
LOAD_AND_LAUNCH_MISSION r_suzi.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
ELSE
IF recreate_gfriend_pickup[1] = 1
REMOVE_PICKUP Tplayer_pickup[11]
recreate_gfriend_pickup[1] = 0
ENDIF
ENDIF
IF IS_BIT_SET iGFAvailableFor2Player BARBARA
IF recreate_gfriend_pickup[2] = 0
CREATE_PICKUP twoplayer PICKUP_2P -1390.1707 2637.5149 55.5000 Tplayer_pickup[12]
recreate_gfriend_pickup[2] = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[12]
flag_player_on_mission = 1
GOSUB mini_fade
//PRINT_BIG ( TPLAY10 ) 1000 2
LOAD_AND_LAUNCH_MISSION r_barb.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
ELSE
IF recreate_gfriend_pickup[2] = 1
REMOVE_PICKUP Tplayer_pickup[12]
recreate_gfriend_pickup[2] = 0
ENDIF
ENDIF
IF IS_BIT_SET iGFAvailableFor2Player KYLIE
IF recreate_gfriend_pickup[3] = 0
CREATE_PICKUP twoplayer PICKUP_2P -381.8657 -1426.2695 25.5000 Tplayer_pickup[13]
recreate_gfriend_pickup[3] = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[13]
flag_player_on_mission = 1
GOSUB mini_fade
//PRINT_BIG ( TPLAY10 ) 1000 2
LOAD_AND_LAUNCH_MISSION r_kylie.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
ELSE
IF recreate_gfriend_pickup[3] = 1
REMOVE_PICKUP Tplayer_pickup[13]
recreate_gfriend_pickup[3] = 0
ENDIF
ENDIF
IF IS_BIT_SET iGFAvailableFor2Player COOCHIE
IF recreate_gfriend_pickup[4] = 0
CREATE_PICKUP twoplayer PICKUP_2P 2402.4358 -1715.4941 14.0000 Tplayer_pickup[14]
recreate_gfriend_pickup[4] = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[14]
flag_player_on_mission = 1
GOSUB mini_fade
//PRINT_BIG ( TPLAY10 ) 1000 2
LOAD_AND_LAUNCH_MISSION r_coch.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
ELSE
IF recreate_gfriend_pickup[4] = 1
REMOVE_PICKUP Tplayer_pickup[14]
recreate_gfriend_pickup[4] = 0
ENDIF
ENDIF
IF IS_BIT_SET iGFAvailableFor2Player MICHELLE
IF recreate_gfriend_pickup[5] = 0
CREATE_PICKUP twoplayer PICKUP_2P -1803.6143 1199.3320 25.0000 Tplayer_pickup[15]
recreate_gfriend_pickup[5] = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED Tplayer_pickup[15]
flag_player_on_mission = 1
GOSUB mini_fade
//PRINT_BIG ( TPLAY10 ) 1000 2
LOAD_AND_LAUNCH_MISSION r_mich.sc //PAUL D
recreate_tplay_pickup = 0
ENDIF
ELSE
IF recreate_gfriend_pickup[5] = 1
REMOVE_PICKUP Tplayer_pickup[15]
recreate_gfriend_pickup[5] = 0
ENDIF
ENDIF
ELSE
IF recreate_tplay_pickup = 1
GOSUB remove_2player_pickups
recreate_tplay_pickup = 0
ENDIF
ENDIF
ELSE
IF recreate_tplay_pickup = 1
GOSUB remove_2player_pickups
recreate_tplay_pickup = 0
ENDIF
ENDIF
GOTO Tplay_mission_loop_inner
}
remove_2player_pickups:
REMOVE_PICKUP Tplayer_pickup[0]
REMOVE_PICKUP Tplayer_pickup[1]
REMOVE_PICKUP Tplayer_pickup[2]
REMOVE_PICKUP Tplayer_pickup[3]
REMOVE_PICKUP Tplayer_pickup[4]
REMOVE_PICKUP Tplayer_pickup[5]
REMOVE_PICKUP Tplayer_pickup[6]
REMOVE_PICKUP Tplayer_pickup[7]
REMOVE_PICKUP Tplayer_pickup[8]
REMOVE_PICKUP Tplayer_pickup[9]
REMOVE_PICKUP Tplayer_pickup[10]
REMOVE_PICKUP Tplayer_pickup[11]
REMOVE_PICKUP Tplayer_pickup[12]
REMOVE_PICKUP Tplayer_pickup[13]
REMOVE_PICKUP Tplayer_pickup[14]
REMOVE_PICKUP Tplayer_pickup[15]
RETURN
// **********************************GROVE SAVE LOOP*********************************************
VAR_INT remove_grove_pickup[18] grove_save_pickup[18] save_index created_save_blips number_of_save_icons
VAR_FLOAT save_pickupX[18] save_pickupY[18] save_pickupZ[18]
VAR_FLOAT save_playerX[18] save_playerY[18] save_playerZ[18] save_playerH[18]
grove_save_loop:
{
// Should be called before main loop
SCRIPT_NAME PSAVE1
number_of_save_icons = 13 //18
grove_save_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF flag_on_courier_mission = 0
AND NOT IS_BIT_SET iDateReport MEETING_IN_PROGRESS
AND NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
IF created_save_blips = 0
GOSUB remove_all_save_pickups
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[0] save_pickupY[0] save_pickupZ[0] grove_save_pickup[0]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[1] save_pickupY[1] save_pickupZ[1] grove_save_pickup[1]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[2] save_pickupY[2] save_pickupZ[2] grove_save_pickup[2]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[3] save_pickupY[3] save_pickupZ[3] grove_save_pickup[3]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[4] save_pickupY[4] save_pickupZ[4] grove_save_pickup[4]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[5] save_pickupY[5] save_pickupZ[5] grove_save_pickup[5]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[6] save_pickupY[6] save_pickupZ[6] grove_save_pickup[6]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[7] save_pickupY[7] save_pickupZ[7] grove_save_pickup[7]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[8] save_pickupY[8] save_pickupZ[8] grove_save_pickup[8]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[9] save_pickupY[9] save_pickupZ[9] grove_save_pickup[9]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[10] save_pickupY[10] save_pickupZ[10] grove_save_pickup[10]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[11] save_pickupY[11] save_pickupZ[11] grove_save_pickup[11]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[12] save_pickupY[12] save_pickupZ[12] grove_save_pickup[12]
IF number_of_save_icons >= 14
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[13] save_pickupY[13] save_pickupZ[13] grove_save_pickup[13] //BADLANDS TRAILOR//remove
ENDIF
IF number_of_save_icons >= 15
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[14] save_pickupY[14] save_pickupZ[14] grove_save_pickup[14] //CATS LODGE//remove
ENDIF
IF number_of_save_icons >= 16
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[15] save_pickupY[15] save_pickupZ[15] grove_save_pickup[15] //SAN FRAN GARAGE//remove
ENDIF
IF number_of_save_icons >= 17
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[16] save_pickupY[16] save_pickupZ[16] grove_save_pickup[16] //TORENOS RANCH//remove
ENDIF
IF number_of_save_icons >= 18
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[17] save_pickupY[17] save_pickupZ[17] grove_save_pickup[17] //TRIAD CASINO//remove
ENDIF
created_save_blips = 1
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED grove_save_pickup[save_index]
GOSUB save_the_game
IF IS_PLAYER_PLAYING player1
REMOVE_PICKUP grove_save_pickup[save_index]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[save_index] save_pickupY[save_index] save_pickupZ[save_index] grove_save_pickup[save_index]
CLEAR_AREA save_playerX[save_index] save_playerY[save_index] save_playerZ[save_index] 1.0 TRUE
SET_CHAR_COORDINATES scplayer save_playerX[save_index] save_playerY[save_index] save_playerZ[save_index]
SET_CHAR_HEADING scplayer save_playerH[save_index]
WAIT 0
DO_FADE 1000 FADE_IN
ENDIF
GOSUB save_the_game2
created_save_blips = 0
ENDIF
ELSE
IF created_save_blips = 1
GOSUB remove_all_save_pickups
created_save_blips = 0
ENDIF
ENDIF
ELSE
IF created_save_blips = 1
GOSUB remove_all_save_pickups
created_save_blips = 0
ENDIF
ENDIF
save_index ++
IF save_index >= number_of_save_icons
save_index = 0
ENDIF
ENDIF // IF IS_PLAYER_PLAYING player1
GOTO grove_save_loop_inner
}
//SAVE GAME SETUP*************************************************************************************
remove_all_save_pickups:
REMOVE_PICKUP grove_save_pickup[0]
REMOVE_PICKUP grove_save_pickup[1]
REMOVE_PICKUP grove_save_pickup[2]
REMOVE_PICKUP grove_save_pickup[3]
REMOVE_PICKUP grove_save_pickup[4]
REMOVE_PICKUP grove_save_pickup[5]
REMOVE_PICKUP grove_save_pickup[6]
REMOVE_PICKUP grove_save_pickup[7]
REMOVE_PICKUP grove_save_pickup[8]
REMOVE_PICKUP grove_save_pickup[9]
REMOVE_PICKUP grove_save_pickup[10]
REMOVE_PICKUP grove_save_pickup[11]
REMOVE_PICKUP grove_save_pickup[12]
REMOVE_PICKUP grove_save_pickup[13]
REMOVE_PICKUP grove_save_pickup[14]
REMOVE_PICKUP grove_save_pickup[15]
REMOVE_PICKUP grove_save_pickup[16]
REMOVE_PICKUP grove_save_pickup[17]
RETURN
save_the_game:
flag_player_on_mission = 1
SET_PLAYER_CONTROL player1 Off
ACTIVATE_SAVE_MENU //THE GAME SAVES/RE-LOADS HERE!!!!!
//WAIT 0
WHILE NOT HAS_SAVE_GAME_FINISHED
WAIT 0
ENDWHILE
SET_FADING_COLOUR 0 0 0
DO_FADE 1000 FADE_OUT
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
ENDIF
RETURN
save_the_game2:
IF IS_PLAYER_PLAYING player1
RESTORE_CAMERA_JUMPCUT
SET_CAMERA_BEHIND_PLAYER
ENDIF
WAIT 500
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 on
flag_player_on_mission = 0
ENDIF
RETURN
//STORY MISSION SETUP********************************************************************************
cutscene_fading_status:
//WAIT 1500
SET_FADING_COLOUR 0 0 0
DO_FADE 500 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
CLEAR_PRINTS
CLEAR_HELP
ENDWHILE
IF IS_PLAYER_PLAYING player1
DO_FADE 0 FADE_OUT
RESTORE_CAMERA_JUMPCUT
CLEAR_CHAR_TASKS scplayer
DO_FADE 0 FADE_OUT
ENDIF
RETURN
//SHORT SCRIPTED CUTS*********************************************************************************
mother_script_cut:
IF IS_PLAYER_PLAYING player1
CLEAR_HELP
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 2503.6008 -1676.7875 13.9236 0.0 0.0 0.0 //Mothers house
POINT_CAMERA_AT_POINT 2503.2595 -1677.7181 14.0548 JUMP_CUT
CLEAR_AREA 2495.3652 -1690.7665 13.7734 1.0 TRUE
CLEAR_AREA 2503.2595 -1677.7181 14.0548 2.0 TRUE
CLEAR_AREA introX introY introZ 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 2495.3652 -1690.7665 13.7734 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
sweet_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 2512.2329 -1673.5321 12.6635 0.0 0.0 0.0 //Sweets house
POINT_CAMERA_AT_POINT 2513.1387 -1673.8250 12.9696 JUMP_CUT
CLEAR_AREA 2513.1387 -1673.8250 12.9696 2.0 TRUE
CLEAR_AREA 2521.35 -1678.83 14.32 1.0 TRUE
CLEAR_AREA sweetX sweetY sweetZ 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 2521.35 -1678.83 14.32 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
ryder_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 2451.1482 -1677.7863 16.3581 0.0 0.0 0.0 //Ryder house
POINT_CAMERA_AT_POINT 2451.5637 -1678.6765 16.1721 JUMP_CUT
CLEAR_AREA 2451.5637 -1678.6765 16.1721 2.0 TRUE
CLEAR_AREA 2459.44 -1691.58 12.58 1.0 TRUE
CLEAR_AREA ryderX ryderY ryderZ 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 2459.44 -1691.58 12.58 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
smoke_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 2075.6997 -1687.8783 16.0883 0.0 0.0 0.0 //Smoke house
POINT_CAMERA_AT_POINT 2074.9836 -1688.5559 15.9215 JUMP_CUT
CLEAR_AREA 2065.4 -1703.4 13.1 1.0 TRUE
CLEAR_AREA 2074.9836 -1688.5559 15.9215 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 2065.4 -1703.4 13.1 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
crash_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 1054.6445 -1312.2812 14.9353 0.0 0.0 0.0 //Crash house
POINT_CAMERA_AT_POINT 1054.2712 -1313.2002 15.0617 JUMP_CUT
CLEAR_AREA 1038.04 -1339.23 12.55 1.0 TRUE
CLEAR_AREA 1054.2712 -1313.2002 15.0617 2.0 TRUE
CLEAR_AREA crashX crashY crashZ 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 1038.04 -1339.23 12.55 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
strap_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 825.1696 -1636.5719 23.1761 0.0 0.0 0.0 //Fast food house
POINT_CAMERA_AT_POINT 824.3510 -1636.0514 22.9332 JUMP_CUT
CLEAR_AREA 793.59 -1625.07 12.38 1.0 TRUE
CLEAR_AREA 824.3510 -1636.0514 22.9332 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 793.59 -1625.07 12.38 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
strap_script_cut2:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 2486.8477 -1660.3274 12.5441 0.0 0.0 0.0 //House Party
POINT_CAMERA_AT_POINT 2486.8464 -1659.3627 12.8073 JUMP_CUT
CLEAR_AREA 2486.94 -1646.76 13.07 1.0 TRUE
CLEAR_AREA 2486.8464 -1659.3627 12.8073 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 2486.94 -1646.76 13.07 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
cesar_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 1792.8767 -2105.3684 17.6519 0.0 0.0 0.0 //Cesar house
POINT_CAMERA_AT_POINT 1793.1516 -2106.3013 17.4194 JUMP_CUT
CLEAR_AREA 1793.1516 -2106.3013 17.4194 2.0 TRUE
//IF NOT flag_cesar_mission_counter = 0
//TASK_GO_STRAIGHT_TO_COORD scplayer 1793.89 -2124.42 12.56 PEDMOVE_WALK 3000
//ENDIF
GOSUB cutscene_fading_status
ENDIF
RETURN
motel_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -2187.8699 -2269.8076 29.4158 0.0 0.0 0.0 //Motel
POINT_CAMERA_AT_POINT -2188.3757 -2269.0212 29.7703 JUMP_CUT
CLEAR_AREA -2194.3713 -2256.4980 29.6841 1.0 TRUE
CLEAR_AREA -2188.3757 -2269.0212 29.7703 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -2194.3713 -2256.4980 29.6841 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
truthfarm_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -919.0773 -1715.6240 78.4517 0.0 0.0 0.0 //Motel
POINT_CAMERA_AT_POINT -920.0563 -1715.8236 78.4112 JUMP_CUT
CLEAR_AREA -932.2975 -1718.8911 76.5703 1.0 TRUE
CLEAR_AREA -920.0563 -1715.8236 78.4112 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -932.2975 -1718.8911 76.5703 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
garage_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -2010.9739 154.9329 33.4883 0.0 0.0 0.0 //Triad Casino house
POINT_CAMERA_AT_POINT -2011.9657 154.9767 33.3685 JUMP_CUT
CLEAR_AREA -2034.5591 148.8178 27.8359 1.0 TRUE
CLEAR_AREA -2011.9657 154.9767 33.3685 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -2034.5591 148.8178 27.8359 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
steal_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -2031.3595 196.2776 34.8120 0.0 0.0 0.0 //Triad Casino house
POINT_CAMERA_AT_POINT -2031.6392 195.3477 34.5735 JUMP_CUT
CLEAR_AREA -2038.5095 178.4871 27.8359 1.0 TRUE
CLEAR_AREA -2031.6392 195.3477 34.5735 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -2038.5095 178.4871 27.8359 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
wuzi_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -2129.1858 640.2543 72.0002 0.0 0.0 0.0 //Triad Casino house
POINT_CAMERA_AT_POINT -2130.1023 640.2417 71.6005 JUMP_CUT
CLEAR_AREA -2156.56 645.08 51.35 1.0 TRUE
CLEAR_AREA -2130.1023 640.2417 71.6005 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -2156.56 645.08 51.35 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
triad_casino_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 1979.0204 1004.7916 995.4213 0.0 0.0 0.0 //Triad Casino house
POINT_CAMERA_AT_POINT 1978.5657 1003.9200 995.2380 JUMP_CUT
CLEAR_AREA 1963.4 972.2 993.4 1.0 TRUE
CLEAR_AREA 1979.0204 1004.7916 995.4213 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 1963.4 972.2 993.4 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
triad_casino_script_cut2:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 1954.5709 1041.4943 993.1794 0.0 0.0 0.0 //Triad Casino house
POINT_CAMERA_AT_POINT 1954.9624 1042.4143 993.1676 JUMP_CUT
CLEAR_AREA 1963.5 1063.3 993.4 1.0 TRUE
CLEAR_AREA 1954.9624 1042.4143 993.1676 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 1963.5 1063.3 993.4 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
triad_casino_script_cut3:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 2073.9473 991.3126 17.4461 0.0 0.0 0.0 //Triad Casino house
POINT_CAMERA_AT_POINT 2072.9534 991.4046 17.5078 JUMP_CUT
CLEAR_AREA 2020.0 1008.83 9.82 1.0 TRUE
CLEAR_AREA 2072.9534 991.4046 17.5078 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 2020.0 1008.83 9.82 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
pleasure_domes_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -2601.6772 1386.1322 6.8077 0.0 0.0 0.0 //Pleasure domes house
POINT_CAMERA_AT_POINT -2602.3279 1386.8549 7.0409 JUMP_CUT
CLEAR_AREA -2624.1951 1410.7644 6.1015 1.0 TRUE
CLEAR_AREA -2602.3279 1386.8549 7.0409 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -2624.1951 1410.7644 6.1015 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
ranch_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -690.6180 906.0824 13.0468 0.0 0.0 0.0 //Torino Ranch
POINT_CAMERA_AT_POINT -690.5204 907.0766 13.0919 JUMP_CUT
CLEAR_AREA -684.9820 927.3704 12.6293 1.0 TRUE
CLEAR_AREA -690.5204 907.0766 13.0919 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -684.9820 927.3704 12.6293 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
airstrip_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 427.1954 2527.6433 19.4052 0.0 0.0 0.0 //Pilot School
POINT_CAMERA_AT_POINT 426.2472 2527.9556 19.4635 JUMP_CUT
CLEAR_AREA 426.2472 2527.9556 19.4635 2.0 TRUE
//TASK_GO_STRAIGHT_TO_COORD scplayer -684.9820 927.3704 12.6293 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
airstrip_script_cut2:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 330.1037 2587.7505 18.3215 0.0 0.0 0.0 //Air strip
POINT_CAMERA_AT_POINT 330.0515 2586.7527 18.3620 JUMP_CUT
CLEAR_AREA 330.0515 2586.7527 18.3620 2.0 TRUE
//TASK_GO_STRAIGHT_TO_COORD scplayer -684.9820 927.3704 12.6293 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
mafia_casino_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 2257.1345 1587.1329 1010.0352 0.0 0.0 0.0 //Mafia Casino house
POINT_CAMERA_AT_POINT 2257.2671 1588.1194 1009.9393 JUMP_CUT
CLEAR_AREA 2270.6 1637.9 1007.3 1.0 TRUE
CLEAR_AREA 2257.2671 1588.1194 1009.9393 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 2270.6 1637.9 1007.3 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
LA_mansion_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION 1278.0908 -849.6337 90.7593 0.0 0.0 0.0 //Triad Casino house
POINT_CAMERA_AT_POINT 1278.0381 -848.6531 90.5709 JUMP_CUT
CLEAR_AREA 1258.1578 -785.2752 91.0302 1.0 TRUE
CLEAR_AREA 1278.0381 -848.6531 90.5709 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer 1258.1578 -785.2752 91.0302 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
zero_script_cut1:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -2278.0042 134.3340 39.6060 0.0 0.0 0.0 //Zero's shop
POINT_CAMERA_AT_POINT -2277.0078 134.3560 39.6897 JUMP_CUT
CLEAR_AREA -2242.8120 128.7572 34.3203 1.0 TRUE
CLEAR_AREA -2277.0078 134.3560 39.6897 2.0 TRUE
TASK_GO_STRAIGHT_TO_COORD scplayer -2242.8120 128.7572 34.3203 PEDMOVE_WALK 3000
GOSUB cutscene_fading_status
ENDIF
RETURN
// ****************************************HELP TEXT*************************************************
game_help_loop:
{
SCRIPT_NAME HELP
game_help_loop_inner:
WAIT 70
IF IS_PLAYER_PLAYING player1
IF game_starts_from_scratch = 1
// added to game_help_loop_inner around line 5938
IF wasted_help = 0
IF HAS_PICKUP_BEEN_COLLECTED wasted_help1
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
ENDIF
SET_FIXED_CAMERA_POSITION 2022.6125 -1432.0500 17.6541 0.0 0.0 0.0
POINT_CAMERA_AT_POINT 2022.9888 -1431.1235 17.6552 JUMP_CUT
REMOVE_PICKUP wasted_help1
REMOVE_PICKUP wasted_help2
// You have been wasted
CLEAR_HELP
PRINT_HELP HOSP_1 // If your health reaches zero, you will pass out and you will be treated at the local medical center.
PRINT_HELP HOSP_2 // To replenish your health you can eat food, use health pick-ups or save at a safehouse.
PRINT_HELP HOSP_3 //Before you are discharged, hospital staff will confiscate your weapons and bill you for the healthcare you received.
//This is turned off in the mobile version.
WHILE (IS_HELP_MESSAGE_BEING_DISPLAYED)
wait 0
IF IS_SKIP_CUTSCENE_BUTTON_PRESSED
CLEAR_HELP
ENDIF
ENDWHILE
wasted_help = 1
RESTORE_CAMERA_JUMPCUT
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
SWITCH_WIDESCREEN OFF
ENDIF
ENDIF
IF HAS_PICKUP_BEEN_COLLECTED wasted_help2
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
ENDIF
//SET_FIXED_CAMERA_POSITION 1184.3470 -1313.4890 19.7079 0.0 0.0 0.0 // WDTOM there is a giant tree here now, camera is blocked in 3Master.
//POINT_CAMERA_AT_POINT 1183.6447 -1314.0889 19.3248 JUMP_CUT
SET_FIXED_CAMERA_POSITION 1188.1 -1318.6 18.9 0.0 0.0 0.0
POINT_CAMERA_AT_POINT 1181.1 -1323.6 15.2 JUMP_CUT
REMOVE_PICKUP wasted_help1
REMOVE_PICKUP wasted_help2
// You have been wasted
CLEAR_HELP
PRINT_HELP HOSP_1 // If your health reaches zero, you will pass out and you will be treated at the local medical center.
PRINT_HELP HOSP_2 // To replenish your health you can eat food, use health pick-ups or save at a safehouse.
PRINT_HELP HOSP_3 //Before you are discharged, hospital staff will confiscate your weapons and bill you for the healthcare you received.
//This is turned off in the mobile version.
WHILE (IS_HELP_MESSAGE_BEING_DISPLAYED)
wait 0
IF IS_SKIP_CUTSCENE_BUTTON_PRESSED
CLEAR_HELP
ENDIF
ENDWHILE
RESTORE_CAMERA_JUMPCUT
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
SWITCH_WIDESCREEN OFF
ENDIF
wasted_help = 1
ENDIF
ENDIF
IF busted_help = 0
IF HAS_PICKUP_BEEN_COLLECTED busted_help1
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
SWITCH_WIDESCREEN ON
ENDIF
SET_FIXED_CAMERA_POSITION 1536.5765 -1687.1343 26.7069 0.0 0.0 0.0
POINT_CAMERA_AT_POINT 1537.2947 -1686.5641 26.3081 JUMP_CUT
REMOVE_PICKUP busted_help1
// You have been arrested
CLEAR_HELP
PRINT_HELP BUST_1 //When you have a wanted level, the local police force will try to arrest ('bust') you.
PRINT_HELP BUST_2 //As your wanted level gets higher, different enforcement agencies will become involved and the likelihood of them trying to kill you will increase.
PRINT_HELP BUST_3 //If you are 'busted' by law enforcement you will be processed at a local police precinct.
PRINT_HELP BUST_4 //The officers will strip you of your weapons and take some of your cash as a bribe.
WHILE (IS_HELP_MESSAGE_BEING_DISPLAYED)
wait 0
IF IS_SKIP_CUTSCENE_BUTTON_PRESSED
CLEAR_HELP
ENDIF
ENDWHILE
RESTORE_CAMERA_JUMPCUT
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
SWITCH_WIDESCREEN OFF
ENDIF
busted_help = 1
ENDIF
ENDIF
IF chat_help1_flag = 0
IF HAS_PICKUP_BEEN_COLLECTED chat_help1
PRINT_HELP CHATBAK // People on the streets will talk to Carl. Tap ~m~~widget_reply_no~ for a negative reply or tap ~m~~widget_reply_yes~ for a positive reply.
chat_help1_flag = 1
ENDIF
ENDIF
IF swimming_help < 7
IF swimming_help = 0
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_SWIMMING scplayer
PRINT_HELP WZI2_A0 //Use the ~h~left analog stick ~w~to move around in the water.
swimming_help = 1
WAIT 5000
ENDIF
ENDIF
ENDIF
IF swimming_help = 1
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_SWIMMING scplayer
PRINT_HELP WZI2_A5 // Press ~m~~widget_button_dive~ to dive underwater.
swimming_help = 2
WAIT 5000
ENDIF
ENDIF
ENDIF
IF swimming_help = 2
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_SWIMMING scplayer
PRINT_HELP WZI2_A6 // Hold down ~m~~widget_button_swim~ to swim around underwater.
swimming_help = 3
WAIT 5000
ENDIF
ENDIF
ENDIF
IF swimming_help = 3
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_SWIMMING scplayer
PRINT_HELP WZI2_A1 // Hold ~m~~widget_button_swim~ to swim faster.
swimming_help = 4
WAIT 5000
ENDIF
ENDIF
ENDIF
IF swimming_help = 4
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_SWIMMING scplayer
PRINT_HELP WZI2_A2 //The blue bar at the top right of the screen is your ~h~breath meter ~h~this represents how long you can stay underwater.
FLASH_HUD_OBJECT HUD_FLASH_BREATH
WAIT 5000
swimming_help = 5
FLASH_HUD_OBJECT -1
ENDIF
ENDIF
ENDIF
IF swimming_help = 5
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_SWIMMING scplayer
PRINT_HELP WZI2_A3 //Your breath will decrease while you're underwater. Once your breath reaches zero, your health will start to decrease.
swimming_help = 6
WAIT 5000
ENDIF
ENDIF
ENDIF
IF swimming_help = 6
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_SWIMMING scplayer
PRINT_HELP WZI2_A7 //Swim back up to the surface to get your breath back. The breath meter will slowly increase back to its maximum.
swimming_help = 7
ENDIF
ENDIF
ENDIF
ENDIF
IF print_first_help = 0
PRINT_HELP HELP_42
WAIT 2000
IF IS_PLAYER_PLAYING player1
IF been_in_a_bmx = 0
IF IS_CHAR_IN_MODEL scplayer BMX
PRINT_HELP_FOREVER_CONDITIONAL CLSC_2F 2 // To pedal hold down ~m~~widget_accelerate~. (the 2 is CONDITION_FLAG_ACCELERATE)
been_in_a_bmx = 1
ENDIF
ENDIF
ENDIF
WAIT 5000
PRINT_HELP ( HELP42 ) //Follow the ~h~blip~w~ to get back to the hood.
FLASH_HUD_OBJECT HUD_FLASH_RADAR
WAIT 7000
FLASH_HUD_OBJECT -1
print_first_help = 1
ELSE
IF spray_help = 0
IF flag_sweet_mission_counter = 1
WAIT 4000
PRINT_HELP (SPRAY_C) //Spray can
spray_help = 1
ENDIF
ENDIF
IF voice_over_at_hub = 1
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer introX introY introZ 25.0 25.0 5.0 FALSE
IF IS_CHAR_IN_ANY_CAR scplayer
PRINT_HELP_FOREVER_CONDITIONAL HELP21B 1 // Press ~m~~widget_enter_car~ to get on the bike.
ENDIF
WAIT 5000
PRINT_HELP_FOREVER HELP44 // Walk into the red marker to continue. Hold ~m~~widget_sprint~ to sprint.
voice_over_at_hub = 2
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF been_in_a_bmx = 0
IF IS_CHAR_IN_MODEL scplayer BMX
OR IS_CHAR_IN_MODEL scplayer bike
OR IS_CHAR_IN_MODEL scplayer mtbike
WAIT 2000
PRINT_HELP_FOREVER_CONDITIONAL CLSC_2F 2 // To pedal hold down ~m~~widget_accelerate~. (the 2 is CONDITION_FLAG_ACCELERATE)
been_in_a_bmx = 1
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF bike_help = 0
IF IS_CHAR_IN_MODEL scplayer BMX
OR IS_CHAR_IN_MODEL scplayer bike
OR IS_CHAR_IN_MODEL scplayer mtbike
IF bike_help = 0
AND been_in_a_bmx = 1
WAIT 6000
PRINT_HELP_FOREVER_CONDITIONAL HELP5_A 8 // Press ~m~~widget_brake~ to brake. Press and hold to reverse if the bike has stopped.
WAIT 8000
PRINT_HELP_FOREVER_CONDITIONAL HP27HIJ 4 // Use ~m~~widget_ped_move_up~ and ~m~~widget_ped_move_down~ to shift your weight on the bike.
WAIT 2000
bike_help = 1
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF flag_intro_mission_counter > 0
IF car_help_played = 0
IF main_visible_area = 0
IF NOT IS_CHAR_ON_ANY_BIKE scplayer
IF IS_CHAR_IN_ANY_CAR scplayer
WAIT 2000
PRINT_HELP_FOREVER_CONDITIONAL RAD_TCH 64 // Swipe the bottom left corner of the screen to change radio stations. CONDITION_FLAG_RADIO_STATION
//This should be here too but we can't mod this script w/o breaking old saves :(
//PRINT_HELP_FOREVER_CONDITIONAL RAD_HID 64 // Tap ~m~~widget_swipe_radio_up~ and ~m~~widget_swipe_radio_down~ to change radio stations.
WAIT 5000
PRINT_HELP HELP56 // Press ~m~~widget_camera~ to change camera views.
car_help_played = 1
ENDIF
ENDIF
ENDIF
ENDIF
IF drive_by_help = 0
IF car_help_played = 1
IF IS_PLAYER_PLAYING player1
GET_AREA_VISIBLE main_visible_area
IF main_visible_area = 0
IF IS_CHAR_IN_ANY_CAR scplayer
AND NOT IS_CHAR_ON_ANY_BIKE scplayer
IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_MICRO_UZI
OR IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_MP5
PRINT_HELP HELP31 // To do a drive-by, first look left or right using ~m~~widget_look_left~ or ~m~~widget_look_right~. Then fire using ~m~~widget_attack.
WAIT 6000
PRINT_HELP HELP34 // You must have a sub machine gun to perform a drive-by.
drive_by_help = 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF //IS_PLAYER_PLAYING
ENDIF //print_first_help = 0
IF drive_by_help = 1
IF car_help_played = 1
IF voice_over_at_hub = 1
IF chat_help1_flag = 1
TERMINATE_THIS_SCRIPT
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO game_help_loop_inner
}
// ****************************************OPEN UP MISSIONS*************************************************
intro_stuff_loop:
{
SCRIPT_NAME INTROST
intro_stuff_loop_inner:
WAIT 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF voice_over_at_hub = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2471.7 -1668.0 12.3 90.0 40.0 4.0 FALSE
LOAD_MISSION_AUDIO 1 SOUND_VO_AF //Grove Street - Home.
LOAD_MISSION_AUDIO 2 SOUND_VO_AG // At least it was before I fucked everything up.
WHILE NOT HAS_MISSION_AUDIO_LOADED 1
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
GOTO skip_loading_audio
ENDIF
ENDWHILE
PRINT_NOW ( VO_AF ) 4000 1
PLAY_MISSION_AUDIO 1 //Grove Street - Home.
WHILE NOT HAS_MISSION_AUDIO_FINISHED 1
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
GOTO skip_loading_audio
ENDIF
ENDWHILE
PRINT_NOW ( VO_AG ) 4000 1
PLAY_MISSION_AUDIO 2 // At least it was before I fucked everything up.
WHILE NOT HAS_MISSION_AUDIO_LOADED 2
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
GOTO skip_loading_audio
ENDIF
ENDWHILE
skip_loading_audio:
voice_over_at_hub = 1
ENDIF
ENDIF
ENDIF
IF funeral_mission_finished = 0
IF flag_intro_mission_counter = 1
WAIT 5000
PRINT_NOW ( INT_CJ1 ) 8000 1 // ~s~go into CJ's house.
funeral_mission_finished = 1
ENDIF
ENDIF
IF funeral_mission_finished = 1
IF flag_intro_mission_counter = 1
GET_AREA_VISIBLE main_visible_area
IF main_visible_area = 3
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2496.0505 -1698.0128 1013.7500 10.0 10.0 5.0 FALSE
SET_PLAYER_CONTROL player1 OFF
CLEAR_PRINTS
SET_FIXED_CAMERA_POSITION 2496.3799 -1694.3336 1015.4313 0.0 0.0 0.0 // look at savepoint
POINT_CAMERA_AT_POINT 2496.3677 -1695.3247 1015.2991 JUMP_CUT
PRINT_HELP SAVE
WAIT 5000
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
RESTORE_CAMERA_JUMPCUT
funeral_mission_finished = 2
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF funeral_mission_finished = 2
IF flag_intro_mission_counter = 1
GET_AREA_VISIBLE main_visible_area
IF main_visible_area = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 2495.3298 -1689.1830 13.2716 20.0 20.0 6.0 FALSE
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME INT
START_NEW_SCRIPT intro_mission_loop
REMOVE_BLIP intro_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon intro_contact_blip
PRINT_NOW ( INT2_1 ) 8000 1 // Go and see Ryder, he lives across the street.
WAIT 2000
PRINT_HELP ( RYBLIP ) //Follow the ~h~blip~w~ to get back to the hood.
WAIT 4000
funeral_mission_finished = 3
TERMINATE_THIS_SCRIPT
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO intro_stuff_loop_inner
}
game_flow_loop:
{
SCRIPT_NAME FLOW
game_flow_loop_inner:
WAIT 1000
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF girlfried_help_flag = 0
IF flag_crash_mission_counter = 1
WAIT 5500
CLEAR_HELP
PRINT_HELP ( GF_H000 ) //Girlfriend help
girlfried_help_flag = 1
ENDIF
ENDIF
IF oddjob_help_flag = 0
IF flag_scrash_mission_counter = 1
WAIT 6000
CLEAR_HELP
PRINT_HELP ( VAL_HLP ) //Valet help
WAIT 5000
CLEAR_HELP
PRINT_HELP ( VAL_GOT ) //Valet uniform
oddjob_help_flag = 1
ENDIF
ENDIF
IF trucking_help_flag = 0
IF flag_cat_mission3_passed = 1 //truck help
WAIT 6000
CLEAR_HELP
PRINT_HELP ( TRUCK_H )
trucking_help_flag = 1
ENDIF
ENDIF
IF stealth_help_flag = 0
IF flag_strap_mission_counter > 1 //Stealth help
WAIT 6000
CLEAR_HELP
PRINT_HELP ( STELF )
stealth_help_flag = 1
ENDIF
ENDIF
IF got_gimp_suit = 0
IF flag_heist_mission_counter = 2 //Got gimp outfit
WAIT 6000
CLEAR_HELP
PRINT_HELP ( GIMPGOT )
got_gimp_suit = 1
ENDIF
ENDIF
IF camera_secret_help = 0
IF flag_synd_mission_counter = 1 //Camera
WAIT 6000
CLEAR_HELP
PRINT_HELP ( SECRET )
camera_secret_help = 1
ENDIF
ENDIF
IF croupier_help = 0
IF flag_heist_mission_counter = 6 //croupier uniform
WAIT 6000
CLEAR_HELP
PRINT_HELP ( CRO_GOT )
croupier_help = 1
ENDIF
ENDIF
// trigger LA1 finale*****************************************************************************************
IF trigger_final_LA1_missions = 0
IF flag_sweet_mission_counter = 9
IF flag_smoke_mission_counter = 4
IF flag_strap_mission_counter = 5
IF flag_ryder_mission_counter = 3
IF flag_crash_mission_counter = 2
IF flag_cesar_mission_counter = 1
START_NEW_SCRIPT la1fin1_mission_loop
REMOVE_BLIP sweet_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
trigger_final_LA1_missions = 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
// Triggers the Scrash2 mission
IF trigger_scrash2_mission = 0
IF flag_scrash_mission_counter = 1
AND flag_Synd_mission_counter = 6
REMOVE_BLIP garage_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ crash_blip_icon garage_contact_blip
trigger_scrash2_mission = 1
ENDIF
ENDIF
// Triggers the outrider mission
IF trigger_ice_cold_mission = 0
IF flag_Synd_mission_counter = 5
REMOVE_BLIP synd_contact_blip
REMOVE_BLIP garage_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
trigger_ice_cold_mission = 1
ENDIF
ENDIF
// Triggers the final Synd mission
IF trigger_final_synd_mission = 0
IF flag_Synd_mission_counter = 9
AND flag_wuzi_mission_counter = 5
REMOVE_BLIP garage_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
trigger_final_synd_mission = 1
ENDIF
ENDIF
// trigger LA2 finale*****************************************************************************************
IF trigger_final_LA2_missions = 0
IF flag_grove_mission_counter = 2
AND flag_mansion_mission_counter = 4
START_NEW_SCRIPT riot_mission_loop //"riot mission 1" //CRAIG //RIOT!
REMOVE_BLIP grove_contact_blip
REMOVE_BLIP mansion_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon mansion_contact_blip
trigger_final_LA2_missions = 1
TERMINATE_THIS_SCRIPT
ENDIF
ENDIF
ENDIF //FLAG PLAYER ON MISSION
ENDIF // IF IS_PLAYER_PLAYING player1
GOTO game_flow_loop_inner
}
andys_door_madness:
{
SCRIPT_NAME DOORS
WAIT 0
////////////////////////////////////////////////////////////////////////////
// DOORS FOR RIOT2///////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//NW house 0
ROTATE_OBJECT riot2_door[3] 0.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1852.0 -1990.7 1849.8 -1989.6 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1854.0 -1990.0 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//NW house 1
ROTATE_OBJECT riot2_door[4] 270.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1867.3 -1985.2 1868.2 -1982.7 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1867.4 -1987.1 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//NW house 2
ROTATE_OBJECT riot2_door[5] 90.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1866.5 -1998.3 1865.4 -2000.4 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1866.0 -1996.7 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//NE house 0
ROTATE_OBJECT riot2_door[6] 270.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1899.6 -1985.2 1900.9 -1982.7 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1899.8 -1986.7 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//NE house 1
ROTATE_OBJECT riot2_door[7] 180.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1914.1 -1992.7 1916.8 -1994.2 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1912.3 -1993.2 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//NE house 2
ROTATE_OBJECT riot2_door[8] 90.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1899.0 -1998.1 1897.9 -2000.4 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1898.7 -1996.1 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//SE house 0
ROTATE_OBJECT riot2_door[9] 0.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1901.0 -2020.1 1899.1 -2019.1 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1902.7 -2019.6 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//SE house 1
ROTATE_OBJECT riot2_door[10] 180.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1914.1 -2020.8 1916.2 -2021.8 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1912.4 -2021.3 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//SE house 2
ROTATE_OBJECT riot2_door[11] 90.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1906.5 -2035.3 1905.5 -2037.2 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1905.8 -2033.4 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//SW house 0
ROTATE_OBJECT riot2_door[12] 0.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1852.0 -2020.1 1850.1 -2019.2 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1853.7 -2019.4 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//SW house 1
ROTATE_OBJECT riot2_door[13] 180.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1865.0 -2020.7 1867.1 -2021.8 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1863.0 -2021.3 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
//SW house 2
ROTATE_OBJECT riot2_door[14] 90.0 360.0 FALSE
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_AREA_2D scplayer 1857.6 -2035.2 1856.5 -2037.2 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer 1857.1 -2033.3 12.5
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
ENDIF
TERMINATE_THIS_SCRIPT
}
switch_update_stats_back_on:
{
SCRIPT_NAME BACKON
WAIT 5000
SHOW_UPDATE_STATS TRUE
TERMINATE_THIS_SCRIPT
}
{///////////////////////////////////////////////////////////////////////////////
DISPLAY_WIN_TEXT:// Used for casino games //////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
SCRIPT_NAME cashwin
LVAR_INT cash_win
LVAR_INT time_to_print
LVAR_INT racetour_flag
LVAR_INT timer
GET_GAME_TIMER game_timer
IF time_to_print = 0
timer = game_timer + 3000
ELSE
timer = game_timer + time_to_print
ENDIF
display_win_text_loop:
WAIT 0
IF NOT is_player_playing player1
terminate_this_script
ENDIF
GET_GAME_TIMER game_timer
IF timer < game_timer
TERMINATE_THIS_SCRIPT
ENDIF
IF cash_win = 0
GOSUB setup_win_text
SET_TEXT_COLOUR 180 180 180 255
IF racetour_flag = 69
DISPLAY_TEXT 320.0 180.333 BJ_PUSH
ELSE
DISPLAY_TEXT 320.0 180.333 NOWIN
ENDIF
ELSE
IF cash_win > 0
GOSUB setup_win_text
SWITCH racetour_flag
CASE 45
DISPLAY_TEXT_WITH_NUMBER 320.0 155.333 ALLRACE cash_win
BREAK
CASE 80
DISPLAY_TEXT_WITH_NUMBER 320.0 155.333 PL_07 cash_win
BREAK
DEFAULT
DISPLAY_TEXT_WITH_NUMBER 320.0 155.333 WINNER cash_win
BREAK
ENDSWITCH
ELSE
temp_integer_1 = cash_win * -1
GOSUB setup_win_text
SWITCH racetour_flag
CASE 80
DISPLAY_TEXT_WITH_NUMBER 320.0 155.333 PL_10 temp_integer_1
BREAK
DEFAULT
DISPLAY_TEXT_WITH_NUMBER 320.0 155.333 LOSER temp_integer_1
BREAK
ENDSWITCH
ENDIF
ENDIF
GOTO display_win_text_loop
setup_win_text:
SET_TEXT_RIGHT_JUSTIFY OFF
SET_TEXT_JUSTIFY OFF
SET_TEXT_WRAPX 640.0
SET_TEXT_PROPORTIONAL ON
SET_TEXT_BACKGROUND OFF
SET_TEXT_SCALE 1.3 3.36
SET_TEXT_CENTRE ON
SET_TEXT_EDGE 2 0 0 0 255
set_text_font font_heading
GET_HUD_COLOUR HUD_COLOUR_YELLOW temp_integer_2 temp_integer_3 temp_integer_4 an
set_text_colour temp_integer_2 temp_integer_3 temp_integer_4 255
RETURN
}
{
crane_manager:
SCRIPT_NAME CRANES
LVAR_INT num_of_crane_scripts_running
GOTO skip_crane_bit
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 magno_base
skip_crane_bit:
crane_manager_loop:
WAIT 100
IF IS_PLAYER_PLAYING player1
// crane type 1 -----------------------------
// san fran
IF LOCATE_CHAR_ANY_MEANS_2D scplayer -2080.441 256.015 10.0 10.0 FALSE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT crane1.sc num_of_crane_scripts_running
IF num_of_crane_scripts_running = 0
STREAM_SCRIPT crane1.sc
IF HAS_STREAMED_SCRIPT_LOADED crane1.sc
START_NEW_STREAMED_SCRIPT crane1.sc sf_crane1_base
num_of_crane_scripts_running++
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED crane1.sc
ENDIF
ENDIF
// vegas
IF LOCATE_CHAR_ANY_MEANS_2D scplayer 2399.202 1879.139 10.0 10.0 FALSE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT crane1.sc num_of_crane_scripts_running
IF num_of_crane_scripts_running = 0
STREAM_SCRIPT crane1.sc
IF HAS_STREAMED_SCRIPT_LOADED crane1.sc
START_NEW_STREAMED_SCRIPT crane1.sc lv_base
num_of_crane_scripts_running++
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED crane1.sc
ENDIF
ENDIF
// DOCK CRANE
IF DOES_OBJECT_EXIST magno_base
IF LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer magno_base 50.0 50.0 FALSE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT crane2.sc num_of_crane_scripts_running
IF num_of_crane_scripts_running = 0
STREAM_SCRIPT crane2.sc
IF HAS_STREAMED_SCRIPT_LOADED crane2.sc
START_NEW_STREAMED_SCRIPT crane2.sc magno_base
num_of_crane_scripts_running++
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED crane2.sc
ENDIF
ENDIF
ENDIF
// QUARRY CRANE
IF LOCATE_CHAR_ANY_MEANS_2D scplayer 709.45 915.93 10.0 10.0 FALSE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT crane3.sc num_of_crane_scripts_running
IF num_of_crane_scripts_running = 0
STREAM_SCRIPT crane3.sc
IF HAS_STREAMED_SCRIPT_LOADED crane3.sc
START_NEW_STREAMED_SCRIPT crane3.sc quarry_base quarry_stand quarry_arm
num_of_crane_scripts_running++
ENDIF
ELSE
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED crane3.sc
ENDIF
ENDIF
ENDIF
GOTO crane_manager_loop
}
VAR_INT entry_exit_area entry_exit_status
VAR_TEXT_LABEL entry_exit_name
{
switch_entry_exit_after_mission:
SCRIPT_NAME ENTEXT
LVAR_INT current_area
current_area = -1
WHILE NOT current_area = entry_exit_area
WAIT 0
GET_AREA_VISIBLE current_area
ENDWHILE
SWITCH_ENTRY_EXIT $entry_exit_name entry_exit_status
TERMINATE_THIS_SCRIPT
}
{
check_player_is_safe:
player_is_completely_safe = 0
IF IS_PLAYER_PLAYING player1
IF main_visible_area = 0
IF flag_cell_nation = 0 //phone call not in progress
IF player_fall_state = 0 //Parachute
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
IF NOT IS_BIT_SET iDateReport MEETING_IN_PROGRESS
IF NOT IS_MINIGAME_IN_PROGRESS
IF CAN_PLAYER_START_MISSION player1
player_is_completely_safe = 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
}
{
check_player_is_safe_for_mobile:
player_is_completely_safe_for_mobile = 0
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF main_visible_area = 0
IF flag_cell_nation = 0 //phone call not in progress
IF player_fall_state = 0 //Parachute
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
IF NOT IS_BIT_SET iDateReport MEETING_IN_PROGRESS
IF NOT IS_MINIGAME_IN_PROGRESS
IF CAN_PLAYER_START_MISSION player1
IF IS_CHAR_ON_FOOT scplayer
IF NOT IS_GANG_WAR_FIGHTING_GOING_ON
IF NOT IS_WANTED_LEVEL_GREATER player1 0
GET_GAME_TIMER timer_mobile_now
timer_mobile_diff = timer_mobile_now - timer_mobile_start
player_is_completely_safe_for_mobile = 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
}
{
open_the_map:
SCRIPT_NAME OPENUP
open_the_map_inner:
WAIT 2000
IF Return_cities_passed > 0
IF opened_badlands_up = 0
//BADLANDS
GOSUB remove_prop_blips1
CREATE_FORSALE_PROPERTY_PICKUP propertyX[8] propertyY[8] propertyZ[8] save_houseprice[8] PROP_3 save_housepickup[8] //Small town suburban house with lawn and porch
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[8] propertyY[8] propertyZ[8] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[8]
CHANGE_BLIP_DISPLAY prop_save_house_blip[8] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[19] propertyY[19] propertyZ[19] save_houseprice[19] PROP_3 save_housepickup[19] //Farm
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[19] propertyY[19] propertyZ[19] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[19]
CHANGE_BLIP_DISPLAY prop_save_house_blip[19] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[22] propertyY[22] propertyZ[22] save_houseprice[22] PROP_3 save_housepickup[22] //just off main Angel Pine town, behind Sawmill
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[22] propertyY[22] propertyZ[22] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[22]
CHANGE_BLIP_DISPLAY prop_save_house_blip[22] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[25] propertyY[25] propertyZ[25] save_houseprice[25] PROP_3 save_housepickup[25] //Las Barrancas (southern town)
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[25] propertyY[25] propertyZ[25] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[25]
CHANGE_BLIP_DISPLAY prop_save_house_blip[25] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[31] propertyY[31] propertyZ[31] save_houseprice[31] PROP_3 save_housepickup[31] //North Badlands
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[31] propertyY[31] propertyZ[31] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[31]
CHANGE_BLIP_DISPLAY prop_save_house_blip[31] BLIP_ONLY
opened_badlands_up = 1
ENDIF
ENDIF
IF Return_cities_passed > 0
IF flag_truth_mission_counter > 1
OR launch_shit_for_debug_build = 1 //TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF opened_sanfran_up = 0
//SAN FRAN
GOSUB remove_prop_blips2
CREATE_FORSALE_PROPERTY_PICKUP propertyX[11] propertyY[11] propertyZ[11] save_houseprice[11] PROP_3 save_housepickup[11] //big swanky SF savehouse at the top of lombard street
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[11] propertyY[11] propertyZ[11] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[11]
CHANGE_BLIP_DISPLAY prop_save_house_blip[11] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[13] propertyY[13] propertyZ[13] save_houseprice[13] PROP_3 save_housepickup[13] //small flat near hospital
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[13] propertyY[13] propertyZ[13] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[13]
CHANGE_BLIP_DISPLAY prop_save_house_blip[13] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[14] propertyY[14] propertyZ[14] save_houseprice[14] PROP_3 save_housepickup[14] //large garage in alley behind apartments in Hashbury
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[14] propertyY[14] propertyZ[14] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[14]
CHANGE_BLIP_DISPLAY prop_save_house_blip[14] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[18] propertyY[18] propertyZ[18] save_houseprice[18] PROP_3 save_housepickup[18] //small chinatown pad
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[18] propertyY[18] propertyZ[18] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[18]
CHANGE_BLIP_DISPLAY prop_save_house_blip[18] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[20] propertyY[20] propertyZ[20] save_houseprice[20] PROP_3 save_housepickup[20] //large pad next to driving school
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[20] propertyY[20] propertyZ[20] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[20]
CHANGE_BLIP_DISPLAY prop_save_house_blip[20] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[21] propertyY[21] propertyZ[21] save_houseprice[21] PROP_3 save_housepickup[21] //Vank Hoff In The Park Hotel Room
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[21] propertyY[21] propertyZ[21] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[21]
CHANGE_BLIP_DISPLAY prop_save_house_blip[21] BLIP_ONLY
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1458.7, -1140.0, 24.2 RADAR_SPRITE_TSHIRT clothes_blips[0] //CLOTHGP //SAN FRAN
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1886.1, 862.4, 35.2 RADAR_SPRITE_TSHIRT clothes_blips[1] //CLOTHGP //SAN FRAN
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2574.3, 1901.7, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[2] //CLOTHGP //SAN FRAN
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2090.5, 2221.0, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[3] //CLOTHGP //SAN FRAN
SWITCH_ENTRY_EXIT clothgp TRUE //ZIP //SAN FRAN
opened_sanfran_up = 1
ENDIF
ENDIF
ENDIF
IF Return_cities_passed > 1
IF opened_desert_up = 0
//DESERT
GOSUB remove_prop_blips3
CREATE_FORSALE_PROPERTY_PICKUP propertyX[5] propertyY[5] propertyZ[5] save_houseprice[5] PROP_3 save_housepickup[5] //Fort Carson old house savehouse near river BADLANDS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[5] propertyY[5] propertyZ[5] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[5]
CHANGE_BLIP_DISPLAY prop_save_house_blip[5] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[23] propertyY[23] propertyZ[23] save_houseprice[23] PROP_3 save_housepickup[23] //In El Quebrados (most northerly town)
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[23] propertyY[23] propertyZ[23] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[23]
CHANGE_BLIP_DISPLAY prop_save_house_blip[23] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[24] propertyY[24] propertyZ[24] save_houseprice[24] PROP_3 save_housepickup[24] //Las Barrancas (southern town)
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[24] propertyY[24] propertyZ[24] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[24]
CHANGE_BLIP_DISPLAY prop_save_house_blip[24] BLIP_ONLY
opened_desert_up = 1
ENDIF
ENDIF
IF Return_cities_passed > 1
IF flag_mob_sanfran[8] = 1
OR launch_shit_for_debug_build = 1 //TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IF opened_vegas_up = 0
//VEGAS
GOSUB remove_prop_blips4
CREATE_FORSALE_PROPERTY_PICKUP propertyX[4] propertyY[4] propertyZ[4] save_houseprice[4] PROP_3 save_housepickup[4] //Shabbyhouse in Vegas East
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[4] propertyY[4] propertyZ[4] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[4]
CHANGE_BLIP_DISPLAY prop_save_house_blip[4] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[6] propertyY[6] propertyZ[6] save_houseprice[6] PROP_3 save_housepickup[6] //Medium house in nice suburb of Venturas
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[6] propertyY[6] propertyZ[6] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[6]
CHANGE_BLIP_DISPLAY prop_save_house_blip[6] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[7] propertyY[7] propertyZ[7] save_houseprice[7] PROP_3 save_housepickup[7] //shabby house in rundown residential area
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[7] propertyY[7] propertyZ[7] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[7]
CHANGE_BLIP_DISPLAY prop_save_house_blip[7] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[9] propertyY[9] propertyZ[9] save_houseprice[9] PROP_3 save_housepickup[9] //shabby house in rundown residential area
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[9] propertyY[9] propertyZ[9] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[9]
CHANGE_BLIP_DISPLAY prop_save_house_blip[9] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[16] propertyY[16] propertyZ[16] save_houseprice[16] PROP_3 save_housepickup[16] //Pirates In Men’s Pants Casino
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[16] propertyY[16] propertyZ[16] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[16]
CHANGE_BLIP_DISPLAY prop_save_house_blip[16] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[17] propertyY[17] propertyZ[17] save_houseprice[17] PROP_3 save_housepickup[17] //The Camels Toe Casino
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[17] propertyY[17] propertyZ[17] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[17]
CHANGE_BLIP_DISPLAY prop_save_house_blip[17] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[27] propertyY[27] propertyZ[27] save_houseprice[27] PROP_3 save_housepickup[27] //CASINO
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[27] propertyY[27] propertyZ[27] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[27]
CHANGE_BLIP_DISPLAY prop_save_house_blip[27] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[28] propertyY[28] propertyZ[28] save_houseprice[28] PROP_3 save_housepickup[28] //Casino
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[28] propertyY[28] propertyZ[28] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[28]
CHANGE_BLIP_DISPLAY prop_save_house_blip[28] BLIP_ONLY
CREATE_FORSALE_PROPERTY_PICKUP propertyX[29] propertyY[29] propertyZ[29] save_houseprice[29] PROP_3 save_housepickup[29] //Vegas house
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[29] propertyY[29] propertyZ[29] RADAR_SPRITE_PROPERTY_GREEN prop_save_house_blip[29]
CHANGE_BLIP_DISPLAY prop_save_house_blip[29] BLIP_ONLY
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 457.2, -1500.7, 31.3 RADAR_SPRITE_TSHIRT clothes_blips[11] //CSDESGN //VEGAS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2795.2, 2424.6, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[12] //CSDESGN //VEGAS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1692.9, 952.8, 26.3 RADAR_SPRITE_TSHIRT clothes_blips[15] //CSDESGN //SAN FRAN
SWITCH_ENTRY_EXIT csdesgn TRUE //VICTIM //VEGAS
opened_vegas_up = 1
ENDIF
ENDIF
ENDIF
IF Return_cities_passed > 2
IF opened_la2_up = 0
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 451.9, -1480.0, 30.9 RADAR_SPRITE_TSHIRT clothes_blips[13] //CSEXL //LA2
SWITCH_ENTRY_EXIT csexl TRUE //DIDIERSACHS //LA2
TERMINATE_THIS_SCRIPT
opened_la2_up = 1
ENDIF
ENDIF
GOTO open_the_map_inner
}
remove_prop_blips1:
REMOVE_BLIP prop_save_house_blip[8]
REMOVE_BLIP prop_save_house_blip[19]
REMOVE_BLIP prop_save_house_blip[22]
REMOVE_BLIP prop_save_house_blip[25]
REMOVE_BLIP prop_save_house_blip[31]
REMOVE_PICKUP save_housepickup[8]
REMOVE_PICKUP save_housepickup[19]
REMOVE_PICKUP save_housepickup[22]
REMOVE_PICKUP save_housepickup[25]
REMOVE_PICKUP save_housepickup[31]
RETURN
remove_prop_blips2:
REMOVE_BLIP prop_save_house_blip[11]
REMOVE_BLIP prop_save_house_blip[13]
REMOVE_BLIP prop_save_house_blip[14]
REMOVE_BLIP prop_save_house_blip[18]
REMOVE_BLIP prop_save_house_blip[20]
REMOVE_BLIP prop_save_house_blip[21]
REMOVE_PICKUP save_housepickup[11]
REMOVE_PICKUP save_housepickup[13]
REMOVE_PICKUP save_housepickup[14]
REMOVE_PICKUP save_housepickup[18]
REMOVE_PICKUP save_housepickup[20]
REMOVE_PICKUP save_housepickup[21]
RETURN
remove_prop_blips3:
REMOVE_BLIP prop_save_house_blip[5]
REMOVE_BLIP prop_save_house_blip[23]
REMOVE_BLIP prop_save_house_blip[24]
REMOVE_PICKUP save_housepickup[5]
REMOVE_PICKUP save_housepickup[23]
REMOVE_PICKUP save_housepickup[24]
RETURN
remove_prop_blips4:
REMOVE_BLIP prop_save_house_blip[4]
REMOVE_BLIP prop_save_house_blip[6]
REMOVE_BLIP prop_save_house_blip[7]
REMOVE_BLIP prop_save_house_blip[9]
REMOVE_BLIP prop_save_house_blip[16]
REMOVE_BLIP prop_save_house_blip[17]
REMOVE_BLIP prop_save_house_blip[27]
REMOVE_BLIP prop_save_house_blip[28]
REMOVE_BLIP prop_save_house_blip[29]
REMOVE_PICKUP save_housepickup[4]
REMOVE_PICKUP save_housepickup[6]
REMOVE_PICKUP save_housepickup[7]
REMOVE_PICKUP save_housepickup[9]
REMOVE_PICKUP save_housepickup[16]
REMOVE_PICKUP save_housepickup[17]
REMOVE_PICKUP save_housepickup[27]
REMOVE_PICKUP save_housepickup[28]
REMOVE_PICKUP save_housepickup[29]
RETURN
little_casino_cut:
{
SCRIPT_NAME LITCAS
little_casino_cut_inner:
WAIT 100
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer 1941.1461 997.5668 20.0 100.0 100.0 20.0 FALSE
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
SWITCH_WIDESCREEN ON
SET_PLAYER_CONTROL player1 OFF
ENDIF
LOAD_SCENE 2039.7322 1006.7711 14.7353
SET_FIXED_CAMERA_POSITION 2040.7255 1006.7479 14.8482 0.0 0.0 0.0 //shot of Casino
POINT_CAMERA_AT_POINT 2039.7322 1006.7711 14.7353 JUMP_CUT
DO_FADE 500 FADE_IN
CLEAR_PRINTS
PRINT_NOW WUZ_HLP 5000 1 //walk into the casino
WAIT 5000
GOSUB mini_fade
IF IS_PLAYER_PLAYING player1
SET_CAMERA_BEHIND_PLAYER
SWITCH_WIDESCREEN OFF
SET_PLAYER_CONTROL player1 ON
RESTORE_CAMERA_JUMPCUT
CLEAR_PRINTS
ENDIF
DO_FADE 500 FADE_IN
TERMINATE_THIS_SCRIPT
ENDIF
ENDIF
GOTO little_casino_cut_inner
}
mini_fade:
SET_FADING_COLOUR 0 0 0
DO_FADE 500 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
RETURN
// Since the script draw calls are being aspect corrected for anything that's not 4:3, we need to render
// backgrounds that cover the sides of the screen for widescreen back buffers in some cases.
DrawAspectCorrectingQuads:
DRAW_RECT -320.0 224.0 642.0 448.0 0 0 0 255
DRAW_RECT 960.0 224.0 642.0 448.0 0 0 0 255
RETURN
// This subroutine collects abstracted directional input.
CONST_INT INPUT_NEUTRAL 0 // Constants I'm initializing here.
CONST_INT INPUT_UP 1
CONST_INT INPUT_DOWN 2
CONST_INT INPUT_LEFT 3
CONST_INT INPUT_RIGHT 4
VAR_INT nLeftStickX nLeftStickY nRightStickX nRightStickY
VAR_FLOAT fWidgetCellX, fWidgetCellY
VAR_INT INPUT INPUT_ANALOG_LEFT_RIGHT INPUT_ANALOG_UP_DOWN
CollectAllInput:
// Grab stick and widget values.
GET_POSITION_OF_ANALOGUE_STICKS PAD1 nLeftStickX nLeftStickY nRightStickX nRightStickY
GET_WIDGET_VALUE2 WIDGET_ARCADE_JOYSTICK fWidgetCellX, fWidgetCellY
// Initialize abstract variables.
INPUT = INPUT_NEUTRAL
IF fWidgetCellX = 0.0
INPUT_ANALOG_LEFT_RIGHT = -128
ENDIF
IF fWidgetCellX = 1.0
INPUT_ANALOG_LEFT_RIGHT = 0
ENDIF
IF fWidgetCellX = 2.0
INPUT_ANALOG_LEFT_RIGHT = 128
ENDIF
IF fWidgetCellY = 0.0
INPUT_ANALOG_UP_DOWN = -128
ENDIF
IF fWidgetCellY = 1.0
INPUT_ANALOG_UP_DOWN = 0
ENDIF
IF fWidgetCellY = 2.0
INPUT_ANALOG_UP_DOWN = 128
ENDIF
// Do analysis.
IF nLeftStickY < -16 // Analog stick from controller for left, right, up, down.
OR nLeftStickY > 16
INPUT_ANALOG_UP_DOWN = nLeftStickY
ENDIF
IF nLeftStickX < -16
OR nLeftStickX > 16
INPUT_ANALOG_LEFT_RIGHT = nLeftStickX
ENDIF
IF fWidgetCellY = 0.0 // Up.
INPUT = INPUT_UP
ENDIF
IF IS_BUTTON_PRESSED PAD1 DPADUP
INPUT = INPUT_UP
INPUT_ANALOG_UP_DOWN = -127
ENDIF
IF nLeftStickY < -16
INPUT = INPUT_UP
ENDIF
IF fWidgetCellY = 2.0 // Down.
INPUT = INPUT_DOWN
ENDIF
IF IS_BUTTON_PRESSED PAD1 DPADDOWN
INPUT = INPUT_DOWN
INPUT_ANALOG_UP_DOWN = 127
ENDIF
IF nLeftStickY > 16
INPUT = INPUT_DOWN
ENDIF
IF fWidgetCellX = 0.0 // Left
INPUT = INPUT_LEFT
ENDIF
IF IS_BUTTON_PRESSED PAD1 DPADLEFT
INPUT = INPUT_LEFT
INPUT_ANALOG_LEFT_RIGHT = -127
ENDIF
IF nLeftStickX < -16
INPUT = INPUT_LEFT
ENDIF
IF fWidgetCellX = 2.0 // Right
INPUT = INPUT_RIGHT
ENDIF
IF IS_BUTTON_PRESSED PAD1 DPADRIGHT
INPUT = INPUT_RIGHT
INPUT_ANALOG_LEFT_RIGHT = 127
ENDIF
IF nLeftStickX > 16
INPUT = INPUT_RIGHT
ENDIF
RETURN
EnableArcadeWidgets:
IS_WIDGET_RELEASED WIDGET_ARCADE_BUTTON
IS_WIDGET_RELEASED WIDGET_ARCADE_JOYSTICK
RETURN
MISSION_START
MISSION_END
// ******************************************************************************************
// launch projectile
// ******************************************************************************************
{
launch_projectile:
SCRIPT_NAME PROJECT
// input variables
LVAR_INT proj_obj
LVAR_FLOAT start_x start_y start_z
LVAR_FLOAT target_x target_y target_z
LVAR_FLOAT arch_height // above starting or finishing position
LVAR_INT missed_shot
LVAR_INT this_hoop
// flags & workings
LVAR_INT flag
LVAR_INT start_time
CONST_FLOAT gravity_accel 9.8
LVAR_INT this_time
LVAR_INT time_since_launch
LVAR_FLOAT time_since_launch_f
LVAR_INT temp_int
LVAR_FLOAT total_travel_time
LVAR_FLOAT temp_float temp_float2 temp_float3
LVAR_FLOAT x2 y2 z2
LVAR_FLOAT x3 y3 z3
LVAR_FLOAT travel_vec_x travel_vec_y
LVAR_FLOAT vertex_time
LVAR_FLOAT a b c
// initialise any required variables
flag = 0
points_scored = 0
bball_throw_active = 1
//VIEW_INTEGER_VARIABLE points_scored points_scored
// fake creates
IF flag = -1
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 proj_obj
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 this_hoop
ENDIF
projectile_loop:
WAIT 0
// calculate launch data
IF flag = 0
// alter target slightly for missed shot
IF missed_shot = 1
GENERATE_RANDOM_FLOAT_IN_RANGE -0.2 0.2 temp_float
target_x += temp_float
GENERATE_RANDOM_FLOAT_IN_RANGE -0.2 0.2 temp_float
target_y += temp_float
ENDIF
// adjust the target
target_z += 0.1
// make sure input data is valid (height of arch)
IF start_z > target_z
IF arch_height < 0.0
arch_height = 0.0
ENDIF
ELSE
temp_float = start_z + arch_height
temp_float2 = temp_float - target_z
IF temp_float2 < 0.5 // min height
temp_float = target_z + 0.5
arch_height = temp_float - start_z
ENDIF
ENDIF
// 1. figure out time this should take (t = sqrt(d/(0.5*a))
// going up
temp_float = 0.5 * gravity_accel
temp_float2 = arch_height / temp_float
//WRITE_DEBUG_WITH_FLOAT dist_to_travel_up arch_height
SQRT temp_float2 vertex_time
// coming down
temp_float = start_z + arch_height
temp_float -= target_z // distance to travel
//WRITE_DEBUG_WITH_FLOAT dist_to_travel_down temp_float
temp_float2 = 0.5 * gravity_accel
temp_float3 = temp_float / temp_float2
SQRT temp_float3 temp_float
//WRITE_DEBUG_WITH_FLOAT coming_down_time temp_float
// total
total_travel_time = vertex_time + temp_float
// 2. figure out the quadratic equation of the ball path
// a
temp_float = 0.0 - arch_height
temp_float2 = vertex_time * vertex_time
a = temp_float / temp_float2
// b
temp_float = vertex_time * a
b = temp_float * -2.0
// c
c = 0.0
//WRITE_DEBUG_WITH_FLOAT a a
// 3. get the 2d vector the projectile travels
travel_vec_x = target_x - start_x
travel_vec_y = target_y - start_y
// 4. get initial start time, and set object initial settings
GET_GAME_TIMER start_time
IF DOES_OBJECT_EXIST proj_obj
SET_OBJECT_RECORDS_COLLISIONS proj_obj TRUE
SET_OBJECT_COLLISION proj_obj TRUE
FREEZE_OBJECT_POSITION proj_obj TRUE
ENDIF
flag++
ENDIF
// position projectile
IF flag = 1
IF DOES_OBJECT_EXIST proj_obj
IF NOT HAS_OBJECT_COLLIDED_WITH_ANYTHING proj_obj
// work out height of ball, based on time elapsed
GET_GAME_TIMER this_time
time_since_launch = this_time - start_time
time_since_launch_f =# time_since_launch
time_since_launch_f /= 1000.0
IF time_since_launch_f < total_travel_time
// use the quadratic equation to calculate height
temp_float = time_since_launch_f * time_since_launch_f
temp_float *= a
temp_float2 = b * time_since_launch_f
z = temp_float + temp_float2
z += c
// work out how far along the travel vector the object has gone
temp_float = time_since_launch_f / total_travel_time
x = travel_vec_x * temp_float
y = travel_vec_y * temp_float
// work out objects new position
x2 = start_x + x
y2 = start_y + y
z2 = start_z + z
SET_OBJECT_COORDINATES_AND_VELOCITY proj_obj x2 y2 z2
ELSE
SET_OBJECT_COORDINATES_AND_VELOCITY proj_obj target_x target_y target_z
flag++
ENDIF
ELSE
//WRITE_DEBUG hit_something
GOSUB bbthrow_get_random_velocity
FREEZE_OBJECT_POSITION proj_obj FALSE
SET_OBJECT_DYNAMIC proj_obj TRUE
SET_OBJECT_COLLISION proj_obj TRUE
SET_OBJECT_VELOCITY proj_obj x3 y3 z3
IF NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_NOW BB_06 4000 1 // missed shot
ENDIF
flag = 99
ENDIF
ENDIF
ENDIF
// hit bbhoop or netted.
IF flag = 2
IF missed_shot = 1
IF DOES_OBJECT_EXIST this_hoop
GET_OBJECT_MODEL this_hoop temp_int
IF HAS_MODEL_LOADED temp_int
GOSUB bbthrow_get_random_velocity
// GET_OBJECT_COORDINATES this_hoop x y z
//
// GENERATE_RANDOM_FLOAT_IN_RANGE -1.0 1.0 temp_float
// GENERATE_RANDOM_FLOAT_IN_RANGE 0.2 1.0 temp_float2
// GENERATE_RANDOM_FLOAT_IN_RANGE 1.0 2.0 temp_float3
// GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS this_hoop temp_float temp_float2 temp_float3 x2 y2 z2
// x3 = x2 - x
// y3 = y2 - y
// z3 = z2 - z
//
// GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 temp_float
// x3 /= temp_float
// y3 /= temp_float
// z3 /= temp_float
//
// // give random speed
// GENERATE_RANDOM_FLOAT_IN_RANGE 5.0 8.0 temp_float
//
// x3 *= temp_float
// y3 *= temp_float
// z3 *= temp_float
FREEZE_OBJECT_POSITION proj_obj FALSE
SET_OBJECT_DYNAMIC proj_obj TRUE
SET_OBJECT_COLLISION proj_obj TRUE
SET_OBJECT_VELOCITY proj_obj x3 y3 z3
IF NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_NOW BB_06 4000 1 // missed shot
ENDIF
ENDIF
ENDIF
// play sound hitting off ring
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT proj_obj SOUND_BASKETBALL_HIT_HOOP
points_scored = -1
flag = 99
ELSE
target_z += -0.5
IF bball_shot_dist < 6
IF NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_WITH_2_NUMBERS_NOW BB_05 bball_shot_dist bball_shot_dist_decimal 5000 1
ENDIF
points_scored = 1
ELSE
IF NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_WITH_2_NUMBERS_NOW BB_04 bball_shot_dist bball_shot_dist_decimal 5000 1
ENDIF
points_scored = 2
ENDIF
temp_float =# bball_shot_dist
temp_float2 =# bball_shot_dist_decimal
temp_float2 *= 0.1
temp_float += temp_float2
IF NOT ARE_MEASUREMENTS_IN_METRES
CONVERT_METRES_TO_FEET temp_float temp_float
ENDIF
REGISTER_FLOAT_STAT LONGEST_BASKETBALL temp_float
flag++
ENDIF
ENDIF
// go in
IF flag = 3
GET_OBJECT_COORDINATES proj_obj x y z
GET_DISTANCE_BETWEEN_COORDS_3D x y z target_x target_y target_z temp_float
// play sound going in
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT proj_obj SOUND_BASKETBALL_SCORE
IF temp_float < 0.1
FREEZE_OBJECT_POSITION proj_obj FALSE
SET_OBJECT_COLLISION proj_obj TRUE
SET_OBJECT_DYNAMIC proj_obj TRUE
SET_OBJECT_VELOCITY proj_obj 0.0 0.0 -0.1
flag = 99
ELSE
x2 = target_x - x
y2 = target_y - y
z2 = target_z - z
x2 *= 0.3
y2 *= 0.3
z2 *= 0.3
x += x2
y += y2
z += z2
SET_OBJECT_COORDINATES proj_obj x y z
ENDIF
ENDIF
// finish projectile script
IF flag = 99
bball_throw_active = 0
TERMINATE_THIS_SCRIPT
ENDIF
GOTO projectile_loop
bbthrow_get_random_velocity:
GET_OBJECT_COORDINATES this_hoop x y z
GENERATE_RANDOM_FLOAT_IN_RANGE -1.0 1.0 temp_float
GENERATE_RANDOM_FLOAT_IN_RANGE 0.2 1.0 temp_float2
GENERATE_RANDOM_FLOAT_IN_RANGE 1.2 2.2 temp_float3
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS this_hoop temp_float temp_float2 temp_float3 x2 y2 z2
x3 = x2 - x
y3 = y2 - y
z3 = z2 - z
GET_DISTANCE_BETWEEN_COORDS_3D x y z x2 y2 z2 temp_float
x3 /= temp_float
y3 /= temp_float
z3 /= temp_float
// give random speed
//WRITE_DEBUG_WITH_FLOAT total_travel_time total_travel_time
//GENERATE_RANDOM_FLOAT_IN_RANGE 5.0 7.0 temp_float
temp_float = total_travel_time * 5.0
x3 *= temp_float
y3 *= temp_float
z3 *= temp_float
RETURN
}
MISSION_START
MISSION_END
{
bball_challenge_script:
SCRIPT_NAME BBCHAL
// parameters passed in
LVAR_INT bbhoop
// blips
LVAR_INT location_blip
// floats
LVAR_FLOAT x2 y2 z2
LVAR_FLOAT x3 y3 z3
LVAR_FLOAT vec_x vec_y vec_z
LVAR_FLOAT vec2_x vec2_y vec2_z
LVAR_FLOAT location_x location_y location_z
LVAR_FLOAT temp_float temp_float2
// ints
LVAR_INT m_stage
LVAR_INT m_goals
LVAR_INT help_flag
LVAR_INT temp_int temp_int2 temp_int3
LVAR_INT next_time_to_award
LVAR_INT new_high_score
//LVAR_INT round
LVAR_INT missed_flag
LVAR_INT missed_flag2
LVAR_INT time_to_add_on
VAR_INT bball_r3_is_pressed
m_stage = 0
m_goals = 0
help_flag = 0
bball_challenge_timer = 60500
bball_challenge_score = 0
new_high_score = 0
//round = 0
missed_flag = 0
missed_flag2 = 0
time_to_add_on = 3000
new_marker_distance = 4.0
TIMERA = 0
TIMERB = 0
bball_challenge_active = 1
// fake create
IF m_stage = -1
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 bbhoop
ENDIF
bball_challenge_loop:
WAIT 0
SWITCH m_stage
CASE 0
GOSUB bbchal_m_stage_0
BREAK
CASE 1
GOSUB bbchal_m_stage_1
BREAK
ENDSWITCH
IF bball_active = 0
AND bball_throw_active = 0
GOSUB bbchal_cleanup
ENDIF
GOSUB bbchal_display_help
IF bball_is_active = 0
GOSUB bbchal_cleanup
ENDIF
IF bball_r3_is_pressed = 0
IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
bball_r3_is_pressed = 1
GOSUB bbchal_cleanup
ENDIF
ELSE
IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
bball_r3_is_pressed = 0
ENDIF
ENDIF
GOTO bball_challenge_loop
bbchal_display_help:
// print help
SWITCH help_flag
CASE 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
AND NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_HELP BB_11 // Shoot as many hoops as possible before the time expires.
help_flag++
ENDIF
BREAK
CASE 1
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
AND NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_HELP BB_12 // Extra time will be awarded for each shot made
help_flag++
ENDIF
BREAK
CASE 2
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
AND NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_HELP BB_10 // Shoot hoops from the ~y~marker~w~ on the court.
help_flag++
ENDIF
BREAK
ENDSWITCH
RETURN
bbchal_m_stage_0:
// print instructions
IF m_goals = 0
PRINT_NOW BB_13 5000 1
TIMERA = 0
m_goals++
ENDIF
IF m_goals = 1
//IF TIMERA > 5000
m_goals++
//ENDIF
ENDIF
// create onscreen timers and text
IF m_goals = 2
//IF help_flag > 2
DISPLAY_ONSCREEN_TIMER_WITH_STRING bball_challenge_timer TIMER_DOWN BB_19 // time
DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING bball_challenge_score COUNTER_DISPLAY_NUMBER 1 BB_18 // score
DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING bball_challenge_high_score COUNTER_DISPLAY_NUMBER 2 BB_14 // high score
GOSUB bbchal_get_new_marker
ADD_BLIP_FOR_COORD location_x location_y location_z location_blip
m_goals++
//ENDIF
ENDIF
// wait for player to shoot from first marker
IF m_goals = 3
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer location_x location_y location_z 1.5 1.5 2.0 TRUE
IF bball_throw_active = 1
IF DOES_BLIP_EXIST location_blip
REMOVE_BLIP location_blip
ENDIF
m_goals = 1
m_stage++
ELSE
bball_challenge_timer = 60500
ENDIF
ELSE
bball_challenge_timer = 60500
ENDIF
ENDIF
ENDIF
RETURN
bbchal_m_stage_1:
//WRITE_DEBUG_WITH_INT m_goals m_goals
//WRITE_DEBUG_WITH_INT m_stage m_stage
//WRITE_DEBUG_WITH_INT points_scored points_scored
IF m_goals = 0
// see if shot went in
IF NOT points_scored = 0
IF points_scored > 0
bball_challenge_score += points_scored
bball_challenge_timer += next_time_to_award
new_marker_distance += 0.5
GOSUB bbchal_get_new_marker
IF DOES_BLIP_EXIST location_blip
REMOVE_BLIP location_blip
ENDIF
ADD_BLIP_FOR_COORD location_x location_y location_z location_blip
//points_scored = 0
m_goals++
ELSE
// missed
IF DOES_BLIP_EXIST location_blip
REMOVE_BLIP location_blip
ENDIF
ADD_BLIP_FOR_COORD location_x location_y location_z location_blip
IF missed_flag = 0
PRINT_NOW BB_20 5000 1
missed_flag++
ENDIF
//points_scored = 0
m_goals++
ENDIF
ENDIF
ENDIF
// wait for player to take shot from location
IF m_goals = 1
IF IS_PLAYER_PLAYING player1
LOCATE_CHAR_ON_FOOT_3D scplayer location_x location_y location_z 1.5 1.5 2.0 TRUE
ENDIF
IF bball_throw_active = 1
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer location_x location_y location_z 1.5 1.5 2.0 TRUE
IF DOES_BLIP_EXIST location_blip
REMOVE_BLIP location_blip
ENDIF
//points_scored = 0
m_goals = 0
bball_throw_active = 0
//WRITE_DEBUG true1
ELSE
IF missed_flag2 = 0
PRINT_NOW BB_16 5000 1 // take the shot from the marker
missed_flag2++
ENDIF
bball_throw_active = 0
//WRITE_DEBUG false1
ENDIF
ENDIF
ELSE
missed_flag2 = 0
ENDIF
ENDIF
// // wait for player to slam dunk
// IF m_goals = 2
// IF IS_PLAYER_PLAYING player1
// LOCATE_CHAR_ON_FOOT_3D scplayer location_x location_y location_z 1.5 1.5 2.0 TRUE
// ENDIF
// IF bball_throw_active = 1
// IF IS_PLAYER_PLAYING player1
// IF LOCATE_CHAR_ON_FOOT_3D scplayer location_x location_y location_z 1.5 1.5 2.0 TRUE
// IF DOES_BLIP_EXIST location_blip
// REMOVE_BLIP location_blip
// ENDIF
// m_goals = 0
// ELSE
// bball_throw_active = 0
// ENDIF
// ENDIF
// ENDIF
// ENDIF
// finishing
IF m_goals = 3
IF TIMERA > 5000
GOSUB bbchal_cleanup
ENDIF
ENDIF
// check for new high score
IF new_high_score = 0
IF bball_challenge_score > bball_challenge_high_score
bball_challenge_high_score = bball_challenge_score
//PRINT_NOW BB_15 5000 1 // new high score!!
new_high_score++
ENDIF
ELSE
IF bball_challenge_score > bball_challenge_high_score
bball_challenge_high_score = bball_challenge_score
ENDIF
ENDIF
// wait for time to expire
IF bball_challenge_timer <= 0
IF m_goals < 3
PRINT_NOW BB_17 5000 1 // time has expired
TIMERA = 0
ENDIF
m_goals = 3
ENDIF
RETURN
LVAR_FLOAT new_marker_distance
bbchal_get_random_marker:
get_random_marker_start:
IF DOES_OBJECT_EXIST bbhoop
GET_LEVEL_DESIGN_COORDS_FOR_OBJECT bbhoop 2 x2 y2 z2
GET_LEVEL_DESIGN_COORDS_FOR_OBJECT bbhoop 3 x3 y3 z3
GET_LEVEL_DESIGN_COORDS_FOR_OBJECT bbhoop 0 x y z
// bring court in a bit
SWITCH hoop_direction
CASE 1
x2 += -1.5
y2 += 1.5
x3 += 1.5
y3 += -1.5
BREAK
CASE 2
x2 += -1.5
y2 += -1.5
x3 += 1.5
y3 += 1.5
BREAK
CASE 3
x2 += 1.5
y2 += -1.5
x3 += -1.5
y3 += 1.5
BREAK
CASE 4
x2 += 1.5
y2 += 1.5
x3 += -1.5
y3 += -1.5
BREAK
ENDSWITCH
z2 += 5.0
GET_GROUND_Z_FOR_3D_COORD x2 y2 z2 location_z
// get random point
IF x2 < x3
GENERATE_RANDOM_FLOAT_IN_RANGE x2 x3 location_x
ELSE
GENERATE_RANDOM_FLOAT_IN_RANGE x3 x2 location_x
ENDIF
IF y2 < y3
GENERATE_RANDOM_FLOAT_IN_RANGE y2 y3 location_y
ELSE
GENERATE_RANDOM_FLOAT_IN_RANGE y2 y3 location_y
ENDIF
vec_x = location_x - x
vec_y = location_y - y
GET_DISTANCE_BETWEEN_COORDS_2D x y location_x location_y temp_float
vec_x /= temp_float
vec_y /= temp_float
vec_x *= new_marker_distance
vec_y *= new_marker_distance
location_x = x + vec_x
location_y = y + vec_y
// check location isn't outside court
IF x2 < x3
IF location_x < x2
location_x = x2
ENDIF
IF location_x > x3
location_x = x3
ENDIF
ELSE
IF location_x > x2
location_x = x2
ENDIF
IF location_x < x3
location_x = x3
ENDIF
ENDIF
IF y2 < y3
IF location_y < y2
location_y = y2
ENDIF
IF location_y > y3
location_y = y3
ENDIF
ELSE
IF location_y > y2
location_y = y2
ENDIF
IF location_y < y3
location_y = y3
ENDIF
ENDIF
ENDIF
RETURN
bbchal_get_new_marker:
GOSUB bbchal_get_random_marker
IF DOES_OBJECT_EXIST bbhoop
GET_LEVEL_DESIGN_COORDS_FOR_OBJECT bbhoop 0 x y z
ENDIF
GET_DISTANCE_BETWEEN_COORDS_2D location_x location_y x y distance
// store how much time this will be worth 1 sec per meter
next_time_to_award =# distance
next_time_to_award *= time_to_add_on
temp_float =# time_to_add_on
temp_float *= 0.1
temp_int =# temp_float
temp_int *= -1
time_to_add_on += temp_int
IF time_to_add_on < 500
time_to_add_on = 500
ENDIF
RETURN
bbchal_cleanup:
CLEAR_PRINTS
IF NOT new_high_score = 0
//PRINT_BIG BB_15 5000 1 // new high score
//PRINT_NOW BB_15 5000 1 // new high score!!
//~y~NEW HIGH SCORE!!~n~~1~
PRINT_WITH_NUMBER_BIG BB_15 bball_challenge_high_score 5000 1
REGISTER_INT_STAT HIGHEST_SCORE_IN_BASKETBALL_CHALLENGE bball_challenge_high_score
PLAY_MISSION_PASSED_TUNE 1
ENDIF
IF DOES_BLIP_EXIST location_blip
REMOVE_BLIP location_blip
ENDIF
CLEAR_ONSCREEN_COUNTER bball_challenge_score
CLEAR_ONSCREEN_COUNTER bball_challenge_high_score
CLEAR_ONSCREEN_TIMER bball_challenge_timer
bball_challenge_active = 0
TERMINATE_THIS_SCRIPT
RETURN
}
// [BB_09]
// Press the ~h~R3 ~w~button to start the challenge mode.
// [BB_10]
// Shoot hoops from the ~y~marker~w~ on the court.
// [BB_11]
// Shoot as many hoops as possible before the time expires.
// [BB_12]
// Extra time will be awarded for each shot made.
// [BB_13]
// ~s~Challenge mode started!
// [BB_14]
// High Score
// [BB_15]
// ~s~NEW HIGH SCORE!!
// [BB_16]
// ~s~Shoot from the ~y~marker~s~.
// [BB_17]
// ~r~Time Expired!
// [BB_18]
// Score
// [BB_19]
// Time
MISSION_START
MISSION_END
// GLOBALS
VAR_INT lowrider_game_is_active
VAR_INT lowrider_pscore
VAR_INT lowrider_oscore
VAR_INT lowrider_level
VAR_INT lowrider_last_level
VAR_INT lowrider_opposition_skill
VAR_FLOAT wheel_fl wheel_bl wheel_fr wheel_br
CONST_INT LOWRIDER_PERFECT_SCORE 50
CONST_INT LOWRIDER_GOOD_SCORE 25
CONST_INT LOWRIDER_OK_SCORE 15
CONST_INT LOWRIDER_BAD_SCORE 0
CONST_INT LOWRIDER_VBAD_SCORE 0
CONST_INT LOWRIDER_PERFECT_TIME 126
CONST_INT LOWRIDER_PERFECT_TIME_NEG -126
CONST_INT LOWRIDER_GOOD_TIME 244
CONST_INT LOWRIDER_GOOD_TIME_NEG -244
CONST_INT LOWRIDER_OK_TIME 344
CONST_INT LOWRIDER_OK_TIME_NEG -344
CONST_INT LOWRIDER_BAD_TIME 450
CONST_INT LOWRIDER_BAD_TIME_NEG -450
CONST_INT LOWRIDER_BEAT_PERFECT 0
CONST_INT LOWRIDER_BEAT_GOOD 1
CONST_INT LOWRIDER_BEAT_ALRIGHT 2
CONST_INT LOWRIDER_BEAT_PAST 3
CONST_INT LOWRIDER_BEAT_FUTURE 4
CONST_INT LOWRIDER_BEAT_WRONG_BUTTON 5
CONST_INT LOWRIDER_BEAT_MISTIMED_BUTTON 6
CONST_INT LOWRIDER_SCORE_LIMIT 999999
CONST_INT LOWRIDER_OVERALL_BAD 0
CONST_INT LOWRIDER_OVERALL_GOOD 1
CONST_INT LOWRIDER_OVERALL_PERFECT 2
CONST_INT LOWRIDER_SCORE_PERFECT_MULTIPLER 10
CONST_INT LOWRIDER_SCORE_TOTAL_BEATS_TO_REPORT 4
VAR_INT lowr_perfect_beat_counter
VAR_INT lowr_good_beat_counter
VAR_INT lowr_bad_beat_counter
VAR_INT lowr_overall_state
{
lowrider_game:
SCRIPT_NAME LOWGAME
// input parameters
LVAR_INT pcar
LVAR_INT ocar
LVAR_INT bounce_girl
// workings
LVAR_FLOAT pcar_x pcar_y pcar_z
LVAR_FLOAT ocar_x ocar_y ocar_z
LVAR_FLOAT vec_x vec_y vec_z
LVAR_FLOAT force_multiplier
LVAR_INT flag
LVAR_INT temp_seq
LVAR_INT lowrider_sequence
LVAR_INT car_got_roof
LVAR_INT temp_int
LVAR_INT player_stick_position
LVAR_INT last_stick_position
LVAR_INT beat_time beat_type beat_num
LVAR_INT beat_fuckup
LVAR_INT cumulative_score
LVAR_INT last_scored_beat
LVAR_FLOAT temp_float
LVAR_INT last_opp_scored_beat
VAR_INT old_beat_num
LVAR_INT last_print
LVAR_INT consecutive_goods
LVAR_INT consecutive_bads
// set initial flags
force_multiplier = 0.01
lowrider_level = 0
flag = 0
car_got_roof = 0
lowrider_pscore = 0
lowrider_oscore = 0
player_stick_position = 0
beat_fuckup = 0
cumulative_score = 0
last_scored_beat = -1
last_opp_scored_beat = 0
last_stick_position = 0
old_beat_num = -1
// fake creates
IF flag = -1
CREATE_CAR PONY 0.0 0.0 0.0 pcar
CREATE_CAR PONY 0.0 0.0 0.0 ocar
CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 bounce_girl
WAIT 0
WAIT 0
WAIT 0
ENDIF
// check input is valid
IF DOES_VEHICLE_EXIST pcar
IF IS_CAR_DEAD pcar
GOTO terminate_lowrider_game
ENDIF
ELSE
GOTO terminate_lowrider_game
ENDIF
IF DOES_VEHICLE_EXIST ocar
IF IS_CAR_DEAD ocar
GOTO terminate_lowrider_game
ENDIF
ELSE
GOTO terminate_lowrider_game
ENDIF
IF lowrider_opposition_skill < 1
lowrider_opposition_skill = 1
ELSE
IF lowrider_opposition_skill > 5
lowrider_opposition_skill = 5
ENDIF
ENDIF
// get initial values
IF NOT IS_CAR_DEAD pcar
GET_CAR_COORDINATES pcar pcar_x pcar_y pcar_z
ENDIF
IF NOT IS_CAR_DEAD ocar
GET_CAR_COORDINATES ocar ocar_x ocar_y ocar_z
ENDIF
lowrider_game_is_active = 1
lowrider_game_loop:
WAIT 0
// this is to fix the bug if player dies from starvation while on mini game
IF flag < 5
IF NOT DOES_VEHICLE_EXIST pcar
bd_terminate_script = 1
flag = 5
ENDIF
ENDIF
SWITCH flag
// initialise
CASE 0
SET_CAR_DENSITY_MULTIPLIER 0.0
SET_PED_DENSITY_MULTIPLIER 0.0
CLEAR_AREA pcar_x pcar_y pcar_z 200.0 TRUE
// load anims
REQUEST_ANIMATION LOWRIDER
WHILE NOT HAS_ANIMATION_LOADED LOWRIDER
WAIT 0
ENDWHILE
// setup girl in car
IF NOT IS_CAR_DEAD pcar
LOCK_CAR_DOORS pcar CARLOCK_LOCKED_PLAYER_INSIDE
APPLY_BRAKES_TO_PLAYERS_CAR player1 ON
SET_CAR_PROOFS pcar TRUE TRUE TRUE TRUE TRUE
// default offsets
x = 0.6200
y = 0.3100
z = -0.1670
ENDIF
// give girl initial sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idleloop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idleloop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idleloop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idleloop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hurry LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hair LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idleloop LOWRIDER 4.0 FALSE FALSE FALSE FALSE -1
SET_SEQUENCE_TO_REPEAT lowrider_sequence 1
CLOSE_SEQUENCE_TASK lowrider_sequence
IF NOT IS_CHAR_DEAD bounce_girl
IF IS_CHAR_ATTACHED_TO_ANY_CAR bounce_girl
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
ENDIF
ENDIF
// check if car has roof
car_got_roof = 0
IF NOT IS_CAR_DEAD pcar
IF IS_CAR_MODEL pcar REMINGTN
OR IS_CAR_MODEL pcar SLAMVAN
OR IS_CAR_MODEL pcar TORNADO
car_got_roof = 1
ELSE
IF IS_CAR_MODEL pcar BLADE
OR IS_CAR_MODEL pcar BROADWAY
OR IS_CAR_MODEL pcar SAVANNA
GET_CURRENT_CAR_MOD pcar VEHICLE_UPGRADE_ROOF temp_int
IF NOT temp_int = -1
car_got_roof = 1
ENDIF
ELSE
car_got_roof = 1
ENDIF
ENDIF
ENDIF
IF NOT IS_CHAR_DEAD bounce_girl
IF NOT IS_CHAR_ATTACHED_TO_ANY_CAR bounce_girl
car_got_roof = 1
ENDIF
ENDIF
// initialise all the scores
lowr_perfect_beat_counter = 0
lowr_good_beat_counter = 0
lowr_bad_beat_counter = 0
lowrider_pscore = 0
lowr_overall_state = 0
lowrider_oscore = 0
flag++
BREAK
// wait to make sure track is playing
CASE 1
GET_BEAT_TRACK_STATUS temp_int
IF temp_int = CUTSCENE_TRACK_PLAYING
//DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING lowrider_pscore COUNTER_DISPLAY_NUMBER 1 LOWR1
//DISPLAY_NTH_ONSCREEN_COUNTER_WITH_STRING lowrider_oscore COUNTER_DISPLAY_NUMBER 2 LOWR2
flag++
TIMERA = 0
ENDIF
BREAK
// game is playing - update scores and bounce girl
CASE 2
GET_BEAT_TRACK_STATUS temp_int
IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_SPACE
TIMERA = 90000
ENDIF
GET_BEAT_PROXIMITY -1 beat_time beat_type beat_num
IF NOT beat_type = 33
LVAR_FLOAT fTempVal
fTempVal = 0.0
fTempVal =# lowrider_pscore
SET_WIDGET_INFO WIDGET_PLAYER_SCORE 1 0 0 1 1 fTempVal LOWR1
fTempVal =# lowrider_oscore
SET_WIDGET_INFO WIDGET_OPPOSITION_SCORE 1 0 0 1 1 fTempVal LOWR2
FORCE_BIG_MESSAGE_AND_COUNTER TRUE
/// ------------- FIGURE HOW GOOD THIS ATTEMPT WAS -----------------------------------
GET_BEAT_PROXIMITY 0 beat_time beat_type beat_num
//WRITE_DEBUG_WITH_INT beat_num beat_num
// scoring system ---------------------------------------
GOSUB LOWR_get_stick_position
IF NOT beat_type = SPRITE_STKUR
AND NOT beat_type = SPRITE_STKDL
AND NOT beat_type = SPRITE_STKUL
AND NOT beat_type = SPRITE_STKDR
IF NOT beat_num = last_scored_beat
stored_beat = -1
// if player has moved stick
IF NOT player_stick_position = 0
// player hits beat spot on (zone 1)
IF beat_time > LOWRIDER_PERFECT_TIME_NEG
AND beat_time < LOWRIDER_PERFECT_TIME
// player has hit the right beat
IF player_stick_position = beat_type
stored_beat = LOWRIDER_BEAT_PERFECT
ELSE
// player hits wrong beat
beat_fuckup = 1
stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
ENDIF
ELSE
// player hits beat medium zone (zone 2)
IF beat_time > LOWRIDER_GOOD_TIME_NEG
AND beat_time < LOWRIDER_GOOD_TIME
// player has hit the right beat
IF player_stick_position = beat_type
stored_beat = LOWRIDER_BEAT_GOOD
ELSE
// player hits wrong beat
beat_fuckup = 1
stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
ENDIF
ELSE
// player hits beat in easy zone (zone 3)
IF beat_time > LOWRIDER_OK_TIME_NEG
AND beat_time < LOWRIDER_OK_TIME
// player has hit the right beat
IF player_stick_position = beat_type
stored_beat = LOWRIDER_BEAT_ALRIGHT
ELSE
// player hits wrong beat
beat_fuckup = 1
stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
ENDIF
ELSE
// player has missed beat
IF beat_time > LOWRIDER_BAD_TIME_NEG
OR beat_time < LOWRIDER_BAD_TIME
IF player_stick_position = beat_type
beat_fuckup = 1
IF beat_time < 0
stored_beat = LOWRIDER_BEAT_PAST
ELSE
stored_beat = LOWRIDER_BEAT_FUTURE
ENDIF
ELSE
beat_fuckup = 1
stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
BD_RenderHit = 0
IF stored_beat = LOWRIDER_BEAT_PERFECT
BD_RenderHit = BD_HIT_PERFECT
consecutive_goods++
ELSE
IF stored_beat = LOWRIDER_BEAT_GOOD
BD_RenderHit = BD_HIT_GOOD
consecutive_goods++
ENDIF
IF stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
consecutive_bads++
ELSE
BD_RenderHit = BD_HIT_STANDARD
consecutive_bads++
ENDIF
ENDIF
ELSE
IF beat_time < LOWRIDER_BAD_TIME_NEG
beat_fuckup = 1
stored_beat = LOWRIDER_BEAT_PAST
consecutive_bads++
ENDIF
ENDIF
IF NOT stored_beat = -1
GOSUB LOWR_Update_Overall_Report
GOSUB LOWR_update_score_and_stats
//GOSUB LOWR_Print_Input_Feedback
last_scored_beat = beat_num
ENDIF
ENDIF
ENDIF
// make sure players score can't fall below zero
IF lowrider_pscore < 0
lowrider_pscore = 0
ENDIF
// make sure cars don't roll over --------------------------
IF NOT IS_CAR_DEAD pcar
IF NOT LOCATE_CAR_2D pcar pcar_x pcar_y 3.0 3.0 FALSE
GET_CAR_COORDINATES pcar x y z
vec_x = pcar_x - x
vec_y = pcar_y - y
vec_x *= force_multiplier
vec_y *= force_multiplier
APPLY_FORCE_TO_CAR pcar vec_x vec_y 0.0 0.0 0.0 0.0
ENDIF
ENDIF
IF NOT IS_CAR_DEAD ocar
IF NOT LOCATE_CAR_2D ocar ocar_x ocar_y 3.0 3.0 FALSE
GET_CAR_COORDINATES ocar x y z
vec_x = ocar_x - x
vec_y = ocar_y - y
vec_x *= force_multiplier
vec_y *= force_multiplier
APPLY_FORCE_TO_CAR ocar vec_x vec_y 0.0 0.0 0.0 0.0
ENDIF
ENDIF
// make opposition car bounce to the music -------------------
IF beat_time < 100
AND beat_time > -100
IF beat_type = 9
wheel_fl = 1.0
wheel_bl = 1.0
wheel_fr = 0.0
wheel_br = 0.0
ENDIF
IF beat_type = 10
wheel_fl = 0.0
wheel_bl = 0.0
wheel_fr = 1.0
wheel_br = 1.0
ENDIF
IF beat_type = 11
wheel_fl = 0.0
wheel_bl = 0.0
wheel_fr = 1.0
wheel_br = 0.0
ENDIF
IF beat_type = 12
wheel_fl = 0.0
wheel_bl = 1.0
wheel_fr = 0.0
wheel_br = 0.0
ENDIF
IF beat_type = 13
wheel_fl = 1.0
wheel_bl = 0.0
wheel_fr = 1.0
wheel_br = 0.0
ENDIF
IF beat_type = 14
wheel_fl = 0.0
wheel_bl = 1.0
wheel_fr = 0.0
wheel_br = 1.0
ENDIF
IF beat_type = 15
wheel_fl = 1.0
wheel_bl = 0.0
wheel_fr = 0.0
wheel_br = 0.0
ENDIF
IF beat_type = 16
wheel_fl = 0.0
wheel_bl = 0.0
wheel_fr = 0.0
wheel_br = 1.0
ENDIF
// give opposition score depending on their skill
IF NOT beat_num = last_opp_scored_beat
GOSUB update_lowrider_opposition_score
last_opp_scored_beat = beat_num
ENDIF
ELSE
wheel_fl = 0.0
wheel_bl = 0.0
wheel_fr = 0.0
wheel_br = 0.0
ENDIF
// control ocar hydraulics
IF NOT IS_CAR_DEAD ocar
IF DOES_CAR_HAVE_HYDRAULICS ocar
CONTROL_CAR_HYDRAULICS ocar wheel_fl wheel_bl wheel_fr wheel_br
ENDIF
ENDIF
// BOUNCING GIRL ===============================================================
IF car_got_roof = 0
// control the level of the bounce girl --------------------
// once passed level -1 never go back
IF lowrider_level = -1
IF NOT player_stick_position = 0
lowrider_level = 0
ENDIF
ENDIF
// once passed level 0 never go back
IF lowrider_level = 0
IF consecutive_goods > 5
lowrider_level++
consecutive_goods = 0
ENDIF
ENDIF
IF lowrider_level = 1
IF consecutive_goods > 5
lowrider_level++
consecutive_goods = 0
consecutive_bads = 0
ENDIF
ENDIF
IF lowrider_level = 2
IF consecutive_goods > 5
lowrider_level++
consecutive_goods = 0
consecutive_bads = 0
ENDIF
IF consecutive_bads > 1
lowrider_level--
consecutive_bads = 0
ENDIF
ENDIF
IF lowrider_level = 3
IF consecutive_goods > 5
lowrider_level++
consecutive_goods = 0
consecutive_bads = 0
ENDIF
IF consecutive_bads > 1
lowrider_level--
consecutive_bads = 0
ENDIF
ENDIF
IF lowrider_level = 4
IF consecutive_goods > 5
lowrider_level++
consecutive_goods = 0
consecutive_bads = 0
ENDIF
IF consecutive_bads > 1
lowrider_level--
consecutive_bads = 0
ENDIF
ENDIF
IF lowrider_level = 5
IF consecutive_bads > 1
lowrider_level--
consecutive_goods = 0
consecutive_bads = 0
ENDIF
ENDIF
// ------------------------- girl anims --------------------------
// we have changed l
IF NOT IS_CHAR_DEAD bounce_girl
IF NOT lowrider_last_level = lowrider_level
IF lowrider_level = -1
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hair LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hurry LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idleloop LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
SET_SEQUENCE_TO_REPEAT lowrider_sequence 1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = -1
AND lowrider_level = 0
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idle_to_l0 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l0_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = 0
AND lowrider_level = 1
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l0_to_l1 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l1_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = 1
AND lowrider_level = 2
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l1_to_l2 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l2_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = 2
AND lowrider_level = 3
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l2_to_l3 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l3_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = 3
AND lowrider_level = 4
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l3_to_l4 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l4_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = 4
AND lowrider_level = 5
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l4_to_l5 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l5_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level > 1
AND lowrider_level = 1
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l345_to_l1 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l1_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = 1
AND lowrider_level = 0
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l12_to_l0 LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l0_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
IF lowrider_last_level = 0
AND lowrider_level = -1
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hair LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_hurry LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_idleloop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
lowrider_last_level = lowrider_level
ENDIF
IF NOT last_stick_position = player_stick_position
AND NOT player_stick_position = 0
temp_int = 0
temp_float = 1.0
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_idle_to_l0
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_idle_to_l0 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l12_to_l0
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l12_to_l0 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l345_to_l1
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l345_to_l1 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l0_to_l1
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l0_to_l1 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l1_to_l2
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l1_to_l2 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l2_to_l3
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l2_to_l3 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l3_to_l4
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l3_to_l4 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l4_to_l5
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l4_to_l5 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_bdbnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_bdbnce temp_float
ENDIF
IF temp_float < 0.9
temp_int = 1
ENDIF
IF temp_int = 0
IF lowrider_level = 0
OPEN_SEQUENCE_TASK temp_seq
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l0_bnce LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK bounce_girl temp_seq
CLEAR_SEQUENCE_TASK temp_seq
ENDIF
IF lowrider_level = 1
OPEN_SEQUENCE_TASK temp_seq
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l1_bnce LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK bounce_girl temp_seq
CLEAR_SEQUENCE_TASK temp_seq
ENDIF
IF lowrider_level = 2
OPEN_SEQUENCE_TASK temp_seq
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l2_bnce LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK bounce_girl temp_seq
CLEAR_SEQUENCE_TASK temp_seq
ENDIF
IF lowrider_level = 3
OPEN_SEQUENCE_TASK temp_seq
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l3_bnce LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK bounce_girl temp_seq
CLEAR_SEQUENCE_TASK temp_seq
ENDIF
IF lowrider_level = 4
OPEN_SEQUENCE_TASK temp_seq
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l4_bnce LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK bounce_girl temp_seq
CLEAR_SEQUENCE_TASK temp_seq
ENDIF
IF lowrider_level = 5
OPEN_SEQUENCE_TASK temp_seq
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l5_bnce LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK bounce_girl temp_seq
CLEAR_SEQUENCE_TASK temp_seq
ENDIF
ENDIF
last_stick_position = player_stick_position
ENDIF
IF beat_fuckup = 1
IF player_stick_position = 0
IF lowrider_level > 0
IF NOT IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_bdbnce
OPEN_SEQUENCE_TASK temp_seq
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_bdbnce LOWRIDER 4.0 FALSE FALSE FALSE TRUE -1
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK bounce_girl temp_seq
CLEAR_SEQUENCE_TASK temp_seq
CLEAR_SEQUENCE_TASK lowrider_sequence
OPEN_SEQUENCE_TASK lowrider_sequence
TASK_PLAY_ANIM_NON_INTERRUPTABLE -1 lrgirl_l1_loop LOWRIDER 4.0 TRUE FALSE FALSE FALSE -1
CLOSE_SEQUENCE_TASK lowrider_sequence
ENDIF
lowrider_level = 1
lowrider_last_level = 1
ENDIF
ENDIF
beat_fuckup = 0
ENDIF
// if char is not playing certain anims then do the sequence task
temp_int = 0
temp_float = 1.0
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_bdbnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_bdbnce temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_idle_to_l0
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_idle_to_l0 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l12_to_l0
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l12_to_l0 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l345_to_l1
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l345_to_l1 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l0_bnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l0_bnce temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l0_to_l1
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l0_to_l1 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l1_to_l2
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l1_to_l2 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l2_to_l3
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l2_to_l3 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l3_to_l4
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l3_to_l4 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l4_to_l5
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l4_to_l5 temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l1_bnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l1_bnce temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l2_bnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l2_bnce temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l3_bnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l3_bnce temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l4_bnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l4_bnce temp_float
ENDIF
IF IS_CHAR_PLAYING_ANIM bounce_girl lrgirl_l5_bnce
GET_CHAR_ANIM_CURRENT_TIME bounce_girl lrgirl_l5_bnce temp_float
ENDIF
IF temp_float < 0.9
temp_int = 1
ENDIF
IF temp_int = 0
GET_SCRIPT_TASK_STATUS bounce_girl PERFORM_SEQUENCE_TASK temp_int
IF temp_int = FINISHED_TASK
PERFORM_SEQUENCE_TASK bounce_girl lowrider_sequence
ENDIF
ENDIF
ENDIF // is char dead
ENDIF // car_got_roof
// quit out
//SET_PLAYER_CONTROL player1 OFF // This should be set, but breaks old saves :(
IF IS_BUTTON_PRESSED PAD1 TRIANGLE
OR IS_WIDGET_RELEASED WIDGET_RHYTHM_EXIT
lowrider_pscore = 0
flag++
ENDIF
ELSE
// track has finished
flag++
TIMERA = 0
ENDIF
BREAK
// wait for beat display to finish
CASE 3
//IF beat_display_script_started = 0
flag++
//ENDIF
BREAK
// fade out music
CASE 4
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
ENDIF
DO_FADE 500 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
bd_terminate_script = 1
flag++
BREAK
// track has ended
CASE 5
GET_BEAT_TRACK_STATUS temp_int
IF temp_int = CUTSCENE_TRACK_PLAYING
STOP_BEAT_TRACK
ENDIF
CLEAR_ONSCREEN_COUNTER lowrider_pscore
CLEAR_ONSCREEN_COUNTER lowrider_oscore
REMOVE_ANIMATION LOWRIDER
GOTO terminate_lowrider_game
BREAK
ENDSWITCH
GOTO lowrider_game_loop
update_lowrider_opposition_score:
GENERATE_RANDOM_INT_IN_RANGE 0 10 temp_int
IF lowrider_opposition_skill = 0
OR lowrider_opposition_skill = 1
SWITCH temp_int
CASE 0
CASE 1
lowrider_oscore += LOWRIDER_BAD_SCORE
BREAK
CASE 2
CASE 3
CASE 4
CASE 5
lowrider_oscore += LOWRIDER_OK_SCORE
BREAK
CASE 6
CASE 7
CASE 8
lowrider_oscore += LOWRIDER_GOOD_SCORE
BREAK
CASE 9
lowrider_oscore += LOWRIDER_PERFECT_SCORE
BREAK
ENDSWITCH
ELSE
IF lowrider_opposition_skill = 2
SWITCH temp_int
CASE 0
lowrider_oscore += LOWRIDER_BAD_SCORE
BREAK
CASE 1
CASE 2
CASE 3
CASE 4
lowrider_oscore += LOWRIDER_OK_SCORE
BREAK
CASE 5
CASE 6
CASE 7
lowrider_oscore += LOWRIDER_GOOD_SCORE
BREAK
CASE 8
CASE 9
lowrider_oscore += LOWRIDER_PERFECT_SCORE
BREAK
ENDSWITCH
ELSE
IF lowrider_opposition_skill = 3
SWITCH temp_int
CASE 0
lowrider_oscore += LOWRIDER_BAD_SCORE
BREAK
CASE 1
CASE 2
CASE 3
lowrider_oscore += LOWRIDER_OK_SCORE
BREAK
CASE 4
CASE 5
CASE 6
lowrider_oscore += LOWRIDER_GOOD_SCORE
BREAK
CASE 7
CASE 8
CASE 9
lowrider_oscore += LOWRIDER_PERFECT_SCORE
BREAK
ENDSWITCH
ELSE
IF lowrider_opposition_skill = 4
SWITCH temp_int
CASE 0
CASE 1
CASE 2
lowrider_oscore += LOWRIDER_OK_SCORE
BREAK
CASE 3
CASE 4
CASE 5
CASE 6
lowrider_oscore += LOWRIDER_GOOD_SCORE
BREAK
CASE 7
CASE 8
CASE 9
lowrider_oscore += LOWRIDER_PERFECT_SCORE
BREAK
ENDSWITCH
ELSE
IF lowrider_opposition_skill = 5
SWITCH temp_int
CASE 0
CASE 1
lowrider_oscore += LOWRIDER_OK_SCORE
BREAK
CASE 2
CASE 3
CASE 4
CASE 5
lowrider_oscore += LOWRIDER_GOOD_SCORE
BREAK
CASE 6
CASE 7
CASE 8
CASE 9
lowrider_oscore += LOWRIDER_PERFECT_SCORE
BREAK
ENDSWITCH
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF lowrider_oscore < 0
lowrider_oscore = 0
ENDIF
RETURN
terminate_lowrider_game:
lowrider_game_is_active = 0
TERMINATE_THIS_SCRIPT
/********************************************
PRINT INPUT FEEDBACK
********************************************/
LOWR_Print_Input_Feedback:
SWITCH stored_beat
CASE LOWRIDER_BEAT_PERFECT
SHAKE_PAD PAD1 200 255
BREAK
CASE LOWRIDER_BEAT_GOOD
SHAKE_PAD PAD1 200 200
BREAK
CASE LOWRIDER_BEAT_ALRIGHT
SHAKE_PAD PAD1 200 110
BREAK
DEFAULT
SHAKE_PAD PAD1 200 50
BREAK
ENDSWITCH
PRINT_BIG DNC_013 1000 5 //That's it!
SWITCH last_print
DEFAULT
IF stored_beat = LOWRIDER_BEAT_PERFECT
PRINT_BIG DNC_005 1000 5 // Great timing!
ENDIF
IF stored_beat = LOWRIDER_BEAT_GOOD
PRINT_BIG DNC_006 1000 5 // Well done!
ENDIF
IF stored_beat = LOWRIDER_BEAT_ALRIGHT
PRINT_BIG DNC_007 1000 5 // Alright
ENDIF
IF stored_beat = LOWRIDER_BEAT_PAST
PRINT_BIG DNC_008 1000 5 // Too late!
ENDIF
IF stored_beat = LOWRIDER_BEAT_FUTURE
PRINT_BIG DNC_009 1000 5 // Too early!
ENDIF
IF stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
PRINT_BIG DNC_010 1000 5 // Wrong!
ENDIF
IF stored_beat = LOWRIDER_BEAT_MISTIMED_BUTTON
PRINT_BIG DNC_011 1000 5 // Poor timing!
ENDIF
last_print = 2
BREAK
CASE 2
IF stored_beat = LOWRIDER_BEAT_PERFECT
PRINT_BIG DNC_012 1000 5 //Synchronized!
ENDIF
IF stored_beat = LOWRIDER_BEAT_GOOD
PRINT_BIG DNC_013 1000 5 //That's it!
ENDIF
IF stored_beat = LOWRIDER_BEAT_ALRIGHT
PRINT_BIG DNC_014 1000 5 //Not bad!
ENDIF
IF stored_beat = LOWRIDER_BEAT_PAST
PRINT_BIG DNC_015 1000 5 //You missed it!
ENDIF
IF stored_beat = LOWRIDER_BEAT_FUTURE
PRINT_BIG DNC_016 1000 5 //You're fast!
ENDIF
IF stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
PRINT_BIG DNC_017 1000 5 //Not that one!
ENDIF
IF stored_beat = LOWRIDER_BEAT_MISTIMED_BUTTON
PRINT_BIG DNC_018 1000 5 //Try again!
ENDIF
++last_print
BREAK
CASE 3
IF stored_beat = LOWRIDER_BEAT_PERFECT
PRINT_BIG DNC_019 1000 5 //The master!
ENDIF
IF stored_beat = LOWRIDER_BEAT_GOOD
PRINT_BIG DNC_020 1000 5 //You got it!
ENDIF
IF stored_beat = LOWRIDER_BEAT_ALRIGHT
PRINT_BIG DNC_021 1000 5 //Can do better!
ENDIF
IF stored_beat = LOWRIDER_BEAT_PAST
PRINT_BIG DNC_022 1000 5 //You're late!
ENDIF
IF stored_beat = LOWRIDER_BEAT_FUTURE
PRINT_BIG DNC_023 1000 5 //Slow down!
ENDIF
IF stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
PRINT_BIG DNC_024 1000 5 //Random!
ENDIF
IF stored_beat = LOWRIDER_BEAT_MISTIMED_BUTTON
PRINT_BIG DNC_025 1000 5 //Not on time!
ENDIF
++last_print
BREAK
ENDSWITCH
RETURN
/********************************************
UPDATE OVERALL REPORT
********************************************/
LOWR_Update_Overall_Report:
temp_int = lowr_good_beat_counter + lowr_bad_beat_counter
temp_int += lowr_perfect_beat_counter
IF temp_int > 0
IF temp_int >= LOWRIDER_SCORE_TOTAL_BEATS_TO_REPORT
IF lowr_perfect_beat_counter = LOWRIDER_SCORE_TOTAL_BEATS_TO_REPORT
IF lowr_overall_state = LOWRIDER_OVERALL_GOOD
OR lowr_overall_state = LOWRIDER_OVERALL_PERFECT
//--- Can enter perfect
PRINT_BIG DNC_002 50000 7 // PERFECT! //use a big number, the next state will brak it
lowr_overall_state = LOWRIDER_OVERALL_PERFECT
ELSE
PRINT_BIG DNC_004 50000 7 // GOOD! //use a big number, the next state will brak it
lowr_overall_state = LOWRIDER_OVERALL_GOOD
ENDIF
ELSE
IF lowr_good_beat_counter > lowr_bad_beat_counter
PRINT_BIG DNC_004 50000 7 // GOOD! //use a big number, the next state will brak it
lowr_overall_state = LOWRIDER_OVERALL_GOOD
ELSE
IF lowr_overall_state = LOWRIDER_OVERALL_PERFECT
PRINT_BIG DNC_004 50000 7 // GOOD! //use a big number, the next state will brak it
lowr_overall_state = LOWRIDER_OVERALL_GOOD
ELSE
IF lowr_overall_state = LOWRIDER_OVERALL_GOOD
PRINT_BIG DNC_003 50000 7 // BAD! //use a big number, the next state will brak it
lowr_overall_state = LOWRIDER_OVERALL_BAD
ELSE
PRINT_BIG DNC_003 50000 7 // BAD! //use a big number, the next state will brak it
lowr_overall_state = LOWRIDER_OVERALL_BAD
ENDIF
ENDIF
ENDIF
ENDIF
//--- Clear the counters
lowr_perfect_beat_counter = 0
lowr_good_beat_counter = 0
lowr_bad_beat_counter = 0
ENDIF
ENDIF
RETURN
LOWR_update_score_and_stats:
SWITCH stored_beat
CASE LOWRIDER_BEAT_PERFECT
IF lowrider_pscore < LOWRIDER_SCORE_LIMIT
IF lowr_overall_state = LOWRIDER_OVERALL_PERFECT
temp_int = LOWRIDER_PERFECT_SCORE * LOWRIDER_SCORE_PERFECT_MULTIPLER
lowrider_pscore += temp_int
ELSE
lowrider_pscore += LOWRIDER_PERFECT_SCORE
ENDIF
ENDIF
lowr_perfect_beat_counter++
BREAK
CASE LOWRIDER_BEAT_GOOD
IF lowrider_pscore < LOWRIDER_SCORE_LIMIT
IF lowr_overall_state = LOWRIDER_OVERALL_PERFECT
temp_int = LOWRIDER_GOOD_SCORE * LOWRIDER_SCORE_PERFECT_MULTIPLER
lowrider_pscore += temp_int
ELSE
lowrider_pscore += LOWRIDER_GOOD_SCORE
ENDIF
ENDIF
lowr_good_beat_counter++
BREAK
CASE LOWRIDER_BEAT_ALRIGHT
IF lowrider_pscore < LOWRIDER_SCORE_LIMIT
IF lowr_overall_state = LOWRIDER_OVERALL_PERFECT
temp_int = LOWRIDER_OK_SCORE * LOWRIDER_SCORE_PERFECT_MULTIPLER
lowrider_pscore += temp_int
ELSE
lowrider_pscore += LOWRIDER_OK_SCORE
ENDIF
ENDIF
lowr_good_beat_counter++
BREAK
CASE LOWRIDER_BEAT_PAST
IF lowrider_pscore > 0
lowrider_pscore += LOWRIDER_BAD_SCORE
ENDIF
lowr_bad_beat_counter++
BREAK
CASE LOWRIDER_BEAT_FUTURE
IF lowrider_pscore > 0
lowrider_pscore += LOWRIDER_BAD_SCORE
ENDIF
lowr_bad_beat_counter++
BREAK
CASE LOWRIDER_BEAT_WRONG_BUTTON
IF lowrider_pscore > 0
lowrider_pscore += LOWRIDER_VBAD_SCORE
ENDIF
lowr_bad_beat_counter++
BREAK
CASE LOWRIDER_BEAT_MISTIMED_BUTTON
IF lowrider_pscore > 0
lowrider_pscore += LOWRIDER_VBAD_SCORE
ENDIF
lowr_bad_beat_counter++
BREAK
ENDSWITCH
// make sure score hasn't gone above maximum
IF lowrider_pscore > LOWRIDER_SCORE_LIMIT
lowrider_pscore = LOWRIDER_SCORE_LIMIT
ENDIF
RETURN
LOWR_get_stick_position:
GET_POSITION_OF_ANALOGUE_STICKS PAD1 lstickx lsticky rstickx rsticky
temp_float =# rstickx
vec_x = temp_float
temp_float =# rsticky
vec_y = temp_float
GET_DISTANCE_BETWEEN_COORDS_2D 0.0 0.0 vec_x vec_y temp_float
player_stick_position = 0
IF temp_float > 64.0
GET_ANGLE_BETWEEN_2D_VECTORS vec_x vec_y 0.0 -1.0 temp_float
// must be up
IF temp_float < 15.0
player_stick_position = 13 // up
ELSE
IF temp_float < 75.0
IF rstickx > 0
player_stick_position = 11 // right and up
ELSE
player_stick_position = 15 // left and up
ENDIF
ELSE
IF temp_float < 105.0
IF rstickx > 0
player_stick_position = 10 // right
ELSE
player_stick_position = 9 // left
ENDIF
ELSE
IF temp_float < 165.0
IF rstickx > 0
player_stick_position = 16 // right down
ELSE
player_stick_position = 12 // left down
ENDIF
ELSE
// must be down
player_stick_position = 14 // left down
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
}
MISSION_START
MISSION_END
// GLOBALS
VAR_INT audio_line_is_active
VAR_TEXT_LABEL audio_string
VAR_INT audio_sound_file
VAR_INT audio_line_terminate_all
{
audio_line:
SCRIPT_NAME AUDIOL
// input parameters
LVAR_INT audio_ped
LVAR_INT audio_attached
LVAR_INT audio_forced
LVAR_INT audio_slot
LVAR_INT audio_is_preloaded
LVAR_TEXT_LABEL audio_text
LVAR_INT audio_sound
// workings
LVAR_INT flag
flag = 0
// fake create
IF flag = -1
CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 audio_ped
ENDIF
// check if there is another audio line currently active
IF NOT audio_line_is_active = 0
// force this script to play
IF audio_forced = 1
CLEAR_MISSION_AUDIO audio_slot
WHILE NOT audio_line_is_active = 0
IF audio_line_terminate_all = 1
GOTO terminate_audio_line
ENDIF
WAIT 0
ENDWHILE
ELSE
GOTO terminate_audio_line
ENDIF
ENDIF
$audio_text = $audio_string
audio_sound = audio_sound_file
audio_line_is_active = 1
audio_loop:
IF audio_line_terminate_all = 1
GOTO cleanup_audio_line
ENDIF
SWITCH flag
CASE 0
IF audio_is_preloaded = 0
CLEAR_MISSION_AUDIO audio_slot
LOAD_MISSION_AUDIO audio_slot audio_sound
ENDIF
IF NOT IS_CHAR_DEAD audio_ped
DISABLE_CHAR_SPEECH audio_ped TRUE
SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH audio_ped TRUE
ENDIF
TIMERA = 0
flag++
BREAK
CASE 1
IF HAS_MISSION_AUDIO_LOADED audio_slot
IF NOT IS_CHAR_DEAD audio_ped
IF NOT IS_CHAR_TALKING audio_ped
IF audio_attached = 1
ATTACH_MISSION_AUDIO_TO_CHAR audio_slot audio_ped
ENDIF
ENDIF
START_CHAR_FACIAL_TALK audio_ped 10000
ENDIF
PLAY_MISSION_AUDIO audio_slot
IF NOT $audio_text = DUMMY
PRINT_NOW $audio_text 10000 1
ENDIF
flag++
ELSE
IF TIMERA > 5000 // if it takes too long to load quit out
flag++
ENDIF
ENDIF
BREAK
CASE 2
IF HAS_MISSION_AUDIO_LOADED audio_slot
IF HAS_MISSION_AUDIO_FINISHED audio_slot
flag++
ELSE
IF DOES_CHAR_EXIST audio_ped
IF IS_CHAR_DEAD audio_ped
flag++
ENDIF
ENDIF
ENDIF
ELSE
flag++
ENDIF
BREAK
CASE 3
GOTO cleanup_audio_line
BREAK
ENDSWITCH
WAIT 0
GOTO audio_loop
cleanup_audio_line:
IF NOT IS_CHAR_DEAD audio_ped
ENABLE_CHAR_SPEECH audio_ped
SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH audio_ped FALSE
STOP_CHAR_FACIAL_TALK audio_ped
ENDIF
CLEAR_MISSION_AUDIO audio_slot
IF NOT $audio_text = DUMMY
CLEAR_THIS_PRINT $audio_text
ENDIF
audio_line_is_active = 0
terminate_audio_line:
TERMINATE_THIS_SCRIPT
}
{
cleanup_audio_lines:
SCRIPT_NAME CLEANAU
TIMERA = 0
audio_line_terminate_all = 1
WHILE NOT audio_line_is_active = 0
WAIT 0
IF TIMERA > 2000
audio_line_is_active = 0
ENDIF
ENDWHILE
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME AUDIOL
//CLEAR_MISSION_AUDIO 1
//CLEAR_MISSION_AUDIO 2
audio_line_terminate_all = 0
TERMINATE_THIS_SCRIPT
}
MISSION_START
//--- Dance
CONST_INT SPRITE_CROSS 1
CONST_INT SPRITE_SQUARE 2
CONST_INT SPRITE_TRIANGLE 3
CONST_INT SPRITE_CIRCLE 4
//--- Lowrider
CONST_INT SPRITE_STKLEFT 9 //not used
CONST_INT SPRITE_STKRGHT 10 //not used
CONST_INT SPRITE_STKUR 11
CONST_INT SPRITE_STKDL 12
CONST_INT SPRITE_STKUP 13
CONST_INT SPRITE_STKDWN 14
CONST_INT SPRITE_STKUL 15 //not used
CONST_INT SPRITE_STKDR 16 //not used
//--- Hit zones
CONST_INT SPRITE_CRING_UP 17 //CONST_INT SPRITE_CRING 17
CONST_INT SPRITE_CRING_DOWN 18
CONST_INT SPRITE_CRING_LEFT 19
CONST_INT SPRITE_CRING_RIGHT 20
//--- FXs
CONST_INT SPRITE_CHIT_UP 21 //CONST_INT SPRITE_CHIT 18
CONST_INT SPRITE_CHIT_DOWN 22
CONST_INT SPRITE_CHIT_LEFT 23
CONST_INT SPRITE_CHIT_RIGHT 24
CONST_INT SPRITE_BACKGROUND 42
//--- Rendering Hit FX
CONST_INT DB_HIT_DURATION 160 //(in milliseconds)
CONST_INT DB_HIT_STEP_MULTI_FAST 8
CONST_INT DB_HIT_STEP_MULTI_SLOW 4
CONST_INT BD_HIT_STANDARD 1
CONST_INT BD_HIT_GOOD 2
CONST_INT BD_HIT_PERFECT 3
MISSION_END
// GLOBAL VARIABLES ---
VAR_INT iStoredBeat
VAR_INT stored_beat
// parameters - don't need to be set cause there's some default values, but can if you want.
VAR_INT bd_future_time_shown
VAR_INT bd_past_time_shown
VAR_FLOAT bd_x bd_y
VAR_FLOAT bd_width
VAR_FLOAT bd_sprite_height bd_sprite_width
VAR_FLOAT BULLSHIT_LINE_HEIGHT
VAR_INT fDownTimer
VAR_INT BD_RenderHit // Incoming request to render a hit around the button.
VAR_INT last_beat_closestnumber
VAR_INT beat_valid
VAR_INT invalid_beat_type
// optional flags
VAR_INT bd_terminate_script // set to 1 to terminate the script
VAR_INT debug_show_beat_position
// debug stuff for matt
VAR_INT time_of_first_beat
VAR_INT time_since_first_beat
VAR_INT beat_display_script_started
VAR_INT first_color
VAR_INT second_color
VAR_INT third_color
VAR_INT fourth_color
VAR_INT fifth_color
first_color = 0
second_color = 0
third_color = 0
fourth_color = 0
fifth_color = 0
VAR_INT first_stored_beat
VAR_INT second_stored_beat
VAR_INT third_stored_beat
VAR_INT fourth_stored_beat
VAR_INT fifth_stored_beat
first_stored_beat = -1
second_stored_beat = -1
third_stored_beat = -1
fourth_stored_beat = -1
fifth_stored_beat = -1
last_beat_closestnumber = -1
beat_valid = 1
invalid_beat_type = -1
{///////////////////////////////////////////////////////////////////////////////
beat_display:///////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
SCRIPT_NAME BDISPLY
IF beat_display_script_started = 0
beat_display_script_started = 1
bd_terminate_script = 0
ENDIF
LVAR_INT temp_int iTemp iTemp2
LVAR_INT temp_int2
LVAR_INT temp_int3
LVAR_FLOAT temp_float
LVAR_FLOAT temp_float2
LVAR_FLOAT temp_float3
LVAR_INT time_to_this_beat time_to_this_beat_2
LVAR_INT this_beat_type this_beat_type_2
LVAR_INT this_beat_closestnumber this_beat_closestnumber_2 this_beat_closestnumber_stored
LVAR_INT this_time
LVAR_INT last_time
LVAR_INT time_elapsed
LVAR_INT sprite_num
LVAR_FLOAT fHitZone_sprite_height fHitZone_sprite_width fHitFX_sprite_width fHitFX_sprite_height
LVAR_INT iHit_Rendering iFXCurrentAlpha iFX_BeatToRender iFXDesiredAlpha iFXHitDuration
USE_TEXT_COMMANDS TRUE
LOAD_TEXTURE_DICTIONARY ld_beat
//The Notes
LOAD_SPRITE SPRITE_STKUP up
LOAD_SPRITE SPRITE_STKDWN down
LOAD_SPRITE SPRITE_STKRGHT right
LOAD_SPRITE SPRITE_STKLEFT left
//--- Hit zone
LOAD_SPRITE SPRITE_CRING_UP cring
LOAD_SPRITE SPRITE_CRING_DOWN cring
LOAD_SPRITE SPRITE_CRING_LEFT cring
LOAD_SPRITE SPRITE_CRING_RIGHT cring
//The Background
LOAD_SPRITE SPRITE_STKDL down
//The White Lines
LOAD_SPRITE SPRITE_STKUL white
//The Green Gradient
LOAD_SPRITE SPRITE_BACKGROUND dance_bg
//--- Hit FX
LOAD_SPRITE SPRITE_CHIT_UP chit
LOAD_SPRITE SPRITE_CHIT_DOWN chit
LOAD_SPRITE SPRITE_CHIT_LEFT chit
LOAD_SPRITE SPRITE_CHIT_RIGHT chit
fDownTimer = 0
BD_FUTURE_TIME_SHOWN = 4500
BD_PAST_TIME_SHOWN = 2500
BD_X = 77.0000
BD_Y = 381.0000
BD_WIDTH = 365.0000
BD_SPRITE_HEIGHT = 40.0
BD_SPRITE_WIDTH = 42.0
fHitZone_sprite_height = 50.0
fHitZone_sprite_width = 54.0
fHitFX_sprite_height = 50.0
fHitFX_sprite_width = 54.0
BULLSHIT_LINE_HEIGHT = 4.2
GET_GAME_TIMER last_time
WAIT 1000
beat_display_loop:
WAIT 0
//--- If the player has paused the game, clear the FX rendering flags
IF HAS_GAME_JUST_RETURNED_FROM_FRONTEND
BD_RenderHit = 0
iHit_Rendering = 0
ENDIF
GET_BEAT_TRACK_STATUS temp_int
IF temp_int = CUTSCENE_TRACK_PLAYING
GET_GAME_TIMER this_time
time_elapsed = this_time - last_time
last_time = this_time
IF fDownTimer > 0
fDownTimer -= time_elapsed
ENDIf
// draw line for present time
temp_int = bd_past_time_shown + bd_future_time_shown // total time shown
temp_float =# temp_int
temp_float2 =# bd_past_time_shown
temp_float2 /= temp_float
temp_float2 *= bd_width
x = 232.0
y = BD_Y - 5.0
//--- Draw the hit zone
LVAR_FLOAT fAdjustedY
SET_SPRITES_DRAW_BEFORE_FADE TRUE
LVAR_FLOAT backgroundX
LVAR_FLOAT backgroundY
backgroundX = BD_X * 0.48
backgroundY = BD_Y * 0.74
LVAR_FLOAT fuck_y
//the background
fuck_y = BD_SPRITE_HEIGHT * 2.2
DRAW_SPRITE SPRITE_BACKGROUND x BD_Y 444.0 fuck_y 255, 255, 255, 255
//Draw hit zones//
//fuck_y = y - 34.0
//DRAW_SPRITE SPRITE_STKUL x fuck_y 640.0 BULLSHIT_LINE_HEIGHT 0 0 0 255
//fuck_y = y + 33.0
//DRAW_SPRITE SPRITE_STKUL x fuck_y 640.0 BULLSHIT_LINE_HEIGHT 0 0 0 255
GET_BEAT_PROXIMITY 0 time_to_this_beat this_beat_type this_beat_closestnumber
IF time_to_this_beat < LOWRIDER_OK_TIME_NEG
GET_BEAT_PROXIMITY 1 time_to_this_beat this_beat_type this_beat_closestnumber
ENDIF
IF this_beat_type = SPRITE_STKDWN
OR this_beat_type = SPRITE_CROSS
DRAW_SPRITE SPRITE_CRING_DOWN x y fHitZone_sprite_width fHitZone_sprite_height 255 255 255 255
ENDIF
IF this_beat_type = SPRITE_STKUP
OR this_beat_type = SPRITE_TRIANGLE
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_DOWN x y fHitZone_sprite_width fHitZone_sprite_height 0.0 255 255 255 255
ENDIF
IF this_beat_type = SPRITE_STKLEFT
OR this_beat_type = SPRITE_SQUARE
OR this_beat_type = SPRITE_STKUR //beat not used
OR this_beat_type = SPRITE_STKDL //beat not used
OR this_beat_type = SPRITE_STKUL //beat not used
OR this_beat_type = SPRITE_STKDR //beat not used
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_DOWN x y fHitZone_sprite_width fHitZone_sprite_height -90.0 255 255 255 255
ENDIF
IF this_beat_type = SPRITE_STKRGHT
OR this_beat_type = SPRITE_CIRCLE
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_DOWN x y fHitZone_sprite_width fHitZone_sprite_height 90.0 255 255 255 255
ENDIF
//////////////////////////////////////////////
// used for turning off past beats
GET_GAME_TIMER time_since_first_beat
time_since_first_beat -= time_of_first_beat
// draw future beats
temp_int = 1
WHILE temp_int < 11
GET_BEAT_PROXIMITY temp_int time_to_this_beat this_beat_type this_beat_closestnumber
// draw this fucker
IF NOT this_beat_type = 0
IF time_to_this_beat < bd_future_time_shown
// map sprite to beat
GOSUB BD_MapButtonToBeat
//WRITE_DEBUG_WITH_INT sprite_num sprite_num
// where to draw //
// total time shown
temp_int2 = bd_past_time_shown + bd_future_time_shown
temp_float2 =# temp_int2
// time to beat //
temp_int3 = time_to_this_beat
temp_int3 += bd_past_time_shown
temp_float =# temp_int3
// time to beat / total time
temp_float /= temp_float2
temp_float *= bd_width
x = bd_width - temp_float
y = bd_y - 5.0
// figure out alpha
temp_float =# time_to_this_beat
temp_float2 =# bd_future_time_shown
temp_float /= temp_float2
temp_float *= -1.0
temp_float += 1.0
//IF time_to_this_beat < 0
temp_float = 1.0
//ENDIF
temp_float *= 255.0
temp_int3 =# temp_float
IF NOT sprite_num = 0
//--- Render FX
GOSUB BD_RenderSpriteFX
//--- Draw button sprite on top of FX
SET_SPRITES_DRAW_BEFORE_FADE TRUE
IF sprite_num = SPRITE_STKDWN // down
//DRAW_SPRITE SPRITE_STKUL 320.0 y 640.0 BULLSHIT_LINE_HEIGHT 255 255 255 255
//DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 0 0 255 temp_int3
DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 255 255 temp_int3
ENDIF
//fAdjustedY = y - 69.0
IF sprite_num = SPRITE_STKUP // up
//DRAW_SPRITE SPRITE_STKUL 320.0 y 640.0 BULLSHIT_LINE_HEIGHT 255 255 255 255
//DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 255 0 temp_int3
DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 255 255 temp_int3
ENDIF
//y = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKLEFT // left
//DRAW_SPRITE SPRITE_STKUL 320.0 y 640.0 BULLSHIT_LINE_HEIGHT 255 255 255 255
//DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 0 255 0 temp_int3
DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 255 255 temp_int3
ENDIF
//fAdjustedY = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKRGHT // right
//DRAW_SPRITE SPRITE_STKUL 320.0 y 640.0 BULLSHIT_LINE_HEIGHT 255 255 255 255
//DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 128 0 temp_int3
DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 255 255 temp_int3
ENDIF
ENDIF
ENDIF
ENDIF
temp_int++
ENDWHILE
//-------------------------------------------------------------------------------------------------------
IF debug_show_beat_position = 0 // used for turning off past beats
// draw past beats
temp_int = -1
WHILE temp_int > -6
GET_BEAT_PROXIMITY temp_int time_to_this_beat this_beat_type this_beat_closestnumber
//check if this beat is the first past beat
IF temp_int = -1
//IF time_to_this_beat < LOWRIDER_OK_TIME_NEG
IF time_to_this_beat < DANCE_BOUNDS_ALRIGHT_MIN
//has the beat num changed, if so change color
IF NOT old_beat_num = this_beat_closestnumber
old_beat_num = this_beat_closestnumber
IF this_beat_type = SPRITE_CROSS
OR this_beat_type = SPRITE_SQUARE
OR this_beat_type = SPRITE_TRIANGLE
OR this_beat_type = SPRITE_CIRCLE
IF NOT iStoredBeat = DANCE_BEAT_GOOD_SCORED
first_color = 2 //bad
ELSE
first_color = 1 //good
ENDIF
first_stored_beat = iStoredBeat
ELSE
IF NOT stored_beat = LOWRIDER_BEAT_ALRIGHT
AND NOT stored_beat = LOWRIDER_BEAT_PERFECT
AND NOT stored_beat = LOWRIDER_BEAT_GOOD
//bad
first_color = 2
ELSE
//good
first_color = 1
ENDIF
first_stored_beat = stored_beat
ENDIF
ENDIF
ELSE
IF NOT first_color = 0
fifth_color = fourth_color
fourth_color = third_color
third_color = second_color
second_color = first_color
fifth_stored_beat = fourth_stored_beat
fourth_stored_beat = third_stored_beat
third_stored_beat = second_stored_beat
second_stored_beat = first_stored_beat
ENDIF
first_stored_beat = -1
first_color = 0
ENDIF
ENDIF
time_to_this_beat *= -1
// draw this fucker
IF NOT this_beat_type = 0
IF time_to_this_beat < bd_past_time_shown
// map sprite to beat
GOSUB BD_MapButtonToBeat
// where to draw
temp_int3 = time_to_this_beat
temp_int3 *= -1
temp_int3 += bd_past_time_shown
temp_int2 = bd_past_time_shown + bd_future_time_shown // total time shown
temp_float =# temp_int3
temp_float2 =# temp_int2
temp_float /= temp_float2 // how far along the line this needs to get drawn
temp_float *= bd_width
x = bd_width - temp_float
y = bd_y - 5.0
// figure out alpha
temp_float =# temp_int3
temp_float2 =# bd_past_time_shown
temp_float /= temp_float2
IF time_to_this_beat < 0
temp_float = 1.0
ENDIF
temp_float *= 255.0
temp_int3 =# temp_float
LVAR_INT color
IF temp_int = -1
color = first_color
ENDIF
IF temp_int = -2
color = second_color
ENDIF
IF temp_int = -3
color = third_color
ENDIF
IF temp_int = -4
color = fourth_color
ENDIF
IF temp_int = -5
color = fifth_color
ENDIF
IF NOT sprite_num = 0
//--- Render FX
GOSUB BD_RenderSpriteFX
LVAR_INT nValid
nValid = 0
IF sprite_num = SPRITE_STKDWN // down
nValid = 1
ENDIF
IF sprite_num = SPRITE_STKUP // up
nValid = 1
ENDIF
IF sprite_num = SPRITE_STKLEFT // left
nValid = 1
ENDIF
IF sprite_num = SPRITE_STKRGHT // right
nValid = 1
ENDIF
IF nValid = 1
IF color = 0
DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 255 255 temp_int3
ENDIF
IF color = 1
DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 0 255 0 temp_int3
ENDIF
IF color = 2
DRAW_SPRITE sprite_num x y bd_sprite_width bd_sprite_height 255 0 0 temp_int3
ENDIF
//retarded text
SET_TEXT_CENTRE ON
SET_TEXT_SCALE 1.3 1.3 // These strings should use DISPLAY_TEXT_CLAMPED here, but we can't modify this script w/o breaking old saves so it's hacked in scale :(
SET_TEXT_DROPSHADOW 0 0 0 0 255
fAdjustedY = y
LVAR_FLOAT fAdjust
fAdjust = bd_sprite_height
fAdjust *= 0.69
fAdjustedY += fAdjust
IF temp_int = -1
IF first_stored_beat = LOWRIDER_BEAT_PERFECT
OR first_stored_beat = DANCE_BEAT_GOOD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_005 // Great
ENDIF
IF first_stored_beat = LOWRIDER_BEAT_GOOD
DISPLAY_TEXT x fAdjustedY DNC_006 // Nice
ENDIF
IF first_stored_beat = LOWRIDER_BEAT_ALRIGHT
DISPLAY_TEXT x fAdjustedY DNC_007 // Alright
ENDIF
IF first_stored_beat = LOWRIDER_BEAT_PAST
OR first_stored_beat = DANCE_BEAT_NONE
DISPLAY_TEXT x fAdjustedY DNC_008 // Late
ELSE
IF first_stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
DISPLAY_TEXT x fAdjustedY DNC_010 // Wrong
ENDIF
ENDIF
IF first_stored_beat = LOWRIDER_BEAT_FUTURE
DISPLAY_TEXT x fAdjustedY DNC_009 // Early
ENDIF
IF first_stored_beat = -1
AND time_to_this_beat < LOWRIDER_OK_TIME_NEG
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
//fucking dance
IF first_stored_beat = DANCE_BEAT_BAD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
ENDIf
IF temp_int = -2
IF second_stored_beat = LOWRIDER_BEAT_PERFECT
OR second_stored_beat = DANCE_BEAT_GOOD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_005 // Great
ENDIF
IF second_stored_beat = LOWRIDER_BEAT_GOOD
DISPLAY_TEXT x fAdjustedY DNC_006 // Nice
ENDIF
IF second_stored_beat = LOWRIDER_BEAT_ALRIGHT
DISPLAY_TEXT x fAdjustedY DNC_007 // Alright
ENDIF
IF second_stored_beat = LOWRIDER_BEAT_PAST
OR second_stored_beat = DANCE_BEAT_NONE
DISPLAY_TEXT x fAdjustedY DNC_008 // late
ELSE
IF second_stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
DISPLAY_TEXT x fAdjustedY DNC_010 // Wrong
ENDIF
ENDIF
IF second_stored_beat = LOWRIDER_BEAT_FUTURE
DISPLAY_TEXT x fAdjustedY DNC_009 // Early
ENDIF
IF second_stored_beat = -1
AND time_to_this_beat < LOWRIDER_OK_TIME_NEG
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
//fucking dance
IF second_stored_beat = DANCE_BEAT_BAD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
ENDIF
IF temp_int = -3
IF third_stored_beat = LOWRIDER_BEAT_PERFECT
OR third_stored_beat = DANCE_BEAT_GOOD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_005 // Great
ENDIF
IF third_stored_beat = LOWRIDER_BEAT_GOOD
DISPLAY_TEXT x fAdjustedY DNC_006 // Nice
ENDIF
IF third_stored_beat = LOWRIDER_BEAT_ALRIGHT
DISPLAY_TEXT x fAdjustedY DNC_007 // Alright
ENDIF
IF third_stored_beat = LOWRIDER_BEAT_PAST
OR third_stored_beat = DANCE_BEAT_NONE
DISPLAY_TEXT x fAdjustedY DNC_008 // Late
ELSE
IF third_stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
DISPLAY_TEXT x fAdjustedY DNC_010 // Wrong
ENDIF
ENDIF
IF third_stored_beat = LOWRIDER_BEAT_FUTURE
DISPLAY_TEXT x fAdjustedY DNC_009 // Early
ENDIF
IF third_stored_beat = -1
AND time_to_this_beat < LOWRIDER_OK_TIME_NEG
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
//fucking dance
IF third_stored_beat = DANCE_BEAT_BAD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
ENDIF
IF temp_int = -4
IF fourth_stored_beat = LOWRIDER_BEAT_PERFECT
OR fourth_stored_beat = DANCE_BEAT_GOOD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_005 // Great
ENDIF
IF fourth_stored_beat = LOWRIDER_BEAT_GOOD
DISPLAY_TEXT x fAdjustedY DNC_006 // Nice
ENDIF
IF fourth_stored_beat = LOWRIDER_BEAT_ALRIGHT
DISPLAY_TEXT x fAdjustedY DNC_007 // Alright
ENDIF
IF fourth_stored_beat = LOWRIDER_BEAT_PAST
OR fourth_stored_beat = DANCE_BEAT_NONE
DISPLAY_TEXT x fAdjustedY DNC_008 // Late
ELSE
IF fourth_stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
DISPLAY_TEXT x fAdjustedY DNC_010 // Wrong
ENDIF
ENDIF
IF fourth_stored_beat = LOWRIDER_BEAT_FUTURE
DISPLAY_TEXT x fAdjustedY DNC_009 // Early
ENDIF
IF fourth_stored_beat = -1
AND time_to_this_beat < LOWRIDER_OK_TIME_NEG
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
//fucking dance
IF fourth_stored_beat = DANCE_BEAT_BAD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
ENDIf
IF temp_int = -5
IF fifth_stored_beat = LOWRIDER_BEAT_PERFECT
OR fifth_stored_beat = DANCE_BEAT_GOOD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_005 // Great
ENDIF
IF fifth_stored_beat = LOWRIDER_BEAT_GOOD
DISPLAY_TEXT x fAdjustedY DNC_006 // Nice
ENDIF
IF fifth_stored_beat = LOWRIDER_BEAT_ALRIGHT
DISPLAY_TEXT x fAdjustedY DNC_007 // Alright
ENDIF
IF fifth_stored_beat = LOWRIDER_BEAT_PAST
OR fifth_stored_beat = DANCE_BEAT_NONE
DISPLAY_TEXT x fAdjustedY DNC_008 // Late
ELSE
IF fifth_stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
DISPLAY_TEXT x fAdjustedY DNC_010 // Wrong
ENDIF
ENDIF
IF fifth_stored_beat = LOWRIDER_BEAT_FUTURE
DISPLAY_TEXT x fAdjustedY DNC_009 // Early
ENDIF
IF fifth_stored_beat = LOWRIDER_BEAT_WRONG_BUTTON
DISPLAY_TEXT x fAdjustedY DNC_010 // Wrong
ENDIF
IF fifth_stored_beat = -1
AND time_to_this_beat < LOWRIDER_OK_TIME_NEG
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
//fucking dance
IF fifth_stored_beat = DANCE_BEAT_BAD_SCORED
DISPLAY_TEXT x fAdjustedY DNC_011 // Bad
ENDIF
ENDIf
ENDIF
ENDIF
ENDIF
ENDIF
temp_int--
ENDWHILE
ENDIF
ELSE
DRAW_SPRITE SPRITE_STKDL backgroundX backgroundY 666.0 420.0 0 0 0 255
// if track is not TRACK_PLAYING
GOTO cleanup_beat_display
ENDIF
IF bd_terminate_script = 0
GOTO beat_display_loop
ELSE
GOTO cleanup_beat_display
ENDIF
cleanup_beat_display:
bd_terminate_script = 0
beat_display_script_started = 0
USE_TEXT_COMMANDS FALSE
REMOVE_TEXTURE_DICTIONARY // WDFIXME this is causing issues at the end (shows non textured quads).
TERMINATE_THIS_SCRIPT
// SUBROUTINES------------------------------------------------------
/********************************************
MAP BUTTON TO BEAT
********************************************/
BD_MapButtonToBeat:
sprite_num = 0
// analogue directions
IF this_beat_type = SPRITE_STKLEFT // left
OR this_beat_type = SPRITE_SQUARE
sprite_num = SPRITE_STKLEFT
ENDIF
IF this_beat_type = SPRITE_STKRGHT // right
OR this_beat_type = SPRITE_CIRCLE
sprite_num = SPRITE_STKRGHT
ENDIF
IF this_beat_type = SPRITE_STKUR // up & right
sprite_num = SPRITE_STKUR
ENDIF
IF this_beat_type = SPRITE_STKDL // down & left
sprite_num = SPRITE_STKDL
ENDIF
IF this_beat_type = SPRITE_STKUP // up
OR this_beat_type = SPRITE_TRIANGLE
sprite_num = SPRITE_STKUP
ENDIF
IF this_beat_type = SPRITE_STKDWN // down
OR this_beat_type = SPRITE_CROSS
sprite_num = SPRITE_STKDWN
ENDIF
IF this_beat_type = SPRITE_STKUL // up & left
sprite_num = SPRITE_STKUL
ENDIF
IF this_beat_type = SPRITE_STKDR // down & right
sprite_num = SPRITE_STKDR
ENDIF
IF beat_valid = 0
AND this_beat_type = invalid_beat_type
sprite_num = 0
ENDIF
RETURN
/********************************************
RENDER SPRITE FX
********************************************/
BD_RenderSpriteFX:
IF BD_RenderHit > 0
AND iHit_Rendering = 0
GET_BEAT_PROXIMITY 0 iTemp iTemp iFX_BeatToRender
++iFX_BeatToRender
iHit_Rendering = 1
ENDIF
this_beat_closestnumber_2 = this_beat_closestnumber
this_beat_closestnumber_2 += temp_int
IF temp_int < 0
time_to_this_beat *= -1
++this_beat_closestnumber_2
ENDIF
//--- FX rendering
IF this_beat_closestnumber_2 = iFX_BeatToRender
IF time_to_this_beat < DANCE_BOUNDS_NO_BEAT
AND time_to_this_beat > -400
GOSUB BD_RenderHitFX
ELSE
iHit_Rendering = 0
BD_RenderHit = 0
ENDIF
ELSE
BD_RenderHit = 0
ENDIF
RETURN
/********************************************
RENDER HIT FX
********************************************/
BD_RenderHitFX:
SWITCH iHit_Rendering
CASE 1
IF BD_RenderHit = BD_HIT_STANDARD
OR BD_RenderHit = BD_HIT_GOOD
OR BD_RenderHit = BD_HIT_PERFECT
iFXCurrentAlpha = 255
iFXHitDuration = 100
ENDIF
TIMERB = 0
SET_SPRITES_DRAW_BEFORE_FADE TRUE
IF sprite_num = SPRITE_STKDWN // down
DRAW_SPRITE SPRITE_CRING_DOWN 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 255 255 255 iFXCurrentAlpha
ENDIF
//fAdjustedY = y - 69.0
IF sprite_num = SPRITE_STKUP // up
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_UP 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 0.0 255 255 255 iFXCurrentAlpha
ENDIF
//fAdjustedY = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKLEFT // left
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_LEFT 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height -90.0 255 255 255 iFXCurrentAlpha
ENDIF
//fAdjustedY = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKRGHT // right
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_DOWN 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 90.0 255 255 255 iFXCurrentAlpha
ENDIF
++iHit_Rendering
BREAK
CASE 2
IF TIMERB > iFXHitDuration
++iHit_Rendering
ENDIF
SET_SPRITES_DRAW_BEFORE_FADE TRUE
IF sprite_num = SPRITE_STKDWN // down
DRAW_SPRITE SPRITE_CRING_DOWN 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 0 0 255 iFXCurrentAlpha
ENDIF
//fAdjustedY = y - 69.0
IF sprite_num = SPRITE_STKUP // up
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_UP 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 0.0 255 255 0 iFXCurrentAlpha
ENDIF
//fAdjustedY = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKLEFT // left
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_LEFT 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height -90.0 255 0 0 iFXCurrentAlpha
ENDIF
//fAdjustedY = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKRGHT // right
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_RIGHT 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 90.0 0 255 0 iFXCurrentAlpha
ENDIF
BREAK
CASE 3
//--- compute alpha
iTemp = iFXDesiredAlpha / time_elapsed
iTemp *= DB_HIT_STEP_MULTI_SLOW
//--- Fade out
iFXCurrentAlpha -= iTemp
IF iFXCurrentAlpha <= 0
iFXCurrentAlpha = 0
//--- FX finished
iHit_Rendering = 0
BD_RenderHit = 0
ENDIF
SET_SPRITES_DRAW_BEFORE_FADE TRUE
IF sprite_num = SPRITE_STKDWN // down
DRAW_SPRITE SPRITE_CRING_DOWN 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 0 0 255 iFXCurrentAlpha
ENDIF
//fAdjustedY = y - 69.0
IF sprite_num = SPRITE_STKUP // up
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_UP 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 0.0 255 255 0 iFXCurrentAlpha
ENDIF
//fAdjustedY = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKLEFT // left
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_LEFT 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height -90.0 255 0 0 iFXCurrentAlpha
ENDIF
//fAdjustedY = fAdjustedY - 69.0
IF sprite_num = SPRITE_STKRGHT // right
DRAW_SPRITE_WITH_ROTATION SPRITE_CRING_RIGHT 232.0 376.0 fHitZone_sprite_width fHitZone_sprite_height 90.0 0 255 0 iFXCurrentAlpha
ENDIF
BREAK
ENDSWITCH
RETURN
}
MISSION_START
//SCRIPT_NAME IMPEXPS
//{
// START_NEW_SCRIPT import_export_script
//}
MISSION_END
VAR_INT current_wanted_list
VAR_INT current_wanted_car_list[10] // stores model ids of cars we want
VAR_INT current_wanted_car_status[10] // 0 - need, 1 - got
//VAR_INT current_wanted_car_payout[10] // stores the value of each car
VAR_INT current_import_car_list[6]
VAR_INT unlocked_import_cars[42] // total of 42
VAR_INT imported_car
VAR_INT current_vehicle_cost
VAR_INT cross_out[10]
VAR_INT export_name[10]
VAR_INT import_name[6]
VAR_INT restore_mobile_for_filshie
VAR_INT wanted_list_object
VAR_INT impexp_selected_day
VAR_INT impexp_selected_car
VAR_FLOAT impexp_door_rotation
// globals that couldn't fit in the script
VAR_TEXT_LABEL impexp_text_label
VAR_TEXT_LABEL impexp_menu_text_label[6]
VAR_TEXT_LABEL impexp_day[7]
VAR_INT impexp_has_been_initialised
VAR_INT impexp_new_cars
VAR_INT explain_import_help
VAR_INT impexp_is_complete
VAR_INT steal4_flag
VAR_FLOAT import_price_multiplier
VAR_FLOAT export_price_multiplier
VAR_FLOAT export_damage_multiplier
VAR_INT imported_cars[5] // stores imported cars in memory
// ***************************************************
// IMPORT / EXPORT SCRIPT
// ***************************************************
{
import_export_script:
SCRIPT_NAME IMPEXPM
//WRITE_DEBUG IMPEXPM_STARTED
LVAR_INT tri_is_pressed
LVAR_INT cross_is_pressed
LVAR_INT up_is_pressed
LVAR_INT down_is_pressed
// For widgets.
LVAR_FLOAT fWidgetValue
LVAR_INT temp_int
LVAR_INT temp_int2
LVAR_INT temp_model
LVAR_FLOAT x2 y2 z2
LVAR_FLOAT x3 y3
LVAR_FLOAT temp_float temp_float2 temp_float3
LVAR_INT impexp_mode // 0 - exporting, 1 - importing
LVAR_INT m_goals
LVAR_INT crane_car
LVAR_INT crane_ped
LVAR_INT crane_obj
LVAR_INT last_crane_car
LVAR_INT stored_model
LVAR_INT export_car
LVAR_INT help_flag
LVAR_INT selector_obj
LVAR_INT current_selection
LVAR_INT delete_export_car_flag
// board stuff
VAR_INT board
LVAR_INT imp_exp_help
LVAR_INT payout
LVAR_INT temp_seq
LVAR_INT player_was_in_car
// ----- INITIALISATION ---- ONLY RUN ONCE!!! --------
IF NOT impexp_has_been_initialised = 99
// fake create
IF impexp_has_been_initialised = -1000
CREATE_OBJECT_NO_OFFSET NF_BLACKBOARD 0.0 0.0 0.0 board
CREATE_CAR_GENERATOR_WITH_PLATE 0.0 0.0 0.0 180.0 EUROS -1 -1 FALSE 50 0 0 10000 IMPEXP__ impexp_car_gen[0]
ENDIF
// create blackboard
IF NOT DOES_OBJECT_EXIST board
CREATE_OBJECT_NO_OFFSET NF_BLACKBOARD -1573.8812 135.3845 2.5350 board
SET_OBJECT_HEADING board 180.0
FREEZE_OBJECT_POSITION board TRUE
SET_OBJECT_DYNAMIC board FALSE
DONT_REMOVE_OBJECT board
ENDIF
// set stuff intially, that will only ever be set ONCE
current_wanted_list = 0
// clear list of unlockable cars, except for the initial unlocked ones.
unlocked_import_cars[0] = CLUB
unlocked_import_cars[1] = PEREN
unlocked_import_cars[2] = JESTER
unlocked_import_cars[3] = CLUB
unlocked_import_cars[4] = PEREN
unlocked_import_cars[5] = JESTER
temp_int = 6
WHILE temp_int < 42
unlocked_import_cars[temp_int] = -1
temp_int++
ENDWHILE
$impexp_day[0] = &IE16
$impexp_day[1] = &IE10
$impexp_day[2] = &IE11
$impexp_day[3] = &IE12
$impexp_day[4] = &IE13
$impexp_day[5] = &IE14
$impexp_day[6] = &IE15
explain_import_help = 0
impexp_new_cars = 0
impexp_is_complete = 0
import_price_multiplier = 0.8
export_price_multiplier = 1.0
//VIEW_INTEGER_VARIABLE impexp_new_cars impexp_new_cars
imported_cars[0] = -1
imported_cars[1] = -1
imported_cars[2] = -1
imported_cars[3] = -1
imported_cars[4] = -1
START_NEW_SCRIPT impexp_car_check
impexp_has_been_initialised = 99
ENDIF
import_export_script_start:
// wait for player to get near -------------------------------------------------
impexp_script_manager_loop:
WAIT 0
IF IS_PLAYER_PLAYING player1
// IF IS_CHAR_IN_ZONE scplayer EASB // Easter Basin zone.
IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1574.8812 135.3845 150.0 150.0 FALSE
AND import_export_is_active = 1
impexp_mode = 0
GOTO impexp_main
ENDIF
ENDIF
GOTO impexp_script_manager_loop
delete_export_car_flag = 0
// load up stuff we need for import export --------------------------------------
impexp_main:
IF import_export_is_active = 1
IF activate_mobile_phone = 1
activate_mobile_phone = 0
restore_mobile_for_filshie = 1
ENDIF
ENDIF
GOSUB impexp_update_car_gens
//WRITE_DEBUG impexp_main_started
// fake creates
IF m_goals = -1
CREATE_CAR PONY 0.0 0.0 0.0 crane_car
CREATE_CAR PONY 0.0 0.0 0.0 last_crane_car
CREATE_CAR PONY 0.0 0.0 0.0 export_car
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 board
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 cross_out[0]
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 export_name[0]
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 import_name[0]
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 selector_obj
// CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 door1
// CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 door2
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 magno_arm
CREATE_OBJECT WOODENBOX 0.0 0.0 0.0 wanted_list_object
ENDIF
m_goals = 0
last_crane_car = -1
help_flag = 0
impexp_door_rotation = 0.0
imp_exp_help = 0
GOSUB load_wanted_car_list
GOSUB load_import_car_list
// export names on board
IF import_export_is_active = 1
IF DOES_OBJECT_EXIST wanted_list_object
DELETE_OBJECT wanted_list_object
ENDIF
IF current_wanted_list = 0
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS board 0.0 0.0 0.0 x y z
CREATE_OBJECT_NO_OFFSET NF_LIST_1 x y z wanted_list_object
SET_OBJECT_HEADING wanted_list_object 180.0
//WRITE_DEBUG create_board1
ENDIF
IF current_wanted_list = 1
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS board 0.0 0.0 0.0 x y z
CREATE_OBJECT_NO_OFFSET NF_LIST_2 x y z wanted_list_object
SET_OBJECT_HEADING wanted_list_object 180.0
//WRITE_DEBUG create_board2
ENDIF
IF current_wanted_list = 2
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS board 0.0 0.0 0.0 x y z
CREATE_OBJECT_NO_OFFSET NF_LIST_3 x y z wanted_list_object
SET_OBJECT_HEADING wanted_list_object 180.0
//WRITE_DEBUG create_board3
ENDIF
ENDIF
GOSUB impexp_update_car_gens
// create score offs
IF import_export_is_active = 1
temp_int = 0
WHILE temp_int < 10
IF DOES_OBJECT_EXIST cross_out[temp_int]
DELETE_OBJECT cross_out[temp_int]
ENDIF
cross_out[temp_int] = -1
IF flag_player_on_mission = 0
OR steal4_flag = 1
IF current_wanted_car_status[temp_int] = 1
IF NOT DOES_OBJECT_EXIST cross_out[temp_int]
// figure out x y z
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS board 0.0 0.0 0.0 x y z
temp_float =# temp_int
IF temp_float > 4.0
temp_float += -5.0
ENDIF
// add on verticle offset
temp_float2 = temp_float
temp_float2 *= -0.05
temp_float *= -0.2355
temp_float += temp_float2
z += temp_float
// add on horizontal offset
IF temp_int < 5
x += 1.741
ENDIF
temp_float *= -0.1
z += temp_float
CREATE_OBJECT_NO_OFFSET WANTED_CROSS_OFF x y z cross_out[temp_int]
FREEZE_OBJECT_POSITION cross_out[temp_int] TRUE
SET_OBJECT_HEADING cross_out[temp_int] 180.0
ENDIF
ENDIF
ENDIF
temp_int++
ENDWHILE
ENDIF
// import export loop -----------------------------------------------------------
impexp_main_loop:
WAIT 0
IF import_export_is_active = 0
GOTO impexp_main_loop
ENDIF
IF delete_export_car_flag = 1
IF DOES_VEHICLE_EXIST export_car
IF NOT IS_CAR_DEAD export_car
FREEZE_CAR_POSITION export_car TRUE
IF NOT IS_CAR_ON_SCREEN export_car
//WRITE_DEBUG delete_export1
DELETE_CAR export_car
delete_export_car_flag = 0
ENDIF
ELSE
//WRITE_DEBUG delete_export2
DELETE_CAR export_car
delete_export_car_flag = 0
ENDIF
// check it not being lifted by crane
GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm crane_car crane_ped crane_obj
IF crane_car = export_car
RELEASE_ENTITY_FROM_ROPE_FOR_OBJECT magno_arm
ENDIF
ENDIF
ENDIF
IF NOT impexp_new_cars = 0
AND TIMERB > 5000
IF NOT IS_MESSAGE_BEING_DISPLAYED
AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED
IF impexp_new_cars = 1
PRINT_HELP IE25
ENDIF
IF impexp_new_cars = 2
PRINT_HELP IE26
ENDIF
impexp_new_cars = 0
//WRITE_DEBUG printed_help
ENDIF
ENDIF
IF explain_import_help = 0
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1574.8812 135.3845 40.0 40.0 FALSE
IF NOT IS_MESSAGE_BEING_DISPLAYED
AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP IE27
explain_import_help++
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
//IF IS_CHAR_IN_ZONE scplayer EASB // Easter Basin zone.
IF LOCATE_CHAR_ANY_MEANS_2D scplayer -1574.8812 135.3845 150.0 150.0 FALSE
// PLAYER IS IN EXPORTING MODE (DEFAULT) +++++++++
IF impexp_mode = 0
IF impexp_is_complete = 0
// WAIT FOR CORRECT CAT TO BE PLACED IN LOCATE
IF m_goals = 0
GOSUB store_last_crane_car
// display corona
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer -1577.9417 52.6333 16.3281 4.0 4.0 6.0 TRUE
// fuck all
ENDIF
ENDIF
GET_RANDOM_CAR_IN_SPHERE_NO_SAVE -1577.9417 52.6333 16.3281 4.0 -1 car
IF DOES_VEHICLE_EXIST car
IF NOT IS_CAR_DEAD car
IF IS_CAR_STOPPED car
IF NOT IS_CAR_IN_AIR_PROPER car
IF NOT car = crane_car
// check to see that car is wanted
GET_CAR_MODEL car temp_model
// check if car is on wanted list
temp_int = 0
temp_int2 = 0
WHILE temp_int < 10
IF current_wanted_car_list[temp_int] = temp_model
IF current_wanted_car_status[temp_int] = 0
temp_int2 = 1
temp_int = 10
ENDIF
ENDIF
temp_int++
ENDWHILE
IF temp_int2 = 1
export_car = car
IF IS_CAR_PASSENGER_SEAT_FREE car 0
CREATE_RANDOM_CHAR -1576.88 55.26 8.57 crane_ped
WARP_CHAR_INTO_CAR_AS_PASSENGER crane_ped car 0
SET_CHAR_VISIBLE crane_ped FALSE
//WRITE_DEBUG ped_is_in_car
ELSE
GET_CHAR_IN_CAR_PASSENGER_SEAT car 0 crane_ped
DELETE_CHAR crane_ped
CREATE_RANDOM_CHAR -1576.88 55.26 8.57 crane_ped
WARP_CHAR_INTO_CAR_AS_PASSENGER crane_ped car 0
SET_CHAR_VISIBLE crane_ped FALSE
//WRITE_DEBUG ped_is_deleted
ENDIF
m_goals++
TIMERA = 0
ELSE
IF NOT IS_MESSAGE_BEING_DISPLAYED
PRINT IE23 3000 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_PLAYER_PLAYING player1
IF IS_CHAR_IN_ANY_CAR scplayer
IF LOCATE_STOPPED_CHAR_IN_CAR_3D scplayer -1577.9417 52.6333 16.3281 4.0 4.0 6.0 FALSE
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car
GET_CAR_MODEL car temp_model
// check if car is on wanted list
temp_int = 0
temp_int2 = 0
WHILE temp_int < 10
IF current_wanted_car_list[temp_int] = temp_model
IF current_wanted_car_status[temp_int] = 0
temp_int2 = 1
temp_int = 10
ENDIF
ENDIF
temp_int++
ENDWHILE
IF temp_int2 = 1
export_car = car
IF NOT IS_CAR_DEAD export_car
//SET_CAR_STATUS export_car STATUS_PLAYER
ENDIF
m_goals++
TIMERA = 0
ELSE
IF NOT IS_MESSAGE_BEING_DISPLAYED
PRINT IE23 3000 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF m_goals = 1
IF DOES_OBJECT_EXIST magno_arm
SET_ROPE_HEIGHT_FOR_OBJECT magno_arm 0.7
ENDIF
disable_crane = 1
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
ENDIF
DO_FADE 250 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
IF DOES_VEHICLE_EXIST export_car
IF NOT IS_CAR_DEAD export_car
IF IS_PLAYER_PLAYING player1
GET_CHAR_COORDINATES scplayer x y z
ENDIF
SET_CAR_COORDINATES export_car -1577.9417 52.6333 40.0
FREEZE_CAR_POSITION export_car TRUE
GET_CAR_HEALTH export_car temp_int
export_damage_multiplier =# temp_int
export_damage_multiplier /= 1000.0
ENDIF
ENDIF
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -1573.4189 53.4591 17.9655 0.0 0.0 0.0
POINT_CAMERA_AT_POINT -1574.3435 53.0835 17.9027 JUMP_CUT
CLEAR_AREA -1577.9417 52.6333 16.3281 9.0 TRUE
WAIT 0
// align car position
IF NOT IS_CAR_DEAD export_car
GET_CAR_MODEL export_car temp_int
GET_MODEL_DIMENSIONS temp_int x y z x2 y2 z2
temp_float = y2 - y // car length
temp_float /= 2.0
temp_float *= -1.0
SIN 45.0 temp_float3
COS 45.0 temp_float2
temp_float2 *= temp_float
temp_float3 *= temp_float
x = -1577.9417 + temp_float3
y = 52.6333 + temp_float2
z = 16.3281
FREEZE_CAR_POSITION export_car FALSE
SET_CAR_COORDINATES export_car x y z
SET_CAR_HEADING export_car 315.0
ENDIF
DO_FADE 250 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
// set players position (if not in crane)
IF IS_PLAYER_PLAYING player1
IF NOT IS_CAR_DEAD export_car
IF IS_CHAR_IN_CAR scplayer export_car
player_was_in_car = 1
OPEN_SEQUENCE_TASK temp_seq
TASK_LEAVE_CAR -1 export_car
TASK_GO_STRAIGHT_TO_COORD -1 -1578.1637 63.7954 16.3281 PEDMOVE_WALK 10000
CLOSE_SEQUENCE_TASK temp_seq
PERFORM_SEQUENCE_TASK scplayer temp_seq
CLEAR_SEQUENCE_TASK temp_seq
ELSE
player_was_in_car = 0
ENDIF
ENDIF
ENDIF
PRINT_NOW IE24 5000 1 // ~s~You have successfully delivered this vehicle for export.
ENABLE_CRANE_CONTROLS FALSE FALSE FALSE // Make sure the widgets don't show up when we're waiting for user to continue.
ADD_WIDGET_FLAG WIDGET_MISSION_START 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE
IF IS_WIDGET_RELEASED WIDGET_MISSION_START
cross_is_pressed = 1
ENDIF
TIMERA = 0
m_goals++
ENDIF
// wait for a couple of secs
IF m_goals = 2
IF TIMERA > 5000
AND IS_WIDGET_RELEASED WIDGET_MISSION_START
IF cross_is_pressed = 0
m_goals++
ENDIF
ENDIF
IF cross_is_pressed = 1
IF NOT IS_WIDGET_RELEASED WIDGET_MISSION_START
cross_is_pressed = 0
ENDIF
ENDIF
ENDIF
// cleanup
IF m_Goals = 3
ENABLE_CRANE_CONTROLS TRUE TRUE TRUE
REMOVE_WIDGET_FLAG WIDGET_MISSION_START 4 // WIDGET_FLAG_ENABLED_IN_CUTSCENE
DO_FADE 500 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
// set char coordinates (if not in crane)
IF NOT player_was_in_car = 0
IF IS_PLAYER_PLAYING player1
CLEAR_CHAR_TASKS_IMMEDIATELY scplayer
SET_CHAR_COORDINATES scplayer -1578.1637 63.7954 16.3281
SET_CHAR_HEADING scplayer 0.8
ENDIF
ENDIF
GOSUB impexp_update_car_lists
//WRITE_DEBUG_WITH_INT impexp_new_cars impexp_new_cars
DELETE_CAR export_car
IF DOES_CHAR_EXIST crane_ped
DELETE_CHAR crane_ped
ENDIF
SET_CAMERA_BEHIND_PLAYER
RESTORE_CAMERA_JUMPCUT
SWITCH_WIDESCREEN OFF
disable_crane = 0
IF player_is_in_crane = 2
reset_crane_camera = 1
ENDIF
DO_FADE 500 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
ENDIF
IF impexp_is_complete = 1
PRINT_BIG IE29 5000 1 // all cars collected!!
REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE
WAIT 5000
ENDIF
IF IS_PLAYER_PLAYING player1
ADD_SCORE player1 payout
ENDIF
PRINT_WITH_NUMBER_BIG IE30 payout 5000 1
REPORT_MISSION_AUDIO_EVENT_AT_POSITION -1000.0 -1000.0 -1000.0 SOUND_PART_MISSION_COMPLETE
TIMERB = 0
GOTO impexp_main
ENDIF
ENDIF
// check if player is looking at export board
IF DOES_OBJECT_EXIST board
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS board 0.0 1.5 0.0 x y z
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 2.0 1.0 2.0 FALSE
IF NOT help_flag = 1
PRINT_HELP IE18
help_flag = 1
ENDIF
SET_PLAYER_ENTER_CAR_BUTTON player1 FALSE
IF tri_is_pressed = 0
WRITE_LOG "FANCYCONTEXT WIDGET_MISSION_START VIEWVEH" // "View Vehicles". Button prompts for a shared buttons need to present context-specific strings.
IF IS_WIDGET_RELEASED WIDGET_MISSION_START
tri_is_pressed = 1
impexp_mode = 1
GOTO impexp_main
ENDIF
ELSE
IF NOT IS_WIDGET_RELEASED WIDGET_MISSION_START
tri_is_pressed = 0
ENDIF
ENDIF
ELSE
IF help_flag = 1
CLEAR_HELP
help_flag = 0
ENDIF
SET_PLAYER_ENTER_CAR_BUTTON player1 TRUE
ENDIF
ENDIF
ENDIF
ENDIF
// PLAYER IS VIEWING IMPORT BOARD MODE --------------------------
IF impexp_mode = 1
// set player position and camera position
import_mode_start:
// --------------- SET FIRST MENU UP ----------------------------
IF m_goals = 0
// set camera
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
ENDIF
CLEAR_HELP
//This is needed here but it breaks old saves :(
//SET_WIDGET_TEXTURE WIDGET_STORE_ACCEPT "hud_check"
PRINT_HELP_FOREVER IE20HID // Use the movement controls to select a day. Press ~m~~widget_store_accept~ to continue. Press ~m~~widget_store_cancel~ to exit.
DISPLAY_RADAR FALSE
// Not sure what's creating a flicker here when you destroy a menu and recreate it.
WAIT 100
// Create the main menu.
CREATE_SHOP_WIDGET IE09
ADD_SHOP_ITEM IE16 0
ADD_SHOP_ITEM IE10 0
ADD_SHOP_ITEM IE11 0
ADD_SHOP_ITEM IE12 0
ADD_SHOP_ITEM IE13 0
ADD_SHOP_ITEM IE14 0
ADD_SHOP_ITEM IE15 0
IF temp_int = -69
fWidgetValue =# impexp_selected_day
SET_WIDGET_VALUE WIDGET_SHOP fWidgetValue // Set selected item to equipped item.
ELSE
GET_CURRENT_DAY_OF_WEEK temp_int
temp_int -= 1 // match up with menu system
fWidgetValue =# temp_int
SET_WIDGET_VALUE WIDGET_SHOP fWidgetValue // Set selected item to equipped item.
ENDIF
m_goals++
ENDIF
// -------- wait for user to select a day ------------------------
IF m_goals = 1
IF cross_is_pressed = 0
IF IS_WIDGET_RELEASED WIDGET_STORE_ACCEPT
GET_WIDGET_VALUE WIDGET_SHOP fWidgetValue // Grab the selected item from the widget.
impexp_selected_day =# fWidgetValue
m_goals++
cross_is_pressed = 1
CLEAR_THIS_PRINT IE28
ENDIF
ELSE
IF NOT IS_WIDGET_RELEASED WIDGET_STORE_ACCEPT
cross_is_pressed = 0
ENDIF
ENDIF
IF tri_is_pressed = 0
IF IS_WIDGET_RELEASED WIDGET_STORE_CANCEL
GOSUB impexp_delete_menus
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
ENDIF
DISPLAY_RADAR TRUE
CLEAR_HELP
impexp_mode = 0
m_goals = 0
tri_is_pressed = 1
ENDIF
ELSE
IF NOT IS_WIDGET_RELEASED WIDGET_STORE_CANCEL
tri_is_pressed = 0
ENDIF
ENDIF
ENDIF
// ----------- setup cars available for that day ---------------
IF m_goals = 2
// load cars available
import_car_list_input = impexp_selected_day
GOSUB load_import_car_list
// check cars are available
temp_int = 0
temp_int2 = 0
WHILE temp_int < 6
IF NOT current_import_car_list[temp_int] = -1
temp_int2 = 1
temp_int = 6
ENDIF
temp_int++
ENDWHILE
// no cars are available for that day
IF temp_int2 = 0
PRINT_NOW IE28 5000 1
m_goals = 1
GOTO import_mode_start
ELSE
CLEAR_HELP
PRINT_HELP_FOREVER IE21HID // Use the movement controls to select a vehicle. Press ~m~~widget_store_accept~ to continue. Press ~m~~widget_store_back~ to exit.
// create menu. fill menu - first colum - cars
temp_int = 0
WHILE temp_int < 6
temp_model = current_import_car_list[temp_int]
IF NOT temp_model = -1
GOSUB get_vehicle_text_label
$impexp_menu_text_label[temp_int] = $impexp_text_label
ELSE
$impexp_menu_text_label[temp_int] = DUMMY
ENDIF
temp_int++
ENDWHILE
temp_int = impexp_selected_day
CREATE_SHOP_WIDGET IE09
temp_int = 0
WHILE temp_int < 6
temp_model = current_import_car_list[temp_int]
IF NOT temp_model = -1
GET_CAR_MODEL_VALUE current_import_car_list[temp_int] current_vehicle_cost
temp_float =# current_vehicle_cost
temp_float *= import_price_multiplier
current_vehicle_cost =# temp_float
ADD_SHOP_ITEM $impexp_menu_text_label[temp_int] current_vehicle_cost
ENDIF
temp_int++
ENDWHILE
m_goals ++
ENDIF
ENDIF
// --------- wait for user to select -------------
IF m_goals = 3
IF cross_is_pressed = 0
IF IS_WIDGET_RELEASED WIDGET_STORE_ACCEPT
GET_WIDGET_VALUE WIDGET_SHOP fWidgetValue // Grab the selected item from the widget.
impexp_selected_car =# fWidgetValue
//CLEAR_HELP This is not allowed here; breaks existing saves :(
m_goals++
cross_is_pressed = 1
ENDIF
ELSE
IF NOT IS_WIDGET_RELEASED WIDGET_STORE_ACCEPT
cross_is_pressed = 0
ENDIF
ENDIF
IF tri_is_pressed = 0
IF IS_WIDGET_RELEASED WIDGET_STORE_BACK
GOSUB impexp_delete_menus
m_goals = 0
tri_is_pressed = 1
temp_int = -69
GOTO import_mode_start
ENDIF
ELSE
IF NOT IS_WIDGET_RELEASED WIDGET_STORE_BACK
tri_is_pressed = 0
ENDIF
ENDIF
ENDIF
// -------- check if player can buy car --------
IF m_goals = 4
// check it's correct day
GET_CURRENT_DAY_OF_WEEK temp_int
temp_int += -1 // match up with menu system
IF NOT temp_int = impexp_selected_day
PRINT_NOW IE19 5000 1 // wrong day!
GOSUB impexp_delete_menus
m_goals = 0
ENDIF
// check player has enough cash
GET_CAR_MODEL_VALUE current_import_car_list[current_selection] current_vehicle_cost
temp_float =# current_vehicle_cost
temp_float *= import_price_multiplier
current_vehicle_cost =# temp_float
STORE_SCORE player1 temp_int
IF current_vehicle_cost > temp_int
PRINT_NOW IE07 5000 1 // not enough cash!
GOSUB impexp_delete_menus
m_goals = 0
ENDIF
// check that a vehicle has been selected
IF NOT m_goals = 0
IF current_import_car_list[impexp_selected_car] = -1
GOSUB impexp_delete_menus
m_goals = 0
ENDIF
ENDIF
// we must be ok then - proceed with importing the car
IF NOT m_goals = 0
// current_selection = impexp_selected_car
// GOSUB get_model_cost
GET_CAR_MODEL_VALUE current_import_car_list[current_selection] current_vehicle_cost
temp_float =# current_vehicle_cost
temp_float *= import_price_multiplier
current_vehicle_cost =# temp_float
temp_int = current_vehicle_cost * -1
ADD_SCORE player1 temp_int
m_goals++
ENDIF
ENDIF
// ------- create car ----------------------
IF m_Goals = 5
// load the model
IF NOT HAS_MODEL_LOADED current_import_car_list[impexp_selected_car]
REQUEST_MODEL current_import_car_list[impexp_selected_car]
WHILE NOT HAS_MODEL_LOADED current_import_car_list[impexp_selected_car]
WAIT 0
ENDWHILE
ENDIF
CLEAR_HELP
GOSUB impexp_delete_menus
CLEAR_AREA -1572.1682 63.2853 16.3281 20.0 TRUE
// create car
GOSUB ie_create_custom_plates
CREATE_CAR current_import_car_list[impexp_selected_car] -1572.1682 63.2853 16.3281 imported_car
SET_VEHICLE_DIRT_LEVEL imported_car 0.0
SET_CAR_HEADING imported_car 315.0
MARK_MODEL_AS_NO_LONGER_NEEDED current_import_car_list[impexp_selected_car]
// if it's a golf
IF current_import_car_list[impexp_selected_car] = CLUB
CHANGE_CAR_COLOUR imported_car 11 0
ENDIF
GET_CAR_MODEL imported_car temp_int
GET_MODEL_DIMENSIONS temp_int x y z x2 y2 z2
temp_float = y2 - y // car length
temp_float /= 2.0
temp_float *= -1.0
COS 45.0 temp_float2
SIN 45.0 temp_float3
temp_float2 *= temp_float
temp_float3 *= temp_float
x = -1572.1682 + temp_float3
y = 63.2853 + temp_float2
z = 16.3281
SET_CAR_COORDINATES imported_car x y z
SET_CAR_HEADING imported_car 315.0
CLEAR_PRINTS
SWITCH_WIDESCREEN ON
SET_FIXED_CAMERA_POSITION -1567.5967 63.2567 17.7586 0.0 0.0 0.0
POINT_CAMERA_AT_POINT -1568.5756 63.0585 17.7094 JUMP_CUT
PRINT_NOW IE08 5000 1 // Your new vehicle is on the container ship.
// increment stat
INCREMENT_INT_STAT VEHICLES_IMPORTED 1
TIMERA = 0
m_goals++
ENDIF
// ---------- admire car -----------
IF m_goals = 6
IF TIMERA > 5000
m_goals++
ELSE
IF cross_is_pressed = 0
IF IS_WIDGET_RELEASED WIDGET_MISSION_START
m_goals++
ENDIF
ELSE
IF NOT IS_WIDGET_RELEASED WIDGET_STORE_ACCEPT
cross_is_pressed = 0
ENDIF
ENDIF
ENDIF
ENDIF
// -------- restore player, wait for him to pickup car -------------
IF m_goals = 7
CLEAR_PRINTS
SET_CAMERA_BEHIND_PLAYER
RESTORE_CAMERA_JUMPCUT
SWITCH_WIDESCREEN OFF
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
ENDIF
SET_PLAYER_ENTER_CAR_BUTTON player1 TRUE
DISPLAY_RADAR TRUE
CLEAR_HELP
m_goals++
ENDIF
// wait for player to remove car
IF m_goals = 8
IF NOT IS_CAR_DEAD imported_car
IF NOT LOCATE_CAR_3D imported_car -1572.1682 63.2853 16.3281 30.0 30.0 5.0 FALSE
AND NOT IS_POINT_ON_SCREEN -1572.1682 63.2853 16.3281 5.0
MARK_CAR_AS_NO_LONGER_NEEDED imported_car
impexp_mode = 0
m_goals = 0
GOTO impexp_main
ENDIF
ELSE
MARK_CAR_AS_NO_LONGER_NEEDED imported_car
impexp_mode = 0
m_goals = 0
GOTO impexp_main
ENDIF
// check if player is looking at export board
IF DOES_OBJECT_EXIST board
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS board 0.0 1.5 0.0 x y z
IF IS_PLAYER_PLAYING player1
IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 2.0 1.0 2.0 FALSE
IF tri_is_pressed = 0
IF IS_WIDGET_RELEASED WIDGET_MISSION_CANCEL
tri_is_pressed = 1
PRINT_NOW IE08 5000 1 // Your new vehicle is on the container ship.
ENDIF
ELSE
IF NOT IS_WIDGET_RELEASED WIDGET_STORE_BACK
tri_is_pressed = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
GOTO impexp_cleanup
ENDIF
ELSE
GOTO impexp_cleanup
ENDIF
IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_U
// find next wanted model
temp_int = 0
WHILE temp_int < 10
IF current_wanted_car_status[temp_int] = 0
temp_model = current_wanted_car_list[temp_int]
temp_int = 10
ENDIF
temp_int++
ENDWHILE
GOSUB impexp_update_car_lists
GOTO impexp_main
ENDIF
IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_T
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_STRING_TO_DEBUG_FILE "current_wanted_list = "
SAVE_INT_TO_DEBUG_FILE current_wanted_list
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_STRING_TO_DEBUG_FILE "modID, status, payout, exp name, cross out"
SAVE_NEWLINE_TO_DEBUG_FILE
temp_int = 0
WHILE temp_int < 10
SAVE_INT_TO_DEBUG_FILE current_wanted_car_list[temp_int]
SAVE_STRING_TO_DEBUG_FILE " "
SAVE_INT_TO_DEBUG_FILE current_wanted_car_status[temp_int]
SAVE_STRING_TO_DEBUG_FILE " "
//SAVE_INT_TO_DEBUG_FILE current_wanted_car_payout[temp_int]
SAVE_STRING_TO_DEBUG_FILE " "
SAVE_INT_TO_DEBUG_FILE export_name[temp_int]
SAVE_STRING_TO_DEBUG_FILE " "
SAVE_INT_TO_DEBUG_FILE cross_out[temp_int]
SAVE_NEWLINE_TO_DEBUG_FILE
temp_int++
ENDWHILE
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_STRING_TO_DEBUG_FILE "import details"
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_STRING_TO_DEBUG_FILE "modID, imp name"
SAVE_NEWLINE_TO_DEBUG_FILE
temp_int = 0
WHILE temp_int < 6
SAVE_INT_TO_DEBUG_FILE current_import_car_list[temp_int]
SAVE_STRING_TO_DEBUG_FILE " "
SAVE_INT_TO_DEBUG_FILE import_name[temp_int]
SAVE_NEWLINE_TO_DEBUG_FILE
temp_int++
ENDWHILE
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_STRING_TO_DEBUG_FILE "unlocked_import_cars array"
SAVE_NEWLINE_TO_DEBUG_FILE
temp_int = 0
WHILE temp_int < 42
SAVE_STRING_TO_DEBUG_FILE "unlocked_import_cars["
SAVE_INT_TO_DEBUG_FILE temp_int
SAVE_STRING_TO_DEBUG_FILE "] = "
SAVE_INT_TO_DEBUG_FILE unlocked_import_cars[temp_int]
SAVE_NEWLINE_TO_DEBUG_FILE
temp_int++
ENDWHILE
ENDIF
GOTO impexp_main_loop
impexp_delete_menus:
DELETE_WIDGET WIDGET_SHOP
RETURN
// cleanup then go back to the start of script ------------------------------------
impexp_cleanup:
//WRITE_DEBUG impexp_cleaned_up
IF DOES_VEHICLE_EXIST export_car
IF DOES_OBJECT_EXIST magno_arm
GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm crane_car crane_ped crane_obj
IF NOT crane_car = export_car
MARK_CAR_AS_NO_LONGER_NEEDED export_car
ENDIF
ENDIF
ENDIF
IF DOES_VEHICLE_EXIST imported_car
IF DOES_OBJECT_EXIST magno_arm
GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm crane_car crane_ped crane_obj
IF NOT crane_car = imported_car
MARK_CAR_AS_NO_LONGER_NEEDED imported_car
ENDIF
ENDIF
ENDIF
IF DOES_CHAR_EXIST crane_ped
DELETE_CHAR crane_ped
ENDIF
IF DOES_OBJECT_EXIST selector_obj
DELETE_OBJECT selector_obj
ENDIF
temp_int = 0
WHILE temp_int < 10
IF DOES_OBJECT_EXIST cross_out[temp_int]
DELETE_OBJECT cross_out[temp_int]
ENDIF
temp_int++
ENDWHILE
IF DOES_OBJECT_EXIST wanted_list_object
DELETE_OBJECT wanted_list_object
ENDIF
// IF DOES_OBJECT_EXIST board
// DELETE_OBJECT board
// ENDIF
IF restore_mobile_for_filshie = 1
activate_mobile_phone = 1
ENDIF
GOTO import_export_script_start
// GOSUBS ***********************************************
impexp_board_cleanup:
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
SET_PLAYER_ENTER_CAR_BUTTON player1 TRUE
ENDIF
SWITCH_WIDESCREEN OFF
SET_CAMERA_BEHIND_PLAYER
RESTORE_CAMERA_JUMPCUT
CLEAR_PRINTS
tri_is_pressed = 1
RETURN
impexp_draw_buying_hud:
RETURN
impexp_update_car_lists:
// update stat
INCREMENT_INT_STAT VEHICLES_EXPORTED 1
// mark car off list
temp_int = 0
WHILE temp_int < 10
IF current_wanted_car_list[temp_int] = temp_model
IF current_wanted_car_status[temp_int] = 0
current_wanted_car_status[temp_int] = 1
// give player cash
//payout = current_wanted_car_payout[temp_int]
GET_CAR_MODEL_VALUE temp_model payout
temp_float =# payout
temp_float *= export_price_multiplier
temp_float *= export_damage_multiplier
payout =# temp_float
GET_INT_STAT VEHICLES_EXPORTED temp_int
SWITCH temp_int
CASE 10
payout += 50000
BREAK
CASE 20
payout += 100000
BREAK
CASE 30
payout += 200000
IF NOT impexp_is_complete = 1
WRITE_LOG "UNLOCK_ACHIEVEMENT A_LEGITIMATE_BUSINESS"
impexp_is_complete = 1
ENDIF
BREAK
ENDSWITCH
temp_int = 10
ENDIF
ENDIF
temp_int++
ENDWHILE
// update car gens
GOSUB impexp_update_car_gens
// add car to unlocked list
temp_int = 0
WHILE temp_int < 42
IF unlocked_import_cars[temp_int] = -1
unlocked_import_cars[temp_int] = temp_model
temp_int2 = temp_int
temp_int = 42
ENDIF
temp_int++
ENDWHILE
impexp_new_cars = 1
//WRITE_DEBUG_WITH_INT impexp_new_cars impexp_new_cars
// unlock special cars - one gets unlocked every 3ish cars
SWITCH temp_int2
CASE 10
temp_int2++
unlocked_import_cars[temp_int2] = MONSTER
impexp_new_cars++
BREAK
// CASE 9
// temp_int2++
// unlocked_import_cars[temp_int2] = NRG500
// impexp_new_cars++
// BREAK
CASE 16
temp_int2++
unlocked_import_cars[temp_int2] = WINDSOR
PLAYER_MADE_PROGRESS 1
PLAY_MISSION_PASSED_TUNE 2
impexp_new_cars++
BREAK
// CASE 18
// temp_int2++
// unlocked_import_cars[temp_int2] = HOTKNIFE
// impexp_new_cars++
// BREAK
CASE 22
temp_int2++
unlocked_import_cars[temp_int2] = BANDITO
impexp_new_cars++
BREAK
CASE 28
temp_int2++
unlocked_import_cars[temp_int2] = TURISMO
PLAYER_MADE_PROGRESS 1
PLAY_MISSION_PASSED_TUNE 2
impexp_new_cars++
BREAK
// CASE 31
// temp_int2++
// unlocked_import_cars[temp_int2] = DUNERIDE
// impexp_new_cars++
// BREAK
CASE 34
temp_int2++
unlocked_import_cars[temp_int2] = VORTEX
impexp_new_cars++
BREAK
CASE 40
temp_int2++
unlocked_import_cars[temp_int2] = BULLET
PLAYER_MADE_PROGRESS 1
PLAY_MISSION_PASSED_TUNE 2
impexp_new_cars++
BREAK
ENDSWITCH
RETURN
load_wanted_car_list:
IF flag_player_on_mission = 1
AND NOT steal4_flag = 1
//WRITE_DEBUG FLAG_PLAYER_ON_MISSION
current_wanted_car_list[0] = -1
current_wanted_car_list[1] = -1
current_wanted_car_list[2] = -1
current_wanted_car_list[3] = -1
current_wanted_car_list[4] = -1
current_wanted_car_list[5] = -1
current_wanted_car_list[6] = -1
current_wanted_car_list[7] = -1
current_wanted_car_list[8] = -1
current_wanted_car_list[9] = -1
ELSE
// check if all the wanted cars have been got
temp_int = 0
temp_int2 = 0
WHILE temp_int < 10
IF current_wanted_car_status[temp_int] = 1
temp_int2++
ENDIF
temp_int++
ENDWHILE
// if got them all
IF temp_int2 = 10
// increment wanted list
IF current_wanted_list < 2
current_wanted_list++
// clear need / got status
temp_int = 0
WHILE temp_int < 10
current_wanted_car_status[temp_int] = 0
temp_int++
ENDWHILE
ELSE
IF NOT impexp_is_complete = 1
WRITE_LOG "UNLOCK_ACHIEVEMENT A_LEGITIMATE_BUSINESS"
impexp_is_complete = 1
ENDIF
ENDIF
ENDIF
IF current_wanted_list = 0
current_wanted_car_list[0] = BUFFALO
current_wanted_car_list[1] = SENTINEL
current_wanted_car_list[2] = INFERNUS
current_wanted_car_list[3] = CAMPER
current_wanted_car_list[4] = ADMIRAL
current_wanted_car_list[5] = PATRIOT
current_wanted_car_list[6] = SANCHEZ
current_wanted_car_list[7] = STRETCH
current_wanted_car_list[8] = FELTZER
current_wanted_car_list[9] = REMINGTN
ENDIF
IF current_wanted_list = 1
current_wanted_car_list[0] = CHEETAH
current_wanted_car_list[1] = RANCHER
current_wanted_car_list[2] = STALLION
current_wanted_car_list[3] = PETRO
current_wanted_car_list[4] = COMET
current_wanted_car_list[5] = SLAMVAN
current_wanted_car_list[6] = BLISTAC
current_wanted_car_list[7] = STAFFORD
current_wanted_car_list[8] = SABRE
current_wanted_car_list[9] = FCR900
ENDIF
IF current_wanted_list = 2
current_wanted_car_list[0] = BANSHEE
current_wanted_car_list[1] = SUPERGT
current_wanted_car_list[2] = JOURNEY
current_wanted_car_list[3] = HUNTLEY
current_wanted_car_list[4] = BFINJECT
current_wanted_car_list[5] = BLADE
current_wanted_car_list[6] = FREEWAY
current_wanted_car_list[7] = MESA
current_wanted_car_list[8] = ZR350
current_wanted_car_list[9] = EUROS
ENDIF
ENDIF
RETURN
store_last_crane_car:
IF DOES_OBJECT_EXIST magno_arm
GRAB_ENTITY_ON_ROPE_FOR_OBJECT magno_arm crane_car crane_ped crane_obj
IF NOT crane_car = -1
IF NOT last_crane_car = crane_car
last_crane_car = crane_car
ENDIF
ENDIF
ENDIF
RETURN
VAR_INT import_car_list_input
load_import_car_list:
temp_int = 0
WHILE temp_int < 6
current_import_car_list[temp_int] = -1
temp_int++
ENDWHILE
//GET_CURRENT_DAY_OF_WEEK temp_int
// sunday
SWITCH import_car_list_input
CASE 0
current_import_car_list[0] = unlocked_import_cars[0]
current_import_car_list[1] = unlocked_import_cars[7]
current_import_car_list[2] = unlocked_import_cars[14]
current_import_car_list[3] = unlocked_import_cars[21]
current_import_car_list[4] = unlocked_import_cars[28]
current_import_car_list[5] = unlocked_import_cars[35]
BREAK
// monday
CASE 1
current_import_car_list[0] = unlocked_import_cars[1]
current_import_car_list[1] = unlocked_import_cars[8]
current_import_car_list[2] = unlocked_import_cars[15]
current_import_car_list[3] = unlocked_import_cars[22]
current_import_car_list[4] = unlocked_import_cars[29]
current_import_car_list[5] = unlocked_import_cars[36]
BREAK
// tuesday
CASE 2
current_import_car_list[0] = unlocked_import_cars[2]
current_import_car_list[1] = unlocked_import_cars[9]
current_import_car_list[2] = unlocked_import_cars[16]
current_import_car_list[3] = unlocked_import_cars[23]
current_import_car_list[4] = unlocked_import_cars[30]
current_import_car_list[5] = unlocked_import_cars[37]
BREAK
// wednesday
CASE 3
current_import_car_list[0] = unlocked_import_cars[3]
current_import_car_list[1] = unlocked_import_cars[10]
current_import_car_list[2] = unlocked_import_cars[17]
current_import_car_list[3] = unlocked_import_cars[24]
current_import_car_list[4] = unlocked_import_cars[31]
current_import_car_list[5] = unlocked_import_cars[38]
BREAK
// thursday
CASE 4
current_import_car_list[0] = unlocked_import_cars[4]
current_import_car_list[1] = unlocked_import_cars[11]
current_import_car_list[2] = unlocked_import_cars[18]
current_import_car_list[3] = unlocked_import_cars[25]
current_import_car_list[4] = unlocked_import_cars[32]
current_import_car_list[5] = unlocked_import_cars[39]
BREAK
// friday
CASE 5
current_import_car_list[0] = unlocked_import_cars[5]
current_import_car_list[1] = unlocked_import_cars[12]
current_import_car_list[2] = unlocked_import_cars[19]
current_import_car_list[3] = unlocked_import_cars[26]
current_import_car_list[4] = unlocked_import_cars[33]
current_import_car_list[5] = unlocked_import_cars[40]
BREAK
// saturday
CASE 6
current_import_car_list[0] = unlocked_import_cars[6]
current_import_car_list[1] = unlocked_import_cars[13]
current_import_car_list[2] = unlocked_import_cars[20]
current_import_car_list[3] = unlocked_import_cars[27]
current_import_car_list[4] = unlocked_import_cars[34]
current_import_car_list[5] = unlocked_import_cars[41]
BREAK
ENDSWITCH
RETURN
//get_model_cost:
//
// temp_model = current_import_car_list[current_selection]
//
// current_vehicle_cost = 0
//
// SWITCH temp_model
// CASE CLUB
// current_vehicle_cost = 100
// BREAK
// CASE JESTER
// current_vehicle_cost = 100
// BREAK
// CASE BUFFALO
// current_vehicle_cost = 100
// BREAK
// CASE SENTINEL
// current_vehicle_cost = 100
// BREAK
// CASE INFERNUS
// current_vehicle_cost = 100
// BREAK
// CASE CAMPER
// current_vehicle_cost = 100
// BREAK
// CASE ADMIRAL
// current_vehicle_cost = 100
// BREAK
// CASE PATRIOT
// current_vehicle_cost = 100
// BREAK
// CASE SANCHEZ
// current_vehicle_cost = 100
// BREAK
// CASE STRETCH
// current_vehicle_cost = 100
// BREAK
// CASE FELTZER
// current_vehicle_cost = 100
// BREAK
// CASE REMINGTN
// current_vehicle_cost = 100
// BREAK
// CASE MONSTER
// current_vehicle_cost = 100
// BREAK
// CASE NRG500
// current_vehicle_cost = 100
// BREAK
// CASE WINDSOR
// current_vehicle_cost = 100
// BREAK
// CASE CHEETAH
// current_vehicle_cost = 100
// BREAK
// CASE RANCHER
// current_vehicle_cost = 100
// BREAK
// CASE STALLION
// current_vehicle_cost = 100
// BREAK
// CASE PETRO
// current_vehicle_cost = 100
// BREAK
// CASE COMET
// current_vehicle_cost = 100
// BREAK
// CASE SLAMVAN
// current_vehicle_cost = 100
// BREAK
// CASE BLISTAC
// current_vehicle_cost = 100
// BREAK
// CASE STAFFORD
// current_vehicle_cost = 100
// BREAK
// CASE SABRE
// current_vehicle_cost = 100
// BREAK
// CASE FCR900
// current_vehicle_cost = 100
// BREAK
// CASE EUROS
// current_vehicle_cost = 100
// BREAK
// CASE BANDITO
// current_vehicle_cost = 100
// BREAK
// CASE SUPERGT
// current_vehicle_cost = 100
// BREAK
// CASE BANSHEE
// current_vehicle_cost = 100
// BREAK
// CASE TURISMO
// current_vehicle_cost = 100
// BREAK
// CASE JOURNEY
// current_vehicle_cost = 100
// BREAK
// CASE HUNTLEY
// current_vehicle_cost = 100
// BREAK
// CASE BFINJECT
// current_vehicle_cost = 100
// BREAK
// CASE BLADE
// current_vehicle_cost = 100
// BREAK
// CASE FREEWAY
// current_vehicle_cost = 100
// BREAK
// CASE MESA
// current_vehicle_cost = 100
// BREAK
// CASE ZR350
// current_vehicle_cost = 100
// BREAK
// CASE HOTKNIFE
// current_vehicle_cost = 100
// BREAK
// CASE DUNERIDE
// current_vehicle_cost = 100
// BREAK
// CASE VORTEX
// current_vehicle_cost = 100
// BREAK
// CASE BULLET
// current_vehicle_cost = 100
// BREAK
// CASE PEREN
// current_vehicle_cost = 5
// BREAK
// ENDSWITCH
//
//
// //PRINT_WITH_NUMBER_NOW IE06 current_vehicle_cost 9999999 1 // vehicle price: $
//
//RETURN
add_car_to_players_imported_cars:
add_car_to_players_imported_cars_start:
temp_int = 0
WHILE temp_int < 5
IF imported_cars[temp_int] = -1
imported_cars[temp_int] = imported_car
temp_int = 10
ELSE
IF DOES_VEHICLE_EXIST imported_cars[temp_int]
IF IS_CAR_DEAD imported_cars[temp_int]
MARK_CAR_AS_NO_LONGER_NEEDED imported_cars[temp_int]
imported_cars[temp_int] = -1
GOTO add_car_to_players_imported_cars_start
ELSE
temp_int++
ENDIF
ELSE
MARK_CAR_AS_NO_LONGER_NEEDED imported_cars[temp_int]
imported_cars[temp_int] = -1
GOTO add_car_to_players_imported_cars_start
ENDIF
ENDIF
ENDWHILE
// if 5 are full - replace last one
IF temp_int = 5
MARK_CAR_AS_NO_LONGER_NEEDED imported_cars[4]
imported_cars[4] = -1
GOTO add_car_to_players_imported_cars_start
ENDIF
RETURN
trim_players_imported_cars:
temp_int = 0
WHILE temp_int < 5
IF NOT imported_cars[temp_int] = -1
IF DOES_VEHICLE_EXIST imported_cars[temp_int]
IF NOT IS_CAR_DEAD imported_cars[temp_int]
IF IS_PLAYER_PLAYING player1
IF NOT LOCATE_CHAR_ANY_MEANS_CAR_2D scplayer imported_cars[temp_int] 500.0 500.0 FALSE
MARK_CAR_AS_NO_LONGER_NEEDED imported_cars[temp_int]
imported_cars[temp_int] = -1
ENDIF
ENDIF
ELSE
MARK_CAR_AS_NO_LONGER_NEEDED imported_cars[temp_int]
imported_cars[temp_int] = -1
ENDIF
ELSE
MARK_CAR_AS_NO_LONGER_NEEDED imported_cars[temp_int]
imported_cars[temp_int] = -1
ENDIF
ENDIF
temp_int++
ENDWHILE
RETURN
impexp_update_car_gens:
// switch on / off car gens
temp_int = 0
WHILE temp_int < 10
IF current_wanted_list = 0
temp_int2 = temp_int + 0
ENDIF
IF current_wanted_list = 1
temp_int2 = temp_int + 10
ENDIF
IF current_wanted_list = 2
temp_int2 = temp_int + 20
ENDIF
IF current_wanted_car_status[temp_int] = 0
SWITCH_CAR_GENERATOR impexp_car_gen[temp_int2] 101
ELSE
SWITCH_CAR_GENERATOR impexp_car_gen[temp_int2] 0
ENDIF
temp_int++
ENDWHILE
RETURN
get_vehicle_text_label:
SWITCH temp_model
CASE CLUB
$impexp_text_label = &CLUB
BREAK
CASE JESTER
$impexp_text_label = &JESTER
BREAK
CASE BUFFALO
$impexp_text_label = &BUFFALO
BREAK
CASE SENTINEL
$impexp_text_label = &SENTINL
BREAK
CASE INFERNUS
$impexp_text_label = &INFERNU
BREAK
CASE CAMPER
$impexp_text_label = &CAMPER
BREAK
CASE ADMIRAL
$impexp_text_label = &ADMIRAL
BREAK
CASE PATRIOT
$impexp_text_label = &PATRIOT
BREAK
CASE SANCHEZ
$impexp_text_label = &SANCHEZ
BREAK
CASE STRETCH
$impexp_text_label = &STRETCH
BREAK
CASE FELTZER
$impexp_text_label = &FELTZER
BREAK
CASE REMINGTN
$impexp_text_label = &REMING
BREAK
CASE MONSTER
$impexp_text_label = &MONSTER
BREAK
CASE NRG500
$impexp_text_label = &NRG500
BREAK
CASE WINDSOR
$impexp_text_label = &WINDSOR
BREAK
CASE CHEETAH
$impexp_text_label = &CHEETAH
BREAK
CASE RANCHER
$impexp_text_label = &RANCHER
BREAK
CASE STALLION
$impexp_text_label = &STALION
BREAK
CASE PETRO
$impexp_text_label = &PETROL
BREAK
CASE COMET
$impexp_text_label = &COMET
BREAK
CASE SLAMVAN
$impexp_text_label = &SLAMVAN
BREAK
CASE BLISTAC
$impexp_text_label = &BLISTAC
BREAK
CASE STAFFORD
$impexp_text_label = &STAFFRD
BREAK
CASE SABRE
$impexp_text_label = &SABRE
BREAK
CASE FCR900
$impexp_text_label = &FCR900
BREAK
CASE EUROS
$impexp_text_label = &EUROS
BREAK
CASE BANDITO
$impexp_text_label = &BANDITO
BREAK
CASE SUPERGT
$impexp_text_label = &SUPERGT
BREAK
CASE BANSHEE
$impexp_text_label = &BANSHEE
BREAK
CASE TURISMO
$impexp_text_label = &TURISMO
BREAK
CASE JOURNEY
$impexp_text_label = &JOURNEY
BREAK
CASE HUNTLEY
$impexp_text_label = &HUNTLEY
BREAK
CASE BFINJECT
$impexp_text_label = &BFINJC
BREAK
CASE BLADE
$impexp_text_label = &BLADE
BREAK
CASE FREEWAY
$impexp_text_label = &FREEWAY
BREAK
CASE MESA
$impexp_text_label = &MESAA
BREAK
CASE ZR350
$impexp_text_label = &ZR350
BREAK
CASE HOTKNIFE
$impexp_text_label = &HOTKNIF
BREAK
CASE DUNERIDE
$impexp_text_label = &DUNE
BREAK
CASE VORTEX
$impexp_text_label = &VORTEX
BREAK
CASE BULLET
$impexp_text_label = &BULLET
BREAK
CASE PEREN
$impexp_text_label = &PEREN
BREAK
ENDSWITCH
RETURN
ie_create_custom_plates:
SWITCH current_import_car_list[impexp_selected_car]
CASE CLUB
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &N13_LLF_
BREAK
CASE EUROS
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_DS3MP__
BREAK
CASE SUPERGT
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_CMACD1_
BREAK
CASE WINDSOR
GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int
IF temp_int = 0
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &__C0S___
ENDIF
BREAK
CASE JESTER
GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int
IF temp_int = 1
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_X2_GAV_
ENDIF
IF temp_int = 2
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &__G3PO__
ENDIF
BREAK
CASE SENTINEL
GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int
IF temp_int = 0
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &D0N_D0N_
ENDIF
IF temp_int = 1
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_D0_NNY_
ENDIF
IF temp_int = 2
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &TH3_D0N_
ENDIF
BREAK
CASE CAMPER
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &SJM1985
BREAK
CASE FELTZER
GENERATE_RANDOM_INT_IN_RANGE 0 5 temp_int
IF temp_int = 1
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &433_ADF_
ENDIF
IF temp_int = 2
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &DR_F_MBE
ENDIF
IF temp_int = 3
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &ANN_F3RG
ENDIF
BREAK
CASE SABRE
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &__FR4Z__
BREAK
CASE CHEETAH
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_IMY_AK_
BREAK
CASE COMET
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_L0LLY__
BREAK
CASE INFERNUS
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_J_L33S_
BREAK
CASE RANCHER
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &S4_LIJON
BREAK
CASE BLISTAC
GENERATE_RANDOM_INT_IN_RANGE 0 2 temp_int
IF temp_int = 0
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &DI5CO5TU
ELSE
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &SM53_NUV
ENDIF
BREAK
CASE BANSHEE
GENERATE_RANDOM_INT_IN_RANGE 0 3 temp_int
IF temp_int = 0
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &J3NYTAL5
ENDIF
IF temp_int = 1
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_J3_NCF_
ENDIF
IF temp_int = 2
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &DD0_N4LD
ENDIF
BREAK
CASE BFINJECT
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &LA5H_L3Y
BREAK
CASE PATRIOT
GENERATE_RANDOM_INT_IN_RANGE 0 4 temp_int
IF temp_int = 0
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &AL3X_RES
ENDIF
IF temp_int = 1
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &R_F3RG1E
ENDIF
IF temp_int = 2
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &H4_NNAHF
ENDIF
IF temp_int = 3
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &CL41_RES
ENDIF
BREAK
CASE BLADE
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &R055_MCL
BREAK
CASE BULLET
GENERATE_RANDOM_INT_IN_RANGE 0 4 temp_int
IF temp_int = 0
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &T00_FAST
ENDIF
BREAK
DEFAULT
GOSUB ie_random_custom_plate
BREAK
ENDSWITCH
RETURN
ie_random_custom_plate:
GENERATE_RANDOM_INT_IN_RANGE 0 100 temp_int
SWITCH temp_int
CASE 0
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &R4N_G3RS
BREAK
CASE 1
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &GL4S_G0W
BREAK
CASE 2
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_ARRAN__
BREAK
CASE 3
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &AM0_RUS0
BREAK
CASE 4
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_AMAT0__
BREAK
CASE 5
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &_GA_ZZA_
BREAK
CASE 6
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &ZID_ANE_
BREAK
CASE 7
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &MC_C01ST
BREAK
CASE 8
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &BAW_BAG_
BREAK
CASE 9
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &BR0_D1E_
BREAK
CASE 10
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &MR_J0BBY
BREAK
CASE 11
CUSTOM_PLATE_FOR_NEXT_CAR current_import_car_list[impexp_selected_car] &BR0_DICK
BREAK
ENDSWITCH
RETURN
}
{
impexp_car_check:
SCRIPT_NAME IMPEXPC
LVAR_INT impexp_help
LVAR_INT temp_model
LVAR_INT temp_int
LVAR_INT temp_int2
impexp_car_check_loop:
WAIT 5000
IF IS_PLAYER_PLAYING player1
IF flag_player_on_mission = 0
IF import_export_is_active = 1
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
AND NOT IS_MESSAGE_BEING_DISPLAYED
IF IS_CHAR_IN_ANY_CAR scplayer
IF impexp_help = 0
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car
GET_CAR_MODEL car temp_model
// check if car is on wanted list
temp_int = 0
temp_int2 = 0
WHILE temp_int < 10
IF current_wanted_car_list[temp_int] = temp_model
IF current_wanted_car_status[temp_int] = 0
temp_int2 = 1
temp_int = 10
ENDIF
ENDIF
temp_int++
ENDWHILE
IF temp_int2 = 1
PRINT_HELP IE22
impexp_help = 1
ENDIF
ENDIF
ELSE
IF impexp_help = 1
impexp_help = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
GOTO impexp_car_check_loop
}
MISSION_START
SCRIPT_NAME APCHECK
/*********************************************
GLOBAL VARIABLES
**********************************************/
VAR_INT iAPgateSF1 iAPgateSF2 iAPgateSF1b iAPgateSF2b iAPgateLA1 iAPgateLA2 iAPgateLV1 iAPgateLV2
VAR_INT iFlagOpenAirportGates
// LOCATE CONSTANTS
CONST_FLOAT LAx 1968.697
CONST_FLOAT LAy -2189.776
CONST_FLOAT LAz 13.553
CONST_FLOAT SFx -1540.66
CONST_FLOAT SFy -435.786
CONST_FLOAT SFz 6.039
CONST_FLOAT SFbx -1226.1616
CONST_FLOAT SFby 65.3807
CONST_FLOAT SFbz 13.0375
CONST_FLOAT LVx 1703.4
CONST_FLOAT LVy 1600.518
CONST_FLOAT LVz 10.058
/*********************************************
AIRPORT GATES INIT
**********************************************/
//--- Set the deatharrest OFF since we are doing a loop in this script
SET_DEATHARREST_STATE OFF
//--- This is initialised as false, but missions can change it
iFlagOpenAirportGates = 0
//--- San Fierro Airport
CREATE_OBJECT_NO_OFFSET ws_apgate -1543.742 -432.703 6.039 iAPgateSF1
SET_OBJECT_HEADING iAPgateSF1 -45.0
DONT_REMOVE_OBJECT iAPgateSF1
CREATE_OBJECT_NO_OFFSET ws_apgate -1547.625 -428.82 6.039 iAPgateSF2
SET_OBJECT_HEADING iAPgateSF2 -45.0
DONT_REMOVE_OBJECT iAPgateSF2
CREATE_OBJECT_NO_OFFSET ws_apgate -1222.953 53.826 14.134 iAPgateSF1b
SET_OBJECT_HEADING iAPgateSF1b -135.0
DONT_REMOVE_OBJECT iAPgateSF1b
CREATE_OBJECT_NO_OFFSET ws_apgate -1218.206 68.883 14.134 iAPgateSF2b
SET_OBJECT_HEADING iAPgateSF2b -135.0
DONT_REMOVE_OBJECT iAPgateSF2b
//--- Los Santos Airport
CREATE_OBJECT_NO_OFFSET ws_apgate 1964.342 -2189.776 13.533 iAPgateLA1
SET_OBJECT_HEADING iAPgateLA1 180.0
DONT_REMOVE_OBJECT iAPgateLA1
CREATE_OBJECT_NO_OFFSET ws_apgate 1958.851 -2189.777 13.553 iAPgateLA2
SET_OBJECT_HEADING iAPgateLA2 180.0
DONT_REMOVE_OBJECT iAPgateLA2
//--- Vegas Airport
CREATE_OBJECT_NO_OFFSET ws_apgate 1704.777 1605.165 10.058 iAPgateLV1
SET_OBJECT_HEADING iAPgateLV1 73.0
DONT_REMOVE_OBJECT iAPgateLV1
CREATE_OBJECT_NO_OFFSET ws_apgate 1706.364 1610.422 10.058 iAPgateLV2
SET_OBJECT_HEADING iAPgateLV2 73.0
DONT_REMOVE_OBJECT iAPgateLV2
/*********************************************
AIRPORT SECURITY MEMORY RESIDENT MAIN
**********************************************/
AP_PlayerCheck_Loop:
WAIT 0
IF IS_PLAYER_PLAYING PLAYER1
IF LOCATE_CHAR_ANY_MEANS_3D scplayer SFx SFy SFz 65.0 65.0 10.0 FALSE
IF flag_is_farlie3_running = 1
//--- If Kevin W. mission is running the airport has been raided...
iFlagOpenAirportGates = 1 // Mark the gates as open
START_NEW_SCRIPT Airport_Guard -1 // The ped is dead and outside the door
SET_OBJECT_COORDINATES iAPgateSF1 -1540.66 -435.786 6.039
SET_OBJECT_COORDINATES iAPgateSF2 -1550.709 -425.736 6.039
ELSE
//--- The airport operates as normal
START_NEW_SCRIPT Airport_Guard 1
START_NEW_SCRIPT Airport_Gate iAPgateSF1 -1540.66 -435.786 6.039
START_NEW_SCRIPT Airport_Gate iAPgateSF2 -1550.709 -425.736 6.039
ENDIF
GOTO AP_PlayerCheck_WaitSF
ENDIF
IF LOCATE_CHAR_ANY_MEANS_3D scplayer LAx LAy LAz 65.0 65.0 10.0 FALSE
START_NEW_SCRIPT Airport_Guard 2
START_NEW_SCRIPT Airport_Gate iAPgateLA1 1968.697 -2189.776 13.553
START_NEW_SCRIPT Airport_Gate iAPgateLA2 1954.571 -2189.777 13.553
GOTO AP_PlayerCheck_WaitLA
ENDIF
IF LOCATE_CHAR_ANY_MEANS_3D scplayer LVx LVy LVz 65.0 65.0 10.0 FALSE
START_NEW_SCRIPT Airport_Guard 3
START_NEW_SCRIPT Airport_Gate iAPgateLV1 1703.4 1600.518 10.058
START_NEW_SCRIPT Airport_Gate iAPgateLV2 1707.722 1614.937 10.058
GOTO AP_PlayerCheck_WaitLV
ENDIF
IF LOCATE_CHAR_ANY_MEANS_3D scplayer SFbx SFby SFbz 65.0 65.0 10.0 FALSE
START_NEW_SCRIPT Airport_Guard 4
START_NEW_SCRIPT Airport_Gate iAPgateSF1b -1226.59 50.189 14.134
START_NEW_SCRIPT Airport_Gate iAPgateSF2b -1214.392 72.697 14.134
GOTO AP_PlayerCheck_WaitSFb
ENDIF
ELSE
//--- Player not playing. Reset everything.
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateSF1 -1543.742 -432.703 6.039
SET_OBJECT_COORDINATES iAPgateSF2 -1547.625 -428.82 6.039
SET_OBJECT_COORDINATES iAPgateSF1b -1222.953 53.826 14.134
SET_OBJECT_COORDINATES iAPgateSF2b -1218.206 68.883 14.134
SET_OBJECT_COORDINATES iAPgateLA1 1964.342 -2189.776 13.533
SET_OBJECT_COORDINATES iAPgateLA2 1958.851 -2189.777 13.553
SET_OBJECT_COORDINATES iAPgateLV1 1704.777 1605.165 10.058
SET_OBJECT_COORDINATES iAPgateLV2 1706.364 1610.422 10.058
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
GOTO AP_PlayerCheck_Loop
/*********************************************
WAIT SF
**********************************************/
AP_PlayerCheck_WaitSF:
WAIT 0
IF IS_PLAYER_PLAYING PLAYER1
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer SFx SFy SFz 66.0 66.0 10.0 FALSE
//--- RESET THE GATES
IF flag_player_on_mission = 0
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateSF1 -1543.742 -432.703 6.039
SET_OBJECT_COORDINATES iAPgateSF2 -1547.625 -428.82 6.039
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
ENDIF
ELSE
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateSF1 -1543.742 -432.703 6.039
SET_OBJECT_COORDINATES iAPgateSF2 -1547.625 -428.82 6.039
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
GOTO AP_PlayerCheck_WaitSF
/*********************************************
WAIT SFb
**********************************************/
AP_PlayerCheck_WaitSFb:
WAIT 0
IF IS_PLAYER_PLAYING PLAYER1
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer SFbx SFby SFbz 66.0 66.0 10.0 FALSE
//--- RESET THE GATES
IF flag_player_on_mission = 0
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateSF1b -1222.953 53.826 14.134
SET_OBJECT_COORDINATES iAPgateSF2b -1218.206 68.883 14.134
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
ENDIF
ELSE
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateSF1b -1222.953 53.826 14.134
SET_OBJECT_COORDINATES iAPgateSF2b -1218.206 68.883 14.134
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
GOTO AP_PlayerCheck_WaitSFb
/*********************************************
WAIT LA
**********************************************/
AP_PlayerCheck_WaitLA:
WAIT 0
IF IS_PLAYER_PLAYING PLAYER1
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer LAx LAy LAz 66.0 66.0 10.0 FALSE
//--- RESET THE GATES
IF flag_player_on_mission = 0
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateLA1 1964.342 -2189.776 13.533
SET_OBJECT_COORDINATES iAPgateLA2 1958.851 -2189.777 13.553
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
ENDIF
ELSE
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateLA1 1964.342 -2189.776 13.533
SET_OBJECT_COORDINATES iAPgateLA2 1958.851 -2189.777 13.553
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
GOTO AP_PlayerCheck_WaitLA
/*********************************************
WAIT VEGAS
**********************************************/
AP_PlayerCheck_WaitLV:
WAIT 0
IF IS_PLAYER_PLAYING PLAYER1
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer LVx LVy LVz 66.0 66.0 10.0 FALSE
//--- RESET THE GATES
IF flag_player_on_mission = 0
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateLV1 1704.777 1605.165 10.058
SET_OBJECT_COORDINATES iAPgateLV2 1706.364 1610.422 10.058
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
ENDIF
ELSE
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME APGATE
SET_OBJECT_COORDINATES iAPgateLV1 1704.777 1605.165 10.058
SET_OBJECT_COORDINATES iAPgateLV2 1706.364 1610.422 10.058
iFlagOpenAirportGates = 0
GOTO AP_PlayerCheck_Loop
ENDIF
GOTO AP_PlayerCheck_WaitLV
MISSION_END
/*****************************************************************************************************************************************
*********************************************** AIRPORT SECURITY *******************************************************************
*****************************************************************************************************************************************/
{
Airport_Guard:
SCRIPT_NAME APGUARD
//--- PARAMETERS
LVAR_INT iZoneIn // If this is -1 this ped is dead in SF
//--- VARS
LVAR_INT iAPguard iTemp iHasSpoken
//--- VAR init
iHasSpoken = 0
//--- Steraming Request Loop
WHILE NOT HAS_MODEL_LOADED WMYSGRD
REQUEST_MODEL WMYSGRD
WAIT 0
ENDWHILE
//--- Find Out the current zone we are in
SWITCH iZoneIn
CASE -1
//--- Init the guy as dead
CREATE_CHAR PEDTYPE_CIVMALE WMYSGRD -1544.8795 -441.1089 5.0068 iAPguard
SET_CHAR_HEADING iAPguard 7.3631
SET_CHAR_MONEY iAPguard 0
DONT_REMOVE_CHAR iAPguard
TASK_DEAD iAPguard
BREAK
CASE 1
//--- Init the guy according to the current zone
CREATE_CHAR PEDTYPE_CIVMALE WMYSGRD -1544.3962 -443.2464 5.045 iAPguard
SET_CHAR_HEADING iAPguard 54.6458
BREAK
CASE 2
//--- Init the guy according to the current zone
CREATE_CHAR PEDTYPE_CIVMALE WMYSGRD 1955.8087 -2181.5405 12.5865 iAPguard
SET_CHAR_HEADING iAPguard 272.1978
BREAK
CASE 3
//--- Init the guy according to the current zone
CREATE_CHAR PEDTYPE_CIVMALE WMYSGRD 1717.2017 1617.3760 9.1924 iAPguard
SET_CHAR_HEADING iAPguard 186.0379
BREAK
CASE 4
//--- Init the guy according to the current zone
CREATE_CHAR PEDTYPE_CIVMALE WMYSGRD -1229.4380 55.3906 13.2328 iAPguard
SET_CHAR_HEADING iAPguard 301.4596
BREAK
ENDSWITCH
//--- Set Up the Decision Maker for this guy (considering he is trapped inside a hut!)
SET_CHAR_DECISION_MAKER iAPguard DM_PED_INDOORS
SET_CHAR_ONLY_DAMAGED_BY_PLAYER iAPguard TRUE
DONT_REMOVE_CHAR iAPguard
//--- Main Loop
Airport_Guard_LoopCheck:
WAIT 0
IF IS_PLAYER_PLAYING PLAYER1
IF NOT IS_CHAR_DEAD iAPguard
//--- Check if it's time to clear up
IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer iAPguard 67.0 67.0 10.0 FALSE
GOSUB Airport_Guard_CleanUp
ENDIF
//--- If player is near the guy
IF NOT IS_CHAR_DEAD iAPguard
IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer iAPguard 15.0 15.0 15.0 FALSE
GOSUB Airport_Guard_SpeakIfNeeded
ENDIF
ENDIF
//--- If player has hit the guy
IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR iAPguard scplayer
SET_CHAR_RELATIONSHIP iAPguard ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_PLAYER1
ENDIF
ELSE
GOSUB Airport_Guard_CleanUp
ENDIF
ELSE
GOSUB Airport_Guard_CleanUp
ENDIF
GOTO Airport_Guard_LoopCheck
//--- End Of Main
/*******************************************
SPEAK IF NEEDED
********************************************/
Airport_Guard_SpeakIfNeeded:
IF LOCATE_CHAR_ANY_MEANS_CHAR_3D scplayer iAPguard 5.0 5.0 3.0 FALSE
GET_INT_STAT FLYING_SKILL iTemp
IF NOT IS_CHAR_RESPONDING_TO_EVENT iAPguard EVENT_ACQUAINTANCE_PED_HATE
AND iTemp >= FLYING_SKILL_REQUIRED_FOR_PILOT_LICENCE
IF iHasSpoken = 0
//--- You have the skill
GENERATE_RANDOM_INT_IN_RANGE 1 100 iHasSpoken
IF iHasSpoken > 50
$audio_string = &G_OPEN1
audio_sound_file = SOUND_G_OPEN1
ELSE
$audio_string = &G_OPEN2
audio_sound_file = SOUND_G_OPEN2
ENDIF
START_NEW_SCRIPT audio_line iAPguard 1 1 2 0 //They�ll give a pilot license to anybody these days!
iHasSpoken = 1
RETURN
ENDIF
ELSE
IF iHasSpoken = 0
//--- You DO NOT have the skill
GENERATE_RANDOM_INT_IN_RANGE 1 100 iHasSpoken
IF iHasSpoken > 50
$audio_string = &G_CLOS1
audio_sound_file = SOUND_G_CLOS1
ELSE
$audio_string = &G_CLOS2
audio_sound_file = SOUND_G_CLOS2
ENDIF
START_NEW_SCRIPT audio_line iAPguard 1 1 2 0 //This area is restricted to pilots only!
iHasSpoken = 1
RETURN
ENDIF
ENDIF
ENDIF
RETURN
/*******************************************
CLEAN UP GUARD
********************************************/
Airport_Guard_CleanUp:
IF IS_PLAYER_PLAYING PLAYER1
IF flag_player_on_mission = 0 // Don't do anything if the player is playing a mission - it might use this happy chap
DELETE_CHAR iAPguard
MARK_MODEL_AS_NO_LONGER_NEEDED WMYSGRD
TERMINATE_THIS_SCRIPT
ENDIF
ELSE
DELETE_CHAR iAPguard
MARK_MODEL_AS_NO_LONGER_NEEDED WMYSGRD
TERMINATE_THIS_SCRIPT
ENDIF
RETURN
}
/*****************************************************************************************************************************************
************************************************ AIRPORT GATE **********************************************************************
*****************************************************************************************************************************************/
{
Airport_Gate:
SCRIPT_NAME APGATE
//--- PARAMETERS
LVAR_INT this_gate
LVAR_FLOAT fAP_targetX fAP_targetY fAP_targetZ
//--- VARS
LVAR_INT iTemp iGateState iSubStateStatus // State Machine variables
LVAR_INT iAPguard iDM iSoundIdx iFlyingSkill
LVAR_FLOAT fX[3] fY[3] fZ[3]
iGateState = 0
iSubStateStatus = 0
iTemp = 0
//--- Parameter Passing Fudge
IF iTemp > 0
CREATE_OBJECT_NO_OFFSET Ws_apgate 0.0 0.0 0.0 this_gate
ENDIF
//---MAIN LOOP---
Airport_Gate_Main_Loop:
WAIT 0
//--- Do all the checks and then run the state machine
IF DOES_OBJECT_EXIST this_gate
AND IS_PLAYER_PLAYING PLAYER1
GOSUB Airport_Gate_State_Machine
ENDIF
GOTO Airport_Gate_Main_Loop
//---END OF MAIN LOOP---
/********************************************
STATE MACHINE
********************************************/
Airport_Gate_State_Machine:
SWITCH iGateState
CASE 0 //---STATE 1:
GOSUB GateState0
BREAK
ENDSWITCH
RETURN
/********************************************
STATE 0
********************************************/
GateState0:
SWITCH iSubStateStatus
CASE 0
GET_INT_STAT FLYING_SKILL iFlyingSkill
IF iFlyingSkill >= FLYING_SKILL_REQUIRED_FOR_PILOT_LICENCE
//--- Player has the pilot licence, open the gate
IF LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer this_gate 10.0 10.0 FALSE
GET_OBJECT_COORDINATES this_gate fX[0] fY[0] fZ[0]
IF HAS_MISSION_AUDIO_LOADED 3
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT this_gate SOUND_MESH_GATE_OPEN_START
ENDIF
++iSubStateStatus
ENDIF
ELSE
//-- No pilot licence
IF iFlagOpenAirportGates > 0
//--- If the gates are ordered to open by an external entity
IF LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer this_gate 10.0 10.0 FALSE
GET_OBJECT_COORDINATES this_gate fX[0] fY[0] fZ[0]
IF HAS_MISSION_AUDIO_LOADED 3
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT this_gate SOUND_MESH_GATE_OPEN_START
ENDIF
++iSubStateStatus
ENDIF
ELSE // GATES SHOULD STAY CLOSED
//--- Check if the player is stuck on the other side
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS this_gate 0.0 5.2 0.0 fX[0] fY[0] fZ[0]
IF LOCATE_CHAR_ANY_MEANS_3D scplayer fX[0] fY[0] fZ[0] 4.5 4.5 4.5 FALSE
//--- Player SOMEHOW has ended on the other side, so the gate must open anyway
GET_OBJECT_COORDINATES this_gate fX[0] fY[0] fZ[0]
IF HAS_MISSION_AUDIO_LOADED 3
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT this_gate SOUND_MESH_GATE_OPEN_START
ENDIF
++iSubStateStatus
ELSE
//--- Check if we need to print help
GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS this_gate 0.0 -3.0 0.0 fX[0] fY[0] fZ[0]
IF LOCATE_CHAR_ANY_MEANS_3D scplayer fX[0] fY[0] fZ[0] 3.0 3.0 3.0 FALSE
AND iFlyingSkill < FLYING_SKILL_REQUIRED_FOR_PILOT_LICENCE
AND NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED AP_0003
PRINT_HELP AP_0003 // help text directing player to pilot school
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE 1
GOSUB Airport_Gate_GetSlideStepsForHeading // Returns fX[2],fY[2],fZ[2]
IF SLIDE_OBJECT this_gate fAP_targetX fAP_targetY fAP_targetZ fX[2] fY[2] fZ[2] TRUE
//--- Is this a collision or has the object reached the target?
IF LOCATE_OBJECT_3D this_gate fAP_targetX fAP_targetY fAP_targetZ 0.1 0.1 0.1 FALSE
//--- Target reached
SET_OBJECT_COORDINATES this_gate fAP_targetX fAP_targetY fAP_targetZ
IF HAS_MISSION_AUDIO_LOADED 3
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT this_gate SOUND_MESH_GATE_OPEN_STOP
ENDIF
++iSubStateStatus
ENDIF
ENDIF
BREAK
CASE 2
//--- Now see if the player has moved past the gate
IF NOT LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer this_gate 20.0 20.0 FALSE
//-- YES, start closing it
GET_OBJECT_COORDINATES this_gate fX[1] fY[1] fZ[1]
IF HAS_MISSION_AUDIO_LOADED 3
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT this_gate SOUND_MESH_GATE_OPEN_START
ENDIF
++iSubStateStatus
ENDIF
BREAK
CASE 3
GOSUB Airport_Gate_GetSlideStepsForHeading // Returns fX[2],fY[2],fZ[2]
IF SLIDE_OBJECT this_gate fX[0] fY[0] fZ[0] fX[2] fY[2] fZ[2] TRUE
//--- Is this a collision or has the object reached the target?
IF LOCATE_OBJECT_3D this_gate fX[0] fY[0] fZ[0] 0.1 0.1 0.1 FALSE
//--- Target reached
SET_OBJECT_COORDINATES this_gate fX[0] fY[0] fZ[0]
IF HAS_MISSION_AUDIO_LOADED 3
REPORT_MISSION_AUDIO_EVENT_AT_OBJECT this_gate SOUND_MESH_GATE_OPEN_STOP
ENDIF
//--- Loop from SubState 0
iSubStateStatus = 0
ENDIF
ENDIF
BREAK
ENDSWITCH
RETURN
/********************************************
GET SLIDE STEPS FOR GATE'S HEADING
********************************************/
Airport_Gate_GetSlideStepsForHeading:
GET_OBJECT_HEADING this_gate fX[2]
IF fX[2] > 70.0
AND fX[2] < 75.0
fX[2] = 0.03
fY[2] = 0.1
fZ[2] = 0.1
ELSE
fX[2] = 0.1
fY[2] = 0.1
fZ[2] = 0.1
ENDIF
RETURN
}
MISSION_START
SCRIPT_NAME GFINIT
/*********************************************************************************************************************************************
************************************************ **********************************************************************
*********************************************** GIRLFRIENDS INIT **********************************************************************
************************************************ **********************************************************************
**********************************************************************************************************************************************/
// for the achievement NOT_A_PLAYER
VAR_INT iGFGoneOnDate[6]
iGFGoneOnDate[0]=0
iGFGoneOnDate[1]=0
iGFGoneOnDate[2]=0
iGFGoneOnDate[3]=0
iGFGoneOnDate[4]=0
iGFGoneOnDate[5]=0
/* N.B. ALL THESE ARE NOW IN MAIN.SC
VAR_INT iGFSelfRespect[6] iGFLikesPlayer[6] iGFDesiredSexAppeal[6] iGFLikesPlayerTraits[6] // GF STATS
VAR_INT iGFLikesOnDate[6] iGFDiaryOfBusyHours[6] // MORE GF STATS
VAR_INT iGFidx //GF index for the arrays above, obviously no greater than 5
VAR_INT iDateReport iAgentFlags iPhoneState iCaller
VAR_INT iGFBonusPickupID[4] iGFHomeBlips[6]
VAR_TEXT_LABEL txtCurrZone // Zone string used a bit everywhere
VAR_INT iActiveGF // Public Bitfield to record active GFs.
BITS: 0 GANG GIRL (Coochie Robinson)
1 MECHANIC (Michelle Cannes)
2 GUN NUT (Kylie Goodpoke)
3 COP (Barbara Schternvart)
4 NURSE (Suzie Nookie)
5 CROUPIER (Millie)
//--- the values below are calculated. Do not push them around.
10 COOCHIE_NOT_AT_HOME
11 MICHELLE_NOT_AT_HOME
12 KYLIE_NOT_AT_HOME
13 BARBARA_NOT_AT_HOME
14 SUZIE_NOT_AT_HOME
15 MILLIE_NOT_AT_HOME
21 MICHELLE_BONUS_ACTIVE
22 KYLIE_BONUS_ACTIVE
23 BARBARA_BONUS_ACTIVE
24 SUZIE_BONUS_ACTIVE
//--- CAR flags
25 CAR_COOCHIE_UNLOCKED_HELP
26 CAR_MICHELLE_UNLOCKED_HELP
27 CAR_KYLIE_UNLOCKED_HELP
28 CAR_BARBARA_UNLOCKED_HELP
29 CAR_SUZIE_UNLOCKED_HELP
30 CAR_MILLIE_UNLOCKED_HELP
//--- cheat mode
31 GF_CHEAT_MODE_ON
*/
//--------------------------------------------CONSTANTS-------------------------------------------
//--- AGENT'S TIME STEPS
CONST_INT GF_TIME_STEP_SLOW 500 // In milliseconds, how long to wait before looping again
CONST_INT GF_TIME_STEP_MEDIUM 250 // In milliseconds
CONST_INT GF_TIME_STEP_FAST 0 // This should always be ZERO = 1 frame
//--- AGENT'S SUPER STATES
CONST_INT GF_IDLE_TRY_TO_LOCATE_PLAYER 0
CONST_INT GF_LAUNCH_DATE_OR_SEX 1
CONST_INT GF_WRAP_UP_AND_UPDATE 2
CONST_INT GF_MEETING_WAIT 3
CONST_INT GF_START_DATE_WAIT 4
//--- MORE DATE REPORT CONSTS...
CONST_INT DATE_WAS_ABORTED 8
CONST_INT PLAYER_TWO_TIMING 22
CONST_INT CHEAT_TWO_TIMING 25
//--- MORE AGENT FLAG CONSTS...
CONST_INT GF_CAR_GENERATOR_ON 26
//--- MORE ACTTIVE GF FLAGS.... CAR FLAGS
CONST_INT CAR_COOCHIE_UNLOCKED_HELP 25
CONST_INT CAR_MICHELLE_UNLOCKED_HELP 26
CONST_INT CAR_KYLIE_UNLOCKED_HELP 27
CONST_INT CAR_BARBARA_UNLOCKED_HELP 28
CONST_INT CAR_SUZIE_UNLOCKED_HELP 29
CONST_INT CAR_MILLIE_UNLOCKED_HELP 30
//--- STATS: ADDITIONS AND DEDUCTIONS
CONST_INT GF_LIKES_PLAYER_INCREMENT 5
CONST_INT GF_LIKES_PLAYER_INCREMENT_MEETING 15
CONST_INT GF_LIKES_PLAYER_DECREMENT 5
CONST_INT GF_LIKES_PLAYER_DECREMENT_MISS_DATE 3
CONST_INT GF_LIKES_PLAYER_DECREMENT_NO_ANSWER 2
CONST_INT GF_LIKES_PLAYER_DECREMENT_BEATEN_UP 10
CONST_INT GF_LIKES_PLAYER_DECREMENT_TWOTIMING 4
CONST_INT GF_LIKES_PLAYER_DECREMENT_DATE_ABORT 1
//--- FUN: ADDITIONS AND DEDUCTIONS
CONST_FLOAT GF_FUN_INCREMENT_SMALL 0.5
CONST_FLOAT GF_FUN_INCREMENT_MEDIUM 1.5
CONST_FLOAT GF_FUN_INCREMENT_BIG 4.0
CONST_FLOAT GF_FUN_DECREMENT_SMALL 0.5
CONST_FLOAT GF_FUN_DECREMENT_MEDIUM 1.0
CONST_FLOAT GF_FUN_DECREMENT_BIG 2.5
//--- STAT LIMITS
CONST_INT GF_LIKES_PLAYER_LOW_LIMIT -15
CONST_INT GF_HATES_PLAYER -100
CONST_INT GF_IS_DEAD -999
CONST_INT GF_DUMP_PLAYER_IMMEDIATELY -99
//--- LIKE PLAYER STAGES
CONST_INT GF_LIKES_PLAYER_STAGE1 30 // Dates get more variety other than EAT_OUT
CONST_INT GF_LIKES_PLAYER_STAGE2 50 // Girl's car is unlocked, player can drive it
CONST_INT GF_LIKES_PLAYER_STAGE3 100 // Player is awarded a unique set of clothes
//--- TIMER CHECKS & LIMITS
CONST_INT GF_TIME_STOPPED_CONSIDERED_PARKING 10000 // Counted while the car is standing still
CONST_INT GF_TIME_FOR_RANDOM_SPEECH 25000 // Counted while the car is driving
CONST_INT GF_TIME_BEFORE_TRIGGERING_TWOTIME 7000 // Counted after an event if idle in car or on foot
CONST_INT GF_TIME_BEFORE_ESCAPED_TWOTIME 20000 // Counted from when the player has distanced the GF
CONST_INT GF_TIME_MAX_BEFORE_BORED_WARNING 120000 // The max time before the bored warning is issued
CONST_INT GF_TIME_MAX_BORED_WARNING_OUT_OF_TOWN 240000 // Version of above for dates originating out of town
CONST_INT GF_TIME_BEFORE_BORED_END_OF_DATE 180000 // The max time the girl can spend while doing nothing
CONST_INT GF_TIME_BORED_END_OF_DATE_OUT_OF_TOWN 300000 // Version of above for dates originating out of town
CONST_INT GF_TIME_BEFORE_BORED_FLEE_PLAYER 360000 // Max time after asking to be taken home before she runs
CONST_INT GF_TIME_BEFORE_START_FUN_CHECKS 30000 // First few seconds free for the player to sort himself
CONST_INT GF_TIME_BEFORE_AREA_COMMENTS 30000 // When a girl can start commenting on areas, on any date
CONST_INT GF_EARLIEST_MINUTE_FOR_MOBILE_CHECK 5 // 'Appointment missed' check is done between this and 0
//--- COUNTERS OF THINGS
CONST_INT GF_AMMO_IN_UZI 60 // Counted during a date, when empty she had enough
//--- SPEECH MANAGER STATES
CONST_INT GF_SPEECH_FREE 0
CONST_INT GF_SPEECH_ENABLE_AI 1
CONST_INT GF_SPEECH_DISABLE_AI 2
CONST_INT GF_SPEECH_REQUEST 3
CONST_INT GF_SPEECH_DISABLE_AI_AND_SPEAK 4
CONST_INT GF_SPEECH_ENABLE_AI_WHEN_SILENT 5
CONST_INT GF_SPEECH_REQUEST_FOR_PLAYER 6
CONST_INT GF_SPEECH_SPECIAL_TT_CONTEXT 7
//--- MUTE GF SPEECH CONTEXTS
CONST_INT GF_CONTEXT_JUSTPLAYER -2
//--- TWO-TIMING STATES
CONST_INT GF_TT_INIT 0
CONST_INT GF_TT_REQUESTS 1
CONST_INT GF_TT_CREATE_CAR 2
CONST_INT GF_TT_CUT1_START 3
CONST_INT GF_TT_CUT1_END 4
CONST_INT GF_TT_INTERCEPT_PLAYER 5
CONST_INT GF_TT_CHECK_PLAYER_POSITION 6
CONST_INT GF_TT_VERIFY_PLAYER_LOST 7
CONST_INT GF_TT_REACHED_PLAYER 8
CONST_INT GF_TT_CUT2_START 9
CONST_INT GF_TT_CUT2_MIDDLE 10
CONST_INT GF_TT_CUT2_END 11
CONST_INT GF_TT_END 12
CONST_INT GF_TT_END_WRAP_UP 13
CONST_INT GF_TT_EMERGENCY_END 99
CONST_INT GF_TT_DO_NOT_RUN -1
//--- INTEGER LIMITS THAT VALUES CAN REACH
CONST_INT GF_ALLOWED_HEALTH_LOSS_BY_PLAYER 498
CONST_INT GF_HEALTH_LIMIT_FOR_DEATH 10
CONST_INT GF_CAR_DAMAGE_LIMIT_FOR_END_DATE 0 // REMEMBER TO SET THIS EVENTUALLY!!!
CONST_INT GF_DANCE_SCORE_REQUIRED 2500
CONST_INT GF_SPECIAL_CLOTHES_APPEAL_INCREASE 25
CONST_INT GF_CHANCE_TWOTIMING_PERCENT 50 // Chance of getting caught two-timing, out of 100
//--- FLOAT LIMITS THAT VALUES CAN REACH
CONST_FLOAT GF_KISS_2_SELFRESPECT_DIVIDER 1.2 // It's a division so cannot be zero
CONST_FLOAT GF_PROXIMITY_OF_PEDS_AS_PUBLIC 20.0
CONST_FLOAT GF_FAST_CAR_SPEED 22.0
CONST_FLOAT GF_CRUISE_CAR_SPEED_LOW 5.0
CONST_FLOAT GF_CRUISE_CAR_SPEED_FAST 42.0
//--- MISC
CONST_INT GF_BARN_DOOR 6
//------------------------------------GIRLFRIEND RESPECT GLOBALS----------------------------------
VAR_INT iGFRespectGiven[6]
//-----------------------------------GIRLFRIEND TWO PLAYER GLOBALS--------------------------------
VAR_INT iGFAvailableFor2Player
//-------------------------------------DATE SEQUENCING GLOBALS------------------------------------
VAR_INT iTransitionStages iGFTimeStep
//--------------------------------------SEX MINIGAME GLOBALS--------------------------------------
VAR_INT GF_left_stick_x GF_left_stick_y GF_right_stick_x GF_right_stick_y excitement power iCensoredVersion
VAR_FLOAT GF_anim_time
//-----------------------------------PS2 KEYBOARD CONSOLE GLOBALS----------------------------------
VAR_TEXT_LABEL16 GF_txtConsoleIn GF_txtConsoleCheck
//--------------------------------------GLOBAL DECISION MAKERS-------------------------------------
VAR_INT iGF_GlobalDM_Tough iGF_GlobalDM_Weak_Gang
//--------------------------------------DANCE MINIGAME GLOBALS--------------------------------------
VAR_INT iDanceGirlfriend
//--------------------------------------SPEECH MANAGER GLOBALS--------------------------------------
VAR_INT iGFSpeechStatus iGFSayContext iCJSayContext iGFContextVariation
//----------------------------------------TWO-TIMING GLOBALS----------------------------------------
VAR_INT iGF_TT_Status iGF_TT_driver iGF_TT_Car iGF_TT_PedModel iGF_TT_CarModel iGF_TT_Blip
//--------------------------------------GF DATA STRUCTURES------------------------------------------
//--- GANG GIRL (COOCHIE)
iGFSelfRespect[COOCHIE] = 30
iGFLikesPlayer[COOCHIE] = 15
iGFDesiredSexAppeal[COOCHIE] = -100 // Coochie likes any piece of shit (as long as he's got personality!)
iGFRespectGiven[COOCHIE] = 200
iGFLikesOnDate[COOCHIE] = 0
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_JUNK_FOOD
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_BARS
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_STUNTS
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_GANG_ZONES
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_PARK_BEACH_ZONES
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_ENTERTAINMENT_ZONES
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_GANG_FIGHTS
SET_BIT iGFLikesOnDate[COOCHIE] LIKES_SNOGGING_IN_PUBLIC
iGFLikesPlayerTraits[COOCHIE] = 0
SET_BIT iGFLikesPlayerTraits[COOCHIE] NORMAL
iGFDiaryOfBusyHours[COOCHIE] = 0
SET_BIT iGFDiaryOfBusyHours[COOCHIE] H_6AM
SET_BIT iGFDiaryOfBusyHours[COOCHIE] H_8AM
SET_BIT iGFDiaryOfBusyHours[COOCHIE] H_10AM
SET_BIT iGFDiaryOfBusyHours[COOCHIE] H_NOON
SET_BIT iGFDiaryOfBusyHours[COOCHIE] H_2PM
//--- MECHANIC GIRL (MICHELLE)
iGFSelfRespect[MICHELLE] = 45
iGFLikesPlayer[MICHELLE] = 0
iGFDesiredSexAppeal[MICHELLE] = 60
iGFRespectGiven[MICHELLE] = 500
iGFLikesOnDate[MICHELLE] = 0
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_BARS
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_STUNTS
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_TO_GO_FAST
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_GANG_ZONES
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_PARK_BEACH_ZONES
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_ENTERTAINMENT_ZONES
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_SNOGGING_IN_PUBLIC
SET_BIT iGFLikesOnDate[MICHELLE] LIKES_TO_DRIVE
iGFLikesPlayerTraits[MICHELLE] = 0
SET_BIT iGFLikesPlayerTraits[MICHELLE] OBESE
iGFDiaryOfBusyHours[MICHELLE] = 0
SET_BIT iGFDiaryOfBusyHours[MICHELLE] H_NOON
SET_BIT iGFDiaryOfBusyHours[MICHELLE] H_2PM
SET_BIT iGFDiaryOfBusyHours[MICHELLE] H_4PM
SET_BIT iGFDiaryOfBusyHours[MICHELLE] H_6PM
SET_BIT iGFDiaryOfBusyHours[MICHELLE] H_8PM
SET_BIT iGFDiaryOfBusyHours[MICHELLE] H_10PM
//--- GUN GIRL (KYLIE)
iGFSelfRespect[KYLIE] = 70
iGFLikesPlayer[KYLIE] = 0
iGFDesiredSexAppeal[KYLIE] = 70
iGFRespectGiven[KYLIE] = 700
iGFLikesOnDate[KYLIE] = 0
SET_BIT iGFLikesOnDate[KYLIE] LIKES_SWANK_PLACES
SET_BIT iGFLikesOnDate[KYLIE] LIKES_PARKING_ROMANTIC
SET_BIT iGFLikesOnDate[KYLIE] LIKES_TO_CRUISE
SET_BIT iGFLikesOnDate[KYLIE] LIKES_RICH_ZONES
SET_BIT iGFLikesOnDate[KYLIE] LIKES_DESERT_COUNTRY_ZONES
SET_BIT iGFLikesOnDate[KYLIE] LIKES_SEX_IN_PUBLIC
iGFLikesPlayerTraits[KYLIE] = 0
SET_BIT iGFLikesPlayerTraits[KYLIE] NORMAL
iGFDiaryOfBusyHours[KYLIE] = 0
SET_BIT iGFDiaryOfBusyHours[KYLIE] H_2AM
SET_BIT iGFDiaryOfBusyHours[KYLIE] H_4AM
SET_BIT iGFDiaryOfBusyHours[KYLIE] H_6AM
SET_BIT iGFDiaryOfBusyHours[KYLIE] H_NOON
//--- COP GIRL (BARBARA)
iGFSelfRespect[BARBARA] = 60
iGFLikesPlayer[BARBARA] = 0
iGFDesiredSexAppeal[BARBARA] = 45
iGFRespectGiven[BARBARA] = 400
iGFLikesOnDate[BARBARA] = 0
SET_BIT iGFLikesOnDate[BARBARA] LIKES_DINERS
SET_BIT iGFLikesOnDate[BARBARA] LIKES_TO_CRUISE
SET_BIT iGFLikesOnDate[BARBARA] LIKES_DESERT_COUNTRY_ZONES
SET_BIT iGFLikesOnDate[BARBARA] LIKES_ENTERTAINMENT_ZONES
iGFLikesPlayerTraits[BARBARA] = 0
SET_BIT iGFLikesPlayerTraits[BARBARA] OBESE
iGFDiaryOfBusyHours[BARBARA] = 0
SET_BIT iGFDiaryOfBusyHours[BARBARA] H_6AM
SET_BIT iGFDiaryOfBusyHours[BARBARA] H_8AM
SET_BIT iGFDiaryOfBusyHours[BARBARA] H_10AM
SET_BIT iGFDiaryOfBusyHours[BARBARA] H_NOON
SET_BIT iGFDiaryOfBusyHours[BARBARA] H_2PM
//--- NURSE GIRL (SUZIE)
iGFSelfRespect[SUZIE] = 50
iGFLikesPlayer[SUZIE] = 0
iGFDesiredSexAppeal[SUZIE] = 50
iGFRespectGiven[SUZIE] = 300
iGFLikesOnDate[SUZIE] = 0
SET_BIT iGFLikesOnDate[SUZIE] LIKES_DINERS
SET_BIT iGFLikesOnDate[SUZIE] LIKES_TO_CRUISE
SET_BIT iGFLikesOnDate[SUZIE] LIKES_ENTERTAINMENT_ZONES
SET_BIT iGFLikesOnDate[SUZIE] LIKES_SHOPPING_ZONES
SET_BIT iGFLikesOnDate[SUZIE] LIKES_PARK_BEACH_ZONES
SET_BIT iGFLikesOnDate[SUZIE] LIKES_TO_CAUSE_ACCIDENTS_KILL_PEDS
iGFLikesPlayerTraits[SUZIE] = 0
SET_BIT iGFLikesPlayerTraits[SUZIE] FIT
iGFDiaryOfBusyHours[SUZIE] = 0
SET_BIT iGFDiaryOfBusyHours[SUZIE] H_2AM
SET_BIT iGFDiaryOfBusyHours[SUZIE] H_4AM
SET_BIT iGFDiaryOfBusyHours[SUZIE] H_6AM
SET_BIT iGFDiaryOfBusyHours[SUZIE] H_8AM
SET_BIT iGFDiaryOfBusyHours[SUZIE] H_10AM
SET_BIT iGFDiaryOfBusyHours[SUZIE] H_MIDNIGHT
//--- CROUPIER (MILLIE)
iGFSelfRespect[MILLIE] = 45
iGFLikesPlayer[MILLIE] = 20
iGFDesiredSexAppeal[MILLIE] = 60
iGFRespectGiven[MILLIE] = 400
iGFLikesOnDate[MILLIE] = 0
SET_BIT iGFLikesOnDate[MILLIE] LIKES_SWANK_PLACES
SET_BIT iGFLikesOnDate[MILLIE] LIKES_BARS
SET_BIT iGFLikesOnDate[MILLIE] LIKES_TO_CRUISE
SET_BIT iGFLikesOnDate[MILLIE] LIKES_PARKING_ROMANTIC
SET_BIT iGFLikesOnDate[MILLIE] LIKES_RICH_ZONES
SET_BIT iGFLikesOnDate[MILLIE] LIKES_SHOPPING_ZONES
SET_BIT iGFLikesOnDate[MILLIE] LIKES_ENTERTAINMENT_ZONES
SET_BIT iGFLikesOnDate[MILLIE] LIKES_SNOGGING_IN_PUBLIC
SET_BIT iGFLikesOnDate[MILLIE] LIKES_KINKY_SEX
iGFLikesPlayerTraits[MILLIE] = 0
SET_BIT iGFLikesPlayerTraits[MILLIE] FIT
iGFDiaryOfBusyHours[MILLIE] = 0
SET_BIT iGFDiaryOfBusyHours[MILLIE] H_10PM
SET_BIT iGFDiaryOfBusyHours[MILLIE] H_MIDNIGHT
SET_BIT iGFDiaryOfBusyHours[MILLIE] H_2AM
SET_BIT iGFDiaryOfBusyHours[MILLIE] H_4AM
SET_BIT iGFDiaryOfBusyHours[MILLIE] H_6AM
SET_BIT iGFDiaryOfBusyHours[MILLIE] H_8AM
SET_BIT iGFDiaryOfBusyHours[MILLIE] H_10AM
//-------------------------------------------GF DOORS---------------------------------------------
VAR_INT iGFdoor[7]
CREATE_OBJECT_NO_OFFSET Gen_doorEXT03 2401.75 -1714.477 13.125 iGFdoor[COOCHIE]
DONT_REMOVE_OBJECT iGFdoor[COOCHIE]
SET_OBJECT_COLLISION_DAMAGE_EFFECT iGFdoor[COOCHIE] FALSE
SET_OBJECT_PROOFS iGFdoor[COOCHIE] TRUE TRUE TRUE TRUE TRUE
CREATE_OBJECT_NO_OFFSET Gen_doorEXT07 -2574.495 1153.023 54.669 iGFdoor[SUZIE]
SET_OBJECT_HEADING iGFdoor[SUZIE] -19.444
DONT_REMOVE_OBJECT iGFdoor[SUZIE]
SET_OBJECT_COLLISION_DAMAGE_EFFECT iGFdoor[SUZIE] FALSE
SET_OBJECT_PROOFS iGFdoor[SUZIE] TRUE TRUE TRUE TRUE TRUE
CREATE_OBJECT_NO_OFFSET Gen_doorSHOP02 -1800.706 1201.041 24.12 iGFdoor[MICHELLE]
DONT_REMOVE_OBJECT iGFdoor[MICHELLE]
SET_OBJECT_COLLISION_DAMAGE_EFFECT iGFdoor[MICHELLE] FALSE
SET_OBJECT_PROOFS iGFdoor[MICHELLE] TRUE TRUE TRUE TRUE TRUE
CREATE_OBJECT_NO_OFFSET Gen_doorEXT04 -383.46 -1439.64 25.33 iGFdoor[KYLIE]
SET_OBJECT_HEADING iGFdoor[KYLIE] 90.0
DONT_REMOVE_OBJECT iGFdoor[KYLIE]
SET_OBJECT_COLLISION_DAMAGE_EFFECT iGFdoor[KYLIE] FALSE
SET_OBJECT_PROOFS iGFdoor[KYLIE] TRUE TRUE TRUE TRUE TRUE
CREATE_OBJECT_NO_OFFSET Gen_doorSHOP3 -1390.79 2639.33 54.973 iGFdoor[BARBARA]
DONT_REMOVE_OBJECT iGFdoor[BARBARA]
SET_OBJECT_COLLISION_DAMAGE_EFFECT iGFdoor[BARBARA] FALSE
SET_OBJECT_PROOFS iGFdoor[BARBARA] TRUE TRUE TRUE TRUE TRUE
CREATE_OBJECT_NO_OFFSET Gen_doorEXT03 2038.036 2721.37 10.53 iGFdoor[MILLIE]
SET_OBJECT_HEADING iGFdoor[MILLIE] -180.0
DONT_REMOVE_OBJECT iGFdoor[MILLIE]
SET_OBJECT_COLLISION_DAMAGE_EFFECT iGFdoor[MILLIE] FALSE
SET_OBJECT_PROOFS iGFdoor[MILLIE] TRUE TRUE TRUE TRUE TRUE
CREATE_OBJECT_NO_OFFSET CUNTGIRLDOOR -371.4 -1429.42 26.47 iGFdoor[GF_BARN_DOOR]
DONT_REMOVE_OBJECT iGFdoor[GF_BARN_DOOR]
SET_OBJECT_COLLISION_DAMAGE_EFFECT iGFdoor[GF_BARN_DOOR] FALSE
SET_OBJECT_PROOFS iGFdoor[GF_BARN_DOOR] TRUE TRUE TRUE TRUE TRUE
//------------------------------------------------------------------------------------------------
//--- Flag here what type of sex version to run
// 0 = ALL SEX IS IN
// 1 = NO SEX
iCensoredVersion = 1
//--- Launch the memory resident that handles GFs.
START_NEW_SCRIPT GF_Dating_Agent
MISSION_END
/*****************************************************************************************************************************************
************************************************ **********************************************************************
************************************************ DATING AGENT **********************************************************************
************************************************ **********************************************************************
*****************************************************************************************************************************************/
/* TO DO ON THIS SCRIPT:
------------------------
- Optimisations
*/
{
GF_Dating_Agent:
SCRIPT_NAME GFAGNT
/*--- Dating Agent Structures--------
see GirlFriend Stats Map.txt
-------------------------------------*/
LVAR_INT iAgentState iSubStateStatus iCurrentGF iTemp iTemp2 iHours iMinutes iDay iSixFrameCounter iTempStat
LVAR_FLOAT fOriginX fOriginY fOriginZ fOriginH
//--- Init the vars
iGFTimeStep = 0
iTemp = 0
iTemp2 = 0
iAgentFlags = 0
iAgentState = GF_IDLE_TRY_TO_LOCATE_PLAYER
iSubStateStatus = 0
$GF_txtConsoleCheck = NIL
iPhoneState = MOBILE_INACTIVE
iGFidx = -1
iSixFrameCounter = -1
iDay = 1 // there is no day zero!
//--- Fudge
IF iTemp > 0
CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 iCurrentGF
ADD_BLIP_FOR_COORD 0.0 0.0 0.0 iGFHomeBlips[0]
ADD_BLIP_FOR_COORD 0.0 0.0 0.0 iGFHomeBlips[1]
ADD_BLIP_FOR_COORD 0.0 0.0 0.0 iGFHomeBlips[2]
ADD_BLIP_FOR_COORD 0.0 0.0 0.0 iGFHomeBlips[3]
ADD_BLIP_FOR_COORD 0.0 0.0 0.0 iGFHomeBlips[4]
ADD_BLIP_FOR_COORD 0.0 0.0 0.0 iGFHomeBlips[5]
CREATE_CAR_GENERATOR 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 iGFLockedCarGenerator[0]
CREATE_CAR_GENERATOR 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 iGFUnlockedCarGenerator[0]
ENDIF
//--- Main Loop
GF_Dating_Agent_Main:
WAIT iGFTimeStep
//--- Calls to the debug subroutines if needed - otherwise comment
// GOSUB GF_Dating_Agent_Debug
// GOSUB GF_Dating_Agent_Console_Commands
//--- Alive Checks for player and mission checks
IF IS_PLAYER_PLAYING PLAYER1
AND NOT IS_CHAR_DEAD scplayer
AND flag_player_on_mission = 0
//-- Player NOT on mission, remove the clean up flag
CLEAR_BIT iAgentFlags MISSION_CLEANUP_DONE
//--- Go into the appopriate Agent State
GOSUB GF_Dating_Agent_DoCurrentState
ELSE
IF NOT IS_BIT_SET iAgentFlags MISSION_CLEANUP_DONE
GOSUB GF_Dating_Agent_MissionCleanUp
SET_BIT iAgentFlags MISSION_CLEANUP_DONE
ENDIF
ENDIF
GOTO GF_Dating_Agent_Main
//--- End Main Loop
/*****************************************************************************
GF_Dating_Agent STATES
******************************************************************************/
GF_Dating_Agent_DoCurrentState:
SWITCH iAgentState
CASE GF_IDLE_TRY_TO_LOCATE_PLAYER //---STATE 0: WAIT TO START DATE
GOSUB GF_Dating_Agent_State0
BREAK
CASE GF_LAUNCH_DATE_OR_SEX //---STATE 1: LAUNCH A DATE OR SEX
GOSUB GF_Dating_Agent_State1
BREAK
CASE GF_WRAP_UP_AND_UPDATE //---STATE 2: WRAP UP AND STAT UPDATES
GOSUB GF_Dating_Agent_State2
BREAK
CASE GF_MEETING_WAIT //---STATE3: MEETING WAIT STATE
GOSUB GF_Dating_Agent_State3
BREAK
CASE GF_START_DATE_WAIT //---STATE4: START DATE WAIT STATE
GOSUB GF_Dating_Agent_State4
BREAK
ENDSWITCH
RETURN
/********************************************
STATE 0: WAIT TO START DATE
********************************************/
GF_Dating_Agent_State0:
//--- Get the index of the girlfriend we are going to handle this frame
GOSUB GF_Dating_Agent_GetGFidxThisFrame
//--- Check that the girl is active
IF IS_BIT_SET iActiveGF iGFidx
IF IS_BIT_SET iAgentFlags KEEP_THIS_IDX // If we have locked this girl already...
iTemp = 1 // City ALWAYS matches with this girl
ELSE
//--- Check the current city
iTemp = 0
GET_CITY_PLAYER_IS_IN PLAYER1 iTemp2
SWITCH iGFidx
CASE COOCHIE
IF iTemp2 = LEVEL_LOSANGELES
iTemp = 1
ENDIF
BREAK
CASE BARBARA
IF iTemp2 = LEVEL_GENERIC
iTemp = 1
ENDIF
BREAK
CASE KYLIE
IF iTemp2 = LEVEL_GENERIC
iTemp = 1
ENDIF
BREAK
CASE MICHELLE
IF iTemp2 = LEVEL_SANFRANCISCO
iTemp = 1
ENDIF
BREAK
CASE SUZIE
IF iTemp2 = LEVEL_SANFRANCISCO
iTemp = 1
ENDIF
BREAK
CASE MILLIE
IF iTemp2 = LEVEL_LASVEGAS
iTemp = 1
ENDIF
BREAK
ENDSWITCH
ENDIF
IF iTemp = 1 // City matches with girl
//--- Check if the Girlfriend Blips and Bonuses are ON as required
GOSUB GF_Dating_Agent_CheckStatusOfActiveBlipsAndBonuses
//--- Check if player is in zone of the active girl
GOSUB GF_Dating_Agent_MatchCurrentZoneWithGFZone // Returns iTemp > 0 if active GF, and the matching iGFidx
IF iTemp > 0 // Player is around the zone of an active GF
//--- Speed up the agent's time step a little bit
iGFTimeStep = GF_TIME_STEP_MEDIUM
//--- Check if we have not aquired this GF at this very moment
IF NOT IS_BIT_SET iDateReport MEETING_IN_PROGRESS
//--- Get origin coordinates for curent girlfriend
GOSUB GF_Dating_Agent_GetOrigin_X_Y_Z_H // Reads iGFidx, Returns in fOriginX,Y,Z,Heading
//--- Determine if this girl is at home or not, according to her diary
GOSUB GF_Dating_Agent_CheckGirlsDiary
IF iTemp > 0 // She is in
//--- Set the agent time step at its fastest speed - MUST RENDER THE LOCATE
iGFTimeStep = GF_TIME_STEP_FAST
GOSUB GF_Dating_Agent_CreateGFCar
//--- Mark the GF available for 2 Player games
SET_BIT iGFAvailableFor2Player iGFidx
//--- Player detected at the flat
iAgentState = GF_START_DATE_WAIT
iSubStateStatus = 0
RETURN
ELSE // she is not home
//--- Mark the GF as not ready for 2 player games
CLEAR_BIT iGFAvailableFor2Player iGFidx
GOSUB GF_Dating_Agent_RemoveGFCar
iGFTimeStep = GF_TIME_STEP_MEDIUM
IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 5.0 5.0 3.0 FALSE
//--- Player detected at the flat - display HELP
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
AND NOT IS_MESSAGE_BEING_DISPLAYED
PRINT_HELP GF_0048 // Your girlfriend is not at home. Try again later
ENDIF
RETURN
ENDIF
ENDIF
ENDIF
ELSE
//--- Player is not around the area of the girl
GOSUB GF_Dating_Agent_CheckPhoneState // Mobile Phone
ENDIF
ELSE
//--- City check failed, return
RETURN
ENDIF
ELSE // This is an inactive girlfriend
//--- Check if the Girlfriend Blips and Bonuses are OFF as required
GOSUB GF_Dating_Agent_CheckStatusOfInactiveBlipsAndBonuses
//--- Check if player is in the 'meeting' zone of an inactive girl
IF NOT IS_BIT_SET iDateReport MEETING_IN_PROGRESS // If the meeting script is not running already
GOSUB GF_Dating_Agent_MatchCurrentZoneWithMeetZone // Returns iTemp > 0 if match, and the matching iGFidx
IF iTemp > 0
//--- Speed up the agent's time step a little bit
iGFTimeStep = GF_TIME_STEP_MEDIUM
//--- Special case for KYLIE who is not available until after this mission
IF iGFidx = KYLIE
AND flag_la1fin1_mission_counter < 2
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED GF_Meeting.sc
RETURN
ENDIF
//--- Check if girl is allowed to be created in the world or not
IF NOT iGFLikesPlayer[iGFidx] = GF_HATES_PLAYER
AND NOT iGFLikesPlayer[iGFidx] = GF_IS_DEAD
//--- Check if we must skip a day
IF IS_BIT_SET iGFDiaryOfBusyHours[iGFidx] NEXT_FREE_DAY
//--- Verify that this is the next free day in her diary
GET_CURRENT_DAY_OF_WEEK iTemp
iTemp += H_10PM // pick the right bit to find the day of the week in the diary
IF IS_BIT_SET iGFDiaryOfBusyHours[iGFidx] iTemp // if this is the right day
//--- Clean the "day to skip" and the "skip a day" bits off her diary
GOSUB GF_Dating_Agent_CleanFreeDays
//--- This IS the next day
iTemp = 1
ELSE
//--- Check that we have not skipped days and have to wait a week
++iTemp // look at tomorrow
IF iTemp > D_SAT
iTemp = D_SUN
ENDIF
IF IS_BIT_SET iGFDiaryOfBusyHours[iGFidx] iTemp // is tomorrow the free day?
//--- All ok, tomorrow is her free day, so return false
iTemp = -1
RETURN
ELSE
//--- Player has skipped a week!
GOSUB GF_Dating_Agent_CleanFreeDays
//--- Better mark this as the next day
iTemp = 1
ENDIF
ENDIF
ELSE
//--- No need to check for free day
iTemp = 1
ENDIF
//--- If she is supposed to be there, get her co-ordinates
IF iTemp = 1
GOSUB GF_Dating_Agent_GetMeetingOrigin_X_Y_Z_H
//--- Start a meeting with this girl - gives the opportunity to activate her
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT GF_Meeting.sc iTemp
IF iTemp = 0
STREAM_SCRIPT GF_Meeting.sc
IF HAS_STREAMED_SCRIPT_LOADED GF_Meeting.sc
SET_BIT iDateReport MEETING_IN_PROGRESS
START_NEW_STREAMED_SCRIPT GF_Meeting.sc iGFidx fOriginX fOriginY fOriginZ fOriginH
//--- Speed up the agent's time step to its maximum speed
iGFTimeStep = GF_TIME_STEP_FAST
iAgentState = GF_MEETING_WAIT
iSubStateStatus = 0
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
//--- Slow down the agent's time step
iGFTimeStep = GF_TIME_STEP_SLOW
//--- Player has moved away from the meeting zone
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED GF_Meeting.sc
ENDIF
ENDIF
ENDIF
RETURN
/********************************************
STATE 1: LAUNCH A DATE OR SEX
********************************************/
GF_Dating_Agent_State1:
iGFGoneOnDate[iGFidx] = 1
IF iGFGoneOnDate[0] = 1
AND iGFGoneOnDate[1] = 1
AND iGFGoneOnDate[2] = 1
AND iGFGoneOnDate[3] = 1
AND iGFGoneOnDate[4] = 1
AND iGFGoneOnDate[5] = 1
WRITE_LOG "UNLOCK_ACHIEVEMENT NOT_A_PLAYER"
ENDIF
SWITCH iSubStateStatus
CASE 0
//--- Check the mobile phone - if player has received a call from this GF
IF iCaller = iGFidx
//--- RESET
GOSUB GF_Dating_Agent_ResetAppointment
iPhoneState = MOBILE_INACTIVE
ENDIF
CLEAR_BIT iAgentFlags iGFidx // Clear the appointment bit anyway.
//------CREATE THE GF in the game world:
GOSUB GF_Dating_Agent_CreateAndInitGF // Pass the IDX of the GF, returns iCurrentGF as ped pointer
//--- Disband the current player's group in case he has gang members with him
IF IS_PLAYER_PLAYING PLAYER1
REMOVE_GROUP players_group
SET_PLAYER_GROUP_RECRUITMENT PLAYER1 FALSE
GET_RID_OF_PLAYER_PROSTITUTE
ENDIF
//--- Clear the report for this date (this should be clean already, but just to make sure...)
IF NOT IS_BIT_SET iActiveGF GF_CHEAT_MODE_ON // If there are no keyboard cheats active
iDateReport = 0
ENDIF
//--- Check if the player is in GIMP SUIT here, and if the GF likes kinky
GOSUB GF_Dating_Agent_IsPlayerInGimpSuit // Returns iTemp = 1 if player in gimp suit, 0 otherwise
IF iTemp = 1
AND IS_BIT_SET iGFLikesOnDate[iGFidx] LIKES_KINKY_SEX
SET_BIT iDateReport KINKY_SEX // Push the kinky sex as date, this starts the cut of her leaving house
ELSE
//--- On the first few dates, the girl always wants to be taken out for dinner
IF iGFLikesPlayer[iGFidx] <= GF_LIKES_PLAYER_STAGE1
SET_BIT iDateReport EAT_OUT
ELSE
//--- Generate a random date
GOSUB GF_Dating_Agent_CreateRandomDate // Returns date number in iTemp. Valid dates: 11, 12, 13
SET_BIT iDateReport iTemp //Push the date type in the bitfield
ENDIF
ENDIF
//--- Start the date script
STREAM_SCRIPT GF_Date.sc
++iSubStateStatus // Wait for the date to end, i.e. bit 1 in the report is clear
BREAK
CASE 1
IF HAS_STREAMED_SCRIPT_LOADED GF_Date.sc
SET_BIT iDateReport DATE_IN_PROGRESS // Mark Date as In Progress
CLEAR_BIT iGFAvailableFor2Player iGFidx // Mark GF as NOT available for 2 player games
START_NEW_STREAMED_SCRIPT GF_Date.sc iCurrentGF //Start the date, passing the GF model
++iSubStateStatus // Wait for the date to end, i.e. bit 1 in the report is clear
ENDIF
BREAK
CASE 2
//--- Date Has ended
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS // Date In Progress
//--- Check if player has agreed to sex or has declined
IF IS_BIT_SET iDateReport PLAYER_AGREES_TO_SEX
//--- Player did agree to Sex
IF NOT IS_BIT_SET iDateReport SEX_IN_PROGRESS
SET_PLAYER_CONTROL player1 OFF
//--- Remove the instance, it is no longer needed on screen.
GOSUB GF_Dating_Agent_RemoveGF
STREAM_SCRIPT GF_Sex.sc
++iSubStateStatus
ENDIF
ELSE
//--- Player refused sex
DO_FADE 1000 FADE_IN
iAgentState = GF_WRAP_UP_AND_UPDATE
iSubStateStatus = 0
ENDIF
ELSE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT GF_Date.sc iTemp
IF iTemp =0
CLEAR_BIT iDateReport DATE_IN_PROGRESS
ENDIF
ENDIF
BREAK
CASE 3
IF HAS_STREAMED_SCRIPT_LOADED GF_Sex.sc
//--- Retrieve the stuff we need to pass to the sex script
GET_AREA_VISIBLE iTemp
GOSUB GF_Dating_Agent_GetOrigin_X_Y_Z_H
//--- See what type of sex we shoud trigger
IF IS_BIT_SET iDateReport KINKY_SEX
START_NEW_STREAMED_SCRIPT GF_Sex.sc iGFidx TRUE iTemp fOriginX fOriginY fOriginZ fOriginH //Pass the GF, spanking, current area, home outside XYZ and final heading
ELSE
START_NEW_STREAMED_SCRIPT GF_Sex.sc iGFidx FALSE iTemp fOriginX fOriginY fOriginZ fOriginH //Pass the GF, spanking, current area, home outside XYZ and final heading
ENDIF
SET_BIT iDateReport SEX_IN_PROGRESS
++iSubStateStatus
ENDIF
BREAK
CASE 4
//--- Sex has ended
IF NOT IS_BIT_SET iDateReport SEX_IN_PROGRESS
iAgentState = GF_WRAP_UP_AND_UPDATE
iSubStateStatus = 0
ELSE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT GF_Sex.sc iTemp
IF iTemp =0
CLEAR_BIT iDateReport SEX_IN_PROGRESS
ENDIF
ENDIF
BREAK
ENDSWITCH
RETURN
/********************************************
STATE 2: WRAP UP AND STAT UPDATES
********************************************/
GF_Dating_Agent_State2:
SWITCH iSubStateStatus
CASE 0
CLEAR_BIT iAgentFlags iGFidx // APPOINTMENT_ON for current gf
//--- Do all the basic housekeeping stuff on the instanced girlfriend model
GOSUB GF_Dating_Agent_RemoveGF
//--- Check if the girlfriend is DEAD
IF iGFLikesPlayer[iGFidx] = GF_IS_DEAD
CLEAR_HELP
PRINT_HELP GF_0039 //Your girlfriend is dead.
CLEAR_BIT iActiveGF iGFidx // remove the girl
ELSE
//--- GF is alive and well, update her stats
GOSUB GF_Dating_Agent_UpdateGFStats
//--- Print unlocked car generator help
IF iGFLikesPlayer[iGFidx] >= GF_LIKES_PLAYER_STAGE2
GOSUB GF_Dating_Agent_PrintUnlockedCarInfo
ENDIF
ENDIF
++iSubStateStatus
BREAK
CASE 1
//--- Check if the girl has dumped the player
IF iGFLikesPlayer[iGFidx] = GF_HATES_PLAYER
OR iGFLikesPlayer[iGFidx] = GF_IS_DEAD
GOSUB GF_Dating_Agent_DeleteStats
iAgentState = GF_IDLE_TRY_TO_LOCATE_PLAYER
iSubStateStatus = 0
ELSE
//--- Check that the player has moved away from the GF origin (i.e. where most dates end)
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 10.0 10.0 10.0 FALSE
iAgentState = GF_IDLE_TRY_TO_LOCATE_PLAYER
iSubStateStatus = 0
ENDIF
ENDIF
BREAK
ENDSWITCH
RETURN
/********************************************
STATE 3: MEETING WAIT STATE
********************************************/
GF_Dating_Agent_State3:
//--- Meeting Script Has ended
IF NOT IS_BIT_SET iDateReport MEETING_IN_PROGRESS // MEETING In Progress
GOSUB GF_Dating_Agent_GetMeetingOrigin_X_Y_Z_H
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 65.0 65.0 5.0 FALSE
IF IS_BIT_SET iDateReport MEET_TOMORROW
GET_CURRENT_DAY_OF_WEEK iDay
++iDay
IF iDay > 7
iDay = 1
ENDIF
ENDIF
iAgentState = GF_IDLE_TRY_TO_LOCATE_PLAYER
iSubStateStatus = 0
ENDIF
ELSE
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT GF_Meeting.sc iTemp
IF iTemp =0
CLEAR_BIT iDateReport MEETING_IN_PROGRESS
ENDIF
ENDIF
RETURN
/********************************************
STATE 4: START DATE WAIT STATE
********************************************/
GF_Dating_Agent_State4:
IF LOCATE_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 75.0 75.0 10.0 FALSE
GOSUB GF_Dating_Agent_CheckGirlsDiary
IF iTemp > 0 // She is in
IF LOCATE_STOPPED_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 1.5 1.5 1.5 TRUE
IF NOT IS_BIT_SET iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
AND CAN_PLAYER_START_MISSION PLAYER1
SET_PLAYER_CONTROL player1 OFF
iAgentState = GF_LAUNCH_DATE_OR_SEX
iSubStateStatus = 0
RETURN
ENDIF
ENDIF
ELSE
//---She is no longer at home
iAgentState = GF_IDLE_TRY_TO_LOCATE_PLAYER
iSubStateStatus = 0
ENDIF
ELSE
//--- Player has left the area
iAgentState = GF_IDLE_TRY_TO_LOCATE_PLAYER
iSubStateStatus = 0
ENDIF
RETURN
/*****************************************************************************
GF_Dating_Agent SUBROUTINES
******************************************************************************/
/********************************************
CHECK STATUS OF ACTIVE BONUSES AND BLIPS
********************************************/
GF_Dating_Agent_CheckStatusOfActiveBlipsAndBonuses:
//--- check if the ACTIVE girl we are doing this frame needs a blip
IF NOT DOES_BLIP_EXIST iGFHomeBlips[iGFidx]
GOSUB GF_Dating_Agent_GetOrigin_X_Y_Z_H
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD fOriginX fOriginY fOriginZ RADAR_SPRITE_GIRLFRIEND iGFHomeBlips[iGFidx]
//--- The blip can also be considered a 'flag' to see if this girl needs to be counted
INCREMENT_INT_STAT CURRENT_GIRLFRIENDS 1 // current number, always updated
INCREMENT_INT_STAT GIRLS_DATED 1 // total number, up to 6
//--- Set Girlfriend Respect
GET_INT_STAT RESPECT_GIRLFRIEND iTemp
iTemp += iGFRespectGiven[iGFidx]
IF iTemp > 1000
iTemp = 1000
ENDIF
SET_INT_STAT RESPECT_GIRLFRIEND iTemp
ENDIF
//--- Girl specific checks
SWITCH iGFidx
CASE COOCHIE
//--- Give player clothes as gift
IF iGFLikesPlayer[iGFidx] >= GF_LIKES_PLAYER_STAGE3
AND flag_got_pimp_clothes = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP GF_H006 // your girlfriend has bought you a gift
flag_got_pimp_clothes = 1
ENDIF
ENDIF
BREAK
CASE MICHELLE
//--- Give player clothes as gift
IF iGFLikesPlayer[iGFidx] >= GF_LIKES_PLAYER_STAGE3
AND flag_got_mechanic_clothes = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP GF_H006 // your girlfriend has bought you a gift
flag_got_mechanic_clothes = 1
ENDIF
ENDIF
//--- check if this girl needs her bonus activated
IF NOT IS_BIT_SET iActiveGF MICHELLE_BONUS_ACTIVE
CHANGE_GARAGE_TYPE MICHDR GARAGE_RESPRAY
SET_GARAGE_RESPRAY_FREE MICHDR TRUE
SET_BIT iActiveGF MICHELLE_BONUS_ACTIVE
ENDIF
BREAK
CASE KYLIE
//--- Give player clothes as gift
IF iGFLikesPlayer[iGFidx] >= GF_LIKES_PLAYER_STAGE3
AND flag_player_got_country_clothes = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP GF_H006 // your girlfriend has bought you a gift
flag_player_got_country_clothes = 1
ENDIF
ENDIF
//--- check if this girl needs her bonus activated
IF NOT IS_BIT_SET iActiveGF KYLIE_BONUS_ACTIVE
SET_OBJECT_VISIBLE iGFdoor[GF_BARN_DOOR] FALSE
SET_OBJECT_COLLISION iGFdoor[GF_BARN_DOOR] FALSE
CREATE_PICKUP MOLOTOV PICKUP_ON_STREET_SLOW -366.2235 -1429.0878 25.5 iGFBonusPickupID[0]
CREATE_PICKUP CHNSAW PICKUP_ON_STREET_SLOW -365.7906 -1425.2526 25.5 iGFBonusPickupID[1]
CREATE_PICKUP_WITH_AMMO COLT45 PICKUP_ON_STREET_SLOW 100 -365.4774 -1422.4015 25.5 iGFBonusPickupID[2]
CREATE_PICKUP_WITH_AMMO FLAME PICKUP_ON_STREET_SLOW 200 -366.0660 -1418.6830 25.5 iGFBonusPickupID[3]
SET_BIT iActiveGF KYLIE_BONUS_ACTIVE
ENDIF
BREAK
CASE BARBARA
//--- Give player clothes as gift
IF iGFLikesPlayer[iGFidx] >= GF_LIKES_PLAYER_STAGE3
AND flag_player_got_police_uniform = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP GF_H006 // your girlfriend has bought you a gift
flag_player_got_police_uniform = 1
ENDIF
ENDIF
//--- check if this girl needs her bonus activated
IF NOT IS_BIT_SET iActiveGF BARBARA_BONUS_ACTIVE
SET_EXTRA_POLICE_STATION_RESTART_POINT -1379.8428 2635.7395 54.4315 1500.0 170.6194
SWITCH_ARREST_PENALTIES FALSE
SET_BIT iActiveGF BARBARA_BONUS_ACTIVE
ENDIF
BREAK
CASE SUZIE
//--- Give player clothes as gift
IF iGFLikesPlayer[iGFidx] >= GF_LIKES_PLAYER_STAGE3
AND flag_got_medic_clothes = 0
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
PRINT_HELP GF_H006 // your girlfriend has bought you a gift
flag_got_medic_clothes = 1
ENDIF
ENDIF
IF NOT IS_BIT_SET iActiveGF SUZIE_BONUS_ACTIVE
//--- check if this girl needs her bonus activated
SET_EXTRA_HOSPITAL_RESTART_POINT -2570.5107 1139.5815 54.8547 1500.0 160.0
SWITCH_DEATH_PENALTIES FALSE
SET_BIT iActiveGF SUZIE_BONUS_ACTIVE
ENDIF
BREAK
ENDSWITCH
RETURN
/********************************************
CHECK STATUS OF INACTIVE BONUSES AND BLIPS
********************************************/
GF_Dating_Agent_CheckStatusOfInactiveBlipsAndBonuses:
IF returned_oysters = 50
//--- Resurrect this girl if dead
IF iGFLikesPlayer[iGFidx] < 0
AND NOT iGFidx = COOCHIE
AND NOT iGFidx = MILLIE
iGFLikesPlayer[iGFidx] = 45
ENDIF
ENDIF
IF DOES_BLIP_EXIST iGFHomeBlips[iGFidx]
REMOVE_BLIP iGFHomeBlips[iGFidx]
//--- Delete her stats
GOSUB GF_Dating_Agent_DeleteStats
//--- Remove her car
GOSUB GF_Dating_Agent_RemoveGFCar
//--- Mark the GF as not ready for 2 player games
CLEAR_BIT iGFAvailableFor2Player iGFidx
//--- Decrease the counter of current girls
DECREMENT_INT_STAT CURRENT_GIRLFRIENDS 1
//--- Increase the counter of girls dumped
INCREMENT_INT_STAT GIRLS_DUMPED 1
//--- Decrease Girlfriend Respect
GET_INT_STAT RESPECT_GIRLFRIEND iTemp
iTemp -= iGFRespectGiven[iGFidx]
IF iTemp < 0
iTemp = 0
ENDIF
SET_INT_STAT RESPECT_GIRLFRIEND iTemp
ENDIF
//--- calculate the bonus_active bit for this girl
iTemp = iGFidx + 20
IF IS_BIT_SET iActiveGF iTemp
//--- need to remove this bonus as the girl has gone inactive
SWITCH iGFidx
CASE MICHELLE
IF NOT IS_CHAR_IN_AREA_3D scplayer -1790.7 1209.0 23.0 -1784.0 1221.5 27.5 FALSE
SET_GARAGE_RESPRAY_FREE MICHDR FALSE
CHANGE_GARAGE_TYPE MICHDR GARAGE_FOR_SCRIPT_TO_OPEN_AND_CLOSE
CLOSE_GARAGE MICHDR
CLEAR_BIT iActiveGF MICHELLE_BONUS_ACTIVE
ENDIF
BREAK
CASE KYLIE
IF NOT IS_CHAR_IN_AREA_3D scplayer -361.0 -1417.0 23.0 -372.0 -1431.0 30.0 FALSE
REMOVE_PICKUP iGFBonusPickupID[0]
REMOVE_PICKUP iGFBonusPickupID[1]
REMOVE_PICKUP iGFBonusPickupID[2]
REMOVE_PICKUP iGFBonusPickupID[3]
SET_OBJECT_VISIBLE iGFdoor[GF_BARN_DOOR] TRUE
SET_OBJECT_COLLISION iGFdoor[GF_BARN_DOOR] TRUE
CLEAR_BIT iActiveGF KYLIE_BONUS_ACTIVE
ENDIF
BREAK
CASE BARBARA
SET_EXTRA_POLICE_STATION_RESTART_POINT -1379.8428 2635.7395 54.4315 0.0 170.6194 // clears it
SWITCH_ARREST_PENALTIES TRUE
CLEAR_BIT iActiveGF BARBARA_BONUS_ACTIVE
BREAK
CASE SUZIE
SET_EXTRA_HOSPITAL_RESTART_POINT fOriginX fOriginY fOriginZ 0.0 fOriginH // clears it
SWITCH_DEATH_PENALTIES TRUE
CLEAR_BIT iActiveGF SUZIE_BONUS_ACTIVE
BREAK
ENDSWITCH
ENDIF
RETURN
/********************************************
GET CURRENT GIRLFRIEND ORIGIN XYZ & HEADING
********************************************/
GF_Dating_Agent_GetOrigin_X_Y_Z_H:
SWITCH iGFidx
CASE COOCHIE
fOriginX = 2401.9646
fOriginY = -1723.2197
fOriginZ = 12.6005
fOriginH = 180.0
BREAK
CASE MICHELLE
fOriginX = -1799.5
fOriginY = 1195.5
fOriginZ = 24.1094
fOriginH = 180.0
BREAK
CASE KYLIE
fOriginX = -377.3978 //-398.5166 89.8377
fOriginY = -1438.6919 //-1426.4675
fOriginZ = 24.7209 //24.7110
fOriginH = 270.0 //90.0
BREAK
CASE BARBARA
fOriginX = -1398.1010
fOriginY = 2636.8730
fOriginZ = 54.7031
fOriginH = 75.0
BREAK
CASE SUZIE
fOriginX = -2576.8079
fOriginY = 1144.7438
fOriginZ = 54.7422
fOriginH = 164.0
BREAK
CASE MILLIE
fOriginX = 2035.3619
fOriginY = 2732.4106
fOriginZ = 9.8203
fOriginH = 0.0
BREAK
ENDSWITCH
RETURN
/********************************************
GET GF MEETING ORIGIN XYZ & HEADING
********************************************/
GF_Dating_Agent_GetMeetingOrigin_X_Y_Z_H:
SWITCH iGFidx
CASE MICHELLE
fOriginX = -2027.5835
fOriginY = -118.7022
fOriginZ = 1034.0
fOriginH = 3.4
BREAK
CASE KYLIE
fOriginX = 257.6682
fOriginY = -154.7475
fOriginZ = 4.0786
fOriginH = 268.7731
BREAK
CASE BARBARA
fOriginX = -1410.0997
fOriginY = 2648.7307
fOriginZ = 54.6875
fOriginH = 130.0
BREAK
CASE SUZIE // commented the co-ords inside the gym, temporarily set her in a park nearby
fOriginX = -2291.7075 //762.9347
fOriginY = -233.0215 //-23.3127
fOriginZ = 41.7185 //999.5938
fOriginH = 360.0 //360.0
BREAK
DEFAULT
fOriginX = 0.0
fOriginY = 0.0
fOriginZ = 0.0
fOriginH = 0.0
BREAK
ENDSWITCH
RETURN
/********************************************
GET GIRLFRIEND INDEX FOR THIS FRAME
********************************************/
GF_Dating_Agent_GetGFidxThisFrame:
++iSixFrameCounter
IF iSixFrameCounter >= 6
//--- Loop around
iSixFrameCounter = 0
ENDIF
IF IS_BIT_SET iAgentFlags KEEP_THIS_IDX
IF iSixFrameCounter = iGFidx // we have looped back to the same girl
CLEAR_BIT iAgentFlags KEEP_THIS_IDX
ENDIF
ELSE
++iGFidx
IF iGFidx >= 6
//--- Loop around
iGFidx = 0
ENDIF
ENDIF
RETURN
/********************************************
MATCH CURRENT ZONE WITH GF ORIGIN ZONE
********************************************/
GF_Dating_Agent_MatchCurrentZoneWithGFZone:
GOSUB GF_Dating_Agent_GetOrigin_X_Y_Z_H // Reads iGFidx, Returns in fOriginX,Y,Z
IF LOCATE_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 65.0 65.0 5.0 FALSE
//--- Hold this iGFidx until we leave the area, to prevent locate flickers etc.
SET_BIT iAgentFlags KEEP_THIS_IDX
//--- Return Match for Active GF
iTemp = 1
RETURN
ENDIF
iTemp = -1
RETURN
/********************************************
MATCH CURRENT ZONE WITH GF MEETING ZONE
********************************************/
GF_Dating_Agent_MatchCurrentZoneWithMeetZone:
GOSUB GF_Dating_Agent_GetMeetingOrigin_X_Y_Z_H // Reads iGFidx, Returns in fOriginX,Y,Z,H (0.0 if no meeting allowed)
IF NOT fOriginX = 0.0
//--- Check if player is withing the maximum distance to start the meeting script
IF LOCATE_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 80.0 80.0 10.0 FALSE
//--- Now check if the player is not too close to actually stream in the GF (to avoid pop)
IF NOT LOCATE_CHAR_ANY_MEANS_3D scplayer fOriginX fOriginY fOriginZ 8.0 8.0 10.0 FALSE //7.0
//--- Hold this iGFidx until we leave the area, to prevent locate flickers etc.
SET_BIT iAgentFlags KEEP_THIS_IDX
//--- Return Match
iTemp = 1
RETURN
ENDIF
ENDIF
ENDIF
iTemp = -1
RETURN
/********************************************
CHECK GIRLFRIEND'S DIARY
********************************************/
GF_Dating_Agent_CheckGirlsDiary:
iTemp = -1
//--- Check if there is an appointment on AND she has phoned you
IF IS_BIT_SET iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
AND iCaller = iGFidx
//--- She is always home if she is on the phone
iTemp = 1
RETURN
ENDIF
//--- Check if the player has received a call from the girl
IF IS_BIT_SET iAgentFlags MOBILE_CALL_ANSWERED
AND iCaller = iGFidx
//--- She is always home if she is is wai ting for you
iTemp = 1
RETURN
ENDIF
//--- Check if we must skip a day after a date
IF IS_BIT_SET iGFDiaryOfBusyHours[iGFidx] NEXT_FREE_DAY
//--- Verify that this is the next free day in her diary
GET_CURRENT_DAY_OF_WEEK iTemp
iTemp += H_10PM // pick the right bit to find the day of the week in the diary
IF IS_BIT_SET iGFDiaryOfBusyHours[iGFidx] iTemp // if this is the right day
//--- Clean her diary so that only one day can be set at any given time
GOSUB GF_Dating_Agent_CleanFreeDays
//--- Carry on with the rest of the diary below...
ELSE
//--- Check that we have not skipped days and have to wait a week
++iTemp // look at tomorrow
IF iTemp > D_SAT
iTemp = D_SUN
ENDIF
IF IS_BIT_SET iGFDiaryOfBusyHours[iGFidx] iTemp // is tomorrow the free day?
//--- All ok, tomorrow is her free day, so return false
iTemp = -1
RETURN
ELSE
//--- Player has skipped a week!
GOSUB GF_Dating_Agent_CleanFreeDays
//--- Don't return and proceed with the diary
ENDIF
ENDIF
ENDIF
//--- Now proceed to check the diary
GET_TIME_OF_DAY iTemp iTemp2
// We only consider odd hours, minutes are discarded an overwritten
iTemp2 = iTemp / 2
iTemp2 *= 2 // If it's an odd number it will be less than the original due to the integer cast
IF IS_BIT_SET iGFDiaryOfBusyHours[iGFidx] iTemp2
//--- According to her diary, she is not at home
iTemp = -1 // Store an invalid time in the return var
RETURN
ELSE
//--- Her diary says she is free...
iTemp = 1
RETURN
ENDIF
RETURN
/********************************************
CREATE GIRLFRIEND'S CAR
********************************************/
GF_Dating_Agent_CreateGFCar:
IF iGFLikesPlayer[iGFidx] >= GF_LIKES_PLAYER_STAGE2
IF NOT IS_BIT_SET iAgentFlags GF_CAR_GENERATOR_ON
SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[iGFidx] 101
SET_BIT iAgentFlags GF_CAR_GENERATOR_ON
ENDIF
ELSE
IF NOT IS_BIT_SET iAgentFlags GF_CAR_GENERATOR_ON
SWITCH_CAR_GENERATOR iGFLockedCarGenerator[iGFidx] 101
SET_BIT iAgentFlags GF_CAR_GENERATOR_ON
ENDIF
ENDIF
RETURN
/********************************************
REMOVE GIRLFRIEND'S CAR
********************************************/
GF_Dating_Agent_RemoveGFCar:
IF IS_BIT_SET iAgentFlags GF_CAR_GENERATOR_ON
SWITCH_CAR_GENERATOR iGFUnlockedCarGenerator[iGFidx] 0
SWITCH_CAR_GENERATOR iGFLockedCarGenerator[iGFidx] 0
CLEAR_BIT iAgentFlags GF_CAR_GENERATOR_ON
ENDIF
RETURN
/********************************************
PRINT UNLOCKED CAR INFO
********************************************/
GF_Dating_Agent_PrintUnlockedCarInfo:
SWITCH iGFidx
CASE COOCHIE
IF NOT IS_BIT_SET iActiveGF CAR_COOCHIE_UNLOCKED_HELP
PRINT_HELP GF_H007 // message to inform player he now has the keys to her car
SET_BIT iActiveGF CAR_COOCHIE_UNLOCKED_HELP
ENDIF
BREAK
CASE MICHELLE
IF NOT IS_BIT_SET iActiveGF CAR_MICHELLE_UNLOCKED_HELP
PRINT_HELP GF_H008 // message to inform player he now has the keys to her car
SET_BIT iActiveGF CAR_MICHELLE_UNLOCKED_HELP
ENDIF
BREAK
CASE KYLIE
IF NOT IS_BIT_SET iActiveGF CAR_KYLIE_UNLOCKED_HELP
PRINT_HELP GF_H009 // message to inform player he now has the keys to her car
SET_BIT iActiveGF CAR_KYLIE_UNLOCKED_HELP
ENDIF
BREAK
CASE BARBARA
IF NOT IS_BIT_SET iActiveGF CAR_BARBARA_UNLOCKED_HELP
PRINT_HELP GF_H010 // message to inform player he now has the keys to her car
SET_BIT iActiveGF CAR_BARBARA_UNLOCKED_HELP
ENDIF
BREAK
CASE SUZIE
IF NOT IS_BIT_SET iActiveGF CAR_SUZIE_UNLOCKED_HELP
PRINT_HELP GF_H011 // message to inform player he now has the keys to her car
SET_BIT iActiveGF CAR_SUZIE_UNLOCKED_HELP
ENDIF
BREAK
CASE MILLIE
IF NOT IS_BIT_SET iActiveGF CAR_MILLIE_UNLOCKED_HELP
PRINT_HELP GF_H012 // message to inform player he now has the keys to her car
SET_BIT iActiveGF CAR_MILLIE_UNLOCKED_HELP
ENDIF
BREAK
ENDSWITCH
RETURN
/*******************************************
CHECK PHONE STATE
********************************************/
GF_Dating_Agent_CheckPhoneState:
SWITCH iPhoneState
CASE MOBILE_INACTIVE
GOSUB GF_Dating_Agent_ResetAppointment
GOSUB GF_Dating_Agent_CheckIfDumpPlayerPhone
GOSUB GF_Dating_Agent_CreateRandomAppointment // Sets the time, returns appoinment bit in iAgentFlags
BREAK
CASE TIME_FOR_CALL
GET_MINUTES_TO_TIME_OF_DAY iHours iMinutes iTemp
IF iTemp <= GF_EARLIEST_MINUTE_FOR_MOBILE_CHECK
IF NOT IS_BIT_SET iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
IF iCaller = iGFidx // if the appointment is set with the girl for this frame
START_NEW_SCRIPT cell_phone_GF iGFidx CALL_DATE
iPhoneState = TIME_FOR_ANSWER
ELSE
IF NOT IS_BIT_SET iActiveGF iCaller
GOSUB GF_Dating_Agent_ResetAppointment
iPhoneState = MOBILE_INACTIVE
ENDIF
ENDIF
ENDIF
ENDIF
BREAK
CASE TIME_FOR_ANSWER
IF NOT IS_BIT_SET iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
IF IS_BIT_SET iAgentFlags MOBILE_CALL_ANSWERED
//--- Player has answered
GOSUB GF_Dating_Agent_CreateDateAppointment
iPhoneState = TIME_FOR_DATE
ELSE
//--- Player has NOT answered
iGFLikesPlayer[iCaller] -= GF_LIKES_PLAYER_DECREMENT_NO_ANSWER
GOSUB GF_Dating_Agent_SynchStats
//--- RESET
GOSUB GF_Dating_Agent_ResetAppointment
iPhoneState = MOBILE_INACTIVE
ENDIF
ENDIF
BREAK
CASE TIME_FOR_DATE
GET_MINUTES_TO_TIME_OF_DAY iHours iMinutes iTemp
IF iTemp <= GF_EARLIEST_MINUTE_FOR_MOBILE_CHECK
iGFidx = iCaller
GOSUB GF_Dating_Agent_PrintHelpAndClearMissedAppointment
iPhoneState = MOBILE_INACTIVE
ENDIF
BREAK
CASE MOBILE_DUMPED
IF NOT IS_BIT_SET iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
IF IS_BIT_SET iAgentFlags MOBILE_CALL_ANSWERED
IF iCaller > -1
AND iCaller < 6
iGFLikesPlayer[iCaller] = GF_HATES_PLAYER
CLEAR_BIT iActiveGF iCaller // remove the girlfriend
ENDIF
iPhoneState = MOBILE_INACTIVE
ELSE
IF iCaller > -1
AND iCaller < 6
//--- Player has not answered... wait until he meets girl
iGFLikesPlayer[iCaller] = GF_DUMP_PLAYER_IMMEDIATELY
ENDIF
iPhoneState = MOBILE_INACTIVE
ENDIF
ENDIF
BREAK
ENDSWITCH
RETURN
/********************************************
CREATE A RANDOM APPOINTMENT
********************************************/
GF_Dating_Agent_CreateRandomAppointment:
GENERATE_RANDOM_INT_IN_RANGE 0 6 iTemp // pick a random girl
IF IS_BIT_SET iActiveGF iTemp // see if this random girl is active
IF iGFLikesPlayer[iTemp] > GF_LIKES_PLAYER_LOW_LIMIT // see if she likes the player and is alive
IF NOT iGFLikesPlayer[iTemp] = GF_HATES_PLAYER
AND NOT iGFLikesPlayer[iGFidx] = GF_IS_DEAD
//--- Generate appointmen
GENERATE_RANDOM_INT_IN_RANGE 1 23 iHours // Hours: 0-23
GENERATE_RANDOM_INT_IN_RANGE 1 59 iMinutes // Minutes: 0-59
iCaller = iTemp
iPhoneState = TIME_FOR_CALL
ENDIF
ENDIF
ENDIF
RETURN
/********************************************
CREATE A DATE APPOINTMENT
********************************************/
GF_Dating_Agent_CreateDateAppointment:
GET_TIME_OF_DAY iHours iMinutes
iMinutes = 31
iHours += 5
IF iHours > 23
iTemp = iHours - 23
iHours = 0 + iTemp
ENDIF
RETURN
/*******************************************
PRINT HELP AND CLEAR MISSED APPOINTMENT
********************************************/
GF_Dating_Agent_PrintHelpAndClearMissedAppointment:
IF iCaller > -1
AND iCaller < 6
iGFLikesPlayer[iCaller] -= GF_LIKES_PLAYER_DECREMENT_MISS_DATE
GOSUB GF_Dating_Agent_SynchStats
IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED
AND iGFLikesPlayer[iCaller] > GF_LIKES_PLAYER_LOW_LIMIT
SWITCH iCaller
CASE COOCHIE
PRINT_HELP GF_APP0 //You missed your appointment with <name>. She won't be happy.
BREAK
CASE MICHELLE
PRINT_HELP GF_APP1
BREAK
CASE KYLIE
PRINT_HELP GF_APP2
BREAK
CASE BARBARA
PRINT_HELP GF_APP3
BREAK
CASE SUZIE
PRINT_HELP GF_APP4
BREAK
CASE MILLIE
PRINT_HELP GF_APP5
BREAK
ENDSWITCH
CLEAR_BIT iAgentFlags MOBILE_CALL_ANSWERED
CLEAR_BIT iAgentFlags iCaller // Remove the appointment flag
iCaller = -1 // mark the caller as null
ENDIF
ENDIF
RETURN
/********************************************
RESET APPOINTMENT
********************************************/
GF_Dating_Agent_ResetAppointment:
iCaller = -1
CLEAR_BIT iAgentFlags MOBILE_CALL_ANSWERED
CLEAR_BIT iAgentFlags iGFidx // Remove the appointment flag
RETURN
/********************************************
CREATE A RANDOM DATE
********************************************/
GF_Dating_Agent_CreateRandomDate:
//--- Create a random Date
GENERATE_RANDOM_INT_IN_RANGE 0 45 iTemp
IF iTemp > 10
IF iTemp > 20
IF iTemp > 30
IF IS_BIT_SET iGFLikesOnDate[iGFidx] LIKES_TO_DRIVE // 31 to 45
iTemp = GIRL_DRIVE
ELSE
IF iTemp > 35 // 36 to 45
iTemp = DRIVE
ELSE // 31 to 35
iTemp = DANCE
ENDIF
ENDIF
ELSE // 21 to 30
iTemp = DANCE
ENDIF
ELSE //11 to 20
iTemp = DRIVE
ENDIF
ELSE // 0 to 10
iTemp = EAT_OUT
ENDIF
//--- CHEATS TRIGGERED BY CONSOLE COMMANDS
IF IS_BIT_SET iDateReport CHEAT_EAT_OUT
iTemp = EAT_OUT
iDateReport = 0
ENDIF
IF IS_BIT_SET iDateReport CHEAT_DRIVE
iTemp = DRIVE
iDateReport = 0
ENDIF
IF IS_BIT_SET iDateReport CHEAT_DANCE
iTemp = DANCE
iDateReport = 0
ENDIF
IF IS_BIT_SET iDateReport CHEAT_KINKY_SEX
iTemp = KINKY_SEX
iDateReport = 0
ENDIF
IF IS_BIT_SET iDateReport CHEAT_GIRL_DRIVE
iTemp = GIRL_DRIVE
iDateReport = 0
ENDIF
//---------------------------------------------
RETURN
/********************************************
CREATE & INIT GF AS A PED
********************************************/
GF_Dating_Agent_CreateAndInitGF:
SWITCH iGFidx
CASE COOCHIE
WHILE NOT HAS_MODEL_LOADED GANGRL3
OR NOT HAS_MODEL_LOADED MICRO_UZI
REQUEST_MODEL MICRO_UZI
REQUEST_MODEL GANGRL3
WAIT 0
ENDWHILE
CREATE_CHAR PEDTYPE_CIVFEMALE GANGRL3 2402.3899 -1712.8988 13.1402 iCurrentGF
SET_CHAR_HEADING iCurrentGF 180.0
GIVE_WEAPON_TO_CHAR iCurrentGF WEAPONTYPE_MICRO_UZI GF_AMMO_IN_UZI
SET_CURRENT_CHAR_WEAPON iCurrentGF WEAPONTYPE_UNARMED
SET_CHAR_ACCURACY iCurrentGF 75
COPY_SHARED_CHAR_DECISION_MAKER DM_PED_RANDOM_WEAK iGF_GlobalDM_Weak_Gang
ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE iGF_GlobalDM_Weak_Gang EVENT_ACQUAINTANCE_PED_HATE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE
ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE iGF_GlobalDM_Weak_Gang EVENT_ACQUAINTANCE_PED_DISLIKE TASK_SIMPLE_GANG_DRIVEBY 0.0 100.0 0.0 0.0 TRUE FALSE
ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE iGF_GlobalDM_Weak_Gang EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL 0.0 50.0 0.0 0.0 FALSE TRUE
SET_CHAR_DECISION_MAKER iCurrentGF iGF_GlobalDM_Weak_Gang
SET_CHAR_RELATIONSHIP iCurrentGF ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT
SET_CHAR_RELATIONSHIP iCurrentGF ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_NMEX
SET_CHAR_RELATIONSHIP iCurrentGF ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_SFMEX
SET_CHAR_RELATIONSHIP iCurrentGF ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_VIET
SET_CHAR_RELATIONSHIP iCurrentGF ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_MAFIA
SET_CHAR_RELATIONSHIP iCurrentGF ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_TRIAD
SET_CHAR_RELATIONSHIP iCurrentGF ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_SMEX
SET_CHAR_STAY_IN_SAME_PLACE iCurrentGF TRUE
SET_CHAR_SUFFERS_CRITICAL_HITS iCurrentGF FALSE
SET_CHAR_NEVER_TARGETTED iCurrentGF TRUE
SET_CHAR_PROOFS iCurrentGF FALSE FALSE TRUE TRUE FALSE
SET_CHAR_HEALTH iCurrentGF 500
DONT_REMOVE_CHAR iCurrentGF
TASK_STAND_STILL iCurrentGF -1
BREAK
CASE MICHELLE
WHILE NOT HAS_MODEL_LOADED MECGRL3
REQUEST_MODEL MECGRL3
WAIT 0
ENDWHILE
CREATE_CHAR PEDTYPE_CIVFEMALE MECGRL3 -1799.8746 1202.0568 24.1328 iCurrentGF
SET_CHAR_HEADING iCurrentGF 180.0
SET_CHAR_DECISION_MAKER iCurrentGF DM_PED_INDOORS
SET_CHAR_STAY_IN_SAME_PLACE iCurrentGF TRUE
SET_CHAR_SUFFERS_CRITICAL_HITS iCurrentGF FALSE
SET_CHAR_NEVER_TARGETTED iCurrentGF TRUE
SET_CHAR_PROOFS iCurrentGF FALSE FALSE TRUE TRUE FALSE
SET_CHAR_HEALTH iCurrentGF 500
DONT_REMOVE_CHAR iCurrentGF
TASK_STAND_STILL iCurrentGF -1
BREAK
CASE KYLIE
WHILE NOT HAS_MODEL_LOADED GUNGRL3
REQUEST_MODEL GUNGRL3
WAIT 0
ENDWHILE
CREATE_CHAR PEDTYPE_CIVFEMALE GUNGRL3 -384.6795 -1438.8401 25.3281 iCurrentGF
SET_CHAR_HEADING iCurrentGF 268.2687
COPY_SHARED_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH iGF_GlobalDM_Tough
ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE iGF_GlobalDM_Tough EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL 0.0 50.0 0.0 0.0 FALSE TRUE
SET_CHAR_DECISION_MAKER iCurrentGF iGF_GlobalDM_Tough
SET_CHAR_STAY_IN_SAME_PLACE iCurrentGF TRUE
SET_CHAR_SUFFERS_CRITICAL_HITS iCurrentGF FALSE
SET_CHAR_NEVER_TARGETTED iCurrentGF TRUE
SET_CHAR_PROOFS iCurrentGF FALSE FALSE TRUE TRUE FALSE
SET_CHAR_HEALTH iCurrentGF 500
DONT_REMOVE_CHAR iCurrentGF
TASK_STAND_STILL iCurrentGF -1
BREAK
CASE BARBARA
WHILE NOT HAS_MODEL_LOADED COPGRL3
REQUEST_MODEL COPGRL3
WAIT 0
ENDWHILE
CREATE_CHAR PEDTYPE_CIVFEMALE COPGRL3 -1390.3027 2641.0662 54.9844 iCurrentGF
SET_CHAR_HEADING iCurrentGF 187.2
COPY_SHARED_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH iGF_GlobalDM_Tough
ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE iGF_GlobalDM_Tough EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL 0.0 50.0 0.0 0.0 FALSE TRUE
SET_CHAR_DECISION_MAKER iCurrentGF iGF_GlobalDM_Tough
SET_CHAR_STAY_IN_SAME_PLACE iCurrentGF TRUE
SET_CHAR_SUFFERS_CRITICAL_HITS iCurrentGF FALSE
SET_CHAR_NEVER_TARGETTED iCurrentGF TRUE
SET_CHAR_PROOFS iCurrentGF FALSE FALSE TRUE TRUE FALSE
SET_CHAR_HEALTH iCurrentGF 500
DONT_REMOVE_CHAR iCurrentGF
TASK_STAND_STILL iCurrentGF -1
BREAK
CASE SUZIE
WHILE NOT HAS_MODEL_LOADED NURGRL3
REQUEST_MODEL NURGRL3
WAIT 0
ENDWHILE
CREATE_CHAR PEDTYPE_CIVFEMALE NURGRL3 -2573.3567 1155.0908 54.7347 iCurrentGF
SET_CHAR_HEADING iCurrentGF 167.8854
COPY_SHARED_CHAR_DECISION_MAKER DM_PED_RANDOM_TOUGH iGF_GlobalDM_Tough
ADD_CHAR_DECISION_MAKER_EVENT_RESPONSE iGF_GlobalDM_Tough EVENT_ACQUAINTANCE_PED_HATE TASK_COMPLEX_KILL_PED_ON_FOOT_STAND_STILL 0.0 50.0 0.0 0.0 FALSE TRUE
SET_CHAR_DECISION_MAKER iCurrentGF iGF_GlobalDM_Tough
SET_CHAR_STAY_IN_SAME_PLACE iCurrentGF TRUE
SET_CHAR_SUFFERS_CRITICAL_HITS iCurrentGF FALSE
SET_CHAR_NEVER_TARGETTED iCurrentGF TRUE
SET_CHAR_PROOFS iCurrentGF FALSE FALSE TRUE TRUE FALSE
SET_CHAR_HEALTH iCurrentGF 500
DONT_REMOVE_CHAR iCurrentGF
TASK_STAND_STILL iCurrentGF -1
BREAK
CASE MILLIE
WHILE NOT HAS_MODEL_LOADED CROGRL3
REQUEST_MODEL CROGRL3
WAIT 0
ENDWHILE
CREATE_CHAR PEDTYPE_CIVFEMALE CROGRL3 2037.4762 2719.7939 10.5436 iCurrentGF
SET_CHAR_HEADING iCurrentGF 9.2
SET_CHAR_DECISION_MAKER iCurrentGF DM_PED_INDOORS
SET_CHAR_STAY_IN_SAME_PLACE iCurrentGF TRUE
SET_CHAR_SUFFERS_CRITICAL_HITS iCurrentGF FALSE
SET_CHAR_NEVER_TARGETTED iCurrentGF TRUE
SET_CHAR_PROOFS iCurrentGF FALSE FALSE TRUE TRUE FALSE
SET_CHAR_HEALTH iCurrentGF 500
DONT_REMOVE_CHAR iCurrentGF
TASK_STAND_STILL iCurrentGF -1
BREAK
ENDSWITCH
RETURN
/********************************************
UPDATE GIRLFRIEND STATISTICS
********************************************/
GF_Dating_Agent_UpdateGFStats:
//--- This subroutine reads the DATE REPORT bitfield and updates the statistics accordingly
IF IS_BIT_SET iDateReport DATE_WAS_SUCCESS // Date Successful
// Increment Likes Player
IF iGFLikesPlayer[iGFidx] <= 0
AND iGFLikesPlayer[iGFidx] > GF_LIKES_PLAYER_LOW_LIMIT
iGFLikesPlayer[iGFidx] = 0 // reset the lower boundary or the progress will still be negative
iGFLikesPlayer[iGFidx] += GF_LIKES_PLAYER_INCREMENT
ELSE
iGFLikesPlayer[iGFidx] += GF_LIKES_PLAYER_INCREMENT
ENDIF
GOSUB GF_Dating_Agent_SynchStats
//--- Update the good dates counter
INCREMENT_INT_STAT DATES 1
ELSE
//--- Check if the date took place at all
IF IS_BIT_SET iDateReport DATE_WAS_ABORTED
//--- Check if the date was not aborted because the girl simply wanted to dump the player
IF NOT iGFLikesPlayer[iGFidx] = GF_HATES_PLAYER
AND NOT iGFLikesPlayer[iGFidx] = GF_IS_DEAD
//--- The date never actually started, but she cannot be totally happy
iGFLikesPlayer[iGFidx]-= GF_LIKES_PLAYER_DECREMENT_DATE_ABORT
GOSUB GF_Dating_Agent_SynchStats
ENDIF
ELSE
//--- This is a disastrous date
iGFLikesPlayer[iGFidx]-= GF_LIKES_PLAYER_DECREMENT // Decrement Likes Player
GOSUB GF_Dating_Agent_SynchStats
//--- Update the bad dates counter
INCREMENT_INT_STAT BAD_DATES 1 // the overall number of bad dates
ENDIF
ENDIF
IF IS_BIT_SET iDateReport SEX_WAS_GOOD // Sex was Good
// Increment Likes Player
iGFLikesPlayer[iGFidx] += GF_LIKES_PLAYER_INCREMENT
GOSUB GF_Dating_Agent_SynchStats
INCREMENT_INT_STAT TIMES_SCORED_WITH_GIRL 1
ELSE
//--- Make sure that the player acutally had sex, and was shit
IF IS_BIT_SET iDateReport PLAYER_AGREES_TO_SEX
//--- Decrement Likes Player
iGFLikesPlayer[iGFidx] -= GF_LIKES_PLAYER_DECREMENT
GOSUB GF_Dating_Agent_SynchStats
ENDIF
ENDIF
//--- Check if she dosn't like the player anymore, if so instruct her to dump him
IF NOT iGFLikesPlayer[iGFidx] = GF_HATES_PLAYER
AND NOT iGFLikesPlayer[iGFidx] = GF_IS_DEAD
IF iGFLikesPlayer[iGFidx] <= GF_LIKES_PLAYER_LOW_LIMIT
iGFLikesPlayer[iGFidx] = GF_DUMP_PLAYER_IMMEDIATELY
ENDIF
ENDIF
//--- The DATE REPORT has been read fully, so clean it for the next time
iDateReport = 0
RETURN
/********************************************
CHECK IF GIRL SHOULD DUMP PLAYER (PHONE)
********************************************/
GF_Dating_Agent_CheckIfDumpPlayerPhone:
IF NOT iGFLikesPlayer[iGFidx] = GF_HATES_PLAYER
AND NOT iGFLikesPlayer[iGFidx] = GF_IS_DEAD
IF NOT iGFLikesPlayer[iGFidx] = GF_DUMP_PLAYER_IMMEDIATELY
IF iGFLikesPlayer[iGFidx] <= GF_LIKES_PLAYER_LOW_LIMIT
iPhoneState = MOBILE_DUMPED
iCaller = iGFidx
START_NEW_SCRIPT cell_phone_GF iCaller CALL_DUMP
RETURN
ENDIF
ENDIF
ENDIF
RETURN
/********************************************
REMOVE GIRLFRIEND MODEL
********************************************/
GF_Dating_Agent_RemoveGF:
SWITCH iGFidx
CASE COOCHIE
MARK_MODEL_AS_NO_LONGER_NEEDED GANGRL3
MARK_MODEL_AS_NO_LONGER_NEEDED MICRO_UZI
REMOVE_DECISION_MAKER iGF_GlobalDM_Weak_Gang
BREAK
CASE MICHELLE
MARK_MODEL_AS_NO_LONGER_NEEDED MECGRL3
BREAK
CASE KYLIE
MARK_MODEL_AS_NO_LONGER_NEEDED GUNGRL3
REMOVE_DECISION_MAKER iGF_GlobalDM_Tough
BREAK
CASE BARBARA
MARK_MODEL_AS_NO_LONGER_NEEDED COPGRL3
REMOVE_DECISION_MAKER iGF_GlobalDM_Tough
BREAK
CASE SUZIE
MARK_MODEL_AS_NO_LONGER_NEEDED NURGRL3
REMOVE_DECISION_MAKER iGF_GlobalDM_Tough
BREAK
CASE MILLIE
MARK_MODEL_AS_NO_LONGER_NEEDED CROGRL3
BREAK
ENDSWITCH
IF IS_BIT_SET iDateReport GIRL_IS_BACK_AT_HOME
//--- GIRL is in front of her house
DELETE_CHAR iCurrentGF
ELSE
IF IS_BIT_SET iDateReport PLAYER_TWO_TIMING
//--- Wherever she has left the car, she must be deleted
DELETE_CHAR iCurrentGF
ELSE
IF iGFLikesPlayer[iGFidx] = GF_IS_DEAD
//--- If she is dead the body should stay there for a while
MARK_CHAR_AS_NO_LONGER_NEEDED iCurrentGF
ELSE
//--- She is probably running away in the distance, so fade her
REMOVE_CHAR_ELEGANTLY iCurrentGF
ENDIF
ENDIF
ENDIF
//--- Clear the global var for the dance minigame
iDanceGirlfriend = 0
IF IS_BIT_SET iDateReport MEET_TOMORROW
GET_CURRENT_DAY_OF_WEEK iTemp
++iTemp
IF iTemp > 7
iTemp = 1
ENDIF
//--- Clean her diary so that only one day can be set at any given time
GOSUB GF_Dating_Agent_CleanFreeDays
//--- Find the right bit to store this day in the diary
iTemp += H_10PM // the last hours
//--- Store the day and mark the "skip a day" bit
SET_BIT iGFDiaryOfBusyHours[iGFidx] iTemp
SET_BIT iGFDiaryOfBusyHours[iGFidx] NEXT_FREE_DAY
ENDIF
RETURN
/*******************************************
CLEAN FREE DAYS IN DIARY
********************************************/
GF_Dating_Agent_CleanFreeDays:
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] NEXT_FREE_DAY
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] D_SUN
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] D_MON
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] D_TUE
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] D_WED
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] D_THU
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] D_FRI
CLEAR_BIT iGFDiaryOfBusyHours[iGFidx] D_SAT
RETURN
/*******************************************
IS PLAYER IN GIMP SUIT
********************************************/
GF_Dating_Agent_IsPlayerInGimpSuit:
IF IS_PLAYER_PLAYING PLAYER1
IF IS_PLAYER_WEARING Player1 CLOTHES_TEX_EXTRA1 gimpleg
iTemp = 1
ELSE
iTemp = 0
ENDIF
ENDIF
RETURN
/********************************************
CLEAN GIRLFRIEND STATS
********************************************/
GF_Dating_Agent_DeleteStats:
SHOW_UPDATE_STATS FALSE
SWITCH iGFidx
CASE COOCHIE
SET_INT_STAT GIRLFRIEND_DENISE 0
BREAK
CASE MICHELLE
SET_INT_STAT GIRLFRIEND_MICHELLE 0
BREAK
CASE KYLIE
SET_INT_STAT GIRLFRIEND_HELENA 0
BREAK
CASE BARBARA
SET_INT_STAT GIRLFRIEND_BARBARA 0
BREAK
CASE SUZIE
SET_INT_STAT GIRLFRIEND_KATIE 0
BREAK
CASE MILLIE
SET_INT_STAT GIRLFRIEND_MILLIE 0
BREAK
ENDSWITCH
SHOW_UPDATE_STATS TRUE
RETURN
/********************************************
SYNCH GIRLFRIEND STATS
********************************************/
GF_Dating_Agent_SynchStats:
SWITCH iGFidx
CASE COOCHIE
GET_INT_STAT GIRLFRIEND_DENISE iTempStat
IF iTempStat < iGFLikesPlayer[COOCHIE]
IF iGFLikesPlayer[COOCHIE] > 100
iGFLikesPlayer[COOCHIE] = 100
ENDIF
IF iGFLikesPlayer[COOCHIE] < 0
SET_INT_STAT GIRLFRIEND_DENISE 0
ELSE
iTempStat -= iGFLikesPlayer[COOCHIE]
ABS iTempStat
INCREMENT_INT_STAT GIRLFRIEND_DENISE iTempStat
ENDIF
ELSE
IF iTempStat > iGFLikesPlayer[COOCHIE]
IF iGFLikesPlayer[COOCHIE] > 100
iGFLikesPlayer[COOCHIE] = 100
ENDIF
IF iGFLikesPlayer[COOCHIE] < 0
SET_INT_STAT GIRLFRIEND_DENISE 0
ELSE
iTempStat -= iGFLikesPlayer[COOCHIE]
DECREMENT_INT_STAT GIRLFRIEND_DENISE iTempStat
ENDIF
ENDIF
ENDIF
BREAK
CASE MICHELLE
GET_INT_STAT GIRLFRIEND_MICHELLE iTempStat
IF iTempStat < iGFLikesPlayer[MICHELLE]
IF iGFLikesPlayer[MICHELLE] > 100
iGFLikesPlayer[MICHELLE] = 100
ENDIF
IF iGFLikesPlayer[MICHELLE] < 0
SET_INT_STAT GIRLFRIEND_MICHELLE 0
ELSE
iTempStat -= iGFLikesPlayer[MICHELLE]
ABS iTempStat
INCREMENT_INT_STAT GIRLFRIEND_MICHELLE iTempStat
ENDIF
ELSE
IF iTempStat > iGFLikesPlayer[MICHELLE]
IF iGFLikesPlayer[MICHELLE] > 100
iGFLikesPlayer[MICHELLE] = 100
ENDIF
IF iGFLikesPlayer[MICHELLE] < 0
SET_INT_STAT GIRLFRIEND_MICHELLE 0
ELSE
iTempStat -= iGFLikesPlayer[MICHELLE]
DECREMENT_INT_STAT GIRLFRIEND_MICHELLE iTempStat
ENDIF
ENDIF
ENDIF
BREAK
CASE KYLIE
GET_INT_STAT GIRLFRIEND_HELENA iTempStat
IF iTempStat < iGFLikesPlayer[KYLIE]
IF iGFLikesPlayer[KYLIE] > 100
iGFLikesPlayer[KYLIE] = 100
ENDIF
IF iGFLikesPlayer[KYLIE] < 0
SET_INT_STAT GIRLFRIEND_HELENA 0
ELSE
iTempStat -= iGFLikesPlayer[KYLIE]
ABS iTempStat
INCREMENT_INT_STAT GIRLFRIEND_HELENA iTempStat
ENDIF
ELSE
IF iTempStat > iGFLikesPlayer[KYLIE]
IF iGFLikesPlayer[KYLIE] > 100
iGFLikesPlayer[KYLIE] = 100
ENDIF
IF iGFLikesPlayer[KYLIE] < 0
SET_INT_STAT GIRLFRIEND_HELENA 0
ELSE
iTempStat -= iGFLikesPlayer[KYLIE]
DECREMENT_INT_STAT GIRLFRIEND_HELENA iTempStat
ENDIF
ENDIF
ENDIF
BREAK
CASE BARBARA
GET_INT_STAT GIRLFRIEND_BARBARA iTempStat
IF iTempStat < iGFLikesPlayer[BARBARA]
IF iGFLikesPlayer[BARBARA] > 100
iGFLikesPlayer[BARBARA] = 100
ENDIF
IF iGFLikesPlayer[BARBARA] < 0
SET_INT_STAT GIRLFRIEND_BARBARA 0
ELSE
iTempStat -= iGFLikesPlayer[BARBARA]
ABS iTempStat
INCREMENT_INT_STAT GIRLFRIEND_BARBARA iTempStat
ENDIF
ELSE
IF iTempStat > iGFLikesPlayer[BARBARA]
IF iGFLikesPlayer[BARBARA] > 100
iGFLikesPlayer[BARBARA] = 100
ENDIF
IF iGFLikesPlayer[BARBARA] < 0
SET_INT_STAT GIRLFRIEND_BARBARA 0
ELSE
iTempStat -= iGFLikesPlayer[BARBARA]
DECREMENT_INT_STAT GIRLFRIEND_BARBARA iTempStat
ENDIF
ENDIF
ENDIF
BREAK
CASE SUZIE
GET_INT_STAT GIRLFRIEND_KATIE iTempStat
IF iTempStat < iGFLikesPlayer[SUZIE]
IF iGFLikesPlayer[SUZIE] > 100
iGFLikesPlayer[SUZIE] = 100
ENDIF
IF iGFLikesPlayer[SUZIE] < 0
SET_INT_STAT GIRLFRIEND_KATIE 0
ELSE
iTempStat -= iGFLikesPlayer[SUZIE]
ABS iTempStat
INCREMENT_INT_STAT GIRLFRIEND_KATIE iTempStat
ENDIF
ELSE
IF iTempStat > iGFLikesPlayer[SUZIE]
IF iGFLikesPlayer[SUZIE] > 100
iGFLikesPlayer[SUZIE] = 100
ENDIF
IF iGFLikesPlayer[SUZIE] < 0
SET_INT_STAT GIRLFRIEND_KATIE 0
ELSE
iTempStat -= iGFLikesPlayer[SUZIE]
DECREMENT_INT_STAT GIRLFRIEND_KATIE iTempStat
ENDIF
ENDIF
ENDIF
BREAK
CASE MILLIE
GET_INT_STAT GIRLFRIEND_MILLIE iTempStat
IF iTempStat < iGFLikesPlayer[MILLIE]
IF iGFLikesPlayer[MILLIE] > 100
iGFLikesPlayer[MILLIE] = 100
ENDIF
IF iGFLikesPlayer[MILLIE] < 0
SET_INT_STAT GIRLFRIEND_MILLIE 0
ELSE
iTempStat -= iGFLikesPlayer[MILLIE]
ABS iTempStat
INCREMENT_INT_STAT GIRLFRIEND_MILLIE iTempStat
ENDIF
ELSE
IF iTempStat > iGFLikesPlayer[MILLIE]
IF iGFLikesPlayer[MILLIE] > 100
iGFLikesPlayer[MILLIE] = 100
ENDIF
IF iGFLikesPlayer[MILLIE] < 0
SET_INT_STAT GIRLFRIEND_MILLIE 0
ELSE
iTempStat -= iGFLikesPlayer[MILLIE]
DECREMENT_INT_STAT GIRLFRIEND_MILLIE iTempStat
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
RETURN
/*******************************************
DATING AGENT MISSION CLEANUP
********************************************/
GF_Dating_Agent_MissionCleanUp:
IF iAgentState = GF_LAUNCH_DATE_OR_SEX // Dating Agent is managing a date!
//--- Check that the current GF is an active one (just in case)
IF IS_BIT_SET iActiveGF iGFidx
//--- do the baisc date housekeeping and stats update
GOSUB GF_Dating_Agent_RemoveGF
GOSUB GF_Dating_Agent_UpdateGFStats
ENDIF
ENDIF
//--- Put the agent back to idle
iAgentState = GF_IDLE_TRY_TO_LOCATE_PLAYER
//--- Clear all active appointments
iTemp2 = -1
REPEAT 6 iTemp
IF IS_BIT_SET iAgentFlags iTemp
CLEAR_BIT iAgentFlags iTemp // APPOINTMENT_ON_FOR_CURRENT_GF
ENDIF
ENDREPEAT
//--- Re-enable the stat updates (bar on screen) just in case we aborted while these were set off
SHOW_UPDATE_STATS TRUE
iGFTimeStep = GF_TIME_STEP_SLOW
RETURN
/********************************************
KEYBOARD CONSOLE COMMANDS
********************************************/
GF_Dating_Agent_Console_Commands:
GET_LATEST_CONSOLE_COMMAND GF_txtConsoleIn
IF NOT IS_STRING_EMPTY $GF_txtConsoleIn
$GF_txtConsoleCheck = DOCOOCHIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF COOCHIE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DOMICHELLE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF MICHELLE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DOKYLIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF KYLIE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DOBARBARA
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF BARBARA
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DOSUZIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF SUZIE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DOMILLIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF MILLIE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = FASTDATE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF GF_CHEAT_MODE_ON
//--- All girls like the player as much as needed for sex
iGFLikesPlayer[COOCHIE] = iGFSelfRespect[COOCHIE]
iGFLikesPlayer[MICHELLE] = iGFSelfRespect[MICHELLE]
iGFLikesPlayer[BARBARA] = iGFSelfRespect[BARBARA]
iGFLikesPlayer[KYLIE] = iGFSelfRespect[KYLIE]
iGFLikesPlayer[SUZIE] = iGFSelfRespect[SUZIE]
iGFLikesPlayer[MILLIE] = iGFSelfRespect[MILLIE]
SET_BIT iDateReport FASTDATE_ON
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = GOCOOCHIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer 2405.2124 -1720.6879 12.6365
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = GOMICHELLE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer -1788.0 1202.0 30.0
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = GOKYLIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer -371.4376 -1440.0717 24.7209
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = GOBARBARA
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer -1400.0 2640.0 -100.0
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = GOSUZIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer -2570.5107 1139.5815 54.8547
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = GOMILLIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer 2028.3471 2736.96890 10.8603
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DATEFOOD
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF GF_CHEAT_MODE_ON
SET_BIT iDateReport CHEAT_EAT_OUT // This is dependent on fast date being on to be activated
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DATEDRIVE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF GF_CHEAT_MODE_ON
iGFLikesPlayer[COOCHIE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[MICHELLE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[BARBARA] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[KYLIE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[SUZIE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[MILLIE] = GF_LIKES_PLAYER_STAGE2
SET_BIT iDateReport CHEAT_DRIVE // This is dependent on fast date being on to be activated
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DATEDANCE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF GF_CHEAT_MODE_ON
iGFLikesPlayer[COOCHIE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[MICHELLE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[BARBARA] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[KYLIE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[SUZIE] = GF_LIKES_PLAYER_STAGE2
iGFLikesPlayer[MILLIE] = GF_LIKES_PLAYER_STAGE2
SET_BIT iDateReport CHEAT_DANCE // This is dependent on fast date being on to be activated
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DATESPANK
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF GF_CHEAT_MODE_ON
SET_BIT iDateReport CHEAT_KINKY_SEX // This is dependent on fast date being on to be activated
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DATESHEDRIVES
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF GF_CHEAT_MODE_ON
iGFLikesPlayer[MICHELLE] = GF_LIKES_PLAYER_STAGE2
SET_BIT iDateReport CHEAT_GIRL_DRIVE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = MEETMICHELLE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer -2026.9199 -99.9395 34.1641
SET_CHAR_HEADING scplayer 180.0
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = MEETKYLIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
flag_la1fin1_mission_counter = 2
SET_CHAR_COORDINATES scplayer 243.9633 -161.2493 0.5781
SET_CHAR_HEADING scplayer 291.5735
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = MEETBARBARA
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer -1411.2939 2637.6094 54.6875
SET_CHAR_HEADING scplayer 348.9253
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = MEETSUZIE
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
SET_CHAR_COORDINATES scplayer -2266.2529 -155.7216 34.3125
SET_CHAR_HEADING scplayer 85.0
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = GIMPSUIT
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
IF IS_PLAYER_PLAYING PLAYER1
GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 gimpleg gimpleg CLOTHES_TEX_EXTRA1
BUILD_PLAYER_MODEL player1
ENDIF
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = TWOTIMING
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SET_BIT iActiveGF GF_CHEAT_MODE_ON
SET_BIT iDateReport CHEAT_TWO_TIMING
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = ELEGANTMAN
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
iGFDesiredSexAppeal[COOCHIE] = 0
iGFDesiredSexAppeal[MICHELLE] = 0
iGFDesiredSexAppeal[BARBARA] = 0
iGFDesiredSexAppeal[KYLIE] = 0
iGFDesiredSexAppeal[SUZIE] = 0
iGFDesiredSexAppeal[MILLIE] = 0
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = SHOWENTRY
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SWITCH_ENTRY_EXIT FDrest1 TRUE
SWITCH_ENTRY_EXIT rest2 TRUE
SWITCH_ENTRY_EXIT diner1 TRUE
SWITCH_ENTRY_EXIT diner2 TRUE
SWITCH_ENTRY_EXIT TSdiner TRUE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = HIDEENTRY
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
SWITCH_ENTRY_EXIT FDrest1 FALSE
SWITCH_ENTRY_EXIT rest2 FALSE
SWITCH_ENTRY_EXIT diner1 FALSE
SWITCH_ENTRY_EXIT diner2 FALSE
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = UNCENSORED
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
iCensoredVersion = 0
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = STATSUP
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
iGFLikesPlayer[iGFidx] += 10
GOSUB GF_Dating_Agent_SynchStats
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = STATSDOWN
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
iGFLikesPlayer[iGFidx] -= 10
GOSUB GF_Dating_Agent_SynchStats
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
$GF_txtConsoleCheck = DUMPME
IF $GF_txtConsoleCheck = $GF_txtConsoleIn
iGFLikesPlayer[iGFidx] = GF_LIKES_PLAYER_LOW_LIMIT
GOSUB GF_Dating_Agent_SynchStats
RESET_LATEST_CONSOLE_COMMAND
RETURN
ENDIF
ENDIF
RETURN
/*******************************************
RUN DEBUG
********************************************/
GF_Dating_Agent_Debug:
WRITE_DEBUG I__________________________I
WRITE_DEBUG H
WRITE_DEBUG G
WRITE_DEBUG F
WRITE_DEBUG E
WRITE_DEBUG D
WRITE_DEBUG $txtCurrZone
WRITE_DEBUG_WITH_INT IGFIDX iGFidx
SWITCH iAgentState
CASE 0
WRITE_DEBUG STATE0__
BREAK
CASE 1
WRITE_DEBUG STATE1__
BREAK
CASE 2
WRITE_DEBUG STATE2__
BREAK
CASE 3
WRITE_DEBUG STATE3__
BREAK
CASE 4
WRITE_DEBUG STATE4__
BREAK
DEFAULT
WRITE_DEBUG UNTRAPPED_STATE___
BREAK
ENDSWITCH
WRITE_DEBUG I__________________________I
RETURN
}
MISSION_START
START_NEW_SCRIPT Int_Manager
MISSION_END
/*********************************************************************************************************************************************
************************************************ **********************************************************************
************************************************ INTERIORS MANAGER *********************************************************************
************************************************ **********************************************************************
**********************************************************************************************************************************************/
{
Int_Manager:
SCRIPT_NAME INTMAN
//--- GLOBALS
VAR_INT iTerminateAllAmbience iAreaCode iStoredAreaCode
VAR_TEXT_LABEL16 txtEntryExit
VAR_INT iGlobalPedPanicDM iGlobalShopkeeperDM
VAR_INT iSetClothesPanic iWantedOnEntry iCheckForWeapons iCreateDecisionMakers
//--- LOCALS
LVAR_INT iState iStreamedScriptInstances iAmbienceHasTerminated
iGlobalPedPanicDM = -1
IF iGlobalPedPanicDM = 9999 // fudge to fool the excellent compiler
COPY_CHAR_DECISION_MAKER DM_PED_INDOORS iGlobalPedPanicDM
COPY_CHAR_DECISION_MAKER DM_PED_INDOORS iGlobalShopkeeperDM
ENDIF
//---MAIN LOOP---
Int_Manager_Main_Loop:
IF IS_PLAYER_PLAYING PLAYER1
GOSUB Int_Manager_State_Machine
ENDIF
WAIT 0
GOTO Int_Manager_Main_Loop
//---END OF MAIN LOOP---
/********************************************
STATE MACHINE
********************************************/
Int_Manager_State_Machine:
SWITCH iState
CASE 0 //---STATE 0 - Waiting to enter an entry exit
GOSUB Int_Manager_ENTRY
BREAK
CASE 1 //---STATE 1 - Waiting to leave an entry exit
GOSUB Int_Manager_EXIT
BREAK
ENDSWITCH
RETURN
/********************************************
ENTRY
********************************************/
Int_Manager_ENTRY:
GET_CHAR_AREA_VISIBLE scplayer iAreaCode
IF NOT iAreaCode = 0
GET_NAME_OF_ENTRY_EXIT_CHAR_USED scplayer txtEntryExit
//--- Find out if the area has changed due to an entry exit point
IF NOT IS_STRING_EMPTY $txtEntryExit
//--- OK. Store this area code
iStoredAreaCode = iAreaCode
//--- Grab the current wanted level
IF IS_PLAYER_PLAYING PLAYER1
STORE_WANTED_LEVEL PLAYER1 iWantedOnEntry
ENDIF
//--- Fill the shop string for Willie
GET_LOADED_SHOP shop_name
//--- Reset the global flags that control the ambience
iCreateDecisionMakers = 0
iTerminateAllAmbience = 0
iAmbienceHasTerminated = 0
//--- Reset the global panic flags - but only if not on a mission
IF flag_player_on_mission = 0
iSetBarPanic = 0
iSetCasinoPanic = 0
iBouncerAction = 0
iSetPizzaPanic = 0
iSetOTBPanic = 0
iSetSTRIPPanic = 0
iSetRCPanic = 0
ENDIF
//------------------------
// ENTRY EXIT LABEL CHECKS
//------------------------
//--- WARDROBE
IF $txtEntryExit = &CHANGER
AND iAreaCode = 14
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT wardrobe.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT wardrobe.sc
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED wardrobe.sc
START_NEW_STREAMED_SCRIPT wardrobe.sc
++iState // move on to the wait state
RETURN
ENDIF
ENDIF
ENDIF
//--- CASINO
IF $txtEntryExit = &TRICAS
OR $txtEntryExit = &MAFCAS
OR $txtEntryExit = &CASINO2
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Bar_Staff.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Bar_Staff.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Bouncer.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Bouncer.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Customer_Panic.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Customer_Panic.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT casino_ambience.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT casino_ambience.sc
ENDIF
REQUEST_ANIMATION BAR
REQUEST_ANIMATION CASINO
IF $txtEntryExit = &MAFCAS
REQUEST_MODEL VMAFF1
REQUEST_MODEL VMAFF3
REQUEST_MODEL VMAFF2
REQUEST_MODEL VWFYWAI
ENDIF
IF $txtEntryExit = &TRICAS
REQUEST_MODEL BMYBOUN
REQUEST_MODEL WMYBOUN
REQUEST_MODEL VWFYWA2
ENDIF
IF $txtEntryExit = &CASINO2
REQUEST_MODEL BMYBOUN
REQUEST_MODEL WMYBOUN
REQUEST_MODEL VWFYCRP
ENDIF
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED casino_ambience.sc
START_NEW_STREAMED_SCRIPT casino_ambience.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED Bar_Staff.sc
AND HAS_STREAMED_SCRIPT_LOADED Bouncer.sc
AND HAS_STREAMED_SCRIPT_LOADED Customer_Panic.sc
AND HAS_STREAMED_SCRIPT_LOADED casino_ambience.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
//--- BAR & CLUB
IF $txtEntryExit = &BAR1
OR $txtEntryExit = &BAR2
OR $txtEntryExit = &UFOBAR
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Bar_Staff.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Bar_Staff.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Customer_Panic.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Customer_Panic.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT bar_ambience.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT bar_ambience.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Dance.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Dance.sc
ENDIF
REQUEST_ANIMATION BAR
IF $txtEntryExit = &BAR1
REQUEST_ANIMATION DANCING
ENDIF
REQUEST_MODEL VWFYCRP
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED bar_ambience.sc
START_NEW_STREAMED_SCRIPT bar_ambience.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED Bar_Staff.sc
AND HAS_STREAMED_SCRIPT_LOADED Customer_Panic.sc
AND HAS_STREAMED_SCRIPT_LOADED bar_ambience.sc
AND HAS_STREAMED_SCRIPT_LOADED Dance.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
//--- OTB
IF $txtEntryExit = &GENOTB
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT OTB_Staff.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT OTB_Staff.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Customer_Panic.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Customer_Panic.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT OTB_ambience.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT OTB_ambience.sc
ENDIF
REQUEST_ANIMATION OTB
REQUEST_ANIMATION INT_SHOP
REQUEST_MODEL VBFYCRP
REQUEST_MODEL VWFYCRP
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED OTB_ambience.sc
START_NEW_STREAMED_SCRIPT OTB_ambience.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED OTB_Staff.sc
AND HAS_STREAMED_SCRIPT_LOADED Customer_Panic.sc
AND HAS_STREAMED_SCRIPT_LOADED OTB_ambience.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
//--- STRIP CLUB
IF $txtEntryExit = &LASTRIP
OR $txtEntryExit = &STRIP2
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Bar_Staff.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Bar_Staff.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Bouncer.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Bouncer.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Customer_Panic.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Customer_Panic.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Strip_ambience.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Strip_ambience.sc
ENDIF
REQUEST_ANIMATION BAR
REQUEST_ANIMATION STRIP
REQUEST_MODEL BMYBOUN
REQUEST_MODEL WMYBOUN
REQUEST_MODEL VWFYCRP
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED Strip_ambience.sc
START_NEW_STREAMED_SCRIPT Strip_ambience.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED Bar_Staff.sc
AND HAS_STREAMED_SCRIPT_LOADED Bouncer.sc
AND HAS_STREAMED_SCRIPT_LOADED Customer_Panic.sc
AND HAS_STREAMED_SCRIPT_LOADED Strip_ambience.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
//--- CLOTHES SHOPS
IF player_using_wardrobe = 0
IF $txtEntryExit = cschp
OR $txtEntryExit = cssprt
OR $txtEntryExit = lacs1
OR $txtEntryExit = clothgp
OR $txtEntryExit = csdesgn
OR $txtEntryExit = csexl
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT clothes.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT clothes.sc
ENDIF
REQUEST_ANIMATION INT_SHOP
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED clothes.sc
iSetClothesPanic = 0
START_NEW_STREAMED_SCRIPT clothes.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
ENDIF
//--- FAST FOOD SHOPS
IF $txtEntryExit = &FDPIZA
OR $txtEntryExit = &FDCHICK
OR $txtEntryExit = &FDBURG
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT junkfud.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT junkfud.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT FoodBrains.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT FoodBrains.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT ShopKeeper.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT ShopKeeper.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Customer_Panic.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Customer_Panic.sc
ENDIF
REQUEST_ANIMATION FOOD
REQUEST_ANIMATION INT_SHOP
IF $txtEntryExit = &FDPIZA
REQUEST_MODEL WMYPIZZ
REQUEST_MODEL PIZZAHIGH
REQUEST_MODEL CJ_PIZZA_1
REQUEST_MODEL CJ_PIZZA_2
ENDIF
IF $txtEntryExit = &FDCHICK
REQUEST_MODEL WMYBELL
REQUEST_MODEL BURGERHIGH
REQUEST_MODEL CJ_BURG_1
REQUEST_MODEL CJ_BURG_2
ENDIF
IF $txtEntryExit = &FDBURG
REQUEST_MODEL WFYBURG
REQUEST_MODEL BURGERHIGH
REQUEST_MODEL CJ_BURG_1
REQUEST_MODEL CJ_BURG_2
ENDIF
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED junkfud.sc
START_NEW_STREAMED_SCRIPT junkfud.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED FoodBrains.sc
IF $txtEntryExit = &FDPIZA
START_NEW_STREAMED_SCRIPT FoodBrains.sc 0
ELSE
IF $txtEntryExit = &FDCHICK
START_NEW_STREAMED_SCRIPT FoodBrains.sc 1
ELSE
IF $txtEntryExit = &FDBURG
START_NEW_STREAMED_SCRIPT FoodBrains.sc 2
ENDIF
ENDIF
ENDIF
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED junkfud.sc
AND HAS_STREAMED_SCRIPT_LOADED FoodBrains.sc
AND HAS_STREAMED_SCRIPT_LOADED ShopKeeper.sc
AND HAS_STREAMED_SCRIPT_LOADED Customer_Panic.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
//--- BARBER SHOPS
IF $txtEntryExit = &BARBERS
OR $txtEntryExit = &BARBER2
OR $txtEntryExit = &BARBER3
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT barber.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT barber.sc
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED barber.sc
START_NEW_STREAMED_SCRIPT barber.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
ENDIF
//--- TATTOO SHOPS
IF $txtEntryExit = &TATTOO
OR $txtEntryExit = &TATTO2
OR $txtEntryExit = &TATTO3
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT tattoo.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT tattoo.sc
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED tattoo.sc
START_NEW_STREAMED_SCRIPT tattoo.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
ENDIF
//--- ZERO's RC Shop
IF $txtEntryExit = &RCPLAY
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Zero_ambience.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Zero_ambience.sc
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT Customer_Panic.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT Customer_Panic.sc
ENDIF
REQUEST_MODEL WMYCLOT
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED Zero_ambience.sc
START_NEW_STREAMED_SCRIPT Zero_ambience.sc
ENDIF
IF HAS_STREAMED_SCRIPT_LOADED Zero_ambience.sc
AND HAS_STREAMED_SCRIPT_LOADED Customer_Panic.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
//--- POLICE
IF $txtEntryExit = &POLICE1
OR $txtEntryExit = &POLICE2
OR $txtEntryExit = &POLICE3
OR $txtEntryExit = &POLICE4
iCheckForWeapons = 1
iCreateDecisionMakers = 1
REQUEST_ANIMATION COP_AMBIENT
REQUEST_ANIMATION INT_OFFICE
REQUEST_ANIMATION GANGS
REQUEST_MODEL CIGAR
LOAD_ALL_MODELS_NOW
++iState // move on to the wait state
ENDIF
//--- AMMUNATION
IF $txtEntryExit = &AMMUN1
OR $txtEntryExit = &AMMUN2
OR $txtEntryExit = &AMMUN3
OR $txtEntryExit = &AMMUN4
OR $txtEntryExit = &AMMUN5
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT ammu.sc iStreamedScriptInstances
IF iStreamedScriptInstances = 0
STREAM_SCRIPT ammu.sc
LOAD_ALL_MODELS_NOW
IF HAS_STREAMED_SCRIPT_LOADED ammu.sc
START_NEW_STREAMED_SCRIPT ammu.sc
iCreateDecisionMakers = 1
++iState // move on to the wait state
ENDIF
ENDIF
ENDIF
//-------------------------------
// END OF ENTRY EXIT LABEL CHECKS
//-------------------------------
//--- See if we must create some special decision maker
IF iCreateDecisionMakers = 1
IF NOT DOES_DECISION_MAKER_EXIST iGlobalPedPanicDM
COPY_CHAR_DECISION_MAKER DM_PED_INDOORS iGlobalPedPanicDM
CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE iGlobalPedPanicDM EVENT_ATTRACTOR
CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE iGlobalPedPanicDM EVENT_SCRIPTED_ATTRACTOR
ENDIF
IF NOT DOES_DECISION_MAKER_EXIST iGlobalShopkeeperDM
COPY_CHAR_DECISION_MAKER DM_PED_INDOORS iGlobalShopkeeperDM
CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE iGlobalShopkeeperDM EVENT_ATTRACTOR
CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE iGlobalShopkeeperDM EVENT_SCRIPTED_ATTRACTOR
CLEAR_CHAR_DECISION_MAKER_EVENT_RESPONSE iGlobalShopkeeperDM EVENT_DAMAGE
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
/********************************************
EXIT
********************************************/
Int_Manager_EXIT:
GET_CHAR_AREA_VISIBLE scplayer iAreaCode
IF NOT iAreaCode = iStoredAreaCode
//--- Player has changed area code, mark all loaded stuff as ready for removal
GOSUB Int_Manager_MarkStuffNoLongerNeeded
//--- Reset the global flags
iTerminateAllAmbience = 0
iAmbienceHasTerminated = 0
iCheckForWeapons = 0
GET_LOADED_SHOP shop_name
//--- Move on to the entry state
--iState
RETURN
ELSE
IF IS_CHECKPOINT_RESUMING TRUE
IF iState = 1
--iState
ENDIF
ENDIF
//--- Player is still in the same area code
IF iCheckForWeapons = 1
IF NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_ANYMELEE
ALTER_WANTED_LEVEL_NO_DROP PLAYER1 2
ENDIF
ENDIF
IF iTerminateAllAmbience = 1
AND iAmbienceHasTerminated = 0
//--- Mark all loaded stuff as ready for removal
GOSUB Int_Manager_MarkStuffNoLongerNeeded
//--- Hang in here until the area code changes
iAmbienceHasTerminated = 1
ENDIF
ENDIF
RETURN
/*******************************************
MARK STREAMS AS NO LONGER NEEDED
********************************************/
Int_Manager_MarkStuffNoLongerNeeded:
//--- Animations
REMOVE_ANIMATION BAR
REMOVE_ANIMATION CASINO
REMOVE_ANIMATION DANCING
REMOVE_ANIMATION OTB
REMOVE_ANIMATION INT_SHOP
REMOVE_ANIMATION STRIP
REMOVE_ANIMATION FOOD
REMOVE_ANIMATION COP_AMBIENT
REMOVE_ANIMATION INT_OFFICE
REMOVE_ANIMATION GANGS
//--- Models
MARK_MODEL_AS_NO_LONGER_NEEDED CIGAR
MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF1
MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF3
MARK_MODEL_AS_NO_LONGER_NEEDED VMAFF2
MARK_MODEL_AS_NO_LONGER_NEEDED VWFYWAI
MARK_MODEL_AS_NO_LONGER_NEEDED VWFYWA2
MARK_MODEL_AS_NO_LONGER_NEEDED BMYBOUN
MARK_MODEL_AS_NO_LONGER_NEEDED WMYBOUN
MARK_MODEL_AS_NO_LONGER_NEEDED VWFYCRP
MARK_MODEL_AS_NO_LONGER_NEEDED VBFYCRP
MARK_MODEL_AS_NO_LONGER_NEEDED WMYPIZZ
MARK_MODEL_AS_NO_LONGER_NEEDED PIZZAHIGH
MARK_MODEL_AS_NO_LONGER_NEEDED CJ_PIZZA_1
MARK_MODEL_AS_NO_LONGER_NEEDED CJ_PIZZA_2
MARK_MODEL_AS_NO_LONGER_NEEDED WMYBELL
MARK_MODEL_AS_NO_LONGER_NEEDED BURGERHIGH
MARK_MODEL_AS_NO_LONGER_NEEDED CJ_BURG_1
MARK_MODEL_AS_NO_LONGER_NEEDED CJ_BURG_2
MARK_MODEL_AS_NO_LONGER_NEEDED WFYBURG
MARK_MODEL_AS_NO_LONGER_NEEDED WMYCLOT
//--- Shop scripts
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED wardrobe.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED clothes.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED junkfud.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED barber.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED tattoo.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED ammu.sc
//--- Ambience manager scripts
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED casino_ambience.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED bar_ambience.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED OTB_ambience.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Strip_ambience.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED FoodBrains.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Zero_ambience.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Dance.sc
//--- Ambient People scripts
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED ShopKeeper.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Customer_Panic.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Bar_Staff.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED Bouncer.sc
MARK_STREAMED_SCRIPT_AS_NO_LONGER_NEEDED OTB_Staff.sc
//--- Decision Makers
REMOVE_DECISION_MAKER iGlobalPedPanicDM
REMOVE_DECISION_MAKER iGlobalShopkeeperDM
iGlobalPedPanicDM = -1
iGlobalShopkeeperDM = -1
RETURN
}
MISSION_START
MISSION_END
// GLOBAL VARIABLES
// arrays
VAR_INT SLOT_play_status[2] SLOT_priority[2] SLOT_ped[2]
VAR_FLOAT SLOT_X[2] SLOT_Y[2] SLOT_Z[2]
VAR_INT SLOT_sample[2] load_sample
VAR_TEXT_LABEL SLOT_text[2] load_text
// general variables used by most of the below scripts
VAR_INT actual_SLOT[2] SLOT_status[2]
VAR_INT current_slot preload_slot
/*
###########################################################################
##
## MAIN AUDIO CONTROLLER
##
###########################################################################
*/
{
LVAR_INT audio_counter other_slot
start_audio_controller:
SCRIPT_NAME A_CONT
// used as an increment on the array pointer as the audio slots are 1&2
actual_SLOT[0] = 1
actual_SLOT[1] = 2
SLOT_status[0] = -3
SLOT_status[1] = -3
SLOT_priority[0] = 0
SLOT_priority[1] = 0
SLOT_play_status[0] = 0
SLOT_play_status[0] = 0
current_slot = 0
preload_slot = 1
SLOT_ped[0] = scplayer
SLOT_ped[1] = scplayer
audio_controller:
WAIT 0
audio_counter = 0
other_slot = 1
IF SLOT_status[0] >= -2
OR SLOT_status[1] >= -2
WHILE audio_counter < 2
SWITCH SLOT_status[audio_counter]
CASE -1 // small timer to allow variables to be set before script checks them
SLOT_priority[audio_counter] = 0
SLOT_status[audio_counter] = -3
BREAK
// CHECK TO SEE IF AUDIO SLOT HAS LOADED
CASE 0
IF NOT HAS_MISSION_AUDIO_LOADED actual_SLOT[audio_counter]
BREAK
ENDIF
// ###############################
// ##
// ## PLAY AUDIO OR MAKE IT WAIT
// ##
// ###############################
// if the slot just loaded is the preload slot check if it can play now or has to wait
IF audio_counter = preload_slot
// if preloaded slot has higher priority, clear current slot and play this one
IF SLOT_priority[audio_counter] > SLOT_priority[other_slot]
// swap slots
current_slot = audio_counter
preload_slot = other_slot
// clear old current slot
CLEAR_MISSION_AUDIO actual_SLOT[preload_slot]
CLEAR_THIS_PRINT $SLOT_text[preload_slot]
// if the old current slot was to be played by a ped enable his speech unless he/she is going to say the new audio
IF NOT SLOT_play_status[preload_slot] = 0
IF NOT IS_CHAR_DEAD SLOT_ped[preload_slot]
STOP_CHAR_FACIAL_TALK SLOT_ped[preload_slot]
IF NOT SLOT_ped[preload_slot] = SLOT_ped[current_slot]
SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH SLOT_ped[preload_slot] FALSE
//ENABLE_CHAR_SPEECH SLOT_ped[preload_slot]
ENDIF
ENDIF
ENDIF
SLOT_status[preload_slot] = -1
ELSE
// wait for current sample to finish before playing this one
SLOT_status[audio_counter] = 1
BREAK
ENDIF
ENDIF
// PLAY AUDIO IN CURRENT SLOT
// attach the sample to a char or coord if it needs to be
IF NOT SLOT_play_status[audio_counter] = 0 // char
IF NOT IS_CHAR_DEAD SLOT_ped[audio_counter]
START_CHAR_FACIAL_TALK SLOT_ped[audio_counter] 999999
IF SLOT_play_status[audio_counter] = 1 // attach to the char
ATTACH_MISSION_AUDIO_TO_CHAR actual_SLOT[audio_counter] SLOT_ped[audio_counter]
ENDIF
ENDIF
ENDIF
PLAY_MISSION_AUDIO actual_SLOT[audio_counter]
PRINT_NOW $SLOT_text[audio_counter] 10000 1
SLOT_status[audio_counter] = 2
BREAK
// CHECK FOR OTHER SLOT TO FINISH SO THIS ONE CAN LOAD
CASE 1
IF current_slot = audio_counter
// attach the sample to a char or coord if it needs to be
IF NOT SLOT_play_status[audio_counter] = 0 // char
IF NOT IS_CHAR_DEAD SLOT_ped[audio_counter]
START_CHAR_FACIAL_TALK SLOT_ped[audio_counter] 999999
IF SLOT_play_status[audio_counter] = 1 // attach to the char
ATTACH_MISSION_AUDIO_TO_CHAR actual_SLOT[audio_counter] SLOT_ped[audio_counter]
ENDIF
ENDIF
ENDIF
PLAY_MISSION_AUDIO actual_SLOT[audio_counter]
PRINT_NOW $SLOT_text[audio_counter] 10000 1
SLOT_status[audio_counter] = 2
ENDIF
BREAK
// CHECK FOR SAMPLE FINISHING
CASE 2
IF HAS_MISSION_AUDIO_FINISHED actual_SLOT[audio_counter]
// this slot now becomes preload slot
IF current_slot = audio_counter
preload_slot = audio_counter
current_slot = other_slot
ENDIF
ELSE
// check if slot was attached to a ped or is playing frontend pretending to be a ped
IF NOT SLOT_play_status[audio_counter] = 0 // char
IF NOT IS_CHAR_DEAD SLOT_ped[audio_counter]
BREAK
ENDIF
ENDIF
BREAK
ENDIF
// USED TO CLEAR SLOTS (IF PLAYER GETS OUT OF A CAR DURING CONVERSATION ETC)
CASE -2
CLEAR_MISSION_AUDIO actual_SLOT[audio_counter]
CLEAR_THIS_PRINT $SLOT_text[audio_counter]
IF NOT SLOT_play_status[audio_counter] = 0
IF NOT IS_CHAR_DEAD SLOT_ped[audio_counter]
STOP_CHAR_FACIAL_TALK SLOT_ped[audio_counter]
IF NOT SLOT_ped[audio_counter] = SLOT_ped[other_slot]
SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH SLOT_ped[audio_counter] FALSE
//ENABLE_CHAR_SPEECH SLOT_ped[audio_counter]
ENDIF
ENDIF
ENDIF
SLOT_status[audio_counter] = -1
BREAK
ENDSWITCH
audio_counter ++
other_slot --
ENDWHILE
ELSE
SLOT_status[0] = -4
SLOT_status[1] = -4
ENDIF
GOTO audio_controller
}
/*
###################################################################################################################################
##
## LOAD AND PLAY
##
## START_NEW_SCRIPT audio_load_and_play int:status / int:priority / int:ped (ped not needed for status 0)
##
## status values;
## 0 = play audio from front end
## 1 = play audio from ped
## 2 = play audio frontend but pretend its a ped
##
###################################################################################################################################
*/
{
audio_load_and_play:
SCRIPT_NAME A_ALAP
// variables passed from START_NEW_SCRIPT
LVAR_INT alap_play_status alap_priority alap_ped
//LVAR_FLOAT alap_X alap_Y alap_Z
// check if the sample to load has a higher or equal priority to the samples in both audio slots
IF alap_priority >= SLOT_priority[preload_slot]
SLOT_sample[preload_slot] = load_sample
$SLOT_text[preload_slot] = $load_text
CLEAR_MISSION_AUDIO actual_SLOT[preload_slot]
LOAD_MISSION_AUDIO actual_SLOT[preload_slot] SLOT_sample[preload_slot]
// check if previos preload_slot was for a ped and enable his/her speech if they are not saying the new sample
IF NOT SLOT_play_status[preload_slot] = 0
IF NOT IS_CHAR_DEAD SLOT_ped[preload_slot]
IF NOT SLOT_ped[preload_slot] = alap_ped
SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH SLOT_ped[preload_slot] FALSE
//ENABLE_CHAR_SPEECH SLOT_ped[preload_slot]
ENDIF
ENDIF
ENDIF
SLOT_status[preload_slot] = 0 // check for loading
SLOT_play_status[preload_slot] = alap_play_status
// if new sample is attached to a ped turn off his speech
IF NOT SLOT_play_status[preload_slot] = 0
IF SLOT_play_status[preload_slot] = 0 // which it shouldnt do, this is just here to fool the compiler
CREATE_CHAR PEDTYPE_CIVMALE MALE01 0.0 0.0 0.0 alap_ped
ENDIF
SLOT_ped[preload_slot] = alap_ped
IF NOT IS_CHAR_DEAD SLOT_ped[preload_slot]
SHUT_CHAR_UP_FOR_SCRIPTED_SPEECH SLOT_ped[preload_slot] TRUE
//DISABLE_CHAR_SPEECH SLOT_ped[preload_slot] FALSE
ENDIF
ENDIF
// // grab the coordinates in case they are used
// SLOT_X[preload_slot] = alap_X
// SLOT_Y[preload_slot] = alap_Y
// SLOT_Z[preload_slot] = alap_Z
SLOT_play_status[preload_slot] = alap_play_status
SLOT_priority[preload_slot] = alap_priority
ENDIF
TERMINATE_THIS_SCRIPT
}
/*
###################################################################################################################################
##
## TERMINATE ALL SCRIPTS
##
## START_NEW_SCRIPT terminate_audio_controller
##
## use in mission cleanup to remove all audio scripts running for the mission
##
###################################################################################################################################
*/
{
terminate_audio_controller:
SCRIPT_NAME A_TERM
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME A_CONT
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME A_ALAP
TERMINATE_THIS_SCRIPT
}
MISSION_START
// *****************************************************************************************
// ****************************************Stunt Jump***************************************
// *****************************************************************************************
// Variables for mission
VAR_INT cash
VAR_INT car_player_is_in_hj
VAR_INT flag_takeoff_hj
VAR_INT height_int_hj
VAR_INT flag_wheels_hj
VAR_INT stunt_flags_hj
VAR_INT flag_car_upsidedown_hj
VAR_INT counter_stunt_rolls_hj
VAR_INT height_decimals_int_hj
VAR_INT distance_decimals_int_hj
VAR_INT jumpdistance_int_hj
VAR_INT total_rotation_int
VAR_INT collision_counter
VAR_INT cash_reward cash_reward_temp
VAR_FLOAT height_float_hj
VAR_FLOAT x_float_hj
VAR_FLOAT y_float_hj
VAR_FLOAT z_float_hj
VAR_FLOAT takeoff_x_float_hj
VAR_FLOAT takeoff_y_float_hj
VAR_FLOAT takeoff_z_float_hj
VAR_FLOAT jumpend_x_float_hj
VAR_FLOAT jumpend_y_float_hj
VAR_FLOAT jumpdistance_float_hj
VAR_FLOAT heading_hj
VAR_FLOAT old_heading_hj
VAR_FLOAT heading_difference
VAR_FLOAT heading_difference_temp
VAR_FLOAT total_rotation
VAR_INT CarTwoWheelsTime CarTwoWheelsDistanceMeterInt CarTwoWheelsDistanceDecimalInt CarTwoWheelsDistanceFeetInt
VAR_FLOAT CarTwoWheelsDistance CarTwoWheelsDistanceMeter CarTwoWheelsDistanceFeet
VAR_INT BikeWheelieTime BikeWheelieDistanceMeterInt BikeWheelieDistanceDecimalInt BikeWheelieDistanceFeetInt
VAR_FLOAT BikeWheelieDistance BikeWheelieDistanceMeter BikeWheelieDistanceFeet
VAR_INT BikeStoppieTime BikeStoppieDistanceMeterInt BikeStoppieDistanceDecimalInt BikeStoppieDistanceFeetInt
VAR_FLOAT BikeStoppieDistance BikeStoppieDistanceMeter BikeStoppieDistanceFeet
var_int passenger_said_jump
// ****************************************Mission Start************************************
SET_DEATHARREST_STATE OFF
SCRIPT_NAME hj
mission_start_hj:
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
GOTO mission_start_hj
ENDIF
IF ARE_ANY_CAR_CHEATS_ACTIVATED
GOTO mission_start_hj
ENDIF
IF IS_CHAR_IN_ANY_TRAIN scplayer
GOTO mission_start_hj
ENDIF
IF IS_CHAR_IN_FLYING_VEHICLE scplayer
GOTO mission_start_hj
ENDIF
IF IS_CHAR_IN_ANY_BOAT scplayer
GOTO mission_start_hj
ENDIF
IF IS_CHAR_IN_model scplayer vortex
GOTO mission_start_hj
ENDIF
if not IS_PLAYER_CONTROL_ON player1
GOTO mission_start_hj
endif
IF IS_CHAR_IN_ANY_CAR scplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer car_player_is_in_hj
GET_WHEELIE_STATS player1 CarTwoWheelsTime CarTwoWheelsDistance BikeWheelieTime BikeWheelieDistance BikeStoppieTime BikeStoppieDistance
IF CarTwoWheelsDistance > 0.0
CarTwoWheelsTime /= 1000
CarTwoWheelsDistanceMeterInt =# CarTwoWheelsDistance
CarTwoWheelsDistanceMeter =# CarTwoWheelsDistanceMeterInt
VAR_FLOAT temp_float_hj
temp_float_hj = CarTwoWheelsDistance - CarTwoWheelsDistanceMeter
temp_float_hj *= 100.0
CarTwoWheelsDistanceDecimalInt =# temp_float_hj
cash = CarTwoWheelsTime + CarTwoWheelsDistanceMeterInt
cash /= 2
ADD_SCORE player1 cash
IF ARE_MEASUREMENTS_IN_METRES
PRINT_WITH_4_NUMBERS WHEEL01 cash CarTwoWheelsDistanceMeterInt CarTwoWheelsDistanceDecimalInt CarTwoWheelsTime 3000 1//TWO WHEELS DOUBLE BONUS: $ ~1~ Distance: ~1~.~1~m Time: ~1~ seconds
ELSE
CONVERT_METRES_TO_FEET CarTwoWheelsDistance CarTwoWheelsDistanceFeet
CarTwoWheelsDistanceFeetInt =# CarTwoWheelsDistanceFeet
PRINT_WITH_3_NUMBERS WHEEL02 cash CarTwoWheelsDistanceFeetInt CarTwoWheelsTime 3000 1//TWO WHEELS DOUBLE BONUS: $ ~1~ Distance: ~1~ feet Time: ~1~ seconds
ENDIF
ENDIF
IF BikeWheelieDistance > 0.0
BikeWheelieTime /= 1000
BikeWheelieDistanceMeterInt =# BikeWheelieDistance
BikeWheelieDistanceMeter =# BikeWheelieDistanceMeterInt
temp_float_hj = BikeWheelieDistance - BikeWheelieDistanceMeter
temp_float_hj *= 100.0
BikeWheelieDistanceDecimalInt =# temp_float_hj
//cash = BikeWheelieTime + BikeWheelieDistanceMeterInt
cash = BikeWheelieDistanceMeterInt
cash *= 2
cash /= 5
cash /= 2
ADD_SCORE player1 cash
IF ARE_MEASUREMENTS_IN_METRES
PRINT_WITH_4_NUMBERS WHEEL06 cash BikeWheelieDistanceMeterInt BikeWheelieDistanceDecimalInt BikeWheelieTime 3000 1//WHEELIE DOUBLE BONUS: $ ~1~ Distance: ~1~.~1~m Time: ~1~ seconds
ELSE
CONVERT_METRES_TO_FEET BikeWheelieDistance BikeWheelieDistanceFeet
BikeWheelieDistanceFeetInt =# BikeWheelieDistanceFeet
PRINT_WITH_3_NUMBERS WHEEL07 cash BikeWheelieDistanceFeetInt BikeWheelieTime 3000 1//WHEELIE DOUBLE BONUS: $ ~1~ Distance: ~1~ feet Time: ~1~ seconds
ENDIF
ENDIF
IF BikeStoppieDistance > 0.0
BikeStoppieTime /= 1000
BikeStoppieDistanceMeterInt =# BikeStoppieDistance
BikeStoppieDistanceMeter =# BikeStoppieDistanceMeterInt
temp_float_hj = BikeStoppieDistance - BikeStoppieDistanceMeter
temp_float_hj *= 100.0
BikeStoppieDistanceDecimalInt =# temp_float_hj
//cash = BikeStoppieTime + BikeStoppieDistanceMeterInt
cash = BikeStoppieDistanceMeterInt
cash /= 2
ADD_SCORE player1 cash
IF ARE_MEASUREMENTS_IN_METRES
PRINT_WITH_4_NUMBERS WHEEL11 cash BikeStoppieDistanceMeterInt BikeStoppieDistanceDecimalInt BikeStoppieTime 3000 1//STOPPIE DOUBLE BONUS: $ ~1~ Distance: ~1~.~1~m Time: ~1~ seconds
ELSE
CONVERT_METRES_TO_FEET BikeStoppieDistance BikeStoppieDistanceFeet
BikeStoppieDistanceFeetInt =# BikeStoppieDistanceFeet
PRINT_WITH_3_NUMBERS WHEEL12 cash BikeStoppieDistanceFeetInt BikeStoppieTime 3000 1//STOPPIE DOUBLE BONUS: $ ~1~ Distance: ~1~ feet Time: ~1~ seconds
ENDIF
ENDIF
IF IS_CAR_IN_AIR_PROPER car_player_is_in_hj
total_rotation_int = 0
heading_hj = 0.0
flag_wheels_hj = 0
counter_stunt_rolls_hj = 0
flag_car_upsidedown_hj = 0
stunt_flags_hj = 0
flag_takeoff_hj = 0
height_int_hj = 0
height_float_hj = -100.0
x_float_hj = 0.0
y_float_hj = 0.0
z_float_hj = 0.0
takeoff_x_float_hj = 0.0
takeoff_y_float_hj = 0.0
takeoff_z_float_hj = 0.0
jumpend_x_float_hj = 0.0
jumpend_y_float_hj = 0.0
jumpdistance_float_hj = 0.0
jumpdistance_int_hj = 0
distance_decimals_int_hj = 0
height_decimals_int_hj = 0
temp_float_hj = 0.0
heading_difference = 0.0
total_rotation = 0.0
heading_difference_temp = 0.0
old_heading_hj = 0.0
collision_counter = 0
passenger_said_jump = 0
WHILE IS_CAR_IN_AIR_PROPER car_player_is_in_hj
OR collision_counter < 10
++ collision_counter
GET_CAR_COORDINATES car_player_is_in_hj x_float_hj y_float_hj z_float_hj
old_heading_hj = heading_hj
IF flag_takeoff_hj = 0
GET_CAR_HEADING car_player_is_in_hj old_heading_hj
takeoff_x_float_hj = x_float_hj
takeoff_y_float_hj = y_float_hj
takeoff_z_float_hj = z_float_hj
flag_takeoff_hj = 1
ENDIF
WAIT 0
IF IS_CAR_DEAD car_player_is_in_hj
GOTO mission_start_hj
ENDIF
IF NOT IS_PLAYER_PLAYING player1
GOTO mission_start_hj
ENDIF
IF NOT IS_CHAR_IN_ANY_CAR scplayer
GOTO mission_start_hj
ENDIF
IF NOT IS_CAR_UPRIGHT car_player_is_in_hj
AND flag_car_upsidedown_hj = 0
flag_car_upsidedown_hj = 1
ENDIF
IF IS_CAR_UPRIGHT car_player_is_in_hj
AND flag_car_upsidedown_hj = 1
++ counter_stunt_rolls_hj
flag_car_upsidedown_hj = 0
ENDIF
GET_CAR_HEADING car_player_is_in_hj heading_hj
heading_difference = heading_hj - old_heading_hj
IF heading_difference > 180.0
heading_difference_temp = heading_difference
heading_difference = 360.0 - heading_difference_temp
ELSE
IF heading_difference < -180.0
heading_difference_temp = heading_difference
heading_difference = 360.0 + heading_difference_temp
ENDIF
ENDIF
IF heading_difference < 0.0
heading_difference_temp = heading_difference
heading_difference = 0.0 - heading_difference_temp
ENDIF
total_rotation = total_rotation + heading_difference
total_rotation_int =# total_rotation
IF z_float_hj > height_float_hj
height_float_hj = z_float_hj
ENDIF
z_float_hj = 0.0
if passenger_said_jump = 0
GET_CAR_COORDINATES car_player_is_in_hj jumpend_x_float_hj jumpend_y_float_hj temp_float_hj
get_distance_between_coords_2d takeoff_x_float_hj takeoff_y_float_hj jumpend_x_float_hj jumpend_y_float_hj temp_float_hj
if temp_float_hj > 20.0
RANDOM_PASSENGER_SAY car_player_is_in_hj CONTEXT_GLOBAL_CAR_JUMP
passenger_said_jump = 1
endif
endif
ENDWHILE
ELSE
GOTO mission_start_hj
ENDIF
ELSE
GOTO mission_start_hj
ENDIF
IF flag_takeoff_hj = 1
GET_CAR_COORDINATES car_player_is_in_hj jumpend_x_float_hj jumpend_y_float_hj temp_float_hj
get_distance_between_coords_2d takeoff_x_float_hj takeoff_y_float_hj jumpend_x_float_hj jumpend_y_float_hj jumpdistance_float_hj
REGISTER_FLOAT_STAT MAX_JUMP_DISTANCE jumpdistance_float_hj
jumpdistance_int_hj =# jumpdistance_float_hj
height_float_hj = height_float_hj - takeoff_z_float_hj
REGISTER_FLOAT_STAT MAX_JUMP_HEIGHT height_float_hj
height_int_hj =# height_float_hj
temp_float_hj =# jumpdistance_int_hj
jumpdistance_float_hj = jumpdistance_float_hj - temp_float_hj
temp_float_hj = jumpdistance_float_hj * 100.0
distance_decimals_int_hj =# temp_float_hj
temp_float_hj =# height_int_hj
height_float_hj = height_float_hj - temp_float_hj
temp_float_hj = height_float_hj * 100.0
height_decimals_int_hj =# temp_float_hj
REGISTER_inT_STAT MAX_JUMP_FLIPS counter_stunt_rolls_hj
REGISTER_inT_STAT MAX_JUMP_SPINS total_rotation_int
ENDIF
IF height_float_hj > 4.0 //4 METERS HIGH
++ stunt_flags_hj
ENDIF
IF jumpdistance_int_hj > 40 //40 METERS LONG
++ stunt_flags_hj
ENDIF
IF counter_stunt_rolls_hj > 1 //2 ROLLS/FLIPS IN MID AIR
++ stunt_flags_hj
ENDIF
IF total_rotation_int > 360 //360 SPIN IN MID AIR
++ stunt_flags_hj
ENDIF
IF stunt_flags_hj > 0
cash_reward = counter_stunt_rolls_hj * 180
cash_reward += total_rotation_int
cash_reward_temp = jumpdistance_int_hj * 6
cash_reward += cash_reward_temp
cash_reward_temp = height_int_hj * 45
cash_reward += cash_reward_temp
IF flag_wheels_hj = 1
cash_reward *= 2
ENDIF
cash_reward *= stunt_flags_hj
cash_reward /= 3
cash_reward /= 5
ADD_SCORE player1 cash_reward
IF stunt_flags_hj = 1
PRINT_WITH_NUMBER HJ_IS cash_reward 2000 1 //"INSANE STUNT BONUS"
REGISTER_inT_STAT BEST_STUNT 1
ENDIF
IF stunt_flags_hj = 2
PRINT_WITH_NUMBER HJ_DIS cash_reward 2000 1 //"DOUBLE INSANE STUNT BONUS"
REGISTER_inT_STAT BEST_STUNT 3
ENDIF
IF stunt_flags_hj = 3
PRINT_WITH_NUMBER HJ_TIS cash_reward 2000 1 //"TRIPLE INSANE STUNT BONUS"
REGISTER_inT_STAT BEST_STUNT 5
ENDIF
IF stunt_flags_hj = 4
PRINT_WITH_NUMBER HJ_QIS cash_reward 2000 1 //"QUADRUPLE INSANE STUNT BONUS"
REGISTER_inT_STAT BEST_STUNT 7
ENDIF
IF ARE_MEASUREMENTS_IN_METRES
PRINT_WITH_6_NUMBERS HJSTAT jumpdistance_int_hj distance_decimals_int_hj height_int_hj height_decimals_int_hj counter_stunt_rolls_hj total_rotation_int 5000 5
ELSE
CONVERT_METRES_TO_FEET_INT jumpdistance_int_hj jumpdistance_int_hj
CONVERT_METRES_TO_FEET_INT height_int_hj height_int_hj
PRINT_WITH_4_NUMBERS HJSTATF jumpdistance_int_hj height_int_hj counter_stunt_rolls_hj total_rotation_int 5000 5
ENDIF
ENDIF
GOTO mission_start_hj
MISSION_END
MISSION_START
SCRIPT_NAME CELLFON
// MOBILE PHONECALL
VAR_INT flag_mob_la1[10] flag_mob_LA2[4] flag_mob_cat[10] flag_mob_random[12] flag_mob_vegas[17] flag_mob_sanfran[12] loan_shark_reminder loan_shark_hitmen
VAR_INT ring_a_ding_ding mobile_pause // flag_mobile_dialogue
VAR_INT terminate_cat_calls call_number
VAR_INT flag_mobile_timer flag_player_answered_phone Thekeycard_contact_blip
VAR_INT flag_new_cont players_skipping_the_call skip_the_mobile_call millies_like_stat
VAR_INT call_delay cell_index_start cell_index_end audio_slot_mobile
VAR_INT mobile_audio_labels[20] current_visible_area_cell
VAR_TEXT_LABEL $mobile_print_labels[20]
VAR_FLOAT Returnedfat
// SET FLAGS AND VARIABLES
skip_the_mobile_call = 0
terminate_cat_calls = 0
flag_new_cont = 0
flag_mobile_timer = 0
flag_player_answered_phone = 0
call_delay = 20000
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
//CATALINA
CONST_INT CATALINA_MOBILE_CUT2 0
CONST_INT CATALINA_MOBILE_CUT3 1
CONST_INT CATALINA_MOBILE_CUT4 2
CONST_INT CATALINA_MOBILE_CUT5 3
CONST_INT CATALINA_MOBILE_CUT6 4
CONST_INT CATALINA_MOBILE_CUT7 5
//OGLOC
CONST_INT OGLOC_MOBILE_CALL3 6
//CESAR
CONST_INT CESAR_MOBILE_CALL1 7
CONST_INT CESAR_MOBILE_CALL4 8
CONST_INT CRASH_MOBILE_CALL3 9
CONST_INT CESAR_MOBILE_CALL9 10
//KENDAL
CONST_INT KENDAL_MOBILE_CALL1 11
//CRASH
CONST_INT CRASH_MOBILE_CALL1 12
CONST_INT CRASH_MOBILE_CALL2 13
//SMOKE
CONST_INT SMOKE_MOBILE_CALL1 14
//TRUTH
CONST_INT TRUTH_MOBILE_CALL1 15
CONST_INT TRUTH_MOBILE_CALL2 16
CONST_INT TRUTH_MOBILE_CALL3 17
//SWEET
CONST_INT SWEET_MOBILE_CALL1 18
CONST_INT SWEET_MOBILE_CALL2 19
CONST_INT SWEET_MOBILE_CALL3 20
CONST_INT SWEET_MOBILE_CALL4 21
CONST_INT SWEET_MOBILE_CALL5 22
CONST_INT SWEET_MOBILE_CALL6 23
CONST_INT SWEET_MOBILE_CALL7 24
CONST_INT SWEET_MOBILE_CALL8 25
CONST_INT SWEET_MOBILE_CALL9 26
CONST_INT SWEET_MOBILE_CALL10 27
CONST_INT SWEET_MOBILE_CALL11 28
//ZERO
CONST_INT ZERO_MOBILE_CALL1 29
CONST_INT ZERO_MOBILE_CALL2 30
//JETHRO
CONST_INT JETHRO_MOBILE_CALL1 31
CONST_INT JETHRO_MOBILE_CALL2 32
CONST_INT JETHRO_MOBILE_CALL3 33
//WUZI
CONST_INT WUZI_MOBILE_CALL1 34
CONST_INT WUZI_MOBILE_CALL3 35
CONST_INT WUZI_MOBILE_CALL4 36
CONST_INT WUZI_MOBILE_CALL5 37
CONST_INT WUZI_MOBILE_CALL6 38
CONST_INT WUZI_MOBILE_CALL7 39
CONST_INT WUZI_MOBILE_CALL8 40
//TORENO
CONST_INT TORENO_MOBILE_CALL1 41
CONST_INT TORENO_MOBILE_CALL2 42
CONST_INT TORENO_MOBILE_CALL3 43
CONST_INT TORENO_MOBILE_CALL4 44
CONST_INT TORENO_MOBILE_CALL5 45
CONST_INT TORENO_MOBILE_CALL6 46
//KENT PAUL
CONST_INT KENT_MOBILE_CALL1 47
//ROSENBURG
CONST_INT ROSE_MOBILE_CALL1 48
CONST_INT ROSE_MOBILE_CALL2 49
CONST_INT ROSE_MOBILE_CALL3 50
//SALVATORY
CONST_INT SALV_MOBILE_CALL1 51
CONST_INT SALV_MOBILE_CALL2 52
//MILLIE KEYCARD
CONST_INT MILLIE_KEY_MOBILE_CALL1 53
CONST_INT LOANSHARK_CALL1 54
CONST_INT LOANSHARK_CALL2 55
CONST_INT LOANSHARK_CALL3 56
CONST_INT LOANSHARK_CALL4 57
CONST_INT LOANSHARK_CALL5 58
CONST_INT LOANSHARK_CALL6 59
CONST_INT LOANSHARK_CALL7 60
CONST_INT LOANSHARK_CALL8 61
CONST_INT LOANSHARK_CALL9 62
CONST_INT LOANSHARK_CALL10 63
CONST_INT LOANSHARK_CALL11 64
CONST_INT LOANSHARK_CALL12 65
CONST_INT LOANSHARK_CALL13 66
CONST_INT LOANSHARK_CALL14 67
CONST_INT LOANSHARK_CALL15 68
CONST_INT LOANSHARK_CALL16 69
//GIRLFRIENDS
CONST_INT COOCHIE_MOBILE 70
CONST_INT COOCHIE_MOBILE2 71
CONST_INT COOCHIE_MOBILE3 72
CONST_INT COOCHIE_MOBILE4 73
CONST_INT COOCHIE_MOBILE5 74
CONST_INT COOCHIE_MOBILE6 75
CONST_INT COOCHIE_MOBILE7 76
CONST_INT COOCHIE_MOBILE8 77
CONST_INT MICHELLE_MOBILE 80
CONST_INT MICHELLE_MOBILE2 81
CONST_INT MICHELLE_MOBILE3 82
CONST_INT MICHELLE_MOBILE4 83
CONST_INT MICHELLE_MOBILE5 84
CONST_INT MICHELLE_MOBILE6 85
CONST_INT MICHELLE_MOBILE7 86
CONST_INT MICHELLE_MOBILE8 87
CONST_INT KYLIE_MOBILE 90
CONST_INT KYLIE_MOBILE2 91
CONST_INT KYLIE_MOBILE3 92
CONST_INT KYLIE_MOBILE4 93
CONST_INT KYLIE_MOBILE5 94
CONST_INT KYLIE_MOBILE6 95
CONST_INT KYLIE_MOBILE7 96
CONST_INT KYLIE_MOBILE8 97
CONST_INT BARBARA_MOBILE 100
CONST_INT BARBARA_MOBILE2 101
CONST_INT BARBARA_MOBILE3 102
CONST_INT BARBARA_MOBILE4 103
CONST_INT BARBARA_MOBILE5 104
CONST_INT BARBARA_MOBILE6 105
CONST_INT BARBARA_MOBILE7 106
CONST_INT BARBARA_MOBILE8 107
CONST_INT SUZIE_MOBILE 110
CONST_INT SUZIE_MOBILE2 111
CONST_INT SUZIE_MOBILE3 112
CONST_INT SUZIE_MOBILE4 113
CONST_INT SUZIE_MOBILE5 114
CONST_INT SUZIE_MOBILE6 115
CONST_INT SUZIE_MOBILE7 116
CONST_INT SUZIE_MOBILE8 117
CONST_INT MILLIE_MOBILE 120
CONST_INT MILLIE_MOBILE2 121
CONST_INT MILLIE_MOBILE3 122
CONST_INT MILLIE_MOBILE4 123
CONST_INT MILLIE_MOBILE5 124
CONST_INT MILLIE_MOBILE6 125
CONST_INT MILLIE_MOBILE7 126
CONST_INT MILLIE_MOBILE8 127
CONST_INT COOCHIE_DUMP 130
CONST_INT MICHELLE_DUMP 131
CONST_INT KYLIE_DUMP 132
CONST_INT BARBARA_DUMP 133
CONST_INT SUZIE_DUMP 134
CONST_INT MILLIE_DUMP 135
mission_start_cell_phone:
{
}
MISSION_END
{
mobile_chat_switch:
IF call_number < COOCHIE_MOBILE
SWITCH call_number
// ***************************************SWEET*******************************************************************************************
CASE SWEET_MOBILE_CALL1
$mobile_print_labels[0] = &MSWE14A //Whattup, Sweet?
$mobile_print_labels[1] = &MSWE14B //Yo, check it, we got a problem.
$mobile_print_labels[2] = &MSWE14C //Some punk ass base head fool has been pushing to his Grove brothers!
$mobile_print_labels[3] = &MSWE14D //What? Who?
$mobile_print_labels[4] = &MSWE14E //Word is he�s been buying his stuff from some Balla over Glen Park.
$mobile_print_labels[5] = &MSWE14F //He knows word�s out and now he�s hiding with his new Balla friends.
$mobile_print_labels[6] = &MSWE14G //Shit, man, how are we gonna get to him?
$mobile_print_labels[7] = &MSWE14H //It�s time for you to announce your return, CJ!
$mobile_print_labels[8] = &MSWE14J //Mess up Glen Park and that turncoat coward will lose his nerve and make a break for it!
$mobile_print_labels[9] = &MSWE14K //Ok, I�ll come pick you up.
$mobile_print_labels[10] = &MSWE14L //Uh-uh, this is your gig, CJ. You need to establish your rep.
$mobile_print_labels[11] = &MSWE14N //Get over to AmmuNation and sort yourself with a proper strap.
mobile_audio_labels[0] = SOUND_MSWE14A //Whattup, Sweet?
mobile_audio_labels[1] = SOUND_MSWE14B //Yo, check it, we got a problem.
mobile_audio_labels[2] = SOUND_MSWE14C //Some punk ass base head fool has been pushing to his Grove brothers!
mobile_audio_labels[3] = SOUND_MSWE14D //What? Who?
mobile_audio_labels[4] = SOUND_MSWE14E //Word is he�s been buying his stuff from some Balla over Glen Park.
mobile_audio_labels[5] = SOUND_MSWE14F //He knows word�s out and now he�s hiding with his new Balla friends.
mobile_audio_labels[6] = SOUND_MSWE14G //Shit, man, how are we gonna get to him?
mobile_audio_labels[7] = SOUND_MSWE14H //It�s time for you to announce your return, CJ!
mobile_audio_labels[8] = SOUND_MSWE14J //Mess up Glen Park and that turncoat coward will lose his nerve and make a break for it.
mobile_audio_labels[9] = SOUND_MSWE14K //Ok, I�ll come pick you up.
mobile_audio_labels[10] = SOUND_MSWE14L //Uh-uh, this is your gig, CJ. You need to establish your rep.
mobile_audio_labels[11] = SOUND_MSWE14N //Get over to AmmuNation and sort yourself with a proper strap.
cell_index_end = 11
BREAK
CASE SWEET_MOBILE_CALL2
$mobile_print_labels[0] = &MSWE10A //Carl Johnson, man of the people!
//$mobile_print_labels[1] = &MSWE10B //So I understand.
$mobile_print_labels[1] = &MSWE10D //Thought I better explain some shit.
$mobile_print_labels[2] = &MSWE10C //Sweet? Hey, whattup?
$mobile_print_labels[3] = &MSWE10E //Since you been away, shit has changed �round here.
$mobile_print_labels[4] = &MSWE10F //Grove Street Families ain�t so big and ain�t too happy no more.
$mobile_print_labels[5] = &MSWE10G //Seville Boulevard Families and Temple Drive Families got bad blood and split with the Grove.
$mobile_print_labels[6] = &MSWE10H //Now we so busy set tripping, Ballas and Vagos have taken over, so watch yo�self out there.
//$mobile_print_labels[8] = &MSWE10J //Just coz they wearing greens, don�t mean they gonna be best friends, you down?
$mobile_print_labels[7] = &MSWE10K //Yeah, I�m down.
$mobile_print_labels[8] = &MSWE10L //Thanks for the heads up.
$mobile_print_labels[9] = &MSWE10N //Don�t mention it.
mobile_audio_labels[0] = SOUND_MSWE10A //Carl Johnson, man of the people!
//mobile_audio_labels[1] = SOUND_MSWE10B //So I understand.
mobile_audio_labels[1] = SOUND_MSWE10D //Thought I better explain some shit.
mobile_audio_labels[2] = SOUND_MSWE10C //Sweet? Hey, whattup?
mobile_audio_labels[3] = SOUND_MSWE10E //Since you been away, shit has changed �round here.
mobile_audio_labels[4] = SOUND_MSWE10F //Grove Street Families ain�t so big and ain�t too happy no more.
mobile_audio_labels[5] = SOUND_MSWE10G //Seville Boulevard Families and Temple Drive Families got bad blood and split with the Grove.
mobile_audio_labels[6] = SOUND_MSWE10H //Now we so busy set tripping, Ballas and Vagos have taken over, so watch yo�self out there.
//mobile_audio_labels[8] = SOUND_MSWE10J //Just coz they wearing greens, don�t mean they gonna be best friends, you down?
mobile_audio_labels[7] = SOUND_MSWE10K //Yeah, I�m down.
mobile_audio_labels[8] = SOUND_MSWE10L //Thanks for the heads up.
mobile_audio_labels[9] = SOUND_MSWE10N //Don�t mention it.
cell_index_end = 9
BREAK
CASE SWEET_MOBILE_CALL3
$mobile_print_labels[0] = &MSWE06A //Yo?
$mobile_print_labels[1] = &MSWE06B //Hey, CJ, it�s Sweet.
$mobile_print_labels[2] = &MSWE06C //Whassup?
$mobile_print_labels[3] = &MSWE06D //If you don�t respect your body, ain�t nobody going to respect you!
$mobile_print_labels[4] = &MSWE06E //You�re too skinny, CJ, you need to pack on some muscle!
$mobile_print_labels[5] = &MSWE06F //If I wanted nagging, I�d buy a clockwork wife!
$mobile_print_labels[6] = &MSWE06G //Just looking out for you, homie.
$mobile_print_labels[7] = &MSWE06H //It�s all show and respect, you lnow?
$mobile_print_labels[8] = &MSWE06J //Yeah, I guess.
$mobile_print_labels[9] = &MSWE06K //There�s a gym I use a couple of blocks out from the Grove.
$mobile_print_labels[10] = &MSWE06L //Go check it out and get yo�self a gangsta�s physique.
$mobile_print_labels[11] = &MSWE06N //I�ll scope it out.
$mobile_print_labels[12] = &MSWE06M //Later, man.
mobile_audio_labels[0] = SOUND_MSWE06A //Yo?
mobile_audio_labels[1] = SOUND_MSWE06B //Hey, CJ, it�s Sweet.
mobile_audio_labels[2] = SOUND_MSWE06C //Whassup?
mobile_audio_labels[3] = SOUND_MSWE06D //If you don�t respect your body, ain�t nobody going to respect you!
mobile_audio_labels[4] = SOUND_MSWE06E //You�re too skinny, CJ, you need to pack on some muscle!
mobile_audio_labels[5] = SOUND_MSWE06F //If I wanted nagging, I�d buy a clockwork wife!
mobile_audio_labels[6] = SOUND_MSWE06G //Just looking out for you, homie.
mobile_audio_labels[7] = SOUND_MSWE06H //It�s all show and respect, you lnow?
mobile_audio_labels[8] = SOUND_MSWE06J //Yeah, I guess.
mobile_audio_labels[9] = SOUND_MSWE06K //There�s a gym I use a couple of blocks out from the Grove.
mobile_audio_labels[10] = SOUND_MSWE06L //Go check it out and get yo�self a gangsta�s physique.
mobile_audio_labels[11] = SOUND_MSWE06N //I�ll scope it out.
mobile_audio_labels[12] = SOUND_MSWE06M //Later, man.
cell_index_end = 12
BREAK
CASE SWEET_MOBILE_CALL4
$mobile_print_labels[0] = &MSWE05A //Whassup?
$mobile_print_labels[1] = &MSWE05B //Your fat to muscle ratio, that�s what�s up!
$mobile_print_labels[2] = &MSWE05C //Sweet? What you on my back for now?
$mobile_print_labels[3] = &MSWE05D //I know we�re mourning moms and all,
$mobile_print_labels[4] = &MSWE05E //But there�s no need to let yourself go, CJ.
$mobile_print_labels[5] = &MSWE05F //So I put a little weight on, but�.
$mobile_print_labels[6] = &MSWE05G //There�s a gym I go to just up a couple of blocks from the Grove.
$mobile_print_labels[7] = &MSWE05H //Go check it out.
$mobile_print_labels[8] = &MSWE05J //Ok, I�m gonna see what�s up, man.
$mobile_print_labels[9] = &MSWE05K //But with the fat jokes, you�re gonna give me a complex.
mobile_audio_labels[0] = SOUND_MSWE05A //Whassup?
mobile_audio_labels[1] = SOUND_MSWE05B //Your fat to muscle ratio, that�s what�s up!
mobile_audio_labels[2] = SOUND_MSWE05C //Sweet? What you on my back for now?
mobile_audio_labels[3] = SOUND_MSWE05D //I know we�re mourning moms and all,
mobile_audio_labels[4] = SOUND_MSWE05E //But there�s no need to let yourself go, CJ.
mobile_audio_labels[5] = SOUND_MSWE05F //So I put a little weight on, but�.
mobile_audio_labels[6] = SOUND_MSWE05G //There�s a gym I go to just up a couple of blocks from the Grove.
mobile_audio_labels[7] = SOUND_MSWE05H //Go check it out.
mobile_audio_labels[8] = SOUND_MSWE05J //Ok, I�m gonna see what�s up, man.
mobile_audio_labels[9] = SOUND_MSWE05K //But with the fat jokes, you�re gonna give me a complex.
cell_index_end = 9
BREAK
CASE SWEET_MOBILE_CALL5 //NEED TO ADD THIS*******************************************************************************************
$mobile_print_labels[0] = &MSWE08A //Whattup, bro?
$mobile_print_labels[1] = &MSWE08B //CJ, I been thinking.
$mobile_print_labels[2] = &MSWE08C //The city�s big, but it ain�t that big.
$mobile_print_labels[3] = &MSWE08D //Some fools know where Smoke�s hiding.
$mobile_print_labels[4] = &MSWE08E //but as long as the Grove Street Families don�t rule the streets,
$mobile_print_labels[5] = &MSWE08F //his money is going to mean more than our rep.
$mobile_print_labels[6] = &MSWE08G //What you got in mind?
$mobile_print_labels[7] = &MSWE08H //We gotta hit those Ballas and Vagos with everything,
$mobile_print_labels[8] = &MSWE08J //Hit every neighborhood they got!
$mobile_print_labels[9] = &MSWE08K //If it�s the only way, I�m down for that!
$mobile_print_labels[10] = &MSWE08L //I�m gonna see what I can find out on the streets.
$mobile_print_labels[11] = &MSWE08N //Big love, bro.
$mobile_print_labels[12] = &MSWE08M //Big love, yo.
mobile_audio_labels[0] = SOUND_MSWE08A //Whattup, bro?
mobile_audio_labels[1] = SOUND_MSWE08B //CJ, I been thinking.
mobile_audio_labels[2] = SOUND_MSWE08C //The city�s big, but it ain�t that big.
mobile_audio_labels[3] = SOUND_MSWE08D //Some fools know where Smoke�s hiding.
mobile_audio_labels[4] = SOUND_MSWE08E //but as long as the Grove Street Families don�t rule the streets,
mobile_audio_labels[5] = SOUND_MSWE08F //his money is going to mean more than our rep.
mobile_audio_labels[6] = SOUND_MSWE08G //What you got in mind?
mobile_audio_labels[7] = SOUND_MSWE08H //We gotta hit those Ballas and Vagos with everything,
mobile_audio_labels[8] = SOUND_MSWE08J //Hit every neighborhood they got!
mobile_audio_labels[9] = SOUND_MSWE08K //If it�s the only way, I�m down for that!
mobile_audio_labels[10] = SOUND_MSWE08L //I�m gonna see what I can find out on the streets.
mobile_audio_labels[11] = SOUND_MSWE08N //Big love, bro.
mobile_audio_labels[12] = SOUND_MSWE08M //Big love, yo.
cell_index_end = 12
BREAK
CASE SWEET_MOBILE_CALL6
$mobile_print_labels[0] = &MSWE09A //Carl, it�s Sweet!
$mobile_print_labels[1] = &MSWE09B //Hey wassup, you find Smoke?
$mobile_print_labels[2] = &MSWE09C //After we dumped on those Ballas the Vagos started to speak.
$mobile_print_labels[3] = &MSWE09E //We�ve got him now!
$mobile_print_labels[4] = &MSWE09F //He�s hiding in Los Flores, or East Los Santos.
$mobile_print_labels[5] = &MSWE09G //Time to saddle up, CJ!
$mobile_print_labels[6] = &MSWE09H //Alright, I�ll get you, and then we�ll roll over there.
mobile_audio_labels[0] = SOUND_MSWE09A //Carl, it�s Sweet!
mobile_audio_labels[1] = SOUND_MSWE09B //Hey wassup, you find Smoke?
mobile_audio_labels[2] = SOUND_MSWE09C //After we dumped on those Ballas the Vagos started to speak.
mobile_audio_labels[3] = SOUND_MSWE09E //We�ve got him now!
mobile_audio_labels[4] = SOUND_MSWE09F //He�s hiding in Los Flores, or East Los Santos.
mobile_audio_labels[5] = SOUND_MSWE09G //Time to saddle up, CJ!
mobile_audio_labels[6] = SOUND_MSWE09H //Alright, I�ll get you, and then we�ll roll over there.
cell_index_end = 6
BREAK
CASE SWEET_MOBILE_CALL7
$mobile_print_labels[0] = &MSWE11A //Carl, it�s me.
$mobile_print_labels[1] = &MSWE11B //Sweet, what�s going on, man?
$mobile_print_labels[2] = &MSWE11C //What do you think is going on? I�m in a prison hospital wing, fool!
$mobile_print_labels[3] = &MSWE11D //I know, you alright?
$mobile_print_labels[4] = &MSWE11E //Not really, no.
$mobile_print_labels[5] = &MSWE11F //You gotta do ssomething, dude.
$mobile_print_labels[6] = &MSWE11G //I�m trying, man, just gotta make sure Kendl�s safe first.
$mobile_print_labels[7] = &MSWE11H //Ok, man, I gotta go...
$mobile_print_labels[8] = &MSWE11J //Don�t worry bro, I ain�t gonna leave you in there.
mobile_audio_labels[0] = SOUND_MSWE11A //Carl, it�s me.
mobile_audio_labels[1] = SOUND_MSWE11B //Sweet, what�s going on, man?
mobile_audio_labels[2] = SOUND_MSWE11C //What do you think is going on? I�m in a prison hospital wing, fool!
mobile_audio_labels[3] = SOUND_MSWE11D //I know, you alright?
mobile_audio_labels[4] = SOUND_MSWE11E //Not really, no.
mobile_audio_labels[5] = SOUND_MSWE11F //You gotta do ssomething, dude.
mobile_audio_labels[6] = SOUND_MSWE11G //I�m trying, man, just gotta make sure Kendl�s safe first.
mobile_audio_labels[7] = SOUND_MSWE11H //Ok, man, I gotta go...
mobile_audio_labels[8] = SOUND_MSWE11J //Don�t worry bro, I ain�t gonna leave you in there.
cell_index_end = 8
BREAK
CASE SWEET_MOBILE_CALL8
$mobile_print_labels[0] = &MSWE12A //Carl, it�s your brother.
$mobile_print_labels[1] = &MSWE12B //What�s up, man, you ok?
$mobile_print_labels[2] = &MSWE12C //Not really.
$mobile_print_labels[3] = &MSWE12D //I�m stuck in a cell between two lunatics.
$mobile_print_labels[4] = &MSWE12E //People keep trying to jump me.
$mobile_print_labels[5] = &MSWE12F //This ain�t cool, bro.
$mobile_print_labels[6] = &MSWE12G //You looking after Kendl?
$mobile_print_labels[7] = &MSWE12H //No, she�s looking after me!
$mobile_print_labels[8] = &MSWE12J //Cool
$mobile_print_labels[9] = &MSWE12K //But i�m gonna get you out of there!
$mobile_print_labels[10] = &MSWE12L //No you ain�t.
$mobile_print_labels[11] = &MSWE12N //Who do you think you are?
$mobile_print_labels[12] = &MSWE12M //I�m in for life, man, and I guess I�ve grown used to it now.
$mobile_print_labels[13] = &MSWE12O //You ain�t, man, I�m working shit out.
$mobile_print_labels[14] = &MSWE12P //Whatever it takes.
$mobile_print_labels[15] = &MSWE12Q //Nah, man, I�m through with hoping.
$mobile_print_labels[16] = &MSWE12R //Have a nice life, brother.
$mobile_print_labels[17] = &MSWE12S //No, wait, I got all kinds of shit going down, just hang in there!
$mobile_print_labels[18] = &MSWE12T //Sweet? SWEET?
$mobile_print_labels[19] = &MSWE12U //Shit....
mobile_audio_labels[0] = SOUND_MSWE12A //Carl, it�s your brother.
mobile_audio_labels[1] = SOUND_MSWE12B //What�s up, man, you ok?
mobile_audio_labels[2] = SOUND_MSWE12C //Not really.
mobile_audio_labels[3] = SOUND_MSWE12D //I�m stuck in a cell between two lunatics.
mobile_audio_labels[4] = SOUND_MSWE12E //People keep trying to jump me.
mobile_audio_labels[5] = SOUND_MSWE12F //This ain�t cool, bro.
mobile_audio_labels[6] = SOUND_MSWE12G //You looking after Kendl?
mobile_audio_labels[7] = SOUND_MSWE12H //No, she�s looking after me!
mobile_audio_labels[8] = SOUND_MSWE12J //Cool
mobile_audio_labels[9] = SOUND_MSWE12K //But i�m gonna get you out of there!
mobile_audio_labels[10] = SOUND_MSWE12L //No you ain�t.
mobile_audio_labels[11] = SOUND_MSWE12N //Who do you think you are?
mobile_audio_labels[12] = SOUND_MSWE12M //I�m in for life, man, and I guess I�ve grown used to it now.
mobile_audio_labels[13] = SOUND_MSWE12O //You ain�t, man, I�m working shit out.
mobile_audio_labels[14] = SOUND_MSWE12P //Whatever it takes.
mobile_audio_labels[15] = SOUND_MSWE12Q //Nah, man, I�m through with hoping.
mobile_audio_labels[16] = SOUND_MSWE12R //Have a nice life, brother.
mobile_audio_labels[17] = SOUND_MSWE12S //No, wait, I got all kinds of shit going down, just hang in there!
mobile_audio_labels[18] = SOUND_MSWE12T //Sweet? SWEET?
mobile_audio_labels[19] = SOUND_MSWE12U //Shit....
cell_index_end = 19
BREAK
/*
[MSWE02A] �Sup?
[MSWE02B] CJ, Sweet.
[MSWE02C] I thought you were on top of that problem.
[MSWE02D] Which problem?
[MSWE02E] I got problems knee deep!
[MSWE02F] Damn yay pushers all over Ganton.
[MSWE02G] I thought you were going to put the time in for yo�hood.
[MSWE02H] Tss, don�t sweat me, bro. I�m on it.
[MSWE02J] I hope so.
[MSWE02K] Lot of homies falling to the rock.
[MSWE02L] Like I said, I�m on it.
[MSWE03A] Yeah?
[MSWE03B] You seen your soldiers recently?
[MSWE03C] You seen what the streets are like?
[MSWE03D] What you talking about?
[MSWE03E] Damn base-heads, that�s what!
[MSWE03F] The Grove Street Families needs OG�s,
[MSWE03G] Not whacked-out chickenheads!
[MSWE03H] They won�t roll when they so high!
[MSWE03J] I�ll go see what I can see.
[MSWE03K] Well open your eyes this time!
[MSWE04A] Wassup?
[MSWE04B] What did I tell you about keeping an eye on yo�hood?
[MSWE04C] Yeah, my bad. Shit been hectic, man.
[MSWE04D] Grove Streets full of cluckers, man.
[MSWE04E] Ain�t an OG here ain�t high on yay!
[MSWE04F] No motherfucker going to bang when they fried!
[MSWE04G] I�ll tell you what. I�m a do a hood patrol, find the pushers, and whack �em.
[MSWE04H] Damn straight you will!
*/
// ***************************************CATALINA*******************************************************************************************
CASE CATALINA_MOBILE_CUT2
//CATALINA MOBILE 2
$mobile_print_labels[0] = &MCAT02A //Heeeello!
$mobile_print_labels[1] = &MCAT02B //Why you so cheery? You thought I was one of your cheap whores?
$mobile_print_labels[2] = &MCAT02C //Catalina, baby, you gotta chill the fuck out and �
$mobile_print_labels[3] = &MCAT02D //I�ll chill out when you get here!
$mobile_print_labels[4] = &MCAT02E //You better hope I don�t make testicle kebabs when you arrive!
$mobile_print_labels[5] = &MCAT02F //Look, this ain�t-
$mobile_print_labels[6] = &MCAT02G //No more talk!
$mobile_print_labels[7] = &MCAT02H //Get your ass up here, now!
mobile_audio_labels[0] = SOUND_MCAT02A //Heeeello!
mobile_audio_labels[1] = SOUND_MCAT02B //Why you so cheery? You thought I was one of your cheap whores?
mobile_audio_labels[2] = SOUND_MCAT02C //Catalina, baby, you gotta chill the fuck out and �
mobile_audio_labels[3] = SOUND_MCAT02D //I�ll chill out when you get here!
mobile_audio_labels[4] = SOUND_MCAT02E //You better hope I don�t make testicle kebabs when you arrive!
mobile_audio_labels[5] = SOUND_MCAT02F //Look, this ain�t-
mobile_audio_labels[6] = SOUND_MCAT02G //No more talk!
mobile_audio_labels[7] = SOUND_MCAT02H //Get your ass up here, now!
cell_index_end = 7
BREAK
CASE CATALINA_MOBILE_CUT3
//CATALINA MOBILE 3
$mobile_print_labels[0] = &MCAT03A //PIG!
$mobile_print_labels[1] = &MCAT03B //Catalina? Is that you?
mobile_audio_labels[0] = SOUND_MCAT03A //PIG!
mobile_audio_labels[1] = SOUND_MCAT03B //Catalina? Is that you?
cell_index_end = 1
BREAK
CASE CATALINA_MOBILE_CUT4
//CATALINA MOBILE 4
$mobile_print_labels[0] = &MCAT04A //Yo.
$mobile_print_labels[1] = &MCAT04B //Tiny-balled idiota!
$mobile_print_labels[2] = &MCAT04C //Catalina! Yo, I know it�s you. What�s eating you, baby?
$mobile_print_labels[3] = &MCAT04D //I don�t love you no more!
$mobile_print_labels[4] = &MCAT04E //Well hey, let�s just � <click>
$mobile_print_labels[5] = &MCAT04F //Hello?
mobile_audio_labels[0] = SOUND_MCAT04A //Yo.
mobile_audio_labels[1] = SOUND_MCAT04B //Tiny-balled idiota!
mobile_audio_labels[2] = SOUND_MCAT04C //Catalina! Yo, I know it�s you. What�s eating you, baby?
mobile_audio_labels[3] = SOUND_MCAT04D //I don�t love you no more!
mobile_audio_labels[4] = SOUND_MCAT04E //Well hey, let�s just � <click>
mobile_audio_labels[5] = SOUND_MCAT04F //Hello?
cell_index_end = 5
BREAK
CASE CATALINA_MOBILE_CUT5
//CATALINA MOBILE 5
$mobile_print_labels[0] = &MCAT05B //I know it�s you, you stinking perro!
$mobile_print_labels[1] = &MCAT05C //Look, just say what you gotta say.
$mobile_print_labels[2] = &MCAT05D //I ain�t interested in these stupid games!
$mobile_print_labels[3] = &MCAT05E //Stupid games? This is my heart you play with!
$mobile_print_labels[4] = &MCAT05F //What? Look, you � <click>
$mobile_print_labels[5] = &MCAT05G //Damn! Gotta change my number!
mobile_audio_labels[0] = SOUND_MCAT05B //I know it�s you, you stinking perro!
mobile_audio_labels[1] = SOUND_MCAT05C //Look, just say what you gotta say.
mobile_audio_labels[2] = SOUND_MCAT05D //I ain�t interested in these stupid games!
mobile_audio_labels[3] = SOUND_MCAT05E //Stupid games? This is my heart you play with!
mobile_audio_labels[4] = SOUND_MCAT05F //What? Look, you � <click>
mobile_audio_labels[5] = SOUND_MCAT05G //Damn! Gotta change my number!
cell_index_end = 5
BREAK
CASE CATALINA_MOBILE_CUT6
//CATALINA MOBILE 6
$mobile_print_labels[0] = &MCAT06A //Hello, Claude, baby.
$mobile_print_labels[1] = &MCAT06B //I thought I call to say how much I love you
$mobile_print_labels[2] = &MCAT06C //and how well endowered you are!
$mobile_print_labels[3] = &MCAT06D //Yo, Catalina, it�s Carl.
$mobile_print_labels[4] = &MCAT06E //I think you got the wrong number.
$mobile_print_labels[5] = &MCAT06F //Oh, Carl!
$mobile_print_labels[6] = &MCAT06G //So sorry, it is such an easy mistake to make,
$mobile_print_labels[7] = &MCAT06H //especially when I am so light-headed with love, and lust.
$mobile_print_labels[8] = &MCAT06J //Yeah, well I �
$mobile_print_labels[9] = &MCAT06K //No time � byeeee! <click>
mobile_audio_labels[0] = SOUND_MCAT06A //Hello, Claude, baby.
mobile_audio_labels[1] = SOUND_MCAT06B //I thought I call to say how much I love you
mobile_audio_labels[2] = SOUND_MCAT06C //and how well endowered you are!
mobile_audio_labels[3] = SOUND_MCAT06D //Yo, Catalina, it�s Carl.
mobile_audio_labels[4] = SOUND_MCAT06E //I think you got the wrong number.
mobile_audio_labels[5] = SOUND_MCAT06F //Oh, Carl!
mobile_audio_labels[6] = SOUND_MCAT06G //So sorry, it is such an easy mistake to make,
mobile_audio_labels[7] = SOUND_MCAT06H //especially when I am so light-headed with love, and lust.
mobile_audio_labels[8] = SOUND_MCAT06J //Yeah, well I �
mobile_audio_labels[9] = SOUND_MCAT06K //No time � byeeee! <click>
cell_index_end = 9
BREAK
CASE CATALINA_MOBILE_CUT7
//CATALINA MOBILE 7
$mobile_print_labels[0] = &MCAT07A //Yo.
$mobile_print_labels[1] = &MCAT07B //Heavy breathing.
$mobile_print_labels[2] = &MCAT07C //Hello?
$mobile_print_labels[3] = &MCAT07D //Yes, Claude, faster, harder, DEEPER!
$mobile_print_labels[4] = &MCAT07E //Oh, yes, yes, yes, YES!
$mobile_print_labels[5] = &MCAT07F //Catalina! You�re sick! Get help!
$mobile_print_labels[6] = &MCAT07G //And you, Carl, you are jealous! <click>
mobile_audio_labels[0] = SOUND_MCAT07A //Yo.
mobile_audio_labels[1] = SOUND_MCAT07B //Heavy breathing.
mobile_audio_labels[2] = SOUND_MCAT07C //Hello?
mobile_audio_labels[3] = SOUND_MCAT07D //Yes, Claude, faster, harder, DEEPER!
mobile_audio_labels[4] = SOUND_MCAT07E //Oh, yes, yes, yes, YES!
mobile_audio_labels[5] = SOUND_MCAT07F //Catalina! You�re sick! Get help!
mobile_audio_labels[6] = SOUND_MCAT07G //And you, Carl, you are jealous! <click>
cell_index_end = 6
BREAK
// ***************************************OG LOC*******************************************************************************************
CASE OGLOC_MOBILE_CALL3
//MOB_04 OG LOC CALLS CJ TO PARTY
$mobile_print_labels[0] = &MLOC03A //Hey CJ, word up, G!
$mobile_print_labels[1] = &MLOC03B //Hey, Loc.
$mobile_print_labels[2] = &MLOC03C //Party is humping, we got a gang of crazy assed bitches,
$mobile_print_labels[3] = &MLOC03D //you coming over, homes?
$mobile_print_labels[4] = &MLOC03E //I don�t know. I had plans tonight.
$mobile_print_labels[5] = &MLOC03F //But we had a big disaster. I won�t be rappin�, my mic�s broken!
$mobile_print_labels[6] = &MLOC03H //I�ll be over right away.
mobile_audio_labels[0] = SOUND_MLOC03A //Hey CJ, word up, G!
mobile_audio_labels[1] = SOUND_MLOC03B //Hey, Loc.
mobile_audio_labels[2] = SOUND_MLOC03C //Party is humping, we got a gang of crazy assed bitches,
mobile_audio_labels[3] = SOUND_MLOC03D //you coming over, homes?
mobile_audio_labels[4] = SOUND_MLOC03E //I don�t know. I had plans tonight.
mobile_audio_labels[5] = SOUND_MLOC03F //But we had a big disaster. I won�t be rappin�, my mic�s broken!
mobile_audio_labels[6] = SOUND_MLOC03H //I�ll be over right away.
cell_index_end = 6
BREAK
// ***************************************CESAR*******************************************************************************************
CASE CESAR_MOBILE_CALL1
$mobile_print_labels[0] = &MCES01A // Hey, who�s this?
$mobile_print_labels[1] = &MCES01B // Ese, holmes, is me, Cesar Vialpando.
$mobile_print_labels[2] = &MCES01C // Hey, you seen Kendl?
$mobile_print_labels[3] = &MCES01D // Yeah, she around. I�m ringing to say you drive good and you like cars, eh.
$mobile_print_labels[4] = &MCES01E // Yeah, I guess, where�s this going?
$mobile_print_labels[5] = &MCES01F // You wanna make something, a little money?
$mobile_print_labels[6] = &MCES01G // Does the Pope shit in the woods?
$mobile_print_labels[7] = &MCES01H // I don�t know, but if you do want to make a little extra, there�s plenty money to be made racing.
$mobile_print_labels[8] = &MCES01K // You�re talking illegal street racing, yeah?
$mobile_print_labels[9] = &MCES01L // Ci. No tacky shit, holmes, lowriders.
$mobile_print_labels[10] = &MCES01M // Nice ones. It gotta be nice, or you don�t get in, eh.
$mobile_print_labels[11] = &MCES01N // Ok, I�m in. When and where?
$mobile_print_labels[12] = &MCES01O // Drop by place in El Corona, I�ll take you to the meet, vouch for you.
$mobile_print_labels[13] = &MCES01P // These guys can be very nervous with new racers, eh.
mobile_audio_labels[0] = SOUND_MCES01A // Hey, who�s this?
mobile_audio_labels[1] = SOUND_MCES01B // Ese, holmes, is me, Cesar Vialpando.
mobile_audio_labels[2] = SOUND_MCES01C // Hey, you seen Kendl?
mobile_audio_labels[3] = SOUND_MCES01D // Yeah, she around. I�m ringing to say you drive good and you like cars, eh.
mobile_audio_labels[4] = SOUND_MCES01E // Yeah, I guess, where�s this going?
mobile_audio_labels[5] = SOUND_MCES01F // You wanna make something, a little money?
mobile_audio_labels[6] = SOUND_MCES01G // Does the Pope shit in the woods?
mobile_audio_labels[7] = SOUND_MCES01H // I don�t know, but if you do want to make a little extra, there�s plenty money to be made racing.
mobile_audio_labels[8] = SOUND_MCES01K // You�re talking illegal street racing, yeah?
mobile_audio_labels[9] = SOUND_MCES01L // Ci. No tacky shit, holmes, lowriders.
mobile_audio_labels[10] = SOUND_MCES01M // Nice ones. It gotta be nice, or you don�t get in, eh.
mobile_audio_labels[11] = SOUND_MCES01N // Ok, I�m in. When and where?
mobile_audio_labels[12] = SOUND_MCES01O // Drop by place in El Corona, I�ll take you to the meet, vouch for you.
mobile_audio_labels[13] = SOUND_MCES01P // These guys can be very nervous with new racers, eh.
cell_index_end = 13
BREAK
CASE CESAR_MOBILE_CALL4
$mobile_print_labels[0] = &MCES04A // Cesar, it�s me.
$mobile_print_labels[1] = &MCES04B // Carl. You alright, holmes?
$mobile_print_labels[2] = &MCES04C // Your sister been worried. I heard some shit went down.
$mobile_print_labels[3] = &MCES04D // Yeah. Los Santos is dangerous right now.
$mobile_print_labels[4] = &MCES04E // I�m out in the middle of� of� I don�t know�
$mobile_print_labels[5] = &MCES04F // of Whetstone. Wherever that is.
$mobile_print_labels[6] = &MCES04G // Don�t know Whetstone too well.
$mobile_print_labels[7] = &MCES04H // I got some family out near there, I think.
$mobile_print_labels[8] = &MCES04J // At least you ain�t in jail.
//$mobile_print_labels[9] = &MCES04K // Shit�s fucked up with your brother, esse.
$mobile_print_labels[9] = &MCES04L // You be careful and look after Kendl.
$mobile_print_labels[10] = &MCES04M // Don�t worry about me, man.
$mobile_print_labels[11] = &MCES04N // Worry about the man who tries to fuck with my woman.
$mobile_print_labels[12] = &MCES04O // I got some back up coming out to protect you.
$mobile_print_labels[13] = &MCES04P // My cousin. Really intense, holmes. Trust me.
$mobile_print_labels[14] = &MCES04Q // Meet them at the diner in Dillimore over in Red County.
$mobile_print_labels[15] = &MCES04R // You won�t miss them.
mobile_audio_labels[0] = SOUND_MCES04A // Cesar, it�s me.
mobile_audio_labels[1] = SOUND_MCES04B // Carl. You alright, holmes?
mobile_audio_labels[2] = SOUND_MCES04C // Your sister been worried. I heard some shit went down.
mobile_audio_labels[3] = SOUND_MCES04D // Yeah. Los Santos is dangerous right now.
mobile_audio_labels[4] = SOUND_MCES04E // I�m out in the middle of� of� I don�t know�
mobile_audio_labels[5] = SOUND_MCES04F // of Whetstone. Wherever that is.
mobile_audio_labels[6] = SOUND_MCES04G // Don�t know Whetstone too well.
mobile_audio_labels[7] = SOUND_MCES04H // I got some family out near there, I think.
mobile_audio_labels[8] = SOUND_MCES04J // At least you ain�t in jail.
//mobile_audio_labels[9] = SOUND_MCES04K // Shit�s fucked up with your brother, esse.
mobile_audio_labels[9] = SOUND_MCES04L // You be careful and look after Kendl.
mobile_audio_labels[10] = SOUND_MCES04M // Don�t worry about me, man.
mobile_audio_labels[11] = SOUND_MCES04N // Worry about the man who tries to fuck with my woman.
mobile_audio_labels[12] = SOUND_MCES04O // I got some back up coming out to protect you.
mobile_audio_labels[13] = SOUND_MCES04P // My cousin. Really intense, holmes. Trust me.
mobile_audio_labels[14] = SOUND_MCES04Q // Meet them at the diner in Dillimore over in Red County.
mobile_audio_labels[15] = SOUND_MCES04R // You won�t miss them.
cell_index_end = 15
BREAK
CASE CESAR_MOBILE_CALL9
$mobile_print_labels[0] = &MCES09A // Hey, holmes, I been busy!
$mobile_print_labels[1] = &MCES09B // Cesar! Whasup?
$mobile_print_labels[2] = &MCES09C // I can smell nitrous oxide from a mile off, eh.
$mobile_print_labels[3] = &MCES09D // Racing, my friend. Cars.
$mobile_print_labels[4] = &MCES09E // Not beautiful cars, but fast, man, fast!
$mobile_print_labels[5] = &MCES09F // What are you talking about?
$mobile_print_labels[6] = &MCES09G // Street racers, from San Fierro.
$mobile_print_labels[7] = &MCES09H // They meet out here to tear up the black top.
//$mobile_print_labels[8] = &MCES09J // No chota, no chota choppers.
$mobile_print_labels[8] = &MCES09K // You wanna make some money?
$mobile_print_labels[9] = &MCES09L // Does the Pope shit in the woods?
$mobile_print_labels[10] = &MCES09M // Why you keep asking me that, holmes?
$mobile_print_labels[11] = &MCES09N // I told you, I dunno. Where his holiness shits is his business.
$mobile_print_labels[12] = &MCES09O // Just get a fast car and meet me and Kendl just south of Montgomery.
$mobile_print_labels[13] = &MCES09P // See you, man.
mobile_audio_labels[0] = SOUND_MCES09A // Hey, holmes, I been busy!
mobile_audio_labels[1] = SOUND_MCES09B // Cesar! Whasup?
mobile_audio_labels[2] = SOUND_MCES09C // I can smell nitrous oxide from a mile off, eh.
mobile_audio_labels[3] = SOUND_MCES09D // Racing, my friend. Cars.
mobile_audio_labels[4] = SOUND_MCES09E // Not beautiful cars, but fast, man, fast!
mobile_audio_labels[5] = SOUND_MCES09F // What are you talking about?
mobile_audio_labels[6] = SOUND_MCES09G // Street racers, from San Fierro.
mobile_audio_labels[7] = SOUND_MCES09H // They meet out here to tear up the black top.
//mobile_audio_labels[8] = SOUND_MCES09J // No chota, no chota choppers.
mobile_audio_labels[8] = SOUND_MCES09K // You wanna make some money?
mobile_audio_labels[9] = SOUND_MCES09L // Does the Pope shit in the woods?
mobile_audio_labels[10] = SOUND_MCES09M // Why you keep asking me that, holmes?
mobile_audio_labels[11] = SOUND_MCES09N // I told you, I dunno. Where his holiness shits is his business.
mobile_audio_labels[12] = SOUND_MCES09O // Just get a fast car and meet me and Kendl just south of Montgomery.
mobile_audio_labels[13] = SOUND_MCES09P // See you, man.
cell_index_end = 13
BREAK
// ***************************************KENDAL*******************************************************************************************
CASE KENDAL_MOBILE_CALL1
$mobile_print_labels[0] = &MKND01A // Yo.
$mobile_print_labels[1] = &MKND01B // Loser!
$mobile_print_labels[2] = &MKND01C // Yeah, yeah, Kendl.
$mobile_print_labels[3] = &MKND01D // Will you ever grow up?
$mobile_print_labels[4] = &MKND01E // I will when you will.
$mobile_print_labels[5] = &MKND01F // Ok, it�s a deal.
$mobile_print_labels[6] = &MKND01G // Tell Cesar next time I�ll be in a faster car!
$mobile_print_labels[7] = &MKND01H // It won�t help you � LOSER!
$mobile_print_labels[8] = &MKND01J // Goodbye!
mobile_audio_labels[0] = SOUND_MKND01A // Yo.
mobile_audio_labels[1] = SOUND_MKND01B // Loser!
mobile_audio_labels[2] = SOUND_MKND01C // Yeah, yeah, Kendl.
mobile_audio_labels[3] = SOUND_MKND01D // Will you ever grow up?
mobile_audio_labels[4] = SOUND_MKND01E // I will when you will.
mobile_audio_labels[5] = SOUND_MKND01F // Ok, it�s a deal.
mobile_audio_labels[6] = SOUND_MKND01G // Tell Cesar next time I�ll be in a faster car!
mobile_audio_labels[7] = SOUND_MKND01H // It won�t help you � LOSER!
mobile_audio_labels[8] = SOUND_MKND01J // Goodbye!
cell_index_end = 8
BREAK
// ***************************************CRASH*******************************************************************************************
CASE CRASH_MOBILE_CALL1
$mobile_print_labels[0] = &MTEN01A // Wassup?
$mobile_print_labels[1] = &MTEN01B // Don�t try and hit me up with that ghetto babble, boy!
$mobile_print_labels[2] = &MTEN01C // Officer Tenpenny. How�d you get my number?
$mobile_print_labels[3] = &MTEN01D // Ways and means, you piece of shit. You been trying to avoid me?
$mobile_print_labels[4] = &MTEN01E // No Sir, just been busy is all.
$mobile_print_labels[5] = &MTEN01F // You�re not busy unless you�re doing something for us, you understand?
$mobile_print_labels[6] = &MTEN01G // Yeah. Loud and clear.
$mobile_print_labels[7] = &MTEN01H // Nice to hear it, Carl.
$mobile_print_labels[8] = &MTEN01J // Call in to the doughnut place in the middle of Market � we need to talk.
mobile_audio_labels[0] = SOUND_MTEN01A // Wassup?
mobile_audio_labels[1] = SOUND_MTEN01B // Don�t try and hit me up with that ghetto babble, boy!
mobile_audio_labels[2] = SOUND_MTEN01C // Officer Tenpenny. How�d you get my number?
mobile_audio_labels[3] = SOUND_MTEN01D // Ways and means, you piece of shit. You been trying to avoid me?
mobile_audio_labels[4] = SOUND_MTEN01E // No Sir, just been busy is all.
mobile_audio_labels[5] = SOUND_MTEN01F // You�re not busy unless you�re doing something for us, you understand?
mobile_audio_labels[6] = SOUND_MTEN01G // Yeah. Loud and clear.
mobile_audio_labels[7] = SOUND_MTEN01H // Nice to hear it, Carl.
mobile_audio_labels[8] = SOUND_MTEN01J // Call in to the doughnut place in the middle of Market � we need to talk.
cell_index_end = 8
BREAK
CASE CRASH_MOBILE_CALL2
$mobile_print_labels[0] = &MTEN02A // Carl! You get that dossier?
$mobile_print_labels[1] = &MTEN02B // Yeah I got the damn files. What do you want me to do with them?
$mobile_print_labels[2] = &MTEN02C // We need to meet up someplace quiet and take care of things.
$mobile_print_labels[3] = &MTEN02D // There�s a ghost town, Las Brujas in the devil�s Castle � you know it?
$mobile_print_labels[4] = &MTEN02E // I�ll find it.
$mobile_print_labels[5] = &MTEN02F // I know you will, I�ll see you there.
mobile_audio_labels[0] = SOUND_MTEN02A // Carl! You get that dossier?
mobile_audio_labels[1] = SOUND_MTEN02B // Yeah I got the damn files. What do you want me to do with them?
mobile_audio_labels[2] = SOUND_MTEN02C // We need to meet up someplace quiet and take care of things.
mobile_audio_labels[3] = SOUND_MTEN02D // There�s a ghost town, Las Brujas in the devil�s Castle � you know it?
mobile_audio_labels[4] = SOUND_MTEN02E // I�ll find it.
mobile_audio_labels[5] = SOUND_MTEN02F // I know you will, I�ll see you there.
cell_index_end = 5
BREAK
CASE CRASH_MOBILE_CALL3
$mobile_print_labels[0] = &MHRZ01A //Carl, it's officer Hernandez
$mobile_print_labels[1] = &MHRZ01B //Who?
$mobile_print_labels[2] = &MHRZ01C //Officer Hernandez.
$mobile_print_labels[3] = &MHRZ01D //I work with Tenpenny and Pulaski.
$mobile_print_labels[4] = &MHRZ01E //Oh, the bitch, what the hell you want?
$mobile_print_labels[5] = &MHRZ01F //Hey, show me some respect, uh, boy.
$mobile_print_labels[6] = &MHRZ01G //Go fuck yourself, you just they bitch!
$mobile_print_labels[7] = &MHRZ01H //You watch your tone, boy.
$mobile_print_labels[8] = &MHRZ01J //Now listen. I've got a message from Officer Tenpenny.
$mobile_print_labels[9] = &MHRZ01K //Don't try and leave town, that would be a big mistake.
$mobile_print_labels[10] = &MHRZ01L //You hear me?
$mobile_print_labels[11] = &MHRZ01M //We're watching you.
$mobile_print_labels[12] = &MHRZ01N //Whatever you say, bitch.
mobile_audio_labels[0] = SOUND_MHRZ01A //Carl, it's officer Hernandez
mobile_audio_labels[1] = SOUND_MHRZ01B //Who?
mobile_audio_labels[2] = SOUND_MHRZ01C //Officer Hernandez.
mobile_audio_labels[3] = SOUND_MHRZ01D //I work with Tenpenny and Pulaski.
mobile_audio_labels[4] = SOUND_MHRZ01E //Oh, the bitch, what the hell you want?
mobile_audio_labels[5] = SOUND_MHRZ01F //Hey, show me some respect, uh, boy.
mobile_audio_labels[6] = SOUND_MHRZ01G //Go fuck yourself, you just they bitch!
mobile_audio_labels[7] = SOUND_MHRZ01H //You watch your tone, boy.
mobile_audio_labels[8] = SOUND_MHRZ01J //Now listen. I've got a message from Officer Tenpenny.
mobile_audio_labels[9] = SOUND_MHRZ01K //Don't try and leave town, that would be a big mistake.
mobile_audio_labels[10] = SOUND_MHRZ01L //You hear me?
mobile_audio_labels[11] = SOUND_MHRZ01M //We're watching you.
mobile_audio_labels[12] = SOUND_MHRZ01N //Whatever you say, bitch.
cell_index_end = 12
BREAK
// ***************************************SMOKE*******************************************************************************************
CASE SMOKE_MOBILE_CALL1
$mobile_print_labels[0] = &MSMK01A //CARl, it�s smoke.
$mobile_print_labels[1] = &MSMK01B //Hey smoke
$mobile_print_labels[2] = &MSMK01C //Now Carl, I don�t want you to be taking offence at this or nothing,
$mobile_print_labels[3] = &MSMK01D //but I got some advice for you.
$mobile_print_labels[4] = &MSMK01E //What?
$mobile_print_labels[5] = &MSMK01F //The gym my friend. You�re letting yourself go.
$mobile_print_labels[6] = &MSMK01G //That�s a bit much, coming from you.
$mobile_print_labels[7] = &MSMK01H //Hey Carl, I�m big boned. But I�m still an athlete.
$mobile_print_labels[8] = &MSMK01J //You�re letting yourself go, and to be honest, it breaks my heart.
$mobile_print_labels[9] = &MSMK01K //Gimme a break.
$mobile_print_labels[10] = &MSMK01L //I�m trying. Trying to help you help yourself, brother. The gym, you hear.
$mobile_print_labels[11] = &MSMK01M //Screw you.
mobile_audio_labels[0] = SOUND_MSMK01A //CARl, it�s smoke.
mobile_audio_labels[1] = SOUND_MSMK01B //Hey smoke
mobile_audio_labels[2] = SOUND_MSMK01C //Now Carl, I don�t want you to be taking offence at this or nothing,
mobile_audio_labels[3] = SOUND_MSMK01D //but I got some advice for you.
mobile_audio_labels[4] = SOUND_MSMK01E //What?
mobile_audio_labels[5] = SOUND_MSMK01F //The gym my friend. You�re letting yourself go.
mobile_audio_labels[6] = SOUND_MSMK01G //That�s a bit much, coming from you.
mobile_audio_labels[7] = SOUND_MSMK01H //Hey Carl, I�m big boned. But I�m still an athlete.
mobile_audio_labels[8] = SOUND_MSMK01J //You�re letting yourself go, and to be honest, it breaks my heart.
mobile_audio_labels[9] = SOUND_MSMK01K //Gimme a break.
mobile_audio_labels[10] = SOUND_MSMK01L //I�m trying. Trying to help you help yourself, brother. The gym, you hear.
mobile_audio_labels[11] = SOUND_MSMK01M //Screw you.
cell_index_end = 11
BREAK
// ***************************************TRUTH*******************************************************************************************
CASE TRUTH_MOBILE_CALL1
$mobile_print_labels[0] = &MTRU01A //Yes.
$mobile_print_labels[1] = &MTRU01B //Carl.
$mobile_print_labels[2] = &MTRU01C //Who is this?
$mobile_print_labels[3] = &MTRU01D //You know me. This is The Truth
$mobile_print_labels[4] = &MTRU01E //No, I don�t.
$mobile_print_labels[5] = &MTRU01F //Perfection. They said you were a moron.
$mobile_print_labels[6] = &MTRU01G //Who?
$mobile_print_labels[7] = &MTRU01H //Okay, you can drop the act now, kid.
$mobile_print_labels[8] = &MTRU01J //Are you the police?
$mobile_print_labels[9] = &MTRU01K //No. We have a mutual friend, and business partner.
$mobile_print_labels[10] = &MTRU01L //We do? Who?
$mobile_print_labels[11] = &MTRU01M //Yes. Have you killed any cops lately?
$mobile_print_labels[12] = &MTRU01N //Oh, god!
$mobile_print_labels[13] = &MTRU01O //So, I�ve got a room at a motel in Angel Pine.
$mobile_print_labels[14] = &MTRU01P //Make sure nobody follows you.
mobile_audio_labels[0] = SOUND_MTRU01A //Yes.
mobile_audio_labels[1] = SOUND_MTRU01B //Carl.
mobile_audio_labels[2] = SOUND_MTRU01C //Who is this?
mobile_audio_labels[3] = SOUND_MTRU01D //You know me. This is The Truth
mobile_audio_labels[4] = SOUND_MTRU01E //No, I don�t.
mobile_audio_labels[5] = SOUND_MTRU01F //Perfection. They said you were a moron.
mobile_audio_labels[6] = SOUND_MTRU01G //Who?
mobile_audio_labels[7] = SOUND_MTRU01H //Okay, you can drop the act now, kid.
mobile_audio_labels[8] = SOUND_MTRU01J //Are you the police?
mobile_audio_labels[9] = SOUND_MTRU01K //No. We have a mutual friend, and business partner.
mobile_audio_labels[10] = SOUND_MTRU01L //We do? Who?
mobile_audio_labels[11] = SOUND_MTRU01M //Yes. Have you killed any cops lately?
mobile_audio_labels[12] = SOUND_MTRU01N //Oh, god!
mobile_audio_labels[13] = SOUND_MTRU01O //So, I�ve got a room at a motel in Angel Pine.
mobile_audio_labels[14] = SOUND_MTRU01P //Make sure nobody follows you.
cell_index_end = 14
BREAK
CASE TRUTH_MOBILE_CALL2
$mobile_print_labels[0] = &MTRU02A //Whattup?
$mobile_print_labels[1] = &MTRU02B //Hey, Carl. Now, I got that little mwah mwah you were after.
$mobile_print_labels[2] = &MTRU02C //But, be careful. People are listening to us.
$mobile_print_labels[3] = &MTRU02D //I got a little green village up in the hills, come and get it.
$mobile_print_labels[4] = &MTRU02E //I don�t know you! I don�t know you!
$mobile_print_labels[5] = &MTRU02F //Prank caller! Prank caller!
mobile_audio_labels[0] = SOUND_MTRU02A //Whattup?
mobile_audio_labels[1] = SOUND_MTRU02B //Hey, Carl. Now, I got that little mwah mwah you were after.
mobile_audio_labels[2] = SOUND_MTRU02C //But, be careful. People are listening to us.
mobile_audio_labels[3] = SOUND_MTRU02D //I got a little green village up in the hills, come and get it.
mobile_audio_labels[4] = SOUND_MTRU02E //I don�t know you! I don�t know you!
mobile_audio_labels[5] = SOUND_MTRU02F //Prank caller! Prank caller!
cell_index_end = 5
BREAK
CASE TRUTH_MOBILE_CALL3
$mobile_print_labels[0] = &MTRU03A //Hey
$mobile_print_labels[1] = &MTRU03B //Carl. It�s me. The Truth. We got a date with destiny, man
$mobile_print_labels[2] = &MTRU03C //In about five minutes.
$mobile_print_labels[3] = &MTRU03D //Where are you?
$mobile_print_labels[4] = &MTRU03E //At the old airplane graveyard you�ve been hanging around.
mobile_audio_labels[0] = SOUND_MTRU03A //Hey
mobile_audio_labels[1] = SOUND_MTRU03B //Carl. It�s me. The Truth. We got a date with destiny, man
mobile_audio_labels[2] = SOUND_MTRU03C //In about five minutes.
mobile_audio_labels[3] = SOUND_MTRU03D //Where are you?
mobile_audio_labels[4] = SOUND_MTRU03E //At the old airplane graveyard you�ve been hanging around.
cell_index_end = 4
BREAK
// ***************************************WUZI*******************************************************************************************
CASE WUZI_MOBILE_CALL1
$mobile_print_labels[0] = &MWUZ00A //Whattup?
$mobile_print_labels[1] = &MWUZ00B //Hey Carl, it�s Woozie.
$mobile_print_labels[2] = &MWUZ00C //Hey, if you got some time I�d like for you to come over so we can talk about something.
$mobile_print_labels[3] = &MWUZ00D //Yeah, sure. Where can I find you?
$mobile_print_labels[4] = &MWUZ00E //I own a little betting shop in China Town.
$mobile_print_labels[5] = &MWUZ00F //Just come �round and introduce yourself.
$mobile_print_labels[6] = &MWUZ00G //My people will be expecting a visit.
$mobile_print_labels[7] = &MWUZ00H //It�s a plan, man.
$mobile_print_labels[8] = &MWUZ00J //Later, dude.
mobile_audio_labels[0] = SOUND_MWUZ00A //Whattup?
mobile_audio_labels[1] = SOUND_MWUZ00B //Hey Carl, it�s Woozie.
mobile_audio_labels[2] = SOUND_MWUZ00C //Hey, if you got some time I�d like for you to come over so we can talk about something.
mobile_audio_labels[3] = SOUND_MWUZ00D //Yeah, sure. Where can I find you?
mobile_audio_labels[4] = SOUND_MWUZ00E //I own a little betting shop in China Town.
mobile_audio_labels[5] = SOUND_MWUZ00F //Just come �round and introduce yourself.
mobile_audio_labels[6] = SOUND_MWUZ00G //My people will be expecting a visit.
mobile_audio_labels[7] = SOUND_MWUZ00H //It�s a plan, man.
mobile_audio_labels[8] = SOUND_MWUZ00J //Later, dude.
cell_index_end = 8
BREAK
CASE WUZI_MOBILE_CALL3
$mobile_print_labels[0] = &MWUZ03A //Hello?
$mobile_print_labels[1] = &MWUZ03B //Carl, it�s Woozie!
$mobile_print_labels[2] = &MWUZ03C //Hey, Woozie, man, what you been up to, dude?
$mobile_print_labels[3] = &MWUZ03D //Come along and see for yourself.
$mobile_print_labels[4] = &MWUZ03E //I got a little business proposition for you.
$mobile_print_labels[5] = &MWUZ03F //Come over and see the setup, my friend.
$mobile_print_labels[6] = &MWUZ03G //Ok, sure, I�d like that!
$mobile_print_labels[7] = &MWUZ03H //Like it? You�re gonna love it!
$mobile_print_labels[8] = &MWUZ03J //It�s the Four Dragons Casino in Las Venturas.
$mobile_print_labels[9] = &MWUZ03K //I�ll see you soon, yeah?
$mobile_print_labels[10] = &MWUZ03L //Sure thing, dude.
mobile_audio_labels[0] = SOUND_MWUZ03A //Hello?
mobile_audio_labels[1] = SOUND_MWUZ03B //Carl, it�s Woozie!
mobile_audio_labels[2] = SOUND_MWUZ03C //Hey, Woozie, man, what you been up to, dude?
mobile_audio_labels[3] = SOUND_MWUZ03D //Come along and see for yourself.
mobile_audio_labels[4] = SOUND_MWUZ03E //I got a little business proposition for you.
mobile_audio_labels[5] = SOUND_MWUZ03F //Come over and see the setup, my friend.
mobile_audio_labels[6] = SOUND_MWUZ03G //Ok, sure, I�d like that!
mobile_audio_labels[7] = SOUND_MWUZ03H //Like it? You�re gonna love it!
mobile_audio_labels[8] = SOUND_MWUZ03J //It�s the Four Dragons Casino in Las Venturas.
mobile_audio_labels[9] = SOUND_MWUZ03K //I�ll see you soon, yeah?
mobile_audio_labels[10] = SOUND_MWUZ03L //Sure thing, dude.
cell_index_end = 10
BREAK
CASE WUZI_MOBILE_CALL4
$mobile_print_labels[0] = &MWUZ03B //Carl, it�s Woozie!
$mobile_print_labels[1] = &MWUZ05B //Whattup, dude?
$mobile_print_labels[2] = &MWUZ05C //You get that pass key yet?
$mobile_print_labels[3] = &MWUZ05D //No, I�m working on it.
$mobile_print_labels[4] = &MWUZ05E //What�s the problem, friend?
$mobile_print_labels[5] = &MWUZ05F //Just get her in the sack, make her happy and grab the card!
$mobile_print_labels[6] = &MWUZ05G //Hey, you can�t rush the seduction of a lady!
$mobile_print_labels[7] = &MWUZ05H //(laugh) okay, just gimme a call when you�ve got it.
$mobile_print_labels[8] = &MWUZ05J //Will do.
mobile_audio_labels[0] = SOUND_MWUZ03B //Carl, it�s Woozie!
mobile_audio_labels[1] = SOUND_MWUZ05B //Whattup, dude?
mobile_audio_labels[2] = SOUND_MWUZ05C //You get that pass key yet?
mobile_audio_labels[3] = SOUND_MWUZ05D //No, I�m working on it.
mobile_audio_labels[4] = SOUND_MWUZ05E //What�s the problem, friend?
mobile_audio_labels[5] = SOUND_MWUZ05F //Just get her in the sack, make her happy and grab the card!
mobile_audio_labels[6] = SOUND_MWUZ05G //Hey, you can�t rush the seduction of a lady!
mobile_audio_labels[7] = SOUND_MWUZ05H //(laugh) okay, just gimme a call when you�ve got it.
mobile_audio_labels[8] = SOUND_MWUZ05J //Will do.
cell_index_end = 8
BREAK
CASE WUZI_MOBILE_CALL5
$mobile_print_labels[0] = &MWUZ07A //Carl, it�s me.
$mobile_print_labels[1] = &MWUZ07B //You the man!
$mobile_print_labels[2] = &MWUZ07C //Get back to the Four Dragons and we can get on with this thing!
$mobile_print_labels[3] = &MWUZ07D //See you in five.
mobile_audio_labels[0] = SOUND_MWUZ07A //Carl, it�s me.
mobile_audio_labels[1] = SOUND_MWUZ07B //You the man!
mobile_audio_labels[2] = SOUND_MWUZ07C //Get back to the Four Dragons and we can get on with this thing!
mobile_audio_labels[3] = SOUND_MWUZ07D //See you in five.
cell_index_end = 3
BREAK
CASE WUZI_MOBILE_CALL6
$mobile_print_labels[0] = &MWUZ04A //Yellow?
$mobile_print_labels[1] = &MWUZ04B //Hey, CJ, what�s up with you?
$mobile_print_labels[2] = &MWUZ04C //Are we doing this heist or are you going soft on me again.
$mobile_print_labels[3] = &MWUZ04D //Yo, check it, those three fools have been shipped out of Venturas,
$mobile_print_labels[4] = &MWUZ04E //Salvatore thinks I�m cool, so we�re on!
$mobile_print_labels[5] = &MWUZ04F //I�ll meet you back at the �Dragons.
$mobile_print_labels[6] = &MWUZ04G //Ok, cool.
$mobile_print_labels[7] = &MWUZ04H //Later.
mobile_audio_labels[0] = SOUND_MWUZ04A //Yellow?
mobile_audio_labels[1] = SOUND_MWUZ04B //Hey, CJ, what�s up with you?
mobile_audio_labels[2] = SOUND_MWUZ04C //Are we doing this heist or are you going soft on me again.
mobile_audio_labels[3] = SOUND_MWUZ04D //Yo, check it, those three fools have been shipped out of Venturas,
mobile_audio_labels[4] = SOUND_MWUZ04E //Salvatore thinks I�m cool, so we�re on!
mobile_audio_labels[5] = SOUND_MWUZ04F //I�ll meet you back at the �Dragons.
mobile_audio_labels[6] = SOUND_MWUZ04G //Ok, cool.
mobile_audio_labels[7] = SOUND_MWUZ04H //Later.
cell_index_end = 7
BREAK
CASE WUZI_MOBILE_CALL7
$mobile_print_labels[0] = &MWUZ06A //Hello?
$mobile_print_labels[1] = &MWUZ06B //What�s the hold up with that security pass, CJ?
$mobile_print_labels[2] = &MWUZ06C //There�s been a slight setback.
$mobile_print_labels[3] = &MWUZ06D //What kind of setback?
$mobile_print_labels[4] = &MWUZ09E //Well, more of a romantic fuck up.
$mobile_print_labels[5] = &MWUZ09F //It�s Millie, she�s dumped me.
$mobile_print_labels[6] = &MWUZ06G //What the fuck? How?
$mobile_print_labels[7] = &MWUZ06H //Well, we were hanging out and shit got fucked up.
$mobile_print_labels[8] = &MWUZ06J //That�s all I�m sayin�.
$mobile_print_labels[9] = &MWUZ09H //I know, I know, how could she dump a catch like me?
$mobile_print_labels[10] = &MWUZ09J //There�s no accounting for taste.
$mobile_print_labels[11] = &MWUZ06K //Well her pass will probably be in her house!
$mobile_print_labels[12] = &MWUZ06L //You gotta break in and get it!
$mobile_print_labels[13] = &MWUZ06M //Shit, you�re right.
$mobile_print_labels[14] = &MWUZ06N //I�ll call when I�ve got the card.
mobile_audio_labels[0] = SOUND_MWUZ06A //Hello?
mobile_audio_labels[1] = SOUND_MWUZ06B //What�s the hold up with that security pass, CJ?
mobile_audio_labels[2] = SOUND_MWUZ06C //There�s been a slight setback.
mobile_audio_labels[3] = SOUND_MWUZ06D //What kind of setback?
mobile_audio_labels[4] = SOUND_MWUZ09E //Well, more of a romantic fuck up.
mobile_audio_labels[5] = SOUND_MWUZ09F //It�s Millie, she�s dumped me.
mobile_audio_labels[6] = SOUND_MWUZ06G //What the fuck? How?
mobile_audio_labels[7] = SOUND_MWUZ06H //Well, we were hanging out and shit got fucked up.
mobile_audio_labels[8] = SOUND_MWUZ06J //That�s all I�m sayin�.
mobile_audio_labels[9] = SOUND_MWUZ09H //I know, I know, how could she dump a catch like me?
mobile_audio_labels[10] = SOUND_MWUZ09J //There�s no accounting for taste.
mobile_audio_labels[11] = SOUND_MWUZ06K //Well her pass will probably be in her house!
mobile_audio_labels[12] = SOUND_MWUZ06L //You gotta break in and get it!
mobile_audio_labels[13] = SOUND_MWUZ06M //Shit, you�re right.
mobile_audio_labels[14] = SOUND_MWUZ06N //I�ll call when I�ve got the card.
cell_index_end = 14
BREAK
CASE WUZI_MOBILE_CALL8
$mobile_print_labels[0] = &MWUZ06A //Hello?
$mobile_print_labels[1] = &MWUZ06B //What�s the hold up with that security pass, CJ?
$mobile_print_labels[2] = &MWUZ06C //There�s been a slight setback.
$mobile_print_labels[3] = &MWUZ06D //What kind of setback?
$mobile_print_labels[4] = &MWUZ06E //Well, more of an unfortunate accident.
$mobile_print_labels[5] = &MWUZ06F //It�s Millie, she�s dead.
$mobile_print_labels[6] = &MWUZ06G //What the fuck? How?
$mobile_print_labels[7] = &MWUZ06H //Well, we were hanging out and shit got fucked up.
$mobile_print_labels[8] = &MWUZ06J //That�s all I�m sayin�.
$mobile_print_labels[9] = &MWUZ06K //Well her pass will probably be in her house!
$mobile_print_labels[10] = &MWUZ06L //You gotta break in and get it!
$mobile_print_labels[11] = &MWUZ06M //Shit, you�re right.
$mobile_print_labels[12] = &MWUZ06N //I�ll call when I�ve got the card.
mobile_audio_labels[0] = SOUND_MWUZ06A //Hello?
mobile_audio_labels[1] = SOUND_MWUZ06B //What�s the hold up with that security pass, CJ?
mobile_audio_labels[2] = SOUND_MWUZ06C //There�s been a slight setback.
mobile_audio_labels[3] = SOUND_MWUZ06D //What kind of setback?
mobile_audio_labels[4] = SOUND_MWUZ06E //Well, more of an unfortunate accident.
mobile_audio_labels[5] = SOUND_MWUZ06F //It�s Millie, she�s dead.
mobile_audio_labels[6] = SOUND_MWUZ06G //What the fuck? How?
mobile_audio_labels[7] = SOUND_MWUZ06H //Well, we were hanging out and shit got fucked up.
mobile_audio_labels[8] = SOUND_MWUZ06J //That�s all I�m sayin�.
mobile_audio_labels[9] = SOUND_MWUZ06K //Well her pass will probably be in her house!
mobile_audio_labels[10] = SOUND_MWUZ06L //You gotta break in and get it!
mobile_audio_labels[11] = SOUND_MWUZ06M //Shit, you�re right.
mobile_audio_labels[12] = SOUND_MWUZ06N //I�ll call when I�ve got the card.
cell_index_end = 12
BREAK
// ***************************************TORINO*******************************************************************************************
CASE TORENO_MOBILE_CALL1
$mobile_print_labels[0] = &MTOR01A //Yes?
$mobile_print_labels[1] = &MTOR01B //This is a friend of yours.
$mobile_print_labels[2] = &MTOR01C //I�ve got some information relating to your brother.
$mobile_print_labels[3] = &MTOR01D //Come to the my ranch and I�ll explain.
$mobile_print_labels[4] = &MTOR01E //It�s in Tierra Robada, cross the Garver Bridge and head South.
$mobile_print_labels[5] = &MTOR01F //Who the fuck is this?
$mobile_print_labels[6] = &MTOR01G //I can�t talk right now. Get your ass over here.
$mobile_print_labels[7] = &MTOR01H //Moms always told me not to talk to strangers.
$mobile_print_labels[8] = &MTOR01J //And look what happened to her! Now if you want your brother to sleep tonight with his tongue intact, get over here!
$mobile_print_labels[9] = &MTOR01K //Now if you want brother to sleep tonight with his tongue intact get your ass over here, now.
$mobile_print_labels[10] = &MTOR01L //Goodbye.
mobile_audio_labels[0] = SOUND_MTOR01A //Yes?
mobile_audio_labels[1] = SOUND_MTOR01B //This is a friend of yours.
mobile_audio_labels[2] = SOUND_MTOR01C //I�ve got some information relating to your brother.
mobile_audio_labels[3] = SOUND_MTOR01D //Come to the my ranch and I�ll explain.
mobile_audio_labels[4] = SOUND_MTOR01E //It�s in Tierra Robada, cross the Garver Bridge and head South.
mobile_audio_labels[5] = SOUND_MTOR01F //Who the fuck is this?
mobile_audio_labels[6] = SOUND_MTOR01G //I can�t talk right now. Get your ass over here.
mobile_audio_labels[7] = SOUND_MTOR01H //Moms always told me not to talk to strangers.
mobile_audio_labels[8] = SOUND_MTOR01J //And look what happened to her! Now if you want your brother to sleep tonight with his tongue
mobile_audio_labels[9] = SOUND_MTOR01K //Now if you want brother to sleep tonight with his tongue intact get your ass over here, now.
mobile_audio_labels[10] = SOUND_MTOR01L //Goodbye.
cell_index_end = 10
BREAK
CASE TORENO_MOBILE_CALL2
$mobile_print_labels[0] = &MTOR02A //Who the fuck is this?
$mobile_print_labels[1] = &MTOR02B //Son, get back to the ranch and I�ll explain everything.
$mobile_print_labels[2] = &MTOR02C //And I mean everything.
$mobile_print_labels[3] = &MTOR02D //Can�t you just tell me now?
$mobile_print_labels[4] = &MTOR02E //I guess not.
mobile_audio_labels[0] = SOUND_MTOR02A //Who the fuck is this?
mobile_audio_labels[1] = SOUND_MTOR02B //Son, get back to the ranch and I�ll explain everything.
mobile_audio_labels[2] = SOUND_MTOR02C //And I mean everything.
mobile_audio_labels[3] = SOUND_MTOR02D //Can�t you just tell me now?
mobile_audio_labels[4] = SOUND_MTOR02E //I guess not.
cell_index_end = 4
BREAK
CASE TORENO_MOBILE_CALL3
$mobile_print_labels[0] = &MTOR03A //Here. Now. Don�t screw around.
$mobile_print_labels[1] = &MTOR03B //Asshole!
mobile_audio_labels[0] = SOUND_MTOR03A //Here. Now. Don�t screw around.
mobile_audio_labels[1] = SOUND_MTOR03B //Asshole!
cell_index_end = 1
BREAK
CASE TORENO_MOBILE_CALL4
$mobile_print_labels[0] = &MTOR05A //Hey, wassup?
$mobile_print_labels[1] = &MTOR05B //Hey, how�s the flying coming along?
$mobile_print_labels[2] = &MTOR05C //Yeah, well shit man, I was gonna holla at you about that cause, you know, I�m-
$mobile_print_labels[3] = &MTOR05D //(laugh) Will you listen to yourself? Admit it, you�re scared.
$mobile_print_labels[4] = &MTOR05E //Just a little.
$mobile_print_labels[5] = &MTOR05F //Unitl you�ve walked into the middle of Bedouin arms dealer�s camp with nothing but a briefcase full of cash,
$mobile_print_labels[6] = &MTOR05G //you don�t don�t know the meaning of fear, okay?
$mobile_print_labels[7] = &MTOR05H //Oh yeah? Try going to the swap meet in Idlewood sometime.
$mobile_print_labels[8] = &MTOR05J //Learn to fly, Carl.
mobile_audio_labels[0] = SOUND_MTOR05A //Hey, wassup?
mobile_audio_labels[1] = SOUND_MTOR05B //Hey, how�s the flying coming along?
mobile_audio_labels[2] = SOUND_MTOR05C //Yeah, well shit man, I was gonna holla at you about that cause, you know, I�m-
mobile_audio_labels[3] = SOUND_MTOR05D //(laugh) Will you listen to yourself? Admit it, you�re scared.
mobile_audio_labels[4] = SOUND_MTOR05E //Just a little.
mobile_audio_labels[5] = SOUND_MTOR05F //Unitl you�ve walked into the middle of Bedouin arms dealer�s camp with nothing but a briefcase full of cash,
mobile_audio_labels[6] = SOUND_MTOR05G //you don�t don�t know the meaning of fear, okay?
mobile_audio_labels[7] = SOUND_MTOR05H //Oh yeah? Try going to the swap meet in Idlewood sometime.
mobile_audio_labels[8] = SOUND_MTOR05J //Learn to fly, Carl.
cell_index_end = 8
BREAK
CASE TORENO_MOBILE_CALL5
$mobile_print_labels[0] = &MTOR06A //What do you want, Toreno?
$mobile_print_labels[1] = &MTOR06B //Well, what do you want, Carl?
$mobile_print_labels[2] = &MTOR06C //You want your brother out of jail?
$mobile_print_labels[3] = &MTOR06D //Ok, listen, I�m trying man, I really am, I guess I�m not a natural pilot, that�s all.
$mobile_print_labels[4] = &MTOR06E //I'm gonna let you in on a little secret. Carl
$mobile_print_labels[5] = &MTOR06F //The one difference between those that tried and died
$mobile_print_labels[6] = &MTOR06G //and those that still walk this Earth, is belief in self
$mobile_print_labels[7] = &MTOR06H //Nothing is impossible, Carl.
$mobile_print_labels[8] = &MTOR06J //Beat your fears, focus your mind and learn to fly.
$mobile_print_labels[9] = &MTOR06K //Ok, ok, I�ll-
$mobile_print_labels[10] = &MTOR06L //TORENO?
$mobile_print_labels[11] = &MTOR06M //Oh shit�
mobile_audio_labels[0] = SOUND_MTOR06A //What do you want, Toreno?
mobile_audio_labels[1] = SOUND_MTOR06B //Well, what do you want, Carl?
mobile_audio_labels[2] = SOUND_MTOR06C //You want your brother out of jail?
mobile_audio_labels[3] = SOUND_MTOR06D //Ok, listen, I�m trying man, I really am, I guess I�m not a natural pilot, that�s all.
mobile_audio_labels[4] = SOUND_MTOR06E //I'm gonna let you in on a little secret. Carl
mobile_audio_labels[5] = SOUND_MTOR06F //The one difference between those that tried and died
mobile_audio_labels[6] = SOUND_MTOR06G //and those that still walk this Earth, is belief in self
mobile_audio_labels[7] = SOUND_MTOR06H //Nothing is impossible, Carl.
mobile_audio_labels[8] = SOUND_MTOR06J //Beat your fears, focus your mind and learn to fly.
mobile_audio_labels[9] = SOUND_MTOR06K //Ok, ok, I�ll-
mobile_audio_labels[10] = SOUND_MTOR06L //TORENO?
mobile_audio_labels[11] = SOUND_MTOR06M //Oh shit�
cell_index_end = 11
BREAK
CASE TORENO_MOBILE_CALL6
$mobile_print_labels[0] = &MTOR07A //Toreno?
$mobile_print_labels[1] = &MTOR07B //Carl, Learn to fly.
$mobile_print_labels[2] = &MTOR07C //I�m on it, man, I swear.
$mobile_print_labels[3] = &MTOR07D //I'm on it man I swear', same old broken record, Carl. But that's fine�
$mobile_print_labels[4] = &MTOR07E //because your brother�s getting a new cell mate tonight.
$mobile_print_labels[5] = &MTOR07L //Horse Cock Harry, And I'm sending a present, little wedding present.
$mobile_print_labels[6] = &MTOR07M //Big tub of lube!
$mobile_print_labels[7] = &MTOR07F //Shit dude, ok, ok, I swear man, I�m gonna be the best pilot!
$mobile_print_labels[8] = &MTOR07G //I'd love to hear you Carl, I can't hear you. All I can hear is your brother's love cries
$mobile_print_labels[9] = &MTOR07N //as eight kilometers of cock finds it's way up his ass.
$mobile_print_labels[10] = &MTOR07O //Aooooowww' - that's your brother, ok? No big problem.
$mobile_print_labels[11] = &MTOR07H //Wait! Please, man!
$mobile_print_labels[12] = &MTOR07J //that was my last motivational speech, understand? Am I being too spiritual for you, Carl?
$mobile_print_labels[13] = &MTOR07K //Ok, man, I get the message!
mobile_audio_labels[0] = SOUND_MTOR07A //Toreno?
mobile_audio_labels[1] = SOUND_MTOR07B //Carl, Learn to fly.
mobile_audio_labels[2] = SOUND_MTOR07C //I�m on it, man, I swear.
mobile_audio_labels[3] = SOUND_MTOR07D //I'm on it man I swear', same old broken record, Carl. But that's fine�
mobile_audio_labels[4] = SOUND_MTOR07E //because your brother�s getting a new cell mate tonight.
mobile_audio_labels[5] = SOUND_MTOR07L //Horse Cock Harry, And I'm sending a present, little wedding present.
mobile_audio_labels[6] = SOUND_MTOR07M //Big tub of lube!
mobile_audio_labels[7] = SOUND_MTOR07F //Shit dude, ok, ok, I swear man, I�m gonna be the best pilot!
mobile_audio_labels[8] = SOUND_MTOR07G //I'd love to hear you Carl, I can't hear you. All I can hear is your brother's love cries
mobile_audio_labels[9] = SOUND_MTOR07N //as eight kilometers of cock finds it's way up his ass.
mobile_audio_labels[10] = SOUND_MTOR07O //Aooooowww' - that's your brother, ok? No big problem.
mobile_audio_labels[11] = SOUND_MTOR07H //Wait! Please, man!
mobile_audio_labels[12] = SOUND_MTOR07J //that was my last motivational speech, understand? Am I being too spiritual for you, Carl?
mobile_audio_labels[13] = SOUND_MTOR07K //Ok, man, I get the message!
cell_index_end = 13
BREAK
// ***************************************KENT PAUL*******************************************************************************************
CASE KENT_MOBILE_CALL1
$mobile_print_labels[0] = &MKP01A //Halo
$mobile_print_labels[1] = &MKP01B ///Hey, Carl, it�s me Paulo.
$mobile_print_labels[2] = &MKP01C //Listen, Rosie�s in a tangle
$mobile_print_labels[3] = &MKP01D //and I think you�re the geezer to sort it out for us, ok, sunshine?
$mobile_print_labels[4] = &MKP01E //Call around to the office.
$mobile_print_labels[5] = &MKP01F //Thanks, man, I appreciate this opportunity.
mobile_audio_labels[0] = SOUND_MKP01A //Halo
mobile_audio_labels[1] = SOUND_MKP01B ///Hey, Carl, it�s me Paulo.
mobile_audio_labels[2] = SOUND_MKP01C //Listen, Rosie�s in a tangle
mobile_audio_labels[3] = SOUND_MKP01D //and I think you�re the geezer to sort it out for us, ok, sunshine?
mobile_audio_labels[4] = SOUND_MKP01E //Call around to the office.
mobile_audio_labels[5] = SOUND_MKP01F //Thanks, man, I appreciate this opportunity.
cell_index_end = 5
BREAK
// ***************************************ROSENBURG*******************************************************************************************
CASE ROSE_MOBILE_CALL1
$mobile_print_labels[0] = &MSAL01A //Hello?
$mobile_print_labels[1] = &MROS01B //Carl? It�s me, Ken.
$mobile_print_labels[2] = &MROS01D //Listen! The shit�s hit the fucking fan! The Leone family has made
//$mobile_print_labels[3] = &MROS01E //their move! Salvatore�s here,
$mobile_print_labels[3] = &MROS01F //now! He�s taken over Caligula�s!
$mobile_print_labels[4] = &MROS01H //we�re screwed! It�s war for control of Venturas, man, War! WAR!
$mobile_print_labels[5] = &MROS01L //there�s word of some Triad visit or something that should keep him busy. I�m calling from the bathroom, I gotta go, I really gotta go.
mobile_audio_labels[0] = SOUND_MSAL01A //Hello?
mobile_audio_labels[1] = SOUND_MROS01B //Carl? It�s me, Ken.
mobile_audio_labels[2] = SOUND_MROS01D //Listen! The shit�s hit the fucking fan! The Leone family has made
//mobile_audio_labels[3] = SOUND_MROS01E //their move! Salvatore�s here,
mobile_audio_labels[3] = SOUND_MROS01F //now! He�s taken over Caligula�s!
mobile_audio_labels[4] = SOUND_MROS01H //we�re screwed! It�s war for control of Venturas, man, War! WAR!
mobile_audio_labels[5] = SOUND_MROS01L //there�s word of some Triad visit or something that should keep him busy. I�m calling from the bathroom,
cell_index_end = 5
BREAK
CASE ROSE_MOBILE_CALL2
$mobile_print_labels[0] = &MROS02A //He-ello?
$mobile_print_labels[1] = &MROS02B //You�ve hung us out to dry, I know it!
$mobile_print_labels[2] = &MROS02C //Rosenberg?
$mobile_print_labels[3] = &MROS02D //Yeah. Soon to be wearing concrete shoes in a shallow grave in the desert, Rosenberg!
$mobile_print_labels[4] = &MROS02E //I�m suprised you remember!
$mobile_print_labels[5] = &MROS02F //Look, I haven�t forgotten you guys, just hang in there.
$mobile_print_labels[6] = &MROS02G //Easy for you to say, this Salvatore guy might whack me at any moment.
mobile_audio_labels[0] = SOUND_MROS02A //He-ello?
mobile_audio_labels[1] = SOUND_MROS02B //You�ve hung us out to dry, I know it!
mobile_audio_labels[2] = SOUND_MROS02C //Rosenberg?
mobile_audio_labels[3] = SOUND_MROS02D //Yeah. Soon to be wearing concrete shoes in a shallow grave in the desert, Rosenberg!
mobile_audio_labels[4] = SOUND_MROS02E //I�m suprised you remember!
mobile_audio_labels[5] = SOUND_MROS02F //Look, I haven�t forgotten you guys, just hang in there.
mobile_audio_labels[6] = SOUND_MROS02G //Easy for you to say, this Salvatore guy might whack me at any moment.
cell_index_end = 6
BREAK
CASE ROSE_MOBILE_CALL3
$mobile_print_labels[0] = &MROS03A //Hey Ken, how you doin�?
$mobile_print_labels[1] = &MROS03B //(sniff) Who is this?
$mobile_print_labels[2] = &MROS03C //It�s Carl, Carl Johnson!
$mobile_print_labels[3] = &MROS03D //Hey, Carl! Great! (sniff)
$mobile_print_labels[4] = &MROS03E //Guys, it�s Carl! Ga-great! I'm-- (sniff)
$mobile_print_labels[5] = &MROS03F //Fucking great! Fucking amazing!
$mobile_print_labels[6] = &MROS03G //Yeah, well, I�ve got a need for an accountant and a sound engineer
$mobile_print_labels[7] = &MROS03H //and I thought of you and Paul.
$mobile_print_labels[8] = &MROS03J //Fucking amazing!
$mobile_print_labels[9] = &MROS03K //Paul�s great with figures and I�d make a fucking amazing producer!
$mobile_print_labels[10] = &MROS03L //This is (sniff) this fucking great! It's amazing!
$mobile_print_labels[11] = &MROS03N //Yeah, yeah, whatever you say man, but look. Just come over to the mansion, and I�m gonna page you with the address.
$mobile_print_labels[12] = &MROS03O //See you soon.
$mobile_print_labels[13] = &MROS03P //extra Fucking amazing!
mobile_audio_labels[0] = SOUND_MROS03A //Hey Ken, how you doin�?
mobile_audio_labels[1] = SOUND_MROS03B //(sniff) Who is this?
mobile_audio_labels[2] = SOUND_MROS03C //It�s Carl, Carl Johnson!
mobile_audio_labels[3] = SOUND_MROS03D //Hey, Carl! Great! (sniff)
mobile_audio_labels[4] = SOUND_MROS03E //Guys, it�s Carl! Ga-great! I'm-- (sniff)
mobile_audio_labels[5] = SOUND_MROS03F //Fucking great! Fucking amazing!
mobile_audio_labels[6] = SOUND_MROS03G //Yeah, well, I�ve got a need for an accountant and a sound engineer
mobile_audio_labels[7] = SOUND_MROS03H //and I thought of you and Paul.
mobile_audio_labels[8] = SOUND_MROS03J //Fucking amazing!
mobile_audio_labels[9] = SOUND_MROS03K //Paul�s great with figures and I�d make a fucking amazing producer!
mobile_audio_labels[10] = SOUND_MROS03L //This is (sniff) this fucking great! It's amazing!
mobile_audio_labels[11] = SOUND_MROS03N //Yeah, yeah, whatever you say man, but look. Just come over to the mansion, and I�m gonna page you with t
mobile_audio_labels[12] = SOUND_MROS03O //See you soon.
mobile_audio_labels[13] = SOUND_MROS03P //extra Fucking amazing!
cell_index_end = 13
BREAK
// ***************************************SALVATORY*******************************************************************************************
CASE SALV_MOBILE_CALL1
$mobile_print_labels[0] = &MSAL01A //Hello?
$mobile_print_labels[1] = &MSAL01B //Hey, Carl my boy!
$mobile_print_labels[2] = &MSAL01C //Mr. Leone.
$mobile_print_labels[3] = &MSAL01D //Everybody�s talking about the job you did on the St.Mark�s Bistro!
$mobile_print_labels[4] = &MSAL01E //Thank you, Mr. Leone.
$mobile_print_labels[5] = &MSAL01F //And you, eerr, took care of those three loose ends?
$mobile_print_labels[6] = &MSAL01G //Yeah those poor saps ran into a little trouble along the way.
$mobile_print_labels[7] = &MSAL01H //You won�t be hearing from Mr. Rosenberg again.
$mobile_print_labels[8] = &MSAL01J //Good boy! Good boy!
$mobile_print_labels[9] = &MSAL01K //Now listen, you�re going to have to keep a low profile
$mobile_print_labels[10] = &MSAL01M //so let�s keep our distance for a while, eh?
$mobile_print_labels[11] = &MSAL01N //I�ll call you.
$mobile_print_labels[12] = &MSAL01O //Thank you, Mr. Leone.
mobile_audio_labels[0] = SOUND_MSAL01A //Hello?
mobile_audio_labels[1] = SOUND_MSAL01B //Hey, Carl my boy!
mobile_audio_labels[2] = SOUND_MSAL01C //Mr. Leone.
mobile_audio_labels[3] = SOUND_MSAL01D //Everybody�s talking about the job you did on the St.Mark�s Bistro!
mobile_audio_labels[4] = SOUND_MSAL01E //Thank you, Mr. Leone.
mobile_audio_labels[5] = SOUND_MSAL01F //And you, eerr, took care of those three loose ends?
mobile_audio_labels[6] = SOUND_MSAL01G //Yeah those poor saps ran into a little trouble along the way.
mobile_audio_labels[7] = SOUND_MSAL01H //You won�t be hearing from Mr. Rosenberg again.
mobile_audio_labels[8] = SOUND_MSAL01J //Good boy! Good boy!
mobile_audio_labels[9] = SOUND_MSAL01K //Now listen, you�re going to have to keep a low profile
mobile_audio_labels[10] = SOUND_MSAL01M //so let�s keep our distance for a while, eh?
mobile_audio_labels[11] = SOUND_MSAL01N //I�ll call you.
mobile_audio_labels[12] = SOUND_MSAL01O //Thank you, Mr. Leone.
cell_index_end = 12
BREAK
CASE SALV_MOBILE_CALL2
$mobile_print_labels[0] = &MSAL02A //�Ssup?
$mobile_print_labels[1] = &MSAL02B //You two-bit, backstabbing, piece of eggplant shit!
$mobile_print_labels[2] = &MSAL02C //Salvatore!
$mobile_print_labels[3] = &MSAL02D //Nice to hear from you, too!
$mobile_print_labels[4] = &MSAL02E //You�re dead! Your friends are dead! Your family�s dead!
$mobile_print_labels[5] = &MSAL02F //I�m gonna fuck you up, and your children and your grandchildren!
$mobile_print_labels[6] = &MSAL02G //Well, it�s been nice talking,
$mobile_print_labels[7] = &MSAL02H //but I�ve got some money needs spending on expensive trash,
$mobile_print_labels[8] = &MSAL02J //so if you�ll excuse me.
$mobile_print_labels[9] = &MSAL02K //You�re dead! DEAD!
mobile_audio_labels[0] = SOUND_MSAL02A //�Ssup?
mobile_audio_labels[1] = SOUND_MSAL02B //You two-bit, backstabbing, piece of eggplant shit!
mobile_audio_labels[2] = SOUND_MSAL02C //Salvatore!
mobile_audio_labels[3] = SOUND_MSAL02D //Nice to hear from you, too!
mobile_audio_labels[4] = SOUND_MSAL02E //You�re dead! Your friends are dead! Your family�s dead!
mobile_audio_labels[5] = SOUND_MSAL02F //I�m gonna fuck you up, and your children and your grandchildren!
mobile_audio_labels[6] = SOUND_MSAL02G //Well, it�s been nice talking,
mobile_audio_labels[7] = SOUND_MSAL02H //but I�ve got some money needs spending on expensive trash,
mobile_audio_labels[8] = SOUND_MSAL02J //so if you�ll excuse me.
mobile_audio_labels[9] = SOUND_MSAL02K //You�re dead! DEAD!
cell_index_end = 9
BREAK
// ***************************************MILLIE KEYCARD*******************************************************************************************
CASE MILLIE_KEY_MOBILE_CALL1
$mobile_print_labels[0] = &MMILL2A //Millie?
$mobile_print_labels[1] = &MMILL2B //Hey Carl, just called to say that last night was terrific.
$mobile_print_labels[2] = &MMILL2C //Likewise, Miss Perkins, likewise.
$mobile_print_labels[3] = &MMILL2D //Listen, I thought about that little scheme you told me about.
$mobile_print_labels[4] = &MMILL2E //Don�t worry, I haven�t told anybody, not even my mom.
$mobile_print_labels[5] = &MMILL2F //I�ve left the key card and the door code in my bedroom.
//$mobile_print_labels[6] = &MMILL2G //I�m going out of town for a while, so you can make it look like a burglary.
$mobile_print_labels[6] = &MMILL2H //Millie, girl, you will NOT regret this!
$mobile_print_labels[7] = &MMILL2J //I know, because I�m getting a cut, right?
$mobile_print_labels[8] = &MMILL2K //Sure thing, Millie, sure thing. I�ll see you right.
$mobile_print_labels[9] = &MMILL2L //Ok, I'll give you a call sometime.
mobile_audio_labels[0] = SOUND_MMILL2A //Millie?
mobile_audio_labels[1] = SOUND_MMILL2B //Hey Carl, just called to say that last night was terrific.
mobile_audio_labels[2] = SOUND_MMILL2C //Likewise, Miss Perkins, likewise.
mobile_audio_labels[3] = SOUND_MMILL2D //Listen, I thought about that little scheme you told me about.
mobile_audio_labels[4] = SOUND_MMILL2E //Don�t worry, I haven�t told anybody, not even my mom.
mobile_audio_labels[5] = SOUND_MMILL2F //I�ve left the key card and the door code in my bedroom.
//mobile_audio_labels[6] = SOUND_MMILL2G //I�m going out of town for a while, so you can make it look like a burglary.
mobile_audio_labels[6] = SOUND_MMILL2H //Millie, girl, you will NOT regret this!
mobile_audio_labels[7] = SOUND_MMILL2J //I know, because I�m getting a cut, right?
mobile_audio_labels[8] = SOUND_MMILL2K //Sure thing, Millie, sure thing. I�ll see you right.
mobile_audio_labels[9] = SOUND_MMILL2L //Ok, I'll give you a call sometime.
cell_index_end = 9
BREAK
// ***************************************ZERO*******************************************************************************************
CASE ZERO_MOBILE_CALL1
$mobile_print_labels[0] = &MZER01A //Yeah, what?
$mobile_print_labels[1] = &MZER01B //Sorry, Carl, are you busy?
$mobile_print_labels[2] = &MZER01C //Zero? No, man, whassup?
$mobile_print_labels[3] = &MZER01D //Disaster! My landlord is selling the shop!
$mobile_print_labels[4] = &MZER01E //I�ll have nowhere to live and no safe haven from Berkley...
$mobile_print_labels[5] = &MZER01F //I�m looking into property at the moment.
$mobile_print_labels[6] = &MZER01G //I�ll swing by and have a look see.
mobile_audio_labels[0] = SOUND_MZER01A //Yeah, what?
mobile_audio_labels[1] = SOUND_MZER01B //Sorry, Carl, are you busy?
mobile_audio_labels[2] = SOUND_MZER01C //Zero? No, man, whassup?
mobile_audio_labels[3] = SOUND_MZER01D //Disaster! My landlord is selling the shop!
mobile_audio_labels[4] = SOUND_MZER01E //I�ll have nowhere to live and no safe haven from Berkley...
mobile_audio_labels[5] = SOUND_MZER01F //I�m looking into property at the moment.
mobile_audio_labels[6] = SOUND_MZER01G //I�ll swing by and have a look see.
cell_index_end = 6
BREAK
CASE ZERO_MOBILE_CALL2
$mobile_print_labels[0] = &MZER02A //Hello.
$mobile_print_labels[1] = &MZER02B //Carl! It�s Zero!
$mobile_print_labels[2] = &MZER02C //Oh hi, Zee, you weren�t around when I signed the deeds.
$mobile_print_labels[3] = &MZER02D //I was on a dangerous reconaisance mission, deep into enemy territory.
$mobile_print_labels[4] = &MZER02E //Eerr, right, sure.
$mobile_print_labels[5] = &MZER02F //Look, I should pop �round some time, have a look at the business, y�know.
$mobile_print_labels[6] = &MZER02G //Of course, of course.
$mobile_print_labels[7] = &MZER02H //I�ll have to tidy up a bit, this place is such a mess!
$mobile_print_labels[8] = &MZER02J //Don�t worry about it.
$mobile_print_labels[9] = &MZER02K //I�ll drop in soon.
mobile_audio_labels[0] = SOUND_MZER02A //Hello.
mobile_audio_labels[1] = SOUND_MZER02B //Carl! It�s Zero!
mobile_audio_labels[2] = SOUND_MZER02C //Oh hi, Zee, you weren�t around when I signed the deeds.
mobile_audio_labels[3] = SOUND_MZER02D //I was on a dangerous reconaisance mission, deep into enemy territory.
mobile_audio_labels[4] = SOUND_MZER02E //Eerr, right, sure.
mobile_audio_labels[5] = SOUND_MZER02F //Look, I should pop �round some time, have a look at the business, y�know.
mobile_audio_labels[6] = SOUND_MZER02G //Of course, of course.
mobile_audio_labels[7] = SOUND_MZER02H //I�ll have to tidy up a bit, this place is such a mess!
mobile_audio_labels[8] = SOUND_MZER02J //Don�t worry about it.
mobile_audio_labels[9] = SOUND_MZER02K //I�ll drop in soon.
cell_index_end = 9
BREAK
// ***************************************JETHRO*******************************************************************************************
CASE JETHRO_MOBILE_CALL1
$mobile_print_labels[0] = &MJET_1A //Yeah, what?
$mobile_print_labels[1] = &MJET_1B //Yo, man, it�s Jethro, dude!
$mobile_print_labels[2] = &MJET_1C //Yo, Jethro, whattup?
$mobile_print_labels[3] = &MJET_1D //Well, I was talking to Cesar and, don�t get me wrong, dude,
$mobile_print_labels[4] = &MJET_1E //I mean, you are one out there dude, when it comes to driving, man,
$mobile_print_labels[5] = &MJET_1F //but Cesar, he told us how many cras you get through, dude,
$mobile_print_labels[6] = &MJET_1G //and me and Dwaine were, like, whooaaa!
$mobile_print_labels[7] = &MJET_1H //What�s your point, Jethro?
$mobile_print_labels[8] = &MJET_1J //No point, man, no point!
$mobile_print_labels[9] = &MJET_1K //Just that there�s an advanced driving school, like,
$mobile_print_labels[10] = &MJET_1L //just up the road from the garage, man, in Doherty.
$mobile_print_labels[11] = &MJET_1M //Driving school? What you trying to say, dude?
$mobile_print_labels[12] = &MJET_1N //NOTHING, man! Nothing. It was Dwaine�s idea.
$mobile_print_labels[13] = &MJET_1O //I think you�re, like, y�know, cool and shit.
$mobile_print_labels[14] = &MJET_1P //I better go, CJ, I�ll see you later.
mobile_audio_labels[0] = SOUND_MJET_1A //Yeah, what?
mobile_audio_labels[1] = SOUND_MJET_1B //Yo, man, it�s Jethro, dude!
mobile_audio_labels[2] = SOUND_MJET_1C //Yo, Jethro, whattup?
mobile_audio_labels[3] = SOUND_MJET_1D //Well, I was talking to Cesar and, don�t get me wrong, dude,
mobile_audio_labels[4] = SOUND_MJET_1E //I mean, you are one out there dude, when it comes to driving, man,
mobile_audio_labels[5] = SOUND_MJET_1F //but Cesar, he told us how many cras you get through, dude,
mobile_audio_labels[6] = SOUND_MJET_1G //and me and Dwaine were, like, whooaaa!
mobile_audio_labels[7] = SOUND_MJET_1H //What�s your point, Jethro?
mobile_audio_labels[8] = SOUND_MJET_1J //No point, man, no point!
mobile_audio_labels[9] = SOUND_MJET_1K //Just that there�s an advanced driving school, like,
mobile_audio_labels[10] = SOUND_MJET_1L //just up the road from the garage, man, in Doherty.
mobile_audio_labels[11] = SOUND_MJET_1M //Driving school? What you trying to say, dude?
mobile_audio_labels[12] = SOUND_MJET_1N //NOTHING, man! Nothing. It was Dwaine�s idea.
mobile_audio_labels[13] = SOUND_MJET_1O //I think you�re, like, y�know, cool and shit.
mobile_audio_labels[14] = SOUND_MJET_1P //I better go, CJ, I�ll see you later.
cell_index_end = 14
BREAK
CASE JETHRO_MOBILE_CALL2
$mobile_print_labels[0] = &MJET_2A //Yo, CJ, it�s, like, Jethro, dude!
$mobile_print_labels[1] = &MJET_2B //Hey, Jethro, how�s things?
$mobile_print_labels[2] = &MJET_2C //Yo, dude, the garage is coming along nicely, man.
$mobile_print_labels[3] = &MJET_2D //But I rang about something else.
$mobile_print_labels[4] = &MJET_2E //There�s an unofficial street racing club in San Fierro.
$mobile_print_labels[5] = &MJET_2F //Unofficial as in �illegal�, right?
$mobile_print_labels[6] = &MJET_2G //I don�t know what you�re talking about, dude.
$mobile_print_labels[7] = &MJET_2H //Anyway, they meet up around the Driving School someplace.
$mobile_print_labels[8] = &MJET_2J //Thought you might, y�know, like to know.
$mobile_print_labels[9] = &MJET_2K //Thanks, Jethro, I�ll give it some consideration.
$mobile_print_labels[10] = &MJET_2L //Later, dude.
mobile_audio_labels[0] = SOUND_MJET_2A //Yo, CJ, it�s, like, Jethro, dude!
mobile_audio_labels[1] = SOUND_MJET_2B //Hey, Jethro, how�s things?
mobile_audio_labels[2] = SOUND_MJET_2C //Yo, dude, the garage is coming along nicely, man.
mobile_audio_labels[3] = SOUND_MJET_2D //But I rang about something else.
mobile_audio_labels[4] = SOUND_MJET_2E //There�s an unofficial street racing club in San Fierro.
mobile_audio_labels[5] = SOUND_MJET_2F //Unofficial as in �illegal�, right?
mobile_audio_labels[6] = SOUND_MJET_2G //I don�t know what you�re talking about, dude.
mobile_audio_labels[7] = SOUND_MJET_2H //Anyway, they meet up around the Driving School someplace.
mobile_audio_labels[8] = SOUND_MJET_2J //Thought you might, y�know, like to know.
mobile_audio_labels[9] = SOUND_MJET_2K //Thanks, Jethro, I�ll give it some consideration.
mobile_audio_labels[10] = SOUND_MJET_2L //Later, dude.
cell_index_end = 10
BREAK
CASE JETHRO_MOBILE_CALL3
$mobile_print_labels[0] = &MJET_3A //Hello!
$mobile_print_labels[1] = &MJET_3B //Yo, it�s Jethro, man.
$mobile_print_labels[2] = &MJET_3C //Me an� Cesar have used our contacts to, like, get a wish list of cars,
$mobile_print_labels[3] = &MJET_3D //but we�ll need to turn them around real quick, dude.
$mobile_print_labels[4] = &MJET_3E //There�s a showroom �round the block that�s come up for sale
$mobile_print_labels[5] = &MJET_3F //and I thought it would be a good idea to make things look as legitimate as possible.
$mobile_print_labels[6] = &MJET_3G //Dude, that�s a great idea, I�ll look into it.
$mobile_print_labels[7] = &MJET_3H //I�ll catch you later.
mobile_audio_labels[0] = SOUND_MJET_3A //Hello!
mobile_audio_labels[1] = SOUND_MJET_3B //Yo, it�s Jethro, man.
mobile_audio_labels[2] = SOUND_MJET_3C //Me an� Cesar have used our contacts to, like, get a wish list of cars,
mobile_audio_labels[3] = SOUND_MJET_3D //but we�ll need to turn them around real quick, dude.
mobile_audio_labels[4] = SOUND_MJET_3E //There�s a showroom �round the block that�s come up for sale
mobile_audio_labels[5] = SOUND_MJET_3F //and I thought it would be a good idea to make things look as legitimate as possible.
mobile_audio_labels[6] = SOUND_MJET_3G //Dude, that�s a great idea, I�ll look into it.
mobile_audio_labels[7] = SOUND_MJET_3H //I�ll catch you later.
cell_index_end = 7
BREAK
CASE LOANSHARK_CALL1
$mobile_print_labels[0] = &SHRK_1A //Hey, Mr. Johnson. Just a friendly reminder that you owe me money.
$mobile_print_labels[1] = &SHRK_1B //Don't be a stranger.
mobile_audio_labels[0] = SOUND_SHRK_1A //Hey, Mr. Johnson. Just a friendly reminder that you owe me money.
mobile_audio_labels[1] = SOUND_SHRK_1B //Don't be a stranger.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL2
$mobile_print_labels[0] = &SHRK_2A //Hello, Carl Johnson.
$mobile_print_labels[1] = &SHRK_2B //You owe me money and I would consider it polite if you paid it back, understand?
mobile_audio_labels[0] = SOUND_SHRK_2A
mobile_audio_labels[1] = SOUND_SHRK_2B
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL3
$mobile_print_labels[0] = &SHRK_3A //Mr. Carl Johnson. My records show that you owe me money.
$mobile_print_labels[1] = &SHRK_3B //Probably just slipped your mind, but I thought I'd just jog your memory.
mobile_audio_labels[0] = SOUND_SHRK_3A //Mr. Carl Johnson. My records show that you owe me money.
mobile_audio_labels[1] = SOUND_SHRK_3B //Probably just slipped your mind, but I thought I'd just jog your memory.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL4
$mobile_print_labels[0] = &SHRK_4A //Mr. Johnson! I haven't seen you for a while, and you owe me money!
$mobile_print_labels[1] = &SHRK_4B //Consider your position and that of your friends and family!
mobile_audio_labels[0] = SOUND_SHRK_4A //Mr. Johnson! I haven't seen you for a while, and you owe me money!
mobile_audio_labels[1] = SOUND_SHRK_4B //Consider your position and that of your friends and family!
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL5
$mobile_print_labels[0] = &SHRK_5A //Carl! I hope you're not spending too much cash. Especially since you've owed me money for so long.
$mobile_print_labels[1] = &SHRK_5B //Don't make an enemy of me, Carl.
mobile_audio_labels[0] = SOUND_SHRK_5A //Carl! I hope you're not spending too much cash. Especially since you've owed me money for so long.
mobile_audio_labels[1] = SOUND_SHRK_5B //Don't make an enemy of me, Carl.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL6
$mobile_print_labels[0] = &SHRK_6A //Carl Johnson. I hear you have a sister.
$mobile_print_labels[1] = &SHRK_6B //Don't make me explain to her why you owe me so much money!
mobile_audio_labels[0] = SOUND_SHRK_6A //Carl Johnson. I hear you have a sister.
mobile_audio_labels[1] = SOUND_SHRK_6B //Don't make me explain to her why you owe me so much money!
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL7
$mobile_print_labels[0] = &SHRK_7A //I'm a patient man, Mr. Johnson, but I'm also a businessman, understand?
$mobile_print_labels[1] = &SHRK_7B //You owe me money, Carl, think about it.
mobile_audio_labels[0] = SOUND_SHRK_7A //I'm a patient man, Mr. Johnson, but I'm also a businessman, understand?
mobile_audio_labels[1] = SOUND_SHRK_7B //You owe me money, Carl, think about it.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL8
$mobile_print_labels[0] = &SHRK_8A //Mr. Johnson, you owe me money.
$mobile_print_labels[1] = &SHRK_8B //A business relationship is built on trust and mutual respect. Think about it.
mobile_audio_labels[0] = SOUND_SHRK_8A //Mr. Johnson, you owe me money.
mobile_audio_labels[1] = SOUND_SHRK_8B //A business relationship is built on trust and mutual respect. Think about it.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL9
$mobile_print_labels[0] = &SHRK_9A //Mr. Johnson, I hear you're in the neighbourhood!
$mobile_print_labels[1] = &SHRK_9B //Some of my associates will be paying you a visit to talk about your debts.
mobile_audio_labels[0] = SOUND_SHRK_9A //Mr. Johnson, I hear you're in the neighbourhood!
mobile_audio_labels[1] = SOUND_SHRK_9B //Some of my associates will be paying you a visit to talk about your debts.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL10
$mobile_print_labels[0] = &SHRK10A //Carl Johnson. Little bird told me you're in town.
$mobile_print_labels[1] = &SHRK10B //You should have listened to me and paid your debts.
mobile_audio_labels[0] = SOUND_SHRK10A //Carl Johnson. Little bird told me you're in town.
mobile_audio_labels[1] = SOUND_SHRK10B //You should have listened to me and paid your debts.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL11
$mobile_print_labels[0] = &SHRK11A //A man of honour pays his debts, Mr. Johnson.
$mobile_print_labels[1] = &SHRK11B //You've left me no choice but to treat you with the same lack of respect you've shown me.
mobile_audio_labels[0] = SOUND_SHRK11A //A man of honour pays his debts, Mr. Johnson.
mobile_audio_labels[1] = SOUND_SHRK11B //You've left me no choice but to treat you with the same lack of respect you've shown me.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL12
$mobile_print_labels[0] = &SHRK12A //I am not a charity, Mr. Johnson, I'm a businessman.
$mobile_print_labels[1] = &SHRK12B //You should have paid up while you had the chance.
mobile_audio_labels[0] = SOUND_SHRK12A //I am not a charity, Mr. Johnson, I'm a businessman.
mobile_audio_labels[1] = SOUND_SHRK12B //You should have paid up while you had the chance.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL13
$mobile_print_labels[0] = &SHRK13A //Mr. Johnson, I want my fucking money!
$mobile_print_labels[1] = &SHRK13B //I'm sending someone round to pay you a little courtesy call.
mobile_audio_labels[0] = SOUND_SHRK13A //Mr. Johnson, I want my fucking money!
mobile_audio_labels[1] = SOUND_SHRK13B //I'm sending someone round to pay you a little courtesy call.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL14
$mobile_print_labels[0] = &SHRK14A //I don't think you're getting the message, Mr. Johnson: I WANT MY MONEY!
$mobile_print_labels[1] = &SHRK14B //I'll let you negotiate with my collection department.
mobile_audio_labels[0] = SOUND_SHRK14A //I don't think you're getting the message, Mr. Johnson: I WANT MY MONEY!
mobile_audio_labels[1] = SOUND_SHRK14B //I'll let you negotiate with my collection department.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL15
$mobile_print_labels[0] = &SHRK15A //The time for pleasantries is past, Mr. Johnson.
$mobile_print_labels[1] = &SHRK15B //You've given me no choice but to get a little more persuasive about your debt problems.
mobile_audio_labels[0] = SOUND_SHRK15A //The time for pleasantries is past, Mr. Johnson.
mobile_audio_labels[1] = SOUND_SHRK15B //You've given me no choice but to get a little more persuasive about your debt problems.
cell_index_end = 1
BREAK
CASE LOANSHARK_CALL16
$mobile_print_labels[0] = &SHRK16A //You had your chance to pay me, Mr. Johnson.
$mobile_print_labels[1] = &SHRK16B //You've left me no option in this matter - I WANT MY MONEY!
mobile_audio_labels[0] = SOUND_SHRK16A //You had your chance to pay me, Mr. Johnson.
mobile_audio_labels[1] = SOUND_SHRK16B //You've left me no option in this matter - I WANT MY MONEY!
cell_index_end = 1
BREAK
ENDSWITCH
ELSE //call_number IS >= COOCHIE_MOBILE
// ***************************************GIRLFRIENDS************************************************************************************
SWITCH call_number
CASE COOCHIE_MOBILE
$mobile_print_labels[0] = &MDEN_2A //Yo, Carl, it�s me, Denise. Whassappening? We gonna hang out or what?
$mobile_print_labels[1] = &MDEN_2D //Ok sure, baby, I�ll swing by and pick you up!
mobile_audio_labels[0] = SOUND_MDEN_2A
mobile_audio_labels[1] = SOUND_MDEN_2D
cell_index_end = 1
BREAK
CASE COOCHIE_MOBILE2
$mobile_print_labels[0] = &MDEN_3A //Whattup Carl? It�s Denise, you down for doing some shit?
$mobile_print_labels[1] = &MDEN_3B //I hear you, baby! I�ll drop by later.
mobile_audio_labels[0] = SOUND_MDEN_3A
mobile_audio_labels[1] = SOUND_MDEN_3B
cell_index_end = 1
BREAK
CASE COOCHIE_MOBILE3
$mobile_print_labels[0] = &MDEN_4A //Holmes, it�s Denise. I need some attention � don�t make me come and put a cap in yo�ass!
$mobile_print_labels[1] = &MDEN_4D //I been neglecting my girl! Get ready, I�ll come pick you up.
mobile_audio_labels[0] = SOUND_MDEN_4A
mobile_audio_labels[1] = SOUND_MDEN_4D
cell_index_end = 1
BREAK
CASE COOCHIE_MOBILE4
$mobile_print_labels[0] = &MDEN_5A //Carl, it�s Denise. Where you been, baby, I�m getting lonely!
$mobile_print_labels[1] = &MDEN_5B //Yo, Denise, baby, I am going to treat you so good. I�ll pick you up later.
mobile_audio_labels[0] = SOUND_MDEN_5A
mobile_audio_labels[1] = SOUND_MDEN_5B
cell_index_end = 1
BREAK
CASE COOCHIE_MOBILE5
$mobile_print_labels[0] = &MDEN_6A //Yo, it�s Denise. You gonna come �round and make me feel special?
$mobile_print_labels[1] = &MDEN_6D //Hey baby, I been busy but I am about to come �round and make it up to you, a�ight!
mobile_audio_labels[0] = SOUND_MDEN_6A
mobile_audio_labels[1] = SOUND_MDEN_6D
cell_index_end = 1
BREAK
CASE COOCHIE_MOBILE6
$mobile_print_labels[0] = &MDEN_7D //CJ, its me, Denise! I�m getting real lonely here without you. Maybe I should date one of your friends instead.
$mobile_print_labels[1] = &MDEN_4D //I been neglecting my girl! Get ready, I�ll come pick you up.
mobile_audio_labels[0] = SOUND_MDEN_7D
mobile_audio_labels[1] = SOUND_MDEN_4D
cell_index_end = 1
BREAK
CASE COOCHIE_MOBILE7
$mobile_print_labels[0] = &MDEN_8D //Don�t make me feel like shit. Please! Say you�re gonna come. PLEASE, CJ!
$mobile_print_labels[1] = &MDEN_6D //Hey baby, I been busy but I am about to come �round and make it up to you, a�ight!
mobile_audio_labels[0] = SOUND_MDEN_8D
mobile_audio_labels[1] = SOUND_MDEN_6D
cell_index_end = 1
BREAK
CASE COOCHIE_MOBILE8
$mobile_print_labels[0] = &MDEN_9D //CJ, its Denise! You�re breaking my heart, dog. Don�t treat me like a ho. I�m a homegirl, not a ho. Come on.
$mobile_print_labels[1] = &MDEN_5B //Yo, Denise, baby, I am going to treat you so good. I�ll pick you up later.
mobile_audio_labels[0] = SOUND_MDEN_9D
mobile_audio_labels[1] = SOUND_MDEN_5B
cell_index_end = 1
BREAK
CASE COOCHIE_DUMP
//Denise Robinson
$mobile_print_labels[0] = &MDEN_1A //Yo.
$mobile_print_labels[1] = &MDEN_1B //Chickenhead asshole!
$mobile_print_labels[2] = &MDEN_1C //What? Denise?
$mobile_print_labels[3] = &MDEN_1D //Don�t even think about sweet-talking me, you no good crack pusher!
$mobile_print_labels[4] = &MDEN_1E //What? What you on about, girl?
$mobile_print_labels[5] = &MDEN_1F //I�d heard the rumours about you Grove Street cluckers, about Big Smoke an�all,
$mobile_print_labels[6] = &MDEN_1G //but I thought I�ll give that boy a chance.
$mobile_print_labels[7] = &MDEN_1H //But all my friends were right.
$mobile_print_labels[8] = &MDEN_1J //Only some base-pushing asshole would treat a girl like this!
$mobile_print_labels[9] = &MDEN_1K //Now wait a minute!
$mobile_print_labels[10] = &MDEN_1L //Can it, Carl. We�re over, finished.
mobile_audio_labels[0] = SOUND_MDEN_1A //Yo.
mobile_audio_labels[1] = SOUND_MDEN_1B //Chickenhead asshole!
mobile_audio_labels[2] = SOUND_MDEN_1C //What? Denise?
mobile_audio_labels[3] = SOUND_MDEN_1D //Don�t even think about sweet-talking me, you no good crack pusher!
mobile_audio_labels[4] = SOUND_MDEN_1E //What? What you on about, girl?
mobile_audio_labels[5] = SOUND_MDEN_1F //I�d heard the rumours about you Grove Street cluckers, about Big Smoke an�all,
mobile_audio_labels[6] = SOUND_MDEN_1G //but I thought I�ll give that boy a chance.
mobile_audio_labels[7] = SOUND_MDEN_1H //But all my friends were right.
mobile_audio_labels[8] = SOUND_MDEN_1J //Only some base-pushing asshole would treat a girl like this!
mobile_audio_labels[9] = SOUND_MDEN_1K //Now wait a minute!
mobile_audio_labels[10] = SOUND_MDEN_1L //Can it, Carl. We�re over, finished.
cell_index_end = 10
BREAK
CASE MICHELLE_MOBILE
$mobile_print_labels[0] = &MMICH2A //Yo, Carl, it�s Michelle. You want to come over and talk cam shafts?
$mobile_print_labels[1] = &MMICH2B //Hey, Michelle! I�ll be right over with my latest wheels!
mobile_audio_labels[0] = SOUND_MMICH2A
mobile_audio_labels[1] = SOUND_MMICH2B
cell_index_end = 1
BREAK
CASE MICHELLE_MOBILE2
$mobile_print_labels[0] = &MMICH3A //CJ, it�s Michelle! I was thinking of going for a ride or something, you fancy?
$mobile_print_labels[1] = &MMICH3D //Michelle! Baby, I�m coming over there for a date you will never forget!
mobile_audio_labels[0] = SOUND_MMICH3A
mobile_audio_labels[1] = SOUND_MMICH3D
cell_index_end = 1
BREAK
CASE MICHELLE_MOBILE3
$mobile_print_labels[0] = &MMICH4A //Hey CJ, it�s lonely old me, Michelle. Just hanging about with nothing to do...
$mobile_print_labels[1] = &MMICH4B //Hey, sweet cheeks, get ready, cuz I�m coming over there!
mobile_audio_labels[0] = SOUND_MMICH4A //Hey CJ, it�s lonely old me, Michelle. Just hanging about with nothing to do...
mobile_audio_labels[1] = SOUND_MMICH4B //Hey, sweet cheeks, get ready, cuz I�m coming over there!
cell_index_end = 1
BREAK
CASE MICHELLE_MOBILE4
$mobile_print_labels[0] = &MMICH5A //Hey you, it�s me, Michelle! Get over here and put your charm to good use!
$mobile_print_labels[1] = &MMICH5D //Hey, baby, I�ve missed you too! I�ll swing by your place soon as I can!
mobile_audio_labels[0] = SOUND_MMICH5A //Hey you, it�s me, Michelle! Get over here and put your charm to good use!
mobile_audio_labels[1] = SOUND_MMICH5D //Hey, baby, I�ve missed you too! I�ll swing by your place soon as I can!
cell_index_end = 1
BREAK
CASE MICHELLE_MOBILE5
$mobile_print_labels[0] = &MMICH6A //Hi CJ! What you up to? You wanna go someplace, maybe?
$mobile_print_labels[1] = &MMICH6D //My love, my life, my dreams, baby! Stay right where you are, I�ll be right over!
mobile_audio_labels[0] = SOUND_MMICH6A //Hi CJ! What you up to? You wanna go someplace, maybe?
mobile_audio_labels[1] = SOUND_MMICH6D //My love, my life, my dreams, baby! Stay right where you are, I�ll be right over!
cell_index_end = 1
BREAK
CASE MICHELLE_MOBILE6
$mobile_print_labels[0] = &MMICH7D //Hey Cj, it�s Michelle. C�mon over and pick me up!
$mobile_print_labels[1] = &MMICH3D //Michelle! Baby, I�m coming over there for a date you will never forget!
mobile_audio_labels[0] = SOUND_MMICH7D //Hey Cj, it�s Michelle. C�mon over and pick me up!
mobile_audio_labels[1] = SOUND_MMICH3D //Michelle! Baby, I�m coming over there for a date you will never forget!
cell_index_end = 1
BREAK
CASE MICHELLE_MOBILE7
$mobile_print_labels[0] = &MMICH8D //Hey, it�s Michelle, come over CJ, I miss you!
$mobile_print_labels[1] = &MMICH5D //Hey, baby, I�ve missed you too! I�ll swing by your place soon as I can!
mobile_audio_labels[0] = SOUND_MMICH8D //Hey, it�s Michelle, come over CJ, I miss you!
mobile_audio_labels[1] = SOUND_MMICH5D //Hey, baby, I�ve missed you too! I�ll swing by your place soon as I can!
cell_index_end = 1
BREAK
CASE MICHELLE_MOBILE8
$mobile_print_labels[0] = &MMICH9D //Pick me up, CJ, pick me up!
$mobile_print_labels[1] = &MMICH4B //Hey, sweet cheeks, get ready, cuz I�m coming over there!
mobile_audio_labels[0] = SOUND_MMICH9D //Pick me up, CJ, pick me up!
mobile_audio_labels[1] = SOUND_MMICH4B //Hey, sweet cheeks, get ready, cuz I�m coming over there!
cell_index_end = 1
BREAK
CASE MICHELLE_DUMP
//Michelle Cannes
$mobile_print_labels[0] = &MMICH1A //Johnson by name, Johnson by nature!
$mobile_print_labels[1] = &MMICH1B //You got that right, dick-for-brains!
$mobile_print_labels[2] = &MMICH1C //Hey, Michelle, what�s up, baby?
$mobile_print_labels[3] = &MMICH1D //You don�t know? Carl, you are a walking passion killer!
$mobile_print_labels[4] = &MMICH1E //You haven�t one clue what a woman wants or how a lady likes to be treated!
$mobile_print_labels[5] = &MMICH1F //C�mon, Michelle, I�m a fool for you, girl!
$mobile_print_labels[6] = &MMICH1G //Fool�s the word, alright, pig-headed asshole fool!
$mobile_print_labels[7] = &MMICH1H //We�re over, ok? Don�t bother coming �round any more!
$mobile_print_labels[8] = &MMICH1J //Michelle, baby... Michelle?
mobile_audio_labels[0] = SOUND_MMICH1A //Johnson by name, Johnson by nature!
mobile_audio_labels[1] = SOUND_MMICH1B //You got that right, dick-for-brains!
mobile_audio_labels[2] = SOUND_MMICH1C //Hey, Michelle, what�s up, baby?
mobile_audio_labels[3] = SOUND_MMICH1D //You don�t know? Carl, you are a walking passion killer!
mobile_audio_labels[4] = SOUND_MMICH1E //You haven�t one clue what a woman wants or how a lady likes to be treated!
mobile_audio_labels[5] = SOUND_MMICH1F //C�mon, Michelle, I�m a fool for you, girl!
mobile_audio_labels[6] = SOUND_MMICH1G //Fool�s the word, alright, pig-headed asshole fool!
mobile_audio_labels[7] = SOUND_MMICH1H //We�re over, ok? Don�t bother coming �round any more!
mobile_audio_labels[8] = SOUND_MMICH1J //Michelle, baby... Michelle?
cell_index_end = 8
BREAK
CASE KYLIE_MOBILE
$mobile_print_labels[0] = &MHEL_2A //Carl? Helena. I�m in Flint looking for some fun. You want to meet up?
$mobile_print_labels[1] = &MHEL_2B //Hey, Helena! I�ll be over as soon as I can!
mobile_audio_labels[0] = SOUND_MHEL_2A //Carl? Helena. I�m in Flint looking for some fun. You want to meet up?
mobile_audio_labels[1] = SOUND_MHEL_2B //Hey, Helena! I�ll be over as soon as I can!
cell_index_end = 1
BREAK
CASE KYLIE_MOBILE2
$mobile_print_labels[0] = &MHEL_3A //Hi Carl! It�s Helena! I�m in desperate need of some R&R!
$mobile_print_labels[1] = &MHEL_3B //Helena! Hold tight, baby, I�m coming on over!
mobile_audio_labels[0] = SOUND_MHEL_3A //Hi Carl! It�s Helena! I�m in desperate need of some R&R!
mobile_audio_labels[1] = SOUND_MHEL_3B //Helena! Hold tight, baby, I�m coming on over!
cell_index_end = 1
BREAK
CASE KYLIE_MOBILE3
$mobile_print_labels[0] = &MHEL_4A //Oh Carl, it�s Helena! It�s been a hellish week and I need to unwind!
$mobile_print_labels[1] = &MHEL_4B //Hello Helena, I�ve missed you, baby! I�ll come over as soon as!
mobile_audio_labels[0] = SOUND_MHEL_4A //Oh Carl, it�s Helena! It�s been a hellish week and I need to unwind!
mobile_audio_labels[1] = SOUND_MHEL_4B //Hello Helena, I�ve missed you, baby! I�ll come over as soon as!
cell_index_end = 1
BREAK
CASE KYLIE_MOBILE4
$mobile_print_labels[0] = &MHEL_6A //Carl! I�ve been working sooo hard and I need the attentions of a dashing young man!
$mobile_print_labels[1] = &MHEL_6B //Helena, baby, I was just thinking of calling you! I�ll be right over and pick you up!
mobile_audio_labels[0] = SOUND_MHEL_6A //Carl! I�ve been working sooo hard and I need the attentions of a dashing young man!
mobile_audio_labels[1] = SOUND_MHEL_6B //Helena, baby, I was just thinking of calling you! I�ll be right over and pick you up!
cell_index_end = 1
BREAK
CASE KYLIE_MOBILE5
$mobile_print_labels[0] = &MHEL_5A //Hello, Carl, it�s Helena! I need a strong young Johnson to show me a good time!
$mobile_print_labels[1] = &MHEL_5B //No sweat, baby, I�ll be there before you know it!
mobile_audio_labels[0] = SOUND_MHEL_5A //Hello, Carl, it�s Helena! I need a strong young Johnson to show me a good time!
mobile_audio_labels[1] = SOUND_MHEL_5B //No sweat, baby, I�ll be there before you know it!
cell_index_end = 1
BREAK
CASE KYLIE_MOBILE6
$mobile_print_labels[0] = &MHELD7D //Carl, its Helena, come on, we gotta hang out again soon.
$mobile_print_labels[1] = &MHEL_2B //Hey, Helena! I�ll be over as soon as I can!
mobile_audio_labels[0] = SOUND_MHELD7D //Carl, its Helena, come on, we gotta hang out again soon.
mobile_audio_labels[1] = SOUND_MHEL_2B //Hey, Helena! I�ll be over as soon as I can!
cell_index_end = 1
BREAK
CASE KYLIE_MOBILE7
$mobile_print_labels[0] = &MHELD9D //Carl, C�est moi, Helena, come on darling, please, don�t be a bastard.
$mobile_print_labels[1] = &MHEL_4B //Hello Helena, I�ve missed you, baby! I�ll come over as soon as!
mobile_audio_labels[0] = SOUND_MHELD9D //Carl, C�est moi, Helena, come on darling, please, don�t be a bastard.
mobile_audio_labels[1] = SOUND_MHEL_4B //Hello Helena, I�ve missed you, baby! I�ll come over as soon as!
cell_index_end = 1
BREAK
CASE KYLIE_MOBILE8
$mobile_print_labels[0] = &MHELD8D //Carl, please, it�s Helena � we gotta hang out again soon. Party, you know.
$mobile_print_labels[1] = &MHEL_3B //Helena! Hold tight, baby, I�m coming on over!
mobile_audio_labels[0] = SOUND_MHELD8D //Carl, please, it�s Helena � we gotta hang out again soon. Party, you know.
mobile_audio_labels[1] = SOUND_MHEL_3B //Helena! Hold tight, baby, I�m coming on over!
cell_index_end = 1
BREAK
CASE KYLIE_DUMP
//Helena Wankstein
$mobile_print_labels[0] = &MHEL_1A //Yo, Johnson�s the name and loving�s my game!
$mobile_print_labels[1] = &MHEL_1B //You bastard waste of space!
$mobile_print_labels[2] = &MHEL_1C //Helena? Whoa, now, I thought you was someone else!
$mobile_print_labels[3] = &MHEL_1D //Another ho, or one of your gang banging chums?
$mobile_print_labels[4] = &MHEL_1E //Chums? Girl you gotta get out more!
$mobile_print_labels[5] = &MHEL_1F //Well if the option is getting out with you or shooting my own leg off, I�m reaching for the gun!
$mobile_print_labels[6] = &MHEL_1G //Look, Helena, girl-
$mobile_print_labels[7] = &MHEL_1H //Don�t you �girl� me! I�m not one of your ghetto friends! In fact, I�m not your friend at all!
$mobile_print_labels[8] = &MHEL_1J //Goodbye, Carl Johnson!
$mobile_print_labels[9] = &MHEL_1K //Helena gimme a break! Helena? Shit.
mobile_audio_labels[0] = SOUND_MHEL_1A //Yo, Johnson�s the name and loving�s my game!
mobile_audio_labels[1] = SOUND_MHEL_1B //You bastard waste of space!
mobile_audio_labels[2] = SOUND_MHEL_1C //Helena? Whoa, now, I thought you was someone else!
mobile_audio_labels[3] = SOUND_MHEL_1D //Another ho, or one of your gang banging chums?
mobile_audio_labels[4] = SOUND_MHEL_1E //Chums? Girl you gotta get out more!
mobile_audio_labels[5] = SOUND_MHEL_1F //Well if the option is getting out with you or shooting my own leg off, I�m reaching for the gun!
mobile_audio_labels[6] = SOUND_MHEL_1G //Look, Helena, girl-
mobile_audio_labels[7] = SOUND_MHEL_1H //Don�t you �girl� me! I�m not one of your ghetto friends! In fact, I�m not your friend at all!
mobile_audio_labels[8] = SOUND_MHEL_1J //Goodbye, Carl Johnson!
mobile_audio_labels[9] = SOUND_MHEL_1K //Helena gimme a break! Helena? Shit.
cell_index_end = 9
BREAK
CASE BARBARA_MOBILE
$mobile_print_labels[0] = &MBARB2A //Carl? Hi, it�s Barbara. I thought we could hang out some time soon.
$mobile_print_labels[1] = &MBARB2D //Ok, Barbara, that sounds good. I�ll swing by later.
mobile_audio_labels[0] = SOUND_MBARB2A //Carl? Hi, it�s Barbara. I thought we could hang out some time soon.
mobile_audio_labels[1] = SOUND_MBARB2D //Ok, Barbara, that sounds good. I�ll swing by later.
cell_index_end = 1
BREAK
CASE BARBARA_MOBILE2
$mobile_print_labels[0] = &MBARB3A //Hello, CJ, I hope you�re keeping out of trouble. You fancy going out?
$mobile_print_labels[1] = &MBARB3B //Hi Barbara. Ok, I�m down for that � pick you up as soon as I can!
mobile_audio_labels[0] = SOUND_MBARB3A //Hello, CJ, I hope you�re keeping out of trouble. You fancy going out?
mobile_audio_labels[1] = SOUND_MBARB3B //Hi Barbara. Ok, I�m down for that � pick you up as soon as I can!
cell_index_end = 1
BREAK
CASE BARBARA_MOBILE3
$mobile_print_labels[0] = &MBARB4A //CJ! Hey, it�s Barbara! Let�s get together, yeah?
$mobile_print_labels[1] = &MBARB4D //I�m coming over there and you better have those cuffs ready!
mobile_audio_labels[0] = SOUND_MBARB4A //CJ! Hey, it�s Barbara! Let�s get together, yeah?
mobile_audio_labels[1] = SOUND_MBARB4D //I�m coming over there and you better have those cuffs ready!
cell_index_end = 1
BREAK
CASE BARBARA_MOBILE4
$mobile_print_labels[0] = &MBARB5A //Hello, it�s Barabara. Take me out, baby, take me out!
$mobile_print_labels[1] = &MBARB5D //Hello Officer Schternvart! Been thinking a lot about you � I�ll see you in five.
mobile_audio_labels[0] = SOUND_MBARB5A //Hello, it�s Barabara. Take me out, baby, take me out!
mobile_audio_labels[1] = SOUND_MBARB5D //Hello Officer Schternvart! Been thinking a lot about you � I�ll see you in five.
cell_index_end = 1
BREAK
CASE BARBARA_MOBILE5
$mobile_print_labels[0] = &MBARB6A //Hey, CJ, it�s Barbara. Let�s go out and do something!
$mobile_print_labels[1] = &MBARB6B //Hi, Barbara, whattup? Look, I�ll be over to pick you up in, say, ten minutes, ok?
mobile_audio_labels[0] = SOUND_MBARB6A //Hey, CJ, it�s Barbara. Let�s go out and do something!
mobile_audio_labels[1] = SOUND_MBARB6B //Hi, Barbara, whattup? Look, I�ll be over to pick you up in, say, ten minutes, ok?
cell_index_end = 1
BREAK
CASE BARBARA_MOBILE6
$mobile_print_labels[0] = &MBARB7D //CJ, it�s Barabara, what you waiting for, come on over!
$mobile_print_labels[1] = &MBARB5D //Hello Officer Schternvart! Been thinking a lot about you � I�ll see you in five.
mobile_audio_labels[0] = SOUND_MBARB7D //CJ, it�s Barabara, what you waiting for, come on over!
mobile_audio_labels[1] = SOUND_MBARB5D //Hello Officer Schternvart! Been thinking a lot about you � I�ll see you in five.
cell_index_end = 1
BREAK
CASE BARBARA_MOBILE7
$mobile_print_labels[0] = &MBARB8D //Hi, it�s Barbara! Get over here and lets do something!
$mobile_print_labels[1] = &MBARB3B //Hi Barbara. Ok, I�m down for that � pick you up as soon as I can!
mobile_audio_labels[0] = SOUND_MBARB8D //Hi, it�s Barbara! Get over here and lets do something!
mobile_audio_labels[1] = SOUND_MBARB3B //Hi Barbara. Ok, I�m down for that � pick you up as soon as I can!
cell_index_end = 1
BREAK
CASE BARBARA_MOBILE8
$mobile_print_labels[0] = &MBARB9D //CJ, it�s Babara � get over here and take me out, honey!
$mobile_print_labels[1] = &MBARB6B //Hi, Barbara, whattup? Look, I�ll be over to pick you up in, say, ten minutes, ok?
mobile_audio_labels[0] = SOUND_MBARB9D //CJ, it�s Babara � get over here and take me out, honey!
mobile_audio_labels[1] = SOUND_MBARB6B //Hi, Barbara, whattup? Look, I�ll be over to pick you up in, say, ten minutes, ok?
cell_index_end = 1
BREAK
CASE BARBARA_DUMP
//Barbara Schternvart
$mobile_print_labels[0] = &MBARB1A //Badass Carl Johnson, one-man crime wave and all-round ghetto star!
$mobile_print_labels[1] = &MBARB1B //I knew it! You fucking piece of shit, I knew it!
$mobile_print_labels[2] = &MBARB1C //Who is this?
$mobile_print_labels[3] = &MBARB1D //It�s Barbara, you asshole! I thought you were a nice guy!
$mobile_print_labels[4] = &MBARB1E //You said you�d be good for me!
$mobile_print_labels[5] = &MBARB1F //You realise how hard it is for a divorcee to find a man, ANY man?
$mobile_print_labels[6] = &MBARB1G //Oh shut up, listen to yourself!
$mobile_print_labels[7] = &MBARB1H //What? Listen to MY self? Listen to MY self?
$mobile_print_labels[8] = &MBARB1J //Yeah, always going on about how you is damaged goods and shit!
$mobile_print_labels[9] = &MBARB1K //You try bringing up a kid and holding down a job on your own!
$mobile_print_labels[10] = &MBARB1L //That bastard tore out my heart! My HEART, Carl!
$mobile_print_labels[11] = &MBARB1M //Bitch, you been heartless from the day you popped out.
$mobile_print_labels[12] = &MBARB1N //Bet that poor bastard put up with you for years
$mobile_print_labels[13] = &MBARB1O //before he got the guts, no, THE HELP to escape!
$mobile_print_labels[14] = &MBARB1P //You bastard! YOU BASTARD! I have friends in the force!
$mobile_print_labels[15] = &MBARB1Q //They�ll hunt you down! You�re going to jail, Carl, do you hear me, JAIL!
$mobile_print_labels[16] = &MBARB1R //Shut the fuck up, bitch!
mobile_audio_labels[0] = SOUND_MBARB1A //Badass Carl Johnson, one-man crime wave and all-round ghetto star!
mobile_audio_labels[1] = SOUND_MBARB1B //I knew it! You fucking piece of shit, I knew it!
mobile_audio_labels[2] = SOUND_MBARB1C //Who is this?
mobile_audio_labels[3] = SOUND_MBARB1D //It�s Barbara, you asshole! I thought you were a nice guy!
mobile_audio_labels[4] = SOUND_MBARB1E //You said you�d be good for me!
mobile_audio_labels[5] = SOUND_MBARB1F //You realise how hard it is for a divorcee to find a man, ANY man?
mobile_audio_labels[6] = SOUND_MBARB1G //Oh shut up, listen to yourself!
mobile_audio_labels[7] = SOUND_MBARB1H //What? Listen to MY self? Listen to MY self?
mobile_audio_labels[8] = SOUND_MBARB1J //Yeah, always going on about how you is damaged goods and shit!
mobile_audio_labels[9] = SOUND_MBARB1K //You try bringing up a kid and holding down a job on your own!
mobile_audio_labels[10] = SOUND_MBARB1L //That bastard tore out my heart! My HEART, Carl!
mobile_audio_labels[11] = SOUND_MBARB1M //Bitch, you been heartless from the day you popped out.
mobile_audio_labels[12] = SOUND_MBARB1N //Bet that poor bastard put up with you for years
mobile_audio_labels[13] = SOUND_MBARB1O //before he got the guts, no, THE HELP to escape!
mobile_audio_labels[14] = SOUND_MBARB1P //You bastard! YOU BASTARD! I have friends in the force!
mobile_audio_labels[15] = SOUND_MBARB1Q //They�ll hunt you down! You�re going to jail, Carl, do you hear me, JAIL!
mobile_audio_labels[16] = SOUND_MBARB1R //Shut the fuck up, bitch!
cell_index_end = 16
BREAK
CASE SUZIE_MOBILE
$mobile_print_labels[0] = &MZAHN2A //Hey, Carl, it�s Katie. You fancy doing something some time soon, I�m bored?
$mobile_print_labels[1] = &MZAHN2D //Katie! I�ll be over to pick you up soon as I�m finished up here.
mobile_audio_labels[0] = SOUND_MZAHN2A //Hey, Carl, it�s Katie. You fancy doing something some time soon, I�m bored?
mobile_audio_labels[1] = SOUND_MZAHN2D //Katie! I�ll be over to pick you up soon as I�m finished up here.
cell_index_end = 1
BREAK
CASE SUZIE_MOBILE2
$mobile_print_labels[0] = &MZAHN3A //Carl, it�s Katie, when you going to take me out, huh?
$mobile_print_labels[1] = &MZAHN3B //Hey, Katie, I was just thinking about you! I�ll drop by later and we can go out.
mobile_audio_labels[0] = SOUND_MZAHN3A //Carl, it�s Katie, when you going to take me out, huh?
mobile_audio_labels[1] = SOUND_MZAHN3B //Hey, Katie, I was just thinking about you! I�ll drop by later and we can go out.
cell_index_end = 1
BREAK
CASE SUZIE_MOBILE3
$mobile_print_labels[0] = &MZAHN4A //Hi, it�s me, Katie! I got a bit of spare time, so I was wondering....
$mobile_print_labels[1] = &MZAHN4D //Hey baby! Get ready and I�ll pick you up real soon, ok?
mobile_audio_labels[0] = SOUND_MZAHN4A //Hi, it�s me, Katie! I got a bit of spare time, so I was wondering....
mobile_audio_labels[1] = SOUND_MZAHN4D //Hey baby! Get ready and I�ll pick you up real soon, ok?
cell_index_end = 1
BREAK
CASE SUZIE_MOBILE4
$mobile_print_labels[0] = &MZAHN5A //Carl? Katie! Let�s go out!
$mobile_print_labels[1] = &MZAHN5B //Katie, I was just about to call you! I�m gonna finish up then swing by and pick you up, ok?
mobile_audio_labels[0] = SOUND_MZAHN5A //Carl? Katie! Let�s go out!
mobile_audio_labels[1] = SOUND_MZAHN5B //Katie, I was just about to call you! I�m gonna finish up then swing by and pick you up, ok?
cell_index_end = 1
BREAK
CASE SUZIE_MOBILE5
$mobile_print_labels[0] = &MZAHN6A //Hey babe, it�s Katie. Let�s go out up town or something!
$mobile_print_labels[1] = &MZAHN6D //Hey sweet thang! I�m coming over there to take you out � go get ready!
mobile_audio_labels[0] = SOUND_MZAHN6A //Hey babe, it�s Katie. Let�s go out up town or something!
mobile_audio_labels[1] = SOUND_MZAHN6D //Hey sweet thang! I�m coming over there to take you out � go get ready!
cell_index_end = 1
BREAK
CASE SUZIE_MOBILE6
$mobile_print_labels[0] = &MZAHN7D //Hey, CJ, it�s Katie, take me out, take me out!
$mobile_print_labels[1] = &MZAHN2D //Katie! I�ll be over to pick you up soon as I�m finished up here.
mobile_audio_labels[0] = SOUND_MZAHN7D //Hey, CJ, it�s Katie, take me out, take me out!
mobile_audio_labels[1] = SOUND_MZAHN2D //Katie! I�ll be over to pick you up soon as I�m finished up here.
cell_index_end = 1
BREAK
CASE SUZIE_MOBILE7
$mobile_print_labels[0] = &MZAHN9D //Hi, it�s Katie, I really miss you, baby, come pick me up!
$mobile_print_labels[1] = &MZAHN4D //Hey baby! Get ready and I�ll pick you up real soon, ok?
mobile_audio_labels[0] = SOUND_MZAHN9D //Hi, it�s Katie, I really miss you, baby, come pick me up!
mobile_audio_labels[1] = SOUND_MZAHN4D //Hey baby! Get ready and I�ll pick you up real soon, ok?
cell_index_end = 1
BREAK
CASE SUZIE_MOBILE8
$mobile_print_labels[0] = &MZAHN8D //Hey CJ, it�s Katie, I want to see you, baby!
$mobile_print_labels[1] = &MZAHN3B //Hey, Katie, I was just thinking about you! I�ll drop by later and we can go out.
mobile_audio_labels[0] = SOUND_MZAHN8D //Hey CJ, it�s Katie, I want to see you, baby!
mobile_audio_labels[1] = SOUND_MZAHN3B //Hey, Katie, I was just thinking about you! I�ll drop by later and we can go out.
cell_index_end = 1
BREAK
CASE SUZIE_DUMP
//Katie Zhan
$mobile_print_labels[0] = &MZAHN1A //Hello, Carl Johnson, friend to all ladies!
$mobile_print_labels[1] = &MZAHN1B //So I�ve heard, you piece of shit!
$mobile_print_labels[2] = &MZAHN1C //Katie? Katie! Hey, doll, I was just about to call you!
$mobile_print_labels[3] = &MZAHN1D //You�re always �just about to call� me you cheap bastard!
$mobile_print_labels[4] = &MZAHN1E //Look, baby, I know I�ve been a dog, but-
$mobile_print_labels[5] = &MZAHN1F //Can it! I�ve given you chance after chance, but I�m not taking any more shit,
$mobile_print_labels[6] = &MZAHN1G //I deserve better than you!
$mobile_print_labels[7] = &MZAHN1H //Katie, sweet baby, you gotta give me one last chance!
$mobile_print_labels[8] = &MZAHN1J //Too late, Carl, you blew it!
mobile_audio_labels[0] = SOUND_MZAHN1A //Hello, Carl Johnson, friend to all ladies!
mobile_audio_labels[1] = SOUND_MZAHN1B //So I�ve heard, you piece of shit!
mobile_audio_labels[2] = SOUND_MZAHN1C //Katie? Katie! Hey, doll, I was just about to call you!
mobile_audio_labels[3] = SOUND_MZAHN1D //You�re always �just about to call� me you cheap bastard!
mobile_audio_labels[4] = SOUND_MZAHN1E //Look, baby, I know I�ve been a dog, but-
mobile_audio_labels[5] = SOUND_MZAHN1F //Can it! I�ve given you chance after chance, but I�m not taking any more shit,
mobile_audio_labels[6] = SOUND_MZAHN1G //I deserve better than you!
mobile_audio_labels[7] = SOUND_MZAHN1H //Katie, sweet baby, you gotta give me one last chance!
mobile_audio_labels[8] = SOUND_MZAHN1J //Too late, Carl, you blew it!
cell_index_end = 8
BREAK
CASE MILLIE_MOBILE
$mobile_print_labels[0] = &MMILL3A //Hi, Carl, you want to go out?
$mobile_print_labels[1] = &MMILL3B //Oh hi, Millie! I�ll come over your place and pick you up!
mobile_audio_labels[0] = SOUND_MMILL3A //Hi, Carl, you want to go out?
mobile_audio_labels[1] = SOUND_MMILL3B //Oh hi, Millie! I�ll come over your place and pick you up!
cell_index_end = 1
BREAK
CASE MILLIE_MOBILE2
$mobile_print_labels[0] = &MMILL4A //Hey, Carl, let�s hit the town or something!
$mobile_print_labels[1] = &MMILL4D //Millie, I was just thinking how naughty you must have been � I�ll be over in five!
mobile_audio_labels[0] = SOUND_MMILL4A //Hey, Carl, let�s hit the town or something!
mobile_audio_labels[1] = SOUND_MMILL4D //Millie, I was just thinking how naughty you must have been � I�ll be over in five!
cell_index_end = 1
BREAK
CASE MILLIE_MOBILE3
$mobile_print_labels[0] = &MMILL5A //CJ! You forgotten about me?
$mobile_print_labels[1] = &MMILL5D //Millie Perkins, the perfect girl! Hold tight, I�ll be right over!
mobile_audio_labels[0] = SOUND_MMILL5A //CJ! You forgotten about me?
mobile_audio_labels[1] = SOUND_MMILL5D //Millie Perkins, the perfect girl! Hold tight, I�ll be right over!
cell_index_end = 1
BREAK
CASE MILLIE_MOBILE4
$mobile_print_labels[0] = &MMILL6A //Carl Johnson, have you been a good boy?
$mobile_print_labels[1] = &MMILL6B //Well hi, Millie! Don�t move yo�sweet ass, I�m coming right over!
mobile_audio_labels[0] = SOUND_MMILL6A //Carl Johnson, have you been a good boy?
mobile_audio_labels[1] = SOUND_MMILL6B //Well hi, Millie! Don�t move yo�sweet ass, I�m coming right over!
cell_index_end = 1
BREAK
CASE MILLIE_MOBILE5
$mobile_print_labels[0] = &MMILL7A //CJ, I think I�ve been a VERY naughty girl!
$mobile_print_labels[1] = &MMILL7D //I was just thinking about you, Millie! Be over your place as quick as!
mobile_audio_labels[0] = SOUND_MMILL7A //CJ, I think I�ve been a VERY naughty girl!
mobile_audio_labels[1] = SOUND_MMILL7D //I was just thinking about you, Millie! Be over your place as quick as!
cell_index_end = 1
BREAK
CASE MILLIE_MOBILE6
$mobile_print_labels[0] = &MMILL8D //Hey Carl, Let�s go out someplace!
$mobile_print_labels[1] = &MMILL3B //Oh hi, Millie! I�ll come over your place and pick you up!
mobile_audio_labels[0] = SOUND_MMILL8D //Hey Carl, Let�s go out someplace!
mobile_audio_labels[1] = SOUND_MMILL3B //Oh hi, Millie! I�ll come over your place and pick you up!
cell_index_end = 1
BREAK
CASE MILLIE_MOBILE7
$mobile_print_labels[0] = &MMILL9D //Hey CJ, let�s do something!
$mobile_print_labels[1] = &MMILL4D //Millie, I was just thinking how naughty you must have been � I�ll be over in five!
mobile_audio_labels[0] = SOUND_MMILL9D //Hey CJ, let�s do something!
mobile_audio_labels[1] = SOUND_MMILL4D //Millie, I was just thinking how naughty you must have been � I�ll be over in five!
cell_index_end = 1
BREAK
CASE MILLIE_MOBILE8
$mobile_print_labels[0] = &MMIL10D //Hey Carl. I knocked off an hour ago � let�s party!
$mobile_print_labels[1] = &MMILL5D //Millie Perkins, the perfect girl! Hold tight, I�ll be right over!
mobile_audio_labels[0] = SOUND_MMIL10D //Hey Carl. I knocked off an hour ago � let�s party!
mobile_audio_labels[1] = SOUND_MMILL5D //Millie Perkins, the perfect girl! Hold tight, I�ll be right over!
cell_index_end = 1
BREAK
CASE MILLIE_DUMP
//Millie Perkins
$mobile_print_labels[0] = &MMILL1A //This better be good!
$mobile_print_labels[1] = &MMILL1B //�Fraid not, Carl. I don�t want to see you any more.
$mobile_print_labels[2] = &MMILL1C //What? Why? What I do?
$mobile_print_labels[3] = &MMILL1D //You treat me like shit. You dress like shit.
$mobile_print_labels[4] = &MMILL1E //You wine and dine like shit.
$mobile_print_labels[5] = &MMILL1F //But... but... well... shit...
$mobile_print_labels[6] = &MMILL1G //It�s unanimous then, Carl Johnson is shit. See you around, Carl!
$mobile_print_labels[7] = &MMILL1H //Do NOT say, �like a doughnut!�
$mobile_print_labels[8] = &MMILL1J //Like a big round shit.
$mobile_print_labels[9] = &MMILL1K //Shit.
mobile_audio_labels[0] = SOUND_MMILL1A //This better be good!
mobile_audio_labels[1] = SOUND_MMILL1B //�Fraid not, Carl. I don�t want to see you any more.
mobile_audio_labels[2] = SOUND_MMILL1C //What? Why? What I do?
mobile_audio_labels[3] = SOUND_MMILL1D //You treat me like shit. You dress like shit.
mobile_audio_labels[4] = SOUND_MMILL1E //You wine and dine like shit.
mobile_audio_labels[5] = SOUND_MMILL1F //But... but... well... shit...
mobile_audio_labels[6] = SOUND_MMILL1G //It�s unanimous then, Carl Johnson is shit. See you around, Carl!
mobile_audio_labels[7] = SOUND_MMILL1H //Do NOT say, �like a doughnut!�
mobile_audio_labels[8] = SOUND_MMILL1J //Like a big round shit.
mobile_audio_labels[9] = SOUND_MMILL1K //Shit.
cell_index_end = 9
BREAK
ENDSWITCH
ENDIF
RETURN
cell_phone_LA1:
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
SCRIPT_NAME MOB_LA1
cell_phone_LA1_inner:
WAIT 90
// *******************************************************
IF flag_player_on_mission = 0
AND flag_mobile_timer = 0
GET_GAME_TIMER timer_mobile_start
flag_mobile_timer = 1
ENDIF
IF Return_cities_passed > 0
//IF terminate_LA1_calls = 1
TERMINATE_THIS_SCRIPT
//ENDIF
ENDIF
GOSUB check_player_is_safe_for_mobile
IF IS_PLAYER_PLAYING player1
IF player_is_completely_safe_for_mobile = 1
IF timer_mobile_diff > call_delay
IF flag_intro_mission_counter > 0
IF flag_sweet_mission_counter < 2
IF funeral_mission_finished = 3
// SWEET PHONE CALL. TRIGGERS NOTHING***********************************************
IF flag_mob_la1[5] = 0
//PRINT_HELP ( ANSWER )
call_number = SWEET_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_la1[5] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA1_inner
ENDIF
ENDIF
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_sweet_mission_counter > 0
// CRASH PHONE CALL. TRIGGERS NOTHING***********************************************
IF flag_mob_la1[7] = 0
//PRINT_HELP ( ANSWER )
call_number = CRASH_MOBILE_CALL3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_la1[7] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA1_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_strap_mission_counter = 4
GET_TIME_OF_DAY hours minutes
IF hours >= 20
OR hours < 6
// OG LOC PHONE CALL. TRIGGERS HOUSE PARTY***********************************************
IF flag_mob_la1[0] = 0
//PRINT_HELP ( ANSWER )
call_number = OGLOC_MOBILE_CALL3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_la1[0] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA1_inner
ENDIF
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_sweet_mission_counter > 2
// SWEET CALL. TRIGGERS GYM***********************************************
IF flag_mob_la1[6] = 0
//PRINT_HELP ( ANSWER )
GET_FLOAT_STAT FAT Returnedfat
IF Returnedfat < 450.0
call_number = SWEET_MOBILE_CALL3
ENDIF
IF Returnedfat >= 450.0
call_number = SWEET_MOBILE_CALL4
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_la1[6] = 1
DO_FADE 500 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 OFF
GET_CHAR_COORDINATES scplayer player_X player_Y player_Z
SET_CHAR_COORDINATES scplayer 2228.8914 -1737.1276 12.3906
ENDIF
CLEAR_PRINTS
LOAD_SCENE 2228.5166 -1734.2740 15.7440
REMOVE_BLIP gym_contact_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2228.0002 -1722.8113 12.5543 RADAR_SPRITE_GYM gym_contact_blip
SET_FIXED_CAMERA_POSITION 2228.0945 -1735.1787 15.6865 0.0 0.0 0.0 //GYM
POINT_CAMERA_AT_POINT 2228.5166 -1734.2740 15.7440 JUMP_CUT
WAIT 500
DO_FADE 1000 FADE_IN
PRINT_HELP GYMHELP
WAIT 5000
PRINT_HELP DUMBELL
FLASH_HUD_OBJECT HUD_FLASH_RADAR
WAIT 5000
FLASH_HUD_OBJECT -1
DO_FADE 500 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
IF IS_PLAYER_PLAYING player1
player_Z = player_Z - 0.5
SET_CHAR_COORDINATES scplayer player_X player_Y player_Z
LOAD_SCENE player_X player_Y player_Z
RESTORE_CAMERA_JUMPCUT
SET_PLAYER_CONTROL player1 ON
ENDIF
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
REMOVE_BLIP gym_contact_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT 2228.0002 -1722.8113 12.5543 RADAR_SPRITE_GYM gym_contact_blip
CHANGE_BLIP_DISPLAY gym_contact_blip BLIP_ONLY
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT -2269.4, -155.6, 35.3 RADAR_SPRITE_GYM gym_blips[0] //GYM2
CHANGE_BLIP_DISPLAY gym_blips[0] BLIP_ONLY
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT 1968.6, 2292.1, 16.4 RADAR_SPRITE_GYM gym_blips[1] //GYM3
CHANGE_BLIP_DISPLAY gym_blips[1] BLIP_ONLY
WAIT 500
DO_FADE 1000 FADE_IN
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA1_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_strap_mission_counter > 1
// CRASH TEAM CALL. TRIGGERS CRASH STRAND***********************************************
IF flag_mob_la1[1] = 0
//PRINT_HELP ( ANSWER )
call_number = CRASH_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_la1[1] = 1
START_NEW_SCRIPT crash_mission_loop
REMOVE_BLIP crash_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT crashX crashY crashZ crash_blip_icon crash_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA1_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_sweet_mission_counter > 6
// CESAR CALL. TRIGGERS CESAR STRAND***********************************************
IF flag_mob_la1[2] = 0
//PRINT_HELP ( ANSWER )
call_number = CESAR_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_la1[2] = 1
START_NEW_SCRIPT cesar_mission_loop
REMOVE_BLIP cesar_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT cesarX cesarY cesarZ cesar_blip_icon cesar_contact_blip
CHANGE_BLIP_DISPLAY cesar_contact_blip BLIP_ONLY
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA1_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_sweet_mission_counter > 6
IF flag_crash_mission_counter > 0
// CESAR CALL. TRIGGERS DOBERMAN MISSION***********************************************
IF flag_mob_la1[4] = 0
//PRINT_HELP ( ANSWER )
call_number = SWEET_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_la1[4] = 1
SWITCH_ENTRY_EXIT ammun1 FALSE
REMOVE_BLIP sweet_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT 1365.2507 -1280.1200 12.5469 sweet_blip_icon sweet_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA1_inner
ENDIF
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
ENDIF
ELSE
flag_cell_nation = 0
ENDIF
GOTO cell_phone_LA1_inner
cell_phone_cat:
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
SCRIPT_NAME MOB_CAT
cell_phone_cat_inner:
WAIT 120
// ********************************************************
IF flag_player_on_mission = 0
AND flag_mobile_timer = 0
GET_GAME_TIMER timer_mobile_start
flag_mobile_timer = 1
ENDIF
IF terminate_cat_calls = 1
TERMINATE_THIS_SCRIPT
ENDIF
GOSUB check_player_is_safe_for_mobile
IF IS_PLAYER_PLAYING player1
IF player_is_completely_safe_for_mobile = 1
IF timer_mobile_diff > call_delay
IF flag_bcrash_mission_counter > 0
// CESAR PHONE CALL. TRIGGERS CAT MISSION 1***********************************************
IF flag_mob_cat[0] = 0
//PRINT_HELP ( ANSWER )
call_number = CESAR_MOBILE_CALL4
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_cat[0] = 1
START_NEW_SCRIPT cat_mission_loop
REMOVE_BLIP cat_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT catX[5] catY[5] catZ[5] RADAR_SPRITE_MYSTERY cat_contact_blip //TRUCK STOP
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_cat_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_bcrash_mission_counter > 0
// SWEET PRISION PHONE CALL. TRIGGERS FUCK ALL*******************************************************************
IF flag_mob_cat[3] = 0
//PRINT_HELP ( ANSWER )
call_number = SWEET_MOBILE_CALL7
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_cat[3] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_cat_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_truth_mission_counter = 0
AND cat_counter = 1
// TRUTH PHONE CALL. TRIGGERS TRUTH MISSION 1***********************************************
IF flag_mob_cat[1] = 0
//PRINT_HELP ( ANSWER )
call_number = TRUTH_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_cat[1] = 1
START_NEW_SCRIPT truth_mission_loop
REMOVE_BLIP truth_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT truth2X truth2Y truth2Z truth_blip_icon truth_contact_blip //HOTEL
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_cat_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF cat_counter = 3
//AND catalina_generation_flag < 2
// CATALINA PHONE CALLS. TRIGGERS THE FINAL CAT MISSION***********************************************
IF flag_mob_cat[5] = 0
//PRINT_HELP ( ANSWER )
call_number = CATALINA_MOBILE_CUT2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_cat[5] = 1
SET_ZONE_GANG_STRENGTH ELCO1 GANG_NMEX 40
SET_ZONE_GANG_STRENGTH ELCO2 GANG_NMEX 40
SET_ZONE_GANG_STRENGTH ELCO1 GANG_SMEX 0
SET_ZONE_GANG_STRENGTH ELCO2 GANG_SMEX 0
SET_ZONE_GANG_STRENGTH ELCO1 GANG_GROVE 0
SET_ZONE_GANG_STRENGTH ELCO2 GANG_GROVE 0
SET_ZONE_GANG_STRENGTH LMEX1a GANG_NMEX 30
SET_ZONE_GANG_STRENGTH LMEX1b GANG_NMEX 30
SET_ZONE_GANG_STRENGTH LMEX1a GANG_SMEX 0
SET_ZONE_GANG_STRENGTH LMEX1b GANG_SMEX 0
SET_ZONE_GANG_STRENGTH LMEX1a GANG_GROVE 0
SET_ZONE_GANG_STRENGTH LMEX1b GANG_GROVE 0
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_cat_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF cat_counter > 1
AND flag_bcesar_mission_counter = 0
// CESAR PHONE CALL. TRIGGERS BCESAR RACE1*******************************************************************
IF flag_mob_cat[6] = 0
//PRINT_HELP ( ANSWER )
call_number = CESAR_MOBILE_CALL9
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_cat[6] = 1
START_NEW_SCRIPT bcesar_mission_loop
REMOVE_BLIP bcesar_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT bcesarX bcesarY bcesarZ cesar_blip_icon bcesar_contact_blip //FARM
CHANGE_BLIP_DISPLAY bcesar_contact_blip BLIP_ONLY
PRINT BC4_1 8000 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_cat_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF cat_counter > 3
AND flag_bcesar_mission_counter > 9
// TRUTH PHONE CALL. TRIGGERS TRUTH2 MISSION*****************************************************************
IF flag_mob_cat[7] = 0
//PRINT_HELP ( ANSWER )
call_number = TRUTH_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_cat[7] = 1
REMOVE_BLIP truth_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT truthX truthY truthZ truth_blip_icon truth_contact_blip //TRUTHS FARM
SET_MAX_WANTED_LEVEL 5
terminate_cat_calls = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_cat_inner
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
ENDIF
ELSE
flag_cell_nation = 0
ENDIF
GOTO cell_phone_cat_inner
cell_phone_sanfran:
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
SCRIPT_NAME MOB_SF
cell_phone_sanfran_inner:
WAIT 150
// ********************************************************
IF flag_player_on_mission = 0
AND flag_mobile_timer = 0
GET_GAME_TIMER timer_mobile_start
flag_mobile_timer = 1
ENDIF
IF flag_mob_sanfran[8] = 1
IF flag_mob_sanfran[4] = 1
IF flag_mob_sanfran[3] = 1
IF flag_mob_sanfran[1] = 1
TERMINATE_THIS_SCRIPT
ENDIF
ENDIF
ENDIF
ENDIF
GOSUB check_player_is_safe_for_mobile
IF IS_PLAYER_PLAYING player1
IF player_is_completely_safe_for_mobile = 1
IF timer_mobile_diff > call_delay
IF flag_Synd_mission_counter > 2
// WUZI PHONE CALL. TRIGGERS WUZI STRAND*****************************************************************
IF flag_mob_sanfran[6] = 0
//PRINT_HELP ( ANSWER )
call_number = WUZI_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[6] = 1
START_NEW_SCRIPT wuzi_mission_loop
REMOVE_BLIP wuzi_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT wuziX wuziY wuziZ wuzi_blip_icon wuzi_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_garage_mission_counter > 0
// ZERO PHONE CALL. TRIGGERS ZERO BUY PROPERTY*****************************************************************
IF flag_mob_sanfran[0] = 0
//PRINT_HELP ( ANSWER )
call_number = ZERO_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[0] = 1
START_NEW_SCRIPT zero_buy_loop
REMOVE_BLIP zero_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[1] propertyY[1] propertyZ[1] RADAR_SPRITE_ZERO zero_contact_blip
CHANGE_BLIP_DISPLAY zero_contact_blip BLIP_ONLY
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_garage_mission_counter > 0
AND zeros_property_bought = 1
// ZERO PHONE CALL. TRIGGERS ZERO MISSION*****************************************************************
IF flag_mob_sanfran[1] = 0
//PRINT_HELP ( ANSWER )
call_number = ZERO_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[1] = 1
START_NEW_SCRIPT zero_mission_loop
REMOVE_BLIP zero_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT zeroX zeroY zeroZ zero_blip_icon zero_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_garage_mission_counter > 1
// JETHRO PHONE CALL. TRIGGERS DRIVING SCHOOL*****************************************************************
IF flag_mob_sanfran[2] = 0
//PRINT_HELP ( ANSWER )
call_number = JETHRO_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[2] = 1
START_NEW_SCRIPT trace_mission_loop // TEST STUFF
ADD_SPRITE_BLIP_FOR_CONTACT_POINT testsX testsY testsZ RADAR_SPRITE_SCHOOL dschool_contact_blip
//SET_BLIP_ENTRY_EXIT dschool_contact_blip -2026.4767 -99.8392 10.0
CHANGE_BLIP_DISPLAY dschool_contact_blip BLIP_ONLY
START_NEW_SCRIPT boats_school_loop //TEST! FIND A SUITABLE LOCATION TO TRIGGER
REMOVE_BLIP boat_school_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT boatsX boatsY boatsZ RADAR_SPRITE_SCHOOL boat_school_blip
CHANGE_BLIP_DISPLAY boat_school_blip BLIP_ONLY
START_NEW_SCRIPT bikes_school_loop //TEST! FIND A SUITABLE LOCATION TO TRIGGER
REMOVE_BLIP bike_school_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT bikesX bikesY bikesZ RADAR_SPRITE_SCHOOL bike_school_blip
CHANGE_BLIP_DISPLAY bike_school_blip BLIP_ONLY
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF driving_test_passed = 1
//AND flag_desert_mission_counter > 3
// JETHRO PHONE CALL. TRIGGERS RACE TOUR*****************************************************************
IF flag_mob_sanfran[3] = 0
//PRINT_HELP ( ANSWER )
call_number = JETHRO_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[3] = 1
REMOVE_BLIP trace_contact_blip[0]
REMOVE_BLIP trace_contact_blip[1]
REMOVE_BLIP trace_contact_blip[2]
REMOVE_BLIP trace_contact_blip[3]
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT traceX[0] traceY[0] traceZ[0] RADAR_SPRITE_FLAG trace_contact_blip[0]
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT traceX[1] traceY[1] traceZ[1] RADAR_SPRITE_FLAG trace_contact_blip[1]
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT traceX[2] traceY[2] traceZ[2] RADAR_SPRITE_FLAG trace_contact_blip[2]
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT traceX[3] traceY[3] traceZ[3] RADAR_SPRITE_FLAG trace_contact_blip[3]
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_mob_sanfran[9] = 1
AND driving_test_passed = 1
// JETHRO PHONE CALL. TRIGGERS STEAL PROPERTY BUY*****************************************************************
IF flag_mob_sanfran[4] = 0
//PRINT_HELP ( ANSWER )
call_number = JETHRO_MOBILE_CALL3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[4] = 1
START_NEW_SCRIPT showroom_buy_loop
REMOVE_BLIP showroom_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT propertyX[0] propertyY[0] propertyZ[0] RADAR_SPRITE_CESAR showroom_contact_blip
CHANGE_BLIP_DISPLAY showroom_contact_blip BLIP_ONLY
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_Synd_mission_counter = 10
// TORENO PHONE CALL. TRIGGERS TORENO STRAND*****************************************************************
IF flag_mob_sanfran[9] = 0
//PRINT_HELP ( ANSWER )
call_number = TORENO_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[9] = 1
START_NEW_SCRIPT desert_mission_loop
REMOVE_BLIP save_house_blip[16]
REMOVE_PICKUP grove_save_pickup[16]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[16] save_pickupY[16] save_pickupZ[16] grove_save_pickup[16] //TORENOS RANCH//remove
number_of_save_icons = 17
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[16] save_pickupY[16] save_pickupZ[16] RADAR_SPRITE_SAVEHOUSE save_house_blip[16]
CHANGE_BLIP_DISPLAY save_house_blip[16] BLIP_ONLY
REMOVE_BLIP desert_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ RADAR_SPRITE_MYSTERY desert_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_desert_mission_counter > 0
// TORENO PHONE CALL. TRIGGERS DESERT2*****************************************************************
IF flag_mob_sanfran[5] = 0
//PRINT_HELP ( ANSWER )
call_number = TORENO_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[5] = 1
REMOVE_BLIP desert_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ RADAR_SPRITE_MYSTERY desert_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_desert_mission_counter > 1
// TORENO PHONE CALL. TRIGGERS DESERT3*****************************************************************
IF flag_mob_sanfran[7] = 0
//PRINT_HELP ( ANSWER )
call_number = TORENO_MOBILE_CALL3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[7] = 1
REMOVE_BLIP desert_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ desert_blip_icon desert_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF pilot_test_passed > 0
// WUZI PHONE CALL. TRIGGERS CASINO STRAND*****************************************************************
IF flag_mob_sanfran[8] = 0
//PRINT_HELP ( ANSWER )
call_number = WUZI_MOBILE_CALL3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_sanfran[8] = 1
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_VEG
START_NEW_SCRIPT cell_phone_vegas
START_NEW_SCRIPT casino_mission_loop
REMOVE_PICKUP grove_save_pickup[17]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[17] save_pickupY[17] save_pickupZ[17] grove_save_pickup[17] //TRIAD CASINO//remove
number_of_save_icons = 18
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[17] save_pickupY[17] save_pickupZ[17] RADAR_SPRITE_SAVEHOUSE save_house_blip[17]
CHANGE_BLIP_DISPLAY save_house_blip[17] BLIP_ONLY
REMOVE_BLIP casino_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2026.6028 1007.7353 20.0
ACTIVATE_GARAGE vEcmod
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2382.2, 1044.0, 9.8 RADAR_SPRITE_MOD_GARAGE mod_garage_blips[2]
SET_INT_STAT PASSED_CASINO3 1
START_NEW_SCRIPT little_casino_cut
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_sanfran_inner
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
ENDIF
ELSE
flag_cell_nation = 0
ENDIF
GOTO cell_phone_sanfran_inner
cell_phone_vegas:
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
SCRIPT_NAME MOB_VEG
cell_phone_vegas_inner:
WAIT 180
// ********************************************************
IF flag_player_on_mission = 0
AND flag_mobile_timer = 0
GET_GAME_TIMER timer_mobile_start
flag_mobile_timer = 1
ENDIF
IF flag_mob_vegas[8] = 1
IF flag_mob_vegas[4] = 1
TERMINATE_THIS_SCRIPT
ENDIF
ENDIF
GOSUB check_player_is_safe_for_mobile
IF IS_PLAYER_PLAYING player1
IF player_is_completely_safe_for_mobile = 1
IF timer_mobile_diff > call_delay
IF flag_desert_mission_counter > 7
// WUZI PHONE CALL. TRIGGERS FINAL TRUTH MISSION*****************************************************************
IF flag_mob_vegas[11] = 0
//PRINT_HELP ( ANSWER )
call_number = TRUTH_MOBILE_CALL3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[11] = 1
REMOVE_BLIP desert2_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desert2X desert2Y desert2Z desert2_blip_icon desert2_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_vcrash_mission_counter > 0
AND flag_casino_mission_counter > 7
// CRASH PHONE CALL. TRIGGERS VCRASH2 MISSION*****************************************************************
IF flag_mob_vegas[0] = 0
//PRINT_HELP ( ANSWER )
call_number = CRASH_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[0] = 1
REMOVE_BLIP vcrash_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT -378.7596 2235.8594 41.4288 crash_blip_icon vcrash_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 3
// KENT PHONE CALL. TRIGGERS HOSPITAL MISSION*****************************************************************
IF flag_mob_vegas[2] = 0
//PRINT_HELP ( ANSWER )
call_number = KENT_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[2] = 1
REMOVE_BLIP casino_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 6
// ROSENBURG PHONE CALL. TRIGGERS FREEFALL*****************************************************************
IF flag_mob_vegas[3] = 0
//PRINT_HELP ( ANSWER )
call_number = ROSE_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[3] = 1
REMOVE_BLIP casino_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 7
IF flag_vcrash_mission_counter > 1
IF flag_doc_mission_counter > 0
IF flag_desert_mission_counter > 8
// ROSENBURG PHONE CALL. TRIGGERS SAIT MARKS*****************************************************************
IF flag_mob_vegas[4] = 0
//PRINT_HELP ( ANSWER )
call_number = ROSE_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[4] = 1
REMOVE_BLIP casino_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
ENDIF
ENDIF
IF flag_heist_mission_counter > 1
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
//AND iGFLikesPlayer[MILLIE] >= MILLIE_LIKES_PLAYER_REQUIRED_FOR_KEYCARD
GET_INT_STAT GIRLFRIEND_MILLIE millies_like_stat
IF millies_like_stat >= MILLIE_LIKES_PLAYER_REQUIRED_FOR_KEYCARD
// GOOD PHONE CALL FROM MILLIE. TRIGGERS KEYCARD FOR HEIST*****************************************************************
IF flag_mob_vegas[1] = 0
//PRINT_HELP ( ANSWER )
call_number = MILLIE_KEY_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
CREATE_PICKUP KEYCARD PICKUP_ONCE 348.7857 306.1048 998.6557 millies_keycard_pickup
START_NEW_SCRIPT millies_keycard_loop
REMOVE_BLIP Thekeycard_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2037.3492 2723.9714 9.8281 Theheist_blip_icon Thekeycard_contact_blip
CHANGE_BLIP_DISPLAY Thekeycard_contact_blip BLIP_ONLY
PRINT_NOW (GOODKEY) 6000 1 //You can now pick up the keycard
flag_mob_vegas[1] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
ENDIF
IF flag_heist_mission_counter > 1
IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS
IF iGFLikesPlayer[MILLIE] = GF_HATES_PLAYER
OR iGFLikesPlayer[MILLIE] = GF_IS_DEAD
// WUZI CALL. IF MILLIE DUMPED OR DEAD. TRIGGERS KEYCARD FOR HEIST*****************************************************************
IF flag_mob_vegas[1] = 0
//PRINT_HELP ( ANSWER )
IF iGFLikesPlayer[MILLIE] = GF_IS_DEAD
call_number = WUZI_MOBILE_CALL8 //DEAD
ENDIF
IF iGFLikesPlayer[MILLIE] = GF_HATES_PLAYER
call_number = WUZI_MOBILE_CALL7 //DUMPED
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
CREATE_PICKUP KEYCARD PICKUP_ONCE 348.7857 306.1048 998.6557 millies_keycard_pickup
START_NEW_SCRIPT millies_keycard_loop
REMOVE_BLIP Thekeycard_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2037.3492 2723.9714 9.8281 Theheist_blip_icon Thekeycard_contact_blip
CHANGE_BLIP_DISPLAY Thekeycard_contact_blip BLIP_ONLY
PRINT_NOW (BADKEY) 6000 1 //You need to rob her house to get the keycard
flag_mob_vegas[1] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
ENDIF
IF flag_heist_mission_counter > 4
AND keycard_aquired_from_millie = 0
AND flag_mob_vegas[6] = 0
// WUZI PHONE CALL. REMINDER FOR KEYCARD*****************************************************************
IF flag_mob_vegas[5] = 0
//PRINT_HELP ( ANSWER )
call_number = WUZI_MOBILE_CALL4
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[5] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 8
AND NOT flag_heist_mission_counter = 6
// SALVATORY PHONE CALL. DONE SAINT MARKS MISSION************************************************************
IF flag_mob_vegas[7] = 0
//PRINT_HELP ( ANSWER )
call_number = SALV_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[7] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 8
AND flag_mob_vegas[6] = 0
// WUZI PHONE CALL. REMINDER FOR HEIST AFTER SAINT MARKS*****************************************************
IF flag_mob_vegas[12] = 0
//PRINT_HELP ( ANSWER )
call_number = WUZI_MOBILE_CALL6
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[12] = 1
IF keycard_aquired_from_millie = 1
REMOVE_BLIP Theheist_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
flag_mob_vegas[6] = 1
ENDIF
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 8
AND keycard_aquired_from_millie = 1
// WUZI PHONE CALL. GOT THE KEYCARD**************************************************************************
IF flag_mob_vegas[6] = 0
//PRINT_HELP ( ANSWER )
call_number = WUZI_MOBILE_CALL5
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[6] = 1
REMOVE_BLIP Theheist_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_heist_mission_counter > 5
// SALVATORY PHONE CALL. DONE THE HEIST MISSION**************************************************************
IF flag_mob_vegas[8] = 0
//PRINT_HELP ( ANSWER )
call_number = SALV_MOBILE_CALL2
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_vegas[8] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_vegas_inner
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
ENDIF
ELSE
flag_cell_nation = 0
ENDIF
GOTO cell_phone_vegas_inner
cell_phone_LA2:
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
SCRIPT_NAME MOB_LA2
cell_phone_LA2_inner:
WAIT 250
// ********************************************************
IF flag_player_on_mission = 0
AND flag_mobile_timer = 0
GET_GAME_TIMER timer_mobile_start
flag_mobile_timer = 1
ENDIF
IF flag_mob_LA2[2] = 1
TERMINATE_THIS_SCRIPT
ENDIF
GOSUB check_player_is_safe_for_mobile
IF IS_PLAYER_PLAYING player1
IF player_is_completely_safe_for_mobile = 1
IF timer_mobile_diff > call_delay
IF flag_mansion_mission_counter > 0
// ROSENBURG PHONE CALL. OPENS THE HARRIER MISSION*****************************************************************
IF flag_mob_LA2[0] = 0
//PRINT_HELP ( ANSWER )
call_number = ROSE_MOBILE_CALL3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_LA2[0] = 1
REMOVE_BLIP mansion_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon mansion_contact_blip
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA2_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 2 //SWEET IN PRISON CALL
AND flag_mansion_mission_counter < 2
IF flag_mob_LA2[1] = 0
//PRINT_HELP ( ANSWER )
call_number = SWEET_MOBILE_CALL8
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_LA2[1] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA2_inner
ENDIF
ENDIF
IF flag_riot_mission_counter > 1 //TRIGGERS GANG WARS
IF flag_mob_LA2[3] = 0
//PRINT_HELP ( ANSWER )
call_number = SWEET_MOBILE_CALL5
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
REMOVE_BLIP sweet_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
flag_mob_LA2[3] = 1
ENDIF
GOSUB mobile_message_cleanup
GET_TERRITORY_UNDER_CONTROL_PERCENTAGE player_territory_owned
IF player_territory_owned <= 34
PRINT_NOW MORTURF 12000 1 //Take over gang territories
ENDIF
GOTO cell_phone_LA2_inner
ENDIF
ENDIF
IF flag_riot_mission_counter > 1 //TRIGGERS FINALE
GET_TERRITORY_UNDER_CONTROL_PERCENTAGE player_territory_owned
IF player_territory_owned > 34
IF flag_mob_LA2[2] = 0
//PRINT_HELP ( ANSWER )
call_number = SWEET_MOBILE_CALL6
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
REMOVE_BLIP sweet_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
flag_mob_LA2[2] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_LA2_inner
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
flag_cell_nation = 0
ENDIF
GOTO cell_phone_LA2_inner
cell_phone_random:
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
SCRIPT_NAME MOB_RAN
cell_phone_random_inner:
WAIT 1000
IF flag_player_on_mission = 0
AND flag_mobile_timer = 0
GET_GAME_TIMER timer_mobile_start
flag_mobile_timer = 1
ENDIF
GOSUB check_player_is_safe_for_mobile
IF IS_PLAYER_PLAYING player1
IF player_is_completely_safe_for_mobile = 1
IF timer_mobile_diff > 60000
IF failed_cesar_race = 1
AND flag_cesar_mission_counter = 0
// KENDAL CALL. TRIGGERS FUCK ALL***********************************************
IF flag_mob_random[5] = 0
//PRINT_HELP ( ANSWER )
call_number = KENDAL_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[5] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF trigger_phonecall_failed = 1
AND flag_smoke_mission_counter = 1
GET_FLOAT_STAT FAT Returnedfat
IF Returnedfat >= 500.0
// SMOKE CALL. TRIGGERS FUCK ALL***********************************************
IF flag_mob_random[6] = 0
//PRINT_HELP ( ANSWER )
call_number = SMOKE_MOBILE_CALL1
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[6] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
// **********************************************************************************************************
ENDIF
ENDIF
IF flag_wuzi_mission_counter > 1
// CATALINA RANDOM PHONE CALLS. TRIGGERS FUCK ALL*******************************************************************
IF flag_mob_random[0] = 0
//PRINT_HELP ( ANSWER )
call_number = CATALINA_MOBILE_CUT3
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[0] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_desert_mission_counter > 5
// CATALINA RANDOM PHONE CALLS. TRIGGERS FUCK ALL*******************************************************************
IF flag_mob_random[1] = 0
//fuck this phone call//
flag_mob_random[1] = 1
/*
//PRINT_HELP ( ANSWER )
call_number = CATALINA_MOBILE_CUT4
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[1] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
*/
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_casino_mission_counter > 5
// CATALINA RANDOM PHONE CALLS. TRIGGERS FUCK ALL*******************************************************************
IF flag_mob_random[2] = 0
//PRINT_HELP ( ANSWER )
call_number = CATALINA_MOBILE_CUT5
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[2] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_mansion_mission_counter > 2
// CATALINA RANDOM PHONE CALLS. TRIGGERS FUCK ALL*******************************************************************
IF flag_mob_random[3] = 0
//PRINT_HELP ( ANSWER )
call_number = CATALINA_MOBILE_CUT6
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[3] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF flag_riot_mission_counter > 4
// CATALINA RANDOM PHONE CALLS. TRIGGERS FUCK ALL*******************************************************************
IF flag_mob_random[4] = 0
//PRINT_HELP ( ANSWER )
call_number = CATALINA_MOBILE_CUT7
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[4] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
// **********************************************************************************************************
ENDIF
IF d5_watched_first_cutscene = 1 //TORENO REMINDER
AND pilot_test_passed = 0
IF flag_mob_random[7] = 0
//PRINT_HELP ( ANSWER )
call_number = TORENO_MOBILE_CALL4
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[7] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
ENDIF
IF d5_watched_first_cutscene = 1 //TORENO REMINDER
AND pilot_test_passed = 0
AND flag_mob_random[7] = 1
IF flag_mob_random[8] = 0
//PRINT_HELP ( ANSWER )
call_number = TORENO_MOBILE_CALL5
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[8] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
ENDIF
IF d5_watched_first_cutscene = 1 //TORENO REMINDER
AND pilot_test_passed = 0
AND flag_mob_random[8] = 1
IF flag_mob_random[9] = 0
//PRINT_HELP ( ANSWER )
call_number = TORENO_MOBILE_CALL6
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[9] = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
ENDIF
GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT debt.sc number_of_instances_of_streamed_script
IF im_players_city = LEVEL_LASVEGAS
IF NOT IS_SCORE_GREATER player1 -499
IF number_of_instances_of_streamed_script = 0
// LOAD SHARK REMINDER*****************************************************************
IF flag_mob_random[10] = 0
//PRINT_HELP ( ANSWER )
IF loan_shark_reminder = 7
call_number = LOANSHARK_CALL8
loan_shark_reminder = 0
ENDIF
IF loan_shark_reminder = 6
call_number = LOANSHARK_CALL7
loan_shark_reminder = 7
ENDIF
IF loan_shark_reminder = 5
call_number = LOANSHARK_CALL6
loan_shark_reminder = 6
ENDIF
IF loan_shark_reminder = 4
call_number = LOANSHARK_CALL5
loan_shark_reminder = 5
ENDIF
IF loan_shark_reminder = 3
call_number = LOANSHARK_CALL4
loan_shark_reminder = 4
ENDIF
IF loan_shark_reminder = 2
call_number = LOANSHARK_CALL3
loan_shark_reminder = 3
ENDIF
IF loan_shark_reminder = 1
call_number = LOANSHARK_CALL2
loan_shark_reminder = 2
ENDIF
IF loan_shark_reminder = 0
call_number = LOANSHARK_CALL1
loan_shark_reminder = 1
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[10] = 1
flag_mob_random[11] = 0
terminate_cat_calls = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
// **********************************************************************************************************
IF flag_mob_random[10] = 1
IF flag_mob_random[11] = 0
//PRINT_HELP ( ANSWER )
IF loan_shark_hitmen = 7
call_number = LOANSHARK_CALL16
loan_shark_hitmen = 0
ENDIF
IF loan_shark_hitmen = 6
call_number = LOANSHARK_CALL15
loan_shark_hitmen = 7
ENDIF
IF loan_shark_hitmen = 5
call_number = LOANSHARK_CALL14
loan_shark_hitmen = 6
ENDIF
IF loan_shark_hitmen = 4
call_number = LOANSHARK_CALL13
loan_shark_hitmen = 5
ENDIF
IF loan_shark_hitmen = 3
call_number = LOANSHARK_CALL12
loan_shark_hitmen = 4
ENDIF
IF loan_shark_hitmen = 2
call_number = LOANSHARK_CALL11
loan_shark_hitmen = 3
ENDIF
IF loan_shark_hitmen = 1
call_number = LOANSHARK_CALL10
loan_shark_hitmen = 2
ENDIF
IF loan_shark_hitmen = 0
call_number = LOANSHARK_CALL9
loan_shark_hitmen = 1
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
IF flag_player_answered_phone = 1
flag_mob_random[11] = 1
terminate_cat_calls = 1
ENDIF
GOSUB mobile_message_cleanup
GOTO cell_phone_random_inner
ENDIF
ENDIF
IF flag_mob_random[11] = 1
STREAM_SCRIPT debt.sc
IF HAS_STREAMED_SCRIPT_LOADED debt.sc
START_NEW_STREAMED_SCRIPT debt.sc
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
flag_cell_nation = 0
ENDIF
GOTO cell_phone_random_inner
// ********************** GIRLFRIENDS ONE SHOT CALL
cell_phone_GF:
SCRIPT_NAME MOB_GF
LVAR_INT iGFCaller iCallType // parameters: iGFCaller = the girl, iCallType = CALL_DATE or CALL_DUMP
LVAR_INT iCallRandomVariant
SET_DEATHARREST_STATE OFF //stops script being terminated if Player dies/arrested
SET_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
CLEAR_BIT iAgentFlags MOBILE_CALL_ANSWERED
GENERATE_RANDOM_INT_IN_RANGE 0 8 iCallRandomVariant // generate a random variation of the mobile call (0-7)
cell_phone_GF_inner:
WAIT 150
GOSUB check_player_is_safe_for_mobile
IF IS_PLAYER_PLAYING player1
IF player_is_completely_safe_for_mobile = 1
IF timer_mobile_diff > call_delay
// COOCHIE PHONE CALL. ************************************************************************************
IF iGFCaller = COOCHIE
//PRINT_HELP ( ANSWER )
IF iCallType = CALL_DATE
call_number = COOCHIE_MOBILE
call_number += iCallRandomVariant
IF call_number > COOCHIE_MOBILE8
call_number = COOCHIE_MOBILE8
ENDIF
ELSE
call_number = COOCHIE_DUMP
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
SET_BIT iAgentFlags iGFCaller
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
CLEAR_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
GOSUB mobile_message_cleanup
TERMINATE_THIS_SCRIPT
ENDIF
// **********************************************************************************************************
// MICHELLE PHONE CALL. ************************************************************************************
IF iGFCaller = MICHELLE
//PRINT_HELP ( ANSWER )
IF iCallType = CALL_DATE
call_number = MICHELLE_MOBILE
call_number += iCallRandomVariant
IF call_number > MICHELLE_MOBILE8
call_number = MICHELLE_MOBILE8
ENDIF
ELSE
call_number = MICHELLE_DUMP
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
CLEAR_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
GOSUB mobile_message_cleanup
TERMINATE_THIS_SCRIPT
ENDIF
// **********************************************************************************************************
// KYLIE PHONE CALL. ************************************************************************************
IF iGFCaller = KYLIE
//PRINT_HELP ( ANSWER )
IF iCallType = CALL_DATE
call_number = KYLIE_MOBILE
call_number += iCallRandomVariant
IF call_number > KYLIE_MOBILE8
call_number = KYLIE_MOBILE8
ENDIF
ELSE
call_number = KYLIE_DUMP
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
CLEAR_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
GOSUB mobile_message_cleanup
TERMINATE_THIS_SCRIPT
ENDIF
// **********************************************************************************************************
// BARBARA PHONE CALL. ************************************************************************************
IF iGFCaller = BARBARA
//PRINT_HELP ( ANSWER )
IF iCallType = CALL_DATE
call_number = BARBARA_MOBILE
call_number += iCallRandomVariant
IF call_number > BARBARA_MOBILE8
call_number = BARBARA_MOBILE8
ENDIF
ELSE
call_number = BARBARA_DUMP
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
ENDIF
CLEAR_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
GOSUB mobile_message_cleanup
TERMINATE_THIS_SCRIPT
ENDIF
// **********************************************************************************************************
// SUZIE PHONE CALL. ************************************************************************************
IF iGFCaller = SUZIE
//PRINT_HELP ( ANSWER )
IF iCallType = CALL_DATE
call_number = SUZIE_MOBILE
call_number += iCallRandomVariant
IF call_number > SUZIE_MOBILE8
call_number = SUZIE_MOBILE8
ENDIF
ELSE
call_number = SUZIE_DUMP
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
ENDIF
CLEAR_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
GOSUB mobile_message_cleanup
TERMINATE_THIS_SCRIPT
ENDIF
// **********************************************************************************************************
// MILLIE PHONE CALL. ************************************************************************************
IF iGFCaller = MILLIE
//PRINT_HELP ( ANSWER )
IF iCallType = CALL_DATE
call_number = MILLIE_MOBILE
call_number += iCallRandomVariant
IF call_number > MILLIE_MOBILE8
call_number = MILLIE_MOBILE8
ENDIF
ELSE
call_number = MILLIE_DUMP
ENDIF
GOSUB mobile_rings
IF flag_player_answered_phone = 1
SET_BIT iAgentFlags MOBILE_CALL_ANSWERED
GOSUB mobile_chat_switch
GOSUB load_and_play_mobile_calls
ENDIF
CLEAR_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
GOSUB mobile_message_cleanup
TERMINATE_THIS_SCRIPT
ENDIF
// **********************************************************************************************************
ENDIF
ELSE
CLEAR_BIT iAgentFlags MOBILE_CALL_SCRIPT_RUNNING
GOSUB mobile_message_cleanup
TERMINATE_THIS_SCRIPT
ENDIF
ELSE
flag_cell_nation = 0
ENDIF
GOTO cell_phone_GF_inner
// END OF GIRLFRIENDS ONE SHOT CALL *******************************************************
mobile_rings:
ring_a_ding_ding = 0
flag_player_on_mission = 1
flag_cell_nation = 1
audio_slot_mobile = 1
LOAD_MISSION_AUDIO 3 SOUND_MOBRING
players_skipping_the_call = 0
//--- Print the generic message unless its a girlfriend call (for a frame, to get the sound fx)
SWITCH call_number
CASE COOCHIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER0 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MICHELLE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER1 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE KYLIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER2 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE BARBARA_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER3 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE SUZIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER4 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MILLIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER5 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE COOCHIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER0 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MICHELLE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER1 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE KYLIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER2 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE BARBARA_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER3 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE SUZIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER4 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MILLIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER5 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
DEFAULT
PRINT_HELP_FOREVER_CONDITIONAL ANSWER 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
ENDSWITCH
WHILE ring_a_ding_ding < 7
AND flag_player_answered_phone < 2
WAIT 0
//--- Print (forever this time) the generic message unless its a girlfriend call
SWITCH call_number
CASE COOCHIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWE0R 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MICHELLE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER1 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE KYLIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER2 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE BARBARA_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER3 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE SUZIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER4 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MILLIE_MOBILE
PRINT_HELP_FOREVER_CONDITIONAL ANSWER5 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE COOCHIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER0 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MICHELLE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER1 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE KYLIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER2 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE BARBARA_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER3 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE SUZIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER4 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
CASE MILLIE_DUMP
PRINT_HELP_FOREVER_CONDITIONAL ANSWER5 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
DEFAULT
PRINT_HELP_FOREVER_CONDITIONAL ANSWER 128 // (flag 128 is CONDITION_FLAG_ANSWER_PHONE).
BREAK
ENDSWITCH
audio_slot_mobile = 3
GOSUB loading_and_playing_audio
++ ring_a_ding_ding
IF flag_player_answered_phone = 1
AND ring_a_ding_ding > 0
GOTO imploding_head
ENDIF
GOSUB has_audio_finished
IF flag_player_answered_phone = 1
AND ring_a_ding_ding > 0
GOTO imploding_head
ENDIF
mobile_pause = 0
WHILE mobile_pause < 40
WAIT 0
GOSUB death_checker
IF flag_player_answered_phone = 1
GOTO imploding_head
ENDIF
++ mobile_pause
ENDWHILE
ENDWHILE
GET_GAME_TIMER timer_mobile_start
RETURN
imploding_head:
players_skipping_the_call = 1
GET_GAME_TIMER timer_mobile_start
ADD_WIDGET_FLAG WIDGET_PHONE 128 // WIDGET_FLAG_PULSATE
WHILE IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
OR IS_WIDGET_RELEASED WIDGET_PHONE
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
flag_player_answered_phone = 2
RETURN
ENDIF
ENDWHILE
CLEAR_HELP
CLEAR_MISSION_AUDIO 1
IF IS_PLAYER_PLAYING player1
SET_EVERYONE_IGNORE_PLAYER player1 ON
SHUT_CHAR_UP scplayer TRUE
REQUEST_MODEL cellphone
WHILE NOT HAS_MODEL_LOADED cellphone
WAIT 0
ENDWHILE
GOSUB death_checker
IF flag_player_answered_phone = 2
MARK_MODEL_AS_NO_LONGER_NEEDED cellphone
RETURN
ENDIF
TASK_USE_MOBILE_PHONE scplayer TRUE
timera = 0
WHILE timera < 2000
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
flag_player_answered_phone = 2
RETURN
ENDIF
ENDWHILE
ENDIF
RETURN
loading_and_playing_audio:
WHILE NOT HAS_MISSION_AUDIO_LOADED audio_slot_mobile
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
flag_player_answered_phone = 2
RETURN
ELSE
IF IS_CHAR_IN_WATER scplayer
OR IS_CHAR_SHOOTING scplayer
OR NOT IS_CHAR_ON_FOOT scplayer
OR flag_player_on_mission = 0
OR NOT main_visible_area = 0
OR NOT player_fall_state = 0
flag_player_answered_phone = 2
CLEAR_HELP
RETURN
ENDIF
IF IS_GANG_WAR_FIGHTING_GOING_ON
OR IS_PLAYER_USING_JETPACK Player1
OR IS_MINIGAME_IN_PROGRESS
flag_player_answered_phone = 2
CLEAR_HELP
RETURN
ENDIF
IF flag_player_answered_phone = 0
AND ring_a_ding_ding > 0
IF NOT IS_CHAR_SHOOTING scplayer
ADD_WIDGET_FLAG WIDGET_PHONE 128 // WIDGET_FLAG_PULSATE
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
OR IS_WIDGET_RELEASED WIDGET_PHONE
IF CAN_PLAYER_START_MISSION player1
flag_player_answered_phone = 1
RETURN
ENDIF
ENDIF
ENDIF
ENDIF
IF players_skipping_the_call = 1
REMOVE_WIDGET_FLAG WIDGET_PHONE 128 // WIDGET_FLAG_PULSATE
IF IS_BUTTON_PRESSED PAD1 TRIANGLE
OR IS_WIDGET_RELEASED WIDGET_PHONE
players_skipping_the_call = 2
RETURN
ENDIF
ENDIF
IF flag_player_on_mission = 0
flag_player_answered_phone = 2
RETURN
ENDIF
ENDIF
ENDWHILE
IF NOT IS_CHAR_IN_WATER scplayer
PLAY_MISSION_AUDIO audio_slot_mobile
ENDIF
RETURN
has_audio_finished:
WHILE NOT HAS_MISSION_AUDIO_FINISHED audio_slot_mobile
WAIT 0
IF NOT IS_PLAYER_PLAYING player1
flag_player_answered_phone = 2
RETURN
ELSE
IF IS_CHAR_IN_WATER scplayer
OR IS_CHAR_SHOOTING scplayer
OR NOT IS_CHAR_ON_FOOT scplayer
OR flag_player_on_mission = 0
OR NOT main_visible_area = 0
OR NOT player_fall_state = 0
flag_player_answered_phone = 2
CLEAR_HELP
RETURN
ENDIF
IF IS_GANG_WAR_FIGHTING_GOING_ON
OR IS_PLAYER_USING_JETPACK Player1
OR IS_MINIGAME_IN_PROGRESS
flag_player_answered_phone = 2
CLEAR_HELP
RETURN
ENDIF
IF flag_player_answered_phone = 0
AND ring_a_ding_ding > 0
ADD_WIDGET_FLAG WIDGET_PHONE 128 // WIDGET_FLAG_PULSATE
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
OR IS_WIDGET_RELEASED WIDGET_PHONE
IF CAN_PLAYER_START_MISSION player1
flag_player_answered_phone = 1
RETURN
ENDIF
ENDIF
ENDIF
IF players_skipping_the_call = 1
REMOVE_WIDGET_FLAG WIDGET_PHONE 128 // WIDGET_FLAG_PULSATE
IF IS_BUTTON_PRESSED PAD1 TRIANGLE
OR IS_WIDGET_RELEASED WIDGET_PHONE
players_skipping_the_call = 2
RETURN
ENDIF
ENDIF
IF flag_player_on_mission = 0
flag_player_answered_phone = 2
RETURN
ENDIF
ENDIF
ENDWHILE
RETURN
death_checker:
IF NOT IS_PLAYER_PLAYING player1
flag_player_answered_phone = 2
RETURN
ELSE
IF IS_CHAR_IN_WATER scplayer
OR IS_CHAR_SHOOTING scplayer
OR NOT IS_CHAR_ON_FOOT scplayer
OR flag_player_on_mission = 0
OR NOT main_visible_area = 0
OR NOT player_fall_state = 0
flag_player_answered_phone = 2
CLEAR_HELP
RETURN
ENDIF
IF IS_GANG_WAR_FIGHTING_GOING_ON
OR IS_PLAYER_USING_JETPACK Player1
OR IS_MINIGAME_IN_PROGRESS
flag_player_answered_phone = 2
CLEAR_HELP
RETURN
ENDIF
IF flag_player_answered_phone = 0
AND ring_a_ding_ding > 0
IF NOT IS_CHAR_SHOOTING scplayer
ADD_WIDGET_FLAG WIDGET_PHONE 128 // WIDGET_FLAG_PULSATE
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
OR IS_WIDGET_RELEASED WIDGET_PHONE
IF CAN_PLAYER_START_MISSION player1
flag_player_answered_phone = 1
RETURN
ENDIF
ENDIF
ENDIF
ENDIF
IF players_skipping_the_call = 1
REMOVE_WIDGET_FLAG WIDGET_PHONE 128 // WIDGET_FLAG_PULSATE
IF IS_BUTTON_PRESSED PAD1 TRIANGLE
OR IS_WIDGET_RELEASED WIDGET_PHONE
players_skipping_the_call = 2
RETURN
ENDIF
ENDIF
IF flag_player_on_mission = 0
flag_player_answered_phone = 2
RETURN
ENDIF
ENDIF
RETURN
mobile_message_cleanup:
flag_cell_nation = 0
CLEAR_MISSION_AUDIO 1
CLEAR_MISSION_AUDIO 2
CLEAR_MISSION_AUDIO 3
flag_player_answered_phone = 0
flag_mobile_timer = 0
IF IS_PLAYER_PLAYING player1
//GET_SCRIPT_TASK_STATUS scplayer TASK_USE_MOBILE_PHONE mobile_ReturnStatus
//IF NOT mobile_ReturnStatus = FINISHED_TASK
TASK_USE_MOBILE_PHONE scplayer FALSE
//ENDIF
SET_PLAYER_CONTROL player1 ON
SET_EVERYONE_IGNORE_PLAYER player1 OFF
SHUT_CHAR_UP scplayer FALSE
ENDIF
GET_GAME_TIMER timer_mobile_start
timer_mobile_diff = 0
GET_GAME_TIMER timer_mobile_now
timer_mobile_diff = timer_mobile_now - timer_mobile_start
CLEAR_PRINTS
IF flag_new_cont = 0
CLEAR_HELP
ELSE
flag_new_cont = 0
ENDIF
MARK_MODEL_AS_NO_LONGER_NEEDED cellphone
flag_player_on_mission = 0
RETURN
load_and_play_mobile_calls:
cell_index_start = 0
loop_cell_phone_audio:
LOAD_MISSION_AUDIO 1 mobile_audio_labels[cell_index_start]
cell_index_start ++
IF cell_index_start <= cell_index_end
LOAD_MISSION_AUDIO 2 mobile_audio_labels[cell_index_start]
ENDIF
cell_index_start --
audio_slot_mobile = 1
GOSUB loading_and_playing_audio
PRINT_NOW ( $mobile_print_labels[cell_index_start] ) 10000 1 //rhubarb rhubarb
GOSUB has_audio_finished
IF players_skipping_the_call = 2
RETURN
ENDIF
cell_index_start ++
IF cell_index_start <= cell_index_end
audio_slot_mobile = 2
GOSUB loading_and_playing_audio
PRINT_NOW ( $mobile_print_labels[cell_index_start] ) 10000 1 //rhubarb rhubarb
GOSUB has_audio_finished
ELSE
cell_index_start --
ENDIF
IF players_skipping_the_call = 2
RETURN
ENDIF
cell_index_start ++
IF skip_the_mobile_call = 0
PRINT_HELP CELSKIP // ~m~~widget_phone~ To skip a cellphone call.
skip_the_mobile_call = 1
ENDIF
IF cell_index_start <= cell_index_end
GOTO loop_cell_phone_audio
ENDIF
CLEAR_PRINTS
RETURN
}
/* OLD FAT CALL
$mobile_print_labels[0] = &MSWE06A //Yo?
$mobile_print_labels[1] = &MSWE06B //Hey, CJ, it�s Sweet.
$mobile_print_labels[2] = &MSWE06C //Whassup?
$mobile_print_labels[3] = &MSWE06D //If you don�t respect your body, ain�t nobody going to respect you!
$mobile_print_labels[4] = &MSWE06O //You�re too fat, CJ, you need to get some exercise!
$mobile_print_labels[5] = &MSWE06F //If I wanted nagging, I�d buy a clockwork wife!
$mobile_print_labels[6] = &MSWE06G //Just looking out for you, homie.
$mobile_print_labels[7] = &MSWE06H //It�s all show and respect, you lnow?
$mobile_print_labels[8] = &MSWE06J //Yeah, I guess.
$mobile_print_labels[9] = &MSWE06K //There�s a gym I use a couple of blocks out from the Grove.
$mobile_print_labels[10] = &MSWE06L //Go check it out and get yo�self a gangsta�s physique.
$mobile_print_labels[11] = &MSWE06N //I�ll scope it out.
$mobile_print_labels[12] = &MSWE06M //Later, man.
mobile_audio_labels[0] = SOUND_MSWE06A //Yo?
mobile_audio_labels[1] = SOUND_MSWE06B //Hey, CJ, it�s Sweet.
mobile_audio_labels[2] = SOUND_MSWE06C //Whassup?
mobile_audio_labels[3] = SOUND_MSWE06D //If you don�t respect your body, ain�t nobody going to respect you!
mobile_audio_labels[4] = SOUND_MSWE06E //You�re too skinny, CJ, you need to pack on some muscle!
mobile_audio_labels[5] = SOUND_MSWE06F //If I wanted nagging, I�d buy a clockwork wife!
mobile_audio_labels[6] = SOUND_MSWE06G //Just looking out for you, homie.
mobile_audio_labels[7] = SOUND_MSWE06H //It�s all show and respect, you lnow?
mobile_audio_labels[8] = SOUND_MSWE06J //Yeah, I guess.
mobile_audio_labels[9] = SOUND_MSWE06K //There�s a gym I use a couple of blocks out from the Grove.
mobile_audio_labels[10] = SOUND_MSWE06L //Go check it out and get yo�self a gangsta�s physique.
mobile_audio_labels[11] = SOUND_MSWE06N //I�ll scope it out.
mobile_audio_labels[12] = SOUND_MSWE06M //Later, man.
*/
MISSION_START
VAR_FLOAT x_float_m y_float_m z_float_m text_x text_y text_z text_h player_heading_debug debug_car_heading
VAR_FLOAT cut_offsetX cut_offsetY cut_offsetZ
VAR_INT carcolour_flag1 carcolour_flag2 carcolour_counter1 carcolour_counter2 carcolour_counter3 carcolour_counter4
VAR_INT magic_car record_car1
VAR_INT initial_create_car widscreen_flag debug_number is_player_in_mission_menu1 text_debug_num change_area_code
VAR_INT counter_create_car cheat_mode_on mission_debug_page last_mission_debug_page
VAR_INT button_pressed_warp button_pressed_warp_odd button_pressed_main relative_button_press button_pressed_cutscene_main
VAR_INT repeat_button_press text_button_pressed initial_pickup debug_active
VAR_INT no_cars repeat_butt_press print_stuff_button print_stuff_counter
VAR_INT counter_create_pickup magic_pickup test_heli1_created debug_cutscene_number cutscene_index
VAR_INT weather_crap add_just_the_once_though debug_game_timer visible_area cut_doesnt_have_text
VAR_INT is_stunt_jump_debug is_rightshock_pressed
VAR_FLOAT corona_x corona_y corona_z stunt_jump_debug_X stunt_jump_debug_Y stunt_jump_debug_Z /*bulldozerY_d dumperY_d*/
VAR_FLOAT RStickX_F RStickY_F truthX_d debug_heading TEXT_POS_X TEXT_POS_Y TEXT_POS_Y_STEP TEXT_SCALEX TEXT_SCALEY
VAR_FLOAT driving_schoolx_d basketballx_d limox_d directorx_d valetx_d heistX_d vcrashX_d desert2X_d strap2X_d
VAR_FLOAT goto_thereX goto_thereY goto_thereZ syndX_d stealX_d casinoX_d cesarX_d docX_d pimpY_d
VAR_FLOAT sweetX_d ryderY_d smokeX_d strapX_d wuziX_d introY_d bcrashX_d hitchX_d pilotX_d TheheistX_d
VAR_FLOAT mansionX_d crashY_d traceX_d[4] zeroX_d bcesarX_d scrashX_d garageX_d desertX_d catx_d
VAR_TEXT_LABEL $new_cut $cuttext
VAR_FLOAT second_playerX second_playerY second_playerZ
VAR_INT second_playercreated COL1_R COL1_G COL1_B COL2_R COL2_G COL2_B cut_visible_area[84] cut_visible_area2[75] cut_visible_area3[23]
VAR_TEXT_LABEL $cutscene_name[84] $cutscene_file[84] $cutscene_text[84]
VAR_TEXT_LABEL $cutscene_name2[75] $cutscene_file2[75] $cutscene_text2[75]
VAR_TEXT_LABEL $cutscene_name3[23] $cutscene_file3[23]
VAR_INT debug_visible_area
VAR_INT iAudioDebug
VAR_INT MissionNum
VAR_INT MissionPage
MissionNum = -1
MissionPage = 0
last_mission_debug_page = -1
//--- AUDIO DEBUG CONSTS
CONST_INT TEXT1 0
CONST_INT TEXT2 1
CONST_INT GET_PED_1 2
CONST_INT GENERATE_PED_1 3
CONST_INT GET_PED_2 4
CONST_INT GENERATE_PED_2 5
CONST_INT FACING 6
CONST_INT CHAT 7
CONST_INT END 8
CONST_INT AD_BUTTON_NONE 0
CONST_INT AD_BUTTON_DPADUP 1
CONST_INT AD_BUTTON_DPADDOWN 2
CONST_INT AD_BUTTON_DPADLEFT 3
CONST_INT AD_BUTTON_DPADRIGHT 4
CONST_INT AD_BUTTON_CROSS 5
// ******************PAGE1*********************
// DROPPED CUTS- CRSAH2A, BCRAS2 don't think there's ever been a BCRAS2??
$cutscene_file[0] = PROLOG1
cut_visible_area[0] = 14
$cutscene_name[0] = CUT01
$cutscene_text[0] = INTRO1
$cutscene_file[1] = INTRO1A
cut_visible_area[1] = 3
$cutscene_name[1] = CUT02
$cutscene_text[1] = INTRO1
$cutscene_file[2] = INTRO1B
cut_visible_area[2] = 0
$cutscene_name[2] = CUT03
$cutscene_text[2] = INTRO1
$cutscene_file[3] = INTRO2A
cut_visible_area[3] = 2
$cutscene_name[3] = CUT04
$cutscene_text[3] = INTRO2
$cutscene_file[4] = SWEET1A
cut_visible_area[4] = 0
$cutscene_name[4] = CUT05
$cutscene_text[4] = SWEET1
$cutscene_file[5] = SWEET1B
cut_visible_area[5] = 1
$cutscene_name[5] = CUT06
$cutscene_text[5] = SWEET1B
$cutscene_file[6] = SWEET3A
cut_visible_area[6] = 1
$cutscene_name[6] = CUT07
$cutscene_text[6] = SWEET2
$cutscene_file[7] = SWEET3B
cut_visible_area[7] = 0
$cutscene_name[7] = CUT08
$cutscene_text[7] = SWEET2
$cutscene_file[8] = SWEET2A
cut_visible_area[8] = 0
$cutscene_name[8] = CUT09
$cutscene_text[8] = SWEET3
$cutscene_file[9] = SWEET2B
cut_visible_area[9] = 0
$cutscene_name[9] = CUT10
$cutscene_text[9] = SWEET3
$cutscene_file[10] = SWEET4A
cut_visible_area[10] = 0
$cutscene_name[10] = CUT11
$cutscene_text[10] = SWEET4
$cutscene_file[11] = SWEET5A
cut_visible_area[11] = 1
$cutscene_name[11] = CUT12
$cutscene_text[11] = SWEET5
$cutscene_file[12] = SWEET6A
cut_visible_area[12] = 1
$cutscene_name[12] = CUT13
$cutscene_text[12] = SWEET6
$cutscene_file[13] = SWEET6B
cut_visible_area[13] = 0
$cutscene_name[13] = CUT14
$cutscene_text[13] = SWEET6
$cutscene_file[14] = SWEET7A
cut_visible_area[14] = 0
$cutscene_name[14] = CUT15
$cutscene_text[14] = SWEET7
$cutscene_file[15] = SMOKE1A
cut_visible_area[15] = 0
$cutscene_name[15] = CUT16
$cutscene_text[15] = SMOKE1
$cutscene_file[16] = SMOKE1B
cut_visible_area[16] = 0
$cutscene_name[16] = CUT17
$cutscene_text[16] = SMOKE1
$cutscene_file[17] = SMOKE2A
cut_visible_area[17] = 0
$cutscene_name[17] = CUT18
$cutscene_text[17] = SMOKE2
$cutscene_file[18] = SMOKE2B
cut_visible_area[18] = 0
$cutscene_name[18] = CUT19
$cutscene_text[18] = SMOKE2
$cutscene_file[19] = SMOKE3A
cut_visible_area[19] = 0
$cutscene_name[19] = CUT20
$cutscene_text[19] = SMOKE3
$cutscene_file[20] = SMOKE4A
cut_visible_area[20] = 0
$cutscene_name[20] = CUT21
$cutscene_text[20] = SMOKE4
$cutscene_file[21] = RYDER1A
cut_visible_area[21] = 0
$cutscene_name[21] = CUT22
$cutscene_text[21] = RYDER1
$cutscene_file[22] = RYDER2A
cut_visible_area[22] = 0
$cutscene_name[22] = CUT23
$cutscene_text[22] = RYDER2
$cutscene_file[23] = RYDER3A
cut_visible_area[23] = 2
$cutscene_name[23] = CUT24
$cutscene_text[23] = RYDER3
$cutscene_file[24] = STRAP1A
cut_visible_area[24] = 0
$cutscene_name[24] = CUT25
$cutscene_text[24] = STRAP1
$cutscene_file[25] = STRAP2A
cut_visible_area[25] = 10
$cutscene_name[25] = CUT26
$cutscene_text[25] = STRAP2
$cutscene_file[26] = STRAP3A
cut_visible_area[26] = 10
$cutscene_name[26] = CUT27
$cutscene_text[26] = STRAP3
$cutscene_file[27] = STRAP4A
cut_visible_area[27] = 0
$cutscene_name[27] = CUT28
$cutscene_text[27] = STRAP4
$cutscene_file[28] = Strp4b1
cut_visible_area[28] = 3
$cutscene_name[28] = CUT29
$cutscene_text[28] = STRAP4
$cutscene_file[29] = Strp4b2 //2nd part
cut_visible_area[29] = 0
$cutscene_name[29] = CUT135
$cutscene_text[29] = STRAP4
$cutscene_file[30] = CRASH1A
cut_visible_area[30] = 17
$cutscene_name[30] = CUT30
$cutscene_text[30] = CRASH1
$cutscene_file[31] = CRASH2A
cut_visible_area[31] = 0
$cutscene_name[31] = CUT31
$cutscene_text[31] = CRASH2
$cutscene_file[32] = CRASH3A
cut_visible_area[32] = 0
$cutscene_name[32] = CUT32
$cutscene_text[32] = CRASH3
$cutscene_file[33] = CESAR1A
cut_visible_area[33] = 0
$cutscene_name[33] = CUT33
$cutscene_text[33] = CESAR1
$cutscene_file[34] = CESAR2A
cut_visible_area[34] = 0
$cutscene_name[34] = CUT34
$cutscene_text[34] = CESAR2
$cutscene_file[35] = FINAL1A
cut_visible_area[35] = 1
$cutscene_name[35] = CUT35
$cutscene_text[35] = LAFIN1
$cutscene_file[36] = FINAL2A
cut_visible_area[36] = 1
$cutscene_name[36] = CUT36
$cutscene_text[36] = LAFIN2
$cutscene_file[37] = FINAL2B
cut_visible_area[37] = 0
$cutscene_name[37] = CUT37
$cutscene_text[37] = LAFIN2
$cutscene_file[38] = BCRAS1
cut_visible_area[38] = 0
$cutscene_name[38] = CUT38
$cutscene_text[38] = BCRASH1
$cutscene_file[39] = BCESAR2
cut_visible_area[39] = 2
$cutscene_name[39] = CUT39
$cutscene_text[39] = BCESAR2
$cutscene_file[40] = BCESAR4
cut_visible_area[40] = 0
$cutscene_name[40] = CUT40
$cutscene_text[40] = BCESAR4
$cutscene_file[41] = BCESA4W
cut_visible_area[41] = 0
$cutscene_name[41] = CUT41
$cutscene_text[41] = BCESAR4
$cutscene_file[42] = BCESA5W
cut_visible_area[42] = 0
$cutscene_name[42] = CUT42
$cutscene_text[42] = BCESAR4
$cutscene_file[43] = CAT_1
cut_visible_area[43] = 1
$cutscene_name[43] = CUT43
$cutscene_text[43] = CAT
$cutscene_file[44] = CAT_2
cut_visible_area[44] = 0
$cutscene_name[44] = CUT44
$cutscene_text[44] = CAT
$cutscene_file[45] = CAT_3
cut_visible_area[45] = 0
$cutscene_name[45] = CUT45
$cutscene_text[45] = CAT
$cutscene_file[46] = CAT_4
cut_visible_area[46] = 0
$cutscene_name[46] = CUT46
$cutscene_text[46] = CAT
$cutscene_file[47] = DESERT1
cut_visible_area[47] = 0
$cutscene_name[47] = CUT47
$cutscene_text[47] = TORENO1
$cutscene_file[48] = DESERT2
cut_visible_area[48] = 0
$cutscene_name[48] = CUT48
$cutscene_text[48] = TORENO2
$cutscene_file[49] = DESERT3
cut_visible_area[49] = 0
$cutscene_name[49] = CUT49
$cutscene_text[49] = DSERT3
$cutscene_file[50] = DESERT4
cut_visible_area[50] = 0
$cutscene_name[50] = CUT50
$cutscene_text[50] = DSERT4
$cutscene_file[51] = DESERT6
cut_visible_area[51] = 0
$cutscene_name[51] = CUT52
$cutscene_text[51] = DSERT6
$cutscene_file[52] = DESERT8
cut_visible_area[52] = 0
$cutscene_name[52] = CUT54
$cutscene_text[52] = DSERT8
$cutscene_file[53] = DESERT9
cut_visible_area[53] = 0
$cutscene_name[53] = CUT55
$cutscene_text[53] = DSERT9
$cutscene_file[54] = DES_10A
cut_visible_area[54] = 0
$cutscene_name[54] = CUT56
$cutscene_text[54] = DSERT10
$cutscene_file[55] = DES_10B
cut_visible_area[55] = 0
$cutscene_name[55] = CUT57
$cutscene_text[55] = DSERT10
$cutscene_file[56] = FARL_2A
cut_visible_area[56] = 3
$cutscene_name[56] = CUT60
$cutscene_text[56] = FARLIE2
$cutscene_file[57] = FARL_3A
cut_visible_area[57] = 3
$cutscene_name[57] = CUT61
$cutscene_text[57] = FARLIE3
$cutscene_file[58] = FARL_3B
cut_visible_area[58] = 0
$cutscene_name[58] = CUT62
$cutscene_text[58] = FARLIE3
$cutscene_file[59] = FARL_4A
cut_visible_area[59] = 1
$cutscene_name[59] = CUT63
$cutscene_text[59] = FARLIE4
$cutscene_file[60] = FARL_5A
cut_visible_area[60] = 1
$cutscene_name[60] = CUT64
$cutscene_text[60] = FARLIE5
$cutscene_file[61] = GARAG1B
cut_visible_area[61] = 1
$cutscene_name[61] = CUT65
$cutscene_text[61] = GARAGE1
$cutscene_file[62] = GARAG1C
cut_visible_area[62] = 1
$cutscene_name[62] = CUT66
$cutscene_text[62] = GARAGE1
$cutscene_file[63] = GARAG3A
cut_visible_area[63] = 1
$cutscene_name[63] = CUT67
$cutscene_text[63] = GARAGE2
$cutscene_file[64] = SCRASH1
cut_visible_area[64] = 1
$cutscene_name[64] = CUT69
$cutscene_text[64] = VALET1
$cutscene_file[65] = SCRASH2
cut_visible_area[65] = 1
$cutscene_name[65] = CUT70
$cutscene_text[65] = SCRASH2
$cutscene_file[66] = STEAL_1
cut_visible_area[66] = 1
$cutscene_name[66] = CUT71
$cutscene_text[66] = STEAL1
$cutscene_file[67] = STEAL_2
cut_visible_area[67] = 1
$cutscene_name[67] = CUT72
$cutscene_text[67] = STEAL2
$cutscene_file[68] = STEAL_4
cut_visible_area[68] = 1
$cutscene_name[68] = CUT74
$cutscene_text[68] = STEAL4
$cutscene_file[69] = STEAL_5
cut_visible_area[69] = 1
$cutscene_name[69] = CUT75
$cutscene_text[69] = STEAL5
$cutscene_file[70] = SYND_2A
cut_visible_area[70] = 1
$cutscene_name[70] = CUT76
$cutscene_text[70] = SYN2
$cutscene_file[71] = SYND_2B
cut_visible_area[71] = 3
$cutscene_name[71] = CUT77
$cutscene_text[71] = SYN2
$cutscene_file[72] = SYND_3A
cut_visible_area[72] = 0
$cutscene_name[72] = CUT78
$cutscene_text[72] = SYN3
$cutscene_file[73] = SYND_4A
cut_visible_area[73] = 1
$cutscene_name[73] = CUT79
$cutscene_text[73] = SYN4
$cutscene_file[74] = SYND_7
cut_visible_area[74] = 1
$cutscene_name[74] = CUT80
$cutscene_text[74] = SYN7
$cutscene_file[75] = TRUTH_1
cut_visible_area[75] = 12
$cutscene_name[75] = CUT81
$cutscene_text[75] = TRU1
$cutscene_file[76] = TRUTH_2
cut_visible_area[76] = 0
$cutscene_name[76] = CUT82
$cutscene_text[76] = TRU2
$cutscene_file[77] = WOOZI1A
cut_visible_area[77] = 1
$cutscene_name[77] = CUT83
$cutscene_text[77] = WUZI1
$cutscene_file[78] = WOOZIE2
cut_visible_area[78] = 1
$cutscene_name[78] = CUT84
$cutscene_text[78] = WUZI2
$cutscene_file[79] = WOOZIE4
cut_visible_area[79] = 1
$cutscene_name[79] = CUT86
$cutscene_text[79] = WUZI4
$cutscene_file[80] = ZERO_1
cut_visible_area[80] = 6
$cutscene_name[80] = CUT87
$cutscene_text[80] = ZERO1
$cutscene_file[81] = ZERO_2
cut_visible_area[81] = 6
$cutscene_name[81] = CUT88
$cutscene_text[81] = ZERO2
$cutscene_file[82] = ZERO_3
cut_visible_area[82] = 6
$cutscene_name[82] = CUT89
$cutscene_text[82] = ZERO3
$cutscene_file[83] = ZERO_4
cut_visible_area[83] = 6
$cutscene_name[83] = CUT90
$cutscene_text[83] = ZERO4
// ******************PAGE2*********************
$cutscene_file2[0] = W2_ALT
cut_visible_area2[0] = 1
$cutscene_name2[0] = CUT91
$cutscene_text2[0] = WUZI2
$cutscene_file2[1] = BCESAR5
cut_visible_area2[1] = 0
$cutscene_name2[1] = CUT92
$cutscene_text2[1] = BCESAR4
$cutscene_file2[2] = D8_ALT
cut_visible_area2[2] = 0
$cutscene_name2[2] = CUT94
$cutscene_text2[2] = DSERT8
$cutscene_file2[3] = D10_ALT
cut_visible_area2[3] = 0
$cutscene_name2[3] = CUT95
$cutscene_text2[3] = DSERT10
$cutscene_file2[4] = SYND_3B
cut_visible_area2[4] = 0
$cutscene_name2[4] = CUT96
$cutscene_text2[4] = SYN3
$cutscene_file2[5] = SYND_4B
cut_visible_area2[5] = 3
$cutscene_name2[5] = CUT97
$cutscene_text2[5] = SYN4
$cutscene_file2[6] = CAS_1a
cut_visible_area2[6] = 11
$cutscene_name2[6] = CUT98
$cutscene_text2[6] = CASINO1
$cutscene_file2[7] = WOOZI1B
cut_visible_area2[7] = 1
$cutscene_name2[7] = CUT83
$cutscene_text2[7] = WUZI1
$cutscene_file2[8] = CAS_2
cut_visible_area2[8] = 11
$cutscene_name2[8] = CUT100
$cutscene_text2[8] = CASINO2
$cutscene_file2[9] = CAS_3
cut_visible_area2[9] = 11
$cutscene_name2[9] = CUT101
$cutscene_text2[9] = CASINO3
$cutscene_file2[10] = CAS_4a
cut_visible_area2[10] = 0
$cutscene_name2[10] = CUT102
$cutscene_text2[10] = CASINO4
$cutscene_file2[11] = CAS_4b
cut_visible_area2[11] = 0
$cutscene_name2[11] = CUT103
$cutscene_text2[11] = CASINO4
$cutscene_file2[12] = CAS_4c
cut_visible_area2[12] = 2
$cutscene_name2[12] = CUT104
$cutscene_text2[12] = CASINO4
$cutscene_file2[13] = CAS_5a
cut_visible_area2[13] = 2
$cutscene_name2[13] = CUT105
$cutscene_text2[13] = CASINO5
$cutscene_file2[14] = CAS_6a
cut_visible_area2[14] = 2
$cutscene_name2[14] = CUT106
$cutscene_text2[14] = CASINO6
$cutscene_file2[15] = CAS6b_1
cut_visible_area2[15] = 1
$cutscene_name2[15] = CUT107
$cutscene_text2[15] = CASINO6
$cutscene_file2[16] = CAS_7b
cut_visible_area2[16] = 11
$cutscene_name2[16] = CUT109
$cutscene_text2[16] = CASINO7
$cutscene_file2[17] = Cas_9a1
cut_visible_area2[17] = 2
$cutscene_name2[17] = CUT110
$cutscene_text2[17] = CASINO9
$cutscene_file2[18] = CAS_11a
cut_visible_area2[18] = 2
$cutscene_name2[18] = CUT111
$cutscene_text2[18] = CASIN10
$cutscene_file2[19] = HEIST1a
cut_visible_area2[19] = 10
$cutscene_name2[19] = CUT112
$cutscene_text2[19] = HEIST1
$cutscene_file2[20] = HEIST2a
cut_visible_area2[20] = 10
$cutscene_name2[20] = CUT113
$cutscene_text2[20] = HEIST3
$cutscene_file2[21] = HEIST4a
cut_visible_area2[21] = 10
$cutscene_name2[21] = CUT115
$cutscene_text2[21] = HEIST2
$cutscene_file2[22] = HEIST5a
cut_visible_area2[22] = 10
$cutscene_name2[22] = CUT116
$cutscene_text2[22] = HEIST4
$cutscene_file2[23] = HEIST6a
cut_visible_area2[23] = 10
$cutscene_name2[23] = CUT117
$cutscene_text2[23] = HEIST5
$cutscene_file2[24] = HEIST8a
cut_visible_area2[24] = 0
$cutscene_name2[24] = CUT118
$cutscene_text2[24] = HEIST9
$cutscene_file2[25] = CRASHV1
cut_visible_area2[25] = 0
$cutscene_name2[25] = CUT119
$cutscene_text2[25] = VCR1
$cutscene_file2[26] = CRASV2A
cut_visible_area2[26] = 0
$cutscene_name2[26] = CUT120
$cutscene_text2[26] = VCR2
$cutscene_file2[27] = DOC_2
cut_visible_area2[27] = 0
$cutscene_name2[27] = CUT121
$cutscene_text2[27] = DOC2
$cutscene_file2[28] = BHILL1
cut_visible_area2[28] = 11
$cutscene_name2[28] = CUT122
$cutscene_text2[28] = MAN_1
$cutscene_file2[29] = BHILL2
cut_visible_area2[29] = 5
$cutscene_name2[29] = CUT123
$cutscene_text2[29] = MAN_2
$cutscene_file2[30] = BHILL3a
cut_visible_area2[30] = 5
$cutscene_name2[30] = CUT124
$cutscene_text2[30] = MAN_3
$cutscene_file2[31] = BHILL3b
cut_visible_area2[31] = 0
$cutscene_name2[31] = CUT125
$cutscene_text2[31] = MAN_3
$cutscene_file2[32] = BHILL3c
cut_visible_area2[32] = 0
$cutscene_name2[32] = CUT126
$cutscene_text2[32] = MAN_3
$cutscene_file2[33] = BHILL5a
cut_visible_area2[33] = 5
$cutscene_name2[33] = CUT127
$cutscene_text2[33] = MAN_5
$cutscene_file2[34] = BHILL5b
cut_visible_area2[34] = 3
$cutscene_name2[34] = CUT128
$cutscene_text2[34] = MAN_5
$cutscene_file2[35] = GROVE1a
cut_visible_area2[35] = 3
$cutscene_name2[35] = CUT129
$cutscene_text2[35] = GROVE1
$cutscene_file2[36] = GROVE1b
cut_visible_area2[36] = 3
$cutscene_name2[36] = CUT130
$cutscene_text2[36] = GROVE1
$cutscene_file2[37] = GROVE1c
cut_visible_area2[37] = 2
$cutscene_name2[37] = CUT131
$cutscene_text2[37] = GROVE1
$cutscene_file2[38] = GROVE2
cut_visible_area2[38] = 1
$cutscene_name2[38] = CUT132
$cutscene_text2[38] = GROVE2
$cutscene_file2[39] = RIOT_1A
cut_visible_area2[39] = 5
$cutscene_name2[39] = CUT133
$cutscene_text2[39] = RIOT1
$cutscene_file2[40] = RIOT_2
cut_visible_area2[40] = 1
$cutscene_name2[40] = CUT134
$cutscene_text2[40] = RIOT2
$cutscene_file2[41] = RIOT_4a
cut_visible_area2[41] = 1
$cutscene_name2[41] = CUT137
$cutscene_text2[41] = RIOT4
$cutscene_file2[42] = RIOT_4b
cut_visible_area2[42] = 0
$cutscene_name2[42] = CUT138
$cutscene_text2[42] = RIOT4
$cutscene_file2[43] = RIOT_4c
cut_visible_area2[43] = 2
$cutscene_name2[43] = CUT139
$cutscene_text2[43] = RIOT4
$cutscene_file2[44] = RIOT_4d
cut_visible_area2[44] = 2
$cutscene_name2[44] = CUT140
$cutscene_text2[44] = RIOT4
$cutscene_file2[45] = Riot4e1
cut_visible_area2[45] = 0
$cutscene_name2[45] = CUT141
$cutscene_text2[45] = RIOT4
$cutscene_file2[46] = EPILOG
cut_visible_area2[46] = 3
$cutscene_name2[46] = CUT142
$cutscene_text2[46] = RIOT4
$cutscene_file2[47] = SWEET1C
cut_visible_area2[47] = 3
$cutscene_name2[47] = CUT143
$cutscene_text2[47] = SWEET1B
$cutscene_file2[48] = PROLOG2
cut_visible_area2[48] = 0
$cutscene_name2[48] = CUT150
$cutscene_text2[48] = INTRO1
$cutscene_file2[49] = PROLOG3
cut_visible_area2[49] = 0
$cutscene_name2[49] = CUT151
$cutscene_text2[49] = INTRO1
$cutscene_file2[50] = BCRAS2
cut_visible_area2[50] = 0
$cutscene_name2[50] = CUT152
$cutscene_text2[50] = BCRASH1
$cutscene_file2[51] = DATE1AP //DATE 1A PIZZA //Offset: x 370.0 y -125.0 z 1001.52
cut_visible_area2[51] = 5
$cutscene_name2[51] = CUT_D1
$cutscene_text2[51] = SWEET3
$cutscene_file2[52] = DATE1BP //DATE 1B PIZZA //Offset: x 370.0 y -125.0 z 1001.52
cut_visible_area2[52] = 5
$cutscene_name2[52] = CUT_D2
$cutscene_text2[52] = SWEET3
$cutscene_file2[53] = DATE1AB //DATE 1A BURGER //Offset: X367.891 Y-67.591 Z1002.516
cut_visible_area2[53] = 10
$cutscene_name2[53] = CUT_D3
$cutscene_text2[53] = SWEET3
$cutscene_file2[54] = DATE1BB //DATE 1B BURGER //Offset: X367.891 Y-67.591 Z1002.516
cut_visible_area2[54] = 10
$cutscene_name2[54] = CUT_D4
$cutscene_text2[54] = SWEET3
$cutscene_file2[55] = DATE2A //DATE 2A CHICKEN //Offset: X374.478 Y-8.415 Z1002.86
cut_visible_area2[55] = 9
$cutscene_name2[55] = CUT_D5
$cutscene_text2[55] = SWEET3
$cutscene_file2[56] = DATE2B //DATE 2B CHICKEN //Offset: X374.478 Y-8.415 Z1002.86
cut_visible_area2[56] = 9
$cutscene_name2[56] = CUT_D6
$cutscene_text2[56] = SWEET3
$cutscene_file2[57] = DATE3A //DATE 3A DINER BIG //Offset: X449.41 Y-86.83 Z1000.53
cut_visible_area2[57] = 4
$cutscene_name2[57] = CUT_D7
$cutscene_text2[57] = SWEET3
$cutscene_file2[58] = DATE3B //DATE 3B DINER BIG //Offset: X449.41 Y-86.83 Z1000.53
cut_visible_area2[58] = 4
$cutscene_name2[58] = CUT_D8
$cutscene_text2[58] = SWEET3
$cutscene_file2[59] = DATE4A //DATE 4A DINER SMALL //Offset: X449.41 Y-108.24 Z1000.528
cut_visible_area2[59] = 5
$cutscene_name2[59] = CUT_D9
$cutscene_text2[59] = SWEET3
$cutscene_file2[60] = DATE4B //DATE 4B DINER SMALL //Offset: X449.41 Y-108.24 Z1000.528
cut_visible_area2[60] = 5
$cutscene_name2[60] = CUT_D10
$cutscene_text2[60] = SWEET3
$cutscene_file2[61] = DATE5AB //DATE 5A REST BOOTH //Offset: X441.871 Y-60.839 Z1000.675
cut_visible_area2[61] = 6
$cutscene_name2[61] = CUT_D11
$cutscene_text2[61] = SWEET3
$cutscene_file2[62] = DATE5BB //DATE 5B REST BOOTH //Offset: X441.871 Y-60.839 Z1000.675
cut_visible_area2[62] = 6
$cutscene_name2[62] = CUT_D12
$cutscene_text2[62] = SWEET3
$cutscene_file2[63] = DATE5AT //DATE 5A REST TABLE //Offset: x445.381 y-14.147 z1001.731
cut_visible_area2[63] = 1
$cutscene_name2[63] = CUT_D13
$cutscene_text2[63] = SWEET3
$cutscene_file2[64] = DATE5BT //DATE 5B REST TABLE //Offset: x445.381 y-14.147 z1001.731
cut_visible_area2[64] = 1
$cutscene_name2[64] = CUT_D14
$cutscene_text2[64] = SWEET3
$cutscene_file2[65] = DATE6A1 //DATE 6A BAR1 //Offset: X498.536 Y-18.2 Z1000.651
cut_visible_area2[65] = 17
$cutscene_name2[65] = CUT_D15
$cutscene_text2[65] = SWEET3
$cutscene_file2[66] = DATE6B1 //DATE 6A BAR1 //Offset: X498.536 Y-18.2 Z1000.651
cut_visible_area2[66] = 17
$cutscene_name2[66] = CUT_D16
$cutscene_text2[66] = SWEET3
$cutscene_file2[67] = DATE6A2 //DATE 6A BAR2 //Offset: X490.718 Y-79.168 Z998.76
cut_visible_area2[67] = 11
$cutscene_name2[67] = CUT_D17
$cutscene_text2[67] = SWEET3
$cutscene_file2[68] = DATE6B2 //DATE 6A BAR2 //Offset: X490.718 Y-79.168 Z998.76
cut_visible_area2[68] = 11
$cutscene_name2[68] = CUT_D18
$cutscene_text2[68] = SWEET3
$cutscene_file2[69] = RIOT_1B
cut_visible_area2[69] = 5
$cutscene_name2[69] = CUT133
$cutscene_text2[69] = RIOT1
$cutscene_file2[70] = Riot4e2
cut_visible_area2[70] = 0
$cutscene_name2[70] = CUT141
$cutscene_text2[70] = RIOT4
$cutscene_file2[71] = CAS6b_2
cut_visible_area2[71] = 1
$cutscene_name2[71] = CUT107
$cutscene_text2[71] = CASINO6
$cutscene_file2[72] = Cas_9a2
cut_visible_area2[72] = 2
$cutscene_name2[72] = CUT110
$cutscene_text2[72] = CASINO9
$cutscene_file2[73] = CRASV2B
cut_visible_area2[73] = 0
$cutscene_name2[73] = CUT120
$cutscene_text2[73] = VCR2
$cutscene_file2[74] = CUTTEST
cut_visible_area2[74] = 0
$cutscene_name2[74] = CUTTEST
$cutscene_text2[74] = SWEET3
// ******************PAGE3*********************
$cutscene_file3[0] = SC_02 //-outside, projects
cut_visible_area3[0] = 0
$cutscene_name3[0] = SC_02
$cutscene_file3[1] = SC_03 //-outside, grove street alleyway
cut_visible_area3[1] = 0
$cutscene_name3[1] = SC_03
$cutscene_file3[2] = SC_04 //-ryders house, INTRO2a
cut_visible_area3[2] = 2
$cutscene_name3[2] = SC_04
$cutscene_file3[3] = SC_05 //-outside, down an alley in SF
cut_visible_area3[3] = 0
$cutscene_name3[3] = SC_05
$cutscene_file3[4] = SC_06 //-outside, grove street alleyway
cut_visible_area3[4] = 0
$cutscene_name3[4] = SC_06
$cutscene_file3[5] = SC_07 //-outside, in liberty city
cut_visible_area3[5] = 0
$cutscene_name3[5] = SC_07
$cutscene_file3[6] = SC_08 //-outside in liberty city
cut_visible_area3[6] = 0
$cutscene_name3[6] = SC_08
$cutscene_file3[7] = SC_09 //-in salvatores office (not built)
cut_visible_area3[7] = 0
$cutscene_name3[7] = SC_09
$cutscene_file3[8] = SC_10 //-outside a rehab clinic
cut_visible_area3[8] = 0
$cutscene_name3[8] = SC_10
$cutscene_file3[9] = SC_11 //-outside the donut diner
cut_visible_area3[9] = 0
$cutscene_name3[9] = SC_11
$cutscene_file3[10] = SC_12 //-outside down an alleyway in liberty city
cut_visible_area3[10] = 0
$cutscene_name3[10] = SC_12
$cutscene_file3[11] = SC_13 //-outside, by a phone in LS
cut_visible_area3[11] = 0
$cutscene_name3[11] = SC_13
$cutscene_file3[12] = SC_13V //-outside on a wall or bench
cut_visible_area3[12] = 0
$cutscene_name3[12] = SC_13V
$cutscene_file3[13] = SC_14 //- inside UK recording studio, not built yet
cut_visible_area3[13] = 5
$cutscene_name3[13] = SC_14
$cutscene_file3[14] = SC_15 //-outside by a hole, same as the hernandez burial
cut_visible_area3[14] = 0
$cutscene_name3[14] = SC_15
$cutscene_file3[15] = SC_16 //- sals office in liberty
cut_visible_area3[15] = 0
$cutscene_name3[15] = SC_16
$cutscene_file3[16] = SC_18 //-in the airport
cut_visible_area3[16] = 0
$cutscene_name3[16] = SC_18
$cutscene_file3[17] = SC_19 //-on the streets of LS, driving (straight)
cut_visible_area3[17] = 0
$cutscene_name3[17] = SC_19
$cutscene_file3[18] = SC_20 //-Sals office, in vegas
cut_visible_area3[18] = 2
$cutscene_name3[18] = SC_20
$cutscene_file3[19] = SC_21 //-outside moms house, LS
cut_visible_area3[19] = 0
$cutscene_name3[19] = SC_21
$cutscene_file3[20] = SC_21B //-outside moms house, LS
cut_visible_area3[20] = 0
$cutscene_name3[20] = SC_21B
$cutscene_file3[21] = SC_22 //-outside in liberty city (static)
cut_visible_area3[21] = 0
$cutscene_name3[21] = SC_22
$cutscene_file3[22] = SC_23 //-outside, not sure where
cut_visible_area3[22] = 0
$cutscene_name3[22] = SC_23
second_playercreated = 0
relative_button_press = 0
initial_create_car = 0
counter_create_car = landstal
counter_create_pickup = gun_dildo1
button_pressed_warp = 0
button_pressed_main = 0
debug_cutscene_number = 0
button_pressed_cutscene_main = 0
add_just_the_once_though = 0
button_pressed_warp_odd = 0
test_heli1_created = 0
initial_pickup = 0
print_stuff_button = 0
print_stuff_counter = 0
carcolour_flag1 = 0
carcolour_flag2 = 0
carcolour_counter1 = 0
carcolour_counter2 = 0
carcolour_counter3 = 0
carcolour_counter4 = 0
is_stunt_jump_debug = 0
is_rightshock_pressed = 0
widscreen_flag = 0
cheat_mode_on = 0
weather_crap = 0
disable_debug = 0
introY_d = introY + 6.0
sweetX_d = sweetX - 5.0
ryderY_d = ryderY + 5.0
smokeX_d = smokeX + 5.0
strapX_d = strapX - 5.0
strap2X_d = strap2X - 5.0
crashY_d = crashY + 5.0
cesarX_d = cesarX - 5.0
TEXT_POS_Y = 20.0
truthX_d = truthX - 5.0
bcrashX_d = bcrashX - 5.0
bcesarX_d = bcesarX - 5.0
catx_d = catX[0] - 0.5
wuziX_d = wuziX + 5.0
syndX_d = syndX + 5.0
stealX_d = stealX + 5.0
scrashX_d = scrashX + 5.0
garageX_d = garageX + 5.0
traceX_d[0] = traceX[0] + 5.0
traceX_d[1] = traceX[1] + 5.0
traceX_d[2] = traceX[2] + 5.0
traceX_d[3] = traceX[3] + 5.0
desertX_d = desertX - 5.0
desert2X_d = desert2X - 5.0
pilotX_d = pilotX - 5.0
casinoX_d = casinoX + 5.0
TheheistX_d = TheheistX + 5.0
heistX_d = heistX - 5.0
vcrashX_d = vcrashX + 5.0
docX_d = docX - 5.0
//mansionX_d = mansionX - 3.5
mansionX_d = mansionY + 3.5
driving_schoolX_d = driving_schoolX - 5.0
zeroX_d = zeroX - 5.0
basketballx_d = basketballx - 5.0
limox_d = limox - 5.0
directorx_d = directorx - 5.0
valetx_d = valetx - 5.0
corona_x = 10.0
corona_y = 10.0
corona_z = 10.0
pimpY_d = pimpY - 5.0
hitchX_d = hitchX + 7.0
//bulldozerY_d = bulldozerY - 8.0
//dumperY_d = dumperY - 8.0
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
SCRIPT_NAME ms_skip
debug_active = 1
DEBUG_OFF
//LOAD_ALL_PATH_NODES_FOR_DEBUG
SET_DEATHARREST_STATE OFF
//IF IS_PLAYER_PLAYING player1
//SET_PLAYER_NEVER_GETS_TIRED Player1 TRUE
//ENDIF
VAR_INT coord_index
coord_index = 0
mission_start_debug:
WAIT 0
IF disable_debug = 1 // used to disable entire debug script - used in 2 player pool
GOTO mission_start_debug
ENDIF
GET_GAME_TIMER debug_game_timer
GOTO skip_this_debug_bit
CREATE_PICKUP_WITH_AMMO counter_create_pickup PICKUP_ONCE 2000 x_float_m y_float_m z_float_m magic_pickup
CREATE_CAR counter_create_car x_float_m y_float_m z_float_m magic_car
CREATE_CAR counter_create_car x_float_m y_float_m z_float_m record_car1
skip_this_debug_bit:
GOSUB setup_mission_cheats
IF IS_PLAYER_PLAYING player1 //ENDIF AT THE BOTTOM OF THE SCRIPT
// TURN BEAT DISPLAY ON/OFF - For audio guys //////////////////////////
IF flag_player_on_mission = 0
IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_1
IF beat_display_script_started = 0
IF IS_PLAYER_PLAYING player1
IF NOT IS_CHAR_IN_ANY_CAR scplayer
REQUEST_MODEL SAVANNA
WHILE NOT HAS_MODEL_LOADED SAVANNA
WAIT 0
ENDWHILE
VAR_INT beat_display_car
CREATE_CAR SAVANNA 1795.1271 -1903.7428 12.4004 beat_display_car
IF IS_PLAYER_PLAYING player1
WARP_CHAR_INTO_CAR scplayer beat_display_car
ENDIF
MARK_CAR_AS_NO_LONGER_NEEDED beat_display_car
ELSE
SET_CHAR_COORDINATES scplayer 1795.1271 -1903.7428 12.4004
ENDIF
WAIT 1000
START_NEW_SCRIPT beat_display
ENDIF
ENDIF
ENDIF
IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_2
IF beat_display_script_started = 1
bd_terminate_script = 1
ENDIF
ENDIF
ENDIF
// Create second Player ////////////////////////////////////////
IF flag_player_on_mission = 0
IF second_playercreated = 0
IF IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER2
AND IS_BUTTON_PRESSED PAD2 SQUARE
//SWITCH_WIDESCREEN ON
second_playercreated = 1
GET_CHAR_COORDINATES scplayer second_playerX second_playerY second_playerZ
second_playerX = second_playerX + 2.0
CREATE_PLAYER 1 second_playerX second_playerY second_playerZ player2
WAIT 500
ENDIF
ENDIF
IF second_playercreated = 1
IF IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER2
AND IS_BUTTON_PRESSED PAD2 SQUARE
DELETE_PLAYER player2
second_playercreated = 0
WAIT 500
ENDIF
ENDIF
ENDIF
// HEALTH CHEAT FOR KEYBOARD IF IT IS IN LEVEL DESIGN MODE /////////////////////////////////////////////
if is_ps2_keyboard_key_pressed ps2_key_h
set_char_health scplayer 100
add_armour_to_char scplayer 100
if is_char_in_any_car scplayer
var_int temporary_car temporary_car_model
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer temporary_car
set_car_health temporary_car 1000
get_car_model temporary_car temporary_car_model
if not is_char_on_any_bike scplayer
if not is_this_model_a_boat temporary_car_model
if not is_this_model_a_heli temporary_car_model
if not is_this_model_a_plane temporary_car_model
fix_car_tyre temporary_car front_left_wheel //front_left_wheel//rear_right_wheel
fix_car_tyre temporary_car front_right_wheel //front_left_wheel//rear_right_wheel
fix_car_tyre temporary_car rear_left_wheel //front_left_wheel//rear_right_wheel
fix_car_tyre temporary_car rear_right_wheel //front_left_wheel//rear_right_wheel
endif
endif
endif
endif
endif
endif
// TURN CHEAT MODE ON/OFF /////////////////////////////////////////////
IF NOT IS_2PLAYER_GAME_GOING_ON
IF IS_BUTTON_PRESSED PAD2 TRIANGLE
AND cheat_mode_on = 0
WHILE IS_BUTTON_PRESSED PAD2 TRIANGLE
WAIT 0
ENDWHILE
PRINT_NOW CHEATON 2000 1//CHEAT MODE ON
DEBUG_ON
cheat_mode_on = 1
ENDIF
IF IS_BUTTON_PRESSED PAD2 TRIANGLE
AND cheat_mode_on = 1
WHILE IS_BUTTON_PRESSED PAD2 TRIANGLE
WAIT 0
ENDWHILE
PRINT_NOW CHEATOF 2000 1//CHEAT MODE OFF
DEBUG_OFF
cheat_mode_on = 0
ENDIF
/// TURN PEDS AND CARS ON AND OFF /////////////////////////////////////
IF IS_BUTTON_PRESSED PAD2 SELECT
AND repeat_butt_press = 0
AND no_cars = 0
SET_CAR_DENSITY_MULTIPLIER 0.0
SET_PED_DENSITY_MULTIPLIER 0.0
PRINT_NOW CARSOFF 2000 1
DO_FADE 0 FADE_IN
SWITCH_WIDESCREEN OFF
no_cars = 1
repeat_butt_press = 1
ENDIF
IF IS_BUTTON_PRESSED PAD2 SELECT
AND repeat_butt_press = 0
AND no_cars = 1
SET_CAR_DENSITY_MULTIPLIER 1.0
SET_PED_DENSITY_MULTIPLIER 1.0
PRINT_NOW CARS_ON 2000 1
DO_FADE 0 FADE_IN
SWITCH_WIDESCREEN OFF
no_cars = 0
repeat_butt_press = 1
ENDIF
IF NOT IS_BUTTON_PRESSED PAD2 SELECT
IF repeat_butt_press = 1
repeat_butt_press = 0
ENDIF
ENDIF
// CREATE A PICKUP ////////////////////////////////////////////////////
IF NOT IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER1
IF IS_BUTTON_PRESSED PAD2 DPADDOWN
OR IS_BUTTON_PRESSED PAD2 DPADUP
IF IS_PLAYER_PLAYING player1
GET_CHAR_COORDINATES scplayer x_float_m y_float_m z_float_m
GET_CHAR_HEADING scplayer player_heading_debug
ENDIF
IF player_heading_debug < 45.0
AND player_heading_debug > 0.0
y_float_m += 5.0
debug_car_heading = 90.0
ENDIF
IF player_heading_debug < 360.0
AND player_heading_debug > 315.0
y_float_m += 5.0
debug_car_heading = 90.0
ENDIF
IF player_heading_debug < 135.0
AND player_heading_debug > 45.0
x_float_m -= 5.0
debug_car_heading = 180.0
ENDIF
IF player_heading_debug < 225.0
AND player_heading_debug > 135.0
y_float_m -= 5.0
debug_car_heading = 270.0
ENDIF
IF player_heading_debug < 315.0
AND player_heading_debug > 225.0
x_float_m += 5.0
debug_car_heading = 0.0
ENDIF
z_float_m = z_float_m + 1.0
GET_GROUND_Z_FOR_3D_COORD x_float_m y_float_m z_float_m z_float_m
IF NOT IS_PLAYER_PLAYING player1
GOTO mission_start_debug
ENDIF
next_pickup:
WAIT 0
IF IS_BUTTON_PRESSED PAD2 DPADUP
WHILE IS_BUTTON_PRESSED PAD2 DPADUP
WAIT 0
ENDWHILE
++ counter_create_pickup
IF counter_create_pickup = missile
counter_create_pickup = colt45
ENDIF
IF counter_create_pickup = 329
counter_create_pickup = cellphone
ENDIF
IF counter_create_pickup = 340
counter_create_pickup = chnsaw
ENDIF
IF counter_create_pickup = 354
counter_create_pickup = ak47
ENDIF
IF counter_create_pickup = 332
counter_create_pickup = golfclub
ENDIF
IF counter_create_pickup > gun_para
counter_create_pickup = gun_dildo1
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD2 DPADDOWN
WHILE IS_BUTTON_PRESSED PAD2 DPADDOWN
WAIT 0
ENDWHILE
-- counter_create_pickup
IF counter_create_pickup < gun_dildo1
counter_create_pickup = gun_para
ENDIF
IF counter_create_pickup = 329
counter_create_pickup = gun_boxbig
ENDIF
IF counter_create_pickup = 340
counter_create_pickup = katana
ENDIF
IF counter_create_pickup = 354
counter_create_pickup = mp5lng
ENDIF
IF counter_create_pickup = 332
counter_create_pickup = brassknuckle
ENDIF
IF counter_create_pickup = missile
counter_create_pickup = molotov
ENDIF
ENDIF
REMOVE_PICKUP magic_pickup
MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_pickup
IF NOT IS_MODEL_AVAILABLE counter_create_pickup
GOTO next_pickup
ENDIF
REQUEST_MODEL counter_create_pickup
PRINT_NOW LOADCAR 250 1 //"Loading vehicle, press pad2 leftshoulder1 to cancel"
LOAD_ALL_MODELS_NOW
WHILE NOT HAS_MODEL_LOADED counter_create_pickup
WAIT 0
PRINT_NOW LOADCAR 80 1 //"Loading vehicle, press pad2 leftshoulder1 to cancel"
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
GOTO next_pickup
ENDIF
ENDWHILE
z_float_m = z_float_m + 0.8
CREATE_PICKUP_WITH_AMMO counter_create_pickup PICKUP_ONCE 2000 x_float_m y_float_m z_float_m magic_pickup
CLEAR_THIS_BIG_PRINT NUMBER
PRINT_WITH_NUMBER_BIG NUMBER counter_create_pickup 500 4
MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_pickup
ENDIF
ENDIF
ENDIF
ENDIF //2 PLAYER FLAG
IF NOT IS_2PLAYER_GAME_GOING_ON
// CREATE A CAR //////////////////////////////////////////
next_carzzz:
IF NOT IS_DEBUG_CAMERA_ON
IF IS_BUTTON_PRESSED PAD2 RIGHTSTICKX
OR IS_BUTTON_PRESSED PAD2 RIGHTSTICKY
WAIT 40
GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY
IF RStickX > 100
IF initial_create_car = 1
++ counter_create_car
ENDIF
IF initial_create_car = 0
counter_create_car = landstal
initial_create_car = 1
ENDIF
initial_create_car = 1
IF counter_create_car > 611
counter_create_car = landstal
ENDIF
ENDIF
IF RStickX < -100
IF initial_create_car = 1
-- counter_create_car
ENDIF
IF initial_create_car = 0
counter_create_car = 611
initial_create_car = 1
ENDIF
initial_create_car = 1
IF counter_create_car < landstal
counter_create_car = 611
ENDIF
ENDIF
IF RStickY < -100
IF initial_create_car = 1
counter_create_car = counter_create_car + 10
ENDIF
IF initial_create_car = 0
counter_create_car = landstal
initial_create_car = 1
ENDIF
initial_create_car = 1
IF counter_create_car > 611
counter_create_car = landstal
ENDIF
IF counter_create_car = infernus
counter_create_car = voodoo
ENDIF
ENDIF
IF RStickY > 100
IF initial_create_car = 1
counter_create_car = counter_create_car - 10
ENDIF
IF initial_create_car = 0
counter_create_car = 611
initial_create_car = 1
ENDIF
initial_create_car = 1
IF counter_create_car < landstal
counter_create_car = 611
ENDIF
IF counter_create_car = infernus
counter_create_car = manana
ENDIF
ENDIF
IF NOT IS_MODEL_AVAILABLE counter_create_car
CLEAR_THIS_BIG_PRINT NUMBER
PRINT_WITH_NUMBER_BIG NUMBER counter_create_car 500 4
GOTO next_carzzz
ENDIF
IF IS_PLAYER_PLAYING player1
GET_CHAR_COORDINATES scplayer x_float_m y_float_m z_float_m
GET_CHAR_HEADING scplayer player_heading_debug
ENDIF
IF player_heading_debug < 45.0
AND player_heading_debug > 0.0
y_float_m += 5.0
debug_car_heading = 90.0
ENDIF
IF player_heading_debug < 360.0
AND player_heading_debug > 315.0
y_float_m += 5.0
debug_car_heading = 90.0
ENDIF
IF player_heading_debug < 135.0
AND player_heading_debug > 45.0
x_float_m -= 5.0
debug_car_heading = 180.0
ENDIF
IF player_heading_debug < 225.0
AND player_heading_debug > 135.0
y_float_m -= 5.0
debug_car_heading = 270.0
ENDIF
IF player_heading_debug < 315.0
AND player_heading_debug > 225.0
x_float_m += 5.0
debug_car_heading = 0.0
ENDIF
z_float_m = z_float_m + 0.6
GET_GROUND_Z_FOR_3D_COORD x_float_m y_float_m z_float_m z_float_m
IF NOT IS_PLAYER_PLAYING player1
GOTO mission_start_debug
ENDIF
IF RStickX > 100
OR RStickX < -100
OR RStickY > 100
OR RStickY < -100
IF IS_PLAYER_PLAYING player1
IF NOT IS_CAR_DEAD magic_car
IF NOT IS_CHAR_IN_CAR scplayer magic_car
DELETE_CAR magic_car
ENDIF
ENDIF
ENDIF
MARK_CAR_AS_NO_LONGER_NEEDED magic_car
MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_car
REQUEST_MODEL counter_create_car
PRINT_NOW LOADCAR 250 1 //"Loading vehicle, press pad2 leftshoulder1 to cancel"
LOAD_ALL_MODELS_NOW
WHILE NOT HAS_MODEL_LOADED counter_create_car
WAIT 0
PRINT_NOW LOADCAR 80 1 //"Loading vehicle, press pad2 leftshoulder1 to cancel"
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
GOTO next_carzzz
ENDIF
ENDWHILE
CREATE_CAR counter_create_car x_float_m y_float_m z_float_m magic_car
CLEAR_THIS_BIG_PRINT NUMBER
PRINT_WITH_NUMBER_BIG NUMBER counter_create_car 500 4
SET_CAR_HEADING magic_car debug_car_heading
//GET_CAR_COLOURS magic_car carcolour_counter1 carcolour_counter2
GET_AREA_VISIBLE debug_visible_area
SET_VEHICLE_AREA_VISIBLE magic_car debug_visible_area
LOCK_CAR_DOORS magic_car CARLOCK_UNLOCKED
MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_car
MARK_CAR_AS_NO_LONGER_NEEDED magic_car
ENDIF
WAIT 0
ENDIF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////// CREATE A CHAR //////////////////////////////////////////////////////////////////
//VAR_INT magic_ped
//VAR_INT initial_create_ped counter_create_ped
//VAR_FLOAT debug_ped_heading
//
//GOTO skip_this_ped_creater
// CREATE_CHAR PEDTYPE_CIVMALE counter_create_car x_float_m y_float_m z_float_m magic_ped
//skip_this_ped_creater:
//
// next_charzzz:
//
// IF NOT IS_DEBUG_CAMERA_ON
// IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX
// OR IS_BUTTON_PRESSED PAD2 LEFTSTICKY
//
// WAIT 40
//
// GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY
//
// IF LStickX > 100
// IF initial_create_ped = 1
// ++ counter_create_ped
// ENDIF
//
// IF initial_create_ped = 0
// counter_create_ped = 0
// initial_create_ped = 1
// ENDIF
//
// initial_create_ped = 1
//
// IF counter_create_ped > 173
// counter_create_ped = 0
// ENDIF
//
// // buggy peds
// IF counter_create_ped < 9
// counter_create_ped = 9
// ENDIF
// IF counter_create_ped = 29
// counter_create_ped = 30
// ENDIF
// IF counter_create_ped = 32
// counter_create_ped = 33
// ENDIF
// IF counter_create_ped = 36
// counter_create_ped = 37
// ENDIF
// IF counter_create_ped = 38
// counter_create_ped = 39
// ENDIF
// IF counter_create_ped = 39
// counter_create_ped = 40
// ENDIF
// IF counter_create_ped = 52
// counter_create_ped = 53
// ENDIF
// IF counter_create_ped = 56
// counter_create_ped = 57
// ENDIF
// IF counter_create_ped = 59
// counter_create_ped = 60
// ENDIF
// IF counter_create_ped = 60
// counter_create_ped = 61
// ENDIF
// IF counter_create_ped = 71
// counter_create_ped = 72
// ENDIF
// IF counter_create_ped = 72
// counter_create_ped = 73
// ENDIF
// IF counter_create_ped = 82
// counter_create_ped = 83
// ENDIF
// IF counter_create_ped = 83
// counter_create_ped = 84
// ENDIF
// IF counter_create_ped = 84
// counter_create_ped = 85
// ENDIF
//
// ENDIF
//
// IF LStickX < -100
// IF initial_create_ped = 1
// -- counter_create_ped
// ENDIF
//
// IF initial_create_ped = 0
// counter_create_ped = 173
// initial_create_ped = 1
// ENDIF
//
// initial_create_ped = 1
//
// IF counter_create_ped < 0
// counter_create_ped = 173
// ENDIF
//
// // buggy peds
// IF counter_create_ped = 84
// counter_create_ped = 83
// ENDIF
// IF counter_create_ped = 83
// counter_create_ped = 82
// ENDIF
// IF counter_create_ped = 82
// counter_create_ped = 81
// ENDIF
// IF counter_create_ped = 72
// counter_create_ped = 71
// ENDIF
// IF counter_create_ped = 71
// counter_create_ped = 70
// ENDIF
// IF counter_create_ped = 60
// counter_create_ped = 59
// ENDIF
// IF counter_create_ped = 59
// counter_create_ped = 58
// ENDIF
// IF counter_create_ped = 56
// counter_create_ped = 55
// ENDIF
// IF counter_create_ped = 52
// counter_create_ped = 51
// ENDIF
// IF counter_create_ped = 39
// counter_create_ped = 38
// ENDIF
// IF counter_create_ped = 38
// counter_create_ped = 37
// ENDIF
// IF counter_create_ped = 36
// counter_create_ped = 35
// ENDIF
// IF counter_create_ped = 32
// counter_create_ped = 31
// ENDIF
// IF counter_create_ped = 29
// counter_create_ped = 28
// ENDIF
// IF counter_create_ped < 9
// counter_create_ped = 173
// ENDIF
//
//
//
// ENDIF
//
// IF NOT IS_MODEL_AVAILABLE counter_create_ped
// CLEAR_THIS_BIG_PRINT NUMBER
// PRINT_WITH_NUMBER_BIG NUMBER counter_create_ped 500 4
// GOTO next_charzzz
// ENDIF
//
// IF IS_PLAYER_PLAYING player1
// GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS scplayer -1.0 2.0 0.0 x_float_m y_float_m z_float_m
// GET_CHAR_HEADING scplayer player_heading_debug
// ENDIF
//
// z_float_m = z_float_m + 0.6
// GET_GROUND_Z_FOR_3D_COORD x_float_m y_float_m z_float_m z_float_m
//
// IF NOT IS_PLAYER_PLAYING player1
// GOTO mission_start_debug
// ENDIF
//
// IF LStickX > 100
// OR LStickX < -100
//
// IF IS_PLAYER_PLAYING player1
// IF NOT IS_CHAR_DEAD magic_ped
// DELETE_CHAR magic_ped
// ENDIF
// ENDIF
//
// MARK_CHAR_AS_NO_LONGER_NEEDED magic_ped
// MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_ped
//
// REQUEST_MODEL counter_create_ped
// PRINT_NOW LOADCAR 250 1 //"Loading vehicle, press pad2 leftshoulder1 to cancel"
// LOAD_ALL_MODELS_NOW
//
// WHILE NOT HAS_MODEL_LOADED counter_create_ped
// WAIT 0
//
// PRINT_NOW LOADCAR 80 1 //"Loading vehicle, press pad2 leftshoulder1 to cancel"
//
// IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
// GOTO next_charzzz
// ENDIF
//
// ENDWHILE
//
// CREATE_CHAR PEDTYPE_CIVMALE counter_create_ped x_float_m y_float_m z_float_m magic_ped
// TASK_STAY_IN_SAME_PLACE magic_ped TRUE
// CLEAR_THIS_BIG_PRINT NUMBER
// PRINT_WITH_NUMBER_BIG NUMBER counter_create_ped 500 4
// debug_ped_heading = player_heading_debug - 120.0
// SET_CHAR_HEADING magic_ped debug_ped_heading
//
// MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_ped
// //MARK_CHAR_AS_NO_LONGER_NEEDED magic_ped
// ENDIF
//
//
// WAIT 0
//
// ENDIF
//
// IF NOT IS_CHAR_DEAD magic_ped
// IF NOT IS_CHAR_DEAD scplayer
// IF NOT LOCATE_CHAR_ANY_MEANS_CHAR_2D magic_ped scplayer 10.0 10.0 FALSE
// MARK_CHAR_AS_NO_LONGER_NEEDED magic_ped
// MARK_MODEL_AS_NO_LONGER_NEEDED counter_create_ped
// ENDIF
// ENDIF
// ENDIF
//
// ENDIF
// CHANGE PLAYERS CAR COLOURS //////////////////////////////////////////
IF NOT IS_BUTTON_PRESSED PAD2 CROSS
IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX
OR IS_BUTTON_PRESSED PAD2 LEFTSTICKY
GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY
IF NOT IS_CAR_DEAD magic_car
IF LStickX > 50
carcolour_counter1 ++
IF carcolour_counter1 > 126
carcolour_counter1 = 0
ENDIF
ENDIF
IF LStickX < -50
carcolour_counter1 --
IF carcolour_counter1 < 0
carcolour_counter1 = 126
ENDIF
ENDIF
IF LStickY < -50
carcolour_counter2 ++
IF carcolour_counter2 > 126
carcolour_counter2 = 0
ENDIF
ENDIF
IF LStickY > 50
carcolour_counter2 --
IF carcolour_counter2 < 0
carcolour_counter2 = 126
ENDIF
ENDIF
IF NOT IS_CAR_DEAD magic_car
CHANGE_CAR_COLOUR magic_car carcolour_counter1 carcolour_counter2
ENDIF
PRINT_WITH_2_NUMBERS_NOW ( COLOURS ) carcolour_counter1 carcolour_counter2 1000 1
WAIT 150
ENDIF
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD2 CROSS
IF IS_BUTTON_PRESSED PAD2 LEFTSTICKX
OR IS_BUTTON_PRESSED PAD2 LEFTSTICKY
GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY
IF NOT IS_CAR_DEAD magic_car
IF LStickX > 50
carcolour_counter3 ++
IF carcolour_counter3 > 126
carcolour_counter3 = 0
ENDIF
ENDIF
IF LStickX < -50
carcolour_counter3 --
IF carcolour_counter3 < 0
carcolour_counter3 = 126
ENDIF
ENDIF
IF LStickY < -50
carcolour_counter4 ++
IF carcolour_counter4 > 126
carcolour_counter4 = 0
ENDIF
ENDIF
IF LStickY > 50
carcolour_counter4 --
IF carcolour_counter4 < 0
carcolour_counter4 = 126
ENDIF
ENDIF
IF NOT IS_CAR_DEAD magic_car
//CHANGE_CAR_COLOUR magic_car carcolour_counter1 carcolour_counter2
SET_EXTRA_CAR_COLOURS magic_car carcolour_counter3 carcolour_counter4
ENDIF
PRINT_WITH_2_NUMBERS_NOW ( COLOUR2 ) carcolour_counter3 carcolour_counter4 1000 1
WAIT 150
ENDIF
ENDIF
ENDIF
ENDIF //IF NOT IS_DEBUG_CAMERA_ON
// DISPLAY WIDESCREEN MODE
IF IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER1
AND IS_BUTTON_PRESSED PAD2 CROSS
IF widscreen_flag = 0
SWITCH_WIDESCREEN ON
SET_NEAR_CLIP 0.2
DO_FADE 0 FADE_IN
widscreen_flag = 1
ELSE
SWITCH_WIDESCREEN OFF
IF IS_PLAYER_PLAYING player1
SET_PLAYER_CONTROL player1 ON
RESTORE_CAMERA
DO_FADE 0 FADE_IN
//SET_NEAR_CLIP 0.9
ENDIF
widscreen_flag = 0
ENDIF
WHILE IS_BUTTON_PRESSED PAD2 CROSS
WAIT 0
ENDWHILE
ENDIF
// CAR RECORDING
{
//IF IS_PS2_KEYBOARD_KEY_JUST_PRESSED PS2_KEY_R
//IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
//IF IS_BUTTON_PRESSED PAD1 DPADUP
//OR IS_BUTTON_PRESSED PAD1 DPADDOWN
IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL
IF IS_PLAYER_PLAYING player1
IF recording = 0
IF IS_CHAR_IN_ANY_CAR scplayer
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer record_car1
IF NOT IS_CAR_DEAD record_car1
IF IS_RECORDING_GOING_ON_FOR_CAR record_car1
STOP_RECORDING_CARS
ENDIF
recording = 1
ENDIF
ENDIF
ELSE
IF NOT IS_CAR_DEAD record_car1
IF recording = 1
IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL
WHILE IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL
WAIT 0
ENDWHILE
PRINT_NOW ( CARREC1 ) 2000 1
IF NOT IS_CAR_DEAD record_car1
START_RECORDING_CAR record_car1 0
ENDIF
WAIT 0
TIMERB = 0
recording = 2
ENDIF
ENDIF
IF recording = 2
IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL
WHILE IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_CTRL
WAIT 0
ENDWHILE
CLEAR_PRINTS
PRINT_NOW ( CARREC2 ) 2000 1
IF NOT IS_CAR_DEAD record_car1
IF IS_RECORDING_GOING_ON_FOR_CAR record_car1
STOP_RECORDING_CARS
ENDIF
ENDIF
recording = 1
ENDIF
ENDIF
ELSE
IF recording = 1
OR recording = 2
//IF NOT IS_CAR_DEAD record_car1
//IF IS_RECORDING_GOING_ON_FOR_CAR record_car1
STOP_RECORDING_CARS
//ENDIF
//ENDIF
PRINT_NOW ( CARREC2 ) 2000 1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//ENDIF
IF IS_PLAYER_PLAYING player1
IF recording = 1
OR recording = 2
IF IS_CAR_DEAD record_car1
OR NOT IS_CHAR_IN_ANY_CAR scplayer
recording = 0
//IF IS_RECORDING_GOING_ON_FOR_CAR record_car1
STOP_RECORDING_CARS
//ENDIF
PRINT_NOW ( CARREC2 ) 2000 1
ENDIF
IF recording = 2
IF NOT IS_CAR_DEAD record_car1
IF NOT IS_RECORDING_GOING_ON_FOR_CAR record_car1
recording = 0
PRINT_NOW ( CARREC2 ) 2000 1
ELSE
IF TIMERB > 1500
PRINT_NOW ( rec ) 1000 1
TIMERB = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////
ENDIF // 2 PLAYER FLAG
///////////////////////////////////////////////////////////////////////
IF NOT IS_2PLAYER_GAME_GOING_ON
IF cheat_mode_on = 1 // ONLY DO STUFF IF CHEATMODE IS ON ///
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
///////// WRITE 3D LOCATE COORDINATES TO TEMP_DEBUG.TXT ///////////////
///////////////////////////////////////////////////////////////////////
// TURN CHEAT MODE ON AND PRESS PAD1 L1 & L2 AND PAD2 CROSS TO START.//
// CONTROLS ARE ON PAD1 //
// LEFT STICK = POSITION //
// RIGHT STICK = RESIZE //
// HOLD L2 OR R2 = MAKE THE MOVEMENT/RESIZE LESS SENSITIVE. //
// HOLD L1 OR R1 = MOVE/RESIZE THE Z AXI //
// R3 = TO OUTPUT COORDS TO TEMP_DEBUG.TXT //
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
IF IS_PLAYER_PLAYING player1
IF is_stunt_jump_debug = 0
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
AND IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2
AND IS_BUTTON_PRESSED PAD2 CROSS
is_stunt_jump_debug = 1
GET_CHAR_COORDINATES scplayer stunt_jump_debug_X stunt_jump_debug_Y stunt_jump_debug_Z
SET_PLAYER_CONTROL player1 OFF
corona_x = 1.0
corona_y = 1.0
corona_z = 1.0
ENDIF
ELSE
GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
VAR_FLOAT LStickX_F LStickY_F
LStickY_F =# LStickY
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2
LStickY_F /= 5.0
ENDIF
LStickY_F /= 100.0
LStickY_F *= -1.0
stunt_jump_debug_Z += LStickY_F
ELSE
LStickX_F =# LStickX
LStickY_F =# LStickY
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2
LStickX_F /= 5.0
ENDIF
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2
LStickY_F /= 5.0
ENDIF
LStickX_F /= 100.0
LStickY_F /= 100.0
LStickY_F *= -1.0
stunt_jump_debug_X += LStickX_F
stunt_jump_debug_Y += LStickY_F
ENDIF
IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER1
RStickY_F =# RStickY
IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER2
RStickY_F /= 5.0
ENDIF
RStickY_F /= 100.0
RStickY_F *= -1.0
corona_z += RStickY_F
ELSE
RStickX_F =# RStickX
RStickY_F =# RStickY
IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER2
RStickX_F /= 5.0
ENDIF
IF IS_BUTTON_PRESSED PAD1 RIGHTSHOULDER2
RStickY_F /= 5.0
ENDIF
RStickX_F /= 100.0
RStickY_F /= 100.0
RStickY_F *= -1.0
corona_x += RStickX_F
corona_y += RStickY_F
ENDIF
IF LOCATE_CHAR_ANY_MEANS_3D scplayer stunt_jump_debug_X stunt_jump_debug_Y stunt_jump_debug_Z corona_x corona_y corona_z 0
ENDIF
IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
IF is_rightshock_pressed = 0
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_FLOAT_TO_DEBUG_FILE stunt_jump_debug_X
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_FLOAT_TO_DEBUG_FILE stunt_jump_debug_Y
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_FLOAT_TO_DEBUG_FILE stunt_jump_debug_Z
SAVE_NEWLINE_TO_DEBUG_FILE
SAVE_FLOAT_TO_DEBUG_FILE corona_x
SAVE_FLOAT_TO_DEBUG_FILE corona_y
SAVE_FLOAT_TO_DEBUG_FILE corona_z
SAVE_NEWLINE_TO_DEBUG_FILE
PRINT_NOW TEXXYZ3 800 1 // Writing coordinates to file...
is_rightshock_pressed = 1
ENDIF
ELSE
IF is_rightshock_pressed = 1
is_rightshock_pressed = 0
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD1 LEFTSHOULDER1
AND IS_BUTTON_PRESSED PAD1 LEFTSHOULDER2
AND IS_BUTTON_PRESSED PAD2 CROSS
SET_PLAYER_CONTROL player1 ON
is_stunt_jump_debug = 0
ENDIF
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
ELSE //IS DEBUG OFF
/*
/// FORCE WEATHER /////////////////////////////////////////////////////
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER2
OR IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER2
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER2
weather_crap ++
IF weather_crap > 23
weather_crap = 0
ENDIF
GOTO change_the_weather_cycle
ENDIF
IF IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER2
AND IS_BUTTON_PRESSED PAD2 CROSS
weather_crap --
IF weather_crap < 0
weather_crap = 23
ENDIF
GOTO change_the_weather_cycle
ENDIF
GOTO mission_start_debug
change_the_weather_cycle:
IF weather_crap = 0
RELEASE_WEATHER
PRINT_NOW ( WEATH0 ) 1000 1 //CHEAT MODE ON //WEATHER_SUNNY_SMOG
WAIT 300
ENDIF
IF weather_crap = 1
FORCE_WEATHER_NOW WEATHER_SUNNY_LA
PRINT_NOW ( WEATH1 ) 1000 1 //CHEAT MODE ON
WAIT 300
ENDIF
IF weather_crap = 2
FORCE_WEATHER_NOW WEATHER_CLOUDY_LA
PRINT_NOW ( WEATH2 ) 1000 1 //CHEAT MODE ON
WAIT 300
ENDIF
IF weather_crap = 3
FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_LA
PRINT_NOW ( WEATH3 ) 1000 1 //CHEAT MODE ON
WAIT 300
ENDIF
IF weather_crap = 4
FORCE_WEATHER_NOW WEATHER_SUNNY_SMOG_LA
PRINT_NOW ( WEATH4 ) 1000 1 //CHEAT MODE ON
WAIT 300
ENDIF
IF weather_crap = 5
FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_SMOG_LA
PRINT_NOW ( WEATH5 ) 1000 1 //CHEAT MODE ON
WAIT 300
ENDIF
IF weather_crap = 6
FORCE_WEATHER_NOW WEATHER_RAINY_COUNTRYSIDE
PRINT_NOW ( WEATH6 ) 1000 1 //CHEAT MODE ON //WEATHER_SUNNY_SMOG
WAIT 300
ENDIF
IF weather_crap = 7
FORCE_WEATHER_NOW WEATHER_CLOUDY_COUNTRYSIDE
PRINT_NOW ( WEATH7 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRASUNNY_SMOG
WAIT 300
ENDIF
IF weather_crap = 8
FORCE_WEATHER_NOW WEATHER_SUNNY_COUNTRYSIDE
PRINT_NOW ( WEATH8 ) 1000 1 //CHEAT MODE ON //WEATHER_SANDSTORM
WAIT 300
ENDIF
IF weather_crap = 9
FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_COUNTRYSIDE
PRINT_NOW ( WEATH9 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 10
FORCE_WEATHER_NOW WEATHER_FOGGY_SF
PRINT_NOW ( WEATH10 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 11
FORCE_WEATHER_NOW WEATHER_SUNNY_SF
PRINT_NOW ( WEATH11 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 12
FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_SF
PRINT_NOW ( WEATH12 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 13
FORCE_WEATHER_NOW WEATHER_CLOUDY_SF
PRINT_NOW ( WEATH13 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 14
FORCE_WEATHER_NOW WEATHER_RAINY_SF
PRINT_NOW ( WEATH14 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 15
FORCE_WEATHER_NOW WEATHER_SANDSTORM_DESERT
PRINT_NOW ( WEATH15 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 16
FORCE_WEATHER_NOW WEATHER_SUNNY_DESERT
PRINT_NOW ( WEATH16 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 17
FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_DESERT
PRINT_NOW ( WEATH17 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 18
FORCE_WEATHER_NOW WEATHER_SUNNY_VEGAS
PRINT_NOW ( WEATH18 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 19
FORCE_WEATHER_NOW WEATHER_EXTRASUNNY_VEGAS
PRINT_NOW ( WEATH19 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 20
FORCE_WEATHER_NOW WEATHER_CLOUDY_VEGAS
PRINT_NOW ( WEATH20 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS
WAIT 300
ENDIF
IF weather_crap = 21
FORCE_WEATHER_NOW WEATHER_EXTRACOLOURS_1
PRINT_NOW ( WEATH21 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS1
WAIT 300
ENDIF
IF weather_crap = 22
FORCE_WEATHER_NOW WEATHER_EXTRACOLOURS_2
PRINT_NOW ( WEATH22 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS2
WAIT 300
ENDIF
IF weather_crap = 23
FORCE_WEATHER_NOW WEATHER_UNDERWATER
PRINT_NOW ( WEATH23 ) 1000 1 //CHEAT MODE ON //WEATHER_EXTRACOLOURS2
WAIT 300
ENDIF
IF NOT IS_PLAYER_PLAYING player1
GOTO mission_start_debug
ENDIF
WHILE IS_BUTTON_PRESSED PAD2 LEFTSHOULDER2
OR IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER2
WAIT 0
ENDWHILE
ENDIF
*/
ENDIF
ENDIF // 2 PLAYER FLAG
///////////////////////////////////////////////////////////////////////
/// WRITE PLAYER COORDS TO TEMP_DEBUG.TXT /////////////////////////////
IF IS_PLAYER_PLAYING player1
IF NOT IS_DEBUG_CAMERA_ON
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
AND text_button_pressed = 0
GET_CHAR_COORDINATES scplayer text_x text_y text_z
GET_GROUND_Z_FOR_3D_COORD text_x text_y text_z text_z
GET_CHAR_HEADING scplayer text_h
SAVE_FLOAT_TO_DEBUG_FILE text_x
SAVE_FLOAT_TO_DEBUG_FILE text_y
SAVE_FLOAT_TO_DEBUG_FILE text_z
SAVE_FLOAT_TO_DEBUG_FILE text_h
SAVE_NEWLINE_TO_DEBUG_FILE
IF NOT IS_2PLAYER_GAME_GOING_ON
PRINT_NOW TEXXYZ1 1000 1 // Writing coordinates to file...
ENDIF
text_button_pressed = 1
ENDIF
IF NOT IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
AND text_button_pressed = 1
text_button_pressed = 0
ENDIF
///////////////////////////////////////////////////////////////////////
/// WRITE DEBUG CAMERA COORDS TO TEMP_DEBUG.TXT ///////////////////////
ELSE
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
AND repeat_button_press = 0
IF NOT IS_2PLAYER_GAME_GOING_ON
PRINT_NOW TEXXYZ2 1000 1 // Writing coordinates to file...
ENDIF
GET_CHAR_COORDINATES scplayer text_x text_y text_z
GET_GROUND_Z_FOR_3D_COORD text_x text_y text_z text_z
GET_CHAR_HEADING scplayer text_h
SAVE_FLOAT_TO_DEBUG_FILE text_x
SAVE_FLOAT_TO_DEBUG_FILE text_y
SAVE_FLOAT_TO_DEBUG_FILE text_z
SAVE_FLOAT_TO_DEBUG_FILE text_h
SAVE_NEWLINE_TO_DEBUG_FILE
GET_DEBUG_CAMERA_COORDINATES text_x text_y text_z
SAVE_FLOAT_TO_DEBUG_FILE text_x
SAVE_FLOAT_TO_DEBUG_FILE text_y
SAVE_FLOAT_TO_DEBUG_FILE text_z
GET_DEBUG_CAMERA_POINT_AT text_x text_y text_z
SAVE_FLOAT_TO_DEBUG_FILE text_x
SAVE_FLOAT_TO_DEBUG_FILE text_y
SAVE_FLOAT_TO_DEBUG_FILE text_z
SAVE_NEWLINE_TO_DEBUG_FILE
repeat_button_press = 1
ENDIF
IF NOT IS_BUTTON_PRESSED PAD2 LEFTSHOULDER2
IF repeat_button_press = 1
repeat_button_press = 0
ENDIF
ENDIF
ENDIF
ENDIF
///////////////////////////////////////////////////////////////////////
// ********************************************************************************************************************
// MISSION SKIP *******************************************************************************************************
IF NOT IS_2PLAYER_GAME_GOING_ON
IF IS_PLAYER_PLAYING player1
IF GET_MISSION_PAGE MissionPage
IF MissionPage >= 0
is_player_in_mission_menu1 = 1
last_mission_debug_page = -2
mission_debug_page = MissionPage - 1
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD2 RIGHTSHOCK
OR is_player_in_mission_menu1 = 1
IF NOT is_player_in_mission_menu1 = 0
WHILE IS_BUTTON_PRESSED PAD2 RIGHTSHOCK
WAIT 0
ENDWHILE
ENDIF
USE_TEXT_COMMANDS TRUE
is_player_in_mission_menu1 = 1
WHILE is_player_in_mission_menu1 = 1
WAIT 0
GOSUB debug_menu_text
GOSUB check_mission_debug_pad
GOSUB check_mission_debug_pad2
GOSUB check_mission_debug_pad3
GOSUB quit_out_of_mission_debug
IF IS_BUTTON_PRESSED PAD2 CROSS
OR DO_MISSION_SKIP mission_debug_page button_pressed_main
IF mission_debug_page = 0
GOSUB debug_page1
GOSUB load_and_warp_player
ENDIF
IF mission_debug_page = 1
GOSUB debug_page2
GOSUB load_and_warp_player
ENDIF
IF mission_debug_page = 2
GOSUB debug_page6
GOSUB load_and_warp_player
ENDIF
IF mission_debug_page = 3
GOSUB debug_page3
cut_doesnt_have_text = 0
GOSUB Start_cutscene
ENDIF
IF mission_debug_page = 4
GOSUB debug_page4
cut_doesnt_have_text = 0
GOSUB Start_cutscene
ENDIF
IF mission_debug_page = 5
GOSUB debug_page5
cut_doesnt_have_text = 1
GOSUB Start_cutscene
ENDIF
ENDIF
ENDWHILE
ENDIF
ENDIF
ENDIF
// --- AUDIO DEBUG
IF IS_PS2_KEYBOARD_KEY_PRESSED PS2_KEY_F1
IF iAudioDebug = 0
START_NEW_SCRIPT Audio_debug
iAudioDebug = 1
ENDIF
ENDIF
GOTO mission_start_debug
MISSION_END
}
{
load_and_warp_player:
IF IS_PLAYER_PLAYING player1
IF change_area_code = 1
SET_AREA_VISIBLE 12
SET_CHAR_AREA_VISIBLE scplayer 12
ELSE
SET_CHAR_AREA_VISIBLE scplayer 0
SET_AREA_VISIBLE 0
ENDIF
IF change_area_code = 2
SET_AREA_VISIBLE 10
SET_CHAR_AREA_VISIBLE scplayer 10
ENDIF
IF change_area_code = 3
SET_AREA_VISIBLE 3
SET_CHAR_AREA_VISIBLE scplayer 3
ENDIF
IF change_area_code = 4
SET_AREA_VISIBLE 1
SET_CHAR_AREA_VISIBLE scplayer 1
ENDIF
IF change_area_code = 5
SET_AREA_VISIBLE 17
SET_CHAR_AREA_VISIBLE scplayer 17
ENDIF
change_area_code = 0
LOAD_SCENE goto_thereX goto_thereY goto_thereZ
IF IS_CHAR_IN_ANY_CAR scplayer
WARP_CHAR_FROM_CAR_TO_COORD scplayer goto_thereX goto_thereY goto_thereZ
ELSE
SET_CHAR_COORDINATES scplayer goto_thereX goto_thereY goto_thereZ
ENDIF
SET_CHAR_HEADING scplayer debug_heading
SET_CAMERA_BEHIND_PLAYER
is_player_in_mission_menu1 = 0
last_mission_debug_page = -1
ENDIF
RETURN
Start_cutscene:
IF IS_PLAYER_PLAYING player1
DO_FADE 1000 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
IF cut_doesnt_have_text = 0
LOAD_MISSION_TEXT $cuttext
ENDIF
SET_AREA_VISIBLE visible_area
LOAD_CUTSCENE $new_cut
WHILE NOT HAS_CUTSCENE_LOADED
WAIT 0
ENDWHILE
IF $new_cut = DATE1AP
OR $new_cut = DATE1BP
OR $new_cut = DATE1AB
OR $new_cut = DATE1BB
GET_AREA_VISIBLE debug_visible_area
IF IS_PLAYER_PLAYING player1
IF debug_visible_area = 5
SET_EXTRA_COLOURS 4 FALSE
SET_CUTSCENE_OFFSET 370.0 -125.0 1001.52
SET_CHAR_COORDINATES scplayer 370.0 -125.0 1001.52
LOAD_SCENE 370.0 -125.0 1001.52
ELSE
SET_EXTRA_COLOURS 4 FALSE
SET_CUTSCENE_OFFSET 367.891 -67.591 1001.516
SET_CHAR_COORDINATES scplayer 367.891 -67.591 1001.516
LOAD_SCENE 367.891 -67.591 1001.516
ENDIF
ENDIF
GOTO skip_offset_bit
ENDIF
IF $new_cut = DATE2A
OR $new_cut = DATE2B
SET_EXTRA_COLOURS 4 FALSE
ENDIF
IF $new_cut = DATE3A
OR $new_cut = DATE3B
SET_EXTRA_COLOURS 4 FALSE
ENDIF
IF $new_cut = DATE4A
OR $new_cut = DATE4B
SET_EXTRA_COLOURS 4 FALSE
ENDIF
IF $new_cut = DATE5AB
OR $new_cut = DATE5BB
OR $new_cut = DATE5AT
OR $new_cut = DATE5BT
GET_AREA_VISIBLE debug_visible_area
IF IS_PLAYER_PLAYING player1
IF debug_visible_area = 6
SET_EXTRA_COLOURS 4 FALSE
SET_CUTSCENE_OFFSET 441.871 -60.839 1000.675
SET_CHAR_COORDINATES scplayer 441.871 -60.839 1000.675
LOAD_SCENE 441.871 -60.839 1000.675
ELSE
SET_EXTRA_COLOURS 4 FALSE
SET_CUTSCENE_OFFSET 445.381 -14.147 1001.731
SET_CHAR_COORDINATES scplayer 445.381 -14.147 1001.731
LOAD_SCENE 445.381 -14.147 1001.731
ENDIF
ENDIF
GOTO skip_offset_bit
ENDIF
IF $new_cut = DATE6A1
OR $new_cut = DATE6B1
OR $new_cut = DATE6A2
OR $new_cut = DATE6B2
GET_AREA_VISIBLE debug_visible_area
IF IS_PLAYER_PLAYING player1
IF debug_visible_area = 17
SET_EXTRA_COLOURS 5 FALSE
SET_CUTSCENE_OFFSET 498.536 -18.2 1000.651
SET_CHAR_COORDINATES scplayer 498.536 -18.2 1000.651
LOAD_SCENE 498.536 -18.2 1000.651
ELSE
SET_EXTRA_COLOURS 6 FALSE
SET_CUTSCENE_OFFSET 490.718 -79.168 998.76
SET_CHAR_COORDINATES scplayer 490.718 -79.168 998.76
LOAD_SCENE 490.718 -79.168 998.76
ENDIF
ENDIF
GOTO skip_offset_bit
ENDIF
GET_CUTSCENE_OFFSET cut_offsetX cut_offsetY cut_offsetZ
cut_offsetZ = cut_offsetZ + 5.0
IF IS_PLAYER_PLAYING player1
SET_CHAR_COORDINATES scplayer cut_offsetX cut_offsetY cut_offsetZ
LOAD_SCENE cut_offsetX cut_offsetY cut_offsetZ
ENDIF
skip_offset_bit:
START_CUTSCENE
DO_FADE 1000 FADE_IN
WHILE NOT HAS_CUTSCENE_FINISHED
WAIT 0
ENDWHILE
CLEAR_CUTSCENE
CLEAR_EXTRA_COLOURS FALSE
DO_FADE 0 FADE_OUT
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
SET_AREA_VISIBLE 0
DO_FADE 1000 FADE_IN
WHILE GET_FADING_STATUS
WAIT 0
ENDWHILE
ENDIF
RETURN
check_mission_debug_pad:
GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY
IF GET_MISSION_NUM MissionNum
IF MissionNum >= 0
button_pressed_main = MissionNum
IF button_pressed_main > 0
//Turn on all shops on skip
SWITCH_ENTRY_EXIT ammun1 TRUE
SWITCH_ENTRY_EXIT ammun2 TRUE
SWITCH_ENTRY_EXIT ammun3 TRUE
SWITCH_ENTRY_EXIT ammun4 TRUE
SWITCH_ENTRY_EXIT ammun5 TRUE
SWITCH_ENTRY_EXIT barbers TRUE
SWITCH_ENTRY_EXIT barber2 TRUE
SWITCH_ENTRY_EXIT barber3 TRUE
SWITCH_ENTRY_EXIT FDpiza TRUE
SWITCH_ENTRY_EXIT fdchick TRUE
SWITCH_ENTRY_EXIT fdburg TRUE
SWITCH_ENTRY_EXIT tattoo TRUE
SWITCH_ENTRY_EXIT cschp TRUE
SWITCH_ENTRY_EXIT cssprt TRUE
SWITCH_ENTRY_EXIT lacs1 TRUE
SWITCH_ENTRY_EXIT clothgp TRUE
SWITCH_ENTRY_EXIT csdesgn TRUE
SWITCH_ENTRY_EXIT csexl TRUE
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
flag_mob_la1[6] = 1 // force activate entries in main
//not allowed to to go into the pleasure domes unless on mission [Ice Cold Killa]
//SWITCH_ENTRY_EXIT PDOMES TRUE
//SWITCH_ENTRY_EXIT PDOMES2 TRUE
SWITCH_ENTRY_EXIT MADDOGS TRUE
SWITCH_ENTRY_EXIT MDDOGS TRUE
//do debug stuff found in main.sc
IF launch_shit_for_debug_build = 0
START_NEW_SCRIPT cell_phone_random
SET_INT_STAT CITIES_PASSED 3
//LAUNCH_MISSION debug.sc //FOR DEBUG BUILD!!!!!!
//LAUNCH_MISSION designtools.sc //FOR DEBUG BUILD!!!!!!!!
REMOVE_IPL Barriers1
REMOVE_IPL Barriers2
SWITCH_ENTRY_EXIT cschp TRUE //BINCO //LA
SWITCH_ENTRY_EXIT cssprt TRUE //PROLAPS //LA
SWITCH_ENTRY_EXIT lacs1 TRUE //SUBURBAN //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2070.2703 -1791.0918 17.1484 RADAR_SPRITE_BARBERS barber_shop1 //Barbers
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2107.6243 -1807.5155 21.2114 RADAR_SPRITE_PIZZA food_shop1 //Pizza
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2243.8069 -1668.5667 20.0313 RADAR_SPRITE_TSHIRT clothes_shop1 //Clothes
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2376.4, 909.2, 45.4 RADAR_SPRITE_TSHIRT clothes_blips[6] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1654.0, 1733.4, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[7] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2105.7, 2257.4, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[8] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2371.1, 910.2, 47.2 RADAR_SPRITE_TSHIRT clothes_blips[14] //CSCHP //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 501.7, -1358.5, 16.4 RADAR_SPRITE_TSHIRT clothes_blips[9] //CSSPRT //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2818.6, 2401.5, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[10] //CSSPRT //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2112.8, -1214.7, 23.9 RADAR_SPRITE_TSHIRT clothes_blips[4] //LACS1 //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2772.0, 2447.6, 11.0 RADAR_SPRITE_TSHIRT clothes_blips[5] //LACS1 //LA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2489.0, -26.9, 32.6 RADAR_SPRITE_TSHIRT clothes_blips[16] //LACS1 //LA
added_all_clothes_blips_before = 1
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 822.6, -1590.3, 13.5 RADAR_SPRITE_BARBERS barbers_blips[0] //BARBER2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2570.1, 245.4, 10.3 RADAR_SPRITE_BARBERS barbers_blips[1] //BARBERS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2726.6, -2026.4, 17.5 RADAR_SPRITE_BARBERS barbers_blips[2] //BARBERS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2080.3, 2119.0, 10.8 RADAR_SPRITE_BARBERS barbers_blips[3] //BARBER2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 675.7, -496.6, 16.8 RADAR_SPRITE_BARBERS barbers_blips[4] //BARBERS
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1805.7, 943.2, 24.8 RADAR_SPRITE_PIZZA pizza_blips[0] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2750.9, 2470.9, 11.0 RADAR_SPRITE_PIZZA pizza_blips[1] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2351.8, 2529.0, 10.8 RADAR_SPRITE_PIZZA pizza_blips[2] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2635.5, 1847.4, 11.0 RADAR_SPRITE_PIZZA pizza_blips[3] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2083.4, 2221.0, 11.0 RADAR_SPRITE_PIZZA pizza_blips[4] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1719.1, 1359.4, 8.6 RADAR_SPRITE_PIZZA pizza_blips[5] //FDPIZA
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2330.2, 75.2, 31.0 RADAR_SPRITE_PIZZA pizza_blips[6] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 203.2, -200.4, 6.5 RADAR_SPRITE_PIZZA pizza_blips[7] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 812.9, -1616.1, 13.6 RADAR_SPRITE_BURGERSHOT burger_blips[0] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1199.1, -924.0, 43.3 RADAR_SPRITE_BURGERSHOT burger_blips[1] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2362.2, 2069.9, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[2] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2469.5, 2033.8, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[3] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2172.9, 2795.7, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[4] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1875.3, 2072.0, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[5] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1161.5, 2072.0, 10.8 RADAR_SPRITE_BURGERSHOT burger_blips[6] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2356.0, 1009.0, 49.0 RADAR_SPRITE_BURGERSHOT burger_blips[7] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1913.3, 826.2, 36.9 RADAR_SPRITE_BURGERSHOT burger_blips[8] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2335.6, -165.6, 39.5 RADAR_SPRITE_BURGERSHOT burger_blips[9] //FDBURG
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2397.8, -1895.6, 13.7 RADAR_SPRITE_CHICKEN chicken_blips[0] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2421.6, -1509.6, 24.1 RADAR_SPRITE_CHICKEN chicken_blips[1] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2671.6, 257.4, 4.6 RADAR_SPRITE_CHICKEN chicken_blips[2] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2392.4, 2046.5, 10.8 RADAR_SPRITE_CHICKEN chicken_blips[3] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2844.5, 2401.1, 11.0 RADAR_SPRITE_CHICKEN chicken_blips[4] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2635.5, 1674.3, 11.0 RADAR_SPRITE_CHICKEN chicken_blips[5] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2105.7, 2228.7, 11.0 RADAR_SPRITE_CHICKEN chicken_blips[6] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2154.0, -2461.2, 30.8 RADAR_SPRITE_CHICKEN chicken_blips[7] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1816.2 620.8 37.5 RADAR_SPRITE_CHICKEN chicken_blips[8] //FDCHICK
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1216.0, 1831.4, 45.3 RADAR_SPRITE_CHICKEN chicken_blips[9] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 172.73, 1176.76, 13.7 RADAR_SPRITE_CHICKEN chicken_blips[10] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 932.0, -1353.0, 14.0 RADAR_SPRITE_CHICKEN chicken_blips[11] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1971.7, -2036.6, 13.5 RADAR_SPRITE_TATTOO tattoo_blips[0] //TATTOO
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2071.6, -1779.9, 13.5 RADAR_SPRITE_TATTOO tattoo_blips[1] //TATTOO
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2094.6, 2119.0, 10.8 RADAR_SPRITE_TATTOO tattoo_blips[2] //TATTOO
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2490.5, -40.1, 39.3 RADAR_SPRITE_TATTOO tattoo_blips[3] //TATTOO
added_all_food_blips_before = 1
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 1372.9 -1278.8 12.5 RADAR_SPRITE_GUN weapon_shop1_blip
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2400.5 -1978.4 13.5 RADAR_SPRITE_GUN ammu_shop_blip[0] //AMMUN3
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2626.6 209.4 4.9 RADAR_SPRITE_GUN ammu_shop_blip[1] //AMMUN1
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2535.9 2083.5 10.8 RADAR_SPRITE_GUN ammu_shop_blip[2] //AMMUN2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2156.5 943.2 10.8 RADAR_SPRITE_GUN ammu_shop_blip[3] //AMMUN2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 779.7 1874.3 4.9 RADAR_SPRITE_GUN ammu_shop_blip[4] //AMMUN3
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -2092.7 -2463.8 30.6 RADAR_SPRITE_GUN ammu_shop_blip[5] //AMMUN3
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 240.0 -178.2 2.0 RADAR_SPRITE_GUN ammu_shop_blip[6] //AMMUN2
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -1509.4, 2611.8, 58.5 RADAR_SPRITE_GUN ammu_shop_blip[7] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD -315.67, 829.87, 13.43 RADAR_SPRITE_GUN ammu_shop_blip[8] //NEW!!!!!!!!!
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD 2332.9, 63.6, 31.0, RADAR_SPRITE_GUN ammu_shop_blip[9] //NEW!!!!!!!!!
SET_CLOSEST_ENTRY_EXIT_FLAG propertyX[2] propertyY[2] 10.0 ENTRYEXITS_FLAG_ENABLED TRUE
ACTIVATE_GARAGE dhangar //Hanger
add_all_ammu_blips = 1
DISPLAY_ZONE_NAMES TRUE
launch_shit_for_debug_build = 1
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD2 DPADDOWN
OR LStickY > 10
TIMERB = 0
WHILE TIMERB < 70
WAIT 0
GOSUB debug_menu_text
ENDWHILE
button_pressed_main ++
IF mission_debug_page = 0
IF button_pressed_main > 83 //MISSIONS
button_pressed_main = 0
ENDIF
ENDIF
IF mission_debug_page = 1
IF button_pressed_main > 15 //MISSIONS
button_pressed_main = 0
ENDIF
ENDIF
IF mission_debug_page = 2
IF button_pressed_main > 82 //ODDJOBS
button_pressed_main = 0
ENDIF
ENDIF
IF mission_debug_page = 3
IF button_pressed_main > 83 //CUTSCENES
button_pressed_main = 0
ENDIF
ENDIF
IF mission_debug_page = 4
IF button_pressed_main > 74 //CUTSCENES
button_pressed_main = 0
ENDIF
ENDIF
IF mission_debug_page = 5
IF button_pressed_main > 22 //CUTSCENES
button_pressed_main = 0
ENDIF
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD2 DPADUP
OR LStickY < -10
TIMERB = 0
WHILE TIMERB < 70
WAIT 0
GOSUB debug_menu_text
ENDWHILE
button_pressed_main --
IF mission_debug_page = 0
IF button_pressed_main < 0
button_pressed_main = 83 //MISSIONS
ENDIF
ENDIF
IF mission_debug_page = 1
IF button_pressed_main < 0
button_pressed_main = 15 //MISSIONS
ENDIF
ENDIF
IF mission_debug_page = 2
IF button_pressed_main < 0
button_pressed_main = 82 //ODDJOBS
ENDIF
ENDIF
IF mission_debug_page = 3
IF button_pressed_main < 0
button_pressed_main = 83 //CUTSCENES
ENDIF
ENDIF
IF mission_debug_page = 4
IF button_pressed_main < 0
button_pressed_main = 74 //CUTSCENES
ENDIF
ENDIF
IF mission_debug_page = 5
IF button_pressed_main < 0
button_pressed_main = 22 //CUTSCENES
ENDIF
ENDIF
ENDIF
RETURN
check_mission_debug_pad2:
GET_POSITION_OF_ANALOGUE_STICKS PAD2 LStickX LStickY RStickX RStickY
IF IS_BUTTON_PRESSED PAD2 DPADRIGHT
OR LStickX > 10
TIMERB = 0
WHILE TIMERB < 70
WAIT 0
GOSUB debug_menu_text
ENDWHILE
button_pressed_main = button_pressed_main + 28
//which_debug_row ++
//IF which_debug_row > 2
// which_debug_row = 0
//ENDIF
IF mission_debug_page = 0
IF button_pressed_main > 83
button_pressed_main -= 84 //MISSIONS
ENDIF
ENDIF
IF mission_debug_page = 1
IF button_pressed_main > 15
button_pressed_main = 0 //MISSIONS
ENDIF
ENDIF
IF mission_debug_page = 2
IF button_pressed_main > 82
button_pressed_main = 0 //ODDJOBS
ENDIF
ENDIF
IF mission_debug_page = 3
IF button_pressed_main > 83
button_pressed_main -= 84 //CUTSCENES
ENDIF
ENDIF
IF mission_debug_page = 4
IF button_pressed_main > 74
button_pressed_main = 0 //CUTSCENES
ENDIF
ENDIF
IF mission_debug_page = 5
IF button_pressed_main > 22
button_pressed_main = 0 //CUTSCENES
ENDIF
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD2 DPADLEFT
OR LStickX < -10
TIMERB = 0
WHILE TIMERB < 70
WAIT 0
GOSUB debug_menu_text
ENDWHILE
button_pressed_main = button_pressed_main - 28
//which_debug_row --
//IF which_debug_row < 0
// which_debug_row = 2
//ENDIF
IF mission_debug_page = 0
IF button_pressed_main < 0
button_pressed_main += 84 //MISSIONS
ENDIF
ENDIF
IF mission_debug_page = 1
IF button_pressed_main < 0
button_pressed_main = 15 //MISSIONS
ENDIF
ENDIF
IF mission_debug_page = 2
IF button_pressed_main < 0
button_pressed_main = 82 //ODDJOBS
ENDIF
ENDIF
IF mission_debug_page = 3
IF button_pressed_main < 0
button_pressed_main += 84 //CUTSCENES
ENDIF
ENDIF
IF mission_debug_page = 4
IF button_pressed_main < 0
button_pressed_main = 74 //CUTSCENES
ENDIF
ENDIF
IF mission_debug_page = 5
IF button_pressed_main < 0
button_pressed_main = 22 //CUTSCENES
ENDIF
ENDIF
ENDIF
RETURN
check_mission_debug_pad3:
IF GET_MISSION_PAGE MissionPage
IF MissionPage >= 0
mission_debug_page = MissionPage
ENDIF
ENDIF
IF IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER1
WHILE IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER1
WAIT 0
GOSUB debug_menu_text
ENDWHILE
mission_debug_page ++
IF mission_debug_page > 5
mission_debug_page = 0
ENDIF
button_pressed_main = 0
ENDIF
IF IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
WHILE IS_BUTTON_PRESSED PAD2 LEFTSHOULDER1
WAIT 0
GOSUB debug_menu_text
ENDWHILE
mission_debug_page --
IF mission_debug_page < 0
mission_debug_page = 5
ENDIF
button_pressed_main = 0
ENDIF
RETURN
}
{
setup_mission_cheats:
TEXT_POS_X = 20.0
//Mission Jump Page 1
DISPLAY_TEXT_WIDGET 0.0 1.0 INTRO_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y INTRO_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y INTRO_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET1B
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CRASH_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CRASH_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CRASH_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RYDER_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RYDER_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RYDER_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CESAR_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y LA1FIN1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y LA1FIN2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCRASH1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRUTH_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRUTH_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCESAR4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCES4_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCESAR2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GAR_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GAR_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SCRA_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SCRA_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WUZI_1 //WUZI 1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_4 //WUZI 3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_5 //WUZI 4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WUZI_2 //WUZI 5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WUZI_4 //WUZI 7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_1 //Syndicate 1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_2 //Syndicate 2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_2 //Syndicate 3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_3 //Syndicate 4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_3 //Syndicate 5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_4 //Syndicate 6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_5 //Syndicate 7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_6 //Syndicate 8
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_7 //Syndicate 9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ZERO_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ZERO_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ZERO_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRACE_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT8
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESER10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASEEN2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASIN10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y VCRASH1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y VCRASH2
//Mission Jump Page 2
DISPLAY_TEXT_WIDGET 0.0 2.0 DOC_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DOC_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GROVE_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GROVE_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RIOT_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RIOT_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RIOT_4
//Oddjob Jump (Page 3)
DISPLAY_TEXT_WIDGET 0.0 3.0 GYM1_A
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GYM1_A //"GYM"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GYM1_B //"GYM"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GYM1_C //"GYM"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CHICN //"Chicken drive through"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BURGERS //"BURGER SHOP"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PIZZAS //"PIZZA SHOP"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CLOTHES //"LA Clothes Shop"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BARBER //"Barber Shop"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y AMMULA //"LA AmmuNation"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CARDB1 //"Car Mods"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CARDB2 //"Car Mods2"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ROUL //"roulette"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SLOTM //"Slot machine"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WHEELO //wheel of fortune
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BJACK //black jack
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y OTB //"OTB"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y POOL //"Pool"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BBALL //"basket ball"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y LOWR //"lowrider"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CONS1 //"Console game 1"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y QUARRY //Quarry
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRUCK //Trucking
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BLOOD //Blood ring
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MOUNTN //"Mountian bike"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PIMP //PIMP
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BIKES //Bike school
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BOATS //Boat school
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y COUR1 //CourierLA
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y COUR2 //CourierSF
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y COUR3 //CourierLV
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FREIGH //Frieght Train
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BURG //Burglary
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y KICK //Kickstart
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y VALET //VALET
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SF_MODS //San Fran PP mods
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y IMPEXP //Import Export
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BMXODD //BMX
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DANCEOD //DANCING
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HOTRING //HOTRING
/*
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY1 //"2 Player 4"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY2 //"2 Player 8"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY3 //"2 Player 9"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY4 //"2 Player 10"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY5 //"2 Player 11"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY6 //"2 Player 12"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY7 //"2 Player 9"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY8 //"2 Player 10"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY9 //"2 Player 11"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY10 //"2 Player 12"
*/
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BOTTY //"Triathalon"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP3 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP4 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP5 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP6 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP7 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP8 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP9 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP10 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP11 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP12 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP13 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP14 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP15 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP16 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP17 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP18 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP19 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP20 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP21 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP22 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP23 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP24 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP25 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP26 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP27 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP28 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP29 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP30 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP31 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET1 //"RACETOUR"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET2 //"RACETOUR"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET3 //"RACETOUR"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET4 //"RACETOUR"
//Cutscenes 1 (page 4)
DISPLAY_TEXT_WIDGET 0.0 4.0 CUT01
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT01
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT02
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT03
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT04
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT05
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT06
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT07
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT08
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT09
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT11
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT12
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT13
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT14
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT15
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT16
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT17
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT18
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT19
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT20
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT21
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT22
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT23
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT24
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT25
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT26
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT27
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT28
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT29
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT29
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT30
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT31
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT32
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT33
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT34
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT35
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT36
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT37
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT38
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT39
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT40
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT41
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT42
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT43
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT44
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT45
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT46
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT47
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT48
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT49
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT50
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT52
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT54
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT55
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT56
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT57
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT60
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT61
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT62
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT63
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT64
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT65
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT66
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT67
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT69
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT70
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT71
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT72
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT74
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT75
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT76
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT77
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT78
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT79
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT80
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT81
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT82
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT83
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT84
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT86
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT87
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT88
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT89
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT90
//Cutscenes 2 (page 5)
DISPLAY_TEXT_WIDGET 0.0 5.0 CUT91
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT91
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT92
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT94
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT95
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT96
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT97
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT98
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT83
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT100
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT101
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT102
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT103
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT104
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT105
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT106
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT107
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT109
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT110
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT111
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT112
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT113
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT115
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT116
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT117
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT118
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT119
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT120
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT121
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT122
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT123
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT124
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT125
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT126
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT127
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT128
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT129
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT130
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT131
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT132
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT133
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT134
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT137
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT138
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT139
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT140
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT141
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT142
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT143
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT150
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT151
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT152
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D8
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D11
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D12
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D13
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D14
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D15
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D16
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D17
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D18
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT133
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT141
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT107
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT110
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT120
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUTTEST
//Cutscenes 3 (page 6)
DISPLAY_TEXT_WIDGET 0.0 6.0 SC_02
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_02
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_03
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_04
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_05
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_06
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_07
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_08
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_09
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_11
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_12
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_13
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_13V
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_14
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_15
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_16
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_18
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_19
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_20
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_21
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_21B
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_22
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_23
RETURN
}
debug_menu_text:
RETURN
text_debug_num = 0
TEXT_POS_X = 20.0
TEXT_POS_Y = 20.0
TEXT_POS_Y_STEP = 14.0
TEXT_SCALEX = 0.4
TEXT_SCALEY = 1.6
COL1_R = 200
COL1_G = 200
COL1_B = 200
COL2_R = 130
COL2_G = 130
COL2_B = 130
IF mission_debug_page = 0 //PAGE 1 MISSIONS****************************************************************************************************
AND NOT mission_debug_page = last_mission_debug_page
WRITE_LOG "Mission Page 0"
last_mission_debug_page = mission_debug_page
DISPLAY_TEXT_WIDGET 0.0 0.0 INTRO_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y INTRO_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y INTRO_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET1B
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CRASH_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SWEET_7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CRASH_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CRASH_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SMOKE_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STRAP_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RYDER_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RYDER_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RYDER_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CESAR_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y LA1FIN1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y LA1FIN2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCRASH1
// Centre *************************************************************************
text_debug_num ++
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CAT_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRUTH_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRUTH_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCESAR4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCES4_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BCESAR2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GAR_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GAR_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SCRA_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SCRA_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WUZI_1 //WUZI 1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_4 //WUZI 3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_5 //WUZI 4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WUZI_2 //WUZI 5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WUZI_4 //WUZI 7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_1 //Syndicate 1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_2 //Syndicate 2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_2 //Syndicate 3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_3 //Syndicate 4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_3 //Syndicate 5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_4 //Syndicate 6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_5 //Syndicate 7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_6 //Syndicate 8
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SYND_7 //Syndicate 9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_1
// Right hand side *************************************************************
text_debug_num ++
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y STEAL_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ZERO_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ZERO_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ZERO_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FAR_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRACE_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESERT8
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DESER10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASEEN2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASINO9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CASIN10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y VCRASH1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y VCRASH2
text_debug_num ++
ENDIF
IF mission_debug_page = 1 //PAGE 2 MISSIONS******************************************************************************************************
AND NOT mission_debug_page = last_mission_debug_page
WRITE_LOG "Mission Page 1"
last_mission_debug_page = mission_debug_page
DISPLAY_TEXT_WIDGET 0.0 0.0 DOC_2
TEXT_POS_X = 25.0
TEXT_POS_Y = 20.0
TEXT_POS_Y_STEP = 14.0
SET_TEXT_WRAPX 640.0
COL1_R = 200
COL1_G = 200
COL1_B = 200
COL2_R = 130
COL2_G = 130
COL2_B = 130
text_debug_num = 0
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DOC_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HEIST_9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MAN_5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GROVE_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GROVE_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RIOT_1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RIOT_2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RIOT_4
ENDIF
IF mission_debug_page = 2 //PAGE 3 ODDJOBS***************************************************************************************************
AND NOT mission_debug_page = last_mission_debug_page
WRITE_LOG "Mission Page 2"
last_mission_debug_page = mission_debug_page
DISPLAY_TEXT_WIDGET 0.0 0.0 GYM1_A
TEXT_POS_X = 25.0
TEXT_POS_Y = 20.0
TEXT_POS_Y_STEP = 14.0
SET_TEXT_WRAPX 640.0
COL1_R = 200
COL1_G = 200
COL1_B = 200
COL2_R = 130
COL2_G = 130
COL2_B = 130
text_debug_num = 0
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GYM1_A //"GYM"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GYM1_B //"GYM"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y GYM1_C //"GYM"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CHICN //"Chicken drive through"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BURGERS //"BURGER SHOP"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PIZZAS //"PIZZA SHOP"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CLOTHES //"LA Clothes Shop"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BARBER //"Barber Shop"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y AMMULA //"LA AmmuNation"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CARDB1 //"Car Mods"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CARDB2 //"Car Mods2"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y ROUL //"roulette"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SLOTM //"Slot machine"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y WHEELO //wheel of fortune
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BJACK //black jack
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y OTB //"OTB"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y POOL //"Pool"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BBALL //"basket ball"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y LOWR //"lowrider"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CONS1 //"Console game 1"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y QUARRY //Quarry
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TRUCK //Trucking
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BLOOD //Blood ring
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y MOUNTN //"Mountian bike"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PIMP //PIMP
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BIKES //Bike school
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BOATS //Boat school
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y COUR1 //CourierLA
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y COUR2 //CourierSF
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y COUR3 //CourierLV
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y FREIGH //Frieght Train
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BURG //Burglary
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y KICK //Kickstart
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y VALET //VALET
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SF_MODS //San Fran PP mods
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y IMPEXP //Import Export
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BMXODD //BMX
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y DANCEOD //DANCING
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y HOTRING //HOTRING
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY1 //"2 Player 4"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY2 //"2 Player 8"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY3 //"2 Player 9"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY4 //"2 Player 10"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY5 //"2 Player 11"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY6 //"2 Player 12"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY7 //"2 Player 9"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY8 //"2 Player 10"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY9 //"2 Player 11"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y TPLAY10 //"2 Player 12"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y BOTTY //"Triathalon"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP3 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP4 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP5 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP6 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP7 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP8 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP9 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP10 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP11 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP12 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP13 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP14 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP15 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP16 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP17 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP18 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP19 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP20 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP21 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP22 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP23 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP24 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP25 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP26 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP27 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP28 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP29 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP30 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y PROP31 //"PROPERTY"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET1 //"RACETOUR"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET2 //"RACETOUR"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET3 //"RACETOUR"
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y RACET4 //"RACETOUR"
ENDIF
SET_TEXT_SCALE 0.4 1.6
SET_TEXT_WRAPX 640.0
SET_TEXT_COLOUR 150 150 150 255
IF mission_debug_page = 3 //PAGE 3***************************************************************************************************
AND NOT mission_debug_page = last_mission_debug_page
WRITE_LOG "Mission Page 3"
last_mission_debug_page = mission_debug_page
DISPLAY_TEXT_WIDGET 0.0 0.0 CUT01
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT01
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT02
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT03
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT04
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT05
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT06
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT07
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT08
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT09
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT11
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT12
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT13
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT14
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT15
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT16
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT17
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT18
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT19
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT20
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT21
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT22
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT23
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT24
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT25
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT26
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT27
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT28
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT29
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT29
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT30
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT31
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT32
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT33
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT34
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT35
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT36
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT37
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT38
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT39
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT40
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT41
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT42
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT43
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT44
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT45
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT46
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT47
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT48
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT49
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT50
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT52
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT54
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT55
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT56
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT57
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT60
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT61
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT62
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT63
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT64
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT65
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT66
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT67
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT69
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT70
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT71
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT72
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT74
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT75
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT76
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT77
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT78
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT79
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT80
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT81
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT82
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT83
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT84
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT86
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT87
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT88
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT89
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT90
ENDIF
IF mission_debug_page = 4 //PAGE 4******************************************************************************************************
AND NOT mission_debug_page = last_mission_debug_page
WRITE_LOG "Mission Page 4"
last_mission_debug_page = mission_debug_page
DISPLAY_TEXT_WIDGET 0.0 0.0 CUT91
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT91
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT92
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT94
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT95
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT96
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT97
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT98
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT83
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT100
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT101
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT102
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT103
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT104
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT105
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT106
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT107
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT109
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT110
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT111
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT112
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT113
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT115
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT116
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT117
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT118
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT119
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT120
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT121
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT122
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT123
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT124
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT125
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT126
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT127
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT128
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT129
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT130
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT131
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT132
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT133
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT134
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT137
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT138
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT139
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT140
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT141
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT142
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT143
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT150
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT151
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT152
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D1
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D2
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D3
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D4
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D5
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D6
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D7
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D8
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D9
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D11
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D12
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D13
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D14
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D15
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D16
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D17
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT_D18
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT133
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT141
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT107
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT110
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUT120
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y CUTTEST
ENDIF
IF mission_debug_page = 5 //PAGE 5******************************************************************************************************
AND NOT mission_debug_page = last_mission_debug_page
WRITE_LOG "Mission Page 5"
last_mission_debug_page = mission_debug_page
DISPLAY_TEXT_WIDGET 0.0 0.0 SC_02
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_02
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_03
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_04
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_05
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_06
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_07
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_08
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_09
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_10
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_11
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_12
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_13
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_13V
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_14
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_15
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_16
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_18
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_19
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_20
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_21
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_21B
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_22
DISPLAY_TEXT_WIDGET TEXT_POS_X TEXT_POS_Y SC_23
ENDIF
RETURN
quit_out_of_mission_debug:
IF MissionPage = -2
is_player_in_mission_menu1 = 0
last_mission_debug_page = -1
//mission_debug_page = -1
ENDIF
IF IS_BUTTON_PRESSED PAD2 RIGHTSHOCK
WHILE IS_BUTTON_PRESSED PAD2 RIGHTSHOCK
WAIT 0
ENDWHILE
is_player_in_mission_menu1 = 0
ENDIF
RETURN
debug_page1: //MISSIONS PAGE1**************************************************************************************************
FAIL_CURRENT_MISSION
GOSUB terminate_all_scripts
debug_number = 0
IF button_pressed_main = debug_number
flag_intro_mission_counter = 0
START_NEW_SCRIPT intro_mission_loop //"INTRO mission 1" //CRAIGF //BMX Bandits
REMOVE_BLIP intro_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT introX introY introZ intro_blip_icon intro_contact_blip
SET_LA_RIOTS OFF
SET_INT_STAT CITIES_PASSED 0
SET_MAX_WANTED_LEVEL 4
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_LA1
START_NEW_SCRIPT cell_phone_LA1
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_RAN
START_NEW_SCRIPT cell_phone_random
SWITCH_ENTRY_EXIT ammun1 FALSE
SWITCH_ENTRY_EXIT ammun2 FALSE
SWITCH_ENTRY_EXIT ammun3 FALSE
SWITCH_ENTRY_EXIT ammun4 FALSE
SWITCH_ENTRY_EXIT ammun5 FALSE
SWITCH_ENTRY_EXIT barbers FALSE
SWITCH_ENTRY_EXIT barber2 FALSE
SWITCH_ENTRY_EXIT barber3 FALSE
SWITCH_ENTRY_EXIT FDpiza FALSE
SWITCH_ENTRY_EXIT fdchick FALSE
SWITCH_ENTRY_EXIT fdburg FALSE
SWITCH_ENTRY_EXIT tattoo FALSE
SWITCH_ENTRY_EXIT cschp FALSE
SWITCH_ENTRY_EXIT cssprt FALSE
SWITCH_ENTRY_EXIT lacs1 FALSE
SWITCH_ENTRY_EXIT clothgp FALSE
SWITCH_ENTRY_EXIT csdesgn FALSE
SWITCH_ENTRY_EXIT csexl FALSE
SWITCH_ENTRY_EXIT gym1 FALSE
SWITCH_ENTRY_EXIT gym2 FALSE
SWITCH_ENTRY_EXIT gym3 FALSE
SWITCH_ENTRY_EXIT PDOMES FALSE
SWITCH_ENTRY_EXIT PDOMES2 FALSE
SWITCH_ENTRY_EXIT MADDOGS FALSE
SWITCH_ENTRY_EXIT MDDOGS FALSE
DEACTIVATE_GARAGE bodLAwN
DEACTIVATE_GARAGE modlast
DEACTIVATE_GARAGE mdsSFSe
DEACTIVATE_GARAGE mds1SFS //PP CAR GARAGE
DEACTIVATE_GARAGE vEcmod
goto_thereX = introX
goto_thereY = introY_d
goto_thereZ = introZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_intro_mission_counter = 1
START_NEW_SCRIPT intro_mission_loop //"INTRO mission 2" //CRAIGF //Haircut, Gym + robbery
REMOVE_BLIP intro_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon intro_contact_blip
goto_thereX = ryderX
goto_thereY = ryderY_d
goto_thereZ = ryderZ
debug_heading = 165.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 0
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 1" //CRAIGF //Tagging
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 1
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 1B" //CRAIGF //Clean
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 2
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 3" //CRAIG F //Chicken Wings
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 3
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 2" //CRAIGF //Guns Guns Guns
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 4
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 4" //CHRIS M //Getto Drive by
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 5
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 5" //KEV B //RESCUE
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 6
sw6_mission_attempts = 0
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 6" //NEIL //Lowrider comp part 1
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 7
flag_mob_la1[4] = 1
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 7" //WILLIE M //Doberman
ADD_SPRITE_BLIP_FOR_CONTACT_POINT 1365.2507 -1280.1200 12.5469 sweet_blip_icon sweet_contact_blip
SET_RELATIONSHIP ACQUAINTANCE_TYPE_PED_HATE PEDTYPE_GANG_FLAT PEDTYPE_PLAYER1
goto_thereX = 1361.3253
goto_thereY = -1279.5175
goto_thereZ = 12.3828
debug_heading = 269.3503
// this gets unlocked after first cutscene for the mission -
// we disable the door to avoid the sreaming issue if the user runs into ammunation after starting the mission using mission jump
SWITCH_ENTRY_EXIT ammun1 FALSE
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_sweet_mission_counter = 8
SET_INT_STAT RESPECT_TOTAL 100
START_NEW_SCRIPT sweet_mission_loop //"Sweet mission 8" //STEVE T //Grave Misfortune
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_crash_mission_counter = 0
START_NEW_SCRIPT crash_mission_loop //"Crash mission 1" //CHRIS R //Burning Desire
ADD_SPRITE_BLIP_FOR_CONTACT_POINT crashX crashY crashZ crash_blip_icon crash_contact_blip
goto_thereX = crashX
goto_thereY = crashY_d
goto_thereZ = crashZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_crash_mission_counter = 1
START_NEW_SCRIPT crash_mission_loop //"Crash mission 3" //IMRAN //Docks shootout
ADD_SPRITE_BLIP_FOR_CONTACT_POINT crashX crashY crashZ crash_blip_icon crash_contact_blip
goto_thereX = crashX
goto_thereY = crashY_d
goto_thereZ = crashZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_smoke_mission_counter = 0
START_NEW_SCRIPT smoke_mission_loop //"Smoke mission 1" //ANDY //Payback
ADD_SPRITE_BLIP_FOR_CONTACT_POINT smokeX smokeY smokeZ smoke_blip_icon smoke_contact_blip
goto_thereX = smokeX_d
goto_thereY = smokeY
goto_thereZ = smokeZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_smoke_mission_counter = 1
START_NEW_SCRIPT smoke_mission_loop //"Smoke mission 2" //JUDITH //Northen Mexican chase
ADD_SPRITE_BLIP_FOR_CONTACT_POINT smokeX smokeY smokeZ smoke_blip_icon smoke_contact_blip
goto_thereX = smokeX_d
goto_thereY = smokeY
goto_thereZ = smokeZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_smoke_mission_counter = 2
START_NEW_SCRIPT smoke_mission_loop //"Smoke mission 3" //IMRAN //Train chase
ADD_SPRITE_BLIP_FOR_CONTACT_POINT smokeX smokeY smokeZ smoke_blip_icon smoke_contact_blip
goto_thereX = smokeX_d
goto_thereY = smokeY
goto_thereZ = smokeZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_smoke_mission_counter = 3
START_NEW_SCRIPT smoke_mission_loop //"Smoke mission 4" //IMRAN //Dodgy dealings
ADD_SPRITE_BLIP_FOR_CONTACT_POINT smokeX smokeY smokeZ smoke_blip_icon smoke_contact_blip
goto_thereX = smokeX_d
goto_thereY = smokeY
goto_thereZ = smokeZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_strap_mission_counter = 0
START_NEW_SCRIPT strap_mission_loop //"Strap mission 1" //JUDITH //GTS
ADD_SPRITE_BLIP_FOR_CONTACT_POINT strapX strapY strapZ strap_blip_icon strap_contact_blip
goto_thereX = strapX_d
goto_thereY = strapY
goto_thereZ = strapZ
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_strap_mission_counter = 1
START_NEW_SCRIPT strap_mission_loop //"Strap mission 2" //IMRAN //Steal from DocG
ADD_SPRITE_BLIP_FOR_CONTACT_POINT strapX strapY strapZ strap_blip_icon strap_contact_blip
goto_thereX = strapX_d
goto_thereY = strapY
goto_thereZ = strapZ
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_strap_mission_counter = 2
START_NEW_SCRIPT strap_mission_loop //"Strap mission 3" //ANDY //Kill G's manager
ADD_SPRITE_BLIP_FOR_CONTACT_POINT strapX strapY strapZ strap_blip_icon strap_contact_blip
goto_thereX = strapX_d
goto_thereY = strapY
goto_thereZ = strapZ
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_strap_mission_counter = 4
strap4_mission_passed_once_flag = 1
START_NEW_SCRIPT strap_mission_loop //"Strap mission 4" //ANDY //House party
ADD_SPRITE_BLIP_FOR_CONTACT_POINT strap2X strap2Y strap2Z strap_blip_icon strap_contact_blip
goto_thereX = strap2X_d
goto_thereY = strap2Y
goto_thereZ = strap2Z
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_ryder_mission_counter = 0
START_NEW_SCRIPT ryder_mission_loop //"Ryder mission 1" //DAVE //Burglary
ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon ryder_contact_blip
goto_thereX = ryderX
goto_thereY = ryderY_d
goto_thereZ = ryderZ
debug_heading = 165.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_ryder_mission_counter = 1
START_NEW_SCRIPT ryder_mission_loop //"Ryder mission 3" //CHRIS R //Ammo Train Truck
ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon ryder_contact_blip
goto_thereX = ryderX
goto_thereY = ryderY_d
goto_thereZ = ryderZ
debug_heading = 165.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_ryder_mission_counter = 2
START_NEW_SCRIPT ryder_mission_loop //"Ryder mission 2" //NEIL //National Guard
ADD_SPRITE_BLIP_FOR_CONTACT_POINT ryderX ryderY ryderZ ryder_blip_icon ryder_contact_blip
goto_thereX = ryderX
goto_thereY = ryderY_d
goto_thereZ = ryderZ
debug_heading = 165.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_cesar_mission_counter = 0
START_NEW_SCRIPT cesar_mission_loop //"Cesar mission 1" //CHRIS M //Race
ADD_SPRITE_BLIP_FOR_CONTACT_POINT cesarX cesarY cesarZ cesar_blip_icon cesar_contact_blip
CHANGE_BLIP_DISPLAY cesar_contact_blip BLIP_ONLY
goto_thereX = cesarX_d
goto_thereY = cesarY
goto_thereZ = cesarZ
debug_heading = 256.0
ENDIF
/*
debug_number ++
IF button_pressed_main = debug_number //"Cesar mission 2" //KEV B //Impound
flag_cesar_mission_counter = 1
flag_mob_la1[3] = 1
START_NEW_SCRIPT cesar_mission_loop // TEST STUFF
ADD_SPRITE_BLIP_FOR_CONTACT_POINT cesarX cesarY cesarZ cesar_blip_icon cesar_contact_blip
CHANGE_BLIP_DISPLAY cesar_contact_blip BLIP_ONLY
goto_thereX = cesarX_d
goto_thereY = cesarY
goto_thereZ = cesarZ
debug_heading = 256.0
ENDIF
*/
debug_number ++
IF button_pressed_main = debug_number //"LA final mission 1" //IMRAN //Motel deal
flag_la1fin1_mission_counter = 0
trigger_final_LA1_missions = 1
flag_sweet_mission_counter = 9
flag_smoke_mission_counter = 4
flag_strap_mission_counter = 5
flag_ryder_mission_counter = 3
flag_crash_mission_counter = 2
flag_cesar_mission_counter = 1
START_NEW_SCRIPT la1fin1_mission_loop // TEST STUFF
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number //"LA final mission 2" //KEV B //Killers cutlass
flag_la1fin1_mission_counter = 1
trigger_final_LA1_missions = 1
flag_sweet_mission_counter = 9
flag_smoke_mission_counter = 4
flag_strap_mission_counter = 5
flag_ryder_mission_counter = 3
flag_crash_mission_counter = 2
flag_cesar_mission_counter = 1
START_NEW_SCRIPT la1fin1_mission_loop // TEST STUFF
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
// **********************************BADLANDS
debug_number ++
IF button_pressed_main = debug_number //"crash mission 1" //CHRIS M //Witness protection
flag_bcrash_mission_counter = 0
cat_counter = 0
flag_trailor_cutscene = 1
flag_truth_mission_counter = 0
START_NEW_SCRIPT bcrash_mission_loop // TEST STUFF
created_save_blips = 0
REMOVE_PICKUP grove_save_pickup[13]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[13] save_pickupY[13] save_pickupZ[13] grove_save_pickup[13] //BADLANDS TRAILOR//remove
number_of_save_icons = 14
ADD_SPRITE_BLIP_FOR_CONTACT_POINT bcrashX bcrashY bcrashZ crash_blip_icon bcrash_contact_blip
REMOVE_IPL Barriers1
SET_INT_STAT CITIES_PASSED 1
SET_MAX_WANTED_LEVEL 5
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_CAT
START_NEW_SCRIPT cell_phone_cat
SWITCH_ENTRY_EXIT ammun1 TRUE
SWITCH_ENTRY_EXIT ammun2 TRUE
SWITCH_ENTRY_EXIT ammun3 TRUE
SWITCH_ENTRY_EXIT ammun4 TRUE
SWITCH_ENTRY_EXIT ammun5 TRUE
SWITCH_ENTRY_EXIT barbers TRUE
SWITCH_ENTRY_EXIT barber2 TRUE
SWITCH_ENTRY_EXIT barber3 TRUE
SWITCH_ENTRY_EXIT FDpiza TRUE
SWITCH_ENTRY_EXIT fdchick TRUE
SWITCH_ENTRY_EXIT fdburg TRUE
SWITCH_ENTRY_EXIT cschp TRUE
SWITCH_ENTRY_EXIT cssprt TRUE
SWITCH_ENTRY_EXIT lacs1 TRUE
SWITCH_ENTRY_EXIT clothgp TRUE
SWITCH_ENTRY_EXIT csdesgn TRUE
SWITCH_ENTRY_EXIT csexl TRUE
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
goto_thereX = bcrashX_d
goto_thereY = bcrashY
goto_thereZ = bcrashZ
ENDIF
debug_number ++
IF button_pressed_main = debug_number
START_NEW_SCRIPT cat_mission_loop //"Catalina mission 1" //NEIL //Rob liquor store
// IF DOES_CHAR_EXIST catalina
// REMOVE_CHAR_ELEGANTLY catalina
// DELETE_CHAR catalina
// ENDIF
// GOSUB remove_catalina
flag_cat_mission_counter = 0
flag_truth_mission_counter = 1
flag_trailor_cutscene = 1
// catalina_contact_blip_state = 0
// catalina_generation_flag = 1
// cat_played_cut_first = 0
cat_counter = 0
flag_mob_cat[3] = 1
// cat_mission_ended[0] = 1
flag_cat_mission1_passed = 0
flag_catcutscene_counter = 1
flag_trailor_cutscene = 1
//temp_float_1 = catY[5] - 4.0
goto_thereX = catX[5]
goto_thereY = catY[5]
goto_thereZ = catZ[5]
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
START_NEW_SCRIPT cat_mission_loop //"Catalina mission 2" //KEV B //Rob Bank
// IF DOES_CHAR_EXIST catalina
// REMOVE_CHAR_ELEGANTLY catalina
// DELETE_CHAR catalina
// ENDIF
// GOSUB remove_catalina
flag_cat_mission_counter = 1
flag_truth_mission_counter = 1
flag_trailor_cutscene = 1
// catalina_contact_blip_state = 0
// catalina_generation_flag = 1
// cat_played_cut_first = 0
flag_cat_mission2_passed = 0
// flag_catcutscene_counter = 1
flag_trailor_cutscene = 1
cat_counter = 1
flag_mob_cat[3] = 1
// cat_mission_ended[0] = 1
goto_thereX = catx_d
goto_thereY = catY[0]
goto_thereZ = catZ[0]
debug_heading = 337.2648
ENDIF
debug_number ++
IF button_pressed_main = debug_number
START_NEW_SCRIPT cat_mission_loop //"Catalina mission 3" //CHRIS //Rob Petrol station
// IF DOES_CHAR_EXIST catalina
// REMOVE_CHAR_ELEGANTLY catalina
// DELETE_CHAR catalina
// ENDIF
// GOSUB remove_catalina
flag_cat_mission_counter = 2
flag_truth_mission_counter = 1
flag_trailor_cutscene = 1
// catalina_contact_blip_state = 0
// catalina_generation_flag = 1
// cat_played_cut_first = 0
flag_cat_mission3_passed = 0
flag_trailor_cutscene = 1
// flag_catcutscene_counter = 1
cat_counter = 2
flag_mob_cat[3] = 1
// cat_mission_ended[0] = 1
goto_thereX = catx_d
goto_thereY = catY[0]
goto_thereZ = catZ[0]
debug_heading = 337.2648
ENDIF
debug_number ++
IF button_pressed_main = debug_number
START_NEW_SCRIPT cat_mission_loop //"Catalina mission 4" //KEV W //Rob OTB
// IF DOES_CHAR_EXIST catalina
// REMOVE_CHAR_ELEGANTLY catalina
// DELETE_CHAR catalina
// ENDIF
// GOSUB remove_catalina
flag_cat_mission_counter = 3
flag_truth_mission_counter = 1
// catalina_contact_blip_state = 0
// catalina_generation_flag = 1
// cat_played_cut_first = 0
flag_trailor_cutscene = 1
flag_cat_mission4_passed = 0
// flag_catcutscene_counter = 1
cat_counter = 3
flag_mob_cat[3] = 1
// cat_mission_ended[0] = 1
goto_thereX = catx_d
goto_thereY = catY[0]
goto_thereZ = catZ[0]
debug_heading = 337.2648
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_truth_mission_counter = 0
flag_trigger_trailor_cut = 1
START_NEW_SCRIPT cat_mission_loop
START_NEW_SCRIPT truth_mission_loop //"truth mission 1" //IMRAN //Body Harvest
ADD_SPRITE_BLIP_FOR_CONTACT_POINT truth2X truth2Y truth2Z truth_blip_icon truth_contact_blip //HOTEL
goto_thereX = -2195.72
goto_thereY = -2255.89
goto_thereZ = 29.05
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_truth_mission_counter = 1
flag_cat_mission1_passed = 1
flag_cat_mission2_passed = 1
flag_cat_mission3_passed = 1
flag_cat_mission4_passed = 1
flag_bcesar_mission_counter = 10
START_NEW_SCRIPT truth_mission_loop //"truth mission 2" //ANDY //Full head of green
ADD_SPRITE_BLIP_FOR_CONTACT_POINT truthX truthY truthZ truth_blip_icon truth_contact_blip
goto_thereX = truthX_d
goto_thereY = truthY
goto_thereZ = truthZ
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_bcesar_mission_counter = 0
cat_counter = 4
START_NEW_SCRIPT bcesar_mission_loop //"bcesar mission 4" //KEV B //Badlands Race1
ADD_SPRITE_BLIP_FOR_CONTACT_POINT bcesarX bcesarY bcesarZ cesar_blip_icon bcesar_contact_blip
CHANGE_BLIP_DISPLAY bcesar_contact_blip BLIP_ONLY
goto_thereX = bcesarX_d
goto_thereY = bcesarY
goto_thereZ = bcesarZ
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_bcesar_mission_counter = 5
cat_counter = 4
START_NEW_SCRIPT bcesar_mission_loop //"bcesar mission 4" //KEV B //Badlands Race2
ADD_SPRITE_BLIP_FOR_CONTACT_POINT -513.9356 -188.3140 77.4599 cesar_blip_icon bcesar_contact_blip
goto_thereX = -513.9356
goto_thereY = -188.3140
goto_thereZ = 77.4599
ENDIF
debug_number ++
IF button_pressed_main = debug_number // big smoke's cash
//courier_timer = 400
cat_counter = 3
goto_thereX = bcesarX_d
goto_thereY = bcesarY
goto_thereZ = bcesarZ
ENDIF
// **********************************SAN FRAN
debug_number ++
IF button_pressed_main = debug_number
flag_garage_mission_counter = 0
START_NEW_SCRIPT garage_mission_loop //"Garage mission 1" //KEV W //Welcome to San Fran
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ RADAR_SPRITE_CJ garage_contact_blip
created_save_blips = 0
REMOVE_PICKUP grove_save_pickup[15]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[15] save_pickupY[15] save_pickupZ[15] grove_save_pickup[15] //SAN FRAN GARAGE//remove
number_of_save_icons = 16
SET_INT_STAT CITIES_PASSED 1
SET_MAX_WANTED_LEVEL 5
flag_truth_mission_counter = 2
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_SF
START_NEW_SCRIPT cell_phone_sanfran
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_RAN
START_NEW_SCRIPT cell_phone_random
SWITCH_ENTRY_EXIT ammun1 TRUE
SWITCH_ENTRY_EXIT ammun2 TRUE
SWITCH_ENTRY_EXIT ammun3 TRUE
SWITCH_ENTRY_EXIT ammun4 TRUE
SWITCH_ENTRY_EXIT ammun5 TRUE
SWITCH_ENTRY_EXIT barbers TRUE
SWITCH_ENTRY_EXIT barber2 TRUE
SWITCH_ENTRY_EXIT barber3 TRUE
SWITCH_ENTRY_EXIT FDpiza TRUE
SWITCH_ENTRY_EXIT fdchick TRUE
SWITCH_ENTRY_EXIT fdburg TRUE
SWITCH_ENTRY_EXIT cschp TRUE
SWITCH_ENTRY_EXIT cssprt TRUE
SWITCH_ENTRY_EXIT lacs1 TRUE
SWITCH_ENTRY_EXIT clothgp TRUE
SWITCH_ENTRY_EXIT csdesgn TRUE
SWITCH_ENTRY_EXIT csexl TRUE
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_garage_mission_counter = 1
flag_scrash_mission_counter = 1
SET_INT_STAT CITIES_PASSED 1
START_NEW_SCRIPT garage_mission_loop //"Garage mission 2" //NEIL //Demolition
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ RADAR_SPRITE_CJ garage_contact_blip
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_scrash_mission_counter = 0
START_NEW_SCRIPT scrash_mission_loop //"Scrash mission 1" //KEV B //Plant The Drugs
ADD_SPRITE_BLIP_FOR_CONTACT_POINT scrashX scrashY scrashZ crash_blip_icon scrash_contact_blip
goto_thereX = scrashX_d
goto_thereY = scrashY
goto_thereZ = scrashZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_scrash_mission_counter = 1
flag_Synd_mission_counter = 6
START_NEW_SCRIPT scrash_mission_loop //"Scrash mission 2" //CHRIS R //Follow the ped
ADD_SPRITE_BLIP_FOR_CONTACT_POINT scrashX scrashY scrashZ crash_blip_icon scrash_contact_blip
goto_thereX = scrashX_d
goto_thereY = scrashY
goto_thereZ = scrashZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_wuzi_mission_counter = 0
START_NEW_SCRIPT wuzi_mission_loop //"Wuzi mission 1" //KEV B //Meet the People
ADD_SPRITE_BLIP_FOR_CONTACT_POINT wuziX wuziY wuziZ wuzi_blip_icon wuzi_contact_blip
goto_thereX = wuziX_d
goto_thereY = wuziY
goto_thereZ = wuziZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_wuzi_mission_counter = 1
START_NEW_SCRIPT wuzi_mission_loop //"Wuzi mission 3" PAUL D //Airport Pickup
ADD_SPRITE_BLIP_FOR_CONTACT_POINT wuziX wuziY wuziZ wuzi_blip_icon wuzi_contact_blip
goto_thereX = wuziX_d
goto_thereY = wuziY
goto_thereZ = wuziZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_wuzi_mission_counter = 2
START_NEW_SCRIPT wuzi_mission_loop //"Wuzi mission 4" JUDITH //Cross Country Decoy
ADD_SPRITE_BLIP_FOR_CONTACT_POINT wuziX wuziY wuziZ wuzi_blip_icon wuzi_contact_blip
goto_thereX = wuziX_d
goto_thereY = wuziY
goto_thereZ = wuziZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_wuzi_mission_counter = 3
START_NEW_SCRIPT wuzi_mission_loop //"Wuzi mission 5" //JUDITH //Swimming with the Sharks
ADD_SPRITE_BLIP_FOR_CONTACT_POINT wuziX wuziY wuziZ wuzi_blip_icon wuzi_contact_blip
goto_thereX = wuziX_d
goto_thereY = wuziY
goto_thereZ = wuziZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_wuzi_mission_counter = 4
START_NEW_SCRIPT wuzi_mission_loop //"Wuzi mission 7" //ANDY //Storm Freighter
ADD_SPRITE_BLIP_FOR_CONTACT_POINT wuziX wuziY wuziZ wuzi_blip_icon wuzi_contact_blip
goto_thereX = wuziX_d
goto_thereY = wuziY
goto_thereZ = wuziZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_synd_mission_counter = 0
START_NEW_SCRIPT synd_mission_loop //"Syndicate mission 1" //CHRIS M //Recon
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_synd_mission_counter = 1
syn2_mission_attempts = 0
START_NEW_SCRIPT synd_mission_loop //"Syndicate mission 2" //NEIL //Blonde Ambition
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number //"Syndicate mission 3" JUDITH //Bike Bust Up
flag_synd_mission_counter = 3
START_NEW_SCRIPT Synd_mission_loop // TEST STUFF
ADD_SPRITE_BLIP_FOR_CONTACT_POINT syndX syndY syndZ synd_blip_icon synd_contact_blip
goto_thereX = syndX_d
goto_thereY = syndY
goto_thereZ = syndZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_synd_mission_counter = 4
START_NEW_SCRIPT Synd_mission_loop //"Syndicate mission 4" KEV W //Hostage
ADD_SPRITE_BLIP_FOR_CONTACT_POINT syndX syndY syndZ synd_blip_icon synd_contact_blip
goto_thereX = syndX_d
goto_thereY = syndY
goto_thereZ = syndZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_synd_mission_counter = 5
START_NEW_SCRIPT Synd_mission_loop //"Syndicate mission 5" //JUDITH //Outrider
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ synd_blip_icon synd_contact_blip
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_synd_mission_counter = 6
flag_scrash_mission_counter = 2
START_NEW_SCRIPT synd_mission_loop //"Syndicate mission 6" //PAUL //Call to arms
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mob_sanfran[7] = 1
flag_synd_mission_counter = 7
START_NEW_SCRIPT synd_mission_loop //"Syndicate mission 7" //ANDY //Pier69
//ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
ADD_SPRITE_BLIP_FOR_CONTACT_POINT -1717.05 1280.91 6.23 garage_blip_icon garage_contact_blip
goto_thereX = -1713.6208
goto_thereY = 1282.9164
goto_thereZ = 6.1875
debug_heading = 125.4326
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_synd_mission_counter = 8
START_NEW_SCRIPT synd_mission_loop //"Syndicate mission 8" //STEVE T //Toreno's Plane
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_synd_mission_counter = 9
flag_wuzi_mission_counter = 5
START_NEW_SCRIPT synd_mission_loop //"Syndicate mission 9" //PAUL D //Los Cabras Crack Lab
ADD_SPRITE_BLIP_FOR_CONTACT_POINT garageX garageY garageZ garage_blip_icon garage_contact_blip
goto_thereX = garageX_d
goto_thereY = garageY
goto_thereZ = garageZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_steal_mission_counter = 0
START_NEW_SCRIPT steal_mission_loop //"steal mission 1" //CHRIS M //Follow Steal
ADD_SPRITE_BLIP_FOR_CONTACT_POINT stealX stealY stealZ steal_blip_icon steal_contact_blip
goto_thereX = stealX_d
goto_thereY = stealY
goto_thereZ = stealZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_steal_mission_counter = 1
START_NEW_SCRIPT steal_mission_loop //"steal mission 2" //ANDY //Steal from Car Showroom
ADD_SPRITE_BLIP_FOR_CONTACT_POINT stealX stealY stealZ steal_blip_icon steal_contact_blip
goto_thereX = stealX_d
goto_thereY = stealY
goto_thereZ = stealZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_steal_mission_counter = 2
START_NEW_SCRIPT steal_mission_loop //"steal mission 4" //NEIL //Car Crane
ADD_SPRITE_BLIP_FOR_CONTACT_POINT stealX stealY stealZ steal_blip_icon steal_contact_blip
goto_thereX = stealX_d
goto_thereY = stealY
goto_thereZ = stealZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_steal_mission_counter = 3
START_NEW_SCRIPT steal_mission_loop //"steal mission 5" //ANDY //Stinger Trap
ADD_SPRITE_BLIP_FOR_CONTACT_POINT stealX stealY stealZ steal_blip_icon steal_contact_blip
goto_thereX = stealX_d
goto_thereY = stealY
goto_thereZ = stealZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_zero_mission_counter = 0
START_NEW_SCRIPT zero_mission_loop //"zero mission 1" //KEV W //Scramble
ADD_SPRITE_BLIP_FOR_CONTACT_POINT zeroX zeroY zeroZ zero_blip_icon zero_contact_blip
goto_thereX = zeroX_d
goto_thereY = zeroY
goto_thereZ = zeroZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_zero_mission_counter = 1
START_NEW_SCRIPT zero_mission_loop //"zero mission 2" //KEV W //Rolling Thunder
ADD_SPRITE_BLIP_FOR_CONTACT_POINT zeroX zeroY zeroZ zero_blip_icon zero_contact_blip
goto_thereX = zeroX_d
goto_thereY = zeroY
goto_thereZ = zeroZ
debug_heading = 260.0
ENDIF
/*
debug_number ++
IF button_pressed_main = debug_number
flag_zero_mission_counter = 2
START_NEW_SCRIPT zero_mission_loop //"zero mission 3" //KEV W //Tanked Up
ADD_SPRITE_BLIP_FOR_CONTACT_POINT zeroX zeroY zeroZ zero_blip_icon zero_contact_blip
goto_thereX = zeroX_d
goto_thereY = zeroY
goto_thereZ = zeroZ
debug_heading = 260.0
ENDIF
*/
debug_number ++
IF button_pressed_main = debug_number
flag_zero_mission_counter = 2
START_NEW_SCRIPT zero_mission_loop //"zero mission 4" //NEIL //Return Fire
ADD_SPRITE_BLIP_FOR_CONTACT_POINT zeroX zeroY zeroZ zero_blip_icon zero_contact_blip
goto_thereX = zeroX_d
goto_thereY = zeroY
goto_thereZ = zeroZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number // ANDY //The Tests
flag_garage_mission_counter = 1
START_NEW_SCRIPT trace_mission_loop // TEST STUFF
ADD_SPRITE_BLIP_FOR_CONTACT_POINT testsX testsY testsZ RADAR_SPRITE_SCHOOL dschool_contact_blip
//SET_BLIP_ENTRY_EXIT dschool_contact_blip -2026.4767 -99.8392 10.0
CHANGE_BLIP_DISPLAY dschool_contact_blip BLIP_ONLY
goto_thereX = -2025.58
goto_thereY = -93.66
goto_thereZ = 34.17
debug_heading = 180.0
//START_NEW_SCRIPT cell_phone_sanfran
ENDIF
debug_number ++
IF button_pressed_main = debug_number
driving_test_passed = 1
START_NEW_SCRIPT trace_mission_loop //"trace mission 1" //CHRIS R //Race Tournament
ADD_SPRITE_BLIP_FOR_CONTACT_POINT traceX[0] traceY[0] traceZ[0] trace_blip_icon trace_contact_blip[0]
goto_thereX = traceX_d[0]
goto_thereY = traceY[0]
goto_thereZ = traceZ[0]
debug_heading = 270.0
ENDIF
// **********************************DESERT
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 0
START_NEW_SCRIPT desert_mission_loop //"desert mission 1" //IMRAN //Monster Mash
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ desert_blip_icon desert_contact_blip
created_save_blips = 0
REMOVE_PICKUP grove_save_pickup[16]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[16] save_pickupY[16] save_pickupZ[16] grove_save_pickup[16] //TORENOS RANCH//remove
number_of_save_icons = 17
REMOVE_IPL Barriers2
SET_INT_STAT CITIES_PASSED 2
SET_MAX_WANTED_LEVEL 6
flag_mob_sanfran[5] = 0
flag_mob_sanfran[7] = 0
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_VEG
START_NEW_SCRIPT cell_phone_vegas
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_SF
START_NEW_SCRIPT cell_phone_sanfran
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_RAN
START_NEW_SCRIPT cell_phone_random
SWITCH_ENTRY_EXIT ammun1 TRUE
SWITCH_ENTRY_EXIT ammun2 TRUE
SWITCH_ENTRY_EXIT ammun3 TRUE
SWITCH_ENTRY_EXIT ammun4 TRUE
SWITCH_ENTRY_EXIT ammun5 TRUE
SWITCH_ENTRY_EXIT barbers TRUE
SWITCH_ENTRY_EXIT barber2 TRUE
SWITCH_ENTRY_EXIT barber3 TRUE
SWITCH_ENTRY_EXIT FDpiza TRUE
SWITCH_ENTRY_EXIT fdchick TRUE
SWITCH_ENTRY_EXIT fdburg TRUE
SWITCH_ENTRY_EXIT cschp TRUE
SWITCH_ENTRY_EXIT cssprt TRUE
SWITCH_ENTRY_EXIT lacs1 TRUE
SWITCH_ENTRY_EXIT clothgp TRUE
SWITCH_ENTRY_EXIT csdesgn TRUE
SWITCH_ENTRY_EXIT csexl TRUE
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
goto_thereX = desertX_d
goto_thereY = desertY
goto_thereZ = desertZ
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 1
flag_mob_sanfran[5] = 1
START_NEW_SCRIPT desert_mission_loop //"desert mission 2" //ANDY //Jump linerunner //HIGHJACK
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ desert_blip_icon desert_contact_blip
goto_thereX = desertX_d
goto_thereY = desertY
goto_thereZ = desertZ
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 2
flag_mob_sanfran[7] = 1
START_NEW_SCRIPT desert_mission_loop //"desert mission 3" //NEIL //Contraband //INTERDICTION
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ desert_blip_icon desert_contact_blip
goto_thereX = desertX_d
goto_thereY = desertY
goto_thereZ = desertZ
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 3
START_NEW_SCRIPT desert_mission_loop //"desert mission 4" //CRAIG //Learning to Fly
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desertX desertY desertZ desert_blip_icon desert_contact_blip
goto_thereX = desertX_d
goto_thereY = desertY
goto_thereZ = desertZ
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 4
START_NEW_SCRIPT pilot_school_loop //"desert mission 5" //JUDITH //Pilot School
START_NEW_SCRIPT desert_mission_loop
ADD_SPRITE_BLIP_FOR_CONTACT_POINT pilotx piloty pilotz RADAR_SPRITE_SCHOOL pilot_contact_blip
CHANGE_BLIP_DISPLAY pilot_contact_blip BLIP_ONLY
goto_thereX = 413.5500
goto_thereY = 2533.5701
goto_thereZ = 18.1484
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 5
pilot_test_passed = 1
START_NEW_SCRIPT desert_mission_loop //"desert mission 6" //CHRISR //N.O.E.
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desert2X desert2Y desert2Z desert_blip_icon desert_contact_blip
goto_thereX = desert2X_d
goto_thereY = desert2Y
goto_thereZ = desert2Z
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 6
START_NEW_SCRIPT desert_mission_loop //"desert mission 9" //C3 Shootout
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desert2X desert2Y desert2Z desert_blip_icon desert_contact_blip
goto_thereX = desert2X_d
goto_thereY = desert2Y
goto_thereZ = desert2Z
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_desert_mission_counter = 7
START_NEW_SCRIPT desert_mission_loop //"desert mission 8" //IMRAN //Steal Jetpack
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desert2X desert2Y desert2Z desert_blip_icon desert_contact_blip
goto_thereX = desert2X_d
goto_thereY = desert2Y
goto_thereZ = desert2Z
debug_heading = 275.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mob_vegas[11] = 1
flag_desert_mission_counter = 8
START_NEW_SCRIPT desert_mission_loop //"desert mission 10" //Train Heist
ADD_SPRITE_BLIP_FOR_CONTACT_POINT desert2X desert2Y desert2Z desert_blip_icon desert_contact_blip
goto_thereX = desert2X_d
goto_thereY = desert2Y
goto_thereZ = desert2Z
debug_heading = 275.0
ENDIF
// **********************************VEGAS
debug_number ++
IF button_pressed_main = debug_number
flag_casino_mission_counter = 0
START_NEW_SCRIPT casino_mission_loop //"casino mission 1" //CHRIS M //Wind up
ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2024.3904 1008.6202 20.0
created_save_blips = 0
REMOVE_PICKUP grove_save_pickup[17]
CREATE_PICKUP PICKUPSAVE PICKUP_ONCE save_pickupX[17] save_pickupY[17] save_pickupZ[17] grove_save_pickup[17] //TRIAD CASINO//remove
number_of_save_icons = 18
REMOVE_BLIP save_house_blip[17]
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT save_pickupX[17] save_pickupY[17] save_pickupZ[17] RADAR_SPRITE_SAVEHOUSE save_house_blip[17]
CHANGE_BLIP_DISPLAY save_house_blip[17] BLIP_ONLY
SET_INT_STAT CITIES_PASSED 2
SET_MAX_WANTED_LEVEL 6
flag_mob_vegas[10] = 1
flag_desert_mission_counter = 9
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_VEG
START_NEW_SCRIPT cell_phone_vegas
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_RAN
START_NEW_SCRIPT cell_phone_random
SWITCH_ENTRY_EXIT ammun1 TRUE
SWITCH_ENTRY_EXIT ammun2 TRUE
SWITCH_ENTRY_EXIT ammun3 TRUE
SWITCH_ENTRY_EXIT ammun4 TRUE
SWITCH_ENTRY_EXIT ammun5 TRUE
SWITCH_ENTRY_EXIT barbers TRUE
SWITCH_ENTRY_EXIT barber2 TRUE
SWITCH_ENTRY_EXIT barber3 TRUE
SWITCH_ENTRY_EXIT FDpiza TRUE
SWITCH_ENTRY_EXIT fdchick TRUE
SWITCH_ENTRY_EXIT fdburg TRUE
SWITCH_ENTRY_EXIT cschp TRUE
SWITCH_ENTRY_EXIT cssprt TRUE
SWITCH_ENTRY_EXIT lacs1 TRUE
SWITCH_ENTRY_EXIT clothgp TRUE
SWITCH_ENTRY_EXIT csdesgn TRUE
SWITCH_ENTRY_EXIT csexl TRUE
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_casino_mission_counter = 1
START_NEW_SCRIPT casino_mission_loop //"casino mission 2" //PAUL //Kickstart Quarry
ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_casino_mission_counter = 2
START_NEW_SCRIPT casino_mission_loop //"casino mission 3" //STEVE //Fake Chips
ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_casino_mission_counter = 3
START_NEW_SCRIPT casino_mission_loop //"casino mission 4" //DAVE //Paul & Maccer
ADD_SPRITE_BLIP_FOR_CONTACT_POINT 2026.6028 1007.7353 9.8127 casino_blip_icon casino_contact_blip
//SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
goto_thereX = 2032.0428
goto_thereY = 1006.4272
goto_thereZ = 9.8203
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mob_vegas[2] = 1
flag_casino_mission_counter = 4
START_NEW_SCRIPT casino_mission_loop //"casino mission 5" //IMRAN //Hospital Hi Jinx
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
goto_thereX = 2187.2856
goto_thereY = 1678.4614
goto_thereZ = 10.1055
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_casino_mission_counter = 5
START_NEW_SCRIPT casino_mission_loop //"casino mission 6" //SIMON //Abattoir
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
goto_thereX = 2187.2856
goto_thereY = 1678.4614
goto_thereZ = 10.1055
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_casino_mission_counter = 6
START_NEW_SCRIPT casino_mission_loop //"casino mission 7" //IMRAN //Clear & Present Danger
ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2026.6028 1007.7353 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mob_vegas[3] = 1
flag_casino_mission_counter = 7
START_NEW_SCRIPT casino_mission_loop //"casino mission 9" //SIMON //Freefalln
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
goto_thereX = 2187.2856
goto_thereY = 1678.4614
goto_thereZ = 10.1055
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_casino_mission_counter = 8
flag_vcrash_mission_counter = 2
flag_mob_vegas[4] = 1
START_NEW_SCRIPT casino_mission_loop //"casino mission 10" //WILLIE //St Marks Bistro
ADD_SPRITE_BLIP_FOR_CONTACT_POINT heistX heistY heistZ heist_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2187.2856 1678.4614 20.0
goto_thereX = 2187.2856
goto_thereY = 1678.4614
goto_thereZ = 10.1055
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_vcrash_mission_counter = 0
START_NEW_SCRIPT vcrash_mission_loop //"vcrash mission 1" //CHRIS R //Uber Chase
ADD_SPRITE_BLIP_FOR_CONTACT_POINT vcrashX vcrashY vcrashZ crash_blip_icon vcrash_contact_blip
goto_thereX = vcrashX_d
goto_thereY = vcrashY
goto_thereZ = vcrashZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_vcrash_mission_counter = 1
flag_mob_vegas[0] = 1
START_NEW_SCRIPT vcrash_mission_loop //"vcrash mission 2" //IMRAN //High Noon
ADD_SPRITE_BLIP_FOR_CONTACT_POINT -378.7596 2235.8594 41.4288 crash_blip_icon vcrash_contact_blip
goto_thereX = -380.7596
goto_thereY = 2235.8594
goto_thereZ = 41.4288
debug_heading = 90.0
ENDIF
debug_number ++
RETURN
debug_page2: //MISSIONS PAGE2**************************************************************************************************
FAIL_CURRENT_MISSION
GOSUB terminate_all_scripts
debug_number = 0
IF button_pressed_main = debug_number
flag_doc_mission_counter = 0
START_NEW_SCRIPT doc_mission_loop //"doc mission 2" //PAUL //Jumper
ADD_SPRITE_BLIP_FOR_CONTACT_POINT docX docY docZ doc_blip_icon doc_contact_blip
goto_thereX = docX_d
goto_thereY = docY
goto_thereZ = docZ
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_heist_mission_counter = 0
START_NEW_SCRIPT heist_mission_loop //"heist mission 1" //STEVE //Photo Plans
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_heist_mission_counter = 1
START_NEW_SCRIPT heist_mission_loop //"heist mission 3" //DAVE //Girlfiend
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_heist_mission_counter = 2
START_NEW_SCRIPT heist_mission_loop //"heist mission 2" //DAVE //Dam charges
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_heist_mission_counter = 3
START_NEW_SCRIPT heist_mission_loop //"heist mission 4" //CHRIS R //Street Hawk
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_heist_mission_counter = 4
START_NEW_SCRIPT heist_mission_loop //"heist mission 5" //WILLIE //Steal Heli Magnate
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_heist_mission_counter = 5
flag_casino_mission_counter = 9
keycard_aquired_from_millie = 1
flag_mob_vegas[6] = 1
START_NEW_SCRIPT heist_mission_loop //"heist mission 9" //PAUL D //The Heist
ADD_SPRITE_BLIP_FOR_CONTACT_POINT TheheistX TheheistY TheheistZ Theheist_blip_icon Theheist_contact_blip
SET_BLIP_ENTRY_EXIT Theheist_contact_blip 2024.3904 1008.6202 20.0
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
// **********************************LA2
debug_number ++
IF button_pressed_main = debug_number
flag_mansion_mission_counter = 0
START_NEW_SCRIPT mansion_mission_loop //"mansion mission 1" //SIMON //Take Back G's Mansion
ADD_SPRITE_BLIP_FOR_CONTACT_POINT casinoX casinoY casinoZ casino_blip_icon casino_contact_blip
SET_BLIP_ENTRY_EXIT casino_contact_blip 2024.3904 1008.6202 20.0
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOBLA2
START_NEW_SCRIPT cell_phone_LA2
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME MOB_RAN
START_NEW_SCRIPT cell_phone_random
SET_INT_STAT CITIES_PASSED 3
SET_MAX_WANTED_LEVEL 6
SWITCH_ENTRY_EXIT ammun1 TRUE
SWITCH_ENTRY_EXIT ammun2 TRUE
SWITCH_ENTRY_EXIT ammun3 TRUE
SWITCH_ENTRY_EXIT ammun4 TRUE
SWITCH_ENTRY_EXIT ammun5 TRUE
SWITCH_ENTRY_EXIT barbers TRUE
SWITCH_ENTRY_EXIT barber2 TRUE
SWITCH_ENTRY_EXIT barber3 TRUE
SWITCH_ENTRY_EXIT FDpiza TRUE
SWITCH_ENTRY_EXIT fdchick TRUE
SWITCH_ENTRY_EXIT fdburg TRUE
SWITCH_ENTRY_EXIT cschp TRUE
SWITCH_ENTRY_EXIT cssprt TRUE
SWITCH_ENTRY_EXIT lacs1 TRUE
SWITCH_ENTRY_EXIT clothgp TRUE
SWITCH_ENTRY_EXIT csdesgn TRUE
SWITCH_ENTRY_EXIT csexl TRUE
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
goto_thereX = 2024.3904
goto_thereY = 1008.6202
goto_thereZ = 9.8127
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mansion_mission_counter = 1
START_NEW_SCRIPT mansion_mission_loop //"mansion mission 2" //CRAIG //Steal Harrier
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon mansion_contact_blip
goto_thereX = mansionX
goto_thereY = mansionX_d
goto_thereZ = mansionZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mansion_mission_counter = 2
START_NEW_SCRIPT mansion_mission_loop //"mansion mission 3" //PAUL //Pick up sweet
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon mansion_contact_blip
goto_thereX = mansionX
goto_thereY = mansionX_d
goto_thereZ = mansionZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mansion_mission_counter = 3
START_NEW_SCRIPT mansion_mission_loop //"mansion mission 4" //SIMON //Take down MC Strap
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon mansion_contact_blip
goto_thereX = mansionX
goto_thereY = mansionX_d
goto_thereZ = mansionZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_grove_mission_counter = 0
START_NEW_SCRIPT grove_mission_loop //"grove mission 1" //WILLIE //Beat Down on b Dup
ADD_SPRITE_BLIP_FOR_CONTACT_POINT introX introY introZ intro_blip_icon intro_contact_blip
goto_thereX = introX
goto_thereY = introY_d
goto_thereZ = introZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_grove_mission_counter = 1
START_NEW_SCRIPT grove_mission_loop //"grove mission 2" //PAUL //Grove 4 life
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_riot_mission_counter = 0
START_NEW_SCRIPT riot_mission_loop //"riot mission 1" //CRAIG //RIOT!
ADD_SPRITE_BLIP_FOR_CONTACT_POINT mansionX mansionY mansionZ mansion_blip_icon mansion_contact_blip
goto_thereX = mansionX
goto_thereY = mansionX_d
goto_thereZ = mansionZ
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_riot_mission_counter = 1
SET_INT_STAT RESPECT_TOTAL 100
START_NEW_SCRIPT riot_mission_loop //"riot mission 2" //ANDY //DESPERADOS
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
SET_INT_STAT RESPECT_TOTAL 1000
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_riot_mission_counter = 2
flag_mob_LA2[2] = 1
flag_mob_LA2[3] = 1
finaleB_played_first_time_round = 0
SET_LA_RIOTS ON
START_NEW_SCRIPT riot_mission_loop //"riot mission 4" //IMRAN //CARTER BLOCK
ADD_SPRITE_BLIP_FOR_CONTACT_POINT sweetX sweetY sweetZ sweet_blip_icon sweet_contact_blip
goto_thereX = sweetX_d
goto_thereY = sweetY
goto_thereZ = sweetZ
debug_heading = 260.0
ENDIF
debug_number ++
RETURN
debug_page3: // **********************************CUTSCENES**********************************************************************
FAIL_CURRENT_MISSION
GOSUB terminate_all_scripts
debug_number = 0
cutscene_index = 0
check_cutscene1:
IF button_pressed_main = debug_number
PRINT_BIG ( $cutscene_name[cutscene_index] ) 2000 4 //INTRO - cut1 (PROLOG)
$new_cut = $cutscene_file[cutscene_index]
visible_area = cut_visible_area[cutscene_index]
$cuttext = $cutscene_text[cutscene_index]
ENDIF
debug_number ++
cutscene_index ++
IF cutscene_index < 84
GOTO check_cutscene1
ENDIF
RETURN
debug_page4: // **********************************CUTSCENES**********************************************************************
FAIL_CURRENT_MISSION
GOSUB terminate_all_scripts
debug_number = 0
cutscene_index = 0
check_cutscene2:
IF button_pressed_main = debug_number
PRINT_BIG ( $cutscene_name2[cutscene_index] ) 2000 4
$new_cut = $cutscene_file2[cutscene_index]
visible_area = cut_visible_area2[cutscene_index]
$cuttext = $cutscene_text2[cutscene_index]
ENDIF
debug_number ++
cutscene_index ++
IF cutscene_index < 75
GOTO check_cutscene2
ENDIF
RETURN
debug_page5: // **********************************CUTSCENES**********************************************************************
FAIL_CURRENT_MISSION
GOSUB terminate_all_scripts
debug_number = 0
cutscene_index = 0
check_cutscene3:
IF button_pressed_main = debug_number
PRINT_BIG ( $cutscene_name3[cutscene_index] ) 2000 4
$new_cut = $cutscene_file3[cutscene_index]
visible_area = cut_visible_area3[cutscene_index]
ENDIF
debug_number ++
cutscene_index ++
IF cutscene_index < 23
GOTO check_cutscene3
ENDIF
RETURN
debug_page6: //MISC *********************************************************************************************************************
FAIL_CURRENT_MISSION
GOSUB terminate_all_scripts
debug_number = 0
IF button_pressed_main = debug_number //100!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
flag_mob_la1[6] = 1
switch_the_gym_interiors_off = 0
PRINT_BIG ( GYM1_A ) 1000 4 //"GYM"
goto_thereX = 2224.5811
goto_thereY = -1721.1486
goto_thereZ = 12.5584
debug_heading = 271.2687
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mob_la1[6] = 1
switch_the_gym_interiors_off = 0
PRINT_BIG ( GYM1_B ) 1000 4 //Vegas Gym
goto_thereX = 1963.85
goto_thereY = 2294.82
goto_thereZ = 15.45
debug_heading = 275.0
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
ENDIF
debug_number ++
IF button_pressed_main = debug_number
flag_mob_la1[6] = 1
switch_the_gym_interiors_off = 0
PRINT_BIG ( GYM1_C ) 1000 4 //San Fran Gym
goto_thereX = -2265.9006
goto_thereY = -155.7526
goto_thereZ = 34.3047
debug_heading = 85.0
SWITCH_ENTRY_EXIT gym1 TRUE
SWITCH_ENTRY_EXIT gym2 TRUE
SWITCH_ENTRY_EXIT gym3 TRUE
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( CHICN ) 1000 4 //"Chicken drive through"
goto_thereX = 2427.2546
goto_thereY = -1517.8105
goto_thereZ = 23.3873
debug_heading = 42.6546
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BURGERS ) 1000 4 //"BURGER SHOP"
goto_thereX = 813.0
goto_thereY = -1630.0
goto_thereZ = 13.0
debug_heading = 322.156
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( PIZZAS ) 1000 4 //"PIZZA SHOP"
goto_thereX = 2102.083
goto_thereY = -1805.798
goto_thereZ = 12.594
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( CLOTHES ) 1000 4 //"LA Clothes Shop"
goto_thereX = 2112.0
goto_thereY = -1214.0
goto_thereZ = 23.0
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BARBER ) 1000 4 //"Barber Shop"
goto_thereX = 2074.37
goto_thereY = -1800.72
goto_thereZ = 12.56
debug_heading = 90.90
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( AMMULA ) 1000 4 //"LA AmmuNation"
goto_thereX = 1364.394
goto_thereY = -1279.724
goto_thereZ = 12.59
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( CARDB1 ) 1000 4 //"Car Mods LA"
goto_thereX = 1053.4816
goto_thereY = -1039.2621
goto_thereZ = 30.9710
debug_heading = 47.3931
stop_gargae_for_neil = 0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( CARDB2 ) 1000 4 //"Car Mods lowrider"
goto_thereX = 2643.3457
goto_thereY = -2007.2150
goto_thereZ = 12.3750
debug_heading = 187.5727
stop_gargae_for_neil = 0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( ROUL ) 1000 4 //"roulette"
goto_thereX = RouletteX
goto_thereY = RouletteY
goto_thereZ = RouletteZ
change_area_code = 2
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( SLOTM ) 1000 4 //"slot machines"
goto_thereX = banditx
goto_thereY = bandity
goto_thereZ = banditz
change_area_code = 4
debug_heading = 170.4
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( WHEELO ) 1000 4 //wheel of fortune
goto_thereX = poolX
goto_thereY = poolY
goto_thereZ = poolZ
change_area_code = 1
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BJACK ) 1000 4 //black jack
goto_thereX = RouletteX
goto_thereY = RouletteY
goto_thereZ = RouletteZ
change_area_code = 2
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( OTB ) 1000 4 //"OTB"
goto_thereX = otbx
goto_thereY = otby
goto_thereZ = otbz
change_area_code = 3
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( POOL ) 1000 4 //"Pool"
goto_thereX = poolX
goto_thereY = poolY
goto_thereZ = poolZ
change_area_code = 1
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BBALL ) 1000 4 //"BASKETBALL"
goto_thereX = basketballx
goto_thereY = basketbally
goto_thereZ = basketballz
bball_unlocked = 1
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( LOWR ) 1000 4 //"Lowrider"
goto_thereX = 1815.4730 //2059.8159
goto_thereY = -1926.1912 //-1901.9498
goto_thereZ = 12.5461 //12.5469
debug_heading = 90.0 //348.6162
lowrider_minigame_unlocked = 1
// create a lowrider car so you don't need to find one
REQUEST_MODEL SAVANNA
WHILE NOT HAS_MODEL_LOADED SAVANNA
WAIT 0
ENDWHILE
CREATE_CAR SAVANNA 1812.4294 -1891.6572 12.4062 car
SET_CAR_HEADING car 90.0
SET_CAR_HYDRAULICS car TRUE
MARK_MODEL_AS_NO_LONGER_NEEDED SAVANNA
MARK_CAR_AS_NO_LONGER_NEEDED car
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( CONS1 ) 1000 4 //"console game1"
goto_thereX = 502.1866
goto_thereY = -4.1644
goto_thereZ = 999.6719
debug_heading = 177.5629
change_area_code = 5
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( QUARRY ) 1000 4 //Quarry
START_NEW_SCRIPT quarry_loop
goto_thereX = quarryX
goto_thereY = quarryY
goto_thereZ = quarryZ
debug_heading = 90.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( TRUCK ) 1000 4 //Trucking
START_NEW_SCRIPT trucking_loop
goto_thereX = -86.0
goto_thereY = -1132.0
goto_thereZ = 1.1
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BLOODB ) 1000 4 //Blood Bowl
goto_thereX = -2116.4280
goto_thereY = -441.3636
goto_thereZ = 34.5343
debug_heading = 270.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( MOUNTN ) 1000 4 //"Mountian bike"
SET_INT_STAT CYCLE_SKILL 601
goto_thereX = -2307.5000
goto_thereY = -1659.7040
goto_thereZ = 483.1310
debug_heading = 31.1541
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( PIMP ) 3000 4 //PIMPING
goto_thereX = pimpX
goto_thereY = pimpY_d
goto_thereZ = pimpZ
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BIKES ) 1000 4 //Bike school
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT bikesX bikesY bikesZ RADAR_SPRITE_SCHOOL bike_school_blip
CHANGE_BLIP_DISPLAY bike_school_blip BLIP_ONLY
START_NEW_SCRIPT bikes_school_loop
goto_thereX = bikesX
goto_thereY = bikesY
goto_thereZ = bikesZ
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BOATS ) 1000 4 //Boat school
ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT boatsX boatsY boatsZ RADAR_SPRITE_SCHOOL boat_school_blip
CHANGE_BLIP_DISPLAY boat_school_blip BLIP_ONLY
START_NEW_SCRIPT boats_school_loop
goto_thereX = boatsX
goto_thereY = boatsY
goto_thereZ = boatsZ
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( COUR1 ) 1000 4 //CourierLA
goto_thereX = 1358.7238
goto_thereY = -1744.9690
goto_thereZ = 12.5625
debug_heading = 183.7364
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( COUR2 ) 1000 4 //CourierSF
goto_thereX = -2592.1309
goto_thereY = 61.8500
goto_thereZ = 3.3359
debug_heading = 349.2679
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( COUR3 ) 1000 4 //CourierLV
goto_thereX = 1887.8136
goto_thereY = 2099.3940
goto_thereZ = 10.0547
debug_heading = 179.4337
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( FREIGH ) 1000 4 //Frieght Trian
goto_thereX = 1722.8541
goto_thereY = -1968.9330
goto_thereZ = 13.1208
debug_heading = 216.5953
SET_INT_STAT CITIES_PASSED 2
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BURG ) 1000 4 //Burglary
goto_thereX = 2258.0
goto_thereY = -1796.0
goto_thereZ = 14.0
debug_heading = 74.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( KICK ) 1000 4 //Kickstart
goto_thereX = 1101.0336
goto_thereY = 1609.8754
goto_thereZ = 11.5546
debug_heading = 180.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( VALET ) 1000 4 //Valet
// START_NEW_SCRIPT valet_script
valet_oddjob_opened = 1
valet_unlocked = 1
IF IS_PLAYER_PLAYING player1
GIVE_PLAYER_CLOTHES_OUTSIDE_SHOP Player1 valet valet CLOTHES_TEX_EXTRA1
BUILD_PLAYER_MODEL player1
ENDIF
goto_thereX = valetx
goto_thereY = valety
goto_thereZ = valetz
debug_heading = 74.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( SF_MODS ) 1000 4 //San Fran PP mods
// START_NEW_SCRIPT valet_script
goto_thereX = -2710.7603
goto_thereY = 217.5245
goto_thereZ = 3.1797
debug_heading = 88.2793
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( IMPEXP ) 1000 4 //import/export
START_NEW_SCRIPT import_export_script
import_export_is_active = 1
disable_crane = 0
goto_thereX = -1574.7085
goto_thereY = 132.0894
goto_thereZ = 2.5547
debug_heading = 88.2793
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( BMXODD ) 1000 4 //BMX
goto_thereX = 1944.5170
goto_thereY = -1367.8845
goto_thereZ = 17.5781
debug_heading = 189.0523
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( DANCEOD ) 1000 4 //DANCING
//START_NEW_SCRIPT Dance_minigame 488.0048 -14.0754 999.6797 180.0 DANCE_TRACK_HIPHOP DANCE_RANDOM_PARTNER
goto_thereX = 2508.0140
goto_thereY = 1246.6075
goto_thereZ = 10.8
debug_heading = 180.0
//change_area_code = 5
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( HOTRING ) 1000 4 //HOTRING
goto_thereX = 2691.2712
goto_thereY = -1696.1896
goto_thereZ = 9.2759
debug_heading = 200.0
ENDIF
/*
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( TPLAY1 ) 1000 4 //2player Ram
goto_thereX = 1481.9551
goto_thereY = -1656.1458
goto_thereZ = 13.5469
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( TPLAY2 ) 1000 4 //2player bike
goto_thereX = 1196.4912
goto_thereY = 249.3210
goto_thereZ = 19.0618
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( TPLAY3 ) 1000 4 //2player cars
goto_thereX = -2102.8484
goto_thereY = 653.8868
goto_thereZ = 51.8671
debug_heading = 0.0
ENDIF
debug_number ++
IF button_pressed_main = debug_number
PRINT_BIG ( TPLAY4 ) 1000 4 //2playe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment