Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Created November 11, 2021 17:39
Show Gist options
  • Star 24 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save JuniorDjjr/2129e1e7640f7969acdfb1c56c263155 to your computer and use it in GitHub Desktop.
Save JuniorDjjr/2129e1e7640f7969acdfb1c56c263155 to your computer and use it in GitHub Desktop.
SA main.scm source code leaked from GTA SA The Definitive Edition
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
@JuniorDjjr
Copy link
Author

@DivyanshuLohani
Copy link

How I can compile this?

@JuniorDjjr
Copy link
Author

How I can compile this?

No, but gta3script by LINK/2012 almost compile it (there are some compiler errors yet) (but this is in just one file, you need the original files in folders).

@DivyanshuLohani
Copy link

So where can I get those? I mean this is only the source for main.scm am I right?

@Vitorrodrys
Copy link

pergunta leiga de quem está no processo de aprender a programar, mas se a primeira etapa da compilação é descartar os comentários do arquivo pra depois transformar em um código assembly, como é possível fazer engenharia reversa e ver os comentários dos desenvolvedores?

@DivyanshuLohani
Copy link

Acho que a rockstar usa o compilador que não faz isso

@Vitorrodrys
Copy link

Mas ae não faz nem sentido ue, pq comentários não podem ser traduzidos pra código de maquina, se o compilador não descartar os comentários ele não consegui fazer o próximo passo, novamente deixo evidenciado que não estou duvidando de nada, é só uma pergunta com o objetivo de obter conhecimento.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment